Ignore:
Timestamp:
Mar 5, 2014, 10:44:34 PM (11 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.