mirror of
https://github.com/JanGross/quicknotes.git
synced 2025-11-30 23:37:16 +01:00
Add dialog to share with users
This commit is contained in:
110
js/qn-dialogs.js
110
js/qn-dialogs.js
@@ -56,6 +56,9 @@ const QnDialogs = {
|
||||
data.push({id: item.id, text: item.name});
|
||||
});
|
||||
return data;
|
||||
},
|
||||
formatNoMatches: function() {
|
||||
return t('quicknotes', 'No tags found');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -125,6 +128,113 @@ const QnDialogs = {
|
||||
$('.select2-input').focus();
|
||||
});
|
||||
},
|
||||
shares: function (availableUsers, selectedUsers, callback) {
|
||||
return $.when(this._getMessageTemplate()).then(function ($tmpl) {
|
||||
var dialogName = 'qn-dialog-content';
|
||||
var dialogId = '#' + dialogName;
|
||||
var $dlg = $tmpl.octemplate({
|
||||
dialog_name: dialogName,
|
||||
title: t('quicknotes', 'Share note'),
|
||||
message: t('quicknotes', 'Select the users to share'),
|
||||
type: 'none'
|
||||
});
|
||||
|
||||
var input = $('<input/>');
|
||||
input.attr('type', 'text');
|
||||
input.attr('id', dialogName + '-input');
|
||||
input.attr('multiple', 'multiple');
|
||||
|
||||
$dlg.append(input);
|
||||
$('body').append($dlg);
|
||||
|
||||
input.select2({
|
||||
placeholder: t('quicknotes', 'Select the users to share'),
|
||||
multiple: true,
|
||||
allowClear: true,
|
||||
toggleSelect: true,
|
||||
createSearchChoice: function(params) {
|
||||
return undefined;
|
||||
},
|
||||
tags: function () {
|
||||
var data = [];
|
||||
availableUsers.forEach(function (item, index) {
|
||||
// Select2 expect id, text.
|
||||
data.push({id: item, text: item});
|
||||
});
|
||||
return data;
|
||||
},
|
||||
formatNoMatches: function() {
|
||||
return t('quicknotes', 'No user found');
|
||||
}
|
||||
});
|
||||
|
||||
input.val(selectedUsers.map(function (value) { return value.name }));
|
||||
input.trigger("change");
|
||||
|
||||
$('.select2-input').on("keyup", function (event) {
|
||||
if (event.keyCode === 27) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
input.select2('close');
|
||||
if (callback !== undefined) {
|
||||
callback(false, []);
|
||||
}
|
||||
$(dialogId).ocdialog('close');
|
||||
}
|
||||
});
|
||||
|
||||
// wrap callback in _.once():
|
||||
// only call callback once and not twice (button handler and close
|
||||
// event) but call it for the close event, if ESC or the x is hit
|
||||
if (callback !== undefined) {
|
||||
callback = _.once(callback);
|
||||
}
|
||||
|
||||
var buttonlist = [{
|
||||
text: t('quicknotes', 'Cancel'),
|
||||
click: function () {
|
||||
input.select2('close');
|
||||
if (callback !== undefined) {
|
||||
callback(false, []);
|
||||
}
|
||||
$(dialogId).ocdialog('close');
|
||||
}
|
||||
}, {
|
||||
text: t('quicknotes', 'Done'),
|
||||
click: function () {
|
||||
input.select2('close');
|
||||
if (callback !== undefined) {
|
||||
var users = [];
|
||||
// Quicknotes shares expect id, shared_user
|
||||
newUsers = input.select2("data");
|
||||
newUsers.forEach(function (item) {
|
||||
item['shared_user'] = item.text;
|
||||
users.push(item);
|
||||
});
|
||||
callback(true, users);
|
||||
}
|
||||
$(dialogId).ocdialog('close');
|
||||
},
|
||||
defaultButton: true
|
||||
}
|
||||
];
|
||||
|
||||
$(dialogId).ocdialog({
|
||||
closeOnEscape: false,
|
||||
modal: true,
|
||||
buttons: buttonlist,
|
||||
close: function () {
|
||||
input.select2("close");
|
||||
// callback is already fired if Yes/No is clicked directly
|
||||
if (callback !== undefined) {
|
||||
callback(false, input.val());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$('.select2-input').focus();
|
||||
});
|
||||
},
|
||||
_getMessageTemplate: function () {
|
||||
var defer = $.Deferred();
|
||||
if (!this.$messageTemplate) {
|
||||
|
||||
Reference in New Issue
Block a user