Skip to content

Commit

Permalink
Merge branch 'allow-null-group-assignment' into issue-userfrosting#867
Browse files Browse the repository at this point in the history
  • Loading branch information
amosfolz committed Jun 19, 2019
2 parents c731414 + c189db8 commit 062f5d1
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public function up()
{
if ($this->schema->hasTable('users')) {
$this->schema->table('users', function (Blueprint $table) {
$table->unsignedInteger('group_id')->comment('The id of the user group.')->nullable()->change();
$table->unsignedInteger('group_id')->default(null)->comment('The id of the user group.')->nullable()->change();
});
}
}
Expand Down
84 changes: 40 additions & 44 deletions app/sprinkles/admin/assets/userfrosting/js/widgets/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Set up the form in a modal after being successfully attached to the body.
*/
function attachUserForm() {
$("body").on('renderSuccess.ufModal', function (data) {
$("body").on('renderSuccess.ufModal', function(data) {
var modal = $(this).ufModal('getModal');
var form = modal.find('.js-form');

Expand All @@ -15,11 +15,7 @@ function attachUserForm() {
width: '100%'
});

// Needed to allow select2 to render a 'empty' list item.
form.find(".js-select2-group").select2({
width: '100%',
templateResult: item => item.text || '\u200B'
});


// Set up the form for submission
form.ufForm({
Expand Down Expand Up @@ -48,14 +44,14 @@ function toggleChangePasswordMode(el, userName, changePasswordMode) {
if (validator) {
//Iterate through named elements inside of the form, and mark them as error free
el.find("input[type='password']").each(function() {
validator.successList.push(this); //mark as error free
validator.successList.push(this); //mark as error free
});
validator.resetForm();//remove error class on name elements and clear history
validator.reset();//remove all error and success data
validator.resetForm(); //remove error class on name elements and clear history
validator.reset(); //remove all error and success data
}
el.find("input[type='password']").closest('.form-group')
.removeClass('has-error has-success');
el.find('.form-control-feedback').each(function () {
.removeClass('has-error has-success');
el.find('.form-control-feedback').each(function() {
$(this).remove();
});
} else {
Expand All @@ -72,7 +68,7 @@ function toggleChangePasswordMode(el, userName, changePasswordMode) {
* Update user field(s)
*/
function updateUser(userName, fieldName, fieldValue) {
var data = {
var data = {
'value': fieldValue
};

Expand All @@ -98,19 +94,19 @@ function updateUser(userName, fieldName, fieldValue) {
return $.parseJSON(result);
}
} catch (e) {
// statements to handle any exceptions
console.log("Warning: Could not parse expected JSON response.");
return {};
// statements to handle any exceptions
console.log("Warning: Could not parse expected JSON response.");
return {};
}
}
}
}).fail(function (jqXHR) {
}).fail(function(jqXHR) {
// Error messages
if (debugAjax && jqXHR.responseText) {
document.write(jqXHR.responseText);
document.close();
} else {
console.log("Error (" + jqXHR.status + "): " + jqXHR.responseText );
console.log("Error (" + jqXHR.status + "): " + jqXHR.responseText);

// Display errors on failure
// TODO: ufAlerts widget should have a 'destroy' method
Expand All @@ -124,7 +120,7 @@ function updateUser(userName, fieldName, fieldValue) {
}

return jqXHR;
}).done(function (response) {
}).done(function(response) {
window.location.reload();
});
}
Expand All @@ -134,8 +130,8 @@ function updateUser(userName, fieldName, fieldValue) {
* @param {module:jQuery} el jQuery wrapped element to target.
* @param {{delete_redirect: string}} options Options used to modify behaviour of button actions.
*/
function bindUserButtons(el, options) {
if (!options) options = {};
function bindUserButtons(el, options) {
if (!options) options = {};

/**
* Buttons that launch a modal dialog
Expand Down Expand Up @@ -168,38 +164,38 @@ function updateUser(userName, fieldName, fieldValue) {
msgTarget: $("#alerts-page")
});

$("body").on('renderSuccess.ufModal', function (data) {
$("body").on('renderSuccess.ufModal', function(data) {
var modal = $(this).ufModal('getModal');
var form = modal.find('.js-form');

// Set up collection widget
var roleWidget = modal.find('.js-form-roles');
roleWidget.ufCollection({
dropdown : {
dropdown: {
ajax: {
url : site.uri.public + '/api/roles'
url: site.uri.public + '/api/roles'
},
placeholder : "Select a role"
placeholder: "Select a role"
},
dropdownTemplate: modal.find('#user-roles-select-option').html(),
rowTemplate : modal.find('#user-roles-row').html()
rowTemplate: modal.find('#user-roles-row').html()
});

// Get current roles and add to widget
$.getJSON(site.uri.public + '/api/users/u/' + userName + '/roles')
.done(function (data) {
$.each(data.rows, function (idx, role) {
role.text = role.name;
roleWidget.ufCollection('addRow', role);
.done(function(data) {
$.each(data.rows, function(idx, role) {
role.text = role.name;
roleWidget.ufCollection('addRow', role);
});
});
});

// Set up form for submission
form.ufForm()
.on("submitSuccess.ufForm", function() {
// Reload page on success
window.location.reload();
});
.on("submitSuccess.ufForm", function() {
// Reload page on success
window.location.reload();
});
});
});

Expand All @@ -216,7 +212,7 @@ function updateUser(userName, fieldName, fieldValue) {
msgTarget: $("#alerts-page")
});

$("body").on('renderSuccess.ufModal', function () {
$("body").on('renderSuccess.ufModal', function() {
var modal = $(this).ufModal('getModal');
var form = modal.find('.js-form');

Expand Down Expand Up @@ -252,16 +248,16 @@ function updateUser(userName, fieldName, fieldValue) {
msgTarget: $("#alerts-page")
});

$("body").on('renderSuccess.ufModal', function () {
$("body").on('renderSuccess.ufModal', function() {
var modal = $(this).ufModal('getModal');
var form = modal.find('.js-form');

form.ufForm()
.on("submitSuccess.ufForm", function() {
// Navigate or reload page on success
if (options.delete_redirect) window.location.href = options.delete_redirect;
else window.location.reload();
});
.on("submitSuccess.ufForm", function() {
// Navigate or reload page on success
if (options.delete_redirect) window.location.href = options.delete_redirect;
else window.location.reload();
});
});
});

Expand All @@ -275,12 +271,12 @@ function updateUser(userName, fieldName, fieldValue) {
updateUser(btn.data('user_name'), 'flag_verified', '1');
});

el.find('.js-user-enable').click(function () {
el.find('.js-user-enable').click(function() {
var btn = $(this);
updateUser(btn.data('user_name'), 'flag_enabled', '1');
});

el.find('.js-user-disable').click(function () {
el.find('.js-user-disable').click(function() {
var btn = $(this);
updateUser(btn.data('user_name'), 'flag_enabled', '0');
});
Expand All @@ -298,4 +294,4 @@ function bindUserCreationButton(el) {

attachUserForm();
});
};
};
3 changes: 2 additions & 1 deletion app/sprinkles/admin/src/Controller/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -1219,9 +1219,10 @@ public function updateInfo(Request $request, Response $response, $args)
return $response->withJson([], 400);
}

if ($data['group_id'] == 0) {
if (isset($data['group_id']) && $data['group_id'] == 0) {
$data['group_id'] = null;
}

// Begin transaction - DB will be rolled back if an exception occurs
Capsule::transaction(function () use ($data, $user, $currentUser) {
// Update the user and generate success messages
Expand Down
2 changes: 1 addition & 1 deletion app/sprinkles/admin/templates/forms/user.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<input type="text" class="form-control" name="theme" value="{{user.group.name}}" disabled>
{% else %}
<select id="input-group" class="form-control js-select2-group" name="group_id">
<option></option>
<option value="0" </option>
{% for group in groups %}
<option value="{{group.id}}" {% if (group.id == user.group_id) %}selected{% endif %}>{{group.name}}</option>
{% endfor %}
Expand Down

0 comments on commit 062f5d1

Please sign in to comment.