You are here

adsense_injector.admin.inc in Content Injector (formerly AdSense Injector) 6

Administrative page callbacks for the adsense_injector module.

File

adsense_injector.admin.inc
View source
<?php

/**
 * @file
 * Administrative page callbacks for the adsense_injector module.
 */

/**
 * Implementation of hook_settings().
 */
function adsense_injector_admin_settings() {
  $form = array();
  $form['node_ad_body_insertion'] = array(
    '#type' => 'fieldset',
    '#collapsible' => TRUE,
    '#collapsed' => FALSE,
    '#title' => t('Node body ad insertion'),
    '#description' => t('Requires adsense.module'),
  );
  if (module_exists('adsense')) {
    $form['node_ad_body_insertion']['adsense_injector_insert_body_ad'] = array(
      '#type' => 'checkbox',
      '#title' => t('Insert inline ad in node body on page views'),
      '#default_value' => variable_get('adsense_injector_insert_body_ad', ADSENSE_INJECTOR_INSERT_BODY_AD_DEFAULT),
      '#description' => t('Description'),
      '#required' => FALSE,
    );
    $form['node_ad_body_insertion']['adsense_injector_body_minwords'] = array(
      '#type' => 'textfield',
      '#title' => t('Minimum node body word count'),
      '#default_value' => variable_get('adsense_injector_body_minwords', ADSENSE_INJECTOR_BODY_MINWORDS_DEFAULT),
      '#description' => t('The minimum node body word count threshold - only inject if node body has at least this many words.'),
    );
    $form['node_ad_body_insertion']['adsense_injector_body_template'] = array(
      '#type' => 'textarea',
      '#title' => t('Node body ad insertion template'),
      '#rows' => 5,
      '#cols' => 40,
      '#default_value' => variable_get('adsense_injector_body_template', ADSENSE_INJECTOR_BODY_INSERTION_TEMPLATE_DEFAULT),
      '#description' => t('Ad insertion template. Substitution variables: %body = full node body text. Insert adsense module filter tags. See the <a href="/admin/settings/adsense">adsense.module settings page</a> for a list of supported formats and help with filter tags.'),
      '#required' => TRUE,
    );

    /**
     * 'list' insertion (frontpage, taxonomy, etc).
     */
    $form['node_ad_list_insertion'] = array(
      '#type' => 'fieldset',
      '#collapsible' => TRUE,
      '#collapsed' => FALSE,
      '#title' => t('Node list ad insertion'),
      '#description' => t('Ad insertion in node lists or other non-page view, like front page, taxonomy views.'),
    );
    $form['node_ad_list_insertion']['adsense_injector_append_in_listview'] = array(
      '#type' => 'checkbox',
      '#title' => t('Append an ad after teaser on frontpage and taxonomy lists'),
      '#default_value' => variable_get('adsense_injector_append_in_listview', ADSENSE_INJECTOR_APPEND_IN_LISTVIEW_DEFAULT),
      '#description' => t('Note: this does not currently support Views module based lists.'),
      '#required' => FALSE,
    );
    $form['node_ad_list_insertion']['adsense_injector_listview_insertion_template'] = array(
      '#type' => 'textarea',
      '#title' => t('List ad insertion template'),
      '#rows' => 3,
      '#cols' => 40,
      '#default_value' => variable_get('adsense_injector_listview_insertion_template', ADSENSE_INJECTOR_LISTVIEW_INSERTION_TEMPLATE_DEFAULT),
      '#description' => t('Template to use when inserting adsense ad. "%teaser" will be replaced with the node teaser. Insert adsense filter tags. See the <a href="/admin/settings/adsense">adsense.module settings page</a> for a list of supported formats and help with filter tags.'),
      '#required' => TRUE,
    );

    /**
     * What kinds of nodes do we want to insert on...?
     */
    $form['injection_control'] = array(
      '#type' => 'fieldset',
      '#collapsible' => TRUE,
      '#collapsed' => FALSE,
      '#title' => t('Select Node Types for Insertion'),
      '#description' => t('Nodes types to display inline ads - ads are inserted <strong>only</strong> in the selected node types.'),
    );

    /**
     * Enumerate node types, and set up form fields for each.
     */
    $enabled_count = 0;
    $nodetypes = array();
    foreach (node_get_types() as $type => $obj) {
      $nodetypes[$type] = $obj->name;
      $enabled = variable_get(ADSENSE_INJECTOR_INSERT_AD_NODETYPE . $type, FALSE);
      if ($enabled) {
        $enabled_count++;
      }
      $form['injection_control']['node_types'][ADSENSE_INJECTOR_INSERT_AD_NODETYPE . $type] = array(
        '#type' => 'checkbox',
        '#title' => $obj->name,
        '#default_value' => $enabled,
        '#description' => t('Display inline ads on %nodetype nodes', array(
          '%nodetype' => $obj->name,
        )),
        '#required' => FALSE,
      );
    }

    // Do some sanity checking.
    if ($enabled_count == 0) {
      $msg = t('No node types selected (no ads will be inserted because you haven\'t selected any node types for automatic ad insertion.)');
      $form['injection_control']['#collapsed'] = FALSE;
      $form['injection_control']['no_nodes_enabled'] = array(
        '#type' => 'markup',
        '#weight' => -1,
        '#value' => '<div id="message"><div class="messages error"><strong>' . $msg . '</strong></div></div>',
      );
    }
  }
  return system_settings_form($form);
}

Functions

Namesort descending Description
adsense_injector_admin_settings Implementation of hook_settings().