Mercurial > hg > MPIWG-drupal-modules
diff sites/all/modules/custom/solrext/solrext.module @ 0:015d06b10d37 default tip
initial
author | dwinter |
---|---|
date | Wed, 31 Jul 2013 13:49:13 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/custom/solrext/solrext.module Wed Jul 31 13:49:13 2013 +0200 @@ -0,0 +1,261 @@ +<?php +/** + * @file + * Helps site builders and module developers investigate a site. + */ +/** + * Implements hook_form_alter() to show each form's identifier. + */ +function solrext_form_alter(&$form, &$form_state, $form_id) { + $form['solrext_display_form_id'] = array( + '#type' => 'item', + '#title' => t('Form ID'), + '#markup' => $form_id, + '#theme_wrappers' => array('container__solrext__form'), + '#attributes' => array('class' => array('solrext')), + '#weight' => -100, + ); + //debug($form, $form_id, TRUE); +} + + +/** + * Implements hook_help(). + */ +function solrext_help($path, $arg) { + switch ($path) { + case 'admin/structure/block': + return t('This site has stuff!'); + case 'admin/appearance':{ + return _solrext_help_admin_appearance(); + }} +} + + + + + +/** + * Help text for the admin/appearance page. + */ +function _solrext_help_admin_appearance() { + $output = ''; + $data = solrext_stats_enabled_themes(); + $output .= format_plural( + $data['num_hidden'], + 'There is one hidden theme.', + 'There are @count hidden themes.' + ); + return theme('solrext_help', array('text' => $output)); +} + +/** + * Implements hook_menu(). + */ +function solrext_menu() { + $items['admin/reports/solrtext'] = array( + 'title' => 'X-ray technical site overview', + 'description' => 'See the internal structure of this site.', + 'page callback' => 'solrtext_overview_page', + 'access callback' => TRUE, + 'access arguments' => array('access site reports'), + ); + + $items['admin/reports/solrtext/overview'] = array( + 'title' => 'Overview', + 'description' => "Technical overview of the site's internals.", + 'type' => MENU_DEFAULT_LOCAL_TASK, + 'weight' => -10, + ); + + $items['admin/reports/solrtext/overview2'] = array( + 'title' => 'Overview2', + 'description' => "Technical overview of the site's internals.", + 'type' => MENU_LOCAL_TASK, + 'weight' => -1, + 'page callback' => 'solrext_permission_names_page', + 'access arguments' => array('access site reports'), + ); + + + return $items; +} + + +function solrtext_overview_page(){ + return "XX"; +} + + + +/** + * Display the X-ray permission names page. + */ +function solrext_permission_names_page_OLD() { + + $names = solrext_permission_names(); + //debug($names); + return theme('solrext_permission_names', array('names' => $names)); +} +/** + * Collect permission names. + */ +function solrext_permission_names() { + + $names = array(); + $permissions = module_invoke_all('permission'); + // Extract just the permission title from each permission array. + + foreach ($permissions as $machine_name => $permission) { + $names[$machine_name] = $permission['title']; + } + // Put permission names in alphabetical order by title. + asort($names); + + return $names; +} +/** + * Returns HTML of permission machine and display names in a table. + * + * @param $variables + * An associative array containing: + * - names: Array of human-readable names keyed by machine names. + * + * @ingroup themeable + */ +function theme_solrext_permission_names($variables) { + $names = $variables['names']; + $output = ''; + $header = array(t('Permission title'), t('Permission machine name')); + $rows = array(); + foreach ($names as $machine_name => $title) { + $rows[] = array($title, $machine_name); + } + $output .= theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => + array('id' => 'solrext-permission-names'))); + return $output; + + + + /** + * Fetch information about themes. + */ + function solrext_stats_enabled_themes() { + $themes = list_themes(); + $num_themes = count($themes); + // Initialize variables for the data you will collect. + $num_hidden = 0; // Number of hidden themes. + $num_enabled = 0; + $summaries = array(); + // Iterate through each theme, gathering data that you care about. + foreach ($themes as $themename => $theme) { + // Do not gather statistics for hidden themes, but keep a count of them. + if (isset($theme->info['hidden']) && $theme->info['hidden']) { + $num_hidden++; + } + else { // This is a visible theme. + if ($theme->status) { + $num_enabled++; + // This is an enabled theme, provide more stats. + $summaries[$theme->info['name']] = array( + 'regions' => count($theme->info['regions']), + 'overlay_regions' => count($theme->info['overlay_regions']), + 'regions_hidden' => count($theme->info['regions_hidden']), + 'features' => count($theme->info['features']), + 'kindsofstylesheets' => count($theme->info['stylesheets']), + 'allstylesheets' => isset($theme->info['stylesheets']['all']) ? count($theme->info['stylesheets']['all']) : 0, + ); + } + } + } + return compact('num_themes', 'num_hidden', 'num_enabled', 'summaries'); + } +} + + +/** + * Implements hook_theme(). + */ +function solrext_theme() { + + return array( + 'solrext_permission_names' => array( + 'render element' => 'names', + ), + 'solrext_show_page_callback' => array( + 'variables' => array( + 'page_callback' => NULL, + 'include_file' => NULL, + 'page_arguments' => NULL, + ), + ), + ); +} + + +/** + * Display permission machine and display names in a table. + * + * @return + * An array as expected by drupal_render(). + */ +function solrext_permission_names_page() { + $build = array(); + // Gather data, an array of human-readable names keyed by machine names. + $names = solrext_permission_names(); + // Format the data as a table. + $header = array(t('Permission title'), t('Permission machine name')); + $rows = array(); + foreach ($names as $machine_name => $title) { + $rows[] = array($title, $machine_name); + } + $build['names_table'] = array( + '#theme' => 'table__solrext__permission_names', + '#header' => $header, + '#rows' => $rows, + '#attributes' => array('id' => 'solrext-permission-names') + ); + return $build; +} + + +/** + * Provide the page callback function (and other router item information). + */ +function solrext_show_page_callback() { + debug("XX"); + // Do not hand in the path; menu_get_item() finds dynamic paths on its own + // but fails if handed help's $path variable which is node/% for node/1. + $router_item = menu_get_item(); + // menu_get_item() can return null when called via drush command line. + if ($router_item) { + return theme('solrext_show_page_callback', $router_item); + } +} +/** + * Theme the page callback and optionally other elements of a router item. + */ +function theme_solrext_show_page_callback($variables) { + extract($variables, EXTR_SKIP); + $output = ''; + $output .= '<p class="solrext-help solrext-page-callback">'; + $output .= t('This page is brought to you by '); + if ($page_arguments) { + foreach ($page_arguments as $key => $value) { + $page_arguments[$key] = drupal_placeholder($value); + } + $output .= format_plural(count($page_arguments), + 'the argument !arg handed to ', + 'the arguments !arg handed to ', + array('!arg' => solrext_oxford_comma_list($page_arguments)) + ); + } + $output .= t('the function %func', + array('%func' => $page_callback . '()')); + if ($include_file) { + $output .= t(' and the included file %file', + array('%file' => $include_file)); + } + $output .= '.</p>'; + return $output; +} \ No newline at end of file