| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 | <?php/** * Implementation of hook_init(). */function cobalt_init() {  if (user_access('use cobalt')) {    global $user;    if (variable_get('cobalt_jquery_hotkeys', 1)) {      drupal_add_library('cobalt', 'jquery.hotkeys');    }    drupal_add_js(drupal_get_path('module', 'cobalt') . '/js/cobalt.js');    drupal_add_js(drupal_get_path('module', 'cobalt') . '/js/cobalt.menu.js');    $settings = array(      'state' => $user->uid,      'path' => $_GET['q'],      'bindings' => preg_split('/,\s*/', variable_get('cobalt_shortcuts', 'Alt+space, Ctrl+space')),    );    drupal_add_js(array('cobalt' => $settings), 'setting');    $themes = cobalt_themes();    $theme_key = variable_get('cobalt_theme', '');    foreach ($themes as $key => $info) {      if ($key==$theme_key) {        $theme = $info;        break;      }    }    if (!isset($theme) || !isset($theme['css']) || !isset($theme['replace']) || !$theme['replace']) {      drupal_add_css(drupal_get_path('module', 'cobalt') . '/css/cobalt.css');    }    if (isset($theme) && isset($theme['css'])) {      if (is_array($theme['css'])) {        foreach ($theme['css'] as $css) {          drupal_add_css($css);        }      }      else {        drupal_add_css($theme['css']);      }    }  }}/** * Implements hook_library(). */function cobalt_library() {  // Use the original version by John Resig since the latest version at  // https://github.com/tzuryby/jquery.hotkeys doesn't work, probably due  // to incompatibility with jQuery 1.4.4.  $libraries['jquery.hotkeys'] = array(    'title' => 'jQuery Hotkeys',    'website' => 'https://github.com/jeresig/jquery.hotkeys',    'version' => '0.8',    'js' => array(      drupal_get_path('module', 'cobalt') . '/js/jquery.hotkeys.js' => array(),    ),  );  return $libraries;}function cobalt_themes() {  static $themes;  if (!$themes) {    $themes = array(      '' => array(        'name' => t('Default theme'),      ),    );    drupal_alter('cobalt_themes', $themes);  }  return $themes;}function cobalt_cobalt_themes_alter(&$themes) {  $themes['cobalt_blue'] = array(    'name' => t('Cobalt blue'),    'css' => drupal_get_path('module', 'cobalt') . '/css/cobalt_blue.css',    'replace' => FALSE,  );}/** * Implementation of hook_perm(). */function cobalt_permissions() {  return array(    'use cobalt' => array(      'title' => t('Enables Cobalt for the user'),    ),  );}/** * Implementation of hook_menu(). */function cobalt_menu() {  $items = array();  $items['cobalt/alias'] = array(    'title' => 'Forward to the correct alias',    'page callback' => 'cobalt_forward_to_alias',    'access arguments' => array('use cobalt'),    'type' => MENU_CALLBACK,  );  $items['cobalt/data/menu_json'] = array(    'title' => 'Serialized menu',    'page callback' => 'cobalt_menu_json',    'access arguments' => array('use cobalt'),    'type' => MENU_CALLBACK,  );  $items['admin/config/system/cobalt'] = array(    'title' => 'Cobalt',    'description' => 'Configure Cobalt appearance and behaviour.',    'page callback' => 'drupal_get_form',    'page arguments' => array('cobalt_settings'),    'access arguments' => array('administer site configuration'),    'file' => 'cobalt_admin.inc.php',    'type' => MENU_NORMAL_ITEM,    'weight' => 0,  );  $items['cobalt/update'] = array(    'title' => 'Cobalt update',    'page callback' => 'cobalt_js_update',    'page arguments' => array('cobalt_settings'),    'access arguments' => array('use cobalt'),    'file' => 'cobalt_update.inc.php',    'type' => MENU_CALLBACK,    'weight' => 0,  );  // Menu callback for clearing the cache even when the devel module  // isn't installed.  $items['cobalt/clear-cache'] = array(    'title' => t('Clear cache'),    'page callback' => '_cobalt_clear_cache',    'file' => 'cobalt_admin.inc.php',    'access arguments' => array('administer site configuration'),    'type' => MENU_CALLBACK,  );  // Menuitem for rebuilding content permissions.  $items['cobalt/rebuild-permissions'] = array(    'title' => t('Rebuild permissions'),    'page callback' => '_cobalt_rebuild_permissions',    'file' => 'cobalt_admin.inc.php',    'access arguments' => array('administer site configuration'),    'type' => MENU_CALLBACK,  );  return $items;}function cobalt_forward_to_alias() {  $url_parts = array();  $i = 2;  while (arg($i)) {    $url_parts[] = arg($i);    $i++;  }  $path = join('/', $url_parts);  drupal_goto($path);}function cobalt_menu_json() {  $menu_names = array_keys(menu_get_menus());  $tree = array();  foreach ($menu_names as $name) {    $tree += menu_tree_all_data($name);  }  $data = array();  _cobalt_menu_data_recursive($tree, $data);  drupal_alter('cobalt_menu', $data);  print drupal_json_output($data);  exit;}function _cobalt_menu_data_recursive($tree, &$data) {  foreach ($tree as $key => $item) {    $link = $item['link'];    if ($link['hidden'] !== 1 && $link['access'] && !($link['type'] & MENU_LINKS_TO_PARENT) && $link['type'] !== MENU_VISIBLE_IN_BREADCRUMB) {      $data[$link['mlid']] = array($link['href'], $link['title']);      if ($item['below']) {        _cobalt_menu_data_recursive($item['below'], $data);      }    }  }}/** * Implementation of hook_cobalt_menu_alter(). */function cobalt_cobalt_menu_alter(&$menuitems) {  if (!module_exists('devel') && user_access('administer site configuration')) {    $menuitems['cobalt-clear-cache'] = array('cobalt/clear-cache', t('Clear cache'));  }  if (user_access('administer site configuration')) {    $menuitems['cobalt-rebuild-permissions'] = array('cobalt/rebuild-permissions', t('Rebuild permissions'));  }}
 |