예제 #1
0
파일: hooks.php 프로젝트: cumi/pressbooks
// Shortcodes
// -------------------------------------------------------------------------------------------------------------------
remove_filter('the_content', 'wpautop');
add_filter('the_content', 'wpautop', 12);
// execute wpautop after shortcode processing
$_ = \PressBooks\Shortcodes\Footnotes\Footnotes::getInstance();
$_ = \PressBooks\Shortcodes\Generics\Generics::getInstance();
$_ = \PressBooks\Shortcodes\WikiPublisher\Glyphs::getInstance();
// -------------------------------------------------------------------------------------------------------------------
// Upgrade Book Metadata
// -------------------------------------------------------------------------------------------------------------------
if (\PressBooks\Book::isBook()) {
    add_action('init', function () {
        $meta_version = get_option('pressbooks_metadata_version', 0);
        if ($meta_version < \PressBooks\Metadata::$currentVersion) {
            $metadata = new \PressBooks\Metadata();
            $metadata->upgrade($meta_version);
            update_option('pressbooks_metadata_version', \PressBooks\Metadata::$currentVersion);
        }
    }, 1000);
}
// -------------------------------------------------------------------------------------------------------------------
// Upgrade Catalog
// -------------------------------------------------------------------------------------------------------------------
add_action('init', function () {
    $catalog_version = get_site_option('pressbooks_catalog_version', 0);
    if ($catalog_version < \PressBooks\Catalog::$currentVersion) {
        $metadata = new \PressBooks\Catalog();
        $metadata->upgrade($catalog_version);
        update_site_option('pressbooks_catalog_version', \PressBooks\Catalog::$currentVersion);
    }
예제 #2
0
function adjust_admin_menu()
{
    global $blog_id;
    $current_user = wp_get_current_user();
    if ($blog_id != 1) {
        remove_menu_page("edit.php?post_type=lti_consumer");
    }
    add_submenu_page('pb_export', 'Export to Thin-CC', 'Thin-CC Export', 'export', 'tools.php?page=candela-thin-export.php');
    // Remove items that non-admins should not see
    if (!(in_array('administrator', $current_user->roles) || is_super_admin())) {
        remove_menu_page('themes.php');
        remove_menu_page('pb_export');
        remove_menu_page('pb_import');
        remove_menu_page('pb_sell');
        remove_submenu_page('options-general.php', 'pb_import');
        remove_menu_page('lti-maps');
        remove_menu_page('edit-comments.php');
    }
    // Remove items for non-admins and non-editors
    if (!(in_array('administrator', $current_user->roles) || in_array('editor', $current_user->roles) || is_super_admin())) {
        $metadata = new \PressBooks\Metadata();
        $meta = $metadata->getMetaPost();
        if (!empty($meta)) {
            $book_info_url = 'post.php?post=' . absint($meta->ID) . '&action=edit';
        } else {
            $book_info_url = 'post-new.php?post_type=metadata';
        }
        remove_menu_page($book_info_url);
        remove_submenu_page('pb_export', 'tools.php?page=candela-thin-export.php');
    }
}
예제 #3
0
/**
 * Removes some default WordPress Admin Sidebar items and adds our own
 */
function replace_book_admin_menu()
{
    global $menu, $submenu;
    // Modify $menu and $submenu global arrays to do some tasks, such as adding a new separator, moving items from one menu into another, and reordering sub-menu items.
    $menu[13] = $menu[60];
    // Relocate Appearance
    unset($menu[60]);
    $menu[68] = $menu[10];
    // Relocate Media
    unset($menu[10]);
    $menu[69] = $menu[25];
    // Relocate Comments
    unset($menu[25]);
    // Remove items we don't want the user to see.
    remove_submenu_page('index.php', 'my-sites.php');
    remove_submenu_page('options-general.php', 'options-general.php');
    remove_submenu_page('options-general.php', 'options-writing.php');
    remove_submenu_page('options-general.php', 'options-reading.php');
    remove_submenu_page('options-general.php', 'options-discussion.php');
    remove_submenu_page('options-general.php', 'options-media.php');
    remove_submenu_page('options-general.php', 'options-permalink.php');
    remove_menu_page("edit.php?post_type=part");
    remove_menu_page("edit.php");
    remove_menu_page("edit.php?post_type=front-matter");
    remove_menu_page("edit.php?post_type=back-matter");
    remove_menu_page("edit.php?post_type=metadata");
    remove_menu_page("link-manager.php");
    remove_menu_page("edit.php?post_type=page");
    add_theme_page(__('Theme Options', 'pressbooks'), __('Theme Options', 'pressbooks'), 'edit_theme_options', 'pressbooks_theme_options', 'pressbooks_theme_options_display');
    remove_submenu_page("tools.php", "tools.php");
    remove_submenu_page("tools.php", "import.php");
    remove_submenu_page("tools.php", "export.php");
    remove_submenu_page("tools.php", "ms-delete-site.php");
    remove_menu_page("plugins.php");
    remove_submenu_page("edit.php?post_type=chapter", "edit.php?post_type=chapter");
    // Organize
    $page = add_submenu_page('edit.php?post_type=chapter', __('Organize', 'pressbooks'), __('Organize', 'pressbooks'), 'edit_posts', 'pressbooks', __NAMESPACE__ . '\\display_organize');
    add_action('admin_enqueue_scripts', function ($hook) use($page) {
        if ($hook == $page) {
            wp_enqueue_style('pb-organize');
            wp_enqueue_script('jquery-blockui');
            wp_enqueue_script('pb-organize');
            wp_localize_script('pb-organize', 'PB_OrganizeToken', array('orderNonce' => wp_create_nonce('pb-update-book-order'), 'exportNonce' => wp_create_nonce('pb-update-book-export'), 'showTitleNonce' => wp_create_nonce('pb-update-book-show-title'), 'privacyNonce' => wp_create_nonce('pb-update-book-privacy'), 'private' => __('Private', 'pressbooks'), 'published' => __('Published', 'pressbooks'), 'public' => __('Public', 'pressbooks')));
        }
    });
    if (current_user_can('publish_posts')) {
        $add_chapter = $submenu['edit.php?post_type=chapter'][10];
        unset($submenu['edit.php?post_type=chapter'][10]);
        $add_part = $submenu['edit.php?post_type=part'][10];
        $add_front_matter = $submenu['edit.php?post_type=front-matter'][10];
        $add_back_matter = $submenu['edit.php?post_type=back-matter'][10];
        array_push($submenu['edit.php?post_type=chapter'], $add_part, $add_chapter, $add_front_matter, $add_back_matter);
    }
    if (is_super_admin()) {
        // If network administrator, give the option to see chapter, front matter and back matter types.
        $front_matter_types = $submenu['edit.php?post_type=front-matter'][15];
        $back_matter_types = $submenu['edit.php?post_type=back-matter'][15];
        if (isset($submenu['edit.php?post_type=chapter'][15])) {
            $chapter_types = $submenu['edit.php?post_type=chapter'][15];
            unset($submenu['edit.php?post_type=chapter'][15]);
            array_push($submenu['edit.php?post_type=chapter'], $chapter_types, $front_matter_types, $back_matter_types);
        } else {
            array_push($submenu['edit.php?post_type=chapter'], $front_matter_types, $back_matter_types);
        }
    }
    // Book Information
    $metadata = new \PressBooks\Metadata();
    $meta = $metadata->getMetaPost();
    if (!empty($meta)) {
        $book_info_url = 'post.php?post=' . absint($meta->ID) . '&action=edit';
    } else {
        $book_info_url = 'post-new.php?post_type=metadata';
    }
    $page = add_menu_page(__('Book Info', 'pressbooks'), __('Book Info', 'pressbooks'), 'edit_posts', $book_info_url, '', 'dashicons-info', 12);
    add_action('admin_enqueue_scripts', function ($hook) use($page) {
        if ($hook == 'post-new.php' || $hook == 'post.php') {
            if ('metadata' == get_post_type()) {
                wp_enqueue_script('pb-metadata');
                wp_localize_script('pb-metadata', 'PB_BookInfoToken', array('bookInfoMenuId' => preg_replace('|[^a-zA-Z0-9_:.]|', '-', $page)));
            }
        }
    });
    // Export
    $page = add_menu_page(__('Export', 'pressbooks'), __('Export', 'pressbooks'), 'edit_posts', 'pb_export', __NAMESPACE__ . '\\display_export', 'dashicons-migrate', 14);
    add_action('admin_enqueue_scripts', function ($hook) use($page) {
        if ($hook == $page) {
            wp_enqueue_style('pb-export');
            wp_enqueue_script('pb-export');
            wp_localize_script('pb-export', 'PB_ExportToken', array('mobiConfirm' => __('EPUB is required for MOBI export. Would you like to reenable it?', 'pressbooks')));
        }
    });
    // Sell
    add_menu_page(__('Publish', 'pressbooks'), __('Publish', 'pressbooks'), 'edit_posts', 'pb_publish', __NAMESPACE__ . '\\display_publish', 'dashicons-products', 16);
    // Privacy
    add_options_page(__('Privacy Settings', 'pressbooks'), __('Privacy', 'pressbooks'), 'manage_options', 'pb_privacy_settings', __NAMESPACE__ . '\\display_privacy_settings');
    // Export
    add_options_page(__('Export Settings', 'pressbooks'), __('Export', 'pressbooks'), 'manage_options', 'pb_export_settings', __NAMESPACE__ . '\\display_export_settings');
    // Import
    $page = add_management_page(__('Import', 'pressbooks'), __('Import', 'pressbooks'), 'edit_posts', 'pb_import', __NAMESPACE__ . '\\display_import');
    add_action('admin_enqueue_scripts', function ($hook) use($page) {
        if ($hook == $page) {
            wp_enqueue_script('pb-import');
        }
    });
    // Catalog
    add_submenu_page('index.php', __('My Catalog', 'pressbooks'), __('My Catalog', 'pressbooks'), 'read', 'pb_catalog', '\\PressBooks\\Catalog::addMenu');
}