Révision c8d66f01
Ajouté par Assos Assos il y a plus de 9 ans
drupal7/sites/all/modules/admin_menu/admin_menu.inc | ||
---|---|---|
497 | 497 |
); |
498 | 498 |
} |
499 | 499 |
|
500 |
// Add link to toggle developer modules (performance). |
|
501 |
$saved_state = variable_get('admin_menu_devel_modules_enabled', NULL); |
|
502 |
$links['icon']['toggle-modules'] = array( |
|
503 |
'#title' => isset($saved_state) ? t('Enable developer modules') : t('Disable developer modules'), |
|
504 |
'#weight' => 88, |
|
505 |
'#access' => user_access('administer modules'), |
|
506 |
'#href' => 'admin_menu/toggle-modules', |
|
507 |
'#options' => array( |
|
508 |
'query' => $destination + array('token' => drupal_get_token('admin_menu/toggle-modules')), |
|
509 |
), |
|
510 |
); |
|
511 |
|
|
512 | 500 |
// Add Devel module menu links. |
513 | 501 |
if (module_exists('devel')) { |
514 | 502 |
$devel_tree = menu_build_tree('devel'); |
... | ... | |
697 | 685 |
'#title' => t('Cache menu in client-side browser'), |
698 | 686 |
'#default_value' => variable_get('admin_menu_cache_client', 1), |
699 | 687 |
); |
700 |
// Fetch all available modules manually, since module_list() only returns |
|
701 |
// currently enabled modules, which makes this setting pointless if developer |
|
702 |
// modules are currently disabled. |
|
703 |
$all_modules = array(); |
|
704 |
$result = db_query("SELECT name, filename, info FROM {system} WHERE type = 'module' ORDER BY name ASC"); |
|
705 |
foreach ($result as $module) { |
|
706 |
if (file_exists($module->filename)) { |
|
707 |
$info = unserialize($module->info); |
|
708 |
$all_modules[$module->name] = $info['name']; |
|
709 |
} |
|
710 |
} |
|
711 |
$devel_modules = variable_get('admin_menu_devel_modules', _admin_menu_developer_modules()); |
|
712 |
$devel_modules = array_intersect_key($all_modules, array_flip($devel_modules)); |
|
713 |
$form['performance']['admin_menu_devel_modules_skip'] = array( |
|
714 |
'#type' => 'checkboxes', |
|
715 |
'#title' => t('Developer modules to keep enabled'), |
|
716 |
'#default_value' => variable_get('admin_menu_devel_modules_skip', array()), |
|
717 |
'#options' => $devel_modules, |
|
718 |
'#access' => !empty($devel_modules), |
|
719 |
'#description' => t('The selected modules will not be disabled when the link %disable-developer-modules below the icon in the menu is invoked.', array( |
|
720 |
'%disable-developer-modules' => t('Disable developer modules'), |
|
721 |
)), |
|
722 |
); |
|
723 | 688 |
|
724 | 689 |
return system_settings_form($form); |
725 | 690 |
} |
... | ... | |
783 | 748 |
); |
784 | 749 |
} |
785 | 750 |
|
786 |
/** |
|
787 |
* Menu callback; Enable/disable developer modules. |
|
788 |
* |
|
789 |
* This can save up to 150ms on each uncached page request. |
|
790 |
*/ |
|
791 |
function admin_menu_toggle_modules() { |
|
792 |
if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], current_path())) { |
|
793 |
return MENU_ACCESS_DENIED; |
|
794 |
} |
|
795 |
|
|
796 |
$rebuild = FALSE; |
|
797 |
$saved_state = variable_get('admin_menu_devel_modules_enabled', NULL); |
|
798 |
if (isset($saved_state)) { |
|
799 |
// Re-enable modules that were enabled before. |
|
800 |
module_enable($saved_state); |
|
801 |
variable_del('admin_menu_devel_modules_enabled'); |
|
802 |
drupal_set_message(t('Enabled these modules: !module-list.', array('!module-list' => implode(', ', $saved_state)))); |
|
803 |
$rebuild = TRUE; |
|
804 |
} |
|
805 |
else { |
|
806 |
// Allow site admins to override this variable via settings.php. |
|
807 |
$devel_modules = variable_get('admin_menu_devel_modules', _admin_menu_developer_modules()); |
|
808 |
// Store currently enabled modules in a variable. |
|
809 |
$devel_modules = array_intersect(module_list(FALSE, FALSE), $devel_modules); |
|
810 |
$devel_modules = array_diff($devel_modules, variable_get('admin_menu_devel_modules_skip', array())); |
|
811 |
if (!empty($devel_modules)) { |
|
812 |
variable_set('admin_menu_devel_modules_enabled', $devel_modules); |
|
813 |
// Disable developer modules. |
|
814 |
module_disable($devel_modules); |
|
815 |
drupal_set_message(t('Disabled these modules: !module-list.', array('!module-list' => implode(', ', $devel_modules)))); |
|
816 |
$rebuild = TRUE; |
|
817 |
} |
|
818 |
else { |
|
819 |
drupal_set_message(t('No developer modules are enabled.')); |
|
820 |
} |
|
821 |
} |
|
822 |
if ($rebuild) { |
|
823 |
// Make sure everything is rebuilt, basically a combination of the calls |
|
824 |
// from system_modules() and system_modules_submit(). |
|
825 |
drupal_theme_rebuild(); |
|
826 |
menu_rebuild(); |
|
827 |
cache_clear_all('schema', 'cache'); |
|
828 |
cache_clear_all(); |
|
829 |
drupal_clear_css_cache(); |
|
830 |
drupal_clear_js_cache(); |
|
831 |
// Synchronize to catch any actions that were added or removed. |
|
832 |
actions_synchronize(); |
|
833 |
// Finally, flush admin_menu's cache. |
|
834 |
admin_menu_flush_caches(); |
|
835 |
} |
|
836 |
drupal_goto(); |
|
837 |
} |
|
838 |
|
|
839 |
/** |
|
840 |
* Helper function to return a default list of developer modules. |
|
841 |
*/ |
|
842 |
function _admin_menu_developer_modules() { |
|
843 |
return array( |
|
844 |
'admin_devel', |
|
845 |
'cache_disable', |
|
846 |
'coder', |
|
847 |
'content_copy', |
|
848 |
'context_ui', |
|
849 |
'debug', |
|
850 |
'delete_all', |
|
851 |
'demo', |
|
852 |
'devel', |
|
853 |
'devel_node_access', |
|
854 |
'devel_themer', |
|
855 |
'field_ui', |
|
856 |
'fontyourface_ui', |
|
857 |
'form_controller', |
|
858 |
'imagecache_ui', |
|
859 |
'journal', |
|
860 |
'l10n_client', |
|
861 |
'l10n_update', |
|
862 |
'macro', |
|
863 |
'rules_admin', |
|
864 |
'stringoverrides', |
|
865 |
'trace', |
|
866 |
'upgrade_status', |
|
867 |
'user_display_ui', |
|
868 |
'util', |
|
869 |
'views_ui', |
|
870 |
'views_theme_wizard', |
|
871 |
); |
|
872 |
} |
|
873 |
|
|
874 | 751 |
/** |
875 | 752 |
* Flush all caches or a specific one. |
876 | 753 |
* |
Formats disponibles : Unified diff
Weekly update of contrib modules