You are here

nodewords_ui.module in Nodewords: D6 Meta Tags 6.2

Same filename and directory in other branches
  1. 6.3 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) {
  if (isset($form['type']) && isset($form['#node']) && $form_id == $form['type']['#value'] . '_node_form') {
    if (!user_access('administer meta tags') && !user_access('edit meta tags')) {
      return;
    }
    $node = $form['#node'];
    $options = array(
      'type' => NODEWORDS_TYPE_NODE,
      'id' => 0,
    );
    $tags = !empty($node->nodewords['metatags']) ? $node->nodewords['metatags'] : array();
    if (!empty($form['nid']['#value'])) {
      $options['id'] = $form['nid']['#value'];
    }
    $form['nodewords'] = nodewords_tags_edit_fields($options, $tags, array(
      'fieldset' => TRUE,
      'tag options' => array(
        'content type' => $form['type']['#value'],
      ),
    ));
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function nodewords_ui_form_taxonomy_form_term_alter(&$form, &$form_state) {
  if (!user_access('administer meta tags') && !user_access('edit meta tags')) {
    return;
  }
  if (isset($form_state['confirm_delete']) || isset($form_state['confirm_parents'])) {

    // Do not run on confirmation delete forms, which re-use the same form ID.
    return;
  }
  $options = array(
    'type' => NODEWORDS_TYPE_TERM,
    'id' => 0,
  );
  $tags = !empty($form_state['values']['nodewords']) ? $form_state['values']['nodewords'] : array();
  if (!empty($form['tid']['#value'])) {
    $options['id'] = $form['tid']['#value'];
    if (empty($tags)) {
      $tags = nodewords_load_tags($options);
    }
  }
  $form['nodewords'] = nodewords_tags_edit_fields($options, $tags, array(
    'fieldset' => TRUE,
  ));
  $form['submit'] += array(
    '#weight' => 50,
  );
  if (isset($form['delete'])) {
    $form['delete'] += array(
      '#weight' => 55,
    );
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function nodewords_ui_form_taxonomy_form_vocabulary_alter(&$form, &$form_state) {
  if (!user_access('administer meta tags') && !user_access('edit meta tags')) {
    return;
  }
  $options = array(
    'type' => NODEWORDS_TYPE_VOCABULARY,
    'id' => 0,
  );
  $tags = !empty($form_state['values']['nodewords']) ? $form_state['values']['nodewords'] : array();
  if (!empty($form['vid']['#value'])) {
    $options['id'] = $form['vid']['#value'];
    if (empty($tags)) {
      $tags = nodewords_load_tags($options);
    }
  }
  $form['nodewords'] = nodewords_tags_edit_fields($options, $tags, array(
    'fieldset' => TRUE,
  ));
  $form['submit'] += array(
    '#weight' => 50,
  );
  if (isset($form['delete'])) {
    $form['delete'] += array(
      '#weight' => 55,
    );
  }
}

/**
 * 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 (!empty($tags_info)) {
    $form['enabled']['ui'] = array(
      '#type' => 'fieldset',
      '#title' => t('Meta tags enabled on other edit forms'),
      '#collapsible' => TRUE,
      '#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) {
  if ($op == 'prepare translation' && isset($node->translation_source->nodewords)) {
    $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) {
  if ($op == 'form' && $category == 'account') {
    if (user_access('administer meta tags') || user_access('edit meta tags')) {
      $options = array(
        'type' => NODEWORDS_TYPE_USER,
        'id' => $account->uid,
      );
      $tags = isset($account->nodewords['metatags']) ? $account->nodewords['metatags'] : array();
      $form['nodewords'] = nodewords_tags_edit_fields($options, $tags, 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);
}

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_form_taxonomy_form_term_alter Implements hook_form_FORM_ID_alter().
nodewords_ui_form_taxonomy_form_vocabulary_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.