Plugin Directory

Changeset 1196271


Ignore:
Timestamp:
07/10/2015 01:07:18 PM (11 years ago)
Author:
PluginCentral
Message:

Added single user select and associated logic. User can now select a single user to create a rule for.

Location:
limit-posts/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • limit-posts/trunk/css/limitposts.css

    r1194639 r1196271  
    44* Author: Colin Beeby
    55*/
    6 /* line 9, ../sass/limitposts.scss */
    76#add-edit-limit-form ul li {
    8   margin-bottom: 12px;
    9 }
    10 /* line 11, ../sass/limitposts.scss */
    11 #add-edit-limit-form ul li label {
    12   vertical-align: top;
    13 }
    14 /* line 14, ../sass/limitposts.scss */
    15 #add-edit-limit-form ul li input[type="radio"] {
    16   vertical-align: top;
    17   margin-top: 0.2em;
    18 }
    19 /* line 18, ../sass/limitposts.scss */
    20 #add-edit-limit-form ul li .narrative {
    21   float: left;
    22 }
    23 /* line 21, ../sass/limitposts.scss */
    24 #add-edit-limit-form ul li input[type="number"] {
    25   width: 75px;
    26 }
    27 /* line 24, ../sass/limitposts.scss */
    28 #add-edit-limit-form ul li #period_denominator {
    29   position: relative;
    30   top: -2px;
    31 }
     7  margin-bottom: 12px; }
     8  #add-edit-limit-form ul li label {
     9    vertical-align: top; }
     10  #add-edit-limit-form ul li input[type="radio"] {
     11    float: left;
     12    margin-top: 0.5em; }
     13  #add-edit-limit-form ul li .narrative {
     14    float: left; }
     15  #add-edit-limit-form ul li input[type="number"] {
     16    width: 75px; }
     17  #add-edit-limit-form ul li #period_denominator {
     18    position: relative;
     19    top: -2px; }
     20
     21/*# sourceMappingURL=limitposts.css.map */
  • limit-posts/trunk/css/limitposts.css.map

    r1194859 r1196271  
    11{
    22"version": 3,
    3 "mappings": ";;;;;AAQE,0BAAE;EACD,aAAa,EAAC,IAAI;EAClB,gCAAK;IACJ,cAAc,EAAC,GAAG;EAEnB,8CAAmB;IAClB,cAAc,EAAC,GAAG;IAClB,UAAU,EAAC,KAAK;EAEjB,qCAAU;IACT,KAAK,EAAC,IAAI;EAEX,+CAAoB;IACnB,KAAK,EAAC,IAAI;EAEX,8CAAmB;IAClB,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAC,IAAI",
     3"mappings": ";;;;;AAQE,0BAAE;EACD,aAAa,EAAC,IAAI;EAClB,gCAAK;IACJ,cAAc,EAAC,GAAG;EAEnB,8CAAmB;IAClB,KAAK,EAAC,IAAI;IACV,UAAU,EAAC,KAAK;EAEjB,qCAAU;IACT,KAAK,EAAC,IAAI;EAEX,+CAAoB;IACnB,KAAK,EAAC,IAAI;EAEX,8CAAmB;IAClB,QAAQ,EAAC,QAAQ;IACjB,GAAG,EAAC,IAAI",
    44"sources": ["../sass/limitposts.scss"],
    55"names": [],
  • limit-posts/trunk/js/LimitPosts.js

    r1194639 r1196271  
    1717        $j('#add_role_submit').css('display', 'block');
    1818        $j('#edit_role_submit').css('display', 'none');
    19         tb_show('New Limit Posts rule','TB_inline?height=230&width=275&inlineId=add-edit-tb');
     19        tb_show('New Limit Posts rule','TB_inline?height=275&width=275&inlineId=add-edit-tb');
    2020        return false;
    2121    });
     
    2828        $j('#period_number').val('24');
    2929        $j("#period_denominator option[value='Hours']").prop('selected', true);
     30        $j("#user_select").prop('disabled', true);
    3031    }
    3132   
     
    5051        var counter = existingRulesCount();
    5152       
     53        var userOrRole = $j('input[name="role_or_user"]:checked').val();
    5254        var userRole = $j('#user_roles_select').find(':selected').text();
     55        var userId = $j('#user_select').find(':selected').val();
     56        var userName = $j('#user_select').find(':selected').text();
    5357        var limit = $j('#limit_number').val();
    5458        var postType = $j('#post_types_select').find(':selected').text();
     
    5660        var periodDenominator = $j('#period_denominator').find(':selected').text();
    5761       
    58         tableRow.append('<td>'+ userRole +'<input type="hidden" name="limit_posts[rule][' + counter + '][role]" value="'+userRole+'"></td>');
     62        tableRow.append('<input type="hidden" name="limit_posts[rule][' + counter +'][role_or_user]" value="'+userOrRole+'">');
     63        if(userOrRole == 'user'){
     64            tableRow.append('<td>'+userName+'<input type="hidden" name="limit_posts[rule]['+counter+'][user_id]" value="'+userId+'"><input type="hidden" name="limit_posts[rule]['+counter+'][user_name]" value="'+userName+'"></td>');
     65        }
     66        else{
     67            tableRow.append('<td>'+ userRole +'<input type="hidden" name="limit_posts[rule][' + counter + '][role]" value="'+userRole+'"></td>');
     68        }
    5969        tableRow.append('<td>'+ limit +'<input type="hidden" name="limit_posts[rule][' + counter + '][limit]" value="'+limit+'"></td>');
    6070        tableRow.append('<td>'+ postType +'<input type="hidden" name="limit_posts[rule][' + counter + '][post_type]" value="'+postType+'"></td>');
     
    8595        $j('#edit_role_submit').css('display', 'block');
    8696       
    87         tb_show('Edit Limit Posts rule', 'TB_inline?height=230&width=275&inlineId=add-edit-tb');
     97        tb_show('Edit Limit Posts rule', 'TB_inline?height=275&width=275&inlineId=add-edit-tb');
    8898    });
    8999   
     
    92102        var existingValues = new Array();
    93103       
    94         $j(currentRow).find('input').each(function(index,value){
     104        currentRow.find('input').each(function(index,value){
    95105            existingValues[index] = $j(value).val();
    96106        });
    97107       
    98         $j('#user_roles_select option[value="'+existingValues[0]+'"]').prop('selected', true);
    99         $j('#limit_number').val(existingValues[1]);
    100         $j('#post_types_select option[value="'+existingValues[2]+'"]').prop('selected', true);
    101         $j('#period_number').val(existingValues[3]);
    102         $j('#period_denominator option[value="'+existingValues[4]+'"]').prop('selected', true);
     108        $j('#user_roles_select').prop('disabled',false);
     109        $j('#user_select').prop('disabled', true);
     110       
     111        $userOrRolesSelectIndex = 1;
     112        $limitNumberIndex = 2;
     113        $postTypesSelectIndex = 3;
     114        $periodNumberIndex = 4;
     115        $periodDenominatorIndex = 5;
     116       
     117        if(existingValues[0] == 'user'){
     118            $j('#user_radio').prop('checked', true);
     119            $j('#user_roles_select').prop('disabled',true);
     120            $j('#user_select').prop('disabled', false);
     121            $j('#user_select option[value="'+existingValues[$userOrRolesSelectIndex]+'"]').prop('selected', true);
     122            $limitNumberIndex = 3;
     123            $postTypesSelectIndex = 4;
     124            $periodNumberIndex = 5;
     125            $periodDenominatorIndex = 6;
     126        }
     127        else{
     128            $j('#role_radio').prop('checked', true);
     129            $j('#user_roles_select').prop('disabled',false);
     130            $j('#user_select').prop('disabled', true);
     131            $j('#user_roles_select option[value="'+existingValues[$userOrRolesSelectIndex]+'"]').prop('selected', true);
     132        }
     133        $j('#limit_number').val(existingValues[$limitNumberIndex]);
     134        $j('#post_types_select option[value="'+existingValues[$postTypesSelectIndex]+'"]').prop('selected', true);
     135        $j('#period_number').val(existingValues[$periodNumberIndex]);
     136        $j('#period_denominator option[value="'+existingValues[$periodDenominatorIndex]+'"]').prop('selected', true);
    103137    }
    104138   
     
    123157        var tableRow = getRuleAsTableRow();
    124158       
    125         $j(currentRow).replaceWith(tableRow);
     159        currentRow.replaceWith(tableRow);
    126160    }
    127161   
     162    $j('#role_radio').on('click', function(e){
     163        $j('#user_roles_select').prop('disabled', false);
     164        $j('#user_select').prop('disabled', true);
     165    });
     166   
     167    $j('#user_radio').on('click', function(e){
     168        $j('#user_roles_select').prop('disabled', true);
     169        $j('#user_select').prop('disabled', false);
     170    });
     171   
    128172});
  • limit-posts/trunk/limit-posts.php

    r1194657 r1196271  
    197197        //get all relevent rules
    198198        $userRole = $this->getCurrentUserRole();
     199        $userId = $this->getCurrentUserId();
    199200        global $typenow;
    200         $releventRules = $this->getReleventRules($limitPostRules, $userRole, $typenow);
     201        $releventRules = $this->getReleventRules($limitPostRules, $userRole, $userId, $typenow);
    201202        if(count($releventRules) <= 0){
    202203            return false;
     
    216217    }
    217218   
    218     private function getReleventRules($limitPostRules, $userRole, $typenow){
     219    private function getReleventRules($limitPostRules, $userRole, $userId, $typenow){
     220       
    219221        //filter out any rules not for users role
    220222        $rules = $this->filterRulesForUserRole($limitPostRules, $userRole);
    221223       
     224        //filter out any rules not for user id
     225        $rules = $this->filterRulesForUserId($rules, $userId);
     226       
    222227        //filter out any rules not for post type
    223228        $rules = $this->filterRulesForPostType($rules, $typenow);
     
    232237       
    233238        return ucfirst($userRole[0]);
     239    }
     240   
     241    private function getCurrentUserId(){
     242        global $current_user;
     243       
     244        $userId = $current_user->ID;
     245       
     246        return $userId;
    234247    }
    235248   
     
    239252       
    240253        foreach($inputRules['rule'] as $rule){
    241             if($rule['role'] == $userRole){
     254            $userOrRole = $this->getUserOrRole($rule);
     255            if($userOrRole != 'role'){
    242256                $filteredRules[] = $rule;
     257            }
     258            else{
     259                if($rule['role'] == $userRole){
     260                    $filteredRules[] = $rule;
     261                }
     262            }
     263        }
     264       
     265        return $filteredRules;
     266    }
     267   
     268    private function getUserOrRole($rule){
     269        $roleOrUser = 'role';
     270        if(!isset($rule['role_or_user'])){
     271            $roleOrUser = 'role';
     272        }
     273        else{
     274            $roleOrUser = $rule['role_or_user'];
     275        }
     276       
     277        return $roleOrUser;
     278    }
     279   
     280    private function filterRulesForUserId($inputRules, $userId){
     281        $filteredRules = array();
     282       
     283        foreach($inputRules as $rule){
     284            $userOrRole = $this->getUserOrRole($rule);
     285            if($userOrRole != 'user'){
     286                $filteredRules[] = $rule;
     287            }
     288            else{
     289                if($rule['user_id'] == $userId){
     290                    $filteredRules[] = $rule;
     291                }
    243292            }
    244293        }
  • limit-posts/trunk/options-page.php

    r1194639 r1196271  
    66        <ul>
    77            <li>
     8                <input type="radio" name="role_or_user" id="role_radio" value="role" checked>
    89                <p class="description narrative">Any user whose role is&nbsp;</p>
     10                </input>
    911                <select id="user_roles_select">
    1012                    <?php echo $this->getUserRoles(); ?>
     13                </select>
     14            </li>
     15            <p class="description narrative" style="padding:0;height:10px;position:relative;top:-10px;">Or</p>
     16            <li>
     17                <input type="radio" name="role_or_user" id="user_radio" value="user">
     18                <p class="description narrative">User&nbsp;</p>
     19                </input>
     20                <select id="user_select">
     21                    <?php echo $this->getUsers(); ?>
    1122                </select>
    1223            </li>
     
    4556            <thead>
    4657                <tr>
    47                     <th>User Role</th>
     58                    <th>User/Role</th>
    4859                    <th>Limit</th>
    4960                    <th>Post Type</th>
     
    5465            <tfoot>
    5566                <tr>
    56                     <th>User Role</th>
     67                    <th>User/Role</th>
    5768                    <th>Limit</th>
    5869                    <th>Post Type</th>
     
    6778                foreach($limitPostsRules['rule'] as $k => $v){
    6879                    echo '<tr>';
    69                     echo '<td>'.$v['role'].'<input type="hidden" name="limit_posts[rule]['.$count.'][role]" value="'.$v['role'].'"></td>';
     80                    $role_or_user = 'user';
     81                    if(!isset($v['role_or_user'])){
     82                        $role_or_user = 'role';
     83                    }
     84                    else{
     85                        $role_or_user = $v['role_or_user'];
     86                    }
     87                   
     88                    echo '<input type="hidden" name="limit_posts[rule]['.$count.'][role_or_user]" value="'.$role_or_user.'">';
     89                   
     90                    if($role_or_user == 'user'){
     91                    echo '<td>'.$v['user_name'].'<input type="hidden" name="limit_posts[rule]['.$count.'][user_id]" value="'.$v['user_id'].'"><input type="hidden" name="limit_posts[rule]['.$count.'][user_name]" value="'.$v['user_name'].'"></td>';
     92                    }
     93                    else{
     94                        echo '<td>'.$v['role'].'<input type="hidden" name="limit_posts[rule]['.$count.'][role]" value="'.$v['role'].'"></td>';
     95                    }
     96                   
     97                   
    7098                    echo '<td>'.$v['limit'].'<input type="hidden" name="limit_posts[rule]['.$count.'][limit]" value="'.$v['limit'].'"></td>';
    7199                    echo '<td>'.$v['post_type'].'<input type="hidden" name="limit_posts[rule]['.$count.'][post_type]" value="'.$v['post_type'].'"></td>';
  • limit-posts/trunk/sass/limitposts.scss

    r1194639 r1196271  
    1313            }
    1414            input[type="radio"]{
    15                 vertical-align:top;
    16                 margin-top:0.2em;
     15                float:left;
     16                margin-top:0.5em;
    1717            }
    1818            .narrative{
Note: See TracChangeset for help on using the changeset viewer.