Plugin Directory

Changeset 688320


Ignore:
Timestamp:
03/28/2013 08:43:27 AM (13 years ago)
Author:
Jesper800
Message:

Releasing version 0.4

Location:
developer-mode/trunk
Files:
2 added
3 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • developer-mode/trunk/developer-mode.php

    r672668 r688320  
    33Plugin Name: Developer Mode
    44Description: Limit access to the WordPress admin panel for your clients. Block functionality like updating plugins and viewing menu items for administrators, while keeping all these options for the developer users. The developer mode plugin automatically adds a developer user role, allowing you to keep in control of the entire system while making sure your clients can only use what they need.
    5 Version: 0.3.2
     5Version: 0.4
    66Author: Jesper van Engelen
    77Author URI: http://www.jepps.nl
     
    1010
    1111// Plugin information
    12 define('JWDM_VERSION', '0.3.2');
     12define('JWDM_VERSION', '0.4');
    1313
    1414// Paths
  • developer-mode/trunk/lib/admin.php

    r666383 r688320  
    1717        // Filters
    1818        add_filter('all_plugins', array(&$this, 'filter_all_plugins'));
     19        add_filter('user_has_cap', array(&$this, 'filter_user_has_cap'), 999, 3);
     20        add_filter('editable_roles', array(&$this, 'filter_editable_roles'), 999);
    1921    }
    2022   
     
    3941        wp_register_style('jwdm_admin', JWDM_URL . '/public/css/admin.css');
    4042        wp_enqueue_style('jwdm_admin');
     43       
     44        // Scripts
     45        wp_register_script('jwdm-admin', JWDM_URL . '/public/js/admin.js', array('jquery'));
     46        wp_enqueue_script('jquery');
     47        wp_enqueue_script('jwdm-admin');
    4148    }
    4249   
     
    107114    }
    108115   
     116    /**
     117     * Filter: editable_roles
     118     */
     119    public function filter_editable_roles($roles)
     120    {
     121        $options = get_option('jwdm_options');
     122       
     123        if ($options['prevent_developeruser_edit'] && isset($roles['developer'])) {
     124            $user = wp_get_current_user();
     125           
     126            if (is_object($user) && !empty($user->ID)) {
     127                if (JWDM_Helper_Roles::get_user_role($user->ID) != 'developer') {
     128                    unset($roles['developer']);
     129                }
     130            }
     131        }
     132       
     133        return $roles;
     134    }
     135   
     136   
     137    /**
     138     * Filter: user_has_cap
     139     */
     140    public function filter_user_has_cap($allcaps, $caps, $args)
     141    {
     142        $options = get_option('jwdm_options');
     143       
     144        if (!$options['prevent_developeruser_edit']) {
     145            return $allcaps;
     146        }
     147       
     148        // Check role
     149        $user = wp_get_current_user();
     150       
     151        if (!is_object($user) || empty($user->ID) || JWDM_Helper_Roles::get_user_role($user->ID) == 'developer') {
     152            return $allcaps;
     153        }
     154       
     155        // Make sure the requested capability and the user ID are set
     156        if (!$args[0] || !in_array($args[0], array('edit_user', 'delete_user')) || !$args[1] || !$args[2]) {
     157            return $allcaps;
     158        }
     159       
     160        $access = JWDM_Helper_Roles::get_user_role($args[2]) == 'developer' ? false : true;
     161       
     162        foreach ($caps as $index => $cap) {
     163            $allcaps[$cap] = $access;
     164        }
     165       
     166        return $allcaps;
     167    }
     168   
    109169    /************************
    110170     * Main functionality
  • developer-mode/trunk/lib/adminmenupage/adminmenu.php

    r599669 r688320  
    138138                <p><?php _e('You have the option to hide menu items from being displayed when a non-developer is logged in. Please check the boxes for the pages that you want to hide when anybody outside the Developer user group (for example, your client) is logged in.', 'developermode'); ?></p>
    139139               
     140                <p>
     141                    <a href="#jwdm-adminmenu-menuitems" class="jwdm-list-checkall" title="<?php esc_attr_e('Check all', 'developermode'); ?>"><?php _e('Check all', 'developermode'); ?></a>
     142                    -
     143                    <a href="#jwdm-adminmenu-menuitems" class="jwdm-list-uncheckall" title="<?php esc_attr_e('Uncheck all', 'developermode'); ?>"><?php _e('Uncheck all', 'developermode'); ?></a>
     144                    -
     145                    <a href="#jwdm-adminmenu-menuitems" class="jwdm-list-toggleall" title="<?php esc_attr_e('Toggle all', 'developermode'); ?>"><?php _e('Toggle all', 'developermode'); ?></a>
     146                </p>
     147               
    140148                <ul id="jwdm-adminmenu-menuitems">
    141149               
  • developer-mode/trunk/lib/adminmenupage/options.php

    r666383 r688320  
    3636    {
    3737        // Settings sections
     38        add_settings_section('jwdm_users', __('Users', 'developermode'), array(&$this, 'section_users'), 'developermode');
    3839        add_settings_section('jwdm_updates', __('Updates', 'developermode'), array(&$this, 'section_updates'), 'developermode');
    3940        add_settings_section('jwdm_adminbar', __('Admin bar', 'developermode'), array(&$this, 'section_adminbar'), 'developermode');
    4041       
    4142        // Settings fields
     43        add_settings_field('jwdm_prevent_developeruser_edit', __('Actively prevent developer user editing', 'developermode'), array(&$this, 'field_prevent_developeruser_edit'), 'developermode', 'jwdm_users');
    4244        add_settings_field('jwdm_disable_core_update', __('Disable core update', 'developermode'), array(&$this, 'field_disable_core_update'), 'developermode', 'jwdm_updates');
    4345        add_settings_field('jwdm_disable_plugin_update', __('Disable plugin update', 'developermode'), array(&$this, 'field_disable_plugin_update'), 'developermode', 'jwdm_updates');
     
    5052     ***********************/
    5153   
     54    public function section_users() {}
    5255    public function section_updates() {}
    5356    public function section_adminbar() {}
     
    5659     * Settings fields
    5760     ***********************/
     61   
     62    /**
     63     * Field: Actively prevent developer user editing
     64     */
     65    public function field_prevent_developeruser_edit()
     66    {
     67        $options = get_option('jwdm_options');
     68    ?>
     69        <input type="checkbox" name="jwdm_options[prevent_developeruser_edit]" value="1" <?php checked($options['prevent_developeruser_edit']); ?> />
     70        <span class="description">
     71            <?php _e('By checking this box, you can prevent anyone that does not have the developer role from creating, editing or deleting users with the developer role.', 'developermode'); ?>
     72            <br/>
     73            <?php _e('<strong>Plugin/theme developers only</strong>: To change these permissions per role, please leave this box unchecked and user the <code>editable_roles</code> filter.', 'developermode'); ?>
     74        </span>
     75    <?php
     76    }
    5877   
    5978    /**
  • developer-mode/trunk/lib/adminmenupage/plugins.php

    r599669 r688320  
    124124                <p><?php _e('You have the option to hide plugins from being displayed on the plugins page when a non-developer is logged in. Please check the boxes for the plugins that you want to hide from the plugin overview when anybody outside the Developer user group (for example, your client) is logged in.', 'developermode'); ?></p>
    125125               
    126                 <ul>
     126                <p>
     127                    <a href="#jwdm-plugins-plugins" class="jwdm-list-checkall" title="<?php esc_attr_e('Check all', 'developermode'); ?>"><?php _e('Check all', 'developermode'); ?></a>
     128                    -
     129                    <a href="#jwdm-plugins-plugins" class="jwdm-list-uncheckall" title="<?php esc_attr_e('Uncheck all', 'developermode'); ?>"><?php _e('Uncheck all', 'developermode'); ?></a>
     130                    -
     131                    <a href="#jwdm-plugins-plugins" class="jwdm-list-toggleall" title="<?php esc_attr_e('Toggle all', 'developermode'); ?>"><?php _e('Toggle all', 'developermode'); ?></a>
     132                </p>
     133               
     134                <ul id="jwdm-plugins-plugins">
    127135               
    128136                <?php
  • developer-mode/trunk/lib/helper/roles.php

    r599669 r688320  
    88class JWDM_Helper_Roles
    99{
     10
    1011    /**
    1112     * Get a list of all available roles from the WP_Roles object
     
    5455        return $developerusers_query->get_total();
    5556    }
     57   
     58    /**
     59     * Get the highest hierarchy role for a user
     60     *
     61     * @param int $userid ID of the user to get the role for
     62     * @return string User role name
     63     */
     64    public static function get_user_role($userid)
     65    {
     66        $userid = intval($userid);
     67       
     68        if (!$userid) {
     69            return false;
     70        }
     71       
     72        $user = get_user_by('id', $userid);
     73       
     74        return array_shift($user->roles);
     75    }
     76
    5677}
    5778?>
  • developer-mode/trunk/readme.txt

    r672668 r688320  
    77Requires at least: 3.1
    88Tested up to: 3.5.1
    9 Stable tag: 0.3.2
     9Stable tag: 0.4
    1010
    1111Limit access to the WordPress admin panel for your clients. Block functionality like updating plugins and viewing menu items for administrators, while keeping all these options for the developer users. The developer mode plugin automatically adds a developer user role, allowing you to keep in control of the entire system while making sure your clients can only use what they need.
     
    5555== Changelog ==
    5656
     57= 0.4 =
     58
     59* Optional prevention of managing developer users by non-developer users (i.e. administrators, editors, etc. can not create, edit or delete users with the developer role)
     60* Added check all/uncheck all/toggle all functionality to the Admin Menu and Plugins pages
     61* Moved screenshots to assets folder
     62
    5763= 0.3.2 =
    5864
Note: See TracChangeset for help on using the changeset viewer.