Example #1
0
 /**
  * Load the user interface
  *
  * @since   1.5
  * @since   1.5.1   added notice on class name conflict
  * @since   1.6     added our toolbar class
  * @access  private
  * @return  void
  */
 private function load_ui()
 {
     // The default admin bar ui
     if (!class_exists('VAA_View_Admin_As_Admin_Bar')) {
         require VIEW_ADMIN_AS_DIR . 'ui/class-admin-bar.php';
         self::$vaa_class_names[] = 'VAA_View_Admin_As_Admin_Bar';
         $this->ui['admin_bar'] = VAA_View_Admin_As_Admin_Bar::get_instance($this);
     } else {
         $this->add_notice('class-error-admin-bar', array('type' => 'notice-error', 'message' => '<strong>' . __('View Admin As', 'view-admin-as') . ':</strong> ' . __('Plugin not loaded because of a conflict with an other plugin or theme', 'view-admin-as') . ' <code>(' . sprintf(__('Class %s already exists', 'view-admin-as'), 'VAA_View_Admin_As_Admin_Bar') . ')</code>'));
     }
     // Custom toolbar (front-end)
     if (!class_exists('VAA_View_Admin_As_Toolbar')) {
         require VIEW_ADMIN_AS_DIR . 'ui/class-toolbar.php';
         self::$vaa_class_names[] = 'VAA_View_Admin_As_Toolbar';
         $this->ui['toolbar'] = VAA_View_Admin_As_Toolbar::get_instance($this);
     } else {
         $this->add_notice('class-error-toolbar', array('type' => 'notice-error', 'message' => '<strong>' . __('View Admin As', 'view-admin-as') . ':</strong> ' . __('Plugin not loaded because of a conflict with an other plugin or theme', 'view-admin-as') . ' <code>(' . sprintf(__('Class %s already exists', 'view-admin-as'), 'VAA_View_Admin_As_Toolbar') . ')</code>'));
     }
     // WP admin modifications
     if (!class_exists('VAA_View_Admin_As_Admin')) {
         require VIEW_ADMIN_AS_DIR . 'ui/class-admin.php';
         self::$vaa_class_names[] = 'VAA_View_Admin_As_Admin';
         $this->ui['static_actions'] = VAA_View_Admin_As_Admin::get_instance($this);
     } else {
         $this->add_notice('class-error-admin', array('type' => 'notice-error', 'message' => '<strong>' . __('View Admin As', 'view-admin-as') . ':</strong> ' . __('Plugin not loaded because of a conflict with an other plugin or theme', 'view-admin-as') . ' <code>(' . sprintf(__('Class %s already exists', 'view-admin-as'), 'VAA_View_Admin_As_Admin') . ')</code>'));
     }
 }
    /**
     * Add admin bar menu's
     *
     *
     * @since   1.4
     * @since   1.5.2   Changed hook to vaa_admin_bar_settings_after (previous: 'vaa_admin_bar_roles_before')
     * @access  public
     * @see     'vaa_admin_bar_settings_after' action
     *
     * @param   object  $admin_bar
     * @return  void
     */
    public function admin_bar_menu($admin_bar)
    {
        $admin_bar->add_node(array('id' => 'role-defaults', 'parent' => 'view-as', 'title' => VAA_View_Admin_As_Admin_Bar::do_icon('dashicons-id-alt') . __('Role defaults', 'view-admin-as'), 'href' => false, 'meta' => array('class' => 'vaa-has-icon')));
        $role_select_options = '';
        foreach ($this->get_roles() as $role_key => $role) {
            $role_select_options .= '<option value="' . esc_attr($role_key) . '">' . translate_user_role($role->name) . '</option>';
        }
        $admin_bar->add_node(array('id' => 'role-defaults-setting-register-enable', 'parent' => 'role-defaults', 'title' => '<input class="checkbox" value="1" id="vaa_role_defaults_register_enable" name="vaa_role_defaults_register_enable" type="checkbox" ' . checked($this->get_optionData('apply_defaults_on_register'), true, false) . '>
							<label for="vaa_role_defaults_register_enable">' . __('Automatically apply defaults to new users', 'view-admin-as') . '</label>', 'href' => false, 'meta' => array('class' => 'auto-height')));
        $admin_bar->add_node(array('id' => 'role-defaults-setting-disable-user-screen-options', 'parent' => 'role-defaults', 'title' => '<input class="checkbox" value="1" id="vaa_role_defaults_disable_user_screen_options" name="vaa_role_defaults_disable_user_screen_options" type="checkbox" ' . checked($this->get_optionData('disable_user_screen_options'), true, false) . '>
							<label for="vaa_role_defaults_disable_user_screen_options">' . __('Disable screen options', 'view-admin-as') . '</label>
							<p class="description ab-item">' . __("Hide the screen options for all users who can't access role defaults", 'view-admin-as') . '</p>', 'href' => false, 'meta' => array('class' => 'auto-height')));
        $admin_bar->add_node(array('id' => 'role-defaults-setting-lock-meta-boxes', 'parent' => 'role-defaults', 'title' => '<input class="checkbox" value="1" id="vaa_role_defaults_lock_meta_boxes" name="vaa_role_defaults_lock_meta_boxes" type="checkbox" ' . checked($this->get_optionData('lock_meta_boxes'), true, false) . '>
							<label for="vaa_role_defaults_lock_meta_boxes">' . __('Lock meta boxes', 'view-admin-as') . '</label>
							<p class="description ab-item">' . __("Lock meta box order and locations for all users who can't access role defaults", 'view-admin-as') . '</p>', 'href' => false, 'meta' => array('class' => 'auto-height')));
        /**
         * Bulk actions
         */
        if ($this->get_users()) {
            // Users select
            $admin_bar->add_group(array('id' => 'role-defaults-bulk-users', 'parent' => 'role-defaults', 'meta' => array('class' => 'ab-sub-secondary')));
            $admin_bar->add_node(array('id' => 'role-defaults-bulk-users-title', 'parent' => 'role-defaults-bulk-users', 'title' => __('Apply defaults to users', 'view-admin-as'), 'href' => false, 'meta' => array('class' => 'ab-bold ab-vaa-toggle')));
            $admin_bar->add_node(array('id' => 'role-defaults-bulk-users-filter', 'parent' => 'role-defaults-bulk-users', 'title' => '<input id="role-defaults-bulk-users-filter" name="vaa-filter" placeholder="' . esc_attr__('Filter', 'view-admin-as') . ' (' . strtolower(__('Username')) . ')" />', 'href' => false, 'meta' => array('class' => 'ab-vaa-filter')));
            $bulk_users_select_content = '';
            foreach ($this->get_users() as $user) {
                foreach ($user->roles as $role) {
                    if ($role_data = $this->get_roles($role)) {
                        $role_name = translate_user_role($role_data->name);
                        $bulk_users_select_content .= '<div class="ab-item vaa-item">
								<input class="checkbox" value="' . $user->ID . '|' . $role . '" id="role-defaults-bulk-users-select-' . $user->ID . '" name="role-defaults-bulk-users-select[]" type="checkbox">
								<label for="role-defaults-bulk-users-select-' . $user->ID . '"><span class="user-name">' . $user->display_name . '</span> &nbsp; <span class="user-role">(' . $role_name . ')</span></label>
							</div>';
                    }
                }
            }
            $admin_bar->add_node(array('id' => 'role-defaults-bulk-users-select', 'parent' => 'role-defaults-bulk-users', 'title' => $bulk_users_select_content, 'href' => false, 'meta' => array('class' => 'ab-vaa-multipleselect max-height')));
            $admin_bar->add_node(array('id' => 'role-defaults-bulk-users-apply', 'parent' => 'role-defaults-bulk-users', 'title' => '<button id="role-defaults-bulk-users-apply" class="button button-primary" name="role-defaults-bulk-users-apply">' . __('Apply', 'view-admin-as') . '</button>', 'href' => false, 'meta' => array('class' => 'vaa-button-container', 'html' => '')));
        }
        if ($this->get_users() && $this->get_roles()) {
            // Roles select
            $admin_bar->add_group(array('id' => 'role-defaults-bulk-roles', 'parent' => 'role-defaults', 'meta' => array('class' => 'ab-sub-secondary')));
            $admin_bar->add_node(array('id' => 'role-defaults-bulk-roles-title', 'parent' => 'role-defaults-bulk-roles', 'title' => __('Apply defaults to users by role', 'view-admin-as'), 'href' => false, 'meta' => array('class' => 'ab-bold ab-vaa-toggle')));
            $admin_bar->add_node(array('id' => 'role-defaults-bulk-roles-select', 'parent' => 'role-defaults-bulk-roles', 'title' => '<select id="role-defaults-bulk-roles-select" name="role-defaults-bulk-roles-select"><option value=""> --- </option><option value="all">' . __('All roles', 'view-admin-as') . '</option>' . $role_select_options . '</select>', 'href' => false, 'meta' => array('class' => 'ab-vaa-select select-role', 'html' => '')));
            $admin_bar->add_node(array('id' => 'role-defaults-bulk-roles-apply', 'parent' => 'role-defaults-bulk-roles', 'title' => '<button id="role-defaults-bulk-roles-apply" class="button button-primary" name="role-defaults-bulk-roles-apply">' . __('Apply', 'view-admin-as') . '</button>', 'href' => false, 'meta' => array('class' => 'vaa-button-container', 'html' => '')));
        }
        if ($this->get_roles()) {
            /* Export actions */
            $admin_bar->add_group(array('id' => 'role-defaults-export', 'parent' => 'role-defaults', 'meta' => array('class' => 'ab-sub-secondary')));
            $admin_bar->add_node(array('id' => 'role-defaults-export-roles', 'parent' => 'role-defaults-export', 'title' => __('Export defaults for role', 'view-admin-as'), 'href' => false, 'meta' => array('class' => 'ab-bold ab-vaa-toggle')));
            $admin_bar->add_node(array('id' => 'role-defaults-export-roles-select', 'parent' => 'role-defaults-export', 'title' => '<select id="role-defaults-export-roles-select" name="role-defaults-export-roles-select"><option value="all">' . __('All roles', 'view-admin-as') . '</option>' . $role_select_options . '</select>', 'href' => false, 'meta' => array('class' => 'ab-vaa-select select-role', 'html' => '')));
            $admin_bar->add_node(array('id' => 'role-defaults-export-roles-export', 'parent' => 'role-defaults-export', 'title' => '<button id="role-defaults-export-roles-export" class="button button-secondary" name="role-defaults-export-roles-export">' . __('Export', 'view-admin-as') . '</button>', 'href' => false, 'meta' => array('class' => 'vaa-button-container', 'html' => '')));
            /* Import actions */
            $admin_bar->add_group(array('id' => 'role-defaults-import', 'parent' => 'role-defaults', 'meta' => array('class' => 'ab-sub-secondary')));
            $admin_bar->add_node(array('id' => 'role-defaults-import-roles', 'parent' => 'role-defaults-import', 'title' => __('Import defaults for role', 'view-admin-as'), 'href' => false, 'meta' => array('class' => 'ab-bold ab-vaa-toggle')));
            $admin_bar->add_node(array('id' => 'role-defaults-import-roles-input', 'parent' => 'role-defaults-import', 'title' => '<textarea id="role-defaults-import-roles-input" name="role-defaults-import-roles-input" placeholder="' . esc_attr__('Paste code here', 'view-admin-as') . '"></textarea>', 'href' => false, 'meta' => array('class' => 'ab-vaa-textarea input-role', 'html' => '')));
            $admin_bar->add_node(array('id' => 'role-defaults-import-roles-import', 'parent' => 'role-defaults-import', 'title' => '<button id="role-defaults-import-roles-import" class="button button-secondary" name="role-defaults-import-roles-import">' . __('Import', 'view-admin-as') . '</button>', 'href' => false, 'meta' => array('class' => 'vaa-button-container', 'html' => '')));
            /* Clear actions */
            $admin_bar->add_group(array('id' => 'role-defaults-clear', 'parent' => 'role-defaults', 'meta' => array('class' => 'ab-sub-secondary vaa-sub-transparent')));
            $admin_bar->add_node(array('id' => 'role-defaults-clear-roles', 'parent' => 'role-defaults-clear', 'title' => __('Remove defaults for role', 'view-admin-as'), 'href' => false, 'meta' => array('class' => 'ab-bold ab-vaa-toggle')));
            $admin_bar->add_node(array('id' => 'role-defaults-clear-roles-select', 'parent' => 'role-defaults-clear', 'title' => '<select id="role-defaults-clear-roles-select" name="role-defaults-clear-roles-select"><option value=""> --- </option><option value="all">' . __('All roles', 'view-admin-as') . '</option>' . $role_select_options . '</select>', 'href' => false, 'meta' => array('class' => 'ab-vaa-select select-role', 'html' => '')));
            $admin_bar->add_node(array('id' => 'role-defaults-clear-roles-apply', 'parent' => 'role-defaults-clear', 'title' => '<button id="role-defaults-clear-roles-apply" class="button button-secondary" name="role-defaults-clear-roles-apply">' . __('Apply', 'view-admin-as') . '</button>', 'href' => false, 'meta' => array('class' => 'vaa-button-container', 'html' => '')));
        }
    }
 /**
  * Main Instance.
  *
  * Ensures only one instance of this class is loaded or can be loaded.
  *
  * @since   1.5
  * @access  public
  * @static
  * @param   object|bool  $caller  The referrer class
  * @return  VAA_View_Admin_As_Admin_Bar|bool
  */
 public static function get_instance($caller = false)
 {
     if (is_object($caller) && 'VAA_View_Admin_As' == get_class($caller)) {
         if (is_null(self::$_instance)) {
             self::$_instance = new self();
         }
         return self::$_instance;
     }
     return false;
 }