AdminMenu.php
6 years ago
AdminSubmenu.php
4 years ago
AdminSubmenuDefault.php
8 years ago
AdminSubmenuExpander.php
5 years ago
BlockEditorLink.php
6 years ago
EnabledMenus.php
6 years ago
BlockEditorLink.php
60 lines
| 1 | <?php |
| 2 | namespace NestedPages\Entities\AdminMenu; |
| 3 | |
| 4 | use NestedPages\Entities\PostType\PostTypeRepository; |
| 5 | use NestedPages\Entities\User\UserRepository; |
| 6 | |
| 7 | /** |
| 8 | * Replace the "Pages" link in the block editor if the plugin is set to override the menu link |
| 9 | */ |
| 10 | class BlockEditorLink |
| 11 | { |
| 12 | /** |
| 13 | * Current Admin Page/Screen Object |
| 14 | */ |
| 15 | private $page; |
| 16 | |
| 17 | /** |
| 18 | * User Repository |
| 19 | */ |
| 20 | private $user; |
| 21 | |
| 22 | /** |
| 23 | * Post Type Repository |
| 24 | */ |
| 25 | private $post_type_repo; |
| 26 | |
| 27 | public function __construct() |
| 28 | { |
| 29 | $this->post_type_repo = new PostTypeRepository; |
| 30 | $this->user = new UserRepository; |
| 31 | $this->page = get_current_screen(); |
| 32 | if ( !$this->page ) return; |
| 33 | $this->loopPostTypes(); |
| 34 | } |
| 35 | |
| 36 | /** |
| 37 | * Loop through all the enabled post types |
| 38 | * Skip if "Replace Menu" is not enabled |
| 39 | */ |
| 40 | private function loopPostTypes() |
| 41 | { |
| 42 | foreach($this->post_type_repo->getPostTypesObject() as $type){ |
| 43 | if ( !$type->replace_menu ) continue; |
| 44 | $this->fullPageEditorLink($type); |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | /** |
| 49 | * Full Page Editor Link back to parent listing |
| 50 | */ |
| 51 | private function fullPageEditorLink($type) |
| 52 | { |
| 53 | if ( $this->page->id !== $type->name ) return; |
| 54 | $user_can_view = apply_filters("nestedpages_sort_view_$type->name", $this->user->canViewSorting($type->name), $this->user->getRoles()); |
| 55 | if ( !$user_can_view ) return; |
| 56 | $link = ( $type->name == 'page' ) ? 'admin.php?page=nestedpages' : 'admin.php?page=' . $this->post_type_repo->getMenuSlug($type); |
| 57 | $url = admin_url($link); |
| 58 | echo '<script>jQuery(window).on("load", function(){ var headerLink = jQuery(".edit-post-header .edit-post-fullscreen-mode-close"); jQuery(headerLink).attr("href", "' . $url . '"); });</script>'; |
| 59 | } |
| 60 | } |