Nested Pages - Version 1.2.0

Version Description

  • PHP 5.3.2+ is now required to run Nested Pages. Will not run or install on older versions of PHP.
  • Visual nesting indication limit removed
  • Portuguese Translation (Provided by Luis Martins)
  • Various bug fixes
Download this release

Release Info

Developer kylephillips
Plugin Icon 128x128 Nested Pages
Version 1.2.0
Comparing to
See all releases

Code changes from version 1.1.9 to 1.2.0

Files changed (61) hide show
  1. includes/class-np-activate.php → app/Activation/Activate.php +26 -8
  2. includes/class-np-dependencies.php → app/Activation/Dependencies.php +36 -9
  3. includes/class-np-activate-upgrades.php → app/Activation/Updates/Updates.php +8 -4
  4. app/Bootstrap.php +74 -0
  5. includes/class-np-settings.php → app/Config/Settings.php +26 -6
  6. app/Controllers/AdminMenuController.php +96 -0
  7. includes/class-np-newpage.php → app/Controllers/AdminSubmenuController.php +23 -39
  8. includes/class-np-pagelisting.php → app/Controllers/PageListingController.php +30 -90
  9. app/Entities/Confirmation/ConfirmationFactory.php +59 -0
  10. app/Entities/Confirmation/ConfirmationInterface.php +10 -0
  11. app/Entities/Confirmation/LinkDeletedConfirmation.php +13 -0
  12. app/Entities/Confirmation/TrashConfirmation.php +25 -0
  13. app/Entities/Confirmation/TrashRestoredConfirmation.php +15 -0
  14. includes/class-np-navmenu.php → app/Entities/NavMenu.php +8 -5
  15. includes/class-np-posttypes.php → app/Entities/Post/PostActions.php +5 -35
  16. includes/class-np-factory-post.php → app/Entities/Post/PostFactory.php +6 -5
  17. includes/class-np-repository-post.php → app/Entities/Post/PostRepository.php +9 -9
  18. app/Entities/PostType/PostTypeRepository.php +35 -0
  19. app/Entities/PostType/RegisterPostTypes.php +40 -0
  20. includes/class-np-repository-user.php → app/Entities/User/UserRepository.php +2 -3
  21. app/Form/FormActionFactory.php +70 -0
  22. includes/class-np-handler-base.php → app/Form/Handlers/BaseHandler.php +7 -7
  23. includes/class-np-handler-gettax.php → app/Form/Handlers/GetTaxonomiesHandler.php +3 -9
  24. includes/class-np-handler-nesttoggle.php → app/Form/Handlers/NestToggleHandler.php +5 -7
  25. includes/class-np-handler-newchild.php → app/Form/Handlers/NewChildHandler.php +6 -12
  26. includes/class-np-handler-newredirect.php → app/Form/Handlers/NewLinkHandler.php +5 -11
  27. includes/class-np-handler-quickedit.php → app/Form/Handlers/QuickEditHandler.php +2 -9
  28. includes/class-np-handler-quickedit-redirect.php → app/Form/Handlers/QuickEditLinkHandler.php +2 -10
  29. includes/class-np-handler-sort.php → app/Form/Handlers/SortHandler.php +2 -10
  30. includes/class-np-handler-syncmenu.php → app/Form/Handlers/SyncMenuHandler.php +2 -9
  31. includes/class-np-validation.php → app/Form/Validation/Validation.php +3 -4
  32. includes/class-np-helpers.php → app/Helpers.php +17 -3
  33. app/NestedPages.php +19 -0
  34. includes/class-np-redirects.php → app/Redirects.php +4 -3
  35. {views → app/Views}/link-form.php +0 -0
  36. {views → app/Views}/new-child.php +0 -0
  37. {views → app/Views}/pages.php +10 -8
  38. {views → app/Views}/quickedit-redirect.php +0 -0
  39. {views → app/Views}/quickedit.php +2 -2
  40. {views → app/Views}/row-redirect.php +2 -2
  41. {views → app/Views}/row.php +0 -0
  42. app/Views/settings-general.php +41 -0
  43. app/Views/settings-posttypes.php +5 -0
  44. app/Views/settings.php +19 -0
  45. assets/css/nestedpages.css +1 -1
  46. assets/js/lib/nestedpages.js +44 -11
  47. assets/js/nestedpages.min.js +1 -1
  48. composer.json +24 -0
  49. includes/class-nestedpages.php +0 -114
  50. includes/class-np-confirmation.php +0 -102
  51. languages/nestedpages-pt_PT.mo +0 -0
  52. languages/nestedpages-pt_PT.po +337 -0
  53. nestedpages.php +11 -8
  54. readme.txt +16 -6
  55. vendor/autoload.php +7 -0
  56. vendor/composer/ClassLoader.php +378 -0
  57. vendor/composer/autoload_classmap.php +9 -0
  58. vendor/composer/autoload_namespaces.php +9 -0
  59. vendor/composer/autoload_psr4.php +10 -0
  60. vendor/composer/autoload_real.php +50 -0
  61. views/settings.php +0 -48
includes/class-np-activate.php → app/Activation/Activate.php RENAMED
@@ -1,18 +1,28 @@
1
- <?php
 
 
 
2
  /**
3
  * Plugin Activation
4
  */
