diff options
author | Paul Duncan <pabs@pablotron.org> | 2016-05-26 02:35:34 -0400 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2016-05-26 02:35:34 -0400 |
commit | 3c5e821b3cdd1c5a144bf012bada282fffd871a2 (patch) | |
tree | fe6e12a488605481bd9c2fe18a0d59fac9030836 /data | |
parent | 9e73b3b2bd571b5f7dd752db80bc86f27d2300dd (diff) | |
download | guff-3c5e821b3cdd1c5a144bf012bada282fffd871a2.tar.bz2 guff-3c5e821b3cdd1c5a144bf012bada282fffd871a2.zip |
fix user-edit
Diffstat (limited to 'data')
-rw-r--r-- | data/assets/js/admin/dialogs/user-edit.js | 63 | ||||
-rw-r--r-- | data/assets/js/admin/tabs/users.js | 7 |
2 files changed, 54 insertions, 16 deletions
diff --git a/data/assets/js/admin/dialogs/user-edit.js b/data/assets/js/admin/dialogs/user-edit.js index 2e43d42..fed9364 100644 --- a/data/assets/js/admin/dialogs/user-edit.js +++ b/data/assets/js/admin/dialogs/user-edit.js @@ -2,14 +2,40 @@ jQuery(function($) { "use strict"; $('#user-edit-dialog').on('show.bs.modal', function() { - var row = $(this).data('row'); - - $.each({ - name: 'user_name', - email: 'email', - role: 'role_name', - }, function(id, col) { - $('#user-edit-' + id).val(row[col]); + var me = $(this); + + $(this).find('.modal-body').addClass('hidden'); + $(this).find('.modal-body.loading-text').removeClass('hidden'); + + send('user/get', { + user_id: me.data('user_id'), + }).always(function() { + $(this).find('.modal-body.loading-text').addClass('hidden'); + }).fail(function(r) { + var error = r.responseText; + + try { + // try to extract error message from json response + var data = $.parseJSON(r.responseText); + if ('error' in data) + error = data.error; + } catch (e) {} + + me.find('.modal-body.loading-error').removeClass('hidden') + .find('.error-text').text(error); + }).done(function(r) { + $.each({ + name: 'name', + email: 'email', + role: 'role', + }, function(id, col) { + $('#user-edit-' + id).val(r[col]); + }); + + $('#user-edit-password').val(''); + $('#user-edit-active').val((r.is_active == '1') ? 'active' : 'inactive'); + + me.find('.modal-body.loading-done').removeClass('hidden'); }); }); @@ -34,8 +60,7 @@ jQuery(function($) { }); $('#user-edit-confirm').click(function() { - var me = $(this), - user_id = $('#user-edit-dialog').data('row').user_id; + var me = $(this); if (me.hasClass('disabled')) return false; @@ -43,18 +68,28 @@ jQuery(function($) { // toggle loading me.toggleClass('disabled').find('.loading').toggleClass('hidden'); - send('test/edit_user', { - user_id: user_id, + send('user/set', { + user_id: $('#user-edit-dialog').data('user_id'), name: $('#user-edit-name').val(), email: $('#user-edit-email').val(), + password: $('#user-edit-password').val(), role: $('#user-edit-role').val(), + active: ($('#user-edit-active').val() == 'active') ? 't' : 'f', }).always(function() { // toggle loading me.toggleClass('disabled').find('.loading').toggleClass('hidden'); }).fail(function(r) { - alert('Error ' + r.responseText); + var error = r.responseText; + + try { + // try to extract error message from json response + var data = $.parseJSON(r.responseText); + if ('error' in data) + error = data.error; + } catch (e) {} + + alert('Error: ' + error); }).done(function(r) { - console.log(r); $('#users-reload').click(); $('#user-edit-dialog').modal('hide'); }); diff --git a/data/assets/js/admin/tabs/users.js b/data/assets/js/admin/tabs/users.js index b74b8a1..2fff893 100644 --- a/data/assets/js/admin/tabs/users.js +++ b/data/assets/js/admin/tabs/users.js @@ -10,7 +10,7 @@ jQuery(function($) { "data-user_id='%{user_id|h}' ", "data-q='%{q|h}' ", ">", - "<i class='fa fa-fw fa-user'></i>", + "<i class='fa fa-fw %{icon|h}'></i>", " ", "%{name|h} (%{email|h})", @@ -89,8 +89,11 @@ jQuery(function($) { })); }).done(function(r) { list.html($.map(r, function(row) { + var active = (row.is_active == '1'); + return TEMPLATES.run('user', $.extend({}, row, { - css: (row.is_active == '1') ? '' : 'list-group-item-danger', + icon: active ? 'fa-user' : 'fa-user-times', + css: active ? '' : 'list-group-item-danger', q: [row.user_id, row.user_name, row.email, row.role_name].join(' ').toLowerCase(), badge_css: ROLE_BADGE_CSS[row.role], })); |