"use strict"; /*global define, templates, socket, ajaxify, app, bootbox*/ define('forum/admin/groups', ['forum/admin/iconSelect'], function(iconSelect) { var Groups = {}; Groups.init = function() { var yourid = ajaxify.variables.get('yourid'), createModal = $('#create-modal'), createGroupName = $('#create-group-name'), create = $('#create'), createModalGo = $('#create-modal-go'), createGroupDesc = $('#create-group-desc'), createModalError = $('#create-modal-error'), groupDetailsModal = $('#group-details-modal'), groupDetailsSearch = $('#group-details-search'), groupDetailsSearchResults = $('#group-details-search-results'), groupMembersEl = $('ul.current_members'), formEl = groupDetailsModal.find('form'), detailsModalSave = $('#details-modal-save'), groupsList = $('#groups-list'), groupIcon = $('#group-icon'), changeGroupIcon = $('#change-group-icon'), changeGroupName = $('#change-group-name'), changeGroupDesc = $('#change-group-desc'), changeGroupUserTitle = $('#change-group-user-title'), changeGroupLabelColor = $('#change-group-label-color'), groupIcon = $('#group-icon'), groupLabelPreview = $('#group-label-preview'), searchDelay; // Tooltips $('#groups-list .members li').tooltip(); createModal.on('keypress', function(e) { switch(e.keyCode) { case 13: createModalGo.click(); break; default: break; } }); create.on('click', function() { createModal.modal('show'); setTimeout(function() { createGroupName.focus(); }, 250); }); createModalGo.on('click', function() { var submitObj = { name: createGroupName.val(), description: createGroupDesc.val() }, errorText; socket.emit('admin.groups.create', submitObj, function(err, data) { if (err) { switch (err) { case 'group-exists': errorText = 'Please choose another name
There seems to be a group with this name already.
'; break; case 'name-too-short': errorText = 'Please specify a group nameA group name is required for administrative purposes.
'; break; default: errorText = 'Uh-OhThere was a problem creating your group. Please try again later!
'; break; } createModalError.html(errorText).removeClass('hide'); } else { createModalError.addClass('hide'); createGroupName.val(''); createModal.on('hidden.bs.modal', function() { ajaxify.go('admin/groups'); }); createModal.modal('hide'); } }); }); formEl.keypress(function(e) { switch(e.keyCode) { case 13: detailsModalSave.click(); break; default: break; } }); changeGroupUserTitle.keydown(function() { setTimeout(function() { groupLabelPreview.text(changeGroupUserTitle.val()); }, 0); }); changeGroupLabelColor.keydown(function() { setTimeout(function() { groupLabelPreview.css('background', changeGroupLabelColor.val() || '#000000'); }, 0); }); groupsList.on('click', 'button[data-action]', function() { var el = $(this), action = el.attr('data-action'), groupName = el.parents('li[data-groupname]').attr('data-groupname'); switch (action) { case 'delete': bootbox.confirm('Are you sure you wish to delete this group?', function(confirm) { if (confirm) { socket.emit('admin.groups.delete', groupName, function(err, data) { if(err) { return app.alertError(err.message); } ajaxify.go('admin/groups'); }); } }); break; case 'members': socket.emit('admin.groups.get', groupName, function(err, groupObj) { changeGroupName.val(groupObj.name).prop('readonly', groupObj.system); changeGroupDesc.val(groupObj.description); changeGroupUserTitle.val(groupObj.userTitle); groupIcon.attr('class', 'fa fa-2x ' + groupObj.icon).attr('value', groupObj.icon); changeGroupLabelColor.val(groupObj.labelColor); groupLabelPreview.css('background', groupObj.labelColor || '#000000').text(groupObj.userTitle); groupMembersEl.empty(); if (groupObj.members.length > 0) { for (var x = 0; x < groupObj.members.length; x++) { var memberIcon = $('') .attr('data-uid', groupObj.members[x].uid) .append($('