From 88001efb9042bbe8b1b0c7e9c46ad0f7a0919af5 Mon Sep 17 00:00:00 2001 From: plegall Date: Fri, 8 Nov 2013 21:50:52 +0000 Subject: feature 1668: first draft, add a complete form to edit user properties inside the DataTable. git-svn-id: http://piwigo.org/svn/trunk@25405 68402e56-0260-453c-a942-63ccdbb3a9ee --- admin/themes/default/icon/details_close.png | Bin 0 -> 841 bytes admin/themes/default/icon/details_open.png | Bin 0 -> 881 bytes admin/themes/default/template/user_list.tpl | 208 +++++++++++++++++++++++++++- 3 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 admin/themes/default/icon/details_close.png create mode 100644 admin/themes/default/icon/details_open.png (limited to 'admin') diff --git a/admin/themes/default/icon/details_close.png b/admin/themes/default/icon/details_close.png new file mode 100644 index 000000000..fcc23c63e Binary files /dev/null and b/admin/themes/default/icon/details_close.png differ diff --git a/admin/themes/default/icon/details_open.png b/admin/themes/default/icon/details_open.png new file mode 100644 index 000000000..6f034d0f2 Binary files /dev/null and b/admin/themes/default/icon/details_open.png differ diff --git a/admin/themes/default/template/user_list.tpl b/admin/themes/default/template/user_list.tpl index 380ca6f20..6efd63daf 100644 --- a/admin/themes/default/template/user_list.tpl +++ b/admin/themes/default/template/user_list.tpl @@ -15,6 +15,11 @@ var missingUsername = "{'Please, enter a login'|translate}"; var allUsers = [{$all_users}]; var selection = [{$selection}]; var pwg_token = "{$PWG_TOKEN}"; + +var truefalse = { + true:"{'Yes'|translate}", + false:"{'No'|translate}", +}; {/footer_script} {footer_script}{literal} @@ -79,6 +84,201 @@ jQuery(document).ready(function() { /** * Table with users */ + /* Formating function for row details */ + function fnFormatDetails(oTable, nTr) { + var userId = oTable.fnGetData(nTr)[0]; + console.log("userId = "+userId); + var sOut = null; + + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.users.getList", + type:"POST", + data: { + user_id: userId, + display: "all", + }, + success:function(data) { + jQuery("#user"+userId+" .loading").hide(); + + var data = jQuery.parseJSON(data); + if (data.stat == 'ok') { + var user = data.result.users[0]; + + var userDetails = ''; + userDetails += '
{/literal}{'Properties'|translate}{literal}'; + userDetails += '
{/literal}{'Username'|translate}{literal}'; + userDetails += '
'+user.username+'
'; + + userDetails += '
{/literal}{'Email address'|translate}{literal}'; + userDetails += '
'; + + userDetails += '
{/literal}{'Status'|translate}{literal}'; + userDetails += '
'; + +/* + userDetails += '
{/literal}{'Groups'|translate}{literal}'; + userDetails += '
'; + // userDetails += '
'+user.groups.join(",")+''; +*/ + + userDetails += '
{/literal}{'Privacy level'|translate}{literal}'; + userDetails += '
'; + + userDetails += '
{/literal}{'High definition enabled'|translate}{literal}'; + userDetails += '
'; + jQuery.each(truefalse, function(value, label) { + var checked = ''; + if (user.enabled_high == value) { + checked = ' checked="checked"'; + } + userDetails += ''; + }); + userDetails += '
'; + + userDetails += '
{/literal}{'Preferences'|translate}{literal}'; + + userDetails += '
{/literal}{'Number of photos per page'|translate}{literal}'; + userDetails += '
'+user.nb_image_page+'
'; + + userDetails += '
{/literal}{'Theme'|translate}{literal}'; + userDetails += '
'; + + userDetails += '
{/literal}{'Language'|translate}{literal}'; + userDetails += '
'; + + userDetails += '
{/literal}{'Recent period'|translate}{literal}'; + userDetails += '
'+user.recent_period+'
'; + + userDetails += '
{/literal}{'Expand all albums'|translate}{literal}'; + userDetails += '
'; + jQuery.each(truefalse, function(value, label) { + var checked = ''; + if (user.expand == value) { + checked = ' checked="checked"'; + } + userDetails += ''; + }); + userDetails += '
'; + + userDetails += '
{/literal}{'Show number of comments'|translate}{literal}'; + userDetails += '
'; + jQuery.each(truefalse, function(value, label) { + var checked = ''; + if (user.show_nb_comments == value) { + checked = ' checked="checked"'; + } + userDetails += ''; + }); + userDetails += '
'; + + userDetails += '
{/literal}{'Show number of hits'|translate}{literal}'; + userDetails += '
'; + jQuery.each(truefalse, function(value, label) { + var checked = ''; + if (user.show_nb_hits == value) { + checked = ' checked="checked"'; + } + userDetails += ''; + }); + userDetails += '
'; + userDetails += '
'; + + userDetails += ''; + userDetails += '' + + jQuery("#user"+userId).append(userDetails); + } + else { + console.log('error loading user details'); + } + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + console.log('technical error loading user details'); + } + }); + + return '
'; + } + + jQuery(document).on('click', '.userProperties input[type=submit]', function() { + var userId = jQuery(this).data('user_id'); + + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.users.setInfo", + type:"POST", + data: jQuery('#user'+userId).find('select, input').serialize(), + beforeSend: function() { + jQuery('#user'+userId+' .submitWait').show(); + }, + success:function(data) { + jQuery('#user'+userId+' .submitWait').hide(); + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + jQuery('#user'+userId+' .submitWait').hide(); + } + }); + + return false; + }); + + /* Add event listener for opening and closing details + * Note that the indicator for showing which row is open is not controlled by DataTables, + * rather it is done here + */ + jQuery(document).on('click', '#userList tbody td img', function() { + var nTr = this.parentNode.parentNode; + if ( this.src.match('details_close') ) { + /* This row is already open - close it */ + this.src = "admin/themes/default/icon/details_open.png"; + oTable.fnClose( nTr ); + } + else { + /* Open this row */ + this.src = "admin/themes/default/icon/details_close.png"; + oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' ); + } + }); + /* first column must be prefixed with the open/close icon */ var aoColumns = [ @@ -87,7 +287,7 @@ jQuery(document).ready(function() { }, { "mRender": function(data, type, full) { - return ''; + return ' '; } } ]; @@ -328,10 +528,16 @@ jQuery(document).ready(function() { {/literal} -- cgit v1.2.3