2017-02-18 01:56:23 -07:00
|
|
|
'use strict';
|
2017-02-17 21:55:19 -07:00
|
|
|
|
2014-10-08 15:36:47 -04:00
|
|
|
|
2020-07-30 12:26:37 -04:00
|
|
|
define('admin/manage/groups', [
|
2020-07-30 14:55:28 -04:00
|
|
|
'categorySelector',
|
|
|
|
|
], function (categorySelector) {
|
2014-10-08 15:36:47 -04:00
|
|
|
var Groups = {};
|
|
|
|
|
|
2015-07-09 14:01:06 -04:00
|
|
|
var intervalId = 0;
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
Groups.init = function () {
|
2017-02-17 20:20:42 -07:00
|
|
|
var createModal = $('#create-modal');
|
|
|
|
|
var createGroupName = $('#create-group-name');
|
|
|
|
|
var createModalGo = $('#create-modal-go');
|
|
|
|
|
var createModalError = $('#create-modal-error');
|
2014-10-08 15:36:47 -04:00
|
|
|
|
2015-07-09 14:01:06 -04:00
|
|
|
handleSearch();
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
createModal.on('keypress', function (e) {
|
2014-11-12 16:56:11 -05:00
|
|
|
if (e.keyCode === 13) {
|
|
|
|
|
createModalGo.click();
|
2014-10-08 15:36:47 -04:00
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
$('#create').on('click', function () {
|
2014-10-08 15:36:47 -04:00
|
|
|
createModal.modal('show');
|
2016-10-13 11:43:39 +02:00
|
|
|
setTimeout(function () {
|
2014-10-08 15:36:47 -04:00
|
|
|
createGroupName.focus();
|
|
|
|
|
}, 250);
|
|
|
|
|
});
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
createModalGo.on('click', function () {
|
2014-10-08 15:36:47 -04:00
|
|
|
var submitObj = {
|
2017-02-17 20:20:42 -07:00
|
|
|
name: createGroupName.val(),
|
|
|
|
|
description: $('#create-group-desc').val(),
|
2019-10-01 10:16:36 -04:00
|
|
|
private: $('#create-group-private').is(':checked') ? 1 : 0,
|
|
|
|
|
hidden: $('#create-group-hidden').is(':checked') ? 1 : 0,
|
2017-02-17 20:20:42 -07:00
|
|
|
};
|
2014-10-08 15:36:47 -04:00
|
|
|
|
2020-04-28 12:07:04 -04:00
|
|
|
$.ajax({
|
|
|
|
|
url: config.relative_path + '/api/v1/groups',
|
|
|
|
|
method: 'post',
|
|
|
|
|
data: submitObj,
|
|
|
|
|
}).done(function (res) {
|
|
|
|
|
createModalError.addClass('hide');
|
|
|
|
|
createGroupName.val('');
|
|
|
|
|
createModal.on('hidden.bs.modal', function () {
|
|
|
|
|
ajaxify.go('admin/manage/groups/' + res.response.name);
|
|
|
|
|
});
|
|
|
|
|
createModal.modal('hide');
|
|
|
|
|
}).fail(function (ev) {
|
|
|
|
|
if (utils.hasLanguageKey(ev.responseJSON.status.message)) {
|
|
|
|
|
ev.responseJSON.status.message = '[[admin/manage/groups:alerts.create-failure]]';
|
2014-10-08 15:36:47 -04:00
|
|
|
}
|
2020-04-28 12:07:04 -04:00
|
|
|
createModalError.translateHtml(ev.responseJSON.status.message).removeClass('hide');
|
2014-10-08 15:36:47 -04:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2020-07-10 13:12:14 -04:00
|
|
|
$('.groups-list').on('click', '[data-action]', function () {
|
2017-02-17 20:20:42 -07:00
|
|
|
var el = $(this);
|
|
|
|
|
var action = el.attr('data-action');
|
|
|
|
|
var groupName = el.parents('tr[data-groupname]').attr('data-groupname');
|
2014-10-08 15:36:47 -04:00
|
|
|
|
|
|
|
|
switch (action) {
|
2020-06-03 11:25:25 -04:00
|
|
|
case 'delete':
|
|
|
|
|
bootbox.confirm('[[admin/manage/groups:alerts.confirm-delete]]', function (confirm) {
|
|
|
|
|
if (confirm) {
|
|
|
|
|
socket.emit('groups.delete', {
|
|
|
|
|
groupName: groupName,
|
|
|
|
|
}, function (err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
return app.alertError(err.message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ajaxify.refresh();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
break;
|
2014-10-08 15:36:47 -04:00
|
|
|
}
|
|
|
|
|
});
|
2020-07-30 12:26:37 -04:00
|
|
|
|
2020-07-30 14:55:28 -04:00
|
|
|
enableCategorySelectors();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
function enableCategorySelectors() {
|
2020-07-30 12:26:37 -04:00
|
|
|
$('.groups-list [component="category-selector"]').each(function () {
|
|
|
|
|
var nameEncoded = $(this).parents('[data-name-encoded]').attr('data-name-encoded');
|
|
|
|
|
categorySelector.init($(this), function (selectedCategory) {
|
|
|
|
|
ajaxify.go('admin/manage/privileges/' + selectedCategory.cid + '?group=' + nameEncoded);
|
|
|
|
|
});
|
|
|
|
|
});
|
2020-07-30 14:55:28 -04:00
|
|
|
}
|
2014-10-08 15:36:47 -04:00
|
|
|
|
2015-07-09 14:01:06 -04:00
|
|
|
function handleSearch() {
|
2017-02-18 18:55:33 -07:00
|
|
|
var queryEl = $('#group-search');
|
|
|
|
|
|
2015-07-09 14:01:06 -04:00
|
|
|
function doSearch() {
|
|
|
|
|
if (!queryEl.val()) {
|
|
|
|
|
return ajaxify.refresh();
|
|
|
|
|
}
|
|
|
|
|
$('.pagination').addClass('hide');
|
|
|
|
|
var groupsEl = $('.groups-list');
|
|
|
|
|
socket.emit('groups.search', {
|
|
|
|
|
query: queryEl.val(),
|
|
|
|
|
options: {
|
2017-02-17 19:31:21 -07:00
|
|
|
sort: 'date',
|
|
|
|
|
},
|
2016-10-13 11:43:39 +02:00
|
|
|
}, function (err, groups) {
|
2016-08-16 19:46:59 +02:00
|
|
|
if (err) {
|
|
|
|
|
return app.alertError(err.message);
|
|
|
|
|
}
|
|
|
|
|
|
2020-07-30 14:55:28 -04:00
|
|
|
app.parseAndTranslate('admin/manage/groups', 'groups', {
|
2017-02-17 19:31:21 -07:00
|
|
|
groups: groups,
|
2020-07-30 14:55:28 -04:00
|
|
|
categories: ajaxify.data.categories,
|
2016-10-13 11:43:39 +02:00
|
|
|
}, function (html) {
|
2020-07-30 14:55:28 -04:00
|
|
|
groupsEl.find('[data-groupname]').remove();
|
|
|
|
|
groupsEl.find('tbody').append(html);
|
|
|
|
|
enableCategorySelectors();
|
2015-07-09 14:01:06 -04:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2016-10-13 11:43:39 +02:00
|
|
|
queryEl.on('keyup', function () {
|
2015-07-09 14:01:06 -04:00
|
|
|
if (intervalId) {
|
|
|
|
|
clearTimeout(intervalId);
|
|
|
|
|
intervalId = 0;
|
|
|
|
|
}
|
|
|
|
|
intervalId = setTimeout(doSearch, 200);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2014-10-08 15:36:47 -04:00
|
|
|
return Groups;
|
|
|
|
|
});
|