Fix compatibility with contextmenu 2.x (#3560)
Warning: removed compatibility with contextmenu 1.x
This commit is contained in:
parent
fdde6fcbf0
commit
ecfb1354e2
5 changed files with 92 additions and 90 deletions
|
@ -125,15 +125,6 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
|
||||||
rcmail.enable_command('attachment-save-calendar', mimetype == 'text/calendar' || mimetype == 'text/x-vcalendar' || mimetype == 'application/ics');
|
rcmail.enable_command('attachment-save-calendar', mimetype == 'text/calendar' || mimetype == 'text/x-vcalendar' || mimetype == 'application/ics');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// add contextmenu item
|
|
||||||
if (window.rcm_contextmenu_register_command) {
|
|
||||||
rcm_contextmenu_register_command(
|
|
||||||
'calendar-create-from-mail',
|
|
||||||
function(cmd,el){ cal.create_from_mail() },
|
|
||||||
'calendar.createfrommail',
|
|
||||||
'moveto');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,60 +33,8 @@ if (window.rcmail) {
|
||||||
rcmail.enable_command('book-save', true);
|
rcmail.enable_command('book-save', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// add contextmenu items
|
// contextmenu
|
||||||
if (window.rcm_contextmenu_register_command) {
|
kolab_addressbook_contextmenu();
|
||||||
var menu = $('#rcmGroupMenu');
|
|
||||||
rcm_contextmenu_register_command(
|
|
||||||
'book-edit',
|
|
||||||
function(cmd,el){ rcmail.book_edit() },
|
|
||||||
'kolab_addressbook.bookedit',
|
|
||||||
null,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
menu
|
|
||||||
);
|
|
||||||
rcm_contextmenu_register_command(
|
|
||||||
'book-delete',
|
|
||||||
function(cmd,el){ rcmail.book_delete() },
|
|
||||||
'kolab_addressbook.bookdelete',
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
menu
|
|
||||||
);
|
|
||||||
|
|
||||||
if (rcmail.env.kolab_addressbook_carddav_url) {
|
|
||||||
rcm_contextmenu_register_command(
|
|
||||||
'book-showurl',
|
|
||||||
function(cmd,el){ rcmail.book_showurl() },
|
|
||||||
'kolab_addressbook.bookshowurl',
|
|
||||||
null,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
menu
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// adjust menu items when shown
|
|
||||||
rcmail.addEventListener('contextmenu_show', function(p){
|
|
||||||
if (p.menu.attr('id') != 'rcmGroupMenu')
|
|
||||||
return;
|
|
||||||
|
|
||||||
var m = String(p.src.attr('id')).match(/rcmli([a-z0-9\-_=]+)/i),
|
|
||||||
source = m && m.length ? rcmail.html_identifier_decode(m[1]) : null,
|
|
||||||
sources = rcmail.env.address_sources,
|
|
||||||
editable = source && sources[source] && sources[source].kolab && sources[source].editable,
|
|
||||||
showurl = source && sources[source] && sources[source].carddavurl;
|
|
||||||
|
|
||||||
if (p.menu) {
|
|
||||||
p.menu[editable ? 'enableContextMenuItems' : 'disableContextMenuItems']('#book-edit,#book-delete');
|
|
||||||
p.menu[showurl ? 'enableContextMenuItems' : 'disableContextMenuItems']('#book-showurl');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// append search form for address books
|
// append search form for address books
|
||||||
if (rcmail.gui_objects.folderlist) {
|
if (rcmail.gui_objects.folderlist) {
|
||||||
|
@ -174,6 +122,7 @@ if (window.rcmail) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
rcmail.addEventListener('listupdate', function() {
|
rcmail.addEventListener('listupdate', function() {
|
||||||
rcmail.set_book_actions();
|
rcmail.set_book_actions();
|
||||||
});
|
});
|
||||||
|
@ -310,10 +259,10 @@ rcube_webmail.prototype.book_delete_done = function(id, recur)
|
||||||
rcube_webmail.prototype.book_update = function(data, old)
|
rcube_webmail.prototype.book_update = function(data, old)
|
||||||
{
|
{
|
||||||
var classes = ['addressbook'],
|
var classes = ['addressbook'],
|
||||||
oldid = old ? rcmail.html_identifier_encode(old) : null,
|
|
||||||
content = $('<div class="subscribed">').append(
|
content = $('<div class="subscribed">').append(
|
||||||
$('<a>').html(data.name).attr({
|
$('<a>').html(data.listname).attr({
|
||||||
href: this.url('', { _source: data.id }),
|
href: this.url('', {_source: data.id}),
|
||||||
|
id: 'kabt:' + data.id,
|
||||||
rel: data.id,
|
rel: data.id,
|
||||||
onclick: "return rcmail.command('list', '" + data.id + "', this)"
|
onclick: "return rcmail.command('list', '" + data.id + "', this)"
|
||||||
}),
|
}),
|
||||||
|
@ -336,7 +285,7 @@ rcube_webmail.prototype.book_update = function(data, old)
|
||||||
// update (remove old row)
|
// update (remove old row)
|
||||||
if (old) {
|
if (old) {
|
||||||
// is the folder subscribed?
|
// is the folder subscribed?
|
||||||
if (!$('#rcmli' + oldid + ' > div.subscribed').length) {
|
if (!data.subscribed) {
|
||||||
content.removeClass('subscribed').find('span').attr('aria-checked', false);
|
content.removeClass('subscribed').find('span').attr('aria-checked', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,6 +302,9 @@ rcube_webmail.prototype.book_update = function(data, old)
|
||||||
this.treelist.select(data.id);
|
this.treelist.select(data.id);
|
||||||
this.env.source = data.id;
|
this.env.source = data.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update contextmenu
|
||||||
|
kolab_addressbook_contextmenu();
|
||||||
};
|
};
|
||||||
|
|
||||||
// returns real IMAP folder name
|
// returns real IMAP folder name
|
||||||
|
@ -361,3 +313,75 @@ rcube_webmail.prototype.book_realname = function()
|
||||||
var source = this.env.source, sources = this.env.address_sources;
|
var source = this.env.source, sources = this.env.address_sources;
|
||||||
return source != '' && sources[source] && sources[source].realname ? sources[source].realname : '';
|
return source != '' && sources[source] && sources[source].realname ? sources[source].realname : '';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function kolab_addressbook_contextmenu()
|
||||||
|
{
|
||||||
|
if (!window.rcm_callbackmenu_init) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rcmail.env.kolab_addressbook_contextmenu) {
|
||||||
|
// adjust default addressbook menu actions
|
||||||
|
rcmail.addEventListener('contextmenu_init', function(menu) {
|
||||||
|
if (menu.menu_name == 'abooklist') {
|
||||||
|
menu.addEventListener('activate', function(p) {
|
||||||
|
// deactivate kolab addressbook actions
|
||||||
|
if (p.command.match(/^book-/)) {
|
||||||
|
return p.command == 'book-create';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
rcmail.env.kolab_addressbook_contextmenu = true;
|
||||||
|
|
||||||
|
// add menu on kolab addressbooks
|
||||||
|
var menu = rcm_callbackmenu_init({
|
||||||
|
menu_name: 'kolab_abooklist',
|
||||||
|
mouseover_timeout: -1, // no submenus here
|
||||||
|
menu_source: ['#directorylist-footer', '#groupoptionsmenu']
|
||||||
|
}, {
|
||||||
|
'activate': function(p) {
|
||||||
|
var source = rcmail.env.source,
|
||||||
|
sources = rcmail.env.address_sources;
|
||||||
|
|
||||||
|
if (p.command == 'book-create') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.command == 'book-edit' || p.command == 'book-delete' || p.command == 'group-create') {
|
||||||
|
return !!(source && sources[source] && sources[source].kolab && sources[source].editable);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.command == 'book-showurl') {
|
||||||
|
return !!(source && sources[source] && sources[source].carddavurl);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
'beforeactivate': function(p) {
|
||||||
|
// remove dummy items
|
||||||
|
$('li.submenu', p.ref.container).remove();
|
||||||
|
|
||||||
|
rcmail.env.kolab_old_source = rcmail.env.source;
|
||||||
|
rcmail.env.kolab_old_group = rcmail.env.group;
|
||||||
|
|
||||||
|
var onclick = $(p.source).attr('onclick');
|
||||||
|
if (onclick && onclick.match(rcmail.context_menu_command_pattern)) {
|
||||||
|
rcmail.env.source = RegExp.$2;
|
||||||
|
rcmail.env.group = null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'aftercommand': function(p) {
|
||||||
|
rcmail.env.source = rcmail.env.kolab_old_source;
|
||||||
|
rcmail.env.group = rcmail.env.kolab_old_group;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$('#directorylist div > a').off('contextmenu').on('contextmenu', function(e) {
|
||||||
|
$(this).blur();
|
||||||
|
rcm_show_menu(e, this, $(this).attr('rel'), menu);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
|
@ -620,24 +620,16 @@ class kolab_addressbook extends rcube_plugin
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$storage = $this->rc->get_storage();
|
|
||||||
$delimiter = $storage->get_hierarchy_delimiter();
|
|
||||||
$kolab_folder = kolab_storage::get_folder($folder);
|
$kolab_folder = kolab_storage::get_folder($folder);
|
||||||
|
|
||||||
|
// get folder/addressbook properties
|
||||||
|
$abook = new rcube_kolab_contacts($folder);
|
||||||
|
$props = $this->abook_prop(kolab_storage::folder_id($folder, true), $abook);
|
||||||
|
$props['parent'] = kolab_storage::folder_id($kolab_folder->get_parent(), true);
|
||||||
|
|
||||||
$this->rc->output->show_message('kolab_addressbook.book'.$type.'d', 'confirmation');
|
$this->rc->output->show_message('kolab_addressbook.book'.$type.'d', 'confirmation');
|
||||||
$this->rc->output->command('set_env', 'delimiter', $delimiter);
|
$this->rc->output->command('set_env', 'delimiter', $delimiter);
|
||||||
$this->rc->output->command('book_update', array(
|
$this->rc->output->command('book_update', $props, kolab_storage::folder_id($prop['oldname'], true));
|
||||||
'id' => kolab_storage::folder_id($folder, true),
|
|
||||||
'name' => $kolab_folder->get_foldername(),
|
|
||||||
'readonly' => false,
|
|
||||||
'editable' => true,
|
|
||||||
'groups' => true,
|
|
||||||
'realname' => rcube_charset::convert($folder, 'UTF7-IMAP'), // IMAP folder name
|
|
||||||
'group' => $kolab_folder->get_namespace(),
|
|
||||||
'parent' => kolab_storage::folder_id($kolab_folder->get_parent()),
|
|
||||||
'kolab' => true,
|
|
||||||
), kolab_storage::folder_id($prop['oldname'], true));
|
|
||||||
|
|
||||||
$this->rc->output->send('iframe');
|
$this->rc->output->send('iframe');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -135,3 +135,7 @@
|
||||||
padding-right: 36px;
|
padding-right: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* for contextmenu */
|
||||||
|
#directorylist a.contextRow {
|
||||||
|
background-color: #C7E3EF;
|
||||||
|
}
|
||||||
|
|
|
@ -120,13 +120,4 @@ window.rcmail && rcmail.env.task == 'mail' && rcmail.addEventListener('init', fu
|
||||||
rcmail.enable_command('attachment-save-task', is_ics);
|
rcmail.enable_command('attachment-save-task', is_ics);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// add contextmenu item
|
|
||||||
if (window.rcm_contextmenu_register_command) {
|
|
||||||
rcm_contextmenu_register_command(
|
|
||||||
'tasklist-create-from-mail',
|
|
||||||
function(cmd,el){ tasks.create_from_mail() },
|
|
||||||
'tasklist.createfrommail',
|
|
||||||
'moveto');
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue