'jQuery Maphilight', 'website' => 'http://plugins.jquery.com/project/maphilight', 'version' => '1.2.2', 'js' => array( libraries_get_path('jquery.maphilight', FALSE) . '/jquery.maphilight.min.js' => array(), ), ); return $libraries; } /** * Implements hook_init(). * * Add the jquery maphilight plugin code to all pages */ function jq_maphilight_init() { if (_jq_maphilight_available() !== FALSE && variable_get('jq_maphilight_every_page', TRUE)) { if (module_exists('jquery_plugin')) { drupal_add_library('jquery_plugin', 'metadata'); } drupal_add_library('jq_maphilight', 'jquery.maphilight'); $settings = array( 'jq_maphilight' => array( 'fill' => variable_get('jq_maphilight_fill', 'true'), 'fillColor' => variable_get('jq_maphilight_fillcolor', '000000'), 'fillOpacity' => variable_get('jq_maphilight_fillopacity', 2) / 10, 'stroke' => variable_get('jq_maphilight_stroke', 'true'), 'strokeColor' => variable_get('jq_maphilight_strokecolor', 'ff0000'), 'strokeOpacity' => variable_get('jq_maphilight_strokeopacity', 10) / 10, 'strokeWidth' => variable_get('jq_maphilight_strokewidth', 2), 'fade' => variable_get('jq_maphilight_fade', 'true'), 'alwaysOn' => variable_get('jq_maphilight_alwayson', 'false'), 'neverOn' => variable_get('jq_maphilight_neveron', 'false'), 'groupBy' => variable_get('jq_maphilight_groupby', 'false'), 'allMapsEnabled' => variable_get('jq_maphilight_all_maps_enabled', 'true'), ) ); drupal_add_js($settings, 'setting'); drupal_add_js(drupal_get_path('module', 'jq_maphilight') . '/jq_maphilight.js'); } } /** * Implements hook_menu(). */ function jq_maphilight_menu() { $items = array(); $items['admin/config/content/jq_maphilight'] = array( 'title' => 'JQuery Map Hilight', 'description' => 'Javascript image map highlighting using the jQuery Maphilight plugin.', 'page callback' => 'drupal_get_form', 'page arguments' => array('jq_maphilight_admin_settings'), 'access callback' => 'user_access', 'access arguments' => array('administer site configuration'), 'type' => MENU_NORMAL_ITEM, ); return $items; } /** * Implements hook_form(). */ function jq_maphilight_admin_settings() { $available = _jq_maphilight_available(); if ($available == FALSE) { $desc = t('The jQuery Maphilight plugin is unavailable.'); } else { $desc = t('The jQuery Maphilight plugin is located at:') . ' ' . $available; } $form['jq_maphilight_status'] = array( '#type' => 'fieldset', '#title' => t('Plugin status'), '#weight' => -10, '#description' => $desc ); $form['jq_maphilight_general'] = array( '#type' => 'fieldset', '#title' => t('General settings'), '#weight' => -9, ); $form['jq_maphilight_general']['jq_maphilight_every_page'] = array( '#type' => 'radios', '#title' => t('Add Maphilight library to every page'), '#default_value' => variable_get('jq_maphilight_every_page', 'true'), '#options' => array('true' => t('True'), 'false' => t('False')), '#description' => 'If false, drupal_add_library(\'jq_maphilight\', \'jquery.maphilight\'); must be executed to enable the library, plus all following settings are invalid.' ); $form['jq_maphilight_general']['jq_maphilight_all_maps_enabled'] = array( '#type' => 'radios', '#title' => t('Enable highlighting for all image maps'), '#default_value' => variable_get('jq_maphilight_all_maps_enabled', 'true'), '#options' => array('true' => t('True'), 'false' => t('False')), '#description' => 'If false, class="jq_maphilight" must be added to the <img> tag of each image map you want highlighted.' ); $form['jq_maphilight_settings'] = array( '#type' => 'fieldset', '#title' => t('jQuery Maphilight default settings'), '#description' => 'You can override the default settings on individual image maps by adding an additional class to the <img> tag. See the README.txt file for more information.' ); $form['jq_maphilight_settings']['jq_maphilight_fill'] = array( '#type' => 'radios', '#title' => t('Fill'), '#default_value' => variable_get('jq_maphilight_fill', 'true'), '#options' => array('true' => t('True'), 'false' => t('False')), '#description' => 'Specify whether the highlighted area should be filled.' ); $form['jq_maphilight_settings']['jq_maphilight_fillcolor'] = array( '#type' => 'textfield', '#title' => t('Fill Color'), '#default_value' => variable_get('jq_maphilight_fillcolor', '000000'), '#size' => 8, '#description' => 'Specify the color of the fill. Use HTML # notation without the #.' ); $form['jq_maphilight_settings']['jq_maphilight_fillopacity'] = array( '#type' => 'select', '#title' => t('Fill Opacity'), '#default_value' => variable_get('jq_maphilight_fillopacity', 2), '#options' => drupal_map_assoc(array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)), '#description' => 'Specify the opacity of the fill (0 = lightest, 10 = darkest).' ); $form['jq_maphilight_settings']['jq_maphilight_stroke'] = array( '#type' => 'radios', '#title' => t('Stroke (outline)'), '#default_value' => (variable_get('jq_maphilight_stroke', 'true')), '#options' => array('true' => t('True'), 'false' => t('False')), '#description' => 'Specify whether the highlighted area will be outlined.' ); $form['jq_maphilight_settings']['jq_maphilight_strokecolor'] = array( '#type' => 'textfield', '#title' => t('Stroke Color'), '#default_value' => variable_get('jq_maphilight_strokecolor', 'ff0000'), '#size' => 8, '#description' => 'Specify the color of the outline. Use HTML # notation without the #.' ); $form['jq_maphilight_settings']['jq_maphilight_strokewidth'] = array( '#type' => 'textfield', '#title' => t('Stroke Width'), '#default_value' => variable_get('jq_maphilight_strokewidth', 2), '#size' => 8, '#description' => 'Specify the width of the outline in pixels.' ); $form['jq_maphilight_settings']['jq_maphilight_strokeopacity'] = array( '#type' => 'select', '#title' => t('Stroke Opacity'), '#default_value' => variable_get('jq_maphilight_strokeopacity', 10), '#options' => drupal_map_assoc(array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)), '#description' => 'Specify the opacity of the outline (0 = lightest, 10 = darkest).' ); $form['jq_maphilight_settings']['jq_maphilight_fade'] = array( '#type' => 'radios', '#title' => t('Fade'), '#default_value' => (variable_get('jq_maphilight_fade', 'true')), '#options' => array('true' => t('True'), 'false' => t('False')), '#description' => 'Specify whether the highlighting uses a fade transition.' ); $form['jq_maphilight_settings']['jq_maphilight_alwayson'] = array( '#type' => 'radios', '#title' => t('Always on'), '#default_value' => (variable_get('jq_maphilight_alwayson', 'false')), '#options' => array('true' => t('True'), 'false' => t('False')), '#description' => 'Whether to never show the hilighted areas.' ); $form['jq_maphilight_settings']['jq_maphilight_neveron'] = array( '#type' => 'radios', '#title' => t('Never on'), '#default_value' => (variable_get('jq_maphilight_neveron', 'false')), '#options' => array('true' => t('True'), 'false' => t('False')), '#description' => 'Whether to never show the hilighted areas.' ); $form['jq_maphilight_settings']['jq_maphilight_groupby'] = array( '#type' => 'radios', '#title' => t('Group by'), '#default_value' => (variable_get('jq_maphilight_groupby', 'false')), '#options' => array('true' => t('True'), 'false' => t('False')), '#description' => 'If true, applies the class on the <img> to the wrapper div maphilight created.' ); return system_settings_form($form); } /** * Check if the jquery.maphilight.min.js file is available. */ function _jq_maphilight_available() { if (module_exists('libraries')) { $available = libraries_get_path('jquery.maphilight') . '/jquery.maphilight.min.js'; if (is_file($available)) { return $available; } } return FALSE; }