t('Mespeak'), 'cache' => DRUPAL_NO_CACHE ); return $blocks; } /** * Implements hook_block_view(). */ function mespeak_block_view($delta = '') { $block = array(); switch ($delta) { case 'mespeak-block': $lib = mespeak_get_library(); // check for the library being installed if ($lib) { // add library to all pages global $base_url; drupal_add_js($lib); $settings = array( 'mespeak' => array( 'selector' => variable_get('mespeak_selector', MESPEAK_SELECTOR), 'path' => $base_url . '/' . mespeak_get_library(''), ), ); drupal_add_js($settings, 'setting'); drupal_add_js(drupal_get_path('module', 'mespeak') . "/js/mespeak-block.js"); } $block['subject'] = t('Mespeak'); $block['content'] = theme('mespeak_block', array('text_selector' => variable_get('mespeak_selector', MESPEAK_SELECTOR))); break; } return $block; } /** * Implements hook_theme(). */ function mespeak_theme() { return array( 'mespeak_block' => array( 'variables' => array( 'text_selector' => NULL, ), 'render element' => 'element', 'template' => 'templates/mespeak-block', ), ); } /** * Implements hook_menu(). */ function mespeak_menu() { $items = array(); $path = drupal_get_path('module', 'mespeak'); // admin settings for mespeak $items['admin/config/user-interface/mespeak'] = array( 'title' => 'Mespeak', 'description' => 'Options for mespeak', 'page callback' => 'drupal_get_form', 'page arguments' => array('mespeak_settings'), 'access arguments' => array('administer site configuration'), 'type' => MENU_NORMAL_ITEM, 'file' => 'mespeak.admin.inc', 'file path' => $path, ); return $items; } /** * Wrapper to get the library so it works with install profiles. */ function mespeak_get_library($file = 'mespeak.js') { // account for libraries not being available on install if (function_exists('libraries_get_libraries')) { $libraries = libraries_get_libraries(); if (isset($libraries['mespeak'])) { return $libraries['mespeak'] . '/' . $file; } } else { $directory = 'libraries'; $profile = drupal_get_profile(); $config = conf_path(); $lib = 'mespeak/' . $file; // look in install profile if (file_exists("profiles/$profile/$directory/$lib")) { return "profiles/$profile/$directory/$lib"; } // look in sites all // Always search sites/all/*. $searchdir[] = 'sites/all/' . $directory ; if (file_exists("sites/all/$directory/$lib")) { return "sites/all/$directory/$lib"; } // look in a local domain as last resort // Also search sites//*. if (file_exists("$config/$directory/$lib")) { return "$config/$directory/$lib"; } } return FALSE; }