Files
roundcubemail/plugins/vcard_attachments/vcardattach.js
Michael Voříšek 332c165d28 Fix some basic JS CS (#9328)
* fix "nonblock-statement-body-position" (fixed already)

* fix "comma-dangle"

* fix "no-regex-spaces"

* fix "new-parens"

* fix "object-curly-newline"

* fix "object-property-newline"

* fix "spaced-comment" semimanually

* fix "no-constant-condition" manually

* fix "unicorn/no-hex-escape"

* fix "unicorn/escape-case"

* fix "quote-props"

* fix "no-whitespace-before-property" - fix bug/typo

* fix "unicorn/empty-brace-spaces"

* fix "keyword-spacing"

* fix "dot-notation"

* fix "no-return-assign" manually

* fix "padding-line-between-statements"

* fix "key-spacing"

* fix "no-else-return" semimanually

* fix some "no-undef"

* fix case cs

* Revert "fix "padding-line-between-statements""

* improve switch/case format I.

* improve switch/case format II.

regex: (^ *(break|return).*)\n *(\n)

* fix safe "eqeqeq"

* fix "radix"

* fix v3.49.0 CS (static providers)

* fix "string_implicit_backslashes" in php files

* fix comments align

* fix test static providers

* fix stan

* disable "final_internal_class" rule
2024-02-06 08:28:19 +01:00

151 lines
5.1 KiB
JavaScript

/**
* vcard_attachments plugin script
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.
*
* Copyright (c) The Roundcube Dev Team
*
* The JavaScript code in this page is free software: you can redistribute it
* and/or modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* @licend The above is the entire license notice
* for the JavaScript code in this file.
*/
function plugin_vcard_import(mime_id) {
if (!mime_id) {
var content = [];
$.each(rcmail.env.vcards, function (id, contact) {
var chbox = $('<input>').attr({
type: 'checkbox', value: id, checked: true, class: 'pretty-checkbox',
}),
label = $('<label>').text(' ' + contact);
content.push($('<div>').append(label.prepend(chbox)));
});
var dialog,
action = function (e, a) {
var contacts = [];
dialog.find('input:checked').each(function () {
contacts.push(this.value);
});
if (contacts.length) {
plugin_vcard_import(contacts.join());
return true; // close the dialog
}
},
props = {
button: 'import',
height: content.length > 4 ? 250 : 100,
};
dialog = rcmail.simple_dialog(content, 'vcard_attachments.addvcardmsg', action, props);
return false;
}
rcmail.http_post(
'plugin.savevcard',
{ _uid: rcmail.env.uid, _mbox: rcmail.env.mailbox, _part: mime_id },
rcmail.set_busy(true, 'loading')
);
return false;
}
function plugin_vcard_insertrow(data) {
if (data.row.ctype.match(/^(text\/vcard|text\/x-vcard|text\/directory)$/i)) {
$(data.row.obj).find('.attachment > .attachment').addClass('vcard');
}
}
function plugin_vcard_attach() {
var id, n, contacts = [],
ts = new Date().getTime(),
args = { _uploadid: ts, _id: rcmail.env.compose_id || null },
selection = rcmail.contact_list.get_selection();
for (n = 0; n < selection.length; n++) {
if (rcmail.env.task == 'addressbook') {
id = selection[n];
contacts.push(rcmail.env.source + '-' + id + '-0');
} else {
id = selection[n];
if (id && id.charAt(0) != 'E' && rcmail.env.contactdata[id]) {
contacts.push(id);
}
}
}
if (!contacts.length) {
return false;
}
args._uri = 'vcard://' + contacts.join(',');
if (rcmail.env.task == 'addressbook') {
args._attach_vcard = 1;
rcmail.open_compose_step(args);
} else {
// add to attachments list
if (!rcmail.add2attachment_list(ts, {
name: '', html: rcmail.get_label('attaching'), classname: 'uploading', complete: false,
})) {
rcmail.file_upload_id = rcmail.set_busy(true, 'attaching');
}
rcmail.http_post('upload', args);
}
}
window.rcmail && rcmail.addEventListener('init', function (evt) {
if (rcmail.gui_objects.messagelist) {
rcmail.addEventListener('insertrow', function (data, evt) {
plugin_vcard_insertrow(data);
});
}
if ((rcmail.env.action == 'compose' || (rcmail.env.task == 'addressbook' && rcmail.env.action == '')) && rcmail.gui_objects.contactslist) {
if (rcmail.env.action == 'compose') {
rcmail.env.compose_commands.push('attach-vcard');
// Elastic: add "Attach vCard" button to the attachments widget
if (window.UI && UI.recipient_selector) {
var button, form = $('#compose-attachments > div');
button = $('<button class="btn btn-secondary attach vcard">')
.attr({ type: 'button', tabindex: $('button,input', form).first().attr('tabindex') || 0 })
.text(rcmail.gettext('vcard_attachments.attachvcard'))
.appendTo(form)
.click(function () {
UI.recipient_selector('', {
title: 'vcard_attachments.attachvcard',
button: 'vcard_attachments.attachvcard',
button_class: 'attach',
focus: button,
multiselect: false,
action: function () {
rcmail.command('attach-vcard');
},
});
});
}
}
rcmail.register_command('attach-vcard', function () {
plugin_vcard_attach();
});
rcmail.contact_list.addEventListener('select', function (list) {
// TODO: support attaching more than one at once
var selection = list.get_selection();
rcmail.enable_command('attach-vcard', selection.length == 1 && selection[0].charAt(0) != 'E');
});
}
});