Make WordPress Core

Changeset 2234

Timestamp:
02/07/2005 01:15:06 AM (21 years ago)
Author:
rboren
Message:

Plugin page hooks. Props: morganiq. http://mosquito.wordpress.org/view.php?id=785 http://mosquito.wordpress.org/view.php?id=797

Location:
trunk/wp-admin
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-functions.php

    r2186 r2234  
    774774
    775775function add_menu_page($page_title, $menu_title, $access_level, $file) {
    776     global $menu;
     776    global $menu, $admin_page_hooks;
    777777
    778778    $file = plugin_basename($file);
    779779
    780780    $menu[] = array($menu_title, $access_level, $file, $page_title);
    781 }
    782 
    783 function add_submenu_page($parent, $page_title, $menu_title, $access_level, $file) {
     781
     782    $admin_page_hooks[$file] = sanitize_title($menu_title);
     783}
     784
     785function add_submenu_page($parent, $page_title, $menu_title, $access_level, $file, $function = '') {
    784786    global $submenu;
    785787    global $menu;
     
    801803   
    802804    $submenu[$parent][] = array($menu_title, $access_level, $file, $page_title);
    803 }
    804 
    805 function add_options_page($page_title, $menu_title, $access_level, $file) {
    806     add_submenu_page('options-general.php', $page_title, $menu_title, $access_level, $file);
    807 }
    808 
    809 function add_management_page($page_title, $menu_title, $access_level, $file) {
    810     add_submenu_page('edit.php', $page_title, $menu_title, $access_level, $file);
     805
     806    $hookname = get_plugin_page_hookname($file, $parent);
     807    if ( !empty($function) && !empty($hookname) )
     808        add_action($hookname, $function);
     809
     810    return $hookname;
     811}
     812
     813function add_options_page($page_title, $menu_title, $access_level, $file, $function = '') {
     814    return add_submenu_page('options-general.php', $page_title, $menu_title, $access_level, $file, $function);
     815}
     816
     817function add_management_page($page_title, $menu_title, $access_level, $file, $function = '') {
     818    return add_submenu_page('edit.php', $page_title, $menu_title, $access_level, $file, $function);
    811819}
    812820
     
    10001008}
    10011009
     1010function get_plugin_page_hookname($plugin_page, $parent_page) {
     1011    global $admin_page_hooks;
     1012
     1013    if ( isset($admin_page_hooks[$parent_page]) )
     1014        $page_type = $admin_page_hooks[$parent_page];
     1015    else
     1016        $page_type = 'admin';
     1017
     1018    $plugin_name = preg_replace('!\.php!', '', $plugin_page);
     1019
     1020    return $page_type . '_page_' . $plugin_name;
     1021}
     1022
     1023function get_plugin_page_hook($plugin_page, $parent_page) {
     1024    global $wp_filter;
     1025
     1026    $hook = get_plugin_page_hookname($plugin_page, $parent_page);
     1027
     1028    if ( isset($wp_filter[$hook]) )
     1029        return $hook;
     1030    else
     1031        return '';
     1032}
     1033
    10021034?>
  • trunk/wp-admin/admin.php

    r2157 r2234  
    4242if (isset($_GET['page'])) {
    4343    $plugin_page = plugin_basename($_GET['page']);
    44     if ( validate_file($plugin_page) ) {
    45         die(__('Invalid plugin page'));
     44    $page_hook = get_plugin_page_hook($plugin_page, $pagenow);
     45
     46    if ( $page_hook ) {
     47        if (! isset($_GET['noheader']))
     48            require_once(ABSPATH . '/wp-admin/admin-header.php');
     49       
     50        do_action($page_hook);
     51    } else {
     52        if ( validate_file($plugin_page) ) {
     53            die(__('Invalid plugin page'));
     54        }
     55       
     56        if (! file_exists(ABSPATH . "wp-content/plugins/$plugin_page"))
     57            die(sprintf(__('Cannot load %s.'), $plugin_page));
     58
     59        if (! isset($_GET['noheader']))
     60            require_once(ABSPATH . '/wp-admin/admin-header.php');
     61       
     62        include(ABSPATH . "wp-content/plugins/$plugin_page");
    4663    }
     64   
     65    include(ABSPATH . 'wp-admin/admin-footer.php');
    4766
    48     if (! file_exists(ABSPATH . "wp-content/plugins/$plugin_page"))
    49         die(sprintf(__('Cannot load %s.'), $plugin_page));
    50 
    51     if (! isset($_GET['noheader']))
    52         require_once(ABSPATH . '/wp-admin/admin-header.php');
    53 
    54     include(ABSPATH . "wp-content/plugins/$plugin_page");
    55 
    56     include(ABSPATH . 'wp-admin/admin-footer.php');
     67    exit();
    5768}
    5869
  • trunk/wp-admin/menu-header.php

    r1998 r2234  
    3636     }
    3737
    38 if ( (substr($self, -10) == substr($item[2], -10)) || (isset($plugin_page) && $plugin_page == $item[2]) ) $class = ' class="current"';
     38if ( (isset($plugin_page) && $plugin_page == $item[2]) || (!isset($plugin_page) && substr($self, -10) == substr($item[2], -10)) ) $class = ' class="current"';
    3939else if (isset($submenu_file) && $submenu_file == substr($item[2], -10)) $class = ' class="current"';   
    4040else $class = '';
    4141
    42 if (file_exists(ABSPATH . "wp-content/plugins/{$item[2]}"))
    43     echo "\n\t<li><a href='" . get_settings('siteurl') . "/wp-admin/admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";         
    44  else
     42if (file_exists(ABSPATH . "wp-content/plugins/{$item[2]}")) {
     43    $page_hook = get_plugin_page_hook($item[2], $parent_file);
     44    if ( $page_hook )
     45        echo "\n\t<li><a href='" . get_settings('siteurl') . "/wp-admin/{$parent_file}?page={$item[2]}'$class>{$item[0]}</a></li>";     
     46    else
     47        echo "\n\t<li><a href='" . get_settings('siteurl') . "/wp-admin/admin.php?page={$item[2]}'$class>{$item[0]}</a></li>";
     48 } else {
    4549    echo "\n\t<li><a href='" . get_settings('siteurl') . "/wp-admin/{$item[2]}'$class>{$item[0]}</a></li>";
     50 }
    4651endforeach;
    4752?>
  • trunk/wp-admin/menu.php

    r2218 r2234  
    4949$submenu['themes.php'][10] = array(__('Theme Editor'), 8, 'theme-editor.php');
    5050
     51// Create list of page plugin hook names.
     52foreach ($menu as $menu_page) {
     53    $admin_page_hooks[$menu_page[2]] = sanitize_title($menu_page[0]);
     54}
     55
    5156do_action('admin_menu', '');
    5257ksort($menu); // make it all pretty
Note: See TracChangeset for help on using the changeset viewer.