fasttoggle.module in Fasttoggle 8.3
Same filename and directory in other branches
Main file for the fasttoggle module.
File
fasttoggle.moduleView source
<?php
/**
* @file
* Main file for the fasttoggle module.
*/
use Drupal\comment\CommentInterface;
use Drupal\comment\CommentTypeInterface;
use Drupal\comment\Entity\CommentType;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use Drupal\node\NodeInterface;
use Drupal\node\NodeTypeInterface;
use Drupal\node\Entity\NodeType;
/**
* Create fastoggle node action link function.
*/
function _fasttoggle_create_node_link(NodeInterface $entity, $toggle, $link_name) {
$config = \Drupal::config('fasttoggle.settings');
$label_style = $config
->get('label_style');
switch ($toggle) {
case 'status':
switch ($label_style) {
case 0:
$entity
->isPublished() ? $link_title = t('Published') : ($link_title = t('Not published'));
break;
case 1:
$entity
->isPublished() ? $link_title = t('Unpublish') : ($link_title = t('Publish'));
break;
}
break;
case 'promote':
switch ($label_style) {
case 0:
$entity
->isPromoted() ? $link_title = t('Promoted') : ($link_title = t('Not promoted'));
break;
case 1:
$entity
->isPromoted() ? $link_title = t('Demote') : ($link_title = t('Promote'));
break;
}
break;
case 'sticky':
switch ($label_style) {
case 0:
$entity
->isSticky() ? $link_title = t('Sticky') : ($link_title = t('Not sticky'));
break;
case 1:
$entity
->isSticky() ? $link_title = t('Make not sticky') : ($link_title = t('Make sticky'));
break;
}
break;
}
$link[$link_name] = [
'title' => $link_title,
'url' => Url::fromUserInput('/fasttoggle/node/' . $entity
->id() . '/' . $toggle),
'attributes' => [
'class' => [
'use-ajax',
'fasttoggle-node-' . $toggle,
],
],
];
return $link[$link_name];
}
/**
* Create fastoggle comment action link function.
*/
function _fasttoggle_create_comment_link(CommentInterface $entity, $toggle, $link_name) {
$config = \Drupal::config('fasttoggle.settings');
$label_style = $config
->get('label_style');
switch ($toggle) {
case 'status':
switch ($label_style) {
case 0:
$entity
->isPublished() ? $link_title = t('Published') : ($link_title = t('Not published'));
break;
case 1:
$entity
->isPublished() ? $link_title = t('Unpublish') : ($link_title = t('Publish'));
break;
}
break;
}
$link[$link_name] = [
'title' => $link_title,
'url' => Url::fromUserInput('/fasttoggle/comment/' . $entity
->id() . '/' . $toggle),
'attributes' => [
'class' => [
'use-ajax',
'fasttoggle-comment-' . $entity
->id() . '-' . $toggle,
],
],
];
return $link[$link_name];
}
/**
* Implements hook_node_links_alter().
*/
function fasttoggle_node_links_alter(array &$links, NodeInterface $entity, array &$context) {
$user = \Drupal::currentUser();
if ($user
->hasPermission('use fasttoggle')) {
$node_type = NodeType::load($entity
->bundle());
$status_toggle = $node_type
->getThirdPartySetting('fasttoggle', 'status', 0);
$promote_toggle = $node_type
->getThirdPartySetting('fasttoggle', 'promote', 0);
$sticky_toggle = $node_type
->getThirdPartySetting('fasttoggle', 'sticky', 0);
if ($status_toggle) {
$link_name = 'fasttoggle-' . $entity
->bundle() . '-status';
$links['node']['#links'][$link_name] = _fasttoggle_create_node_link($entity, 'status', $link_name);
}
if ($promote_toggle) {
$link_name = 'fasttoggle-' . $entity
->bundle() . '-promote';
$links['node']['#links'][$link_name] = _fasttoggle_create_node_link($entity, 'promote', $link_name);
}
if ($sticky_toggle) {
$link_name = 'fasttoggle-' . $entity
->bundle() . '-sticky';
$links['node']['#links'][$link_name] = _fasttoggle_create_node_link($entity, 'sticky', $link_name);
}
}
}
/**
* Implements hook_comment_links_alter().
*/
function fasttoggle_comment_links_alter(array &$links, CommentInterface $entity, array &$context) {
$user = \Drupal::currentUser();
if ($user
->hasPermission('use fasttoggle')) {
$comment_type = CommentType::load($entity
->bundle());
$status_toggle = $comment_type
->getThirdPartySetting('fasttoggle', 'status', 0);
if ($status_toggle) {
$link_name = 'fasttoggle-' . $entity
->bundle() . '-comment-status';
$links['comment']['#links'][$link_name] = _fasttoggle_create_comment_link($entity, 'status', $link_name);
}
}
}
/**
* Implements hook_form_node_type_edit_form_alter().
*/
function fasttoggle_form_node_type_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$type = $form_state
->getFormObject()
->getEntity();
$form['fasttoggle'] = [
'#type' => 'details',
'#title' => 'Fasttoggle',
'#group' => 'additional_settings',
];
$form['fasttoggle']['toggles_available'] = [
'#type' => 'fieldset',
'#title' => t('Toggles available'),
];
$form['fasttoggle']['toggles_available']['status'] = [
'#type' => 'checkbox',
'#title' => t('Status (published/unpublished)'),
'#default_value' => $type
->getThirdPartySetting('fasttoggle', 'status', 0),
];
$form['fasttoggle']['toggles_available']['promote'] = [
'#type' => 'checkbox',
'#title' => t('Promoted to frontpage'),
'#default_value' => $type
->getThirdPartySetting('fasttoggle', 'promote', 0),
];
$form['fasttoggle']['toggles_available']['sticky'] = [
'#type' => 'checkbox',
'#title' => t('Sticky at top of lists'),
'#default_value' => $type
->getThirdPartySetting('fasttoggle', 'sticky', 0),
];
$form['#entity_builders'][] = 'fasttoggle_form_node_type_form_builder';
}
/**
* Entity builder for the node type form.
*/
function fasttoggle_form_node_type_form_builder($entity_type, NodeTypeInterface $type, &$form, FormStateInterface $form_state) {
$type
->setThirdPartySetting('fasttoggle', 'status', $form_state
->getValue('status'));
$type
->setThirdPartySetting('fasttoggle', 'promote', $form_state
->getValue('promote'));
$type
->setThirdPartySetting('fasttoggle', 'sticky', $form_state
->getValue('sticky'));
}
/**
* Implements hook_form_comment_type_edit_form_alter().
*/
function fasttoggle_form_comment_type_edit_form_alter(&$form, FormStateInterface $form_state, $form_id) {
$type = $form_state
->getFormObject()
->getEntity();
$form['fasttoggle'] = [
'#type' => 'details',
'#title' => 'Fasttoggle',
'#group' => 'additional_settings',
];
$form['fasttoggle']['toggles_available'] = [
'#type' => 'fieldset',
'#title' => t('Toggles available'),
];
$form['fasttoggle']['toggles_available']['status'] = [
'#type' => 'checkbox',
'#title' => t('Status (published/unpublished)'),
'#default_value' => $type
->getThirdPartySetting('fasttoggle', 'status', 0),
];
$form['#entity_builders'][] = 'fasttoggle_form_comment_type_form_builder';
}
/**
* Entity builder for the comment type form.
*/
function fasttoggle_form_comment_type_form_builder($entity_type, CommentTypeInterface $type, &$form, FormStateInterface $form_state) {
$type
->setThirdPartySetting('fasttoggle', 'status', $form_state
->getValue('status'));
}
Functions
Name![]() |
Description |
---|---|
fasttoggle_comment_links_alter | Implements hook_comment_links_alter(). |
fasttoggle_form_comment_type_edit_form_alter | Implements hook_form_comment_type_edit_form_alter(). |
fasttoggle_form_comment_type_form_builder | Entity builder for the comment type form. |
fasttoggle_form_node_type_edit_form_alter | Implements hook_form_node_type_edit_form_alter(). |
fasttoggle_form_node_type_form_builder | Entity builder for the node type form. |
fasttoggle_node_links_alter | Implements hook_node_links_alter(). |
_fasttoggle_create_comment_link | Create fastoggle comment action link function. |
_fasttoggle_create_node_link | Create fastoggle node action link function. |