Changeset 27564


Ignore:
Timestamp:
03/05/14 22:44:34 (6 years ago)
Author:
rvelices
Message:

autocomplete - privacy level for custom suggestions

Location:
extensions/rv_autocomplete
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • extensions/rv_autocomplete/admin/custom.php

    r22201 r27564  
    55ORDER BY name'; 
    66 
    7 $suggestions = array_from_query($query); 
     7$suggestions = query2array($query); 
    88 
    99$roots = rvac_get_url_roots(); 
     
    1212 
    1313$template->assign('suggestions', $suggestions); 
     14foreach ($conf['available_permission_levels'] as $level) 
     15{ 
     16        if (0 == $level) 
     17                $label = l10n('Everybody'); 
     18        else 
     19                $label = l10n( sprintf('Level %d', $level) ); 
     20        $options[$level] = $label; 
     21} 
     22$template->assign('available_permission_levels', $options); 
     23 
    1424$template->assign('RVAC_ID', RVAC_ID); 
    1525?> 
  • extensions/rv_autocomplete/admin/custom.tpl

    r25546 r27564  
    2828<td> 
    2929        <input id="ac_counter" type="text" size="3"> 
     30</td> 
     31</tr> 
     32 
     33<tr> 
     34<td> 
     35<label for=ac_level>{'Privacy level'|@translate}:</label> 
     36</td> 
     37<td> 
     38        <select id="ac_level">  
     39        {foreach $available_permission_levels as $level=>$label} 
     40                <option value="{$level}">{$label}</option> 
     41        {/foreach} 
     42        </select> 
    3043</td> 
    3144</tr> 
     
    5467<thead> 
    5568<tr class="throw"> 
    56 <th>{'Name'|@translate}</th> 
    57 <th>{'Weight'|@translate}</th> 
    58 <th>{'URL'|@translate}</th> 
    59 <th>{'Actions'|@translate}</th> 
     69<th class="dtc_Name">{'Name'|@translate}</th> 
     70<th class="dtc_Weight">{'Weight'|@translate}</th> 
     71<th class="dtc_Level">{'Privacy level'|@translate}</th> 
     72<th class="dtc_Url">{'URL'|@translate}</th> 
     73<th class="dtc_Actions">{'Actions'|@translate}</th> 
    6074</tr> 
    6175</thead> 
     
    110124 
    111125{footer_script} 
    112 var iniDatas = [ 
    113 {foreach from=$suggestions item=s name=sloop} 
    114 {ldelim}id:{$s.id},name:"{$s.name|@escape:javascript}",counter:{$s.counter},url:"{$s.url|@escape:javascript}",U_LINK:"{$s.U_LINK|@escape:javascript}"{rdelim}{if !$smarty.foreach.sloop.last},{/if} 
    115 {/foreach} 
    116 ]; 
    117 var SHelper = {ldelim} 
    118 {literal} 
    119  
    120 buildRowData: function(item) { 
    121         var rowData = []; 
    122         rowData.push(item.name); 
    123         rowData.push(item.counter); 
    124         rowData.push( "<a href=\""+item.U_LINK+"\" onclick=\"return SHelper.zoom(this.href)\">" 
    125                 + (item.url ? item.url : "show" ) 
    126                 + "</a>" 
    127         ); 
    128         rowData.push("<a href=\"\" onclick=\"return SHelper.del(this)\">Delete</a>" 
    129                 + " <a href=\"\" onclick=\"return SHelper.edit(this)\">Edit</a>" 
    130         ); 
    131         return rowData; 
    132 }, 
    133  
    134 buildRow: function(item) { 
    135         var rd = SHelper.buildRowData(item) 
    136          , row = "<tr>"; 
    137           
    138         for (var i =0; i<rd.length; i++) 
    139                 row += "<td>"+rd[i]+"</td>"; 
    140  
    141         row += "</tr>"; 
    142  
    143         return $(row).data("ac", item) 
    144 }, 
     126var SHelper = { 
    145127 
    146128rowFromNode: function(node) { 
     
    160142        if (!confirm("Are you sure?")) return false; 
    161143        var row = SHelper.rowFromNode(node) 
    162                 , item=row.data("ac"); 
     144                , item=dataTable.fnGetData(row[0]); 
    163145                 
    164146        row.fadeTo(500, 0.4); 
    165147        (new PwgWS("")).callService( 
    166                 "rvac.delCustom", {id: item.id} , 
     148                "rvac.delCustom", { id: item.id}, 
    167149                { 
    168150                        method: "POST", 
    169151                        onFailure: function(num, text) { row.stop(); row.fadeTo(0,1); alert(num + " " + text); }, 
    170152                        onSuccess: function(result) {  
    171                                 // row.remove(); 
    172153                                dataTable.fnDeleteRow( row[0] ); 
    173154                        } 
     
    180161add: function() { 
    181162        $("#ac_name,#ac_counter,#ac_url").val( "" ); 
     163        $("#ac_level").val("0"); 
    182164        $("#acFormContainer") 
    183                 .dialog("option", "buttons", [{text: "Create", click: function() { 
     165                .dialog("option", "buttons", [{ text: "Create", click: function() { 
    184166                                (new PwgWS("")).callService( 
    185                                         "rvac.addCustom", { name:$("#ac_name").val(), counter:$("#ac_counter").val(), url:$("#ac_url").val() }, 
     167                                        "rvac.addCustom", { name:$("#ac_name").val(), counter:$("#ac_counter").val(), level:$("#ac_level").val(), url:$("#ac_url").val() }, 
    186168                                        { 
    187169                                                method: "POST", 
     
    190172                                                }, 
    191173                                                onSuccess: function(result) { 
    192                                                         //$("#csTable").append( SHelper.buildRow(result) ); 
    193                                                         var rd = SHelper.buildRowData(result); 
    194                                                         var node = dataTable.fnGetNodes( dataTable.fnAddData(rd)[0] ); 
    195                                                         $(node).data("ac", result); 
    196  
     174                                                        dataTable.fnAddData(result); 
    197175                                                        $("#ac_name,#ac_counter,#ac_url").val( "" ); 
    198176                                                } 
     
    206184edit: function(node) { 
    207185        var row = SHelper.rowFromNode(node) 
    208                 , item=row.data("ac"); 
     186                , item=dataTable.fnGetData(row[0]); 
    209187 
    210188        $("#ac_name").val( item.name ); 
    211189        $("#ac_counter").val( item.counter ); 
     190        $("#ac_level").val( item.level ); 
    212191        $("#ac_url").val( item.url ); 
    213192 
    214193        $("#acFormContainer") 
    215                 .dialog("option", "buttons", [{text: "Modify", click: function() { 
     194                .dialog("option", "buttons", [{ text: "Modify", click: function() { 
    216195                                (new PwgWS("")).callService( 
    217                                         "rvac.modCustom", {id: item.id, name:$("#ac_name").val(), counter:$("#ac_counter").val(), url:$("#ac_url").val() }, 
     196                                        "rvac.modCustom", { id: item.id, name:$("#ac_name").val(), counter:$("#ac_counter").val(), level:$("#ac_level").val(), url:$("#ac_url").val() }, 
    218197                                        { 
    219198                                                method: "POST", 
     
    222201                                                }, 
    223202                                                onSuccess: function(result) { 
    224                                                         /*row.after( SHelper.buildRow(result) ) 
    225                                                                 .remove();*/ 
    226  
    227                                                         dataTable.fnUpdate(SHelper.buildRowData(result), row[0]); 
    228                                                         row.data("ac", result); 
    229  
     203                                                        dataTable.fnUpdate(result, row[0]); 
    230204                                                        $("#acFormContainer").dialog("close"); 
    231205                                                } 
     
    242216$().ready( function() { 
    243217        var table = $("#csTable"); 
    244         $.each(iniDatas, function(i, item) { 
    245                 table.append( SHelper.buildRow(item) ); 
    246         }); 
    247218        dataTable = table.dataTable( { 
    248219                sDom : '<"dtBar"filp>rt<"dtBar"ilp>', 
    249220                iDisplayLength: 100, 
    250                 aoColumnDefs: [ 
    251                         { bSearchable: false, aTargets: [1,3] }, 
    252                         { bSortable: false, aTargets: [3] } 
     221                aaData: [{foreach from=$suggestions item=s name=sloop} 
     222{ldelim}id:{$s.id},name:"{$s.name|@escape:javascript}",counter:{$s.counter},level:{$s.level},url:"{$s.url|@escape:javascript}",U_LINK:"{$s.U_LINK|@escape:javascript}"{rdelim}{if !$smarty.foreach.sloop.last},{/if} 
     223{/foreach} 
     224], 
     225                aoColumnDefs: [ { 
     226                                aTargets: ["dtc_Name"], 
     227                                mData: function(item) { 
     228                                        return item.name; 
     229                                } 
     230                        },{ 
     231                                aTargets: ["dtc_Weight"], 
     232                                bSearchable: false, 
     233                                mData: function(item) { 
     234                                        return item.counter; 
     235                                } 
     236                        },{ 
     237                                aTargets: ["dtc_Level"], 
     238                                mData: function(item, type) { 
     239                                        if ("sort"===type) 
     240                                                return item.level; 
     241                                        switch (item.level) { 
     242                                        {foreach $available_permission_levels as $level=>$label} 
     243                                                case {$level}: 
     244                                                case "{$level}": 
     245                                                        return "{$label|escape:'javascript'}"; 
     246                                        {/foreach} 
     247                                        } 
     248                                        return item.level; 
     249                                } 
     250                        },{ 
     251                                aTargets: ["dtc_Url"], 
     252                                bSearchable: false, 
     253                                mData: function(item) { 
     254                                        return "<a href=\""+item.U_LINK+"\" onclick=\"return SHelper.zoom(this.href)\">" 
     255                                                + (item.url ? item.url : "show" ) 
     256                                                + "</a>" 
     257                                } 
     258                        },{ 
     259                                aTargets: ["dtc_Actions"], 
     260                                bSearchable: false, 
     261                                bSortable: false, 
     262                                mData: function(item) { 
     263                                        return "<a href=\"\" onclick=\"return SHelper.del(this)\">Delete</a>" 
     264                                                + " <a href=\"\" onclick=\"return SHelper.edit(this)\">Edit</a>" 
     265                                } 
     266                        } 
    253267                ], 
    254268                asStripeClasses: ["row1", "row2"], 
     
    273287        ); 
    274288}); 
    275 {/literal} 
    276289{/footer_script} 
  • extensions/rv_autocomplete/admin/exclude.php

    r22214 r27564  
    2929  GROUP BY id 
    3030  ORDER BY global_rank'; 
    31 $albums = array_from_query($query); 
     31$albums = query2array($query); 
    3232usort($albums, 'global_rank_compare'); 
    3333 
     
    4040  GROUP BY id 
    4141  ORDER BY url_name'; 
    42 $tags = array_from_query($query); 
     42$tags = query2array($query); 
    4343$tags_select = array(); 
    4444foreach($tags as $tag) 
  • extensions/rv_autocomplete/admin/functions.inc.php

    r22201 r27564  
    4848function rvac_ws_add_methods($srv_arr) 
    4949{ 
     50        global $conf; 
    5051  $srv = $srv_arr[0]; 
    5152  include_once( dirname(__FILE__).'/../functions.inc.php' ); 
    5253  $srv->addMethod('rvac.addCustom', 'rv_ac_ws_add_custom_suggestion', 
    5354    array( 
    54       'name' => array(), 
    55       'counter' => array('default'=>0), 
    56       'url' => array('default'=>''), 
     55                        'name' => array(), 
     56                        'counter' => array('default'=>0), 
     57                        'url' => array('default'=>''), 
     58                        'level' => array('default'=>min($conf['available_permission_levels']), 'maxValue'=>max($conf['available_permission_levels']),'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), 
    5759    ), 
    58     ''); 
     60    '','', array('admin_only'=>true, 'post_only'=>true)); 
    5961 
    6062  $srv->addMethod('rvac.modCustom', 'rv_ac_ws_mod_custom_suggestion', 
     
    6466      'counter' => array('flags' => WS_PARAM_OPTIONAL), 
    6567      'url' => array('flags' => WS_PARAM_OPTIONAL), 
     68                        'level' => array('flags' => WS_PARAM_OPTIONAL, 'maxValue'=>max($conf['available_permission_levels']),'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), 
    6669    ), 
    67     ''); 
     70    '','', array('admin_only'=>true, 'post_only'=>true)); 
    6871 
    6972  $srv->addMethod('rvac.delCustom', 'rv_ac_ws_del_custom_suggestion', 
    7073    array('id'), 
    71     ''); 
     74    '','', array('admin_only'=>true, 'post_only'=>true)); 
    7275} 
    7376 
    7477function rv_ac_ws_add_custom_suggestion($params, $service) 
    7578{ 
    76   global $conf; 
    77   if (!is_admin() || !$service->isPost()) 
    78     return new PwgError(403, 'post admin'); 
    79  
    8079  $name = trim($params['name']); 
    8180  if (empty($name)) 
     
    8887  if ( !empty($params['url']) ) 
    8988    $insert['url'] = $params['url']; 
     89  if ( isset($params['level']) ) 
     90    $insert['level'] = $params['level']; 
    9091 
    9192  mass_inserts(RVAC_SUGGESTIONS, array_keys($insert), array($insert)); 
     
    100101function rv_ac_ws_mod_custom_suggestion($params, $service) 
    101102{ 
    102   global $conf; 
    103   if (!is_admin() || !$service->isPost()) 
    104     return new PwgError(403, 'post admin'); 
    105103  $id = intval($params['id']); 
    106104  $update = array(); 
     
    112110  if (isset($params['url'])) 
    113111    $update['url'] = $params['url']; 
     112  if ( isset($params['level']) ) 
     113    $update['level'] = $params['level']; 
    114114 
    115115  single_update(RVAC_SUGGESTIONS, 
     
    129129function rv_ac_ws_del_custom_suggestion($params, $service) 
    130130{ 
    131   global $conf; 
    132   if (!is_admin() || !$service->isPost()) 
    133     return new PwgError(403, 'post admin'); 
    134  
    135131  $id = intval($params['id']); 
    136132  $q = 'DELETE FROM '.RVAC_SUGGESTIONS.' WHERE id='.$id; 
  • extensions/rv_autocomplete/functions.inc.php

    r22246 r27564  
    7676  if ( !empty($rvac_conf['excluded_tags']) ) 
    7777    $query .= ' WHERE id NOT IN ('.implode(',',$rvac_conf['excluded_tags']).')'; 
    78   $tag_names = simple_hash_from_query($query, 'id','name'); 
     78  $tag_names = query2array($query, 'id','name'); 
    7979 
    8080  $url_len = strlen( $roots['t'] ); 
     
    105105  } 
    106106 
    107   $query = 'SELECT name,counter,url FROM '.RVAC_SUGGESTIONS; 
     107  $query = 'SELECT name,counter,url FROM '.RVAC_SUGGESTIONS.' WHERE level<='.$user['level']; 
    108108  $result = pwg_query($query); 
    109109  while ($row = pwg_db_fetch_assoc($result)) 
  • extensions/rv_autocomplete/main.inc.php

    r25546 r27564  
    11<?php /* 
    22Plugin Name: RV autocomplete 
    3 Version: 2.6.a 
     3Version: 2.6.b 
    44Description: Autocompletes the quick search with albums, tags or custom suggestions 
    55Plugin URI: http://piwigo.org/ext/extension_view.php?eid=694 
Note: See TracChangeset for help on using the changeset viewer.