You are here

nodewords_ui.module in Nodewords: D6 Meta Tags 6.3

Same filename and directory in other branches
  1. 6.2 nodewords_ui/nodewords_ui.module

Implement the user interface visible to authenticated users.

File

nodewords_ui/nodewords_ui.module
View source
<?php

/**
 * @file
 * Implement the user interface visible to authenticated users.
 */

/**
 * Implements hook_content_extra_fields().
 * Allow the meta tags fields to be sorted in the node edit forms.
 */
function nodewords_ui_content_extra_fields() {
  $extras = array();
  $extras['nodewords'] = array(
    'label' => t('Meta tags'),
    'description' => t('Meta tags fieldset.'),
    'weight' => 10,
  );
  return $extras;
}

/**
 * Implements hook_form_alter().
 */
function nodewords_ui_form_alter(&$form, $form_state, $form_id) {
  $bool = isset($form['type']) && isset($form['#node']) && $form_id == $form['type']['#value'] . '_node_form';
  if ($bool) {
    $node = $form['#node'];
    $form['nodewords'] = nodewords_tags_edit_fields(_nodewords_ui_get_node_metatags_type($node), !empty($node->nodewords['metatags']) ? $node->nodewords['metatags'] : array(), array(
      'fieldset' => TRUE,
      'tag options' => array(
        'content type' => $form['type']['#value'],
      ),
    ));
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function nodewords_ui_form_nodewords_admin_settings_form_alter(&$form, $form_state) {
  $enabled_options = array();
  $user_pages = array(
    NODEWORDS_TYPE_NODE,
    NODEWORDS_TYPE_USER,
  );
  $tags_info = nodewords_get_possible_tags();
  if (nodewords_check_version('2.16') && !empty($tags_info)) {
    $form['enabled']['ui'] = array(
      '#type' => 'fieldset',
      '#title' => t('Meta tags enabled on other edit forms'),
      '#weight' => 2,
      '#theme' => 'nodewords_ui_enabled_metatags',
    );
    $select_options = array(
      'never' => t('Never'),
      'empty' => t('When the meta tag is empty'),
      'always' => t('Always'),
    );
    foreach ($tags_info as $name => $info) {
      $bool = !empty($info['context']['allowed']) && is_array($info['context']['allowed']) && count(array_intersect($user_pages, $info['context']['allowed'])) && !empty($info['context']['denied']) && is_array($info['context']['denied']) && count(array_intersect($user_pages, $info['context']['denied'])) != count($user_pages);
      if ($bool || empty($info['context']['allowed']) || empty($info['context']['allowed'])) {
        $enabled_options[$name] = '';
        $form['enabled']['ui']['nodewords_ui_use_default_value_' . $name] = array(
          '#type' => 'select',
          '#default_value' => variable_get('nodewords_ui_use_default_value_' . $name, 'empty'),
          '#options' => $select_options,
          '#multiple' => FALSE,
        );
      }
    }
    $form['enabled']['ui']['nodewords_ui_edit'] = array(
      '#type' => 'checkboxes',
      '#options' => $enabled_options,
      '#default_value' => variable_get('nodewords_ui_edit', array()),
      '#checkall' => TRUE ? 'nodewords-enabled-metatags-ui-edit-form' : FALSE,
    );
  }
  else {
    $form['nodewords_ui_edit'] = array(
      '#type' => 'value',
      '#value' => variable_get('nodewords_ui_edit', array()),
    );
  }
}

/**
 * Implements hook_nodeapi().
 */
function nodewords_ui_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
  $bool = $op == 'prepare translation' && isset($node->translation_source->nodewords);
  if ($bool) {
    $node->nodewords = $node->translation_source->nodewords;
  }
}

/**
 * Implements hook_theme().
 */
function nodewords_ui_theme() {
  return array(
    'nodewords_ui_enabled_metatags' => array(
      'arguments' => array(
        'form' => array(),
      ),
    ),
  );
}

/**
 * Implements hook_user().
 */
function nodewords_ui_user($op, &$edit, &$account, $category = NULL) {
  global $user;
  $bool = nodewords_check_version('2.16') && $op == 'form' && (user_access('administer meta tags') || $user->uid == $account->uid) && $category == 'account';
  if ($bool) {
    $form['nodewords'] = nodewords_tags_edit_fields(array(
      'type' => NODEWORDS_TYPE_USER,
      'id' => $account->uid,
    ), isset($account->nodewords['metatags']) ? $account->nodewords['metatags'] : array(), array(
      'fieldset' => TRUE,
    ));
    return $form;
  }
}

/**
 * Render the list of enabled meta tags in non administrative forms.
 */
function theme_nodewords_ui_enabled_metatags($form) {
  foreach (nodewords_get_possible_tags() as $name => $info) {
    $row = array();
    if (isset($form['nodewords_ui_edit'][$name])) {
      $row[] = $info['label'];
      $row[] = drupal_render($form['nodewords_ui_edit'][$name]);
      $row[] = drupal_render($form['nodewords_ui_use_default_value_' . $name]);
      $rows[] = $row;
    }
  }
  $header[] = t('Meta tag');
  $header[] = array(
    'data' => t('Show in edit form'),
    'class' => TRUE && count($rows) > 1 ? 'nodewords-enabled-metatags-ui-edit-form' : '',
  );
  $header[] = t('Use the default value');
  return theme('table', $header, $rows) . drupal_render($form);
}
function _nodewords_ui_get_node_metatags_type($node) {
  return array(
    'type' => NODEWORDS_TYPE_NODE,
    'id' => $node->nid,
    'sid' => $node->vid,
  );
}

Functions

Namesort descending Description
nodewords_ui_content_extra_fields Implements hook_content_extra_fields(). Allow the meta tags fields to be sorted in the node edit forms.
nodewords_ui_form_alter Implements hook_form_alter().
nodewords_ui_form_nodewords_admin_settings_form_alter Implements hook_form_FORM_ID_alter().
nodewords_ui_nodeapi Implements hook_nodeapi().
nodewords_ui_theme Implements hook_theme().
nodewords_ui_user Implements hook_user().
theme_nodewords_ui_enabled_metatags Render the list of enabled meta tags in non administrative forms.
_nodewords_ui_get_node_metatags_type