diff options
author | rvelices <rv-github@modusoptimus.com> | 2014-01-17 22:20:56 +0000 |
---|---|---|
committer | rvelices <rv-github@modusoptimus.com> | 2014-01-17 22:20:56 +0000 |
commit | a5e853c618da907f14299bc78233311d5d4b036c (patch) | |
tree | a41a64708448a09ab91b96fd469e452cfd454e7b | |
parent | a02af472bc2e39f466dcb0b658333e437a28455e (diff) |
merge -r26837 from trunk to branch 2.6
admin rating improvements
- use web service for deletion
- use datatables for rating by user
- use fontello icons
git-svn-id: http://piwigo.org/svn/branches/2.6@26838 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r-- | admin/rating.php | 28 | ||||
-rw-r--r-- | admin/themes/default/template/rating.tpl | 61 | ||||
-rw-r--r-- | admin/themes/default/template/rating_user.tpl | 88 | ||||
-rw-r--r-- | include/ws_functions/pwg.php | 4 | ||||
-rw-r--r-- | ws.php | 1 |
5 files changed, 128 insertions, 54 deletions
diff --git a/admin/rating.php b/admin/rating.php index 0edd1369b..381b5c4cc 100644 --- a/admin/rating.php +++ b/admin/rating.php @@ -212,10 +212,11 @@ ORDER BY date DESC;'; $nb_rates = pwg_db_num_rows($result); $tpl_image = - array( - 'U_THUMB' => $thumbnail_src, - 'U_URL' => $image_url, - 'SCORE_RATE' => $image['score'], + array( + 'id' => $image['id'], + 'U_THUMB' => $thumbnail_src, + 'U_URL' => $image_url, + 'SCORE_RATE' => $image['score'], 'AVG_RATE' => $image['avg_rates'], 'SUM_RATE' => $image['sum_rates'], 'NB_RATES' => (int)$image['nb_rates'], @@ -226,16 +227,6 @@ ORDER BY date DESC;'; while ($row = pwg_db_fetch_assoc($result)) { - - $url_del = PHPWG_ROOT_PATH.'admin.php'. - get_query_string_diff(array('del')); - - $del_param = 'e='.$image['id']. - '&u='.$row['user_id']. - '&a='.$row['anonymous_id']; - - $url_del .= '&del='.urlencode(urlencode($del_param)); - if ( isset($users[$row['user_id']]) ) { $user_rate = $users[$row['user_id']]; @@ -249,13 +240,8 @@ ORDER BY date DESC;'; $user_rate .= '('.$row['anonymous_id'].')'; } - $tpl_image['rates'][] = - array( - 'DATE' => /*format_date*/($row['date']), - 'RATE' => $row['rate'], - 'USER' => $user_rate, - 'U_DELETE' => $url_del - ); + $row['USER'] = $user_rate; + $tpl_image['rates'][] = $row; } $template->append( 'images', $tpl_image ); } diff --git a/admin/themes/default/template/rating.tpl b/admin/themes/default/template/rating.tpl index fbfd9d8d9..9dcce6f12 100644 --- a/admin/themes/default/template/rating.tpl +++ b/admin/themes/default/template/rating.tpl @@ -40,28 +40,57 @@ <td>{'Rating score'|@translate}</td> <td>{'Average rate'|@translate}</td> <td>{'Sum of rates'|@translate}</td> - <td>{'Rate'|@translate}</td> - <td>{'Username'|@translate}</td> - <td>{'Rate date'|@translate}</td> + <td>{'Rate'|@translate}/{'Username'|@translate}/{'Rate date'|@translate}</td> <td></td> </tr> {foreach from=$images item=image name=image} <tr valign="top" class="{if $smarty.foreach.image.index is odd}row1{else}row2{/if}"> - <td rowspan="{$image.NB_RATES_TOTAL+1}"><a href="{$image.U_URL}"><img src="{$image.U_THUMB}" alt="{$image.FILE}" title="{$image.FILE}"></a></td> - <td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.NB_RATES}/{$image.NB_RATES_TOTAL}</strong></td> - <td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.SCORE_RATE}</strong></td> - <td rowspan="{$image.NB_RATES_TOTAL+1}"><strong>{$image.AVG_RATE}</strong></td> - <td rowspan="{$image.NB_RATES_TOTAL+1}" style="border-right: 1px solid;" ><strong>{$image.SUM_RATE}</strong></td> -</tr> + <td><a href="{$image.U_URL}"><img src="{$image.U_THUMB}" alt="{$image.FILE}" title="{$image.FILE}"></a></td> + <td><strong>{$image.NB_RATES}/{$image.NB_RATES_TOTAL}</strong></td> + <td><strong>{$image.SCORE_RATE}</strong></td> + <td><strong>{$image.AVG_RATE}</strong></td> + <td style="border-right:1px solid" ><strong>{$image.SUM_RATE}</strong></td> + <td> + <table style="width:100%"> {foreach from=$image.rates item=rate name=rate} -<tr class="{if ($smarty.foreach.image.index+$smarty.foreach.rate.index) is odd}row1{else}row2{/if}"> - <td>{$rate.RATE}</td> +<tr> + <td>{$rate.rate}</td> <td><b>{$rate.USER}</b></td> - <td>{$rate.DATE}</td> - <td><a href="{$rate.U_DELETE}"><img src="{$themeconf.admin_icon_dir}/delete.png" alt="[{'Delete'|@translate}]"></a></td> + <td>{$rate.date}</td> + <td><a onclick="return del(this,{$image.id},{$rate.user_id}{if !empty({$rate.anonymous_id})},'{$rate.anonymous_id}'{/if})" class="icon-trash"> </a></td> +</tr> +{/foreach}{*rates*} + </table> + </td> </tr> -{/foreach} {*rates*} -{/foreach} {*images*} +{/foreach}{*images*} </table> +{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'} +{footer_script} +function del(node,id,uid,aid){ + var tr = jQuery(node).parents("tr").first().fadeTo(1000, 0.4), + data = { + image_id: id, + user_id: uid + }; + if (aid) + data.anonymous_id = aid; -{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} + (new PwgWS('{$ROOT_URL|@escape:javascript}')).callService( + 'pwg.rates.delete', data, + { + method: 'POST', + onFailure: function(num, text) { tr.stop(); tr.fadeTo(0,1); alert(num + " " + text); }, + onSuccess: function(result){ + if (result) + tr.remove(); + else + alert(result); + } + } + ); + return false; +} +{/footer_script} + +{if !empty($navbar)}{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} diff --git a/admin/themes/default/template/rating_user.tpl b/admin/themes/default/template/rating_user.tpl index 7cc36c4fb..a37944aa3 100644 --- a/admin/themes/default/template/rating_user.tpl +++ b/admin/themes/default/template/rating_user.tpl @@ -1,12 +1,32 @@ +{combine_script id='jquery.dataTables' load='footer' path='themes/default/js/plugins/jquery.dataTables.js'} +{html_style} +.sorting { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_both.png) no-repeat center right; cursor:pointer; } +.sorting_asc { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_asc.png) no-repeat center right; } +.sorting_desc { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_desc.png) no-repeat center right; } + +.sorting, .sorting_asc, .sorting_desc { + padding: 3px 18px 3px 10px; +} +.sorting_asc_disabled { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_asc_disabled.png) no-repeat center right; } +.sorting_desc_disabled { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_desc_disabled.png) no-repeat center right; } + +.dtBar { + text-align:left; + padding-left: 20px; +} +{/html_style} + <h2>{$ratings|@count} {'Users'|@translate}</h2> <form action="{$F_ACTION}" method="GET"> <fieldset> +<noscript> <label>{'Sort by'|@translate} <select name="order_by"> {html_options options=$order_by_options selected=$order_by_options_selected} </select> </label> +</noscript> <label>{'Number of rates'|@translate}> <input type="text" size="5" name="f_min_rates" value="{$F_MIN_RATES}"> </label> @@ -17,37 +37,71 @@ </form> {combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'} -{footer_script}{literal} -function del(elt,uid,aid) -{ - if (!confirm({/literal}'{'Are you sure?'|@translate|@escape:'javascript'}'{literal})) +{footer_script} +var oTable = jQuery('#rateTable').dataTable({ + sDom : '<"dtBar"f>rt', + bPaginate: false, + aaSorting: [[4,'desc']], + aoColumnDefs: [ + { + aTargets: ["dtc_user"], + }, + { + aTargets: ["dtc_stat"], + asSorting: ["desc","asc"], + bSearchable: false + }, + { + aTargets: ["dtc_rate"], + asSorting: ["desc","asc"], + bSearchable: false + }, + { + aTargets: ["dtc_del"], + bSortable: false, + bSearchable: false + } + ] +}); + +function del(elt,uid,aid){ + if (!confirm('{'Are you sure?'|@translate|@escape:'javascript'}')) return false; var tr = elt; while ( tr.nodeName != "TR") tr = tr.parentNode; tr = jQuery(tr).fadeTo(1000, 0.4); - (new PwgWS({/literal}'{$ROOT_URL|@escape:javascript}'{literal})).callService( - 'pwg.rates.delete', {user_id:uid, anonymous_id:aid}, + + (new PwgWS('{$ROOT_URL|@escape:javascript}')).callService( + 'pwg.rates.delete', { user_id:uid, anonymous_id:aid}, { method: 'POST', onFailure: function(num, text) { tr.stop(); tr.fadeTo(0,1); alert(num + " " + text); }, - onSuccess: function(result) { if (result) {tr.remove();} else alert(result); } + onSuccess: function(result){ + if (result) + oTable.fnDeleteRow(tr[0]); + else + alert(result); + } } ); + return false; } -{/literal}{/footer_script} -<table> +{/footer_script} +<table id="rateTable"> +<thead> <tr class="throw"> - <td>{'Username'|@translate}</td> - <td>{'Number of rates'|@translate}</td> - <td>{'Average rate'|@translate}</td> - <td>{'Variation'|@translate}</td> - <td>{'Consensus deviation'|@translate|@replace:' ':'<br>'}</td> + <td class="dtc_user">{'Username'|@translate}</td> + <td class="dtc_stat">{'Number of rates'|@translate}</td> + <td class="dtc_stat">{'Average rate'|@translate}</td> + <td class="dtc_stat">{'Variation'|@translate}</td> + <td class="dtc_stat">{'Consensus deviation'|@translate|@replace:' ':'<br>'}</td> {foreach from=$available_rates item=rate} - <td>{$rate}</td> + <td class="dtc_rate">{$rate}</td> {/foreach} - <td></td> + <td class="dtc_del"></td> </tr> +</thead> {foreach from=$ratings item=rating key=user} <tr> <td>{$user}</td> @@ -62,7 +116,7 @@ function del(elt,uid,aid) <a class="cluetip" title="|{$rate_over|@htmlspecialchars}">{$rates|@count}</a> {/if}</td> {/foreach} - <td><a onclick="return del(this,{$rating.uid},'{$rating.aid}');"><img src="{$themeconf.admin_icon_dir}/delete.png" alt="[{'Delete'|@translate}]"></a></td> + <td><a onclick="return del(this,{$rating.uid},'{$rating.aid}');" class="icon-trash"></a></td> </tr> {/foreach} </table> diff --git a/include/ws_functions/pwg.php b/include/ws_functions/pwg.php index 0def2031f..5f3772aff 100644 --- a/include/ws_functions/pwg.php +++ b/include/ws_functions/pwg.php @@ -271,6 +271,10 @@ DELETE FROM '. RATE_TABLE .' { $query .= ' AND anonymous_id=\''.$params['anonymous_id'].'\''; } + if (!empty($params['image_id'])) + { + $query .= ' AND element_id='.$params['image_id']; + } $changes = pwg_db_changes(pwg_query($query)); if ($changes) @@ -307,6 +307,7 @@ function ws_addDefaultMethods( $arr ) array( 'user_id' => array('type'=>WS_TYPE_ID), 'anonymous_id' => array('default'=>null), + 'image_id' => array('flags'=>WS_PARAM_OPTIONAL, 'type'=>WS_TYPE_ID), ), 'Deletes all rates for a user.', $ws_functions_root . 'pwg.php', |