5
- require_once('class-np-activate-upgrades.php');
6
- class NP_Activate {
7
 
8
  /**
9
  * Plugin Version
10
  */
11
  private $version;
12
 
 
 
 
 
 
 
13
 
14
  public function __construct()
15
  {
 
 
16
  $this->install();
17
  }
18
 
@@ -22,23 +32,31 @@ class NP_Activate {
22
  */
23
  public function install()
24
  {
25
- $this->version = '1.1.9';
26
- new NP_ActivateUpgrades($this->version);
27
- $this->setVersion();
28
  $this->setOptions();
 
29
  }
30
 
31
-
32
  /**
33
  * Set the Plugin Version
34
  */
35
  private function setVersion()
 
 
 
 
 
 
 
 
 
 
36
  {
37
  update_option('nestedpages_version', $this->version);
38
  }
39
 
40
 
41
-
42
  /**
43
  * Set Default Options
44
  */
1
+ <?php namespace NestedPages\Activation;
2
+
3
+ use NestedPages\Activation\Updates\Updates;
4
+
5
  /**
6
  * Plugin Activation
7
  */
8
+ class Activate {
 
9
 
10
  /**
11
  * Plugin Version
12
  */
13
  private $version;
14
 
15
+ /**
16
+ * Updates
17
+ * @var object
18
+ */
19
+ private $updates;
20
+
21
 
22
  public function __construct()
23
  {
24
+ $this->setVersion();
25
+ $this->updates = new Updates;
26
  $this->install();
27
  }
28
 
32
  */
33
  public function install()
34
  {
35
+ $this->updates->run($this->version);
36
+ $this->saveVersion();
 
37
  $this->setOptions();
38
+ new Dependencies;
39
  }
40
 
 
41
  /**
42
  * Set the Plugin Version
43
  */
44
  private function setVersion()
45
+ {
46
+ global $np_version;
47
+ $this->version = $np_version;
48
+ }
49
+
50
+
51
+ /**
52
+ * Set the Plugin Version
53
+ */
54
+ private function saveVersion()
55
  {
56
  update_option('nestedpages_version', $this->version);
57
  }
58
 
59
 
 
60
  /**
61
  * Set Default Options
62
  */
includes/class-np-dependencies.php → app/Activation/Dependencies.php RENAMED
@@ -1,22 +1,39 @@
1
- <?php
2
  /**
3
  * Plugin JS & CSS Dependencies
4
  */
5
- class NP_Dependencies {
6
 
7
  /**
8
  * Plugin Directory
9
  */
10
  private $plugin_dir;
11
 
 
 
 
 
 
 
12
  public function __construct()
13
  {
 
14
  add_action( 'admin_enqueue_scripts', array($this, 'styles') );
15
  add_action( 'admin_enqueue_scripts', array($this, 'scripts') );
16
  $this->plugin_dir = plugins_url() . '/wp-nested-pages';
17
  }
18
 
19
 
 
 
 
 
 
 
 
 
 
 
20
  /**
21
  * Admin Styles
22
  */
@@ -26,7 +43,7 @@ class NP_Dependencies {
26
  'nestedpages',
27
  $this->plugin_dir . '/assets/css/nestedpages.css',
28
  array(),
29
- '1.1.9'
30
  );
31
  }
32
 
@@ -38,6 +55,7 @@ class NP_Dependencies {
38
  public function scripts()
39
  {
40
  $screen = get_current_screen();
 
41
  if ( strpos( $screen->id, 'nestedpages' ) ) :
42
  wp_enqueue_script('suggest');
43
  wp_enqueue_script('jquery-ui-core');
@@ -60,12 +78,21 @@ class NP_Dependencies {
60
  array('jquery', 'jquery-ui-sortable'),
61
  '1.0'
62
  );
63
- wp_enqueue_script(
64
- 'nestedpages',
65
- $this->plugin_dir . '/assets/js/nestedpages.min.js',
66
- array('jquery'),
67
- '1.1.9'
68
- );
 
 
 
 
 
 
 
 
 
69
  $localized_data = array(
70
  'np_nonce' => wp_create_nonce( 'nestedpages-nonce' ),
71
  'expand_text' => __('Expand Pages', 'nestedpages'),
1
+ <?php namespace NestedPages\Activation;
2
  /**
3
  * Plugin JS & CSS Dependencies
4
  */
5
+ class Dependencies {
6
 
7
  /**
8
  * Plugin Directory
9
  */
10
  private $plugin_dir;
11
 
12
+ /**
13
+ * Plugin Version
14
+ */
15
+ private $plugin_version;
16
+
17
+
18
  public function __construct()
19
  {
20
+ $this->setPluginVersion();
21
  add_action( 'admin_enqueue_scripts', array($this, 'styles') );
22
  add_action( 'admin_enqueue_scripts', array($this, 'scripts') );
23
  $this->plugin_dir = plugins_url() . '/wp-nested-pages';
24
  }
25
 
26
 
27
+ /**
28
+ * Set the Plugin Version
29
+ */
30
+ private function setPluginVersion()
31
+ {
32
+ global $np_version;
33
+ $this->plugin_version = $np_version;
34
+ }
35
+
36
+
37
  /**
38
  * Admin Styles
39
  */
43
  'nestedpages',
44
  $this->plugin_dir . '/assets/css/nestedpages.css',
45
  array(),
46
+ $this->plugin_version
47
  );
48
  }
49
 
55
  public function scripts()
56
  {
57
  $screen = get_current_screen();
58
+ global $np_env;
59
  if ( strpos( $screen->id, 'nestedpages' ) ) :
60
  wp_enqueue_script('suggest');
61
  wp_enqueue_script('jquery-ui-core');
78
  array('jquery', 'jquery-ui-sortable'),
79
  '1.0'
80
  );
81
+ if ( $np_env == 'dev' ){
82
+ wp_enqueue_script(
83
+ 'nestedpages',
84
+ $this->plugin_dir . '/assets/js/lib/nestedpages.js',
85
+ array('jquery'),
86
+ $this->plugin_version
87
+ );
88
+ } else {
89
+ wp_enqueue_script(
90
+ 'nestedpages',
91
+ $this->plugin_dir . '/assets/js/nestedpages.min.js',
92
+ array('jquery'),
93
+ $this->plugin_version
94
+ );
95
+ }
96
  $localized_data = array(
97
  'np_nonce' => wp_create_nonce( 'nestedpages-nonce' ),
98
  'expand_text' => __('Expand Pages', 'nestedpages'),
includes/class-np-activate-upgrades.php → app/Activation/Updates/Updates.php RENAMED
@@ -1,8 +1,8 @@
1
- <?php
2
  /**
3
  * Required Version Upgrades
4
  */
5
- class NP_ActivateUpgrades {
6
 
7
  /**
8
  * New Version
@@ -14,8 +14,11 @@ class NP_ActivateUpgrades {
14
  */
15
  private $current_version;
16
 
17
-
18
- public function __construct($new_version)
 
 
 
19
  {
20
  $this->new_version = $new_version;
21
  $this->setCurrentVersion();
@@ -23,6 +26,7 @@ class NP_ActivateUpgrades {
23
  $this->convertMenuToID();
24
  }
25
 
 
26
  /**
27
  * Set the plugin version
28
  */
1
+ <?php namespace NestedPages\Activation\Updates;
2
  /**
3
  * Required Version Upgrades
4
  */
5
+ class Updates {
6
 
7
  /**
8
  * New Version
14
  */
15
  private $current_version;
16
 
17
+ /**
18
+ * Run the Updates
19
+ * @var string
20
+ */
21
+ public function run($new_version)
22
  {
23
  $this->new_version = $new_version;
24
  $this->setCurrentVersion();
26
  $this->convertMenuToID();
27
  }
28
 
29
+
30
  /**
31
  * Set the plugin version
32
  */
app/Bootstrap.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages;
2
+
3
+ /**
4
+ * Primary Plugin Bootstrap
5
+ */
6
+ class Bootstrap {
7
+
8
+ public function __construct()
9
+ {
10
+ $this->initializePlugin();
11
+ add_action( 'init', array($this, 'initializeWordPress') );
12
+ add_filter( 'plugin_action_links_' . 'wp-nested-pages/nestedpages.php', array($this, 'settingsLink' ) );
13
+ }
14
+
15
+ /**
16
+ * Initialize Plugin
17
+ */
18
+ private function initializePlugin()
19
+ {
20
+ new Activation\Activate;
21
+ new Redirects;
22
+ new Entities\PostType\RegisterPostTypes;
23
+ new Entities\Post\PostActions;
24
+ new Form\FormActionFactory;
25
+ new Config\Settings;
26
+ }
27
+
28
+
29
+ /**
30
+ * Wordpress Initialization Actions
31
+ */
32
+ public function initializeWordPress()
33
+ {
34
+ $this->listPages();
35
+ $this->addLocalization();
36
+ }
37
+
38
+
39
+ /**
40
+ * Page Listing & Menus
41
+ * @since 1.1.6 - Moved into init due to Multisite bug
42
+ */
43
+ public function listPages()
44
+ {
45
+ new Controllers\AdminMenuController;
46
+ new Controllers\AdminSubmenuController;
47
+ new Controllers\PageListingController;
48
+ }
49
+
50
+
51
+ /**
52
+ * Localization Domain
53
+ */
54
+ public function addLocalization()
55
+ {
56
+ load_plugin_textdomain(
57
+ 'nestedpages',
58
+ false,
59
+ dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages' );
60
+ }
61
+
62
+
63
+ /**
64
+ * Add a link to the settings on the plugin page
65
+ */
66
+ public function settingsLink($links)
67
+ {
68
+ $settings_link = '<a href="options-general.php?page=nested-pages-settings">' . __('Settings') . '</a>';
69
+ array_unshift($links, $settings_link);
70
+ return $links;
71
+ }
72
+
73
+
74
+ }
includes/class-np-settings.php → app/Config/Settings.php RENAMED
@@ -1,10 +1,13 @@
1
- <?php
2
- require_once('class-np-helpers.php');
3
- require_once('class-np-repository-user.php');
 
 
 
4
  /**
5
  * Plugin Settings
6
  */
7
- class NP_Settings {
8
 
9
  /**
10
  * Nested Pages Menu
@@ -17,13 +20,18 @@ class NP_Settings {
17
  */
18
  private $user_repo;
19
 
 
 
 
 
 
20
 
21
  public function __construct()
22
  {
23
  add_action( 'admin_menu', array( $this, 'registerSettingsPage' ) );
24
  add_action( 'admin_init', array( $this, 'registerSettings' ) );
25
  add_action( 'updated_option', array( $this, 'updateMenuName'), 10, 3);
26
- $this->user_repo = new NP_UserRepository;
27
  }
28
 
29
 
@@ -86,13 +94,25 @@ class NP_Settings {
86
  }
87
 
88
 
 
 
 
 
 
 
 
 
 
 
 
89
  /**
90
  * Display the Settings Page
91
  */
92
  public function settingsPage()
93
  {
94
  $this->setMenu();
95
- include( NP_Helpers::view('settings') );
 
96
  }
97
 
98
  }
1
+ <?php namespace NestedPages\Config;
2
+
3
+ use NestedPages\Helpers;
4
+ use NestedPages\Entities\User\UserRepository;
5
+ use NestedPages\Entities\PostType\PostTypeRepository;
6
+
7
  /**
8
  * Plugin Settings
9
  */
10
+ class Settings {
11
 
12
  /**
13
  * Nested Pages Menu
20
  */
21
  private $user_repo;
22
 
23
+ /**
24
+ * Post Types
25
+ */
26
+ private $post_types;
27
+
28
 
29
  public function __construct()
30
  {
31
  add_action( 'admin_menu', array( $this, 'registerSettingsPage' ) );
32
  add_action( 'admin_init', array( $this, 'registerSettings' ) );
33
  add_action( 'updated_option', array( $this, 'updateMenuName'), 10, 3);
34
+ $this->user_repo = new UserRepository;
35
  }
36
 
37
 
94
  }
95
 
96
 
97
+ /**
98
+ * Get Post Types
99
+ * @since 1.2
100
+ */
101
+ public function getPostTypes()
102
+ {
103
+ $post_repo = new PostTypeRepository;
104
+ return $post_repo->getPostTypeArray();
105
+ }
106
+
107
+
108
  /**
109
  * Display the Settings Page
110
  */
111
  public function settingsPage()
112
  {
113
  $this->setMenu();
114
+ $tab = ( isset($_GET['tab']) ) ? $_GET['tab'] : 'general';
115
+ include( Helpers::view('settings') );
116
  }
117
 
118
  }
app/Controllers/AdminMenuController.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Controllers;
2
+
3
+ use NestedPages\Controllers\PageListingController;
4
+ use NestedPages\Helpers;
5
+
6
+ /**
7
+ * Admin Menus
8
+ * @since 1.2
9
+ */
10
+ class AdminMenuController {
11
+
12
+ /**
13
+ * Page Post Type
14
+ */
15
+ private $post_type;
16
+
17
+
18
+ public function __construct()
19
+ {
20
+ add_action( 'admin_menu', array($this, 'adminMenu') );
21
+ }
22
+
23
+
24
+ /**
25
+ * Add the admin menu items
26
+ */
27
+ public function adminMenu()
28
+ {
29
+ $this->pageMenu();
30
+ }
31
+
32
+
33
+ /**
34
+ * Page Menu
35
+ * @since 1.2
36
+ */
37
+ private function pageMenu()
38
+ {
39
+ $this->post_type = get_post_type_object('page');
40
+ if ( (current_user_can('edit_pages')) || ($this->user->canSortPages()) ){
41
+ add_menu_page(
42
+ __($this->post_type->labels->name),
43
+ __($this->post_type->labels->name),
44
+ 'delete_pages',
45
+ 'nestedpages',
46
+ PageListingController::admin_menu(),
47
+ 'dashicons-admin-page',
48
+ 20
49
+ );
50
+ $this->pageSubmenu();
51
+ }
52
+ }
53
+
54
+
55
+ /**
56
+ * Page Submenus
57
+ */
58
+ private function pageSubmenu()
59
+ {
60
+ global $submenu;
61
+ $submenu['nestedpages'][50] = array( __('All Pages','nestedpages'), 'publish_pages', esc_url(admin_url('admin.php?page=nestedpages')) );
62
+ $c = $this->submenu();
63
+ // Default Pages
64
+ if ( get_option('nestedpages_hidedefault') !== 'hide' ){
65
+ $submenu['nestedpages'][$c] = array( __('Default Pages','nestedpages'), 'publish_pages', Helpers::defaultPagesLink() );
66
+ }
67
+ }
68
+
69
+
70
+ /**
71
+ * Add Submenus
72
+ */
73
+ private function submenu()
74
+ {
75
+ global $submenu;
76
+
77
+ // Get the right submenu and remove all pages link
78
+ foreach($submenu as $key => $sub){
79
+ if ($key == 'edit.php?post_type=' . $this->post_type->name){
80
+ unset($sub['5']); // Remove "All Pages"
81
+ $menu_items = $sub;
82
+ }
83
+ }
84
+ if ( isset($menu_items) ){
85
+ $c = 60;
86
+ foreach($menu_items as $item){
87
+ $submenu['nestedpages'][$c] = array( $item[0], $item[1], $item[2]);
88
+ $c = $c + 10;
89
+ }
90
+ }
91
+ return $c;
92
+ }
93
+
94
+
95
+
96
+ }
includes/class-np-newpage.php → app/Controllers/AdminSubmenuController.php RENAMED
@@ -1,75 +1,59 @@
1
- <?php
2
  /**
3
- * Performs Hooks to check for new page screen
4
- * Select appropriate parent page if applicable & shows message
5
  */
6
- class NP_NewPage {
7
 
8
  /**
9
- * Parent Page
10
  */
11
- private $parent_page;
12
-
13
 
14
  public function __construct()
15
  {
16
- add_action('admin_notices', array($this, 'showNotice'));
17
- add_action('admin_head', array($this, 'selectParent'));
18
  add_action('admin_head', array($this, 'expandPagesMenu'));
19
  }
20
 
21
-
22
  /**
23
- * Check if this is a new child page
24
  */
25
- private function isChild()
26
  {
27
- $page = get_current_screen();
28
- if ( ($page->id == 'page') && ($page->action == 'add') && (isset($_GET['npparent'])) ){
29
- $this->parent_page = (int) sanitize_text_field($_GET['npparent']);
30
- return true;
31
- } else {
32
- return false;
33
- }
34
  }
35
 
36
-
37
  /**
38
- * Show the admin notice
39
  */
40
- public function showNotice()
41
  {
42
- if ( $this->isChild() ) {
43
- echo '<div id="message" class="updated"><p>' . __('Adding child page under:', 'nestedpages') . ' <strong>' . get_the_title($this->parent_page) . '</strong></p></div>';
44
  }
45
  }
46
 
47
-
48
  /**
49
- * Preselect the parent page
50
  */
51
- public function selectParent()
52
  {
53
- if ( $this->isChild() ) {
54
- echo '<script>jQuery(document).ready(function(){ jQuery("#parent_id").val("' . $this->parent_page . '"); });</script>';
55
  }
56
  }
57
 
58
  /**
59
- * Expand the Pages submenu
60
  */
61
- public function expandPagesMenu()
62
  {
63
- $page = get_current_screen();
64
- if ( ($page->id == 'page') && ($page->action == 'add') ){
65
- echo '<script>jQuery(document).ready(function(){jQuery("#toplevel_page_nestedpages").removeClass("wp-not-current-submenu").addClass("wp-has-current-submenu").addClass("wp-menu-open");jQuery("#toplevel_page_nestedpages a:first").addClass("wp-has-current-submenu");var addnew = jQuery("#toplevel_page_nestedpages ul li:nth-child(3)");jQuery(addnew).addClass("current");jQuery(addnew).children("a").addClass("current");});</script>';
66
- }
67
- if ( $page->id == 'edit-page' ){
68
- echo '<script>jQuery(document).ready(function(){jQuery("#toplevel_page_nestedpages").removeClass("wp-not-current-submenu").addClass("wp-has-current-submenu").addClass("wp-menu-open");jQuery("#toplevel_page_nestedpages a:first").addClass("wp-has-current-submenu");var addnew = jQuery("#toplevel_page_nestedpages ul li:nth-child(4)");});</script>';
69
- }
70
- if ( $page->id == 'toplevel_page_nestedpages' ){
71
  echo '<script>jQuery(document).ready(function(){jQuery("#toplevel_page_nestedpages").removeClass("wp-not-current-submenu").addClass("wp-has-current-submenu").addClass("wp-menu-open");jQuery("#toplevel_page_nestedpages a:first").addClass("wp-has-current-submenu");var addnew = jQuery("#toplevel_page_nestedpages ul li:nth-child(2)");jQuery(addnew).addClass("current");jQuery(addnew).children("a").addClass("current");});</script>';
72
  }
73
  }
74
 
 
75
  }
1
+ <?php namespace NestedPages\Controllers;
2
  /**
3
+ * Opens the Submenu on child admin pages and highlights the current item
 
4
  */
5
+ class AdminSubmenuController {
6
 
7
  /**
8
+ * Current Page Object
9
  */
10
+ private $page;
 
11
 
12
  public function __construct()
13
  {
 
 
14
  add_action('admin_head', array($this, 'expandPagesMenu'));
15
  }
16
 
 
17
  /**
18
+ * Expand the Pages submenu
19
  */
20
+ public function expandPagesMenu()
21
  {
22
+ $this->page = get_current_screen();
23
+ $this->newPage();
24
+ $this->editPage();
25
+ $this->nestedPages();
 
 
 
26
  }
27
 
 
28
  /**
29
+ * New Page Screen
30
  */
31
+ private function newPage()
32
  {
33
+ if ( ($this->page->id == 'page') && ($this->page->action == 'add') ){
34
+ echo '<script>jQuery(document).ready(function(){jQuery("#toplevel_page_nestedpages").removeClass("wp-not-current-submenu").addClass("wp-has-current-submenu").addClass("wp-menu-open");jQuery("#toplevel_page_nestedpages a:first").addClass("wp-has-current-submenu");var addnew = jQuery("#toplevel_page_nestedpages ul li:nth-child(3)");jQuery(addnew).addClass("current");jQuery(addnew).children("a").addClass("current");});</script>';
35
  }
36
  }
37
 
 
38
  /**
39
+ * Edit Page Screen
40
  */
41
+ private function editPage()
42
  {
43
+ if ( $this->page->id == 'edit-page' ){
44
+ echo '<script>jQuery(document).ready(function(){jQuery("#toplevel_page_nestedpages").removeClass("wp-not-current-submenu").addClass("wp-has-current-submenu").addClass("wp-menu-open");jQuery("#toplevel_page_nestedpages a:first").addClass("wp-has-current-submenu");var addnew = jQuery("#toplevel_page_nestedpages ul li:nth-child(4)");});</script>';
45
  }
46
  }
47
 
48
  /**
49
+ * Nested Pages View
50
  */
51
+ private function nestedPages()
52
  {
53
+ if ( $this->page->id == 'toplevel_page_nestedpages' ){
 
 
 
 
 
 
 
54
  echo '<script>jQuery(document).ready(function(){jQuery("#toplevel_page_nestedpages").removeClass("wp-not-current-submenu").addClass("wp-has-current-submenu").addClass("wp-menu-open");jQuery("#toplevel_page_nestedpages a:first").addClass("wp-has-current-submenu");var addnew = jQuery("#toplevel_page_nestedpages ul li:nth-child(2)");jQuery(addnew).addClass("current");jQuery(addnew).children("a").addClass("current");});</script>';
55
  }
56
  }
57
 
58
+
59
  }
includes/class-np-pagelisting.php → app/Controllers/PageListingController.php RENAMED
@@ -1,13 +1,15 @@
1
- <?php
2
- require_once('class-np-confirmation.php');
3
- require_once('class-np-helpers.php');
4
- require_once('class-np-repository-post.php');
5
- require_once('class-np-repository-user.php');
 
 
6
  /**
7
- * Primary Listing Class
8
  * Initiates Page Listing screen (overwriting default), and displays primary plugin view.
9
  */
10
- class NP_PageListing {
11
 
12
  /**
13
  * Post Type
@@ -43,6 +45,12 @@ class NP_PageListing {
43
  private $post_repo;
44
 
45
 
 
 
 
 
 
 
46
  /**
47
  * User Repository
48
  */
@@ -51,30 +59,22 @@ class NP_PageListing {
51
 
52
  public function __construct()
53
  {
54
- $this->post_repo = new NP_PostRepository;
55
- $this->user = new NP_UserRepository;
 
56
  $this->setPostType();
57
- add_action( 'admin_menu', array($this, 'adminMenu') );
58
- add_action( 'admin_menu', array($this, 'submenu') );
59
  }
60
 
61
 
62
  /**
63
- * Add the admin menu item
 
64
  */
65
- public function adminMenu()
66
- {
67
- if ( (current_user_can('edit_pages')) || ($this->user->canSortPages()) ){
68
- add_menu_page(
69
- __($this->post_type->labels->name),
70
- __($this->post_type->labels->name),
71
- 'delete_pages',
72
- 'nestedpages',
73
- array( $this, 'pageListing' ),
74
- 'dashicons-admin-page',
75
- 20
76
- );
77
- }
78
  }
79
 
80
 
@@ -88,46 +88,6 @@ class NP_PageListing {
88
  }
89
 
90
 
91
- /**
92
- * Add Submenu
93
- */
94
- public function submenu()
95
- {
96
- global $submenu;
97
- $submenu['nestedpages'][50] = array( __('All Pages','nestedpages'), 'publish_pages', esc_url(admin_url('admin.php?page=nestedpages')) );
98
- $this->additionalSubmenus();
99
-
100
- }
101
-
102
-
103
- /**
104
- * Add Additional Submenus
105
- * @since 1.1.8
106
- */
107
- public function additionalSubmenus()
108
- {
109
- global $submenu;
110
- // Get the right submenu and remove all pages link
111
- foreach($submenu as $key => $sub){
112
- if ($key == 'edit.php?post_type=' . $this->post_type->name){
113
- unset($sub['5']); // Remove "All Pages"
114
- $menu_items = $sub;
115
- }
116
- }
117
- if ( isset($menu_items) ){
118
- $c = 60;
119
- foreach($menu_items as $item){
120
- $submenu['nestedpages'][$c] = array( $item[0], $item[1], $item[2]);
121
- $c = $c + 10;
122
- }
123
- }
124
- // Default Pages
125
- if ( get_option('nestedpages_hidedefault') !== 'hide' ){
126
- $submenu['nestedpages'][$c] = array( __('Default Pages','nestedpages'), 'publish_pages', $this->defaultPagesLink() );
127
- }
128
- }
129
-
130
-
131
  /**
132
  * Add New Page Link
133
  * @return string
@@ -138,16 +98,6 @@ class NP_PageListing {
138
  }
139
 
140
 
141
- /**
142
- * Link to the default WP Pages listing
143
- * @return string
144
- */
145
- private function defaultPagesLink()
146
- {
147
- $link = esc_url( admin_url('edit.php?post_type=page') );
148
- return $link;
149
- }
150
-
151
  /**
152
  * User's Toggled Pages
153
  */
@@ -165,7 +115,7 @@ class NP_PageListing {
165
  */
166
  public function pageListing()
167
  {
168
- include( NP_Helpers::view('pages') );
169
  }
170
 
171
 
@@ -174,7 +124,7 @@ class NP_PageListing {
174
  */
175
  private function setTaxonomies()
176
  {
177
- $taxonomy_names = get_object_taxonomies( 'page' );
178
  $hierarchical_taxonomies = array();
179
  $flat_taxonomies = array();
180
  foreach ( $taxonomy_names as $taxonomy_name ) {
@@ -227,16 +177,6 @@ class NP_PageListing {
227
  return $out;
228
  }
229
 
230
- /**
231
- * Display Confirmation Message
232
- * @todo add styling to clear floats
233
- */
234
- private function confirmation()
235
- {
236
- $confirmation = new NP_Confirmation;
237
- return $confirmation->getMessage();
238
- }
239
-
240
 
241
  /**
242
  * Opening list tag <ol>
@@ -343,7 +283,7 @@ class NP_PageListing {
343
  'post_parent' => $parent_id,
344
  'order' => 'ASC'
345
  );
346
- $pages = new WP_Query(apply_filters('nestedpages_page_listing', $query_args));
347
 
348
  if ( $pages->have_posts() ) :
349
  $count++;
@@ -375,9 +315,9 @@ class NP_PageListing {
375
  $count++;
376
 
377
  if ( get_post_type() == 'page' ){
378
- include( NP_Helpers::view('row') );
379
  } else {
380
- include( NP_Helpers::view('row-redirect') );
381
  }
382
 
383
  endif; // trash status
1
+ <?php namespace NestedPages\Controllers;
2
+
3
+ use NestedPages\Helpers;
4
+ use NestedPages\Entities\Confirmation\ConfirmationFactory;
5
+ use NestedPages\Entities\Post\PostRepository;
6
+ use NestedPages\Entities\User\UserRepository;
7
+
8
  /**
9
+ * Primary Listing
10
  * Initiates Page Listing screen (overwriting default), and displays primary plugin view.
11
  */
12
+ class PageListingController {
13
 
14
  /**
15
  * Post Type
45
  private $post_repo;
46
 
47
 
48
+ /**
49
+ * Confirmation Factory
50
+ */
51
+ private $confirmation;
52
+
53
+
54
  /**
55
  * User Repository
56
  */
59
 
60
  public function __construct()
61
  {
62
+ $this->post_repo = new PostRepository;
63
+ $this->user = new UserRepository;
64
+ $this->confirmation = new ConfirmationFactory;
65
  $this->setPostType();
66
+
 
67
  }
68
 
69
 
70
  /**
71
+ * Called by Menu Class
72
+ * @since 1.2
73
  */
74
+ public static function admin_menu() {
75
+ $class_name = get_class();
76
+ $classinstance = new $class_name();
77
+ return array(&$classinstance, "pageListing");
 
 
 
 
 
 
 
 
 
78
  }
79
 
80
 
88
  }
89
 
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  /**
92
  * Add New Page Link
93
  * @return string
98
  }
99
 
100
 
 
 
 
 
 
 
 
 
 
 
101
  /**
102
  * User's Toggled Pages
103
  */
115
  */
116
  public function pageListing()
117
  {
118
+ include( Helpers::view('pages') );
119
  }
120
 
121
 
124
  */
125
  private function setTaxonomies()
126
  {
127
+ $taxonomy_names = get_object_taxonomies( $this->post_type->name );
128
  $hierarchical_taxonomies = array();
129
  $flat_taxonomies = array();
130
  foreach ( $taxonomy_names as $taxonomy_name ) {
177
  return $out;
178
  }
179
 
 
 
 
 
 
 
 
 
 
 
180
 
181
  /**
182
  * Opening list tag <ol>
283
  'post_parent' => $parent_id,
284
  'order' => 'ASC'
285
  );
286
+ $pages = new \WP_Query(apply_filters('nestedpages_page_listing', $query_args));
287
 
288
  if ( $pages->have_posts() ) :
289
  $count++;
315
  $count++;
316
 
317
  if ( get_post_type() == 'page' ){
318
+ include( Helpers::view('row') );
319
  } else {
320
+ include( Helpers::view('row-redirect') );
321
  }
322
 
323
  endif; // trash status
app/Entities/Confirmation/ConfirmationFactory.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Entities\Confirmation;
2
+
3
+ /**
4
+ * Confirmation Message
5
+ * @since 1.2
6
+ */
7
+ class ConfirmationFactory {
8
+
9
+ /**
10
+ * Message Output
11
+ * @var string
12
+ */
13
+ private $message;
14
+
15
+ /**
16
+ * Type of Message
17
+ * @var string
18
+ */
19
+ private $type;
20
+
21
+
22
+ public function __construct()
23
+ {
24
+ $this->build();
25
+ }
26
+
27
+
28
+ /**
29
+ * Set the Type of confirmation
30
+ */
31
+ private function build()
32
+ {
33
+ if ( (isset($_GET['trashed'])) && (intval($_GET['trashed']) > 0) ) $this->type = 'TrashConfirmation';
34
+ if ( (isset($_GET['untrashed'])) && (intval($_GET['untrashed']) > 0) ) $this->type = 'TrashRestoredConfirmation';
35
+ if ( (isset($_GET['linkdeleted'])) && (intval($_GET['linkdeleted']) > 0 ) ) $this->type = 'LinkDeletedConfirmation';
36
+ if ( $this->type ) $this->createClass();
37
+ }
38
+
39
+
40
+ /**
41
+ * Set the confirmation message
42
+ */
43
+ private function createClass()
44
+ {
45
+ $class = 'NestedPages\Entities\Confirmation\\' . $this->type;
46
+ $confirm = new $class;
47
+ $this->message = $confirm->setMessage();
48
+ }
49
+
50
+
51
+ /**
52
+ * Get the Message
53
+ */
54
+ public function getMessage()
55
+ {
56
+ return $this->message;
57
+ }
58
+
59
+ }
app/Entities/Confirmation/ConfirmationInterface.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Entities\Confirmation;
2
+
3
+ interface ConfirmationInterface {
4
+
5
+ /**
6
+ * Display the Confirmation Message
7
+ */
8
+ public function setMessage();
9
+
10
+ }
app/Entities/Confirmation/LinkDeletedConfirmation.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Entities\Confirmation;
2
+ /**
3
+ * Confirm Link has been deleted
4
+ */
5
+ class LinkDeletedConfirmation implements ConfirmationInterface {
6
+
7
+ public function setMessage()
8
+ {
9
+ $out = __('Link successfully deleted.', 'nestedpages');
10
+ return $out;
11
+ }
12
+
13
+ }
app/Entities/Confirmation/TrashConfirmation.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Entities\Confirmation;
2
+ /**
3
+ * Confirm page(s) moved to trash
4
+ */
5
+ class TrashConfirmation implements ConfirmationInterface {
6
+
7
+ public function setMessage()
8
+ {
9
+ $out = '';
10
+ $trashed = ( explode(',', $_GET['ids']) );
11
+ if ( count($trashed) > 1 ){
12
+ $out .= count($trashed) . ' ' . __('pages moved to the Trash', 'nestedpages');
13
+ } else {
14
+ $out .= '<strong>' . get_the_title($trashed[0]) . ' </strong>' . __('page moved to the Trash', 'nestedpages');
15
+
16
+ // Undo Link
17
+ if ( current_user_can('delete_pages') ) {
18
+ $page_obj = get_post_type_object('page');
19
+ $out .= ' <a href="' . wp_nonce_url( admin_url( sprintf( $page_obj->_edit_link . '&amp;action=untrash', $trashed[0] ) ), 'untrash-post_' . $trashed[0] ) . '">' . __( 'Undo' ) . "</a>";
20
+ }
21
+ }
22
+ return $out;
23
+ }
24
+
25
+ }
app/Entities/Confirmation/TrashRestoredConfirmation.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Entities\Confirmation;
2
+ /**
3
+ * Confirm page(s) restored from trash
4
+ */
5
+ class TrashRestoredConfirmation implements ConfirmationInterface {
6
+
7
+ public function setMessage()
8
+ {
9
+ $untrashed = sanitize_text_field($_GET['untrashed']);
10
+ $page = ( intval($untrashed) > 1 ) ? __('pages', 'nestedpages') : __('page', 'nestedpages');
11
+ $out = $untrashed . ' ' . $page . ' ' . __('restored from trash', 'nestedpages');
12
+ return $out;
13
+ }
14
+
15
+ }
includes/class-np-navmenu.php → app/Entities/NavMenu.php RENAMED
@@ -1,9 +1,11 @@
1
- <?php
2
- require_once('class-np-helpers.php');
 
 
3
  /**
4
  * The generated nav menu that matches the nested pages structure
5
  */
6
- class NP_NavMenu {
7
 
8
  /**
9
  * The Menu ID
@@ -51,6 +53,7 @@ class NP_NavMenu {
51
  }
52
  }
53
 
 
54
  /**
55
  * Create Empty Menu if one doesn't exist
56
  */
@@ -110,7 +113,7 @@ class NP_NavMenu {
110
  */
111
  public function sync($parent = 0, $menu_parent = 0)
112
  {
113
- $page_q = new WP_Query(array(
114
  'post_type' => array('page','np-redirect'),
115
  'posts_per_page' => -1,
116
  'post_status' => 'publish',
@@ -159,7 +162,7 @@ class NP_NavMenu {
159
  {
160
  $menu = wp_update_nav_menu_item($this->id, 0, array(
161
  'menu-item-title' => $this->post['nav_title'],
162
- 'menu-item-url' => NP_Helpers::check_url(get_the_content($this->post['ID'])),
163
  'menu-item-attr-title' => $this->post['title_attribute'],
164
  'menu-item-status' => 'publish',
165
  'menu-item-classes' => $this->post['css_classes'],
1
+ <?php namespace NestedPages\Entities;
2
+
3
+ use NestedPages\Helpers;
4
+
5
  /**
6
  * The generated nav menu that matches the nested pages structure
7
  */
8
+ class NavMenu {
9
 
10
  /**
11
  * The Menu ID
53
  }
54
  }
55
 
56
+
57
  /**
58
  * Create Empty Menu if one doesn't exist
59
  */
113
  */
114
  public function sync($parent = 0, $menu_parent = 0)
115
  {
116
+ $page_q = new \WP_Query(array(
117
  'post_type' => array('page','np-redirect'),
118
  'posts_per_page' => -1,
119
  'post_status' => 'publish',
162
  {
163
  $menu = wp_update_nav_menu_item($this->id, 0, array(
164
  'menu-item-title' => $this->post['nav_title'],
165
+ 'menu-item-url' => Helpers::check_url(get_the_content($this->post['ID'])),
166
  'menu-item-attr-title' => $this->post['title_attribute'],
167
  'menu-item-status' => 'publish',
168
  'menu-item-classes' => $this->post['css_classes'],
includes/class-np-posttypes.php → app/Entities/Post/PostActions.php RENAMED
@@ -1,45 +1,15 @@
1
- <?php
2
- require_once('class-np-navmenu.php');
3
  /**
4
- * Post Types required by Nested Pages
5
  */
6
- class NP_PostTypes {
7
 
8
  public function __construct()
9
  {
10
- add_action( 'init', array( $this, 'registerRedirects') );
11
  add_action( 'trashed_post', array( $this, 'trashHook' ) );
12
  }
13
 
14
-
15
- /**
16
- * Redirects Post Type
17
- */
18
- public function registerRedirects()
19
- {
20
- $labels = array(
21
- 'name' => __('Redirects', 'nestedpages'),
22
- 'singular_name' => __('Redirect', 'nestedpages'),
23
- 'add_new_item'=> 'Add Redirect',
24
- 'edit_item' => 'Edit Redirect',
25
- 'view_item' => 'View Redirect'
26
- );
27
- $args = array(
28
- 'labels' => $labels,
29
- 'public' => false,
30
- 'show_ui' => false,
31
- 'menu_position' => 5,
32
- 'capability_type' => 'post',
33
- 'hierarchical' => true,
34
- 'has_archive' => true,
35
- 'supports' => array('title','editor'),
36
- 'rewrite' => array('slug' => 'np-redirect', 'with_front' => false)
37
- );
38
- register_post_type( 'np-redirect' , $args );
39
- }
40
-
41
-
42
-
43
  /**
44
  * Trash hook - make sure child pages of trashed page are visible
45
  */
@@ -57,7 +27,7 @@ class NP_PostTypes {
57
  {
58
  $visible_pages = unserialize(get_user_meta(get_current_user_id(), 'np_visible_pages', true));
59
  $child_pages = array();
60
- $children = new WP_Query(array('post_type'=>'page', 'posts_per_page'=>-1, 'post_parent'=>$post_id));
61
  if ( $children->have_posts() ) : while ( $children->have_posts() ) : $children->the_post();
62
  array_push($child_pages, get_the_id());
63
  endwhile; endif; wp_reset_postdata();
1
+ <?php namespace NestedPages\Entities\Post;
 
2
  /**
3
+ * WP Actions tied to a Post
4
  */
5
+ class PostActions {
6
 
7
  public function __construct()
8
  {
 
9
  add_action( 'trashed_post', array( $this, 'trashHook' ) );
10
  }
11
 
12
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * Trash hook - make sure child pages of trashed page are visible
15
  */
27
  {
28
  $visible_pages = unserialize(get_user_meta(get_current_user_id(), 'np_visible_pages', true));
29
  $child_pages = array();
30
+ $children = new \WP_Query(array('post_type'=>'page', 'posts_per_page'=>-1, 'post_parent'=>$post_id));
31
  if ( $children->have_posts() ) : while ( $children->have_posts() ) : $children->the_post();
32
  array_push($child_pages, get_the_id());
33
  endwhile; endif; wp_reset_postdata();
includes/class-np-factory-post.php → app/Entities/Post/PostFactory.php RENAMED
@@ -1,10 +1,11 @@
1
- <?php
2
- require_once('class-np-repository-post.php');
3
- require_once('class-np-validation.php');
 
4
  /**
5
  * Factory class for adding new posts
6
  */
7
- class NP_PostFactory {
8
 
9
  /**
10
  * Post Repository
@@ -21,7 +22,7 @@ class NP_PostFactory {
21
 
22
  public function __construct()
23
  {
24
- $this->repo = new NP_PostRepository;
25
  }
26
 
27
 
1
+ <?php namespace NestedPages\Entities\Post;
2
+
3
+ use NestedPages\Entities\Post\PostRepository;
4
+
5
  /**
6
  * Factory class for adding new posts
7
  */
8
+ class PostFactory {
9
 
10
  /**
11
  * Post Repository
22
 
23
  public function __construct()
24
  {
25
+ $this->repo = new PostRepository;
26
  }
27
 
28
 
includes/class-np-repository-post.php → app/Entities/Post/PostRepository.php RENAMED
@@ -1,8 +1,8 @@
1
- <?php
2
 
3
- require_once('class-np-validation.php');
4
 
5
- class NP_PostRepository {
6
 
7
  /**
8
  * Validation Class
@@ -19,7 +19,7 @@ class NP_PostRepository {
19
 
20
  public function __construct()
21
  {
22
- $this->validation = new NP_Validation;
23
  }
24
 
25
 
@@ -303,7 +303,7 @@ class NP_PostRepository {
303
  'post_content' => sanitize_text_field($data['post_content']),
304
  'post_parent' => sanitize_text_field($data['parent_id'])
305
  );
306
- wp_update_post($updated_post);
307
 
308
  $this->updateNavStatus($data);
309
  $this->updateNestedPagesStatus($data);
@@ -311,7 +311,7 @@ class NP_PostRepository {
311
  $this->updateTitleAttribute($data);
312
  $this->updateNavCSS($data);
313
 
314
- return true;
315
  }
316
 
317
 
@@ -345,7 +345,7 @@ class NP_PostRepository {
345
  */
346
  public function getHiddenCount()
347
  {
348
- $hidden = new WP_Query(array(
349
  'post_type' => array('page', 'np-redirect'),
350
  'meta_key' => 'nested_pages_status',
351
  'meta_value' => 'hide',
@@ -360,7 +360,7 @@ class NP_PostRepository {
360
  */
361
  public function trashedPagesCount()
362
  {
363
- $trashed = new WP_Query(array('post_type'=>'page','post_status'=>'trash','posts_per_page'=>-1));
364
  return $trashed->found_posts;
365
  }
366
 
@@ -388,7 +388,7 @@ class NP_PostRepository {
388
  public function pageArray($ids)
389
  {
390
  $pages = array();
391
- $page_query = new WP_Query(array(
392
  'post_type' => 'page',
393
  'posts_per_page' => -1,
394
  'post__in' => $ids,
1
+ <?php namespace NestedPages\Entities\Post;
2
 
3
+ use NestedPages\Form\Validation\Validation;
4
 
5
+ class PostRepository {
6
 
7
  /**
8
  * Validation Class
19
 
20
  public function __construct()
21
  {
22
+ $this->validation = new Validation;
23
  }
24
 
25
 
303
  'post_content' => sanitize_text_field($data['post_content']),
304
  'post_parent' => sanitize_text_field($data['parent_id'])
305
  );
306
+ $this->new_id = wp_update_post($updated_post);
307
 
308
  $this->updateNavStatus($data);
309
  $this->updateNestedPagesStatus($data);
311
  $this->updateTitleAttribute($data);
312
  $this->updateNavCSS($data);
313
 
314
+ return $this->new_id;
315
  }
316
 
317
 
345
  */
346
  public function getHiddenCount()
347
  {
348
+ $hidden = new \WP_Query(array(
349
  'post_type' => array('page', 'np-redirect'),
350
  'meta_key' => 'nested_pages_status',
351
  'meta_value' => 'hide',
360
  */
361
  public function trashedPagesCount()
362
  {
363
+ $trashed = new \WP_Query(array('post_type'=>'page','post_status'=>'trash','posts_per_page'=>-1));
364
  return $trashed->found_posts;
365
  }
366
 
388
  public function pageArray($ids)
389
  {
390
  $pages = array();
391
+ $page_query = new \WP_Query(array(
392
  'post_type' => 'page',
393
  'posts_per_page' => -1,
394
  'post__in' => $ids,
app/Entities/PostType/PostTypeRepository.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Entities\PostType;
2
+
3
+ class PostTypeRepository {
4
+
5
+
6
+ /**
7
+ * Get Available Post Types
8
+ * @return array
9
+ */
10
+ public function getPostTypes($return = 'names')
11
+ {
12
+ $args = array(
13
+ 'public' => true,
14
+ 'show_ui' => true,
15
+ 'hierarchical' => true
16
+ );
17
+ return get_post_types($args, $return);
18
+ }
19
+
20
+
21
+ /**
22
+ * Get an array of post types in name=>label format
23
+ */
24
+ public function getPostTypeArray($pages = false)
25
+ {
26
+ $all_types = $this->getPostTypes('objects');
27
+ $post_types = array();
28
+ foreach($all_types as $key => $type){
29
+ if ( (!$pages) && ($key == 'page') ) continue;
30
+ $post_types[$key] = $type->labels->name;
31
+ }
32
+ return $post_types;
33
+ }
34
+
35
+ }
app/Entities/PostType/RegisterPostTypes.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Entities\PostType;
2
+
3
+ /**
4
+ * Post Types required by Nested Pages
5
+ */
6
+ class RegisterPostTypes {
7
+
8
+ public function __construct()
9
+ {
10
+ add_action( 'init', array( $this, 'registerRedirects') );
11
+ }
12
+
13
+
14
+ /**
15
+ * Redirects Post Type
16
+ */
17
+ public function registerRedirects()
18
+ {
19
+ $labels = array(
20
+ 'name' => __('Redirects', 'nestedpages'),
21
+ 'singular_name' => __('Redirect', 'nestedpages'),
22
+ 'add_new_item'=> 'Add Redirect',
23
+ 'edit_item' => 'Edit Redirect',
24
+ 'view_item' => 'View Redirect'
25
+ );
26
+ $args = array(
27
+ 'labels' => $labels,
28
+ 'public' => false,
29
+ 'show_ui' => false,
30
+ 'menu_position' => 5,
31
+ 'capability_type' => 'post',
32
+ 'hierarchical' => true,
33
+ 'has_archive' => true,
34
+ 'supports' => array('title','editor'),
35
+ 'rewrite' => array('slug' => 'np-redirect', 'with_front' => false)
36
+ );
37
+ register_post_type( 'np-redirect' , $args );
38
+ }
39
+
40
+ }
includes/class-np-repository-user.php → app/Entities/User/UserRepository.php RENAMED
@@ -1,10 +1,9 @@
1
- <?php
2
  /**
3
  * User Repository
4
  * @since 1.1.7
5
  */
6
- class NP_UserRepository {
7
-
8
 
9
  /**
10
  * Return Current User's Roles
1
+ <?php namespace NestedPages\Entities\User;
2
  /**
3
  * User Repository
4
  * @since 1.1.7
5
  */
6
+ class UserRepository {
 
7
 
8
  /**
9
  * Return Current User's Roles
app/Form/FormActionFactory.php ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php namespace NestedPages\Form;
2
+
3
+ /**
4
+ * Registers the WP Actions/Handlers
5
+ */
6
+ class FormActionFactory {
7
+
8
+ /**
9
+ * Actions
10
+ * @var array
11
+ */
12
+ private $actions;
13
+
14
+ /**
15
+ * Handler Class
16
+ * @var stdClass obj
17
+ */
18
+ private $handlers;
19
+
20
+
21
+ public function __construct()
22
+ {
23
+ $this->setActions();
24
+ }
25
+
26
+ /**
27
+ * Set the Form Actions
28
+ */
29
+ public function setActions()
30
+ {
31
+ $this->actions = array(
32
+ 'wp_ajax_npsort',
33
+ 'wp_ajax_npquickEdit',
34
+ 'wp_ajax_npsyncMenu',
35
+ 'wp_ajax_npnestToggle',
36
+ 'wp_ajax_npquickEditLink',
37
+ 'wp_ajax_npnewLink',
38
+ 'wp_ajax_npgetTaxonomies',
39
+ 'wp_ajax_npnewChild'
40
+ );
41
+ $this->setHandlers();
42
+ }
43
+
44
+ /**
45
+ * Set the Handlers Object
46
+ */
47
+ public function setHandlers()
48
+ {
49
+ foreach($this->actions as $key => $action){
50
+ $class = ucfirst(str_replace('wp_ajax_np', '', $action)) . 'Handler';
51
+ $this->handlers[$key] = new \stdClass();
52
+ $this->handlers[$key]->action = $action;
53
+ $this->handlers[$key]->class = 'NestedPages\Form\Handlers\\' . $class;
54
+ }
55
+ $this->build();
56
+ }
57
+
58
+ /**
59
+ * Register the WP Actions
60
+ */
61
+ public function build()
62
+ {
63
+ foreach($this->handlers as $handler){
64
+ add_action($handler->action, function() use ($handler) {
65
+ new $handler->class;
66
+ });
67
+ }
68
+ }
69
+
70
+ }
includes/class-np-handler-base.php → app/Form/Handlers/BaseHandler.php RENAMED
@@ -1,12 +1,12 @@
1
- <?php
2
 
3
- require_once('class-np-navmenu.php');
4
- require_once('class-np-repository-post.php');
5
 
6
  /**
7
  * Base Form Handler Class
8
  */
9
- abstract class NP_BaseHandler {
10
 
11
  /**
12
  * Nonce
@@ -26,16 +26,16 @@ abstract class NP_BaseHandler {
26
  */
27
  protected $post_repo;
28
 
29
-
30
  /**
31
  * Response
32
  * @var array;
33
  */
34
  protected $response;
35
 
 
36
  public function __construct()
37
  {
38
- $this->post_repo = new NP_PostRepository;
39
  $this->setData();
40
  $this->validateNonce();
41
  }
@@ -74,7 +74,7 @@ abstract class NP_BaseHandler {
74
  protected function syncMenu()
75
  {
76
  if ( $_POST['syncmenu'] == 'sync' ){
77
- $menu = new NP_NavMenu;
78
  $menu->clearMenu();
79
  $menu->sync();
80
  update_option('nestedpages_menusync', 'sync');
1
+ <?php namespace NestedPages\Form\Handlers;
2
 
3
+ use NestedPages\Entities\NavMenu;
4
+ use NestedPages\Entities\Post\PostRepository;
5
 
6
  /**
7
  * Base Form Handler Class
8
  */
9
+ abstract class BaseHandler {
10
 
11
  /**
12
  * Nonce
26
  */
27
  protected $post_repo;
28
 
 
29
  /**
30
  * Response
31
  * @var array;
32
  */
33
  protected $response;
34
 
35
+
36
  public function __construct()
37
  {
38
+ $this->post_repo = new PostRepository;
39
  $this->setData();
40
  $this->validateNonce();
41
  }
74
  protected function syncMenu()
75
  {
76
  if ( $_POST['syncmenu'] == 'sync' ){
77
+ $menu = new NavMenu;
78
  $menu->clearMenu();
79
  $menu->sync();
80
  update_option('nestedpages_menusync', 'sync');
includes/class-np-handler-gettax.php → app/Form/Handlers/GetTaxonomiesHandler.php RENAMED
@@ -1,17 +1,10 @@
1
- <?php
2
- function nestedpages_get_tax()
3
- {
4
- new NP_GetTax;
5
- }
6
-
7
- require_once('class-np-handler-base.php');
8
- require_once('class-np-helpers.php');
9
 
10
  /**
11
  * Gets term names
12
  * @return json response
13
  */
14
- class NP_GetTax extends NP_BaseHandler {
15
 
16
  /**
17
  * Terms to return
@@ -54,6 +47,7 @@ class NP_GetTax extends NP_BaseHandler {
54
  }
55
  }
56
 
 
57
  /**
58
  * Prepare Response
59
  */
1
+ <?php namespace NestedPages\Form\Handlers;
 
 
 
 
 
 
 
2
 
3
  /**
4
  * Gets term names
5
  * @return json response
6
  */
7
+ class GetTaxonomiesHandler extends BaseHandler {
8
 
9
  /**
10
  * Terms to return
47
  }
48
  }
49
 
50
+
51
  /**
52
  * Prepare Response
53
  */
includes/class-np-handler-nesttoggle.php → app/Form/Handlers/NestToggleHandler.php RENAMED
@@ -1,13 +1,9 @@
1
- <?php
2
- function nestedpages_nesttoggle_handler()
3
- {
4
- new NP_NestToggle_Handler;
5
- }
6
- require_once('class-np-handler-base.php');
7
  /**
8
  * Syncs User's Visible/Toggled Pages
9
  */
10
- class NP_NestToggle_Handler extends NP_BaseHandler {
 
11
 
12
  public function __construct()
13
  {
@@ -15,6 +11,7 @@ class NP_NestToggle_Handler extends NP_BaseHandler {
15
  $this->updateUserMeta();
16
  }
17
 
 
18
  /**
19
  * Make sure this is an array of integers
20
  */
@@ -26,6 +23,7 @@ class NP_NestToggle_Handler extends NP_BaseHandler {
26
  }
27
  }
28
 
 
29
  /**
30
  * Update the user meta with the array of IDs
31
  */
1
+ <?php namespace NestedPages\Form\Handlers;
 
 
 
 
 
2
  /**
3
  * Syncs User's Visible/Toggled Pages
4
  */
5
+ class NestToggleHandler extends BaseHandler {
6
+
7
 
8
  public function __construct()
9
  {
11
  $this->updateUserMeta();
12
  }
13
 
14
+
15
  /**
16
  * Make sure this is an array of integers
17
  */
23
  }
24
  }
25
 
26
+
27
  /**
28
  * Update the user meta with the array of IDs
29
  */
includes/class-np-handler-newchild.php → app/Form/Handlers/NewChildHandler.php RENAMED
@@ -1,19 +1,13 @@
1
- <?php
2
 
3
- function nestedpages_newchild_handler()
4
- {
5
- new NP_NewChild_Handler;
6
- }
7
-
8
- require_once('class-np-handler-base.php');
9
- require_once('class-np-validation.php');
10
- require_once('class-np-factory-post.php');
11
 
12
  /**
13
  * Handles processing the quick edit form
14
  * @return json response
15
  */
16
- class NP_NewChild_Handler extends NP_BaseHandler {
17
 
18
  /**
19
  * Post Factory
@@ -29,8 +23,8 @@ class NP_NewChild_Handler extends NP_BaseHandler {
29
  public function __construct()
30
  {
31
  parent::__construct();
32
- $this->factory = new NP_PostFactory;
33
- $this->validation = new NP_Validation;
34
  $this->savePages();
35
  $this->syncMenu();
36
  $this->sendResponse();
1
+ <?php namespace NestedPages\Form\Handlers;
2
 
3
+ use NestedPages\Form\Validation\Validation;
4
+ use NestedPages\Entities\Post\PostFactory;
 
 
 
 
 
 
5
 
6
  /**
7
  * Handles processing the quick edit form
8
  * @return json response
9
  */
10
+ class NewChildHandler extends BaseHandler {
11
 
12
  /**
13
  * Post Factory
23
  public function __construct()
24
  {
25
  parent::__construct();
26
+ $this->factory = new PostFactory;
27
+ $this->validation = new Validation;
28
  $this->savePages();
29
  $this->syncMenu();
30
  $this->sendResponse();
includes/class-np-handler-newredirect.php → app/Form/Handlers/NewLinkHandler.php RENAMED
@@ -1,18 +1,11 @@
1
- <?php
2
-
3
- function nestedpages_new_redirect()
4
- {
5
- new NP_NewRedirect;
6
- }
7
-
8
- require_once('class-np-handler-base.php');
9
- require_once('class-np-helpers.php');
10
 
 
11
  /**
12
  * Creates new Redirect/Link
13
  * @return json response
14
  */
15
- class NP_NewRedirect extends NP_BaseHandler {
16
 
17
 
18
  public function __construct()
@@ -48,7 +41,7 @@ class NP_NewRedirect extends NP_BaseHandler {
48
  */
49
  private function formatLink()
50
  {
51
- $this->data['np_link_content'] = NP_Helpers::check_url($this->data['np_link_content']);
52
  }
53
 
54
 
@@ -57,6 +50,7 @@ class NP_NewRedirect extends NP_BaseHandler {
57
  */
58
  private function addData()
59
  {
 
60
  $this->data['nav_status'] = ( isset($this->data['nav_status']) ) ? 'hide' : 'show';
61
  $this->data['np_status'] = ( isset($this->data['nested_pages_status']) ) ? 'hide' : 'show';
62
  $this->data['link_target'] = ( isset($this->data['link_target']) ) ? '_blank' : 'none';
1
+ <?php namespace NestedPages\Form\Handlers;
 
 
 
 
 
 
 
 
2
 
3
+ use NestedPages\Helpers;
4
  /**
5
  * Creates new Redirect/Link
6
  * @return json response
7
  */
8
+ class NewLinkHandler extends BaseHandler {
9
 
10
 
11
  public function __construct()
41
  */
42
  private function formatLink()
43
  {
44
+ $this->data['np_link_content'] = Helpers::check_url($this->data['np_link_content']);
45
  }
46
 
47
 
50
  */
51
  private function addData()
52
  {
53
+ $this->data['delete_link'] = get_delete_post_link($this->data['id'],'', true);
54
  $this->data['nav_status'] = ( isset($this->data['nav_status']) ) ? 'hide' : 'show';
55
  $this->data['np_status'] = ( isset($this->data['nested_pages_status']) ) ? 'hide' : 'show';
56
  $this->data['link_target'] = ( isset($this->data['link_target']) ) ? '_blank' : 'none';
includes/class-np-handler-quickedit.php → app/Form/Handlers/QuickEditHandler.php RENAMED
@@ -1,17 +1,10 @@
1
- <?php
2
-
3
- function nestedpages_quickedit_handler()
4
- {
5
- new NP_QuickEdit_Handler;
6
- }
7
-
8
- require_once('class-np-handler-base.php');
9
 
10
  /**
11
  * Handles processing the quick edit form
12
  * @return json response
13
  */
14
- class NP_QuickEdit_Handler extends NP_BaseHandler {
15
 
16
 
17
  public function __construct()
1
+ <?php namespace NestedPages\Form\Handlers;
 
 
 
 
 
 
 
2
 
3
  /**
4
  * Handles processing the quick edit form
5
  * @return json response
6
  */
7
+ class QuickEditHandler extends BaseHandler {
8
 
9
 
10
  public function __construct()
includes/class-np-handler-quickedit-redirect.php → app/Form/Handlers/QuickEditLinkHandler.php RENAMED
@@ -1,17 +1,9 @@
1
- <?php
2
-
3
- function nestedpages_quickedit_redirect_handler()
4
- {
5
- new NP_QuickEdit_Handler_Redirect;
6
- }
7
-
8
- require_once('class-np-handler-base.php');
9
-
10
  /**
11
  * Handles processing the quick edit form for redirects
12
  * @return json response
13
  */
14
- class NP_QuickEdit_Handler_Redirect extends NP_BaseHandler {
15
 
16
 
17
  public function __construct()
1
+ <?php namespace NestedPages\Form\Handlers;
 
 
 
 
 
 
 
 
2
  /**
3
  * Handles processing the quick edit form for redirects
4
  * @return json response
5
  */
6
+ class QuickEditLinkHandler extends BaseHandler {
7
 
8
 
9
  public function __construct()
includes/class-np-handler-sort.php → app/Form/Handlers/SortHandler.php RENAMED
@@ -1,19 +1,11 @@
1
- <?php
2
-
3
- function nestedpages_sort_handler()
4
- {
5
- new NP_SortHandler;
6
- }
7
 
8
  /**
9
  * Handles processing sortable pages
10
  * updates menu order & page parents
11
  * @return json response
12
  */
13
- require_once('class-np-handler-base.php');
14
- require_once('class-np-navmenu.php');
15
-
16
- class NP_SortHandler extends NP_BaseHandler {
17
 
18
 
19
  public function __construct()
1
+ <?php namespace NestedPages\Form\Handlers;
 
 
 
 
 
2
 
3
  /**
4
  * Handles processing sortable pages
5
  * updates menu order & page parents
6
  * @return json response
7
  */
8
+ class SortHandler extends BaseHandler {
 
 
 
9
 
10
 
11
  public function __construct()
includes/class-np-handler-syncmenu.php → app/Form/Handlers/SyncMenuHandler.php RENAMED
@@ -1,17 +1,10 @@
1
- <?php
2
-
3
- function nestedpages_syncmenu_handler()
4
- {
5
- new NP_SyncMenu_Handler;
6
- }
7
-
8
- require_once('class-np-handler-base.php');
9
 
10
  /**
11
  * Turn on/off menu sync
12
  * @return json response
13
  */
14
- class NP_SyncMenu_Handler extends NP_BaseHandler {
15
 
16
  public function __construct()
17
  {
1
+ <?php namespace NestedPages\Form\Handlers;
 
 
 
 
 
 
 
2
 
3
  /**
4
  * Turn on/off menu sync
5
  * @return json response
6
  */
7
+ class SyncMenuHandler extends BaseHandler {
8
 
9
  public function __construct()
10
  {
includes/class-np-validation.php → app/Form/Validation/Validation.php RENAMED
@@ -1,10 +1,8 @@
1
- <?php
2
-
3
  /**
4
  * Nested Pages Form Validation
5
  */
6
- class NP_Validation {
7
-
8
 
9
  /**
10
  * Validate Post IDs in an array of posts
@@ -19,6 +17,7 @@ class NP_Validation {
19
  }
20
  }
21
 
 
22
  /**
23
  * Validate IDs in an array (tax ids)
24
  */
1
+ <?php namespace NestedPages\Form\Validation;
 
2
  /**
3
  * Nested Pages Form Validation
4
  */
5
+ class Validation {
 
6
 
7
  /**
8
  * Validate Post IDs in an array of posts
17
  }
18
  }
19
 
20
+
21
  /**
22
  * Validate IDs in an array (tax ids)
23
  */
includes/class-np-helpers.php → app/Helpers.php RENAMED
@@ -1,8 +1,8 @@
1
- <?php
2
  /**
3
  * Helper Functions
4
  */
5
- class NP_Helpers {
6
 
7
  /**
8
  * Verify URL Format
@@ -16,6 +16,7 @@ class NP_Helpers {
16
  return $url;
17
  }
18
 
 
19
  /**
20
  * Plugin Root Directory
21
  */
@@ -24,12 +25,25 @@ class NP_Helpers {
24
  return plugins_url() . '/wp-simple-locator';
25
  }
26
 
 
27
  /**
28
  * View
29
  */
30
  public static function view($file)
31
  {
32
- return dirname(dirname(__FILE__)) . '/views/' . $file . '.php';
 
 
 
 
 
 
 
 
 
 
 
 
33
  }
34
 
35
  }
1
+ <?php namespace NestedPages;
2
  /**
3
  * Helper Functions
4
  */
5
+ class Helpers {
6
 
7
  /**
8
  * Verify URL Format
16
  return $url;
17
  }
18
 
19
+
20
  /**
21
  * Plugin Root Directory
22
  */
25
  return plugins_url() . '/wp-simple-locator';
26
  }
27
 
28
+
29
  /**
30
  * View
31
  */
32
  public static function view($file)
33
  {
34
+ return dirname(__FILE__) . '/Views/' . $file . '.php';
35
+ }
36
+
37
+
38
+ /**
39
+ * Link to the default WP Pages listing
40
+ * @since 1.2
41
+ * @return string
42
+ */
43
+ public static function defaultPagesLink()
44
+ {
45
+ $link = esc_url( admin_url('edit.php?post_type=page') );
46
+ return $link;
47
  }
48
 
49
  }
app/NestedPages.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Static Wrapper for Bootstrap Class
4
+ * Prevents T_STRING error when checking for 5.3.2
5
+ */
6
+ class NestedPages {
7
+
8
+ public static function init()
9
+ {
10
+ // dev/live
11
+ global $np_env;
12
+ $np_env = 'live';
13
+
14
+ global $np_version;
15
+ $np_version = '1.2.0';
16
+
17
+ $app = new NestedPages\Bootstrap;
18
+ }
19
+ }
includes/class-np-redirects.php → app/Redirects.php RENAMED
@@ -1,8 +1,8 @@
1
- <?php
2
  /**
3
- * Redirects in admin
4
  */
5
- class NP_Redirects {
6
 
7
 
8
  public function __construct()
@@ -28,6 +28,7 @@ class NP_Redirects {
28
  }
29
  }
30
 
 
31
  /**
32
  * Redirect to nested pages after page moved out of trash
33
  */
1
+ <?php namespace NestedPages;
2
  /**
3
+ * Page Redirects in admin
4
  */
5
+ class Redirects {
6
 
7
 
8
  public function __construct()
28
  }
29
  }
30
 
31
+
32
  /**
33
  * Redirect to nested pages after page moved out of trash
34
  */
{views → app/Views}/link-form.php RENAMED
File without changes
{views → app/Views}/new-child.php RENAMED
File without changes
{views → app/Views}/pages.php RENAMED
@@ -12,14 +12,16 @@
12
  <?php endif; ?>
13
  </h2>
14
 
15
- <?php if ( $this->confirmation() ) echo $this->confirmation() . '<div style="clear:both;"></div>'; ?>
 
 
16
 
17
- <ul class="nestedpages-toggleall" <?php if ( $this->confirmation() ) echo 'style="margin-top:0"';?>>
18
  <li><a href="#" class="np-btn" data-toggle="closed"><?php _e('Expand Pages', 'nestedpages'); ?></a></li>
19
  </ul>
20
 
21
  <?php if ( current_user_can('edit_theme_options') ) : ?>
22
- <div class="np-sync-menu-cont" <?php if ( $this->confirmation() ) echo 'style="margin-top:2px;"';?>>
23
  <label>
24
  <input type="checkbox" name="np_sync_menu" class="np-sync-menu" value="sync" <?php if ( get_option('nestedpages_menusync') == 'sync' ) echo 'checked'; ?>/> <?php _e('Sync Menu', 'nestedpages'); ?>
25
  </label>
@@ -40,7 +42,7 @@
40
  <span class="count">(<?php echo $this->post_repo->trashedPagesCount(); ?>)</span></li>
41
  <?php endif; ?>
42
  <?php if ( get_option('nestedpages_hidedefault') !== 'hide' ) : ?>
43
- <li> | <a href="<?php echo $this->defaultPagesLink(); ?>"><?php _e('Default'); ?> <?php _e($this->post_type->labels->name); ?></a></li>
44
  <?php endif; ?>
45
  </ul>
46
 
@@ -53,20 +55,20 @@
53
  <?php $this->loopPages(); ?>
54
 
55
  <div class="quick-edit quick-edit-form np-inline-modal" style="display:none;">
56
- <?php include( NP_Helpers::view('quickedit') ); ?>
57
  </div>
58
 
59
  <?php if ( current_user_can('publish_pages') ) : ?>
60
  <div class="quick-edit quick-edit-form-redirect np-inline-modal" style="display:none;">
61
- <?php include( NP_Helpers::view('quickedit-redirect') ); ?>
62
  </div>
63
 
64
  <div class="new-child new-child-form np-inline-modal" style="display:none;">
65
- <?php include( NP_Helpers::view('new-child') ); ?>
66
  </div>
67
  <?php endif; ?>
68
  </div>
69
 
70
  </div><!-- .wrap -->
71
 
72
- <?php include( NP_Helpers::view('link-form') ); ?>
12
  <?php endif; ?>
13
  </h2>
14
 
15
+ <?php if ( $this->confirmation->getMessage() ) : ?>
16
+ <div id="message" class="updated below-h2"><p><?php echo $this->confirmation->getMessage(); ?></p></div>
17
+ <?php endif; ?>
18
 
19
+ <ul class="nestedpages-toggleall" <?php if ( $this->confirmation->getMessage() ) echo 'style="margin-top:0"';?>>
20
  <li><a href="#" class="np-btn" data-toggle="closed"><?php _e('Expand Pages', 'nestedpages'); ?></a></li>
21
  </ul>
22
 
23
  <?php if ( current_user_can('edit_theme_options') ) : ?>
24
+ <div class="np-sync-menu-cont" <?php if ( $this->confirmation->getMessage() ) echo 'style="margin-top:2px;"';?>>
25
  <label>
26
  <input type="checkbox" name="np_sync_menu" class="np-sync-menu" value="sync" <?php if ( get_option('nestedpages_menusync') == 'sync' ) echo 'checked'; ?>/> <?php _e('Sync Menu', 'nestedpages'); ?>
27
  </label>
42
  <span class="count">(<?php echo $this->post_repo->trashedPagesCount(); ?>)</span></li>
43
  <?php endif; ?>
44
  <?php if ( get_option('nestedpages_hidedefault') !== 'hide' ) : ?>
45
+ <li> | <a href="<?php echo NestedPages\Helpers::defaultPagesLink(); ?>"><?php _e('Default'); ?> <?php _e($this->post_type->labels->name); ?></a></li>
46
  <?php endif; ?>
47
  </ul>
48
 
55
  <?php $this->loopPages(); ?>
56
 
57
  <div class="quick-edit quick-edit-form np-inline-modal" style="display:none;">
58
+ <?php include( NestedPages\Helpers::view('quickedit') ); ?>
59
  </div>
60
 
61
  <?php if ( current_user_can('publish_pages') ) : ?>
62
  <div class="quick-edit quick-edit-form-redirect np-inline-modal" style="display:none;">
63
+ <?php include( NestedPages\Helpers::view('quickedit-redirect') ); ?>
64
  </div>
65
 
66
  <div class="new-child new-child-form np-inline-modal" style="display:none;">
67
+ <?php include( NestedPages\Helpers::view('new-child') ); ?>
68
  </div>
69
  <?php endif; ?>
70
  </div>
71
 
72
  </div><!-- .wrap -->
73
 
74
+ <?php include( NestedPages\Helpers::view('link-form') ); ?>
{views → app/Views}/quickedit-redirect.php RENAMED
File without changes
{views → app/Views}/quickedit.php RENAMED
@@ -108,7 +108,7 @@
108
  <?php endif; // Edit theme options?>
109
 
110
 
111
- <?php if ( $this->user->canSortPages() ) : // Menu Options Button ?>
112
  <div class="form-control np-toggle-options">
113
  <a href="#" class="np-btn np-btn-half np-toggle-menuoptions"><?php _e('Menu Options', 'nestedpages'); ?></a>
114
  <?php if ( !empty($this->h_taxonomies) ) : ?>
@@ -141,7 +141,7 @@
141
  <?php endif; // if taxonomies ?>
142
 
143
 
144
- <?php if ( $this->user->canSortPages() ) : // Menu Options?>
145
  <div class="np-menuoptions">
146
  <div class="menuoptions-left">
147
  <div class="form-control">
108
  <?php endif; // Edit theme options?>
109
 
110
 
111
+ <?php if ( $this->user->canSortPages() ) : ?>
112
  <div class="form-control np-toggle-options">
113
  <a href="#" class="np-btn np-btn-half np-toggle-menuoptions"><?php _e('Menu Options', 'nestedpages'); ?></a>
114
  <?php if ( !empty($this->h_taxonomies) ) : ?>
141
  <?php endif; // if taxonomies ?>
142
 
143
 
144
+ <?php if ( $this->user->canSortPages() ) : ?>
145
  <div class="np-menuoptions">
146
  <div class="menuoptions-left">
147
  <div class="form-control">
{views → app/Views}/row-redirect.php RENAMED
@@ -10,7 +10,7 @@
10
  <?php if ( current_user_can('edit_theme_options') ) : ?>
11
  <i class="handle np-icon-menu"></i>
12
  <?php endif; ?>
13
- <a href="<?php echo NP_Helpers::check_url(get_the_content()); ?>" class="page-link page-title" target="_blank">
14
  <span class="title"><?php the_title(); ?> <i class="np-icon-link"></i></span>
15
  <?php
16
 
@@ -43,7 +43,7 @@
43
  data-id="<?php echo get_the_id(); ?>"
44
  data-parentid="<?php echo $this->post_data['parent_id']; ?>"
45
  data-title="<?php the_title(); ?>"
46
- data-url="<?php echo NP_Helpers::check_url(get_the_content()); ?>"
47
  data-status="<?php echo get_post_status(); ?>"
48
  data-np-status="<?php echo $this->post_data['np_status']; ?>"
49
  data-navstatus="<?php echo $this->post_data['nav_status']; ?>"
10
  <?php if ( current_user_can('edit_theme_options') ) : ?>
11
  <i class="handle np-icon-menu"></i>
12
  <?php endif; ?>
13
+ <a href="<?php echo NestedPages\Helpers::check_url(get_the_content()); ?>" class="page-link page-title" target="_blank">
14
  <span class="title"><?php the_title(); ?> <i class="np-icon-link"></i></span>
15
  <?php
16
 
43
  data-id="<?php echo get_the_id(); ?>"
44
  data-parentid="<?php echo $this->post_data['parent_id']; ?>"
45
  data-title="<?php the_title(); ?>"
46
+ data-url="<?php echo NestedPages\Helpers::check_url(get_the_content()); ?>"
47
  data-status="<?php echo get_post_status(); ?>"
48
  data-np-status="<?php echo $this->post_data['np_status']; ?>"
49
  data-navstatus="<?php echo $this->post_data['nav_status']; ?>"
{views → app/Views}/row.php RENAMED
File without changes
app/Views/settings-general.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $allowsorting = get_option('nestedpages_allowsorting', array());
3
+ if ( $allowsorting == "" ) $allowsorting = array();
4
+
5
+ settings_fields( 'nestedpages-general' );
6
+ ?>
7
+
8
+ <tr valign="top">
9
+ <th scope="row"><?php _e('Nested Pages Version', 'nestedpages'); ?></th>
10
+ <td><strong><?php echo get_option('nestedpages_version'); ?></strong></td>
11
+ </tr>
12
+ <tr valign="top">
13
+ <th scope="row"><?php _e('Menu Name', 'nestedpages'); ?></th>
14
+ <td>
15
+ <input type="text" name="nestedpages_menu" id="nestedpages_menu" value="<?php echo $this->menu->name; ?>">
16
+ <p><em><?php _e('Important: Once the menu name has changed, theme files should be updated to reference the new name.', 'nestedpages'); ?></em></p>
17
+ </td>
18
+ </tr>
19
+ <tr valign="top">
20
+ <th scope="row"><?php _e('Hide Default Pages', 'nestedpages'); ?></th>
21
+ <td>
22
+ <label>
23
+ <input type="checkbox" id="nestedpages_hidedefault" name="nestedpages_hidedefault" <?php if ( get_option('nestedpages_hidedefault') == 'hide') echo 'checked'; ?> value="hide" >
24
+ <?php _e('Hide Default Pages', 'nestedpages'); ?>
25
+ </label>
26
+ </td>
27
+ </tr>
28
+ <tr valign="top">
29
+ <th scope="row"><?php _e('Allow Page Sorting', 'nestedpages'); ?></th>
30
+ <td>
31
+ <?php foreach ( $this->user_repo->allRoles() as $role ) : ?>
32
+ <label>
33
+ <input type="checkbox" name="nestedpages_allowsorting[]" value="<?php echo $role; ?>" <?php if ( in_array($role, $allowsorting) ) echo 'checked'; ?> >
34
+ <?php echo $role; ?>
35
+ </label>
36
+ <input type="hidden" name="nestedpages_menusync" value="<?php echo get_option('nestedpages_menusync'); ?>">
37
+ <br />
38
+ <?php endforeach; ?>
39
+ <p><em><?php _e('Admins always have sorting ability.', 'nestedpages'); ?></em></p>
40
+ </td>
41
+ </tr>
app/Views/settings-posttypes.php ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ //var_dump($this->getPostTypes());
5
+ ?>
app/Views/settings.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="wrap">
2
+ <h1><?php _e('Nested Pages Settings', 'nestedpages'); ?></h1>
3
+
4
+ <h2 class="nav-tab-wrapper">
5
+ <a class="nav-tab <?php if ( $tab == 'general' ) echo 'nav-tab-active'; ?>" href="options-general.php?page=nested-pages-settings"><?php _e('General', 'nestedpages'); ?></a>
6
+ <?php if ( count($this->getPostTypes()) > 0 ) : ?>
7
+ <?php /*
8
+ <a class="nav-tab <?php if ( $tab == 'posttypes' ) echo 'nav-tab-active'; ?>" href="options-general.php?page=nested-pages-settings&tab=posttypes"><?php _e('Post Types', 'nestedpages'); ?></a>
9
+ */ ?>
10
+ <?php endif; ?>
11
+ </h2>
12
+
13
+ <form method="post" enctype="multipart/form-data" action="options.php">
14
+ <table class="form-table">
15
+ <?php include NestedPages\Helpers::view('settings-' . $tab); ?>
16
+ </table>
17
+ <?php submit_button(); ?>
18
+ </form>
19
+ </div><!-- .wrap -->
assets/css/nestedpages.css CHANGED
@@ -1 +1 @@
1
- body{-webkit-animation-delay:0.1s;-webkit-animation-name:fontfix;-webkit-animation-duration:0.1s;-webkit-animation-iteration-count:1;-webkit-animation-timing-function:linear;}@-webkit-keyframes fontfix{from{opacity:1;}to{opacity:1;}}@font-face{font-family:'nestedpages';src:url('fonts/nestedpages.eot');}@font-face{font-family:'nestedpages';src:url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,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) format('woff');font-weight:normal;font-style:normal;}[class^="np-icon-"],[class*=" np-icon-"]{font-family:'nestedpages';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.np-icon-no:before{content:"\e601";}.np-icon-yes:before{content:"\e602";}.np-icon-menu:before{content:"\e603";}.np-icon-arrow-down:before{content:"\e604";}.np-icon-arrow-right:before{content:"\e605";}.np-icon-sub-menu:before{content:"\e600";}.np-icon-arrows-alt:before{content:"\f0b2";}.np-icon-pencil:before{content:"\e608";}.np-icon-bubble:before{content:"\e607";}.np-icon-lock:before{content:"\e609";}.np-icon-remove:before{content:"\e60a";}.np-icon-list:before{content:"\e60d";}.np-icon-menu2:before{content:"\e606";}.np-icon-link:before{content:"\e612";}.np-icon-eye:before{content:"\e60b";}.np-icon-eye-blocked:before{content:"\e60c";}.np-icon-mail:before{content:"\e60e";}.np-icon-github:before{content:"\e60f";}.np-icon-wordpress:before{content:"\e610";}.np-icon-linkedin:before{content:"\e611";}.np-btn,.np-toggle-edit{text-decoration:none;color:#555;display:inline-block;background-color:#f7f7f7;border:1px solid #e1e1e1;padding:3px 8px;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0, 0, 0, 0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0, 0, 0, 0.08);-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.np-btn:hover,.np-toggle-edit:hover{background-color:#0074a2;color:#ffffff;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25),0 1px 0 rgba(0, 0, 0, 0.08);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25),0 1px 0 rgba(0, 0, 0, 0.08);border-color:#0074a2;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.np-btn-half{float:left;width:47%;padding:3px 0px;text-align:center;}.np-btn-half.btn-right{float:right;}.np-btn-trash{background-color:#e14d43;border-color:#e14d43;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.3),0 1px 0 rgba(0, 0, 0, 0.08);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.3),0 1px 0 rgba(0, 0, 0, 0.08);color:#ffffff;}.np-btn-trash:hover{background-color:#ba251e;border-color:#ba251e;}.np-toggle-edit{display:none;float:right;margin-right:10px;}.np-toggle-edit.active{background-color:#0074a2;color:#ffffff;-webkit-box-shadow:none;box-shadow:none;border-color:#0074a2;}@media (max-width: 767px){.np-toggle-edit{display:inline-block;}}.np-quickedit-error{border-left:4px solid #dd3d36;padding:4px 0 4px 8px;margin-bottom:10px;background-color:#f9f9f9;}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000;opacity:0.85;}.modal-open{overflow:hidden;}.np-modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;-webkit-overflow-scrolling:touch;outline:0;}.np-modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;}.np-modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);}.np-modal .modal-open .modal{overflow-x:hidden;overflow-y:auto;}.np-modal .modal-dialog{position:relative;width:auto;margin:10px auto 0px auto;max-width:500px;}.np-modal .modal-content{position:relative;background-color:#ffffff;-webkit-box-shadow:0 3px 9px rgba(0, 0, 0, 0.5);box-shadow:0 3px 9px rgba(0, 0, 0, 0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0;}.np-modal .modal-header{padding:8px;background-color:#ebebeb;}.np-modal .modal-header .sr-only{display:none;}.np-modal .modal-header .close{margin-top:-2px;}.np-modal .modal-title{margin:0;}.np-modal .modal-body{position:relative;padding:10px;}.np-modal .modal-footer{padding:10px;text-align:right;background-color:#404040;zoom:1;}.np-modal .modal-footer:before,.np-modal .modal-footer:after{content:" ";display:table;}.np-modal .modal-footer:after{clear:both;}.np-modal .modal-footer .modal-close{float:left;}.np-modal .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll;}.np-inline-overlay{position:fixed;width:100%;height:100%;background-color:rgba(0, 0, 0, 0.4);z-index:998;top:0;right:0;bottom:0;left:0;opacity:0;-webkit-transition:opacity 200ms ease;-o-transition:opacity 200ms ease;transition:opacity 200ms ease;}.np-inline-overlay.active{opacity:1;-webkit-transition:opacity 200ms ease;-o-transition:opacity 200ms ease;transition:opacity 200ms ease;}.np-inline-modal{position:relative;z-index:999;background-color:#ffffff;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0px 0px 4px 0px rgba(0, 0, 0, 0.5);box-shadow:0px 0px 4px 0px rgba(0, 0, 0, 0.5);}.nestedpages-toggleall{float:right;margin-top:-30px;}.np-toggle-publish{color:#999999;}.np-toggle-publish.active{color:#333;font-weight:bold;}.np-sync-menu-cont{float:right;margin:-27px 15px 0px 0px;}#nested-loading{display:none;float:right;width:30px;margin:-31px 120px 0 0;}.np-tabs{background-color:#ebebeb;padding:0px;}.np-tabs ul{text-align:left;list-style-type:none;margin:0;padding:0;}.np-tabs ul li{display:inline-block;margin:0;}.np-tabs ul li a{display:block;text-decoration:none;padding:5px 10px;}.np-tabs ul li a.active{position:relative;color:#333;background-color:#ffffff;}.wppages-top-tools{margin-bottom:20px;padding-top:10px;}.wppages-top-tools a{text-decoration:none;}.wppages-handle-expand{float:left;background-color:#f2f2f2;font-size:18px;width:46px;height:46px;margin-right:5px;text-align:center;border-right:1px solid #e1e1e1;}.wppages-handle-expand div{background-color:#ffffff;border:1px solid #e1e1e1;width:24px;height:24px;line-height:24px;-webkit-border-radius:15px;border-radius:15px;margin-top:9px;cursor:pointer;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.wppages-handle-expand div:hover{background-color:#0074a2;border-color:#0074a2;color:#ffffff;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.nestedpages{clear:both;-webkit-border-radius:4px;border-radius:4px;}.nestedpages .ui-sortable-placeholder{display:block !important;position:relative;min-height:46px;border:0;border:1px dashed #0074a2 !important;background-color:#effaff;margin:0;}.nestedpages .ui-sortable-helper{opacity:0.8;-webkit-box-shadow:2px 2px 3px 0px rgba(0, 0, 0, 0.5);box-shadow:2px 2px 3px 0px rgba(0, 0, 0, 0.5);}.nestedpages ol{list-style-type:none;clear:both;margin:0;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.06);box-shadow:0 1px 1px rgba(0, 0, 0, 0.06);border:1px solid #e5e5e5;-webkit-border-radius:3px;border-radius:3px;}.nestedpages ol a{text-decoration:none;}.nestedpages ol .page-link{line-height:26px;}.nestedpages ol .page-link .edit-indicator{margin-left:10px;display:none;}.nestedpages ol .page-link .edit-indicator i{font-size:12px;margin-right:3px;}.nestedpages ol .page-link:hover .edit-indicator{display:inline-block;}.nestedpages ol .locked{color:#333;margin-left:20px;}.nestedpages ol .locked em{font-style:normal;}.nestedpages ol .status{color:#999999;margin:0px 10px;}.nestedpages ol .np-icon-eye-blocked{color:#999999;}.nestedpages ol .nav-status{color:#b3b3b3;}.nestedpages ol .np-hide{display:none;}.nestedpages ol .np-seo-indicator{display:block;float:right;width:12px;height:12px;-webkit-border-radius:8px;border-radius:8px;background-color:#999999;margin:6px 10px 0 0;}.nestedpages ol .np-seo-indicator.good{background-color:#7ad03a;}.nestedpages ol .np-seo-indicator.ok{background-color:#ffba00;}.nestedpages ol .np-seo-indicator.poor{background-color:#ee7c1b;}.nestedpages ol .np-seo-indicator.bad{background-color:#dd3d36;}.nestedpages ol .np-seo-indicator.warn{background-color:maroon;}.nestedpages ol .np-seo-indicator.wrong{background-color:red;}.nestedpages ol li{margin:0;border-top:1px solid #e1e1e1;background-color:#0074a2;}.nestedpages ol li.first{border:0;}.nestedpages ol li:first-child{border:0;}.nestedpages ol li.no-border{border:0;}.nestedpages ol ol{display:none;-webkit-border-radius:0;border-radius:0;list-style-type:none;border:0;-webkit-box-shadow:none;box-shadow:none;border-top:1px solid #e1e1e1;}.nestedpages .child-toggle{float:left;margin:-10px 10px 0 0;width:46px;height:46px;background-color:#f0f0f0;text-align:center;}.nestedpages .child-toggle a{display:inline-block;margin-top:7px;width:28px;height:28px;background-color:#ffffff;border:1px solid #e1e1e1;-webkit-border-radius:20px;border-radius:20px;font-size:20px;line-height:30px;color:#333;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.nestedpages .child-toggle a i{line-height:26px;}.nestedpages .child-toggle a:hover{background-color:#0074a2;color:#ffffff;border-color:#0074a2;}.nestedpages .handle{display:inline-block;cursor:move;font-size:20px;color:#b3b3b3;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;position:relative;top:3px;}.nestedpages .handle:hover{-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;color:#0074a2;}.nestedpages .np-icon-sub-menu{display:none;color:#999999;position:relative;left:2px;}.nestedpages .handle,.nestedpages .np-icon-sub-menu{width:30px;height:46px;line-height:36px;margin-top:-10px;}.nestedpages li ol .row .np-icon-sub-menu{display:inline-block;}.nestedpages li ol .row .handle{display:none;}.nestedpages li ol .row:hover .np-icon-sub-menu{display:none;}.nestedpages li ol .row:hover .handle{display:inline-block;}.nestedpages .row{background-color:#ffffff;display:block;padding:10px 0px 0px 0px;height:36px;zoom:1;}.nestedpages .row:before,.nestedpages .row:after{content:" ";display:table;}.nestedpages .row:after{clear:both;}.nestedpages .row:hover{background-color:#f0f0f0;}.nestedpages .row.np-updated{background-color:#e9f7df;-webkit-transition:background-color 400ms ease;-o-transition:background-color 400ms ease;transition:background-color 400ms ease;}.nestedpages .row.np-updated-show{background-color:#ffffff;-webkit-transition:background-color 400ms ease;-o-transition:background-color 400ms ease;transition:background-color 400ms ease;}.nestedpages ol li ol .row-inner{padding-left:86px;}.nestedpages ol li ol li ol .row-inner{padding-left:116px;}.nestedpages ol li ol li ol li ol .row-inner{padding-left:156px;}.nestedpages .action-buttons{display:none;float:right;margin:0 10px 0 0;}.nestedpages .action-buttons a{margin:0 0 0 -5px;}.nestedpages .action-buttons a.np-btn-trash{margin-left:4px;}.nestedpages-tools{zoom:1;clear:both;margin-bottom:10px;}.nestedpages-tools:before,.nestedpages-tools:after{content:" ";display:table;}.nestedpages-tools:after{clear:both;}.nestedpages-tools .subsubsub{margin:0;}.np-search{float:right;}@media (min-width: 768px){.nestedpages .row:hover .action-buttons{display:block;}}@media (max-width: 767px){.nestedpages ol .page-link{line-height:24px;}.nestedpages ol .page-link:hover span{display:none;}.nestedpages ol .locked em{display:none;}.nestedpages .child-toggle{background:transparent;}.nestedpages .row{height:auto;}.nestedpages .action-buttons{display:none;background-color:#0074a2;float:none;margin:0;padding:8px;}.nestedpages .action-buttons a{margin-left:5px;}}.nestedpages .quick-edit .form-interior,.nestedpages .new-child .form-interior{padding:10px;}.nestedpages .quick-edit h3,.nestedpages .new-child h3{margin:0 0 8px 0;font-size:14px;}.nestedpages .quick-edit h3 span,.nestedpages .new-child h3 span{float:right;font-size:12px;}.nestedpages .quick-edit h3 span em,.nestedpages .new-child h3 span em{font-weight:normal;font-style:normal;color:#808080;}.nestedpages .quick-edit .fields,.nestedpages .new-child .fields{margin-bottom:10px;background:url('../images/border.png') repeat-y;background-position:center;zoom:1;}.nestedpages .quick-edit .fields:before,.nestedpages .quick-edit .fields:after,.nestedpages .new-child .fields:before,.nestedpages .new-child .fields:after{content:" ";display:table;}.nestedpages .quick-edit .fields:after,.nestedpages .new-child .fields:after{clear:both;}.nestedpages .quick-edit .left,.nestedpages .new-child .left{float:left;width:48%;}.nestedpages .quick-edit .right,.nestedpages .new-child .right{float:right;width:48%;}.nestedpages .quick-edit label,.nestedpages .new-child label{font-style:oblique;}.nestedpages .quick-edit .buttons,.nestedpages .new-child .buttons{clear:both;zoom:1;background-color:#404040;padding:8px;}.nestedpages .quick-edit .buttons:before,.nestedpages .quick-edit .buttons:after,.nestedpages .new-child .buttons:before,.nestedpages .new-child .buttons:after{content:" ";display:table;}.nestedpages .quick-edit .buttons:after,.nestedpages .new-child .buttons:after{clear:both;}.nestedpages .quick-edit .form-control,.nestedpages .new-child .form-control{clear:both;zoom:1;margin-bottom:5px;}.nestedpages .quick-edit .form-control:before,.nestedpages .quick-edit .form-control:after,.nestedpages .new-child .form-control:before,.nestedpages .new-child .form-control:after{content:" ";display:table;}.nestedpages .quick-edit .form-control:after,.nestedpages .new-child .form-control:after{clear:both;}.nestedpages .quick-edit .form-control input[type='text'],.nestedpages .quick-edit .form-control input[type='password'],.nestedpages .quick-edit .form-control select,.nestedpages .new-child .form-control input[type='text'],.nestedpages .new-child .form-control input[type='password'],.nestedpages .new-child .form-control select{float:right;width:75%;}.nestedpages .quick-edit .form-control label,.nestedpages .new-child .form-control label{float:left;width:20%;}.nestedpages .quick-edit .form-control.password label,.nestedpages .new-child .form-control.password label{width:25%;}.nestedpages .quick-edit .form-control.password input[type="text"],.nestedpages .new-child .form-control.password input[type="text"]{float:left;width:35%;}.nestedpages .quick-edit .form-control.password .private,.nestedpages .new-child .form-control.password .private{float:right;width:35%;margin-top:4px;}.nestedpages .quick-edit .form-control.password .private label,.nestedpages .new-child .form-control.password .private label{width:auto;float:none;}.nestedpages .quick-edit .comments,.nestedpages .new-child .comments{float:right;width:75%;margin-bottom:10px;zoom:1;}.nestedpages .quick-edit .comments:before,.nestedpages .quick-edit .comments:after,.nestedpages .new-child .comments:before,.nestedpages .new-child .comments:after{content:" ";display:table;}.nestedpages .quick-edit .comments:after,.nestedpages .new-child .comments:after{clear:both;}.nestedpages .quick-edit .dates,.nestedpages .new-child .dates{float:right;width:75%;margin-bottom:6px;}.nestedpages .quick-edit .dates select,.nestedpages .new-child .dates select{width:25%;}.nestedpages .quick-edit .dates input,.nestedpages .new-child .dates input{width:12%;}.nestedpages .quick-edit .np-toggle-options,.nestedpages .new-child .np-toggle-options{background-color:#f2f2f2;padding:5px;}.nestedpages .quick-edit .np-taxonomies,.nestedpages .quick-edit .np-menuoptions,.nestedpages .new-child .np-taxonomies,.nestedpages .new-child .np-menuoptions{display:none;clear:both;background-color:#f9f9f9;padding:8px;zoom:1;margin-top:5px;}.nestedpages .quick-edit .np-taxonomies:before,.nestedpages .quick-edit .np-taxonomies:after,.nestedpages .quick-edit .np-menuoptions:before,.nestedpages .quick-edit .np-menuoptions:after,.nestedpages .new-child .np-taxonomies:before,.nestedpages .new-child .np-taxonomies:after,.nestedpages .new-child .np-menuoptions:before,.nestedpages .new-child .np-menuoptions:after{content:" ";display:table;}.nestedpages .quick-edit .np-taxonomies:after,.nestedpages .quick-edit .np-menuoptions:after,.nestedpages .new-child .np-taxonomies:after,.nestedpages .new-child .np-menuoptions:after{clear:both;}.nestedpages .quick-edit .np-taxonomy,.nestedpages .new-child .np-taxonomy{float:left;width:30%;margin-right:3.33%;}.nestedpages .quick-edit .np-taxonomy .title,.nestedpages .new-child .np-taxonomy .title{font-weight:bold;margin-bottom:4px;display:block;}.nestedpages .quick-edit .np-taxonomy li,.nestedpages .new-child .np-taxonomy li{background-color:#ffffff;border:0;}.nestedpages .quick-edit .np-taxonomy textarea,.nestedpages .new-child .np-taxonomy textarea{width:100%;height:6.5em;}.nestedpages .quick-edit .np-menuoptions,.nestedpages .new-child .np-menuoptions{padding:15px;}.nestedpages .quick-edit .np-menuoptions label,.nestedpages .quick-edit .np-menuoptions input[type="text"],.nestedpages .new-child .np-menuoptions label,.nestedpages .new-child .np-menuoptions input[type="text"]{display:block;float:none;width:100%;}.nestedpages .quick-edit .np-menuoptions .menuoptions-left,.nestedpages .new-child .np-menuoptions .menuoptions-left{float:left;width:47%;}.nestedpages .quick-edit .np-menuoptions .menuoptions-right,.nestedpages .new-child .np-menuoptions .menuoptions-right{float:right;width:47%;padding-top:18px;}.nestedpages .quick-edit .np-menuoptions .menuoptions-right label,.nestedpages .new-child .np-menuoptions .menuoptions-right label{margin-bottom:10px;}.nestedpages .quick-edit .np-hide-options,.nestedpages .new-child .np-hide-options{display:none;background-color:#f0f0f0;-webkit-border-radius:3px;border-radius:3px;clear:both;padding:6px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}.nestedpages .quick-edit .np-hide-options p,.nestedpages .new-child .np-hide-options p{margin:0;}.nestedpages .quick-edit .np-hide-options label,.nestedpages .new-child .np-hide-options label{display:block;margin-top:4px;font-style:normal;}.nestedpages .quick-edit .new-page-titles,.nestedpages .new-child .new-page-titles{display:block;border:0;}.nestedpages .quick-edit .new-page-titles li,.nestedpages .new-child .new-page-titles li{background:transparent;border:0;padding:4px;zoom:1;}.nestedpages .quick-edit .new-page-titles li:before,.nestedpages .quick-edit .new-page-titles li:after,.nestedpages .new-child .new-page-titles li:before,.nestedpages .new-child .new-page-titles li:after{content:" ";display:table;}.nestedpages .quick-edit .new-page-titles li:after,.nestedpages .new-child .new-page-titles li:after{clear:both;}.nestedpages .quick-edit .new-page-titles li:nth-child(even),.nestedpages .new-child .new-page-titles li:nth-child(even){background-color:#f0f0f0;}.nestedpages .quick-edit .new-page-titles li label,.nestedpages .new-child .new-page-titles li label{margin-top:7px;}.nestedpages .quick-edit .new-page-titles .form-control,.nestedpages .new-child .new-page-titles .form-control{float:right;width:90%;clear:none;}.nestedpages .quick-edit .new-page-titles .np-icon-menu,.nestedpages .new-child .new-page-titles .np-icon-menu{float:left;margin-top:0px;height:auto;line-height:26px;}.nestedpages .quick-edit .new-page-titles .new-child-row div,.nestedpages .new-child .new-page-titles .new-child-row div{float:right;width:75%;margin:2px;zoom:1;}.nestedpages .quick-edit .new-page-titles .new-child-row div:before,.nestedpages .quick-edit .new-page-titles .new-child-row div:after,.nestedpages .new-child .new-page-titles .new-child-row div:before,.nestedpages .new-child .new-page-titles .new-child-row div:after{content:" ";display:table;}.nestedpages .quick-edit .new-page-titles .new-child-row div:after,.nestedpages .new-child .new-page-titles .new-child-row div:after{clear:both;}.nestedpages .quick-edit .new-page-titles .new-child-row div input[type='text'],.nestedpages .new-child .new-page-titles .new-child-row div input[type='text']{float:left;width:80%;}.nestedpages .quick-edit .new-page-titles .new-child-row div a,.nestedpages .new-child .new-page-titles .new-child-row div a{float:right;}.np-qe-loading{display:none;float:right;width:25px;height:25px;margin:2px 10px 0 0;background:url('../images/loading-white.gif') no-repeat;}@media (max-width: 767px){.nestedpages .quick-edit .fields{background:transparent;}.nestedpages .quick-edit .left,.nestedpages .quick-edit .right{float:none;width:100%;}.nestedpages .quick-edit .form-control{margin-bottom:10px;}.nestedpages .quick-edit .form-control input[type='text'],.nestedpages .quick-edit .form-control input[type='password'],.nestedpages .quick-edit .form-control select{float:none;width:100%;}.nestedpages .quick-edit .form-control label{display:block;float:none;width:100%;margin-bottom:4px;}.nestedpages .quick-edit .comments{float:none;width:100%;}.nestedpages .quick-edit .dates{float:none;width:100%;margin-bottom:6px;}}.np-modal-form .form-interior{zoom:1;background:url('../images/border.png') repeat-y;background-position:center;padding:5px 0;}.np-modal-form .form-interior:before,.np-modal-form .form-interior:after{content:" ";display:table;}.np-modal-form .form-interior:after{clear:both;}.np-modal-form .form-control{zoom:1;margin-bottom:10px;}.np-modal-form .form-control:before,.np-modal-form .form-control:after{content:" ";display:table;}.np-modal-form .form-control:after{clear:both;}.np-modal-form .checkbox{margin-bottom:10px;}.np-modal-form .left{float:left;width:45%;}.np-modal-form .right{float:right;width:45%;padding-top:18px;}.np-modal-form label{display:block;}.np-modal-form input[type="text"],.np-modal-form select{width:100%;}.np-modal-form .buttons{clear:both;}
1
+ body{-webkit-animation-delay:0.1s;-webkit-animation-name:fontfix;-webkit-animation-duration:0.1s;-webkit-animation-iteration-count:1;-webkit-animation-timing-function:linear;}@-webkit-keyframes fontfix{from{opacity:1;}to{opacity:1;}}@font-face{font-family:'nestedpages';src:url('fonts/nestedpages.eot');}@font-face{font-family:'nestedpages';src:url(data:application/x-font-ttf;charset=utf-8;base64,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) format('truetype'),url(data:application/font-woff;charset=utf-8;base64,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) format('woff');font-weight:normal;font-style:normal;}[class^="np-icon-"],[class*=" np-icon-"]{font-family:'nestedpages';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}.np-icon-no:before{content:"\e601";}.np-icon-yes:before{content:"\e602";}.np-icon-menu:before{content:"\e603";}.np-icon-arrow-down:before{content:"\e604";}.np-icon-arrow-right:before{content:"\e605";}.np-icon-sub-menu:before{content:"\e600";}.np-icon-arrows-alt:before{content:"\f0b2";}.np-icon-pencil:before{content:"\e608";}.np-icon-bubble:before{content:"\e607";}.np-icon-lock:before{content:"\e609";}.np-icon-remove:before{content:"\e60a";}.np-icon-list:before{content:"\e60d";}.np-icon-menu2:before{content:"\e606";}.np-icon-link:before{content:"\e612";}.np-icon-eye:before{content:"\e60b";}.np-icon-eye-blocked:before{content:"\e60c";}.np-icon-mail:before{content:"\e60e";}.np-icon-github:before{content:"\e60f";}.np-icon-wordpress:before{content:"\e610";}.np-icon-linkedin:before{content:"\e611";}.np-btn,.np-toggle-edit{text-decoration:none;color:#555;display:inline-block;background-color:#f7f7f7;border:1px solid #e1e1e1;padding:3px 8px;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0, 0, 0, 0.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0, 0, 0, 0.08);-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.np-btn:hover,.np-toggle-edit:hover{background-color:#0074a2;color:#ffffff;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25),0 1px 0 rgba(0, 0, 0, 0.08);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25),0 1px 0 rgba(0, 0, 0, 0.08);border-color:#0074a2;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.np-btn-half{float:left;width:47%;padding:3px 0px;text-align:center;}.np-btn-half.btn-right{float:right;}.np-btn-trash{background-color:#e14d43;border-color:#e14d43;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.3),0 1px 0 rgba(0, 0, 0, 0.08);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.3),0 1px 0 rgba(0, 0, 0, 0.08);color:#ffffff;}.np-btn-trash:hover{background-color:#ba251e;border-color:#ba251e;}.np-toggle-edit{display:none;float:right;margin-right:10px;}.np-toggle-edit.active{background-color:#0074a2;color:#ffffff;-webkit-box-shadow:none;box-shadow:none;border-color:#0074a2;}@media (max-width: 767px){.np-toggle-edit{display:inline-block;}}.np-quickedit-error{border-left:4px solid #dd3d36;padding:4px 0 4px 8px;margin-bottom:10px;background-color:#f9f9f9;}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000;opacity:0.85;}.modal-open{overflow:hidden;}.np-modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999;-webkit-overflow-scrolling:touch;outline:0;}.np-modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out;}.np-modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0);}.np-modal .modal-open .modal{overflow-x:hidden;overflow-y:auto;}.np-modal .modal-dialog{position:relative;width:auto;margin:10px auto 0px auto;max-width:500px;}.np-modal .modal-content{position:relative;background-color:#ffffff;-webkit-box-shadow:0 3px 9px rgba(0, 0, 0, 0.5);box-shadow:0 3px 9px rgba(0, 0, 0, 0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0;}.np-modal .modal-header{padding:8px;background-color:#ebebeb;}.np-modal .modal-header .sr-only{display:none;}.np-modal .modal-header .close{margin-top:-2px;}.np-modal .modal-title{margin:0;}.np-modal .modal-body{position:relative;padding:10px;}.np-modal .modal-footer{padding:10px;text-align:right;background-color:#404040;zoom:1;}.np-modal .modal-footer:before,.np-modal .modal-footer:after{content:" ";display:table;}.np-modal .modal-footer:after{clear:both;}.np-modal .modal-footer .modal-close{float:left;}.np-modal .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll;}.np-inline-overlay{position:fixed;width:100%;height:100%;background-color:rgba(0, 0, 0, 0.4);z-index:998;top:0;right:0;bottom:0;left:0;opacity:0;-webkit-transition:opacity 200ms ease;-o-transition:opacity 200ms ease;transition:opacity 200ms ease;}.np-inline-overlay.active{opacity:1;-webkit-transition:opacity 200ms ease;-o-transition:opacity 200ms ease;transition:opacity 200ms ease;}.np-inline-modal{position:relative;z-index:999;background-color:#ffffff;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0px 0px 4px 0px rgba(0, 0, 0, 0.5);box-shadow:0px 0px 4px 0px rgba(0, 0, 0, 0.5);}.nestedpages-toggleall{float:right;margin-top:-30px;}.np-toggle-publish{color:#999999;}.np-toggle-publish.active{color:#333;font-weight:bold;}.np-sync-menu-cont{float:right;margin:-27px 15px 0px 0px;}#nested-loading{display:none;float:right;width:30px;margin:-31px 120px 0 0;}.np-tabs{background-color:#ebebeb;padding:0px;}.np-tabs ul{text-align:left;list-style-type:none;margin:0;padding:0;}.np-tabs ul li{display:inline-block;margin:0;}.np-tabs ul li a{display:block;text-decoration:none;padding:5px 10px;}.np-tabs ul li a.active{position:relative;color:#333;background-color:#ffffff;}.wppages-top-tools{margin-bottom:20px;padding-top:10px;}.wppages-top-tools a{text-decoration:none;}.wppages-handle-expand{float:left;background-color:#f2f2f2;font-size:18px;width:46px;height:46px;margin-right:5px;text-align:center;border-right:1px solid #e1e1e1;}.wppages-handle-expand div{background-color:#ffffff;border:1px solid #e1e1e1;width:24px;height:24px;line-height:24px;-webkit-border-radius:15px;border-radius:15px;margin-top:9px;cursor:pointer;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.wppages-handle-expand div:hover{background-color:#0074a2;border-color:#0074a2;color:#ffffff;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.nestedpages{clear:both;-webkit-border-radius:4px;border-radius:4px;}.nestedpages .ui-sortable-placeholder{display:block !important;position:relative;min-height:46px;border:0;border:1px dashed #0074a2 !important;background-color:#effaff;margin:0;}.nestedpages .ui-sortable-helper{opacity:0.8;-webkit-box-shadow:2px 2px 3px 0px rgba(0, 0, 0, 0.5);box-shadow:2px 2px 3px 0px rgba(0, 0, 0, 0.5);}.nestedpages ol{list-style-type:none;clear:both;margin:0;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.06);box-shadow:0 1px 1px rgba(0, 0, 0, 0.06);border:1px solid #e5e5e5;-webkit-border-radius:3px;border-radius:3px;}.nestedpages ol a{text-decoration:none;}.nestedpages ol .page-link{line-height:26px;}.nestedpages ol .page-link .edit-indicator{margin-left:10px;display:none;}.nestedpages ol .page-link .edit-indicator i{font-size:12px;margin-right:3px;}.nestedpages ol .page-link:hover .edit-indicator{display:inline-block;}.nestedpages ol .locked{color:#333;margin-left:20px;}.nestedpages ol .locked em{font-style:normal;}.nestedpages ol .status{color:#999999;margin:0px 10px;}.nestedpages ol .np-icon-eye-blocked{color:#999999;}.nestedpages ol .nav-status{color:#b3b3b3;}.nestedpages ol .np-hide{display:none;}.nestedpages ol .np-seo-indicator{display:block;float:right;width:12px;height:12px;-webkit-border-radius:8px;border-radius:8px;background-color:#999999;margin:6px 10px 0 0;}.nestedpages ol .np-seo-indicator.good{background-color:#7ad03a;}.nestedpages ol .np-seo-indicator.ok{background-color:#ffba00;}.nestedpages ol .np-seo-indicator.poor{background-color:#ee7c1b;}.nestedpages ol .np-seo-indicator.bad{background-color:#dd3d36;}.nestedpages ol .np-seo-indicator.warn{background-color:maroon;}.nestedpages ol .np-seo-indicator.wrong{background-color:red;}.nestedpages ol li{margin:0;border-top:1px solid #e1e1e1;background-color:#0074a2;}.nestedpages ol li.first{border:0;}.nestedpages ol li:first-child{border:0;}.nestedpages ol li.no-border{border:0;}.nestedpages ol ol{display:none;-webkit-border-radius:0;border-radius:0;list-style-type:none;border:0;-webkit-box-shadow:none;box-shadow:none;border-top:1px solid #e1e1e1;}.nestedpages .child-toggle{float:left;margin:-10px 10px 0 0;width:46px;height:46px;background-color:#f0f0f0;text-align:center;}.nestedpages .child-toggle a{display:inline-block;margin-top:7px;width:28px;height:28px;background-color:#ffffff;border:1px solid #e1e1e1;-webkit-border-radius:20px;border-radius:20px;font-size:20px;line-height:30px;color:#333;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;}.nestedpages .child-toggle a i{line-height:26px;}.nestedpages .child-toggle a:hover{background-color:#0074a2;color:#ffffff;border-color:#0074a2;}.nestedpages .handle{display:inline-block;cursor:move;font-size:20px;color:#b3b3b3;-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;position:relative;top:3px;}.nestedpages .handle:hover{-webkit-transition:all 200ms ease;-o-transition:all 200ms ease;transition:all 200ms ease;color:#0074a2;}.nestedpages .np-icon-sub-menu{display:none;color:#999999;position:relative;left:2px;}.nestedpages .handle,.nestedpages .np-icon-sub-menu{width:30px;height:46px;line-height:36px;margin-top:-10px;}.nestedpages li ol .row .np-icon-sub-menu{display:inline-block;}.nestedpages li ol .row .handle{display:none;}.nestedpages li ol .row:hover .np-icon-sub-menu{display:none;}.nestedpages li ol .row:hover .handle{display:inline-block;}.nestedpages .row{background-color:#ffffff;display:block;padding:10px 0px 0px 0px;height:36px;zoom:1;}.nestedpages .row:before,.nestedpages .row:after{content:" ";display:table;}.nestedpages .row:after{clear:both;}.nestedpages .row:hover{background-color:#f0f0f0;}.nestedpages .row.np-updated{background-color:#e9f7df;-webkit-transition:background-color 400ms ease;-o-transition:background-color 400ms ease;transition:background-color 400ms ease;}.nestedpages .row.np-updated-show{background-color:#ffffff;-webkit-transition:background-color 400ms ease;-o-transition:background-color 400ms ease;transition:background-color 400ms ease;}.nestedpages ol li ol .row-inner{padding-left:76px;}.nestedpages ol li ol li ol .row-inner{padding-left:96px;}.nestedpages ol li ol li ol li ol .row-inner{padding-left:116px;}.nestedpages ol li ol li ol li ol li ol .row-inner{padding-left:136px;}.nestedpages ol li ol li ol li ol li ol li ol .row-inner{padding-left:156px;}.nestedpages .action-buttons{display:none;float:right;margin:0 10px 0 0;}.nestedpages .action-buttons a{margin:0 0 0 -5px;}.nestedpages .action-buttons a.np-btn-trash{margin-left:4px;}.nestedpages-tools{zoom:1;clear:both;margin-bottom:10px;}.nestedpages-tools:before,.nestedpages-tools:after{content:" ";display:table;}.nestedpages-tools:after{clear:both;}.nestedpages-tools .subsubsub{margin:0;}.np-search{float:right;}@media (min-width: 768px){.nestedpages .row:hover .action-buttons{display:block;}}@media (max-width: 767px){.nestedpages ol .page-link{line-height:24px;}.nestedpages ol .page-link:hover span{display:none;}.nestedpages ol .locked em{display:none;}.nestedpages .child-toggle{background:transparent;}.nestedpages .row{height:auto;}.nestedpages .action-buttons{display:none;background-color:#0074a2;float:none;margin:0;padding:8px;}.nestedpages .action-buttons a{margin-left:5px;}}.nestedpages .quick-edit .form-interior,.nestedpages .new-child .form-interior{padding:10px;}.nestedpages .quick-edit h3,.nestedpages .new-child h3{margin:0 0 8px 0;font-size:14px;}.nestedpages .quick-edit h3 span,.nestedpages .new-child h3 span{float:right;font-size:12px;}.nestedpages .quick-edit h3 span em,.nestedpages .new-child h3 span em{font-weight:normal;font-style:normal;color:#808080;}.nestedpages .quick-edit .fields,.nestedpages .new-child .fields{margin-bottom:10px;background:url('../images/border.png') repeat-y;background-position:center;zoom:1;}.nestedpages .quick-edit .fields:before,.nestedpages .quick-edit .fields:after,.nestedpages .new-child .fields:before,.nestedpages .new-child .fields:after{content:" ";display:table;}.nestedpages .quick-edit .fields:after,.nestedpages .new-child .fields:after{clear:both;}.nestedpages .quick-edit .left,.nestedpages .new-child .left{float:left;width:48%;}.nestedpages .quick-edit .right,.nestedpages .new-child .right{float:right;width:48%;}.nestedpages .quick-edit label,.nestedpages .new-child label{font-style:oblique;}.nestedpages .quick-edit .buttons,.nestedpages .new-child .buttons{clear:both;zoom:1;background-color:#404040;padding:8px;}.nestedpages .quick-edit .buttons:before,.nestedpages .quick-edit .buttons:after,.nestedpages .new-child .buttons:before,.nestedpages .new-child .buttons:after{content:" ";display:table;}.nestedpages .quick-edit .buttons:after,.nestedpages .new-child .buttons:after{clear:both;}.nestedpages .quick-edit .form-control,.nestedpages .new-child .form-control{clear:both;zoom:1;margin-bottom:5px;}.nestedpages .quick-edit .form-control:before,.nestedpages .quick-edit .form-control:after,.nestedpages .new-child .form-control:before,.nestedpages .new-child .form-control:after{content:" ";display:table;}.nestedpages .quick-edit .form-control:after,.nestedpages .new-child .form-control:after{clear:both;}.nestedpages .quick-edit .form-control input[type='text'],.nestedpages .quick-edit .form-control input[type='password'],.nestedpages .quick-edit .form-control select,.nestedpages .new-child .form-control input[type='text'],.nestedpages .new-child .form-control input[type='password'],.nestedpages .new-child .form-control select{float:right;width:75%;}.nestedpages .quick-edit .form-control label,.nestedpages .new-child .form-control label{float:left;width:20%;}.nestedpages .quick-edit .form-control.password label,.nestedpages .new-child .form-control.password label{width:25%;}.nestedpages .quick-edit .form-control.password input[type="text"],.nestedpages .new-child .form-control.password input[type="text"]{float:left;width:35%;}.nestedpages .quick-edit .form-control.password .private,.nestedpages .new-child .form-control.password .private{float:right;width:35%;margin-top:4px;}.nestedpages .quick-edit .form-control.password .private label,.nestedpages .new-child .form-control.password .private label{width:auto;float:none;}.nestedpages .quick-edit .comments,.nestedpages .new-child .comments{float:right;width:75%;margin-bottom:10px;zoom:1;}.nestedpages .quick-edit .comments:before,.nestedpages .quick-edit .comments:after,.nestedpages .new-child .comments:before,.nestedpages .new-child .comments:after{content:" ";display:table;}.nestedpages .quick-edit .comments:after,.nestedpages .new-child .comments:after{clear:both;}.nestedpages .quick-edit .dates,.nestedpages .new-child .dates{float:right;width:75%;margin-bottom:6px;}.nestedpages .quick-edit .dates select,.nestedpages .new-child .dates select{width:25%;}.nestedpages .quick-edit .dates input,.nestedpages .new-child .dates input{width:12%;}.nestedpages .quick-edit .np-toggle-options,.nestedpages .new-child .np-toggle-options{background-color:#f2f2f2;padding:5px;}.nestedpages .quick-edit .np-taxonomies,.nestedpages .quick-edit .np-menuoptions,.nestedpages .new-child .np-taxonomies,.nestedpages .new-child .np-menuoptions{display:none;clear:both;background-color:#f9f9f9;padding:8px;zoom:1;margin-top:5px;}.nestedpages .quick-edit .np-taxonomies:before,.nestedpages .quick-edit .np-taxonomies:after,.nestedpages .quick-edit .np-menuoptions:before,.nestedpages .quick-edit .np-menuoptions:after,.nestedpages .new-child .np-taxonomies:before,.nestedpages .new-child .np-taxonomies:after,.nestedpages .new-child .np-menuoptions:before,.nestedpages .new-child .np-menuoptions:after{content:" ";display:table;}.nestedpages .quick-edit .np-taxonomies:after,.nestedpages .quick-edit .np-menuoptions:after,.nestedpages .new-child .np-taxonomies:after,.nestedpages .new-child .np-menuoptions:after{clear:both;}.nestedpages .quick-edit .np-taxonomy,.nestedpages .new-child .np-taxonomy{float:left;width:30%;margin-right:3.33%;}.nestedpages .quick-edit .np-taxonomy .title,.nestedpages .new-child .np-taxonomy .title{font-weight:bold;margin-bottom:4px;display:block;}.nestedpages .quick-edit .np-taxonomy li,.nestedpages .new-child .np-taxonomy li{background-color:#ffffff;border:0;}.nestedpages .quick-edit .np-taxonomy textarea,.nestedpages .new-child .np-taxonomy textarea{width:100%;height:6.5em;}.nestedpages .quick-edit .np-menuoptions,.nestedpages .new-child .np-menuoptions{padding:15px;}.nestedpages .quick-edit .np-menuoptions label,.nestedpages .quick-edit .np-menuoptions input[type="text"],.nestedpages .new-child .np-menuoptions label,.nestedpages .new-child .np-menuoptions input[type="text"]{display:block;float:none;width:100%;}.nestedpages .quick-edit .np-menuoptions .menuoptions-left,.nestedpages .new-child .np-menuoptions .menuoptions-left{float:left;width:47%;}.nestedpages .quick-edit .np-menuoptions .menuoptions-right,.nestedpages .new-child .np-menuoptions .menuoptions-right{float:right;width:47%;padding-top:18px;}.nestedpages .quick-edit .np-menuoptions .menuoptions-right label,.nestedpages .new-child .np-menuoptions .menuoptions-right label{margin-bottom:10px;}.nestedpages .quick-edit .np-hide-options,.nestedpages .new-child .np-hide-options{display:none;background-color:#f0f0f0;-webkit-border-radius:3px;border-radius:3px;clear:both;padding:6px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}.nestedpages .quick-edit .np-hide-options p,.nestedpages .new-child .np-hide-options p{margin:0;}.nestedpages .quick-edit .np-hide-options label,.nestedpages .new-child .np-hide-options label{display:block;margin-top:4px;font-style:normal;}.nestedpages .quick-edit .new-page-titles,.nestedpages .new-child .new-page-titles{display:block;border:0;}.nestedpages .quick-edit .new-page-titles li,.nestedpages .new-child .new-page-titles li{background:transparent;border:0;padding:4px;zoom:1;}.nestedpages .quick-edit .new-page-titles li:before,.nestedpages .quick-edit .new-page-titles li:after,.nestedpages .new-child .new-page-titles li:before,.nestedpages .new-child .new-page-titles li:after{content:" ";display:table;}.nestedpages .quick-edit .new-page-titles li:after,.nestedpages .new-child .new-page-titles li:after{clear:both;}.nestedpages .quick-edit .new-page-titles li:nth-child(even),.nestedpages .new-child .new-page-titles li:nth-child(even){background-color:#f0f0f0;}.nestedpages .quick-edit .new-page-titles li label,.nestedpages .new-child .new-page-titles li label{margin-top:7px;}.nestedpages .quick-edit .new-page-titles .form-control,.nestedpages .new-child .new-page-titles .form-control{float:right;width:90%;clear:none;}.nestedpages .quick-edit .new-page-titles .np-icon-menu,.nestedpages .new-child .new-page-titles .np-icon-menu{float:left;margin-top:0px;height:auto;line-height:26px;}.nestedpages .quick-edit .new-page-titles .new-child-row div,.nestedpages .new-child .new-page-titles .new-child-row div{float:right;width:75%;margin:2px;zoom:1;}.nestedpages .quick-edit .new-page-titles .new-child-row div:before,.nestedpages .quick-edit .new-page-titles .new-child-row div:after,.nestedpages .new-child .new-page-titles .new-child-row div:before,.nestedpages .new-child .new-page-titles .new-child-row div:after{content:" ";display:table;}.nestedpages .quick-edit .new-page-titles .new-child-row div:after,.nestedpages .new-child .new-page-titles .new-child-row div:after{clear:both;}.nestedpages .quick-edit .new-page-titles .new-child-row div input[type='text'],.nestedpages .new-child .new-page-titles .new-child-row div input[type='text']{float:left;width:80%;}.nestedpages .quick-edit .new-page-titles .new-child-row div a,.nestedpages .new-child .new-page-titles .new-child-row div a{float:right;}.np-qe-loading{display:none;float:right;width:25px;height:25px;margin:2px 10px 0 0;background:url('../images/loading-white.gif') no-repeat;}@media (max-width: 767px){.nestedpages .quick-edit .fields{background:transparent;}.nestedpages .quick-edit .left,.nestedpages .quick-edit .right{float:none;width:100%;}.nestedpages .quick-edit .form-control{margin-bottom:10px;}.nestedpages .quick-edit .form-control input[type='text'],.nestedpages .quick-edit .form-control input[type='password'],.nestedpages .quick-edit .form-control select{float:none;width:100%;}.nestedpages .quick-edit .form-control label{display:block;float:none;width:100%;margin-bottom:4px;}.nestedpages .quick-edit .comments{float:none;width:100%;}.nestedpages .quick-edit .dates{float:none;width:100%;margin-bottom:6px;}}.np-modal-form .form-interior{zoom:1;background:url('../images/border.png') repeat-y;background-position:center;padding:5px 0;}.np-modal-form .form-interior:before,.np-modal-form .form-interior:after{content:" ";display:table;}.np-modal-form .form-interior:after{clear:both;}.np-modal-form .form-control{zoom:1;margin-bottom:10px;}.np-modal-form .form-control:before,.np-modal-form .form-control:after{content:" ";display:table;}.np-modal-form .form-control:after{clear:both;}.np-modal-form .checkbox{margin-bottom:10px;}.np-modal-form .left{float:left;width:45%;}.np-modal-form .right{float:right;width:45%;padding-top:18px;}.np-modal-form label{display:block;}.np-modal-form input[type="text"],.np-modal-form select{width:100%;}.np-modal-form .buttons{clear:both;}
assets/js/lib/nestedpages.js CHANGED
@@ -17,6 +17,7 @@ jQuery(function($){
17
  $(document).ready(function(){
18
  add_remove_submenu_toggles();
19
  np_set_borders();
 
20
  });
21
 
22
  /**
@@ -29,6 +30,7 @@ jQuery(function($){
29
  $(submenu).toggle();
30
  np_set_borders();
31
  np_sync_user_toggles();
 
32
  });
33
 
34
  /**
@@ -100,6 +102,27 @@ jQuery(function($){
100
  });
101
  }
102
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  /**
104
  * Toggle between showing published pages and all
105
  */
@@ -157,6 +180,7 @@ jQuery(function($){
157
  toleranceElement: '> .row',
158
  handle: '.handle',
159
  placeholder: "ui-sortable-placeholder",
 
160
  start: function(e, ui){
161
  ui.placeholder.height(ui.item.height());
162
  },
@@ -168,6 +192,7 @@ jQuery(function($){
168
  function(){
169
  add_remove_submenu_toggles();
170
  np_set_borders();
 
171
  }, 100
172
  );
173
  submit_sortable_form();
@@ -197,6 +222,7 @@ jQuery(function($){
197
  {
198
  var parentList = $(ui.placeholder).parent('ol');
199
  if ( !$(parentList).is(':visible') ){
 
200
  $(parentList).show();
201
  }
202
  }
@@ -285,7 +311,7 @@ jQuery(function($){
285
  type: 'post',
286
  datatype: 'json',
287
  data: {
288
- action : 'npsyncmenu',
289
  nonce : nestedpages.np_nonce,
290
  syncmenu : setting
291
  },
@@ -391,6 +417,7 @@ jQuery(function($){
391
  // Add Array of Taxonomies to the data object
392
  data.h_taxonomies = [];
393
  data.f_taxonomies = [];
 
394
  var classes = $(parent_li).attr('class').split(/\s+/);
395
  for ( i = 0; i < classes.length; i++ ){
396
  if ( classes[i].substring(0, 3) === 'in-'){
@@ -530,7 +557,7 @@ jQuery(function($){
530
  type: 'post',
531
  datatype: 'json',
532
  data : {
533
- action : 'gettax',
534
  nonce : nestedpages.np_nonce,
535
  terms : taxonomies
536
  },
@@ -546,10 +573,12 @@ jQuery(function($){
546
  */
547
  function populate_flat_taxonomies(terms)
548
  {
549
- $.each(terms, function(i, v){
550
- var textarea = $('#' + i);
551
- $(textarea).val(v.join(','));
552
- });
 
 
553
  }
554
 
555
 
@@ -609,7 +638,7 @@ jQuery(function($){
609
  url: ajaxurl,
610
  type: 'post',
611
  datatype: 'json',
612
- data: $(form).serialize() + '&action=npquickedit&nonce=' + nestedpages.np_nonce + '&syncmenu=' + syncmenu,
613
  success: function(data){
614
  if (data.status === 'error'){
615
  np_remove_qe_loading(form);
@@ -907,7 +936,7 @@ jQuery(function($){
907
  url: ajaxurl,
908
  type: 'post',
909
  datatype: 'json',
910
- data: $(form).serialize() + '&action=npquickeditredirect&nonce=' + nestedpages.np_nonce + '&syncmenu=' + syncmenu,
911
  success: function(data){
912
  if (data.status === 'error'){
913
  np_remove_qe_loading(form);
@@ -1024,7 +1053,7 @@ jQuery(function($){
1024
  url: ajaxurl,
1025
  type: 'post',
1026
  datatype: 'json',
1027
- data: data + '&action=npnewredirect&nonce=' + nestedpages.np_nonce + '&syncmenu=' + syncmenu,
1028
  success: function(data){
1029
  if (data.status === 'error'){
1030
  np_remove_link_loading();
@@ -1080,6 +1109,10 @@ jQuery(function($){
1080
  html += 'data-navstatus="' + data.nav_status + '" ';
1081
  html += 'data-linktarget="' + data.link_target + '">'
1082
  html += 'Quick Edit</a>';
 
 
 
 
1083
  html += '</div></div></div></li>';
1084
 
1085
  if ( data.parent_id === "0" ){
@@ -1160,7 +1193,7 @@ jQuery(function($){
1160
  type: 'post',
1161
  datatype: 'json',
1162
  data: {
1163
- action : 'npnesttoggle',
1164
  nonce : nestedpages.np_nonce,
1165
  ids : ids
1166
  },
@@ -1306,7 +1339,7 @@ jQuery(function($){
1306
  url: ajaxurl,
1307
  type: 'post',
1308
  datatype: 'json',
1309
- data: $(form).serialize() + '&action=npnewchild&nonce=' + nestedpages.np_nonce + '&syncmenu=' + syncmenu,
1310
  success: function(data){
1311
  if (data.status === 'error'){
1312
  np_remove_qe_loading(form);
17
  $(document).ready(function(){
18
  add_remove_submenu_toggles();
19
  np_set_borders();
20
+ set_nested_margins();
21
  });
22
 
23
  /**
30
  $(submenu).toggle();
31
  np_set_borders();
32
  np_sync_user_toggles();
33
+ set_nested_margins();
34
  });
35
 
36
  /**
102
  });
103
  }
104
 
105
+ /**
106
+ * Adjust nested margins
107
+ * @since 1.1.10
108
+ */
109
+ function set_nested_margins()
110
+ {
111
+ var lists = $('.nestedpages').find('.nplist');
112
+ $.each(lists, function(i, v){
113
+
114
+ var parent_count = $(this).parents('.nplist').length;
115
+ var padding = 56;
116
+ if ( parent_count > 0 ){
117
+ var padding = ( parent_count * 20 ) + padding;
118
+ $(this).find('.row-inner').css('padding-left', padding + 'px');
119
+ } else {
120
+ $(this).find('.row-inner').css('padding-left', '0px');
121
+ }
122
+
123
+ });
124
+ }
125
+
126
  /**
127
  * Toggle between showing published pages and all
128
  */
180
  toleranceElement: '> .row',
181
  handle: '.handle',
182
  placeholder: "ui-sortable-placeholder",
183
+ maxLevels: 0,
184
  start: function(e, ui){
185
  ui.placeholder.height(ui.item.height());
186
  },
192
  function(){
193
  add_remove_submenu_toggles();
194
  np_set_borders();
195
+ set_nested_margins();
196
  }, 100
197
  );
198
  submit_sortable_form();
222
  {
223
  var parentList = $(ui.placeholder).parent('ol');
224
  if ( !$(parentList).is(':visible') ){
225
+ $(parentList).addClass('nplist');
226
  $(parentList).show();
227
  }
228
  }
311
  type: 'post',
312
  datatype: 'json',
313
  data: {
314
+ action : 'npsyncMenu',
315
  nonce : nestedpages.np_nonce,
316
  syncmenu : setting
317
  },
417
  // Add Array of Taxonomies to the data object
418
  data.h_taxonomies = [];
419
  data.f_taxonomies = [];
420
+
421
  var classes = $(parent_li).attr('class').split(/\s+/);
422
  for ( i = 0; i < classes.length; i++ ){
423
  if ( classes[i].substring(0, 3) === 'in-'){
557
  type: 'post',
558
  datatype: 'json',
559
  data : {
560
+ action : 'npgetTaxonomies',
561
  nonce : nestedpages.np_nonce,
562
  terms : taxonomies
563
  },
573
  */
574
  function populate_flat_taxonomies(terms)
575
  {
576
+ if ( terms ){
577
+ $.each(terms, function(i, v){
578
+ var textarea = $('#' + i);
579
+ $(textarea).val(v.join(','));
580
+ });
581
+ }
582
  }
583
 
584
 
638
  url: ajaxurl,
639
  type: 'post',
640
  datatype: 'json',
641
+ data: $(form).serialize() + '&action=npquickEdit&nonce=' + nestedpages.np_nonce + '&syncmenu=' + syncmenu,
642
  success: function(data){
643
  if (data.status === 'error'){
644
  np_remove_qe_loading(form);
936
  url: ajaxurl,
937
  type: 'post',
938
  datatype: 'json',
939
+ data: $(form).serialize() + '&action=npquickEditLink&nonce=' + nestedpages.np_nonce + '&syncmenu=' + syncmenu,
940
  success: function(data){
941
  if (data.status === 'error'){
942
  np_remove_qe_loading(form);
1053
  url: ajaxurl,
1054
  type: 'post',
1055
  datatype: 'json',
1056
+ data: data + '&action=npnewLink&nonce=' + nestedpages.np_nonce + '&syncmenu=' + syncmenu,
1057
  success: function(data){
1058
  if (data.status === 'error'){
1059
  np_remove_link_loading();
1109
  html += 'data-navstatus="' + data.nav_status + '" ';
1110
  html += 'data-linktarget="' + data.link_target + '">'
1111
  html += 'Quick Edit</a>';
1112
+
1113
+ // Delete Link
1114
+ html += '<a href="' + data.delete_link + '" class="np-btn np-btn-trash"><i class="np-icon-remove"></i></a>';
1115
+
1116
  html += '</div></div></div></li>';
1117
 
1118
  if ( data.parent_id === "0" ){
1193
  type: 'post',
1194
  datatype: 'json',
1195
  data: {
1196
+ action : 'npnestToggle',
1197
  nonce : nestedpages.np_nonce,
1198
  ids : ids
1199
  },
1339
  url: ajaxurl,
1340
  type: 'post',
1341
  datatype: 'json',
1342
+ data: $(form).serialize() + '&action=npnewChild&nonce=' + nestedpages.np_nonce + '&syncmenu=' + syncmenu,
1343
  success: function(data){
1344
  if (data.status === 'error'){
1345
  np_remove_qe_loading(form);
assets/js/nestedpages.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(t){function a(){var a=t(".nplist");t(".page-row").removeClass("no-border"),t.each(a,function(){t(this).find(".page-row:visible:first").addClass("no-border")})}function e(a){var e=t(a.placeholder).parents("ol").length,i=t(".sortable").width(),s=40*e-40,o=i-s;t(a.placeholder).width(o).css("margin-left",s+"px"),n(a)}function n(a){var e=t(a.placeholder).parent("ol");t(e).is(":visible")||t(e).show()}function s(){t(".child-toggle").each(function(){var a=t(this).parent(".row").parent("li");if(t(a).children("ol").length>0){var e=t(a).children("ol:visible").length>0?"np-icon-arrow-down":"np-icon-arrow-right";t(this).html('<a href="#"><i class="'+e+'"></i></a>')}else t(this).empty()})}function o(){t("#np-error").hide(),t("#nested-loading").show();var a=t(".np-sync-menu").is(":checked")?"sync":"nosync";list=t("ol.sortable").nestedSortable("toHierarchy",{startDepthCount:0}),t.ajax({url:ajaxurl,type:"post",datatype:"json",data:{action:"npsort",nonce:nestedpages.np_nonce,list:list,syncmenu:a},success:function(a){"error"===a.status?(t("#np-error").text(a.message).show(),t("#nested-loading").hide()):t("#nested-loading").hide()}})}function r(a){t.ajax({url:ajaxurl,type:"post",datatype:"json",data:{action:"npsyncmenu",nonce:nestedpages.np_nonce,syncmenu:a},success:function(t){"error"===t.status&&alert("There was an error saving the sync setting.")}})}function d(a){var e={id:t(a).attr("data-id"),title:t(a).attr("data-title"),slug:t(a).attr("data-slug"),author:t(a).attr("data-author"),cs:t(a).attr("data-commentstatus"),status:t(a).attr("data-status"),template:t(a).attr("data-template"),month:t(a).attr("data-month"),day:t(a).attr("data-day"),year:t(a).attr("data-year"),hour:t(a).attr("data-hour"),minute:t(a).attr("data-minute"),navstatus:t(a).attr("data-navstatus"),npstatus:t(a).attr("data-np-status"),navtitle:t(a).attr("data-navtitle"),navtitleattr:t(a).attr("data-navtitleattr"),navcss:t(a).attr("data-navcss"),linktarget:t(a).attr("data-linktarget"),password:t(a).attr("data-password")},n=t(a).closest(".row").parent("li");e.h_taxonomies=[],e.f_taxonomies=[];var s=t(n).attr("class").split(/\s+/);for(i=0;i<s.length;i++)"in-"===s[i].substring(0,3)&&e.h_taxonomies.push(s[i]),"inf-"===s[i].substring(0,4)&&e.f_taxonomies.push(s[i]);if(t(n).children("ol").length>0)var o=t(n).children("ol"),r=t(".quick-edit-form").clone().insertBefore(o);else var r=t(".quick-edit-form").clone().appendTo(n);t(r).siblings(".row").hide();l(r,e)}function l(a,e){if(t(a).find(".page_id").html("<em>Page ID:</em> "+e.id),t(a).find(".np_id").val(e.id),t(a).find(".np_title").val(e.title),t(a).find(".np_slug").val(e.slug),t(a).find(".np_author select").val(e.author),t(a).find(".np_template").val(e.template),t(a).find(".np_status").val(e.status),t(a).find(".np_nav_title").val(e.navtitle),t(a).find(".np_title_attribute").val(e.navtitleattr),t(a).find(".np_nav_css_classes").val(e.navcss),t(a).find(".post_password").val(e.password),"open"===e.cs&&t(a).find(".np_cs").prop("checked","checked"),"private"===e.status&&(t(a).find(".post_password").prop("readonly",!0),t(a).find(".keep_private").prop("checked",!0)),"hide"===e.npstatus?t(a).find(".np_status").prop("checked","checked"):t(a).find(".np_status").removeAttr("checked"),"hide"===e.navstatus?t(a).find(".np_nav_status").prop("checked","checked"):t(a).find(".np_nav_status").removeAttr("checked"),"_blank"===e.linktarget?t(a).find(".link_target").prop("checked","checked"):t(a).find(".link_target").removeAttr("checked"),"private"===e.status&&t(a).find(".np_status").val("publish"),t(a).find('select[name="mm"]').val(e.month),t(a).find('input[name="jj"]').val(e.day),t(a).find('input[name="aa"]').val(e.year),t(a).find('input[name="hh"]').val(e.hour),t(a).find('input[name="mn"]').val(e.minute),e.hasOwnProperty("h_taxonomies")){var n=e.h_taxonomies;for(i=0;i<n.length;i++){var s="#"+n[i];t(a).find(s).prop("checked","checked")}}f(),t(a).show(),e.hasOwnProperty("f_taxonomies")&&(c(e.f_taxonomies),h(a))}function c(t){var a={};for(i=0;i<t.length;i++){var e=t[i].split("-"),n=e.indexOf("nps"),s=e.splice(n+1);s=s.join("-");var o=t[i].split("-").splice(0,n);o.shift("inf");var r=o.join("-");r in a||(a[r]=[]);var d=a[r];d.push(s)}p(a)}function p(a){t.ajax({url:ajaxurl,type:"post",datatype:"json",data:{action:"gettax",nonce:nestedpages.np_nonce,terms:a},success:function(t){u(t.terms)}})}function u(a){t.each(a,function(a,e){var n=t("#"+a);t(n).val(e.join(","))})}function h(a){var e=t(a).find("[data-autotag]");t.each(e,function(){var a=t(this).attr("data-taxonomy");t(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+a,{multiple:!0,multipleSep:","})})}function v(){t(".np-quickedit-error").hide(),m(),t(".sortable .quick-edit").remove(),t(".row").show()}function f(){t("body").append('<div class="np-inline-overlay"></div>'),setTimeout(function(){t(".np-inline-overlay").addClass("active")},50)}function m(){t(".np-inline-overlay").removeClass("active").remove()}function g(a){t(".np-quickedit-error").hide();var e=t(".np-sync-menu").is(":checked")?"sync":"nosync";t.ajax({url:ajaxurl,type:"post",datatype:"json",data:t(a).serialize()+"&action=npquickedit&nonce="+nestedpages.np_nonce+"&syncmenu="+e,success:function(e){"error"===e.status?(x(a),t(a).find(".np-quickedit-error").text(e.message).show()):(x(a),_(a,e.post_data),C(a))}})}function _(a,e){var n=t(a).parent(".quick-edit").siblings(".row");t(n).find(".title").text(e.post_title);var i=t(n).find(".status");if(t(i).text("publish"!==e._status&&"future"!==e._status?"("+e._status+")":"private"===e.keep_private?"("+e.keep_private+")":""),""!==e.post_password){var s=t(i).text();s+=' <i class="np-icon-lock"></i>',t(i).html(s)}var o=t(n).find(".nav-status");t(o).text("hide"==e.nav_status?"(Hidden)":"");var r=t(n).parent("li");"hide"==e.np_status?(t(r).addClass("np-hide"),t(n).find(".status").after('<i class="np-icon-eye-blocked"></i>')):(t(r).removeClass("np-hide"),t(n).find(".np-icon-eye-blocked").remove());var d=t(n).find(".np-quick-edit");t(d).attr("data-id",e.post_id),t(d).attr("data-template",e.page_template),t(d).attr("data-title",e.post_title),t(d).attr("data-slug",e.post_name),t(d).attr("data-commentstatus",e.comment_status),t(d).attr("data-status",e._status),"private"===e.keep_private&&t(d).attr("data-status","private"),t(d).attr("data-author",e.post_author),t(d).attr("data-np-status",e.np_status),t(d).attr("data-password",e.post_password),t(d).attr("data-navstatus",e.nav_status),t(d).attr("data-navtitle",e.np_nav_title),t(d).attr("data-linktarget",e.link_target),t(d).attr("data-navtitleattr",e.np_title_attribute),t(d).attr("data-navcss",e.np_nav_css_classes),t(d).attr("data-month",e.mm),t(d).attr("data-day",e.jj),t(d).attr("data-year",e.aa),t(d).attr("data-hour",e.hh),t(d).attr("data-minute",e.mn),k(r),w(r,e),b(r,e),y(r,e)}function k(a){taxonomies=[];var e=t(a).attr("class").split(/\s+/);for(i=0;i<e.length;i++)"in-"===e[i].substring(0,3)&&t(a).removeClass(e[i]),"inf-"===e[i].substring(0,4)&&t(a).removeClass(e[i])}function w(a,e){if(e.hasOwnProperty("post_category")){var n=e.post_category;for(i=0;i<n.length;i++){var s="in-category-"+n[i];t(a).addClass(s)}}}function b(a,e){if(e.hasOwnProperty("tax_input")){var n=e.tax_input;t.each(n,function(e,n){for(i=0;i<n.length;i++){var s="in-"+e+"-"+n[i];t(a).addClass(s)}})}}function y(a,e){if(e.hasOwnProperty("flat_tax")){var n=e.flat_tax;t.each(n,function(e,n){for(i=0;i<n.length;i++){var s="inf-"+e+"-nps-"+n[i];t(a).addClass(s)}})}}function x(a){t(a).find(".np-save-quickedit, .np-save-quickedit-redirect, .np-save-newchild").removeAttr("disabled"),t(a).find(".np-qe-loading").hide()}function C(e){var n=t(e).parent(".quick-edit, .new-child").siblings(".row");t(n).addClass("np-updated"),t(n).show(),t(e).parent(".quick-edit, .new-child").remove(),m(),a(),setTimeout(function(){t(n).addClass("np-updated-show")},1500)}function q(a){var e={id:t(a).attr("data-id"),url:t(a).attr("data-url"),title:t(a).attr("data-title"),status:t(a).attr("data-status"),navstatus:t(a).attr("data-navstatus"),npstatus:t(a).attr("data-np-status"),linktarget:t(a).attr("data-linktarget"),parentid:t(a).attr("data-parentid"),navtitleattr:t(a).attr("data-navtitleattr"),navcss:t(a).attr("data-navcss")},n=t(a).closest(".row").parent("li");if(t(n).children("ol").length>0)var i=t(n).children("ol"),s=t(".quick-edit-form-redirect").clone().insertBefore(i);else var s=t(".quick-edit-form-redirect").clone().appendTo(n);t(s).siblings(".row").hide();t(s).show(),j(s,e)}function j(a,e){t(a).find(".np_id").val(e.id),t(a).find(".np_title").val(e.title),t(a).find(".np_author select").val(e.author),t(a).find(".np_status").val(e.status),t(a).find(".np_content").val(e.url),t(a).find(".np_parent_id").val(e.parentid),t(a).find(".np_title_attribute").val(e.navtitleattr),t(a).find(".np_nav_css_classes").val(e.navcss),"hide"===e.npstatus?t(a).find(".np_status").prop("checked","checked"):t(a).find(".np_status").removeAttr("checked"),"hide"===e.navstatus?t(a).find(".np_nav_status").prop("checked","checked"):t(a).find(".np_nav_status").removeAttr("checked"),"_blank"===e.linktarget?t(a).find(".link_target").prop("checked","checked"):t(a).find(".link_target").removeAttr("checked"),f(),t(a).show()}function D(a){t(".np-quickedit-error").hide();var e=t(".np-sync-menu").is(":checked")?"sync":"nosync";t.ajax({url:ajaxurl,type:"post",datatype:"json",data:t(a).serialize()+"&action=npquickeditredirect&nonce="+nestedpages.np_nonce+"&syncmenu="+e,success:function(e){"error"===e.status?(x(a),t(a).find(".np-quickedit-error").text(e.message).show()):(x(a),T(a,e.post_data),C(a))},error:function(){x(a),t(a).find(".np-quickedit-error").text("The form could not be saved at this time.").show()}})}function T(a,e){var n=t(a).parent(".quick-edit").siblings(".row");t(n).find(".title").html(e.post_title+' <i class="np-icon-link"></i>');var i=t(n).find(".status");t(i).text("publish"!==e._status&&"future"!==e._status?"("+e._status+")":"");var s=t(n).find(".nav-status");t(s).text("hide"==e.nav_status?"(Hidden)":"");var o=t(n).parent("li");"hide"==e.np_status?(t(o).addClass("np-hide"),t(n).find(".status").after('<i class="np-icon-eye-blocked"></i>')):(t(o).removeClass("np-hide"),t(n).find(".np-icon-eye-blocked").remove());var r=t(n).find(".np-quick-edit-redirect");t(r).attr("data-id",e.post_id),t(r).attr("data-title",e.post_title),t(r).attr("data-url",e.post_content),t(r).attr("data-status",e._status),t(r).attr("data-navstatus",e.nav_status),t(r).attr("data-np-status",e.np_status),t(r).attr("data-linktarget",e.link_target),t(r).attr("data-navtitleattr",e.np_title_attribute),t(r).attr("data-navcss",e.np_nav_css_classes)}function A(){t(".np-link-loading").hide(),t(".np-save-link").removeAttr("disabled")}function P(){t(".np-new-link-error").hide();var a=t(".np-new-link-form").serialize(),e=t(".np-sync-menu").is(":checked")?"sync":"nosync";t.ajax({url:ajaxurl,type:"post",datatype:"json",data:a+"&action=npnewredirect&nonce="+nestedpages.np_nonce+"&syncmenu="+e,success:function(a){"error"===a.status?(A(),t(".np-new-link-error").text(a.message).show()):(A(),I(a.post_data))}})}function I(a){var e='<li id="menuItem_'+a.id+'" class="page-row';"publish"===a._status&&(e+=" published"),e+='">',e+='<div class="row"><div class="child-toggle"></div><div class="row-inner"><i class="np-icon-sub-menu"></i><i class="handle np-icon-menu"></i><a href="'+a.np_link_content+'" class="page-link page-title" target="_blank"><span class="title">'+a.np_link_title+' <i class="np-icon-link"></i></span>',e+="publish"!==a._status?'<span class="status">'+a._status+"</span>":'<span class="status"></span>',"hide"===a.np_status&&(e+='<i class="np-icon-eye-blocked"></i>'),e+="hide"===a.nav_status?'<span class="nav-status">(Hidden)</span>':'<span class="nav-status"></span>',e+='</a><a href="#" class="np-toggle-edit"><i class="np-icon-pencil"></i></a><div class="action-buttons"><a href="#" class="np-btn np-quick-edit-redirect" ',e+='data-id="'+a.id+'"',e+='data-parentid="'+a.parent_id+'"',e+='data-title="'+a.np_link_title+'" ',e+='data-url="'+a.np_link_content+'" ',e+='data-status="'+a._status+'" ',e+='data-np-status="'+a.np_status+'" ',e+='data-navstatus="'+a.nav_status+'" ',e+='data-linktarget="'+a.link_target+'">',e+="Quick Edit</a>",e+="</div></div></div></li>","0"===a.parent_id?t(".nplist:first li:first").after(e):O(e,a),t("#np-link-modal").modal("hide");var n=t("#menuItem_"+a.id).find(".row");z(n)}function O(a,e){var n=t("#menuItem_"+e.parent_id);0===t(n).children("ol").length?(a='<ol class="sortable nplist" style="display:block;">'+a+"</ol>",t(n).append(a)):t(n).find("ol:first").prepend(a),s(),B()}function z(e){t(e).addClass("np-updated"),a(),setTimeout(function(){t(e).addClass("np-updated-show")},1500)}function H(){var a=[],e=t(".page-row:visible");return t.each(e,function(){var e=t(this).attr("id");a.push(e.replace("menuItem_",""))}),a}function B(){var a=H();t.ajax({url:ajaxurl,type:"post",datatype:"json",data:{action:"npnesttoggle",nonce:nestedpages.np_nonce,ids:a},success:function(t){"success"!==t.status&&console.log("There was an error saving toggled pages.")}})}function E(){t(".np-newchild-error").hide(),m(),t(".sortable .new-child").remove(),t(".row").show()}function S(a){var e=t(a).closest(".row").parent("li");if(t(e).children("ol").length>0)var n=t(e).children("ol"),i=t(".new-child-form").clone().insertBefore(n);else var i=t(".new-child-form").clone().appendTo(e);t(i).siblings(".row").hide();f(),t(i).find(".parent_name").html("<em>Parent:</em> "+t(a).attr("data-parentname")),t(i).find(".page_parent_id").val(t(a).attr("data-id")),t(i).show()}function Q(a){{var e='<li><i class="handle np-icon-menu"></i><div class="form-control new-child-row"><label>'+nestedpages.title+'</label><div><input type="text" name="post_title[]" class="np_title" placeholder="'+nestedpages.page_title+'" value="" /><a href="#" class="button-secondary np-remove-child">-</a></div></div></li>';t(a).siblings(".new-page-titles").append(e)}t(".new-page-titles").sortable({items:"li",handle:".handle"})}function L(a){var e=t(a).find(t(".new-child-row")).length;e>1?(t(a).find("h3 strong").text(nestedpages.add_child_pages),t(a).find(".np-save-newchild").text(nestedpages.add_pages+" ("+e+")")):(t(a).find("h3 strong").text(nestedpages.add_child),t(a).find(".np-save-newchild").text(nestedpages.add_page))}function F(a){t(".np-quickedit-error").hide();var e=t(".np-sync-menu").is(":checked")?"sync":"nosync";t.ajax({url:ajaxurl,type:"post",datatype:"json",data:t(a).serialize()+"&action=npnewchild&nonce="+nestedpages.np_nonce+"&syncmenu="+e,success:function(e){"error"===e.status?(x(a),t(a).find(".np-quickedit-error").text(e.message).show()):(x(a),G(a,e))},error:function(){x(a),t(a).find(".np-quickedit-error").text("The form could not be saved at this time.").show()}})}function G(a,e){var n=e.new_pages,o=t(a).parent(".new-child").parent(".page-row");0===t(o).children("ol").length&&t(o).append('<ol class="nplist"></ol>');var r=t(o).children("ol");for(i=0;i<n.length;i++)J(r,n[i]);t(r).show(),s(),C(a)}function J(a,e){var n='<li id="menuItem_'+e.id+'" class="page-row';"publish"===e.status&&(n+=" published"),n+='">',n+='<div class="row">',n+='<div class="child-toggle"></div>',n+='<div class="row-inner">',n+='<i class="np-icon-sub-menu"></i><i class="handle np-icon-menu"></i>',n+='<a href="'+e.edit_link+'" class="page-link page-title">',n+='<span class="title">'+e.title+"</span>",n+="Publish"!==e.status?'<span class="status">('+e.status+")</span>":'<span class="status"></span>',n+='<span class="nav-status"></span><span class="edit-indicator"><i class="np-icon-pencil"></i>Edit</span>',n+="</a>",n+='<div class="action-buttons">',n+='<a href="#" class="np-btn open-redirect-modal" data-parentid="'+e.id+'"><i class="np-icon-link"></i></a>',n+='<a href="#" class="np-btn add-new-child" data-id="'+e.id+'" data-parentname="'+e.title+'">'+nestedpages.add_child_short+"</a>",n+='<a href="#" class="np-btn np-quick-edit" data-id="'+e.id+'" data-template="'+e.template+'" data-title="'+e.title+'" data-slug="'+e.slug+'" data-commentstatus="closed" data-status="'+e.status.toLowerCase()+'" data-np-status="show" data-navstatus="show" data-author="'+e.author+'" data-month="'+e.month+'" data-day="'+e.day+'" data-year="'+e.year+'" data-hour="'+e.hour+'" data-minute="'+e.minute+'">'+nestedpages.quick_edit+"</a>",n+='<a href="'+e.view_link+'" class="np-btn" target="_blank">'+nestedpages.view+"</a>",n+='<a href="'+e.delete_link+'" class="np-btn np-btn-trash"><i class="np-icon-remove"></i></a>',n+="</div><!-- .action-buttons -->",n+="</div><!-- .row-inner --></div><!-- .row -->",n+="</li>",t(a).append(n)}t(document).ready(function(){s(),a()}),t(document).on("click",".child-toggle a",function(e){e.preventDefault();var n=t(this).parent(".child-toggle").parent(".row").siblings("ol");t(this).find("i").toggleClass("np-icon-arrow-down").toggleClass("np-icon-arrow-right"),t(n).toggle(),a(),B()}),t(document).on("click",".nestedpages-toggleall a",function(e){e.preventDefault(),"closed"==t(this).attr("data-toggle")?(t(".nestedpages ol li ol").show(),t(this).attr("data-toggle","opened"),t(this).text(nestedpages.collapse_text),t(".child-toggle i").removeClass("np-icon-arrow-right").addClass("np-icon-arrow-down"),v(),a()):(t(".nestedpages ol li ol").hide(),t(this).attr("data-toggle","closed"),t(this).text(nestedpages.expand_text),t(".child-toggle i").removeClass("np-icon-arrow-down").addClass("np-icon-arrow-right"),v(),a()),B()}),t(document).on("click",".np-toggle-hidden",function(e){e.preventDefault();var n=t(this).attr("href");"show"===n?(t(this).attr("href","hide"),t(this).text(nestedpages.show_hidden),t(".np-hide").removeClass("shown").hide(),a()):(t(this).attr("href","show"),t(this).text(nestedpages.hide_hidden),t(".np-hide").addClass("shown").show(),a())}),t(".np-tabs a").on("click",function(a){a.preventDefault(),t(".np-tabs a").removeClass("active"),t(this).addClass("active");var e=t(this).attr("href");t(".np-tabbed-content").hide(),t(e).show()}),t(document).on("click",".np-toggle-publish",function(a){a.preventDefault();var e=t(this).attr("href");t(".np-toggle-publish").removeClass("active"),t(this).addClass("active"),"#published"==e?(t(".nplist .page-row").hide(),t(".nplist .published").show()):t(".nplist .page-row").show()}),t(document).on("click",".np-toggle-edit",function(a){a.preventDefault();var e=t(this).siblings(".action-buttons");t(e).is(":visible")?(t(this).removeClass("active"),t(e).hide()):(t(this).addClass("active"),t(e).show())});var K=function(){var t=0;return function(a,e){clearTimeout(t),t=setTimeout(a,e)}}();t(window).resize(function(){K(function(){t(".action-buttons").removeAttr("style"),t(".np-toggle-edit").removeClass("active")},500)}),t(document).ready(function(){t(".sortable").not(".no-sort").nestedSortable({items:"li",toleranceElement:"> .row",handle:".handle",placeholder:"ui-sortable-placeholder",start:function(t,a){a.placeholder.height(a.item.height())},sort:function(t,a){e(a)},stop:function(){setTimeout(function(){s(),a()},100),o()},update:function(){}})}),t(document).ready(function(){"1"===nestedpages.syncmenu&&r("sync")}),t(".np-sync-menu").on("change",function(){var a=t(this).is(":checked")?"sync":"nosync";r(a)}),t(document).on("click",".np-quick-edit",function(a){a.preventDefault(),v(),d(t(this))}),t(document).on("click",".np-inline-overlay",function(){v(),E()}),t(document).on("click",".np-cancel-quickedit",function(a){var e=t(this).parents(".page-row");v(e),a.preventDefault()}),t(document).on("click",".np-save-quickedit",function(a){a.preventDefault(),t(".row").removeClass("np-updated").removeClass("np-updated-show");var e=t(this).parents("form");t(this).attr("disabled","disabled"),t(e).find(".np-qe-loading").show(),g(e)}),t(document).on("click",".np-toggle-taxonomies",function(a){t(this).parents("form").find(".np-taxonomies").toggle(),a.preventDefault()}),t(document).on("click",".np-toggle-menuoptions",function(a){a.preventDefault(),t(this).parents("form").find(".np-menuoptions").toggle()}),t(document).on("change",".keep_private",function(){this.checked?t(".post_password").val("").prop("readonly",!0):t(".post_password").prop("readonly",!1)}),t(document).on("click",".np-quick-edit-redirect",function(a){a.preventDefault(),v(),q(t(this))}),t(document).on("click",".np-save-quickedit-redirect",function(a){a.preventDefault(),t(".row").removeClass("np-updated").removeClass("np-updated-show");var e=t(this).parents("form");t(this).attr("disabled","disabled"),t(e).find(".np-qe-loading").show(),D(e)}),t(document).on("click",".open-redirect-modal",function(a){a.preventDefault();var e=t(this).attr("data-parentid");t("#np-link-modal").find("input").val(""),t("#np-link-modal .parent_id").val(e),t("#np-add-link-title").text("0"===e?nestedpages.add_link:nestedpages.add_child_link),t("#np-link-modal").modal("show")}),t(document).on("click",".np-save-link",function(a){a.preventDefault(),t(".np-new-link-error").hide(),t(".np-link-loading").show(),t(this).attr("disabled","disabled"),P()}),t(document).on("click",".np-cancel-newchild",function(t){t.preventDefault(),E()}),t(document).on("click",".add-new-child",function(a){a.preventDefault(),S(t(this))}),t(document).on("click",".add-new-child-row",function(a){a.preventDefault(),Q(t(this));var e=t(this).parents("form");L(e)}),t(document).on("click",".np-remove-child",function(a){a.preventDefault();var e=t(this).parents("form");t(this).parents(".new-child-row").parent("li").remove(),L(e)}),t(document).on("click",".np-save-newchild",function(a){a.preventDefault(),t(this).prop("disabled","disabled");var e=t(this).parents("form");t(e).find(".np-qe-loading").show(),F(e)})});
1
+ jQuery(function(t){function a(){var a=t(".nplist");t(".page-row").removeClass("no-border"),t.each(a,function(){t(this).find(".page-row:visible:first").addClass("no-border")})}function e(){var a=t(".nestedpages").find(".nplist");t.each(a,function(){var a=t(this).parents(".nplist").length,e=56;if(a>0){var e=20*a+e;t(this).find(".row-inner").css("padding-left",e+"px")}else t(this).find(".row-inner").css("padding-left","0px")})}function n(a){var e=t(a.placeholder).parents("ol").length,n=t(".sortable").width(),i=40*e-40,o=n-i;t(a.placeholder).width(o).css("margin-left",i+"px"),s(a)}function s(a){var e=t(a.placeholder).parent("ol");t(e).is(":visible")||(t(e).addClass("nplist"),t(e).show())}function o(){t(".child-toggle").each(function(){var a=t(this).parent(".row").parent("li");if(t(a).children("ol").length>0){var e=t(a).children("ol:visible").length>0?"np-icon-arrow-down":"np-icon-arrow-right";t(this).html('<a href="#"><i class="'+e+'"></i></a>')}else t(this).empty()})}function d(){t("#np-error").hide(),t("#nested-loading").show();var a=t(".np-sync-menu").is(":checked")?"sync":"nosync";list=t("ol.sortable").nestedSortable("toHierarchy",{startDepthCount:0}),t.ajax({url:ajaxurl,type:"post",datatype:"json",data:{action:"npsort",nonce:nestedpages.np_nonce,list:list,syncmenu:a},success:function(a){"error"===a.status?(t("#np-error").text(a.message).show(),t("#nested-loading").hide()):t("#nested-loading").hide()}})}function r(a){t.ajax({url:ajaxurl,type:"post",datatype:"json",data:{action:"npsyncMenu",nonce:nestedpages.np_nonce,syncmenu:a},success:function(t){"error"===t.status&&alert("There was an error saving the sync setting.")}})}function l(a){var e={id:t(a).attr("data-id"),title:t(a).attr("data-title"),slug:t(a).attr("data-slug"),author:t(a).attr("data-author"),cs:t(a).attr("data-commentstatus"),status:t(a).attr("data-status"),template:t(a).attr("data-template"),month:t(a).attr("data-month"),day:t(a).attr("data-day"),year:t(a).attr("data-year"),hour:t(a).attr("data-hour"),minute:t(a).attr("data-minute"),navstatus:t(a).attr("data-navstatus"),npstatus:t(a).attr("data-np-status"),navtitle:t(a).attr("data-navtitle"),navtitleattr:t(a).attr("data-navtitleattr"),navcss:t(a).attr("data-navcss"),linktarget:t(a).attr("data-linktarget"),password:t(a).attr("data-password")},n=t(a).closest(".row").parent("li");e.h_taxonomies=[],e.f_taxonomies=[];var s=t(n).attr("class").split(/\s+/);for(i=0;i<s.length;i++)"in-"===s[i].substring(0,3)&&e.h_taxonomies.push(s[i]),"inf-"===s[i].substring(0,4)&&e.f_taxonomies.push(s[i]);if(t(n).children("ol").length>0)var o=t(n).children("ol"),d=t(".quick-edit-form").clone().insertBefore(o);else var d=t(".quick-edit-form").clone().appendTo(n);t(d).siblings(".row").hide();c(d,e)}function c(a,e){if(t(a).find(".page_id").html("<em>Page ID:</em> "+e.id),t(a).find(".np_id").val(e.id),t(a).find(".np_title").val(e.title),t(a).find(".np_slug").val(e.slug),t(a).find(".np_author select").val(e.author),t(a).find(".np_template").val(e.template),t(a).find(".np_status").val(e.status),t(a).find(".np_nav_title").val(e.navtitle),t(a).find(".np_title_attribute").val(e.navtitleattr),t(a).find(".np_nav_css_classes").val(e.navcss),t(a).find(".post_password").val(e.password),"open"===e.cs&&t(a).find(".np_cs").prop("checked","checked"),"private"===e.status&&(t(a).find(".post_password").prop("readonly",!0),t(a).find(".keep_private").prop("checked",!0)),"hide"===e.npstatus?t(a).find(".np_status").prop("checked","checked"):t(a).find(".np_status").removeAttr("checked"),"hide"===e.navstatus?t(a).find(".np_nav_status").prop("checked","checked"):t(a).find(".np_nav_status").removeAttr("checked"),"_blank"===e.linktarget?t(a).find(".link_target").prop("checked","checked"):t(a).find(".link_target").removeAttr("checked"),"private"===e.status&&t(a).find(".np_status").val("publish"),t(a).find('select[name="mm"]').val(e.month),t(a).find('input[name="jj"]').val(e.day),t(a).find('input[name="aa"]').val(e.year),t(a).find('input[name="hh"]').val(e.hour),t(a).find('input[name="mn"]').val(e.minute),e.hasOwnProperty("h_taxonomies")){var n=e.h_taxonomies;for(i=0;i<n.length;i++){var s="#"+n[i];t(a).find(s).prop("checked","checked")}}m(),t(a).show(),e.hasOwnProperty("f_taxonomies")&&(p(e.f_taxonomies),v(a))}function p(t){var a={};for(i=0;i<t.length;i++){var e=t[i].split("-"),n=e.indexOf("nps"),s=e.splice(n+1);s=s.join("-");var o=t[i].split("-").splice(0,n);o.shift("inf");var d=o.join("-");d in a||(a[d]=[]);var r=a[d];r.push(s)}u(a)}function u(a){t.ajax({url:ajaxurl,type:"post",datatype:"json",data:{action:"npgetTaxonomies",nonce:nestedpages.np_nonce,terms:a},success:function(t){h(t.terms)}})}function h(a){a&&t.each(a,function(a,e){var n=t("#"+a);t(n).val(e.join(","))})}function v(a){var e=t(a).find("[data-autotag]");t.each(e,function(){var a=t(this).attr("data-taxonomy");t(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+a,{multiple:!0,multipleSep:","})})}function f(){t(".np-quickedit-error").hide(),g(),t(".sortable .quick-edit").remove(),t(".row").show()}function m(){t("body").append('<div class="np-inline-overlay"></div>'),setTimeout(function(){t(".np-inline-overlay").addClass("active")},50)}function g(){t(".np-inline-overlay").removeClass("active").remove()}function _(a){t(".np-quickedit-error").hide();var e=t(".np-sync-menu").is(":checked")?"sync":"nosync";t.ajax({url:ajaxurl,type:"post",datatype:"json",data:t(a).serialize()+"&action=npquickEdit&nonce="+nestedpages.np_nonce+"&syncmenu="+e,success:function(e){"error"===e.status?(C(a),t(a).find(".np-quickedit-error").text(e.message).show()):(C(a),k(a,e.post_data),q(a))}})}function k(a,e){var n=t(a).parent(".quick-edit").siblings(".row");t(n).find(".title").text(e.post_title);var i=t(n).find(".status");if(t(i).text("publish"!==e._status&&"future"!==e._status?"("+e._status+")":"private"===e.keep_private?"("+e.keep_private+")":""),""!==e.post_password){var s=t(i).text();s+=' <i class="np-icon-lock"></i>',t(i).html(s)}var o=t(n).find(".nav-status");t(o).text("hide"==e.nav_status?"(Hidden)":"");var d=t(n).parent("li");"hide"==e.np_status?(t(d).addClass("np-hide"),t(n).find(".status").after('<i class="np-icon-eye-blocked"></i>')):(t(d).removeClass("np-hide"),t(n).find(".np-icon-eye-blocked").remove());var r=t(n).find(".np-quick-edit");t(r).attr("data-id",e.post_id),t(r).attr("data-template",e.page_template),t(r).attr("data-title",e.post_title),t(r).attr("data-slug",e.post_name),t(r).attr("data-commentstatus",e.comment_status),t(r).attr("data-status",e._status),"private"===e.keep_private&&t(r).attr("data-status","private"),t(r).attr("data-author",e.post_author),t(r).attr("data-np-status",e.np_status),t(r).attr("data-password",e.post_password),t(r).attr("data-navstatus",e.nav_status),t(r).attr("data-navtitle",e.np_nav_title),t(r).attr("data-linktarget",e.link_target),t(r).attr("data-navtitleattr",e.np_title_attribute),t(r).attr("data-navcss",e.np_nav_css_classes),t(r).attr("data-month",e.mm),t(r).attr("data-day",e.jj),t(r).attr("data-year",e.aa),t(r).attr("data-hour",e.hh),t(r).attr("data-minute",e.mn),w(d),b(d,e),y(d,e),x(d,e)}function w(a){taxonomies=[];var e=t(a).attr("class").split(/\s+/);for(i=0;i<e.length;i++)"in-"===e[i].substring(0,3)&&t(a).removeClass(e[i]),"inf-"===e[i].substring(0,4)&&t(a).removeClass(e[i])}function b(a,e){if(e.hasOwnProperty("post_category")){var n=e.post_category;for(i=0;i<n.length;i++){var s="in-category-"+n[i];t(a).addClass(s)}}}function y(a,e){if(e.hasOwnProperty("tax_input")){var n=e.tax_input;t.each(n,function(e,n){for(i=0;i<n.length;i++){var s="in-"+e+"-"+n[i];t(a).addClass(s)}})}}function x(a,e){if(e.hasOwnProperty("flat_tax")){var n=e.flat_tax;t.each(n,function(e,n){for(i=0;i<n.length;i++){var s="inf-"+e+"-nps-"+n[i];t(a).addClass(s)}})}}function C(a){t(a).find(".np-save-quickedit, .np-save-quickedit-redirect, .np-save-newchild").removeAttr("disabled"),t(a).find(".np-qe-loading").hide()}function q(e){var n=t(e).parent(".quick-edit, .new-child").siblings(".row");t(n).addClass("np-updated"),t(n).show(),t(e).parent(".quick-edit, .new-child").remove(),g(),a(),setTimeout(function(){t(n).addClass("np-updated-show")},1500)}function j(a){var e={id:t(a).attr("data-id"),url:t(a).attr("data-url"),title:t(a).attr("data-title"),status:t(a).attr("data-status"),navstatus:t(a).attr("data-navstatus"),npstatus:t(a).attr("data-np-status"),linktarget:t(a).attr("data-linktarget"),parentid:t(a).attr("data-parentid"),navtitleattr:t(a).attr("data-navtitleattr"),navcss:t(a).attr("data-navcss")},n=t(a).closest(".row").parent("li");if(t(n).children("ol").length>0)var i=t(n).children("ol"),s=t(".quick-edit-form-redirect").clone().insertBefore(i);else var s=t(".quick-edit-form-redirect").clone().appendTo(n);t(s).siblings(".row").hide();t(s).show(),D(s,e)}function D(a,e){t(a).find(".np_id").val(e.id),t(a).find(".np_title").val(e.title),t(a).find(".np_author select").val(e.author),t(a).find(".np_status").val(e.status),t(a).find(".np_content").val(e.url),t(a).find(".np_parent_id").val(e.parentid),t(a).find(".np_title_attribute").val(e.navtitleattr),t(a).find(".np_nav_css_classes").val(e.navcss),"hide"===e.npstatus?t(a).find(".np_status").prop("checked","checked"):t(a).find(".np_status").removeAttr("checked"),"hide"===e.navstatus?t(a).find(".np_nav_status").prop("checked","checked"):t(a).find(".np_nav_status").removeAttr("checked"),"_blank"===e.linktarget?t(a).find(".link_target").prop("checked","checked"):t(a).find(".link_target").removeAttr("checked"),m(),t(a).show()}function T(a){t(".np-quickedit-error").hide();var e=t(".np-sync-menu").is(":checked")?"sync":"nosync";t.ajax({url:ajaxurl,type:"post",datatype:"json",data:t(a).serialize()+"&action=npquickEditLink&nonce="+nestedpages.np_nonce+"&syncmenu="+e,success:function(e){"error"===e.status?(C(a),t(a).find(".np-quickedit-error").text(e.message).show()):(C(a),A(a,e.post_data),q(a))},error:function(){C(a),t(a).find(".np-quickedit-error").text("The form could not be saved at this time.").show()}})}function A(a,e){var n=t(a).parent(".quick-edit").siblings(".row");t(n).find(".title").html(e.post_title+' <i class="np-icon-link"></i>');var i=t(n).find(".status");t(i).text("publish"!==e._status&&"future"!==e._status?"("+e._status+")":"");var s=t(n).find(".nav-status");t(s).text("hide"==e.nav_status?"(Hidden)":"");var o=t(n).parent("li");"hide"==e.np_status?(t(o).addClass("np-hide"),t(n).find(".status").after('<i class="np-icon-eye-blocked"></i>')):(t(o).removeClass("np-hide"),t(n).find(".np-icon-eye-blocked").remove());var d=t(n).find(".np-quick-edit-redirect");t(d).attr("data-id",e.post_id),t(d).attr("data-title",e.post_title),t(d).attr("data-url",e.post_content),t(d).attr("data-status",e._status),t(d).attr("data-navstatus",e.nav_status),t(d).attr("data-np-status",e.np_status),t(d).attr("data-linktarget",e.link_target),t(d).attr("data-navtitleattr",e.np_title_attribute),t(d).attr("data-navcss",e.np_nav_css_classes)}function P(){t(".np-link-loading").hide(),t(".np-save-link").removeAttr("disabled")}function I(){t(".np-new-link-error").hide();var a=t(".np-new-link-form").serialize(),e=t(".np-sync-menu").is(":checked")?"sync":"nosync";t.ajax({url:ajaxurl,type:"post",datatype:"json",data:a+"&action=npnewLink&nonce="+nestedpages.np_nonce+"&syncmenu="+e,success:function(a){"error"===a.status?(P(),t(".np-new-link-error").text(a.message).show()):(P(),O(a.post_data))}})}function O(a){var e='<li id="menuItem_'+a.id+'" class="page-row';"publish"===a._status&&(e+=" published"),e+='">',e+='<div class="row"><div class="child-toggle"></div><div class="row-inner"><i class="np-icon-sub-menu"></i><i class="handle np-icon-menu"></i><a href="'+a.np_link_content+'" class="page-link page-title" target="_blank"><span class="title">'+a.np_link_title+' <i class="np-icon-link"></i></span>',e+="publish"!==a._status?'<span class="status">'+a._status+"</span>":'<span class="status"></span>',"hide"===a.np_status&&(e+='<i class="np-icon-eye-blocked"></i>'),e+="hide"===a.nav_status?'<span class="nav-status">(Hidden)</span>':'<span class="nav-status"></span>',e+='</a><a href="#" class="np-toggle-edit"><i class="np-icon-pencil"></i></a><div class="action-buttons"><a href="#" class="np-btn np-quick-edit-redirect" ',e+='data-id="'+a.id+'"',e+='data-parentid="'+a.parent_id+'"',e+='data-title="'+a.np_link_title+'" ',e+='data-url="'+a.np_link_content+'" ',e+='data-status="'+a._status+'" ',e+='data-np-status="'+a.np_status+'" ',e+='data-navstatus="'+a.nav_status+'" ',e+='data-linktarget="'+a.link_target+'">',e+="Quick Edit</a>",e+='<a href="'+a.delete_link+'" class="np-btn np-btn-trash"><i class="np-icon-remove"></i></a>',e+="</div></div></div></li>","0"===a.parent_id?t(".nplist:first li:first").after(e):z(e,a),t("#np-link-modal").modal("hide");var n=t("#menuItem_"+a.id).find(".row");E(n)}function z(a,e){var n=t("#menuItem_"+e.parent_id);0===t(n).children("ol").length?(a='<ol class="sortable nplist" style="display:block;">'+a+"</ol>",t(n).append(a)):t(n).find("ol:first").prepend(a),o(),L()}function E(e){t(e).addClass("np-updated"),a(),setTimeout(function(){t(e).addClass("np-updated-show")},1500)}function H(){var a=[],e=t(".page-row:visible");return t.each(e,function(){var e=t(this).attr("id");a.push(e.replace("menuItem_",""))}),a}function L(){var a=H();t.ajax({url:ajaxurl,type:"post",datatype:"json",data:{action:"npnestToggle",nonce:nestedpages.np_nonce,ids:a},success:function(t){"success"!==t.status&&console.log("There was an error saving toggled pages.")}})}function B(){t(".np-newchild-error").hide(),g(),t(".sortable .new-child").remove(),t(".row").show()}function S(a){var e=t(a).closest(".row").parent("li");if(t(e).children("ol").length>0)var n=t(e).children("ol"),i=t(".new-child-form").clone().insertBefore(n);else var i=t(".new-child-form").clone().appendTo(e);t(i).siblings(".row").hide();m(),t(i).find(".parent_name").html("<em>Parent:</em> "+t(a).attr("data-parentname")),t(i).find(".page_parent_id").val(t(a).attr("data-id")),t(i).show()}function Q(a){{var e='<li><i class="handle np-icon-menu"></i><div class="form-control new-child-row"><label>'+nestedpages.title+'</label><div><input type="text" name="post_title[]" class="np_title" placeholder="'+nestedpages.page_title+'" value="" /><a href="#" class="button-secondary np-remove-child">-</a></div></div></li>';t(a).siblings(".new-page-titles").append(e)}t(".new-page-titles").sortable({items:"li",handle:".handle"})}function M(a){var e=t(a).find(t(".new-child-row")).length;e>1?(t(a).find("h3 strong").text(nestedpages.add_child_pages),t(a).find(".np-save-newchild").text(nestedpages.add_pages+" ("+e+")")):(t(a).find("h3 strong").text(nestedpages.add_child),t(a).find(".np-save-newchild").text(nestedpages.add_page))}function F(a){t(".np-quickedit-error").hide();var e=t(".np-sync-menu").is(":checked")?"sync":"nosync";t.ajax({url:ajaxurl,type:"post",datatype:"json",data:t(a).serialize()+"&action=npnewChild&nonce="+nestedpages.np_nonce+"&syncmenu="+e,success:function(e){"error"===e.status?(C(a),t(a).find(".np-quickedit-error").text(e.message).show()):(C(a),G(a,e))},error:function(){C(a),t(a).find(".np-quickedit-error").text("The form could not be saved at this time.").show()}})}function G(a,e){var n=e.new_pages,s=t(a).parent(".new-child").parent(".page-row");0===t(s).children("ol").length&&t(s).append('<ol class="nplist"></ol>');var d=t(s).children("ol");for(i=0;i<n.length;i++)J(d,n[i]);t(d).show(),o(),q(a)}function J(a,e){var n='<li id="menuItem_'+e.id+'" class="page-row';"publish"===e.status&&(n+=" published"),n+='">',n+='<div class="row">',n+='<div class="child-toggle"></div>',n+='<div class="row-inner">',n+='<i class="np-icon-sub-menu"></i><i class="handle np-icon-menu"></i>',n+='<a href="'+e.edit_link+'" class="page-link page-title">',n+='<span class="title">'+e.title+"</span>",n+="Publish"!==e.status?'<span class="status">('+e.status+")</span>":'<span class="status"></span>',n+='<span class="nav-status"></span><span class="edit-indicator"><i class="np-icon-pencil"></i>Edit</span>',n+="</a>",n+='<div class="action-buttons">',n+='<a href="#" class="np-btn open-redirect-modal" data-parentid="'+e.id+'"><i class="np-icon-link"></i></a>',n+='<a href="#" class="np-btn add-new-child" data-id="'+e.id+'" data-parentname="'+e.title+'">'+nestedpages.add_child_short+"</a>",n+='<a href="#" class="np-btn np-quick-edit" data-id="'+e.id+'" data-template="'+e.template+'" data-title="'+e.title+'" data-slug="'+e.slug+'" data-commentstatus="closed" data-status="'+e.status.toLowerCase()+'" data-np-status="show" data-navstatus="show" data-author="'+e.author+'" data-month="'+e.month+'" data-day="'+e.day+'" data-year="'+e.year+'" data-hour="'+e.hour+'" data-minute="'+e.minute+'">'+nestedpages.quick_edit+"</a>",n+='<a href="'+e.view_link+'" class="np-btn" target="_blank">'+nestedpages.view+"</a>",n+='<a href="'+e.delete_link+'" class="np-btn np-btn-trash"><i class="np-icon-remove"></i></a>',n+="</div><!-- .action-buttons -->",n+="</div><!-- .row-inner --></div><!-- .row -->",n+="</li>",t(a).append(n)}t(document).ready(function(){o(),a(),e()}),t(document).on("click",".child-toggle a",function(n){n.preventDefault();var i=t(this).parent(".child-toggle").parent(".row").siblings("ol");t(this).find("i").toggleClass("np-icon-arrow-down").toggleClass("np-icon-arrow-right"),t(i).toggle(),a(),L(),e()}),t(document).on("click",".nestedpages-toggleall a",function(e){e.preventDefault(),"closed"==t(this).attr("data-toggle")?(t(".nestedpages ol li ol").show(),t(this).attr("data-toggle","opened"),t(this).text(nestedpages.collapse_text),t(".child-toggle i").removeClass("np-icon-arrow-right").addClass("np-icon-arrow-down"),f(),a()):(t(".nestedpages ol li ol").hide(),t(this).attr("data-toggle","closed"),t(this).text(nestedpages.expand_text),t(".child-toggle i").removeClass("np-icon-arrow-down").addClass("np-icon-arrow-right"),f(),a()),L()}),t(document).on("click",".np-toggle-hidden",function(e){e.preventDefault();var n=t(this).attr("href");"show"===n?(t(this).attr("href","hide"),t(this).text(nestedpages.show_hidden),t(".np-hide").removeClass("shown").hide(),a()):(t(this).attr("href","show"),t(this).text(nestedpages.hide_hidden),t(".np-hide").addClass("shown").show(),a())}),t(".np-tabs a").on("click",function(a){a.preventDefault(),t(".np-tabs a").removeClass("active"),t(this).addClass("active");var e=t(this).attr("href");t(".np-tabbed-content").hide(),t(e).show()}),t(document).on("click",".np-toggle-publish",function(a){a.preventDefault();var e=t(this).attr("href");t(".np-toggle-publish").removeClass("active"),t(this).addClass("active"),"#published"==e?(t(".nplist .page-row").hide(),t(".nplist .published").show()):t(".nplist .page-row").show()}),t(document).on("click",".np-toggle-edit",function(a){a.preventDefault();var e=t(this).siblings(".action-buttons");t(e).is(":visible")?(t(this).removeClass("active"),t(e).hide()):(t(this).addClass("active"),t(e).show())});var K=function(){var t=0;return function(a,e){clearTimeout(t),t=setTimeout(a,e)}}();t(window).resize(function(){K(function(){t(".action-buttons").removeAttr("style"),t(".np-toggle-edit").removeClass("active")},500)}),t(document).ready(function(){t(".sortable").not(".no-sort").nestedSortable({items:"li",toleranceElement:"> .row",handle:".handle",placeholder:"ui-sortable-placeholder",maxLevels:0,start:function(t,a){a.placeholder.height(a.item.height())},sort:function(t,a){n(a)},stop:function(){setTimeout(function(){o(),a(),e()},100),d()},update:function(){}})}),t(document).ready(function(){"1"===nestedpages.syncmenu&&r("sync")}),t(".np-sync-menu").on("change",function(){var a=t(this).is(":checked")?"sync":"nosync";r(a)}),t(document).on("click",".np-quick-edit",function(a){a.preventDefault(),f(),l(t(this))}),t(document).on("click",".np-inline-overlay",function(){f(),B()}),t(document).on("click",".np-cancel-quickedit",function(a){var e=t(this).parents(".page-row");f(e),a.preventDefault()}),t(document).on("click",".np-save-quickedit",function(a){a.preventDefault(),t(".row").removeClass("np-updated").removeClass("np-updated-show");var e=t(this).parents("form");t(this).attr("disabled","disabled"),t(e).find(".np-qe-loading").show(),_(e)}),t(document).on("click",".np-toggle-taxonomies",function(a){t(this).parents("form").find(".np-taxonomies").toggle(),a.preventDefault()}),t(document).on("click",".np-toggle-menuoptions",function(a){a.preventDefault(),t(this).parents("form").find(".np-menuoptions").toggle()}),t(document).on("change",".keep_private",function(){this.checked?t(".post_password").val("").prop("readonly",!0):t(".post_password").prop("readonly",!1)}),t(document).on("click",".np-quick-edit-redirect",function(a){a.preventDefault(),f(),j(t(this))}),t(document).on("click",".np-save-quickedit-redirect",function(a){a.preventDefault(),t(".row").removeClass("np-updated").removeClass("np-updated-show");var e=t(this).parents("form");t(this).attr("disabled","disabled"),t(e).find(".np-qe-loading").show(),T(e)}),t(document).on("click",".open-redirect-modal",function(a){a.preventDefault();var e=t(this).attr("data-parentid");t("#np-link-modal").find("input").val(""),t("#np-link-modal .parent_id").val(e),t("#np-add-link-title").text("0"===e?nestedpages.add_link:nestedpages.add_child_link),t("#np-link-modal").modal("show")}),t(document).on("click",".np-save-link",function(a){a.preventDefault(),t(".np-new-link-error").hide(),t(".np-link-loading").show(),t(this).attr("disabled","disabled"),I()}),t(document).on("click",".np-cancel-newchild",function(t){t.preventDefault(),B()}),t(document).on("click",".add-new-child",function(a){a.preventDefault(),S(t(this))}),t(document).on("click",".add-new-child-row",function(a){a.preventDefault(),Q(t(this));var e=t(this).parents("form");M(e)}),t(document).on("click",".np-remove-child",function(a){a.preventDefault();var e=t(this).parents("form");t(this).parents(".new-child-row").parent("li").remove(),M(e)}),t(document).on("click",".np-save-newchild",function(a){a.preventDefault(),t(this).prop("disabled","disabled");var e=t(this).parents("form");t(e).find(".np-qe-loading").show(),F(e)})});
composer.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "kylephillips/nestedpages",
3
+ "description": "Nested Pages for WordPress",
4
+ "keywords": ["wordpress", "plugin", "nested pages"],
5
+ "homepage": "http://nestedpages.com",
6
+ "license": "GPL",
7
+ "authors": [
8
+ {
9
+ "name": "Kyle Phillips",
10
+ "email": "support@nestedpages.com",
11
+ "homepage": "https://github.com/kylephillips"
12
+ }
13
+ ],
14
+ "type": "wordpress-plugin",
15
+ "require": {
16
+ "php": ">=5.3.2",
17
+ "composer/installers": "v1.0.6"
18
+ },
19
+ "autoload": {
20
+ "psr-4" : {
21
+ "NestedPages\\" : "app/"
22
+ }
23
+ }
24
+ }
includes/class-nestedpages.php DELETED
@@ -1,114 +0,0 @@
1
- <?php
2
- // Activate and Check Versions
3
- require_once('class-np-activate.php');
4
-
5
- // Form Handlers
6
- require_once('class-np-handler-sort.php');
7
- require_once('class-np-handler-quickedit.php');
8
- require_once('class-np-handler-quickedit-redirect.php');
9
- require_once('class-np-handler-newredirect.php');
10
- require_once('class-np-handler-syncmenu.php');
11
- require_once('class-np-handler-nesttoggle.php');
12
- require_once('class-np-handler-gettax.php');
13
- require_once('class-np-handler-newchild.php');
14
-
15
- // Required Classes
16
- require_once('class-np-dependencies.php');
17
- require_once('class-np-pagelisting.php');
18
- require_once('class-np-newpage.php');
19
- require_once('class-np-redirects.php');
20
- require_once('class-np-posttypes.php');
21
- require_once('class-np-settings.php');
22
-
23
- /**
24
- * Primary Plugin Class
25
- */
26
- class NestedPages {
27
-
28
-
29
- public function __construct()
30
- {
31
- $this->init();
32
- $this->formActions();
33
- add_action( 'init', array($this, 'listPages') );
34
- add_action( 'init', array($this, 'addLocalization') );
35
- add_action( 'admin_init', array($this, 'verifyPostType') );
36
- add_filter( 'plugin_action_links_' . 'wp-nested-pages/nestedpages.php', array($this, 'settingsLink' ) );
37
- }
38
-
39
- /**
40
- * Initialize Plugin
41
- */
42
- public function init()
43
- {
44
- new NP_Activate;
45
- new NP_Dependencies;
46
- new NP_NewPage;
47
- new NP_Redirects;
48
- new NP_PostTypes;
49
- new NP_Settings;
50
- }
51
-
52
- /**
53
- * Page Listing
54
- * @since 1.1.6 - Moved into init due to Multisite bug
55
- */
56
- public function listPages()
57
- {
58
- new NP_PageListing;
59
- }
60
-
61
-
62
-
63
- /**
64
- * Set Form Actions & Handlers
65
- */
66
- public function formActions()
67
- {
68
- if ( is_admin() ) {
69
- add_action( 'wp_ajax_npsort', 'nestedpages_sort_handler' );
70
- add_action( 'wp_ajax_npquickedit', 'nestedpages_quickedit_handler' );
71
- add_action( 'wp_ajax_npsyncmenu', 'nestedpages_syncmenu_handler' );
72
- add_action( 'wp_ajax_npnesttoggle', 'nestedpages_nesttoggle_handler' );
73
- add_action( 'wp_ajax_npquickeditredirect', 'nestedpages_quickedit_redirect_handler' );
74
- add_action( 'wp_ajax_npnewredirect', 'nestedpages_new_redirect');
75
- add_action( 'wp_ajax_gettax', 'nestedpages_get_tax' );
76
- add_action( 'wp_ajax_npnewchild', 'nestedpages_newchild_handler' );
77
- }
78
- }
79
-
80
-
81
- /**
82
- * Localization Domain
83
- */
84
- public function addLocalization()
85
- {
86
- load_plugin_textdomain('nestedpages', false, dirname( dirname( plugin_basename( __FILE__ ) ) ) . '/languages' );
87
- }
88
-
89
-
90
- /**
91
- * Add a link to the settings on the plugin page
92
- */
93
- public function settingsLink($links)
94
- {
95
- $settings_link = '<a href="options-general.php?page=nested-pages-settings">' . __('Settings') . '</a>';
96
- array_unshift($links, $settings_link);
97
- return $links;
98
- }
99
-
100
-
101
- /**
102
- * Check for the page post type before doing anything
103
- */
104
- public function verifyPostType()
105
- {
106
- if ( !get_post_type_object( 'page' ) ){
107
- $plugin = dirname(dirname( __FILE__ ) ) . '/nestedpages.php';
108
- deactivate_plugins( $plugin );
109
- wp_die('<p>Nested Pages has been deactivated. This plugin requires the <strong>"page"</strong> post type to be enabled and available for use. Please disable any plugins that may be interfering with this post type and reactivate.</p>','Plugin Activation Error', array( 'response'=>200, 'back_link'=>TRUE ) );
110
- }
111
- }
112
-
113
-
114
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/class-np-confirmation.php DELETED
@@ -1,102 +0,0 @@
1
- <?php
2
- /**
3
- * Confirmation Messages
4
- */
5
- class NP_Confirmation {
6
-
7
- /**
8
- * Message Output
9
- * @var string
10
- */
11
- private $message;
12
-
13
- /**
14
- * Type of Message
15
- * @var string
16
- */
17
- private $type;
18
-
19
-
20
- public function __construct()
21
- {
22
- $this->setType();
23
- $this->setMessage();
24
- }
25
-
26
-
27
- /**
28
- * Set the Type of confirmation
29
- */
30
- private function setType()
31
- {
32
- if ( (isset($_GET['trashed'])) && (intval($_GET['trashed']) > 0) ) $this->type = 'trashConfirm';
33
- if ( (isset($_GET['untrashed'])) && (intval($_GET['untrashed']) > 0) ) $this->type = 'trashRestored';
34
- if ( (isset($_GET['linkdeleted'])) && (intval($_GET['linkdeleted']) > 0 ) ) $this->type = 'linkDeleted';
35
- }
36
-
37
-
38
- /**
39
- * Set the confirmation message
40
- */
41
- private function setMessage()
42
- {
43
- if ( $this->type ){
44
- $type = $this->type;
45
- $this->$type();
46
- }
47
- }
48
-
49
-
50
- /**
51
- * Trash Confirmation
52
- */
53
- private function trashConfirm()
54
- {
55
- $out = '<div id="message" class="updated below-h2"><p>';
56
- $trashed = ( explode(',', $_GET['ids']) );
57
- if ( count($trashed) > 1 ){
58
- $out .= count($trashed) . ' ' . __('pages moved to the Trash', 'nestedpages');
59
- } else {
60
- $out .= '<strong>' . get_the_title($trashed[0]) . ' </strong>' . __('page moved to the Trash', 'nestedpages');
61
-
62
- // Undo Link
63
- if ( current_user_can('delete_pages') ) {
64
- $page_obj = get_post_type_object('page');
65
- $out .= ' <a href="' . wp_nonce_url( admin_url( sprintf( $page_obj->_edit_link . '&amp;action=untrash', $trashed[0] ) ), 'untrash-post_' . $trashed[0] ) . '">' . __( 'Undo' ) . "</a>";
66
- }
67
- }
68
-
69
- $out .= '</p></div>';
70
- $this->message = $out;
71
- }
72
-
73
-
74
- /**
75
- * Trash Restored (Posts moved out of trash)
76
- */
77
- private function trashRestored()
78
- {
79
- $untrashed = sanitize_text_field($_GET['untrashed']);
80
- $page = ( intval($untrashed) > 1 ) ? __('pages', 'nestedpages') : __('page', 'nestedpages');
81
- $this->message = '<div id="message" class="updated below-h2"><p>' . $untrashed . ' ' . $page . ' ' . __('restored from trash', 'nestedpages') . '.</p></div>';
82
- }
83
-
84
-
85
- /**
86
- * Link Successfully Deleted
87
- */
88
- private function linkDeleted()
89
- {
90
- $this->message = '<div id="message" class="updated below-h2"><p>' . __('Link successfully deleted.', 'nestedpages') . '</p></div>';
91
- }
92
-
93
-
94
- /**
95
- * Get the Message
96
- */
97
- public function getMessage()
98
- {
99
- return $this->message;
100
- }
101
-
102
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/nestedpages-pt_PT.mo ADDED
Binary file
languages/nestedpages-pt_PT.po ADDED
@@ -0,0 +1,337 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Nested Pages\n"
4
+ "POT-Creation-Date: 2014-11-20 20:17-0500\n"
5
+ "PO-Revision-Date: 2014-12-18 09:24-0000\n"
6
+ "Last-Translator: \n"
7
+ "Language-Team: \n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Generator: Poedit 1.7.1\n"
12
+ "X-Poedit-Basepath: .\n"
13
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14
+ "Language: pt_PT\n"
15
+
16
+ #: includes/class-nestedpages.php:85
17
+ msgid "Settings"
18
+ msgstr "Definições"
19
+
20
+ #: includes/class-np-confirmation.php:58
21
+ msgid "pages moved to the Trash"
22
+ msgstr "páginas movidas para a Reciclagem"
23
+
24
+ #: includes/class-np-confirmation.php:60
25
+ msgid "page moved to the Trash"
26
+ msgstr "página movida para a Reciclagem"
27
+
28
+ #: includes/class-np-confirmation.php:65
29
+ msgid "Undo"
30
+ msgstr "Desfazer"
31
+
32
+ #: includes/class-np-confirmation.php:80
33
+ msgid "pages"
34
+ msgstr "páginas"
35
+
36
+ #: includes/class-np-confirmation.php:80
37
+ msgid "page"
38
+ msgstr "página"
39
+
40
+ #: includes/class-np-confirmation.php:81
41
+ msgid "restored from trash"
42
+ msgstr "recuperada da reciclagem"
43
+
44
+ #: includes/class-np-confirmation.php:90
45
+ msgid "Link successfully deleted."
46
+ msgstr "Link removido com sucesso."
47
+
48
+ #: includes/class-np-dependencies.php:77 views/pages.php:18
49
+ msgid "Expand Pages"
50
+ msgstr "Expandir Páginas"
51
+
52
+ #: includes/class-np-dependencies.php:78
53
+ msgid "Collapse Pages"
54
+ msgstr "Fechar Páginas"
55
+
56
+ #: includes/class-np-dependencies.php:79 views/pages.php:34
57
+ msgid "Show Hidden"
58
+ msgstr "Mostrar páginas ocultas"
59
+
60
+ #: includes/class-np-dependencies.php:80
61
+ msgid "Hide Hidden"
62
+ msgstr "Esconder páginas ocultas"
63
+
64
+ #: includes/class-np-dependencies.php:81 views/link-form.php:14
65
+ #: views/pages.php:9 views/pages.php:10
66
+ msgid "Add Link"
67
+ msgstr "Adicionar Link"
68
+
69
+ #: includes/class-np-dependencies.php:82
70
+ msgid "Add Child Link"
71
+ msgstr "Adicionar Sublink"
72
+
73
+ #: includes/class-np-handler-base.php:64
74
+ msgid "Incorrect Form Field"
75
+ msgstr "Campo de Formulário Incorrecto"
76
+
77
+ #: includes/class-np-handler-base.php:94
78
+ msgid "There was an error updating the page."
79
+ msgstr "Ocorreu um erro ao actualizar a página"
80
+
81
+ #: includes/class-np-handler-newredirect.php:40
82
+ #: includes/class-np-handler-quickedit-redirect.php:36
83
+ msgid "Link successfully updated"
84
+ msgstr "Link actualizado com sucesso"
85
+
86
+ #: includes/class-np-handler-quickedit.php:38
87
+ msgid "Post successfully updated"
88
+ msgstr "Post actualizado com sucesso"
89
+
90
+ #: includes/class-np-handler-sort.php:36
91
+ msgid "Page order successfully updated."
92
+ msgstr "Ordenação de páginas actualizada com sucesso"
93
+
94
+ #: includes/class-np-handler-sort.php:38
95
+ msgid "There was an order updating the page order."
96
+ msgstr "Ocorreu um erro ao actualizar a ordenação de páginas"
97
+
98
+ #: includes/class-np-handler-syncmenu.php:32
99
+ msgid "Menu sync enabled."
100
+ msgstr "Sincronização de menu activa."
101
+
102
+ #: includes/class-np-handler-syncmenu.php:35
103
+ msgid "Menu sync disabled."
104
+ msgstr "Sincronização de menu inactiva."
105
+
106
+ #: includes/class-np-newpage.php:42
107
+ msgid "Adding child page under:"
108
+ msgstr "Adicionar subpágina em:"
109
+
110
+ #: includes/class-np-pagelisting.php:79
111
+ msgid "All Pages"
112
+ msgstr "Todas as páginas"
113
+
114
+ #: includes/class-np-pagelisting.php:80
115
+ msgid "Add New"
116
+ msgstr "Adicionar Nova"
117
+
118
+ #: includes/class-np-pagelisting.php:81
119
+ msgid "Default Pages"
120
+ msgstr "Páginas Standard"
121
+
122
+ #: includes/class-np-posttypes.php:21
123
+ msgid "Redirects"
124
+ msgstr "Redireccionamentos"
125
+
126
+ #: includes/class-np-posttypes.php:22
127
+ msgid "Redirect"
128
+ msgstr "Redireccionar"
129
+
130
+ #: includes/class-np-redirects.php:65
131
+ msgid "Nested Pages"
132
+ msgstr "Nested Pages"
133
+
134
+ #: includes/class-np-repository-post.php:58 views/quickedit.php:20
135
+ msgid "Title"
136
+ msgstr "Título"
137
+
138
+ #: includes/class-np-repository-post.php:298
139
+ msgid "Label"
140
+ msgstr "Etiqueta"
141
+
142
+ #: includes/class-np-validation.php:49 includes/class-np-validation.php:64
143
+ msgid "Please provide a valid date."
144
+ msgstr "Por favor indique uma data válida."
145
+
146
+ #: includes/class-np-validation.php:76
147
+ msgid "Please provide a menu title."
148
+ msgstr "Por favor preencha o título do menu."
149
+
150
+ #: includes/class-np-validation.php:79
151
+ msgid "Please provide a valid URL."
152
+ msgstr "Por favor preencha com URL válido."
153
+
154
+ #: includes/class-np-validation.php:90
155
+ msgid "Please provide a "
156
+ msgstr "Por favor indique "
157
+
158
+ #: views/link-form.php:31 views/quickedit-redirect.php:17
159
+ #: views/quickedit.php:148
160
+ msgid "Navigation Label"
161
+ msgstr "Etiqueta de Navegação"
162
+
163
+ #: views/link-form.php:36 views/quickedit-redirect.php:22
164
+ msgid "URL"
165
+ msgstr "URL"
166
+
167
+ #: views/link-form.php:41 views/quickedit-redirect.php:27
168
+ #: views/quickedit.php:58
169
+ msgid "Status"
170
+ msgstr "Estado"
171
+
172
+ #: views/link-form.php:44 views/pages.php:33 views/quickedit-redirect.php:30
173
+ #: views/quickedit.php:61
174
+ msgid "Published"
175
+ msgstr "Publicado"
176
+
177
+ #: views/link-form.php:45 views/quickedit-redirect.php:31
178
+ #: views/quickedit.php:62
179
+ msgid "Scheduled"
180
+ msgstr "Agendado"
181
+
182
+ #: views/link-form.php:47 views/quickedit-redirect.php:33
183
+ #: views/quickedit.php:64
184
+ msgid "Pending Review"
185
+ msgstr "Pendente de Revisão"
186
+
187
+ #: views/link-form.php:48 views/quickedit-redirect.php:34
188
+ #: views/quickedit.php:65
189
+ msgid "Draft"
190
+ msgstr "Rascunho"
191
+
192
+ #: views/link-form.php:59 views/quickedit-redirect.php:54
193
+ #: views/quickedit.php:164
194
+ msgid "Hide in Nav Menu"
195
+ msgstr "Esconder no Menu de Navegação"
196
+
197
+ #: views/link-form.php:64 views/quickedit-redirect.php:60
198
+ #: views/quickedit.php:105
199
+ msgid "Hide in Nested Pages"
200
+ msgstr "Esconder em Nested Pages"
201
+
202
+ #: views/link-form.php:69 views/quickedit-redirect.php:66
203
+ #: views/quickedit.php:170
204
+ msgid "Open link in a new window/tab"
205
+ msgstr "Abrir link numa nova janela/tabulador"
206
+
207
+ #: views/link-form.php:80
208
+ msgid "Close"
209
+ msgstr "Fechar"
210
+
211
+ #: views/link-form.php:83
212
+ msgid "Save Link"
213
+ msgstr "Guardar Link"
214
+
215
+ #: views/pages.php:24
216
+ msgid "Sync Menu"
217
+ msgstr "Sincronizar Menu"
218
+
219
+ #: views/pages.php:32
220
+ msgid "All"
221
+ msgstr "Todos"
222
+
223
+ #: views/pages.php:37
224
+ msgid "Trash"
225
+ msgstr "Reciclagem"
226
+
227
+ #: views/pages.php:40
228
+ msgid "Default"
229
+ msgstr "Default"
230
+
231
+ #: views/quickedit-redirect.php:8
232
+ msgid "Link"
233
+ msgstr "Link"
234
+
235
+ #: views/quickedit-redirect.php:44 views/quickedit.php:152
236
+ msgid "Title Attribute"
237
+ msgstr "Título"
238
+
239
+ #: views/quickedit-redirect.php:48 views/quickedit.php:156
240
+ msgid "CSS Classes"
241
+ msgstr "Classes de CSS"
242
+
243
+ #: views/quickedit-redirect.php:81 views/quickedit.php:184
244
+ msgid "Cancel"
245
+ msgstr "Cancelar"
246
+
247
+ #: views/quickedit-redirect.php:84 views/quickedit.php:187
248
+ msgid "Update"
249
+ msgstr "Actualizar"
250
+
251
+ #: views/quickedit.php:11 views/row-redirect.php:53 views/row.php:94
252
+ msgid "Quick Edit"
253
+ msgstr "Edição Rápida"
254
+
255
+ #: views/quickedit.php:24
256
+ msgid "Slug"
257
+ msgstr "Slug"
258
+
259
+ #: views/quickedit.php:28
260
+ msgid "Date"
261
+ msgstr "Data"
262
+
263
+ #: views/quickedit.php:49
264
+ msgid "Author"
265
+ msgstr "Autor"
266
+
267
+ #: views/quickedit.php:73
268
+ msgid "Template"
269
+ msgstr "Template"
270
+
271
+ #: views/quickedit.php:75
272
+ msgid "Default Template"
273
+ msgstr "Template padrão"
274
+
275
+ #: views/quickedit.php:82
276
+ msgid "Password"
277
+ msgstr "Palavra-passe"
278
+
279
+ #: views/quickedit.php:85
280
+ msgid "&ndash;OR&ndash;"
281
+ msgstr "&ndash;OR&ndash;"
282
+
283
+ #: views/quickedit.php:88
284
+ msgid "Private"
285
+ msgstr "Privado"
286
+
287
+ #: views/quickedit.php:97
288
+ msgid "Allow Comments"
289
+ msgstr "Permitir Comentários"
290
+
291
+ #: views/quickedit.php:113
292
+ msgid "Menu Options"
293
+ msgstr "Opções do Menu"
294
+
295
+ #: views/quickedit.php:115
296
+ msgid "Taxonomies"
297
+ msgstr "Taxonomias"
298
+
299
+ #: views/row-redirect.php:30 views/row.php:33
300
+ msgid "Hidden"
301
+ msgstr "Escondidas"
302
+
303
+ #: views/row.php:41
304
+ msgid "currently editing"
305
+ msgstr "actualmente a editar"
306
+
307
+ #: views/row.php:43
308
+ msgid "Edit"
309
+ msgstr "Editar"
310
+
311
+ #: views/row.php:66
312
+ msgid "Add Child"
313
+ msgstr "Adicionar subpágina"
314
+
315
+ #: views/row.php:98
316
+ msgid "View"
317
+ msgstr "Visualizar"
318
+
319
+ #: views/settings.php:2
320
+ msgid "Nested Pages Settings"
321
+ msgstr "Definições do Nested Pages"
322
+
323
+ #: views/settings.php:8
324
+ msgid "Nested Pages Version"
325
+ msgstr "Versão do Nested Pages"
326
+
327
+ #: views/settings.php:12
328
+ msgid "Menu Name"
329
+ msgstr "Nome do Menu"
330
+
331
+ #: views/settings.php:15
332
+ msgid ""
333
+ "Important: Once the menu name has changed, theme files should be updated to "
334
+ "reference the new name."
335
+ msgstr ""
336
+ "Importante: Ao mudar o nome do menu, os ficheiros do tema deverão ser "
337
+ "actualizados de acordo com o novo nome-"
nestedpages.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Nested Pages
4
  Plugin URI: http://nestedpages.com
5
  Description: Provides an intuitive drag and drop interface for managing pages in the Wordpress admin, while maintaining quick edit functionality.
6
- Version: 1.1.9
7
  Author: Kyle Phillips
8
  Author URI: https://github.com/kylephillips
9
  Text Domain: nestedpages
@@ -32,20 +32,23 @@ Copyright: Kyle Phillips
32
  * Check Wordpress and PHP versions before instantiating plugin
33
  */
34
  register_activation_hook( __FILE__, 'nestedpages_check_versions' );
35
- function nestedpages_check_versions( $wp = '3.9', $php = '5.3.0' ) {
36
  global $wp_version;
37
  if ( version_compare( PHP_VERSION, $php, '<' ) ) $flag = 'PHP';
38
  elseif ( version_compare( $wp_version, $wp, '<' ) ) $flag = 'WordPress';
39
- elseif ( !get_post_type_object( 'page' ) ) $flag = 'Page Post Type';
40
  else return;
41
  $version = 'PHP' == $flag ? $php : $wp;
42
- deactivate_plugins( basename( __FILE__ ) );
 
 
 
43
 
44
  wp_die('<p>The <strong>Nested Pages</strong> plugin requires'.$flag.' version '.$version.' or greater.</p>','Plugin Activation Error', array( 'response'=>200, 'back_link'=>TRUE ) );
45
  }
46
 
47
-
48
- if( !class_exists('NestedPages') ) :
49
- require_once('includes/class-nestedpages.php');
50
- $nested_pages = new NestedPages;
 
51
  endif;
3
  Plugin Name: Nested Pages
4
  Plugin URI: http://nestedpages.com
5
  Description: Provides an intuitive drag and drop interface for managing pages in the Wordpress admin, while maintaining quick edit functionality.
6
+ Version: 1.2.0
7
  Author: Kyle Phillips
8
  Author URI: https://github.com/kylephillips
9
  Text Domain: nestedpages
32
  * Check Wordpress and PHP versions before instantiating plugin
33
  */
34
  register_activation_hook( __FILE__, 'nestedpages_check_versions' );
35
+ function nestedpages_check_versions( $wp = '3.9', $php = '5.3.2' ) {
36
  global $wp_version;
37
  if ( version_compare( PHP_VERSION, $php, '<' ) ) $flag = 'PHP';
38
  elseif ( version_compare( $wp_version, $wp, '<' ) ) $flag = 'WordPress';
 
39
  else return;
40
  $version = 'PHP' == $flag ? $php : $wp;
41
+
42
+ if (function_exists('deactivate_plugins')){
43
+ deactivate_plugins( basename( __FILE__ ) );
44
+ }
45
 
46
  wp_die('<p>The <strong>Nested Pages</strong> plugin requires'.$flag.' version '.$version.' or greater.</p>','Plugin Activation Error', array( 'response'=>200, 'back_link'=>TRUE ) );
47
  }
48
 
49
+ if( !class_exists('Bootstrap') ) :
50
+ nestedpages_check_versions();
51
+ require_once('vendor/autoload.php');
52
+ require_once('app/NestedPages.php');
53
+ NestedPages::init();
54
  endif;
readme.txt CHANGED
@@ -4,12 +4,12 @@ Donate link: http://nestedpages.com/
4
  Tags: pages, admin, nested, tree view, page tree, sort, quick edit
5
  Requires at least: 3.8
6
  Tested up to: 4.1
7
- Stable tag: 1.1.8
8
 
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
- Nested Pages provides an intuitive drag and drop interface for managing pages in the Wordpress admin, while maintaining quick edit functionality.
13
 
14
  == Description ==
15
 
@@ -18,13 +18,13 @@ Nested Pages provides an intuitive drag and drop interface for managing pages in
18
  * A drag and drop interface for managing your pages - simple and intuitive
19
  * Quick edit functionality
20
  * An expandable, sortable tree view of your site's page structure
21
- * A native Wordpress menu, automatically generated to match your Nested Pages screen
22
  * A way to quickly add child pages (ideal for development)
23
  * A touch-friendly interface
24
 
25
  For more information visit [nestedpages.com](http://nestedpages.com).
26
 
27
- **Nested Pages requires Wordpress version 3.8 or higher, and PHP version 5.3 or higher.**
28
 
29
  **Languages:**
30
 
@@ -34,6 +34,7 @@ For more information visit [nestedpages.com](http://nestedpages.com).
34
  * French (Nico Mollet)
35
  * German/Swiss German (Bartosz Podlewski)
36
  * Italian (Francesco Canovi)
 
37
 
38
  == Installation ==
39
 
@@ -60,14 +61,14 @@ Bulk quick edits are not currently supported by Nested Pages. To edit in bulk, c
60
  Custom columns are not currently supported by Nested Pages. To view custom columns, click on “Default Pages” to view the native interface. If you are using WordPress SEO by Yoast, a page analysis indicator is shown.
61
 
62
  = What are those dots in my page rows? =
63
- If you have Wordpress SEO by Yoast installed, your page score indicators are shown along with the pages.
64
 
65
 
66
  == Screenshots ==
67
 
68
  1. Expandable tree view of your page structure
69
 
70
- 2. Retains most quick edit functionality
71
 
72
  3. Sortable page nesting updates in real time
73
 
@@ -77,6 +78,12 @@ If you have Wordpress SEO by Yoast installed, your page score indicators are sho
77
 
78
  == Changelog ==
79
 
 
 
 
 
 
 
80
  = 1.1.9 =
81
  * Minor bug fixes in editor capabilities
82
  * Italian translation (Provided by Francesco Canovi)
@@ -130,6 +137,9 @@ If you have Wordpress SEO by Yoast installed, your page score indicators are sho
130
 
131
  == Upgrade Notice ==
132
 
 
 
 
133
  = 1.1.9 =
134
  Italian translation included along with minor bug fixes.
135
 
4
  Tags: pages, admin, nested, tree view, page tree, sort, quick edit
5
  Requires at least: 3.8
6
  Tested up to: 4.1
7
+ Stable tag: 1.1.9
8
 
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
12
+ Nested Pages provides an intuitive drag and drop interface for managing pages in the WordPress admin, while maintaining quick edit functionality.
13
 
14
  == Description ==
15
 
18
  * A drag and drop interface for managing your pages - simple and intuitive
19
  * Quick edit functionality
20
  * An expandable, sortable tree view of your site's page structure
21
+ * A native WordPress menu, automatically generated to match your Nested Pages screen
22
  * A way to quickly add child pages (ideal for development)
23
  * A touch-friendly interface
24
 
25
  For more information visit [nestedpages.com](http://nestedpages.com).
26
 
27
+ **Important: Nested Pages requires WordPress version 3.8 or higher, and PHP version 5.3.2 or higher.**
28
 
29
  **Languages:**
30
 
34
  * French (Nico Mollet)
35
  * German/Swiss German (Bartosz Podlewski)
36
  * Italian (Francesco Canovi)
37
+ * Portuguese (Luis Martins)
38
 
39
  == Installation ==
40
 
61
  Custom columns are not currently supported by Nested Pages. To view custom columns, click on “Default Pages” to view the native interface. If you are using WordPress SEO by Yoast, a page analysis indicator is shown.
62
 
63
  = What are those dots in my page rows? =
64
+ If you have WordPress SEO by Yoast installed, your page score indicators are shown along with the pages.
65
 
66
 
67
  == Screenshots ==
68
 
69
  1. Expandable tree view of your page structure
70
 
71
+ 2. Retains quick edit functionality while adding additional options and a cleaner interface
72
 
73
  3. Sortable page nesting updates in real time
74
 
78
 
79
  == Changelog ==
80
 
81
+ = 1.2.0 =
82
+ * PHP 5.3.2+ is now required to run Nested Pages. Will not run or install on older versions of PHP.
83
+ * Visual nesting indication limit removed
84
+ * Portuguese Translation (Provided by Luis Martins)
85
+ * Various bug fixes
86
+
87
  = 1.1.9 =
88
  * Minor bug fixes in editor capabilities
89
  * Italian translation (Provided by Francesco Canovi)
137
 
138
  == Upgrade Notice ==
139
 
140
+ = 1.2 =
141
+ PHP 5.3.2 now required – Nested Pages will not install on older versions of PHP. If you are running less than 5.3.2, continue to use Nested Pages version 1.1.9.
142
+
143
  = 1.1.9 =
144
  Italian translation included along with minor bug fixes.
145
 
vendor/autoload.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload.php @generated by Composer
4
+
5
+ require_once __DIR__ . '/composer' . '/autoload_real.php';
6
+
7
+ return ComposerAutoloaderInitdf5efd6cdd1f1603d7c6384432ca8791::getLoader();
vendor/composer/ClassLoader.php ADDED
@@ -0,0 +1,378 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of Composer.
5
+ *
6
+ * (c) Nils Adermann <naderman@naderman.de>
7
+ * Jordi Boggiano <j.boggiano@seld.be>
8
+ *
9
+ * For the full copyright and license information, please view the LICENSE
10
+ * file that was distributed with this source code.
11
+ */
12
+
13
+ namespace Composer\Autoload;
14
+
15
+ /**
16
+ * ClassLoader implements a PSR-0 class loader
17
+ *
18
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
19
+ *
20
+ * $loader = new \Composer\Autoload\ClassLoader();
21
+ *
22
+ * // register classes with namespaces
23
+ * $loader->add('Symfony\Component', __DIR__.'/component');
24
+ * $loader->add('Symfony', __DIR__.'/framework');
25
+ *
26
+ * // activate the autoloader
27
+ * $loader->register();
28
+ *
29
+ * // to enable searching the include path (eg. for PEAR packages)
30
+ * $loader->setUseIncludePath(true);
31
+ *
32
+ * In this example, if you try to use a class in the Symfony\Component
33
+ * namespace or one of its children (Symfony\Component\Console for instance),
34
+ * the autoloader will first look for the class under the component/
35
+ * directory, and it will then fallback to the framework/ directory if not
36
+ * found before giving up.
37
+ *
38
+ * This class is loosely based on the Symfony UniversalClassLoader.
39
+ *
40
+ * @author Fabien Potencier <fabien@symfony.com>
41
+ * @author Jordi Boggiano <j.boggiano@seld.be>
42
+ */
43
+ class ClassLoader
44
+ {
45
+ // PSR-4
46
+ private $prefixLengthsPsr4 = array();
47
+ private $prefixDirsPsr4 = array();
48
+ private $fallbackDirsPsr4 = array();
49
+
50
+ // PSR-0
51
+ private $prefixesPsr0 = array();
52
+ private $fallbackDirsPsr0 = array();
53
+
54
+ private $useIncludePath = false;
55
+ private $classMap = array();
56
+
57
+ public function getPrefixes()
58
+ {
59
+ return call_user_func_array('array_merge', $this->prefixesPsr0);
60
+ }
61
+
62
+ public function getPrefixesPsr4()
63
+ {
64
+ return $this->prefixDirsPsr4;
65
+ }
66
+
67
+ public function getFallbackDirs()
68
+ {
69
+ return $this->fallbackDirsPsr0;
70
+ }
71
+
72
+ public function getFallbackDirsPsr4()
73
+ {
74
+ return $this->fallbackDirsPsr4;
75
+ }
76
+
77
+ public function getClassMap()
78
+ {
79
+ return $this->classMap;
80
+ }
81
+
82
+ /**
83
+ * @param array $classMap Class to filename map
84
+ */
85
+ public function addClassMap(array $classMap)
86
+ {
87
+ if ($this->classMap) {
88
+ $this->classMap = array_merge($this->classMap, $classMap);
89
+ } else {
90
+ $this->classMap = $classMap;
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Registers a set of PSR-0 directories for a given prefix, either
96
+ * appending or prepending to the ones previously set for this prefix.
97
+ *
98
+ * @param string $prefix The prefix
99
+ * @param array|string $paths The PSR-0 root directories
100
+ * @param bool $prepend Whether to prepend the directories
101
+ */
102
+ public function add($prefix, $paths, $prepend = false)
103
+ {
104
+ if (!$prefix) {
105
+ if ($prepend) {
106
+ $this->fallbackDirsPsr0 = array_merge(
107
+ (array) $paths,
108
+ $this->fallbackDirsPsr0
109
+ );
110
+ } else {
111
+ $this->fallbackDirsPsr0 = array_merge(
112
+ $this->fallbackDirsPsr0,
113
+ (array) $paths
114
+ );
115
+ }
116
+
117
+ return;
118
+ }
119
+
120
+ $first = $prefix[0];
121
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
122
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
123
+
124
+ return;
125
+ }
126
+ if ($prepend) {
127
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
128
+ (array) $paths,
129
+ $this->prefixesPsr0[$first][$prefix]
130
+ );
131
+ } else {
132
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
133
+ $this->prefixesPsr0[$first][$prefix],
134
+ (array) $paths
135
+ );
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Registers a set of PSR-4 directories for a given namespace, either
141
+ * appending or prepending to the ones previously set for this namespace.
142
+ *
143
+ * @param string $prefix The prefix/namespace, with trailing '\\'
144
+ * @param array|string $paths The PSR-0 base directories
145
+ * @param bool $prepend Whether to prepend the directories
146
+ */
147
+ public function addPsr4($prefix, $paths, $prepend = false)
148
+ {
149
+ if (!$prefix) {
150
+ // Register directories for the root namespace.
151
+ if ($prepend) {
152
+ $this->fallbackDirsPsr4 = array_merge(
153
+ (array) $paths,
154
+ $this->fallbackDirsPsr4
155
+ );
156
+ } else {
157
+ $this->fallbackDirsPsr4 = array_merge(
158
+ $this->fallbackDirsPsr4,
159
+ (array) $paths
160
+ );
161
+ }
162
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
163
+ // Register directories for a new namespace.
164
+ $length = strlen($prefix);
165
+ if ('\\' !== $prefix[$length - 1]) {
166
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
167
+ }
168
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
169
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
170
+ } elseif ($prepend) {
171
+ // Prepend directories for an already registered namespace.
172
+ $this->prefixDirsPsr4[$prefix] = array_merge(
173
+ (array) $paths,
174
+ $this->prefixDirsPsr4[$prefix]
175
+ );
176
+ } else {
177
+ // Append directories for an already registered namespace.
178
+ $this->prefixDirsPsr4[$prefix] = array_merge(
179
+ $this->prefixDirsPsr4[$prefix],
180
+ (array) $paths
181
+ );
182
+ }
183
+ }
184
+
185
+ /**
186
+ * Registers a set of PSR-0 directories for a given prefix,
187
+ * replacing any others previously set for this prefix.
188
+ *
189
+ * @param string $prefix The prefix
190
+ * @param array|string $paths The PSR-0 base directories
191
+ */
192
+ public function set($prefix, $paths)
193
+ {
194
+ if (!$prefix) {
195
+ $this->fallbackDirsPsr0 = (array) $paths;
196
+ } else {
197
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
198
+ }
199
+ }
200
+
201
+ /**
202
+ * Registers a set of PSR-4 directories for a given namespace,
203
+ * replacing any others previously set for this namespace.
204
+ *
205
+ * @param string $prefix The prefix/namespace, with trailing '\\'
206
+ * @param array|string $paths The PSR-4 base directories
207
+ */
208
+ public function setPsr4($prefix, $paths) {
209
+ if (!$prefix) {
210
+ $this->fallbackDirsPsr4 = (array) $paths;
211
+ } else {
212
+ $length = strlen($prefix);
213
+ if ('\\' !== $prefix[$length - 1]) {
214
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
215
+ }
216
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
217
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
218
+ }
219
+ }
220
+
221
+ /**
222
+ * Turns on searching the include path for class files.
223
+ *
224
+ * @param bool $useIncludePath
225
+ */
226
+ public function setUseIncludePath($useIncludePath)
227
+ {
228
+ $this->useIncludePath = $useIncludePath;
229
+ }
230
+
231
+ /**
232
+ * Can be used to check if the autoloader uses the include path to check
233
+ * for classes.
234
+ *
235
+ * @return bool
236
+ */
237
+ public function getUseIncludePath()
238
+ {
239
+ return $this->useIncludePath;
240
+ }
241
+
242
+ /**
243
+ * Registers this instance as an autoloader.
244
+ *
245
+ * @param bool $prepend Whether to prepend the autoloader or not
246
+ */
247
+ public function register($prepend = false)
248
+ {
249
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
250
+ }
251
+
252
+ /**
253
+ * Unregisters this instance as an autoloader.
254
+ */
255
+ public function unregister()
256
+ {
257
+ spl_autoload_unregister(array($this, 'loadClass'));
258
+ }
259
+
260
+ /**
261
+ * Loads the given class or interface.
262
+ *
263
+ * @param string $class The name of the class
264
+ * @return bool|null True if loaded, null otherwise
265
+ */
266
+ public function loadClass($class)
267
+ {
268
+ if ($file = $this->findFile($class)) {
269
+ includeFile($file);
270
+
271
+ return true;
272
+ }
273
+ }
274
+
275
+ /**
276
+ * Finds the path to the file where the class is defined.
277
+ *
278
+ * @param string $class The name of the class
279
+ *
280
+ * @return string|false The path if found, false otherwise
281
+ */
282
+ public function findFile($class)
283
+ {
284
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
285
+ if ('\\' == $class[0]) {
286
+ $class = substr($class, 1);
287
+ }
288
+
289
+ // class map lookup
290
+ if (isset($this->classMap[$class])) {
291
+ return $this->classMap[$class];
292
+ }
293
+
294
+ $file = $this->findFileWithExtension($class, '.php');
295
+
296
+ // Search for Hack files if we are running on HHVM
297
+ if ($file === null && defined('HHVM_VERSION')) {
298
+ $file = $this->findFileWithExtension($class, '.hh');
299
+ }
300
+
301
+ if ($file === null) {
302
+ // Remember that this class does not exist.
303
+ return $this->classMap[$class] = false;
304
+ }
305
+
306
+ return $file;
307
+ }
308
+
309
+ private function findFileWithExtension($class, $ext)
310
+ {
311
+ // PSR-4 lookup
312
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
313
+
314
+ $first = $class[0];
315
+ if (isset($this->prefixLengthsPsr4[$first])) {
316
+ foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
317
+ if (0 === strpos($class, $prefix)) {
318
+ foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
319
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
320
+ return $file;
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
326
+
327
+ // PSR-4 fallback dirs
328
+ foreach ($this->fallbackDirsPsr4 as $dir) {
329
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
330
+ return $file;
331
+ }
332
+ }
333
+
334
+ // PSR-0 lookup
335
+ if (false !== $pos = strrpos($class, '\\')) {
336
+ // namespaced class name
337
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
338
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
339
+ } else {
340
+ // PEAR-like class name
341
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
342
+ }
343
+
344
+ if (isset($this->prefixesPsr0[$first])) {
345
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
346
+ if (0 === strpos($class, $prefix)) {
347
+ foreach ($dirs as $dir) {
348
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
349
+ return $file;
350
+ }
351
+ }
352
+ }
353
+ }
354
+ }
355
+
356
+ // PSR-0 fallback dirs
357
+ foreach ($this->fallbackDirsPsr0 as $dir) {
358
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
359
+ return $file;
360
+ }
361
+ }
362
+
363
+ // PSR-0 include paths.
364
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
365
+ return $file;
366
+ }
367
+ }
368
+ }
369
+
370
+ /**
371
+ * Scope isolated include.
372
+ *
373
+ * Prevents access to $this/self from included files.
374
+ */
375
+ function includeFile($file)
376
+ {
377
+ include $file;
378
+ }
vendor/composer/autoload_classmap.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_classmap.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ );
vendor/composer/autoload_namespaces.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_namespaces.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ );
vendor/composer/autoload_psr4.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_psr4.php @generated by Composer
4
+
5
+ $vendorDir = dirname(dirname(__FILE__));
6
+ $baseDir = dirname($vendorDir);
7
+
8
+ return array(
9
+ 'NestedPages\\' => array($baseDir . '/app'),
10
+ );
vendor/composer/autoload_real.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // autoload_real.php @generated by Composer
4
+
5
+ class ComposerAutoloaderInitdf5efd6cdd1f1603d7c6384432ca8791
6
+ {
7
+ private static $loader;
8
+
9
+ public static function loadClassLoader($class)
10
+ {
11
+ if ('Composer\Autoload\ClassLoader' === $class) {
12
+ require __DIR__ . '/ClassLoader.php';
13
+ }
14
+ }
15
+
16
+ public static function getLoader()
17
+ {
18
+ if (null !== self::$loader) {
19
+ return self::$loader;
20
+ }
21
+
22
+ spl_autoload_register(array('ComposerAutoloaderInitdf5efd6cdd1f1603d7c6384432ca8791', 'loadClassLoader'), true, true);
23
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitdf5efd6cdd1f1603d7c6384432ca8791', 'loadClassLoader'));
25
+
26
+ $map = require __DIR__ . '/autoload_namespaces.php';
27
+ foreach ($map as $namespace => $path) {
28
+ $loader->set($namespace, $path);
29
+ }
30
+
31
+ $map = require __DIR__ . '/autoload_psr4.php';
32
+ foreach ($map as $namespace => $path) {
33
+ $loader->setPsr4($namespace, $path);
34
+ }
35
+
36
+ $classMap = require __DIR__ . '/autoload_classmap.php';
37
+ if ($classMap) {
38
+ $loader->addClassMap($classMap);
39
+ }
40
+
41
+ $loader->register(true);
42
+
43
+ return $loader;
44
+ }
45
+ }
46
+
47
+ function composerRequiredf5efd6cdd1f1603d7c6384432ca8791($file)
48
+ {
49
+ require $file;
50
+ }
views/settings.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
- $allowsorting = get_option('nestedpages_allowsorting', array());
3
- if ( $allowsorting == "" ) $allowsorting = array();
4
- ?>
5
- <div class="wrap">
6
- <h1><?php _e('Nested Pages Settings', 'nestedpages'); ?></h1>
7
-
8
- <form method="post" enctype="multipart/form-data" action="options.php">
9
- <table class="form-table">
10
- <?php settings_fields( 'nestedpages-general' ); ?>
11
- <tr valign="top">
12
- <th scope="row"><?php _e('Nested Pages Version', 'nestedpages'); ?></th>
13
- <td><strong><?php echo get_option('nestedpages_version'); ?></strong></td>
14
- </tr>
15
- <tr valign="top">
16
- <th scope="row"><?php _e('Menu Name', 'nestedpages'); ?></th>
17
- <td>
18
- <input type="text" name="nestedpages_menu" id="nestedpages_menu" value="<?php echo $this->menu->name; ?>">
19
- <p><em><?php _e('Important: Once the menu name has changed, theme files should be updated to reference the new name.', 'nestedpages'); ?></em></p>
20
- </td>
21
- </tr>
22
- <tr valign="top">
23
- <th scope="row"><?php _e('Hide Default Pages', 'nestedpages'); ?></th>
24
- <td>
25
- <label>
26
- <input type="checkbox" id="nestedpages_hidedefault" name="nestedpages_hidedefault" <?php if ( get_option('nestedpages_hidedefault') == 'hide') echo 'checked'; ?> value="hide" >
27
- <?php _e('Hide Default Pages', 'nestedpages'); ?>
28
- </label>
29
- </td>
30
- </tr>
31
- <tr valign="top">
32
- <th scope="row"><?php _e('Allow Page Sorting', 'nestedpages'); ?></th>
33
- <td>
34
- <?php foreach ( $this->user_repo->allRoles() as $role ) : ?>
35
- <label>
36
- <input type="checkbox" name="nestedpages_allowsorting[]" value="<?php echo $role; ?>" <?php if ( in_array($role, $allowsorting) ) echo 'checked'; ?> >
37
- <?php echo $role; ?>
38
- </label>
39
- <br />
40
- <?php endforeach; ?>
41
- <p><em><?php _e('Admins always have sorting ability.', 'nestedpages'); ?></em></p>
42
- </td>
43
- </tr>
44
- </table>
45
- <input type="hidden" name="nestedpages_menusync" value="<?php echo get_option('nestedpages_menusync'); ?>">
46
- <?php submit_button(); ?>
47
- </form>
48
- </div><!-- .wrap -->