Merge branch 'dev/elastic'
This commit is contained in:
commit
c2f91df1d4
32 changed files with 302 additions and 251 deletions
|
@ -322,7 +322,7 @@ class calendar extends rcube_plugin
|
|||
$this->rc->output->set_env('identities-selector', $this->ui->identity_select(array(
|
||||
'id' => 'edit-identities-list',
|
||||
'aria-label' => $this->gettext('roleorganizer'),
|
||||
'class' => 'form-control',
|
||||
'class' => 'form-control custom-select',
|
||||
)));
|
||||
|
||||
$view = rcube_utils::get_input_value('view', rcube_utils::INPUT_GPC);
|
||||
|
@ -2620,8 +2620,13 @@ class calendar extends rcube_plugin
|
|||
&& !$data['nosave']
|
||||
&& ($response['action'] == 'rsvp' || $response['action'] == 'import')
|
||||
) {
|
||||
$calendars = $this->driver->list_calendars($mode);
|
||||
$calendar_select = new html_select(array('name' => 'calendar', 'id' => 'itip-saveto', 'is_escaped' => true, 'class' => 'form-control'));
|
||||
$calendars = $this->driver->list_calendars($mode);
|
||||
$calendar_select = new html_select(array(
|
||||
'name' => 'calendar',
|
||||
'id' => 'itip-saveto',
|
||||
'is_escaped' => true,
|
||||
'class' => 'form-control custom-select'
|
||||
));
|
||||
$calendar_select->add('--', '');
|
||||
$numcals = 0;
|
||||
foreach ($calendars as $calendar) {
|
||||
|
|
|
@ -1868,7 +1868,7 @@ function rcube_calendar_ui(settings)
|
|||
if (organizer && !readonly)
|
||||
dispname = rcmail.env['identities-selector'];
|
||||
|
||||
var select = '<select class="edit-attendee-role form-control"'
|
||||
var select = '<select class="edit-attendee-role form-control custom-select"'
|
||||
+ (organizer || readonly ? ' disabled="true"' : '')
|
||||
+ ' aria-label="' + rcmail.gettext('role','calendar') + '">';
|
||||
for (var r in opts)
|
||||
|
@ -1939,13 +1939,15 @@ function rcube_calendar_ui(settings)
|
|||
}
|
||||
|
||||
// Make Elastic checkboxes pretty
|
||||
if (window.UI && UI.pretty_checkbox)
|
||||
if (window.UI && UI.pretty_checkbox) {
|
||||
$(tr).find('input[type=checkbox]').each(function() { UI.pretty_checkbox(this); });
|
||||
$(tr).find('select').each(function() { UI.pretty_select(this); });
|
||||
}
|
||||
|
||||
event_attendees.push(data);
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
// iterate over all attendees and update their free-busy status display
|
||||
var update_freebusy_status = function(event)
|
||||
{
|
||||
|
@ -3892,6 +3894,13 @@ function rcube_calendar_ui(settings)
|
|||
var minical;
|
||||
var init_calendar_ui = function()
|
||||
{
|
||||
var pretty_select = function(elem) {
|
||||
// for Elastic
|
||||
if (window.UI && UI.pretty_select) {
|
||||
$(elem).addClass('form-control custom-select').each(function() { UI.pretty_select(this); });
|
||||
}
|
||||
};
|
||||
|
||||
// initialize small calendar widget using jQuery UI datepicker
|
||||
minical = $('#datepicker').datepicker($.extend(datepicker_settings, {
|
||||
inline: true,
|
||||
|
@ -3902,14 +3911,14 @@ function rcube_calendar_ui(settings)
|
|||
ignore_click = true;
|
||||
var d = minical.datepicker('getDate'); //parse_datetime('0:0', dateText);
|
||||
fc.fullCalendar('gotoDate', d).fullCalendar('select', d, d, true);
|
||||
setTimeout(function() { $('select', minical).addClass('form-control'); }, 25);
|
||||
setTimeout(function() { pretty_select($('select', minical)); }, 25);
|
||||
},
|
||||
onChangeMonthYear: function(year, month, inst) {
|
||||
minical.data('year', year).data('month', month);
|
||||
setTimeout(function() { $('select', minical).addClass('form-control'); }, 25);
|
||||
setTimeout(function() { pretty_select($('select', minical)); }, 25);
|
||||
},
|
||||
beforeShowDay: function(date) {
|
||||
setTimeout(function() { $('select', minical).addClass('form-control'); }, 25);
|
||||
setTimeout(function() { pretty_select($('select', minical)); }, 25);
|
||||
var view = fc.fullCalendar('getView');
|
||||
var active = view.visStart && date.getTime() >= view.visStart.getTime() && date.getTime() < view.visEnd.getTime();
|
||||
return [ true, (active ? 'ui-datepicker-activerange ui-datepicker-active-' + view.name : ''), ''];
|
||||
|
@ -3937,7 +3946,7 @@ function rcube_calendar_ui(settings)
|
|||
date = new Date(base_date.getTime() - day_off * DAY_MS + wdiff * 7 * DAY_MS);
|
||||
fc.fullCalendar('gotoDate', date).fullCalendar('setDate', date).fullCalendar('changeView', 'agendaWeek');
|
||||
minical.datepicker('setDate', date);
|
||||
setTimeout(function() { $('select', minical).addClass('form-control'); }, 25);
|
||||
setTimeout(function() { pretty_select($('select', minical)); }, 25);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -4122,10 +4131,14 @@ function rcube_calendar_ui(settings)
|
|||
|
||||
$('#eventshow .changersvp').click(function(e) {
|
||||
var d = $('#eventshow'),
|
||||
h = -$(this).closest('.event-line').toggle().height();
|
||||
record = $(this).closest('.event-line,.form-group'),
|
||||
h = d.height() - record.height();
|
||||
|
||||
record.toggle();
|
||||
$('#event-rsvp').slideDown(300, function() {
|
||||
h += $(this).height();
|
||||
me.dialog_resize(d.get(0), d.height() + h, d.outerWidth() - 50);
|
||||
me.dialog_resize(d.get(0), h + $(this).outerHeight());
|
||||
if (this.scrollIntoView)
|
||||
this.scrollIntoView(false);
|
||||
});
|
||||
return false;
|
||||
})
|
||||
|
@ -4313,6 +4326,8 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
|
|||
$('#timezone-display').appendTo($('.fc-header-center')).removeClass('hidden');
|
||||
$('#agendaoptions').detach().insertAfter('table.fc-header');
|
||||
|
||||
$('.content-frame-navigation a.button.date').appendTo('.content > .searchbar');
|
||||
|
||||
// Mobile header title
|
||||
if (window.MutationObserver) {
|
||||
var title = $('.fc-header-title'),
|
||||
|
|
|
@ -343,7 +343,7 @@ class calendar_ui
|
|||
$attrib += array('id' => 'agendaoptions');
|
||||
$attrib['style'] .= 'display:none';
|
||||
|
||||
$select_range = new html_select(array('name' => 'listrange', 'id' => 'agenda-listrange', 'class' => 'form-control'));
|
||||
$select_range = new html_select(array('name' => 'listrange', 'id' => 'agenda-listrange', 'class' => 'form-control custom-select'));
|
||||
$select_range->add(1 . ' ' . preg_replace('/\(.+\)/', '', $this->cal->lib->gettext('days')), $days);
|
||||
foreach (array(2,5,7,14,30,60,90,180,365) as $days)
|
||||
$select_range->add($days . ' ' . preg_replace('/\(|\)/', '', $this->cal->lib->gettext('days')), $days);
|
||||
|
@ -354,7 +354,7 @@ class calendar_ui
|
|||
. $select_range->show($this->rc->config->get('calendar_agenda_range', $this->cal->defaults['calendar_agenda_range']))
|
||||
);
|
||||
|
||||
$select_sections = new html_select(array('name' => 'listsections', 'id' => 'agenda-listsections', 'class' => 'form-control'));
|
||||
$select_sections = new html_select(array('name' => 'listsections', 'id' => 'agenda-listsections', 'class' => 'form-control custom-select'));
|
||||
$select_sections->add('---', '');
|
||||
foreach (array('day' => 'libcalendaring.days', 'week' => 'libcalendaring.weeks', 'month' => 'libcalendaring.months', 'smart' => 'calendar.smartsections') as $val => $label)
|
||||
$select_sections->add(preg_replace('/\(|\)/', '', ucfirst($this->rc->gettext($label))), $val);
|
||||
|
@ -592,9 +592,9 @@ class calendar_ui
|
|||
|
||||
$html = html::div('form-section form-group row',
|
||||
html::label(array('for' => 'event-export-calendar', 'class' => 'col-sm-4 col-form-label'), $this->cal->gettext('calendar'))
|
||||
. html::div('col-sm-8', $this->calendar_select(array('name' => 'calendar', 'id' => 'event-export-calendar', 'class' => 'form-control'))));
|
||||
. html::div('col-sm-8', $this->calendar_select(array('name' => 'calendar', 'id' => 'event-export-calendar', 'class' => 'form-control custom-select'))));
|
||||
|
||||
$select = new html_select(array('name' => 'range', 'id' => 'event-export-range', 'class' => 'form-control'));
|
||||
$select = new html_select(array('name' => 'range', 'id' => 'event-export-range', 'class' => 'form-control custom-select'));
|
||||
$select->add(array(
|
||||
$this->cal->gettext('all'),
|
||||
$this->cal->gettext('onemonthback'),
|
||||
|
|
|
@ -8,22 +8,17 @@
|
|||
<div class="header">
|
||||
<a class="button icon back-content-button" href="#back" data-hidden="big"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||
<span id="aria-label-calendars" class="header-title"><roundcube:label name="calendar.calendars" /></span>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="calendarlistsearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="calsearchform" label-domain="calendar" buttontitle="findcalendars" />
|
||||
<roundcube:button name="calendaractionsmenu" id="calendaroptionsmenulink" type="link"
|
||||
title="calendar.calendaractions" class="button icon sidebar-menu" data-popup="calendaractions-menu"
|
||||
innerClass="inner" label="actions" />
|
||||
</div>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="calendarlistsearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="calsearchform" label-domain="calendar" buttontitle="findcalendars" />
|
||||
<div id="calendars-content" class="scroller">
|
||||
<roundcube:object name="plugin.calendar_list" id="calendarslist" class="treelist listing iconized" />
|
||||
</div>
|
||||
<h2 id="aria-label-minical" class="voice"><roundcube:label name="calendar.arialabelminical" /></h2>
|
||||
<div id="datepicker" class="calendar-datepicker" role="presentation"></div>
|
||||
<div class="footer toolbar" role="toolbar">
|
||||
<roundcube:button command="calendar-create" type="link"
|
||||
title="calendar.createcalendar" label="calendar.addcalendar"
|
||||
class="button create disabled" classAct="button create" innerClass="inner" />
|
||||
<roundcube:button name="calendaractionsmenu" id="calendaroptionsmenulink" type="link"
|
||||
title="calendar.calendaractions" class="button actions" data-popup="calendaractions-menu"
|
||||
innerClass="inner" label="actions" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- calendar -->
|
||||
|
@ -50,15 +45,15 @@
|
|||
label="calendar.export" title="calendar.exporttitle" innerClass="inner" />
|
||||
<roundcube:container name="toolbar" id="calendartoolbar" />
|
||||
</div>
|
||||
<roundcube:object name="plugin.searchform" id="searchform" wrapper="searchbar toolbar"
|
||||
label="searchform" buttontitle="calendar.findevents" label-domain="calendar" ariatag="h2" />
|
||||
</div>
|
||||
<roundcube:object name="plugin.searchform" id="searchform" wrapper="searchbar toolbar"
|
||||
label="searchform" buttontitle="calendar.findevents" label-domain="calendar" ariatag="h2" />
|
||||
<h2 id="aria-label-calendarview" class="voice"><roundcube:label name="calendar.arialabelcalendarview" /></h2>
|
||||
<div id="calendar" class="content" role="main" aria-labelledby="aria-label-calendarview" data-elastic-mode="true">
|
||||
<roundcube:object name="plugin.agenda_options" id="agendaoptions" />
|
||||
<div id="searchcontrols" class="search-controls"></div>
|
||||
</div>
|
||||
<div class="footer toolbar" role="toolbar" data-hidden="big">
|
||||
<div class="footer toolbar content-frame-navigation" role="toolbar" data-hidden="big">
|
||||
<a href="#" class="button prev" onclick="$('.fc-button-prev').click()"><span class="inner"><roundcube:label name="previous" /></span></a>
|
||||
<a href="#" class="button today" onclick="$('.fc-button-today').click()"><span class="inner"><roundcube:label name="today" /></span></a>
|
||||
<a href="#" class="button date" onclick="window.calendar_datepicker()"><span class="inner"><roundcube:label name="date" /></span></a>
|
||||
|
@ -146,6 +141,7 @@
|
|||
<div id="calendaractions-menu" class="popupmenu">
|
||||
<h3 id="aria-label-calendaroptions" class="voice"><roundcube:label name="calendar.calendaractions" /></h3>
|
||||
<ul class="toolbarmenu listing" role="menu" aria-labelledby="aria-label-calendaroptions">
|
||||
<roundcube:button type="link-menuitem" command="calendar-create" label="calendar.addcalendar" class="create disabled" classAct="create active" />
|
||||
<roundcube:button type="link-menuitem" command="calendar-edit" label="calendar.edit" class="edit disabled" classAct="edit active" />
|
||||
<roundcube:button type="link-menuitem" command="calendar-delete" label="delete" class="delete disabled" classAct="delete active" />
|
||||
<roundcube:if condition="env:calendar_driver == 'kolab'" />
|
||||
|
@ -178,10 +174,10 @@
|
|||
<div class="resource-selection selection-list" role="navigation" aria-labelledby="aria-label-resourceselection">
|
||||
<div class="header">
|
||||
<span class="header-title"><roundcube:label name="calendar.tabresources" /></span>
|
||||
<roundcube:object name="plugin.resources_searchform" id="resourcesearchbox"
|
||||
wrapper="searchbar toolbar" ariatag="h4" buttontitle="calendar.findresources"
|
||||
label="resourcesearchform" label-domain="calendar" />
|
||||
</div>
|
||||
<roundcube:object name="plugin.resources_searchform" id="resourcesearchbox"
|
||||
wrapper="searchbar toolbar" ariatag="h4" buttontitle="calendar.findresources"
|
||||
label="resourcesearchform" label-domain="calendar" />
|
||||
<div class="scroller">
|
||||
<roundcube:object name="plugin.resources_list" id="resources-list" class="listing treelist" />
|
||||
</div>
|
||||
|
|
|
@ -147,7 +147,7 @@
|
|||
<roundcube:object name="plugin.attachments_list" id="attachmentlist" class="attachmentslist" />
|
||||
</div>
|
||||
</div>
|
||||
<roundcube:object name="plugin.filedroparea" id="event-panel-attachments" />
|
||||
<roundcube:object name="plugin.filedroparea" id="edit-attachments-droparea" />
|
||||
</fieldset>
|
||||
</form>
|
||||
<roundcube:object name="plugin.edit_recurrence_sync" id="edit-recurrence-syncstart" class="dialog-message" style="display:none" />
|
||||
|
|
|
@ -35,7 +35,15 @@ function kolab_activesync_config()
|
|||
if (rcmail.gui_objects.devicelist) {
|
||||
var devicelist = new rcube_list_widget(rcmail.gui_objects.devicelist,
|
||||
{ multiselect:true, draggable:false, keyboard:true });
|
||||
devicelist.addEventListener('select', select_device).init().focus();
|
||||
|
||||
devicelist.addEventListener('select', select_device)
|
||||
.init()
|
||||
.focus();
|
||||
|
||||
rcmail.devicelist = devicelist;
|
||||
setTimeout(function() {
|
||||
rcmail.triggerEvent('listupdate', {list: devicelist, rowcount: devicelist.rowcount});
|
||||
}, 100);
|
||||
|
||||
// load frame if there are no devices
|
||||
if (!rcmail.env.devicecount)
|
||||
|
@ -72,7 +80,9 @@ function kolab_activesync_config()
|
|||
{
|
||||
active_device = list.get_single_selection();
|
||||
|
||||
if (active_device)
|
||||
rcmail.enable_command('plugin.delete-device', list.get_selection().length > 0);
|
||||
|
||||
if (active_device && !list.multi_selecting)
|
||||
device_select(active_device);
|
||||
else if (rcmail.env.contentframe)
|
||||
rcmail.show_contentframe(false);
|
||||
|
@ -139,16 +149,25 @@ function kolab_activesync_config()
|
|||
if (p.success && p.id && p['delete']) {
|
||||
active_device = null;
|
||||
device_select();
|
||||
devicelist.remove_row(p.id);
|
||||
|
||||
if (p.id == 'ALL')
|
||||
devicelist.clear();
|
||||
else
|
||||
devicelist.remove_row(p.id);
|
||||
|
||||
rcmail.triggerEvent('listupdate', {list: devicelist, rowcount: devicelist.rowcount});
|
||||
rcmail.enable_command('plugin.delete-device', false);
|
||||
}
|
||||
};
|
||||
|
||||
// handler for delete commands
|
||||
function delete_device_config()
|
||||
{
|
||||
if (active_device && confirm(rcmail.gettext('devicedeleteconfirm', 'kolab_activesync'))) {
|
||||
var selection = devicelist.get_selection();
|
||||
|
||||
if (selection.length && confirm(rcmail.gettext('devicedeleteconfirm', 'kolab_activesync'))) {
|
||||
http_lock = rcmail.set_busy(true, 'kolab_activesync.savingdata');
|
||||
rcmail.http_post('plugin.activesync-json', { cmd:'delete', id:active_device }, http_lock);
|
||||
rcmail.http_post('plugin.activesync-json', { cmd:'delete', id:selection }, http_lock);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -159,12 +159,17 @@ class kolab_activesync extends rcube_plugin
|
|||
break;
|
||||
|
||||
case 'delete':
|
||||
$success = $this->device_delete($imei);
|
||||
foreach ((array) $imei as $id) {
|
||||
$success = $this->device_delete($id);
|
||||
}
|
||||
|
||||
if ($success) {
|
||||
$this->rc->output->show_message($this->gettext('successfullydeleted'), 'confirmation');
|
||||
$this->rc->output->command('plugin.activesync_save_complete', array(
|
||||
'success' => true, 'id' => $imei, 'delete' => true));
|
||||
'success' => true,
|
||||
'delete' => true,
|
||||
'id' => count($imei) > 1 ? 'ALL' : $imei[0],
|
||||
));
|
||||
}
|
||||
else
|
||||
$this->rc->output->show_message($this->gettext('savingerror'), 'error');
|
||||
|
|
|
@ -157,7 +157,7 @@ class kolab_activesync_ui
|
|||
{
|
||||
$alarms = ($attrib['type'] == 'event' || $attrib['type'] == 'task');
|
||||
|
||||
$table = new html_table(array('cellspacing' => 0));
|
||||
$table = new html_table(array('cellspacing' => 0, 'class' => 'table-striped'));
|
||||
$table->add_header(array(
|
||||
'class' => 'subscription checkbox-cell',
|
||||
'title' => $this->plugin->gettext('synchronize'),
|
||||
|
|
|
@ -13,11 +13,8 @@
|
|||
</div>
|
||||
<div class="scroller">
|
||||
<roundcube:object name="plugin.devicelist" id="devices-table" class="listing"
|
||||
data-label-msg="listempty" role="listbox" />
|
||||
data-label-msg="listempty" role="listbox" data-list="devicelist" />
|
||||
</div>
|
||||
<!--
|
||||
<div class="footer"></div>
|
||||
-->
|
||||
</div>
|
||||
|
||||
<!-- device info frame -->
|
||||
|
|
|
@ -84,43 +84,36 @@ if (window.rcmail) {
|
|||
});
|
||||
}
|
||||
|
||||
// append button to show contact audit trail
|
||||
if (rcmail.env.action == 'show' && rcmail.env.kolab_audit_trail && rcmail.env.cid) {
|
||||
$('<a>').attr({href: '#history', 'class': 'btn btn-secondary history contact-history', role: 'button', tabindex: 0})
|
||||
.append($('<span class="inner">').text(rcmail.get_label('kolab_addressbook.showhistory')))
|
||||
.click(function(e) {
|
||||
var rc = rcmail.is_framed() && parent.rcmail.contact_history_dialog ? parent.rcmail : rcmail;
|
||||
rc.contact_history_dialog();
|
||||
return false;
|
||||
})
|
||||
.appendTo($('<div>').addClass('formbuttons-secondary-kolab').appendTo('.formbuttons'));
|
||||
}
|
||||
rcmail.contact_list && rcmail.contact_list.addEventListener('select', function(list) {
|
||||
var source, is_writable = true, is_traceable = false;
|
||||
|
||||
// delete/move commands status was set by Roundcube core,
|
||||
// however, for Kolab addressbooks we like to check folder ACL
|
||||
if (list.selection.length && rcmail.commands['delete']) {
|
||||
$.each(rcmail.env.selection_sources, function() {
|
||||
source = rcmail.env.address_sources[this];
|
||||
if (source && source.kolab && source.rights.indexOf('t') < 0) {
|
||||
return is_writable = false;
|
||||
}
|
||||
});
|
||||
|
||||
rcmail.enable_command('delete', 'move', is_writable);
|
||||
}
|
||||
|
||||
if (list.get_single_selection()) {
|
||||
$.each(rcmail.env.selection_sources, function() {
|
||||
source = rcmail.env.address_sources[this];
|
||||
is_traceable = source && !!source.audittrail;
|
||||
});
|
||||
}
|
||||
|
||||
rcmail.enable_command('contact-history-dialog', is_traceable);
|
||||
});
|
||||
});
|
||||
|
||||
rcmail.addEventListener('listupdate', function() {
|
||||
rcmail.set_book_actions();
|
||||
});
|
||||
|
||||
// wait until rcmail.contact_list is ready and subscribe to 'select' events
|
||||
setTimeout(function() {
|
||||
rcmail.contact_list && rcmail.contact_list.addEventListener('select', function(list) {
|
||||
var source, is_writable = true;
|
||||
|
||||
// delete/move commands status was set by Roundcube core,
|
||||
// however, for Kolab addressbooks we like to check folder ACL
|
||||
if (list.selection.length && rcmail.commands['delete']) {
|
||||
for (n in rcmail.env.selection_sources) {
|
||||
source = rcmail.env.address_sources[n];
|
||||
if (source && source.kolab && source.rights.indexOf('t') < 0) {
|
||||
is_writable = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rcmail.enable_command('delete', 'move', is_writable);
|
||||
}
|
||||
});
|
||||
}, 100);
|
||||
}
|
||||
|
||||
// (De-)activates address book management commands
|
||||
|
@ -562,21 +555,6 @@ function kolab_addressbook_contextmenu()
|
|||
}
|
||||
});
|
||||
}
|
||||
else if (menu.menu_name == 'contactlist' && rcmail.env.kolab_audit_trail) {
|
||||
// add "Show History" item to context menu
|
||||
menu.menu_source.push({
|
||||
label: rcmail.get_label('kolab_addressbook.showhistory'),
|
||||
command: 'contact_history_dialog',
|
||||
classes: 'history'
|
||||
});
|
||||
// enable history item if the contact source supports it
|
||||
menu.addEventListener('activate', function(p) {
|
||||
if (p.command == 'contact_history_dialog') {
|
||||
var source = rcmail.env.address_sources ? rcmail.env.address_sources[rcmail.env.source] : {};
|
||||
return !!source.audittrail;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
@ -84,6 +84,17 @@ class kolab_addressbook extends rcube_plugin
|
|||
$this->load_config();
|
||||
require_once($this->home . '/lib/kolab_addressbook_ui.php');
|
||||
$this->ui = new kolab_addressbook_ui($this);
|
||||
|
||||
if ($this->bonnie_api) {
|
||||
$this->add_button(array(
|
||||
'command' => 'contact-history-dialog',
|
||||
'class' => 'history contact-history',
|
||||
'classact' => 'history contact-history active',
|
||||
'innerclass' => 'icon inner',
|
||||
'label' => 'kolab_addressbook.showhistory',
|
||||
'type' => 'link-menuitem'
|
||||
), 'contactmenu');
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ($this->rc->task == 'settings') {
|
||||
|
|
|
@ -4,10 +4,9 @@
|
|||
<script>
|
||||
// append search form for address books
|
||||
if (rcmail.gui_objects.folderlist) {
|
||||
var searchbar = $('#addressbooksearch').parent().parent()
|
||||
$('#addressbooksearch').parent().parent()
|
||||
.attr('aria-controls', rcmail.gui_objects.folderlist)
|
||||
.insertAfter($('#layout > .sidebar > .header > .header-title'))
|
||||
.get(0);
|
||||
.insertBefore('#' + rcmail.gui_objects.folderlist);
|
||||
|
||||
rcmail.addEventListener('init', function() {
|
||||
// Make checkboxes pretty
|
||||
|
|
|
@ -553,7 +553,7 @@ class kolab_delegation extends rcube_plugin
|
|||
$read_ico = $attrib['readicon'] ? html::img(array('src' => $path . $attrib['readicon'], 'title' => $this->gettext('read'))) : '';
|
||||
$write_ico = $attrib['writeicon'] ? html::img(array('src' => $path . $attrib['writeicon'], 'title' => $this->gettext('write'))) : '';
|
||||
|
||||
$table = new html_table(array('cellspacing' => 0));
|
||||
$table = new html_table(array('cellspacing' => 0, 'class' => 'table-striped'));
|
||||
$table->add_header(array('class' => 'read checkbox-cell', 'title' => $this->gettext('read'), 'tabindex' => 0), $read_ico);
|
||||
$table->add_header(array('class' => 'write checkbox-cell', 'title' => $this->gettext('write'), 'tabindex' => 0), $write_ico);
|
||||
$table->add_header('foldername', $this->rc->gettext('folder'));
|
||||
|
|
|
@ -237,7 +237,7 @@ function kolab_files_token()
|
|||
function kolab_files_from_cloud_widget(elem)
|
||||
{
|
||||
$('<a class="button btn btn-secondary fromcloud">')
|
||||
.attr('tabindex', $('input', elem).attr('tabindex') || 0)
|
||||
.attr('tabindex', $('button,input', elem).first().attr('tabindex') || 0)
|
||||
.text(rcmail.gettext('kolab_files.fromcloud'))
|
||||
.click(function() { kolab_files_selector_dialog(); })
|
||||
.appendTo(elem);
|
||||
|
|
|
@ -134,6 +134,7 @@ $labels['arialabelfilesavedialog'] = 'Datei(en) speichern Dialog';
|
|||
$labels['arialabelfileprops'] = 'Dateieigenschaften';
|
||||
$labels['arialabelfilecontent'] = 'Datei Inhalt';
|
||||
$labels['arialabelfileeditdialog'] = 'Dateibearbeitungsdialog';
|
||||
$labels['arialabelfilesessiondialog'] = 'Dokumentbearbeitungssitzung';
|
||||
$labels['type.plain'] = 'Klartextdokument';
|
||||
$labels['type.vndoasisopendocumenttext'] = 'Textdokument (ODF)';
|
||||
$labels['type.html'] = 'HTML-Dokument';
|
||||
|
|
|
@ -21,6 +21,7 @@ $labels['foldercreate'] = 'Ordner erstellen';
|
|||
$labels['folderedit'] = 'Ordner ändern';
|
||||
$labels['foldermount'] = 'Speicher hinzufügen';
|
||||
$labels['folderdelete'] = 'Ordner löschen';
|
||||
$labels['folderoptions'] = 'Ordneroptionen';
|
||||
$labels['folderinside'] = 'Erstellen in';
|
||||
$labels['foldername'] = 'Ordnername';
|
||||
$labels['name'] = 'Name';
|
||||
|
@ -104,6 +105,7 @@ $labels['statusorganizer'] = 'Organisator';
|
|||
$labels['statusinvited'] = 'Eingeladen';
|
||||
$labels['statusaccepted'] = 'Angenommen';
|
||||
$labels['statusdeclined'] = 'Abgelehnt';
|
||||
$labels['statusrequested'] = 'Angefordert';
|
||||
$labels['documentinviting'] = 'Teilnehmer wird/werden eingeladen …';
|
||||
$labels['documentcancelling'] = 'Teilnehmer wird/werden entfernt …';
|
||||
$labels['removeparticipant'] = 'Entfernen';
|
||||
|
@ -118,9 +120,9 @@ $labels['file'] = 'Datei';
|
|||
$labels['comment'] = 'Kommentar';
|
||||
$labels['open'] = 'Öffnen';
|
||||
$labels['invitationtitle'] = 'Einladung für $file';
|
||||
$labels['ivitationaccepting'] = 'Eine Einladung wird angenommen …';
|
||||
$labels['ivitationdeclining'] = 'Eine Einladung wird abgelehnt …';
|
||||
$labels['ivitationrequesting'] = 'Einladung wird angefordert …';
|
||||
$labels['invitationaccepting'] = 'Eine Einladung wird angenommen …';
|
||||
$labels['invitationdeclining'] = 'Eine Einladung wird abgelehnt …';
|
||||
$labels['invitationrequesting'] = 'Einladung wird angefordert …';
|
||||
$labels['storepasswords'] = 'Passwort merken';
|
||||
$labels['storepasswordsdesc'] = 'Gespeicherte Passwörter werden verschlüsselt. Aktivieren Sie dies, wenn Sie nicht bei jedem Login nach dem Passwort gefragt werden möchten oder wenn dieser Speicher via WebDAV verfügbar sein soll.';
|
||||
$labels['arialabelsearchform'] = 'Suchformular für Dateien';
|
||||
|
@ -141,6 +143,7 @@ $labels['arialabelfilesavedialog'] = 'Datei(en)speicherndialog';
|
|||
$labels['arialabelfileprops'] = 'Dateieigenschaften';
|
||||
$labels['arialabelfilecontent'] = 'Dateiinhalt';
|
||||
$labels['arialabelfileeditdialog'] = 'Dateibearbeitungsdialog';
|
||||
$labels['arialabelfilesessiondialog'] = 'Dokumentbearbeitungssitzung';
|
||||
$labels['type.plain'] = 'Klartextdokument';
|
||||
$labels['type.vndoasisopendocumenttext'] = 'Textdokument (ODF)';
|
||||
$labels['type.html'] = 'HTML-Dokument';
|
||||
|
|
|
@ -5,18 +5,29 @@
|
|||
<div class="header">
|
||||
<a class="button icon back" href="#back" data-hidden="big" onclick="$('#folderlistbox').hide();$('#filelistcontainer').css('display','flex')"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||
<span class="header-title"><roundcube:label name="folders" /></span>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="foldersearch" wrapper="searchbar toolbar"
|
||||
ariatag="h5" label="foldersearchform" buttontitle="kolab_files.findfolders" />
|
||||
</div>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="foldersearch" wrapper="searchbar toolbar"
|
||||
ariatag="h5" label="foldersearchform" buttontitle="kolab_files.findfolders" />
|
||||
<div id="files-folder-list" class="scroller"></div>
|
||||
</div>
|
||||
<div id="filelistcontainer" class="selection-content content">
|
||||
<div class="header">
|
||||
<a class="button icon folders" href="#sidebar" data-hidden="big" onclick="$('#filelistcontainer').hide();$('#folderlistbox').css('display','flex')"><span class="inner"><roundcube:label name="folders" /></span></a>
|
||||
<span class="header-title" data-hidden="big" ><roundcube:label name="kolab_files.selectfiles" /></span>
|
||||
<roundcube:object name="file-search-form" id="filesearchbox" wrapper="searchbar toolbar"
|
||||
label="searchform" buttontitle="kolab_files.findfiles" label-domain="kolab_files"
|
||||
ariatag="h3" options="filesearchmenu" />
|
||||
</div>
|
||||
<roundcube:object name="file-search-form" id="filesearchbox" wrapper="searchbar toolbar"
|
||||
label="searchform" buttontitle="kolab_files.findfiles" label-domain="kolab_files"
|
||||
ariatag="h3" options="filesearchmenu" />
|
||||
<div id="filesearchmenu" class="hidden searchoptions scroller propform formcontainer" aria-labelledby="aria-label-search-menu" aria-controls="filelist">
|
||||
<h3 id="aria-label-search-menu" class="voice"><roundcube:label name="searchmod" /></h3>
|
||||
<div class="formcontent">
|
||||
<ul class="proplist">
|
||||
<li><label><input type="checkbox" name="all_folders" value="1" id="search_all_folders" /><roundcube:label name="kolab_files.allfolders" /></label></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="formbuttons">
|
||||
<button class="btn btn-primary icon search" href="#" onclick="return rcmail.command('files-search')"><roundcube:label name="search" /></button>
|
||||
</div>
|
||||
</div>
|
||||
<h4 id="aria-label-filelist" class="voice"><roundcube:label name="kolab_files.arialabelfilelist" /></h4>
|
||||
<div class="scroller">
|
||||
|
@ -26,13 +37,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div id="filesearchmenu" class="popupmenu form" data-editable="true">
|
||||
<h3 id="aria-label-searchmenu" class="voice"><roundcube:label name="searchmod" /></h3>
|
||||
<ul class="toolbarmenu" role="menu" aria-labelledby="aria-label-searchmenu">
|
||||
<li role="menuitem" class="checkbox"><label><input type="checkbox" name="all_folders" value="1" id="search_all_folders" /><roundcube:label name="kolab_files.allfolders" /></label></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="files-folder-auth-dialog" class="popupmenu formcontent" role="dialog" aria-labelledby="aria-label-folderauthform">
|
||||
<h3 id="aria-label-folderauthform" class="voice"><roundcube:label name="kolab_files.arialabelfolderauthform" /></h3>
|
||||
<roundcube:object name="folder-auth-options">
|
||||
|
|
|
@ -8,24 +8,21 @@
|
|||
<div class="header">
|
||||
<a class="button icon back-content-button" href="#back" data-hidden="big"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||
<span id="aria-label-folders" class="header-title"><roundcube:label name="folders" /></span>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="foldersearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="foldersearchform" buttontitle="kolab_files.findfolders" />
|
||||
</div>
|
||||
<div id="files-folder-list" class="scroller"></div>
|
||||
<div class="footer toolbar" role="toolbar">
|
||||
<roundcube:button command="folder-create" type="link"
|
||||
title="kolab_files.foldercreate" label="kolab_files.addfolder"
|
||||
class="button create disabled" classAct="button create" innerClass="inner" />
|
||||
<roundcube:button name="folderoptions" id="folderoptionslink" type="link"
|
||||
title="moreactions" label="actions"
|
||||
class="button actions" innerClass="inner" data-popup="folderoptions-menu" />
|
||||
<roundcube:if condition="env:files_quota" />
|
||||
<div id="quotadisplay" class="quota-widget">
|
||||
<span class="voice"><roundcube:label name="quota"></span>
|
||||
<roundcube:object name="filequotadisplay" class="count" display="text" />
|
||||
</div>
|
||||
<roundcube:endif />
|
||||
class="button icon sidebar-menu" innerClass="inner" data-popup="folderoptions-menu" />
|
||||
</div>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="foldersearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="foldersearchform" buttontitle="kolab_files.findfolders" />
|
||||
<div id="files-folder-list" class="scroller"></div>
|
||||
<roundcube:if condition="env:files_quota" />
|
||||
<div class="footer toolbar small">
|
||||
<div id="quotadisplay" class="quota-widget">
|
||||
<span class="voice"><roundcube:label name="quota"></span>
|
||||
<roundcube:object name="filequotadisplay" class="count" display="text" />
|
||||
</div>
|
||||
</div>
|
||||
<roundcube:endif />
|
||||
</div>
|
||||
|
||||
<!-- files -->
|
||||
|
@ -37,6 +34,13 @@
|
|||
<span class="header-title"></span>
|
||||
<!-- toolbar -->
|
||||
<div id="filestoolbar" class="toolbar">
|
||||
<roundcube:button id="fileslistmenu-link" name="fileslistmenu-link"
|
||||
type="link" onclick="kolab_files_listoptions('files')"
|
||||
label="options" class="button settings" innerClass="inner" />
|
||||
<roundcube:button id="sessionslistmenu-link" name="sessionslistmenu-link"
|
||||
type="link" onclick="kolab_files_listoptions('sessions')"
|
||||
label="options" class="button hidden settings" innerClass="inner" />
|
||||
<span class="spacer"></span>
|
||||
<roundcube:button command="files-upload" type="link" onclick="$('#filesuploadform').click()"
|
||||
class="button upload disabled" classAct="button upload"
|
||||
label="kolab_files.upload" title="kolab_files.uploadfile" innerClass="inner" />
|
||||
|
@ -59,9 +63,20 @@
|
|||
class="button more" label="more" title="moreactions"
|
||||
data-popup="file-menu" innerclass="inner" />
|
||||
</div>
|
||||
<roundcube:object name="file-search-form" id="searchform" wrapper="searchbar toolbar"
|
||||
label="searchform" buttontitle="kolab_files.findfiles" label-domain="kolab_files"
|
||||
ariatag="h3" options="filesearchmenu" />
|
||||
</div>
|
||||
<roundcube:object name="file-search-form" id="searchform" wrapper="searchbar toolbar"
|
||||
label="searchform" buttontitle="kolab_files.findfiles" label-domain="kolab_files"
|
||||
ariatag="h3" options="filesearchmenu" />
|
||||
<div id="filesearchmenu" class="hidden searchoptions scroller propform formcontainer" aria-labelledby="aria-label-search-menu" aria-controls="filelist">
|
||||
<h3 id="aria-label-search-menu" class="voice"><roundcube:label name="searchmod" /></h3>
|
||||
<div class="formcontent">
|
||||
<ul class="proplist">
|
||||
<li><label><input type="checkbox" name="all_folders" value="1" id="search_all_folders" /><roundcube:label name="kolab_files.allfolders" /></label></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="formbuttons">
|
||||
<button class="btn btn-primary icon search" href="#" onclick="return rcmail.command('files-search')"><roundcube:label name="search" /></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="filelistcontainer" class="content" role="main" aria-labelledby="aria-label-filelist" data-elastic-mode="true">
|
||||
<h2 id="aria-label-filelist" class="voice"><roundcube:label name="kolab_files.arialabelfilelist" /></h2>
|
||||
|
@ -76,16 +91,6 @@
|
|||
optionsmenuIcon="true" aria-labelledby="aria-label-sessionslist" data-label-msg="listempty" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer toolbar" role="toolbar">
|
||||
<div id="listcontrols" class="listselectors">
|
||||
<roundcube:button id="fileslistmenu-link" name="fileslistmenu-link"
|
||||
type="link" onclick="kolab_files_listoptions('files')"
|
||||
label="options" class="button settings" innerClass="inner" />
|
||||
<roundcube:button id="sessionslistmenu-link" name="sessionslistmenu-link"
|
||||
type="link" onclick="kolab_files_listoptions('sessions')"
|
||||
label="options" class="button hidden settings" innerClass="inner" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="filesuploadform" class="smart-upload"></form>
|
||||
|
@ -126,6 +131,7 @@
|
|||
<div id="folderoptions-menu" class="popupmenu" data-editable="true">
|
||||
<h3 id="aria-label-folderoptions" class="voice"><roundcube:label name="kolab_files.folderoptions" /></h3>
|
||||
<ul class="toolbarmenu listing" role="menu" aria-labelledby="aria-label-folderoptions">
|
||||
<roundcube:button type="link-menuitem" command="folder-create" label="kolab_files.addfolder" class="create disabled" classAct="create active" />
|
||||
<roundcube:button type="link-menuitem" command="folder-rename" label="rename" class="rename" classAct="rename active" />
|
||||
<roundcube:button type="link-menuitem" command="files-folder-delete" label="delete" class="delete" classAct="delete active" />
|
||||
<roundcube:if condition="!empty(env:external_sources)" />
|
||||
|
@ -196,13 +202,6 @@
|
|||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="filesearchmenu" class="popupmenu form" data-editable="true">
|
||||
<h3 id="aria-label-searchmenu" class="voice"><roundcube:label name="searchmod" /></h3>
|
||||
<ul class="toolbarmenu" role="menu" aria-labelledby="aria-label-searchmenu">
|
||||
<li role="menuitem" class="checkbox"><label><input type="checkbox" name="all_folders" value="1" id="search_all_folders" /><roundcube:label name="kolab_files.allfolders" /></label></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="file-menu" class="popupmenu">
|
||||
<h3 id="aria-label-message-menu" class="voice"><roundcube:label name="kolab_files.arialabelmorefileactions" /></h3>
|
||||
<ul class="toolbarmenu listing" role="menu" aria-labelledby="aria-label-file-menu">
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
<div class="header">
|
||||
<span class="header-title" data-hidden="small"><roundcube:label name="folders" /></span>
|
||||
<span class="header-title" data-hidden="big"><roundcube:label name="kolab_files.saveto" /></span>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="foldersearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="foldersearchform" buttontitle="kolab_files.findfolders" />
|
||||
</div>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="foldersearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="foldersearchform" buttontitle="kolab_files.findfolders" />
|
||||
<h3 id="aria-label-folderlist" class="voice"><roundcube:label name="kolab_files.arialabelfolderlist" /></h3>
|
||||
<div id="files-folder-list" class="scroller" aria-labelledby="aria-label-folderlist" data-no-collections="true"></div>
|
||||
<div id="file-save-as" class="form-addon form-group row">
|
||||
|
|
|
@ -117,7 +117,7 @@ else if (rcmail.env.action == 'edit') {
|
|||
else {
|
||||
rcmail.addEventListener('files-folder-select', function(p) {
|
||||
var is_sess = p.folder == 'folder-collection-sessions';
|
||||
$('#fileslistmenu-link, #layout > .content > .header > a.toggleselect, #layout > .content > .header > .searchbar')[is_sess ? 'hide' : 'show']();
|
||||
$('#fileslistmenu-link, #layout > .content > .pagenav, #layout > .content .searchbar')[is_sess ? 'hide' : 'show']();
|
||||
$('#sessionslistmenu-link')[is_sess ? 'removeClass' : 'addClass']('hidden');
|
||||
|
||||
// set list header title for mobile
|
||||
|
|
|
@ -25,5 +25,6 @@ $labels['wastebasket'] = 'Mülleimer';
|
|||
$labels['junkemail'] = 'Spam';
|
||||
$labels['confidential'] = 'Vertraulich';
|
||||
$labels['private'] = 'Privat';
|
||||
$labels['xdays'] = '$x Tage';
|
||||
$messages['defaultfolderexists'] = 'Es gibt bereits einen Standardordner des angegebenen Typs';
|
||||
?>
|
||||
|
|
|
@ -1183,7 +1183,7 @@ function rcube_kolab_notes_ui(settings)
|
|||
rcmail.enable_command('save', false);
|
||||
|
||||
if (!list) {
|
||||
rcmail.triggerEvent('show-list');
|
||||
rcmail.triggerEvent('show-list', {force: true});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,19 +8,15 @@
|
|||
<div class="header">
|
||||
<a class="button icon back-list-button" href="#back"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||
<span id="aria-label-notebooks" class="header-title"><roundcube:label name="kolab_notes.lists" /></span>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="notebooksearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="foldersearchform" label-domain="kolab_notes" buttontitle="findnotebooks" />
|
||||
<roundcube:button name="notebookactionsmenu" id="notesoptionsmenulink" type="link"
|
||||
title="kolab_notes.listactions" class="button icon sidebar-menu" data-popup="notebookactions-menu"
|
||||
innerClass="inner" label="actions" />
|
||||
</div>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="notebooksearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="foldersearchform" label-domain="kolab_notes" buttontitle="findnotebooks" />
|
||||
<div id="notebooks-content" class="scroller">
|
||||
<roundcube:object name="plugin.notebooks" id="notebooks" class="listing treelist iconized" />
|
||||
</div>
|
||||
<div class="footer toolbar" role="toolbar">
|
||||
<roundcube:button command="list-create" type="link" title="kolab_notes.newnotebook"
|
||||
class="button create disabled" classAct="button create" innerClass="inner" label="kolab_notes.addnotebook" />
|
||||
<roundcube:button name="notebookactionsmenu" id="notesoptionsmenulink" type="link"
|
||||
title="kolab_notes.listactions" class="button actions" data-popup="notebookactions-menu"
|
||||
innerClass="inner" label="actions" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- notes list -->
|
||||
|
@ -29,10 +25,14 @@
|
|||
<a class="button icon menu-button" href="#menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||
<a class="button icon back-sidebar-button folders" href="#sidebar"><span class="inner"><roundcube:label name="kolab_notes.notebooks" /></span></a>
|
||||
<span id="aria-label-noteslist" class="header-title"><roundcube:label name="kolab_notes.notes" /></span>
|
||||
<roundcube:object name="plugin.searchform" id="searchform" wrapper="searchbar toolbar"
|
||||
label="notesearchform" label-domain="kolab_notes" buttontitle="kolab_notes.findnotes" ariatag="h2" />
|
||||
<div id="listcontrols" class="toolbar" role="toolbar">
|
||||
<roundcube:button name="optionsmenu" id="listmenulink" type="link" class="button settings"
|
||||
label="options" innerClass="inner" onclick="return kolab_notes_options_menu()" />
|
||||
</div>
|
||||
<a class="button icon toolbar-menu-button" href="#list-menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||
</div>
|
||||
<roundcube:object name="plugin.searchform" id="searchform" wrapper="searchbar toolbar"
|
||||
label="notesearchform" label-domain="kolab_notes" buttontitle="kolab_notes.findnotes" ariatag="h2" />
|
||||
<div class="scroller">
|
||||
<h2 id="aria-label-noteslist" class="voice"><roundcube:label name="kolab_notes.notes" /></h2>
|
||||
<roundcube:object name="plugin.listing" id="kolabnoteslist"
|
||||
|
@ -40,12 +40,6 @@
|
|||
role="listbox" data-list="noteslist"
|
||||
data-label-msg="listempty" data-label-ext="listusebutton" data-create-command="createnote" />
|
||||
</div>
|
||||
<div class="footer toolbar">
|
||||
<div id="listcontrols" class="listselectors">
|
||||
<roundcube:button name="optionsmenu" id="listmenulink" type="link" class="button settings"
|
||||
label="options" innerClass="inner" onclick="return kolab_notes_options_menu()" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- note details frame -->
|
||||
|
@ -65,10 +59,16 @@
|
|||
<roundcube:button command="delete" type="link"
|
||||
class="button delete disabled" classAct="button delete"
|
||||
title="delete" label="delete" innerClass="inner" />
|
||||
<span class="spacer"></span>
|
||||
<roundcube:button command="sendnote" type="link"
|
||||
class="button send disabled" classAct="button send"
|
||||
label="kolab_notes.send" title="kolab_notes.sendnote" innerClass="inner" />
|
||||
<roundcube:container name="toolbar" id="notestoolbar" />
|
||||
<roundcube:if condition="config:kolab_bonnie_api" />
|
||||
<roundcube:button command="history" type="link"
|
||||
class="button history note-history disabled" classAct="button history note-history"
|
||||
label="libkolab.objectchangelog" title="libkolab.showhistory" innerClass="inner" />
|
||||
<roundcube:endif />
|
||||
</div>
|
||||
</div>
|
||||
<!-- note content frame -->
|
||||
|
@ -86,10 +86,6 @@
|
|||
</div>
|
||||
<div class="formbuttons">
|
||||
<roundcube:button command="save" class="btn btn-primary submit" label="save" id="btn-save-note" />
|
||||
<roundcube:if condition="config:kolab_bonnie_api" />
|
||||
<roundcube:button command="history" type="link" label="libkolab.showhistory"
|
||||
class="btn btn-secondary history note-history disabled" classAct="btn btn-secondary history note-history" />
|
||||
<roundcube:endif />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -122,6 +118,7 @@
|
|||
<div id="notebookactions-menu" class="popupmenu">
|
||||
<h3 id="aria-label-actionsmenu" class="voice"><roundcube:label name="kolab_notes.arialabelnotesoptionsmenu" /></h3>
|
||||
<ul class="toolbarmenu listing" role="menu" aria-labelledby="aria-label-actionsmenu">
|
||||
<roundcube:button type="link-menuitem" command="list-create" label="kolab_notes.addnotebook" class="create disabled" classAct="create active" />
|
||||
<roundcube:button type="link-menuitem" command="list-edit" label="edit" class="edit disabled" classAct="edit active" />
|
||||
<roundcube:button type="link-menuitem" command="list-delete" label="delete" class="delete disabled" classAct="delete active" />
|
||||
<roundcube:button type="link-menuitem" command="list-remove" label="kolab_notes.removelist" class="remove disabled" classAct="remove active" />
|
||||
|
|
|
@ -629,24 +629,24 @@ class libcalendaring_itip
|
|||
|
||||
// 1. update the attendee status on our copy
|
||||
$update_button = html::tag('input', array(
|
||||
'type' => 'button',
|
||||
'class' => 'button',
|
||||
'type' => 'button',
|
||||
'class' => 'button',
|
||||
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . rcube::JQ($mime_id) . "', '$task')",
|
||||
'value' => $this->gettext('updateattendeestatus'),
|
||||
'value' => $this->gettext('updateattendeestatus'),
|
||||
));
|
||||
|
||||
// 2. accept or decline a new or delegate attendee
|
||||
$accept_buttons = html::tag('input', array(
|
||||
'type' => 'button',
|
||||
'class' => "button accept",
|
||||
'type' => 'button',
|
||||
'class' => "button accept",
|
||||
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . rcube::JQ($mime_id) . "', '$task')",
|
||||
'value' => $this->gettext('acceptattendee'),
|
||||
'value' => $this->gettext('acceptattendee'),
|
||||
));
|
||||
$accept_buttons .= html::tag('input', array(
|
||||
'type' => 'button',
|
||||
'class' => "button decline",
|
||||
'type' => 'button',
|
||||
'class' => "button decline",
|
||||
'onclick' => "rcube_libcalendaring.decline_attendee_reply('" . rcube::JQ($mime_id) . "', '$task')",
|
||||
'value' => $this->gettext('declineattendee'),
|
||||
'value' => $this->gettext('declineattendee'),
|
||||
));
|
||||
|
||||
$buttons[] = html::div(array('id' => 'update-'.$dom_id, 'style' => 'display:none'), $update_button);
|
||||
|
@ -679,10 +679,10 @@ class libcalendaring_itip
|
|||
// 1. display RSVP buttons (if the user was invited)
|
||||
foreach ($this->rsvp_actions as $method) {
|
||||
$rsvp_buttons .= html::tag('input', array(
|
||||
'type' => 'button',
|
||||
'class' => "button $method",
|
||||
'type' => 'button',
|
||||
'class' => "button $method",
|
||||
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . rcube::JQ($mime_id) . "', '$task', '$method', '$dom_id')",
|
||||
'value' => $this->gettext('itip' . $method),
|
||||
'value' => $this->gettext('itip' . $method),
|
||||
));
|
||||
}
|
||||
|
||||
|
@ -690,34 +690,35 @@ class libcalendaring_itip
|
|||
if (!empty($preview_url)) {
|
||||
$msgref = $this->lib->ical_message->folder . '/' . $this->lib->ical_message->uid . '#' . $mime_id;
|
||||
$rsvp_buttons .= html::tag('input', array(
|
||||
'type' => 'button',
|
||||
'class' => "button preview",
|
||||
'type' => 'button',
|
||||
// TODO: Temp. disable this button on small screen in Elastic (Bifrost#T105747)
|
||||
'class' => "button preview hidden-phone hidden-small",
|
||||
'onclick' => "rcube_libcalendaring.open_itip_preview('" . rcube::JQ($preview_url) . "', '" . rcube::JQ($msgref) . "')",
|
||||
'value' => $this->gettext('openpreview'),
|
||||
'value' => $this->gettext('openpreview'),
|
||||
));
|
||||
}
|
||||
|
||||
// 2. update the local copy with minor changes
|
||||
$update_button = html::tag('input', array(
|
||||
'type' => 'button',
|
||||
'class' => 'button',
|
||||
'type' => 'button',
|
||||
'class' => 'button',
|
||||
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . rcube::JQ($mime_id) . "', '$task')",
|
||||
'value' => $this->gettext('updatemycopy'),
|
||||
'value' => $this->gettext('updatemycopy'),
|
||||
));
|
||||
|
||||
// 3. Simply import the event without replying
|
||||
$import_button = html::tag('input', array(
|
||||
'type' => 'button',
|
||||
'class' => 'button',
|
||||
'type' => 'button',
|
||||
'class' => 'button',
|
||||
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . rcube::JQ($mime_id) . "', '$task')",
|
||||
'value' => $this->gettext('importtocalendar'),
|
||||
'value' => $this->gettext('importtocalendar'),
|
||||
));
|
||||
|
||||
// check my status
|
||||
foreach ($event['attendees'] as $attendee) {
|
||||
if ($attendee['email'] && in_array(strtolower($attendee['email']), $emails)) {
|
||||
$metadata['attendee'] = $attendee['email'];
|
||||
$metadata['rsvp'] = $attendee['rsvp'] || $attendee['role'] != 'NON-PARTICIPANT';
|
||||
$metadata['rsvp'] = $attendee['rsvp'] || $attendee['role'] != 'NON-PARTICIPANT';
|
||||
$rsvp_status = !empty($attendee['status']) ? strtoupper($attendee['status']) : 'NEEDS-ACTION';
|
||||
break;
|
||||
}
|
||||
|
@ -738,9 +739,9 @@ class libcalendaring_itip
|
|||
else if ($method == 'CANCEL') {
|
||||
$title = $this->gettext('itipcancellation');
|
||||
$event_prop = array_filter(array(
|
||||
'uid' => $event['uid'],
|
||||
'_instance' => $event['_instance'],
|
||||
'_savemode' => $event['_savemode'],
|
||||
'uid' => $event['uid'],
|
||||
'_instance' => $event['_instance'],
|
||||
'_savemode' => $event['_savemode'],
|
||||
));
|
||||
|
||||
// 1. remove the event from our calendar
|
||||
|
@ -753,10 +754,10 @@ class libcalendaring_itip
|
|||
|
||||
// 2. update our copy with status=cancelled
|
||||
$button_update = html::tag('input', array(
|
||||
'type' => 'button',
|
||||
'class' => 'button',
|
||||
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . rcube::JQ($mime_id) . "', '$task')",
|
||||
'value' => $this->gettext('updatemycopy'),
|
||||
'type' => 'button',
|
||||
'class' => 'button',
|
||||
'onclick' => "rcube_libcalendaring.add_from_itip_mail('" . rcube::JQ($mime_id) . "', '$task')",
|
||||
'value' => $this->gettext('updatemycopy'),
|
||||
));
|
||||
|
||||
$buttons[] = html::div(array('id' => 'rsvp-'.$dom_id, 'style' => 'display:none'), $button_remove . $button_update);
|
||||
|
@ -780,7 +781,7 @@ class libcalendaring_itip
|
|||
foreach (array('savingdata','deleteobjectconfirm','declinedeleteconfirm','declineattendee',
|
||||
'cancel','itipdelegated','declineattendeeconfirm','itipcomment','delegateinvitation',
|
||||
'delegateto','delegatersvpme','delegateinvalidaddress') as $label) {
|
||||
$this->rc->output->command('add_label', "itip.$label", $this->gettext($label));
|
||||
$this->rc->output->command('add_label', "itip.$label", $this->gettext($label));
|
||||
}
|
||||
|
||||
// show event details with buttons
|
||||
|
|
|
@ -408,6 +408,11 @@ function rcube_libcalendaring(settings)
|
|||
$(prefix+' label:first').attr('for', dom_id);
|
||||
}
|
||||
|
||||
// Elastic
|
||||
if (window.UI && UI.pretty_select) {
|
||||
$(prefix + ' select').each(function() { UI.pretty_select(this); });
|
||||
}
|
||||
|
||||
if (index)
|
||||
return;
|
||||
|
||||
|
@ -438,13 +443,14 @@ function rcube_libcalendaring(settings)
|
|||
var i, alarm, domnode, val, offset;
|
||||
for (i=0; i < valarms.length; i++) {
|
||||
alarm = valarms[i];
|
||||
|
||||
if (!alarm.action)
|
||||
alarm.action = 'DISPLAY';
|
||||
|
||||
domnode = $(prefix + ' .edit-alarm-item').eq(0);
|
||||
|
||||
if (i > 0) {
|
||||
domnode = domnode.clone(false).removeClass('first').appendTo(prefix);
|
||||
domnode = domnode.clone(false).removeClass('first').insertAfter(domnode);
|
||||
this.init_alarms_edit(prefix + ' .edit-alarm-item:eq(' + i + ')', i);
|
||||
}
|
||||
|
||||
|
@ -1072,11 +1078,14 @@ function rcube_libcalendaring(settings)
|
|||
// resize and reposition (center) the dialog window
|
||||
this.dialog_resize = function(id, height, width)
|
||||
{
|
||||
var win = $(window), w = win.width(), h = win.height();
|
||||
var win = $(window), w = win.width(), h = win.height(),
|
||||
dialog = $('.ui-dialog:visible'),
|
||||
h_delta = dialog.find('.ui-dialog-titlebar').outerHeight() + dialog.find('.ui-dialog-buttonpane').outerHeight() + 30,
|
||||
w_delta = 50;
|
||||
|
||||
$(id).dialog('option', {
|
||||
height: Math.min(h-20, height+130),
|
||||
width: Math.min(w-20, width+50)
|
||||
height: Math.min(h-20, height + h_delta),
|
||||
width: Math.min(w-20, width + w_delta)
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1764,6 +1764,16 @@ body.task-calendar {
|
|||
}
|
||||
}
|
||||
|
||||
.searchbar a.button.date {
|
||||
@media screen and (min-width: (@screen-width-small + 1px)) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:before {
|
||||
line-height: 1.25;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: @screen-width-small) {
|
||||
.fc {
|
||||
.fc-header-left {
|
||||
|
@ -1906,7 +1916,9 @@ body.task-calendar {
|
|||
}
|
||||
}
|
||||
|
||||
.header-title {
|
||||
body.task-calendar .header-title {
|
||||
position: relative;
|
||||
|
||||
.tz {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
|
|
|
@ -28,14 +28,14 @@
|
|||
}
|
||||
|
||||
#devices-table {
|
||||
td:before {
|
||||
&:extend(.font-icon-class);
|
||||
content: @fa-var-rss-square; // TODO: mobile icon is not free
|
||||
}
|
||||
|
||||
td {
|
||||
td:not(.selection) {
|
||||
display: flex;
|
||||
|
||||
&:before {
|
||||
&:extend(.font-icon-class);
|
||||
content: @fa-var-rss-square; // TODO: mobile icon is not free
|
||||
}
|
||||
|
||||
span {
|
||||
.overflow-ellipsis;
|
||||
}
|
||||
|
|
|
@ -189,17 +189,24 @@ a.button.saveas:before {
|
|||
content: @fa-var-file-pdf;
|
||||
}
|
||||
|
||||
&.application_vnd_openxmlformats_officedocument_wordprocessingml_document span:before,
|
||||
&.application_vnd_openxmlformats_officedocument_wordprocessingml_template span:before,
|
||||
&.application_vnd_ms_word span:before,
|
||||
&.application_msword span:before {
|
||||
content: @fa-var-file-word;
|
||||
}
|
||||
|
||||
&.application_vnd_ms_excel span:before,
|
||||
&.application_vnd_openxmlformats_officedocument_spreadsheetml_sheet span:before,
|
||||
&.application_vnd_openxmlformats_officedocument_spreadsheetml_template span:before,
|
||||
&.application_vnd_oasis_opendocument_spreadsheet span:before,
|
||||
&.application_vnd_oasis_opendocument_spreadsheet_template span:before {
|
||||
content: @fa-var-file-excel;
|
||||
}
|
||||
|
||||
&.application_vnd_openxmlformats_officedocument_presentationml_presentation span:before,
|
||||
&.application_vnd_openxmlformats_officedocument_presentationml_template span:before,
|
||||
&.application_vnd_openxmlformats_officedocument_presentationml_slideshow span:before,
|
||||
&.application_vnd_ms_powerpoint span:before {
|
||||
content: @fa-var-file-powerpoint;
|
||||
}
|
||||
|
|
|
@ -308,15 +308,7 @@ html.touch .listing {
|
|||
}
|
||||
}
|
||||
|
||||
.formbuttons-secondary-kolab {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
a.history {
|
||||
&.disabled {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:before {
|
||||
&:extend(.font-icon-class);
|
||||
content: @fa-var-history;
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
|
||||
ul.toolbarmenu li a.history span.history {
|
||||
ul.toolbarmenu li a.history {
|
||||
padding: 2px 6px;
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
ul.toolbarmenu li a.history span.icon {
|
||||
background-image: url('data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAABXUlEQVQoFbXBvUsCYQAH4N/mdm5uN9UStzn1AYG0HC1Jg01tV/9A0NYQ5dRm4BI0VYRYUYOD3CSB2FaLXBJhIXYeXr7veVGd8qus0D6Whp4H+Duq1LnEBDX8jiqz3XpgPzqB3a0zSw3fUetavlux0hkjlc5cnPtut84EBlEJLr1WOoN5RKEiisTylmMHNjX0Pa17rd0TRAFqzOLN8Ma2FN4u+tpVx8Y4Xp1O+y7eaRXroUkFn7xWqYieXFwKfDjek6IxCYAqy6xJ8dBkjatALi4FDfQUN6XIxfEqPJt0bCmkMAuIAXMjx/nnBvPUAGtfip0p9ERmk45tFqDjTQix0TXrzFqg4t3cVhHBh8jECnQqVPAujAS0zqHXOshgQJhKx+ycUUcPx5j33YqFcXwRMo/a94HNMrMsd+58t1gaWsQPMSNlFq7Kvlu7LpaMFGYQwi9U6JjHEgzMQMU/eAHASL3dDo5S4wAAAABJRU5ErkJggg==');
|
||||
background-position: 0px 2px;
|
||||
background-repeat: no-repeat;
|
||||
|
|
|
@ -8,19 +8,15 @@
|
|||
<div class="header">
|
||||
<a class="button icon back-list-button" href="#back"><span class="inner"><roundcube:label name="back" /></span></a>
|
||||
<span id="aria-label-tasklists" class="header-title"><roundcube:label name="tasklist.lists" /></span>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="tasklistsearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="foldersearchform" label-domain="tasklist" buttontitle="findlists" />
|
||||
<roundcube:button name="tasklistactionsmenu" id="tasklistoptionsmenulink" type="link"
|
||||
title="tasklist.listactions" class="button icon sidebar-menu" data-popup="tasklistactions-menu"
|
||||
innerClass="inner" label="actions" />
|
||||
</div>
|
||||
<roundcube:object name="libkolab.folder_search_form" id="tasklistsearch" wrapper="searchbar toolbar"
|
||||
ariatag="h2" label="foldersearchform" label-domain="tasklist" buttontitle="findlists" />
|
||||
<div id="tasklists-content" class="scroller">
|
||||
<roundcube:object name="plugin.tasklists" id="tasklists" class="treelist listing iconized" />
|
||||
</div>
|
||||
<div class="footer toolbar" role="toolbar">
|
||||
<roundcube:button command="list-create" type="link" title="tasklist.createlist"
|
||||
class="button create disabled" classAct="button create" innerClass="inner" label="tasklist.createlist" />
|
||||
<roundcube:button name="tasklistactionsmenu" id="tasklistoptionsmenulink" type="link"
|
||||
title="tasklist.listactions" class="button actions" data-popup="tasklistactions-menu"
|
||||
innerClass="inner" label="actions" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- tasks list -->
|
||||
|
@ -29,10 +25,15 @@
|
|||
<a class="button icon menu-button" href="#menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||
<a class="button icon back-sidebar-button folders" href="#sidebar"><span class="inner"><roundcube:label name="tasklist.lists" /></span></a>
|
||||
<span id="aria-label-taskslist" class="header-title"><roundcube:label name="tasklist.navtitle" /></span>
|
||||
<roundcube:object name="plugin.searchform" id="searchform" wrapper="searchbar toolbar"
|
||||
label="tasksearchform" label-domain="tasklist" buttontitle="tasklist.findtasks" ariatag="h2" />
|
||||
<div id="listcontrols" class="toolbar" role="toolbar">
|
||||
<a href="#threads" class="button threads" data-popup="threadselect-menu" title="<roundcube:label name="threads" />"><span class="inner"><roundcube:label name="threads" /></span></a>
|
||||
<roundcube:button name="optionsmenu" id="listmenulink" type="link" class="button settings"
|
||||
label="options" innerClass="inner" onclick="tasklist_options_menu()" />
|
||||
</div>
|
||||
<a class="button icon toolbar-menu-button" href="#list-menu"><span class="inner"><roundcube:label name="menu" /></span></a>
|
||||
</div>
|
||||
<roundcube:object name="plugin.searchform" id="searchform" wrapper="searchbar toolbar"
|
||||
label="tasksearchform" label-domain="tasklist" buttontitle="tasklist.findtasks" ariatag="h2" />
|
||||
<div class="pagenav pagenav-list toolbar" onclick="UI.switch_nav_list(this)">
|
||||
<a class="button icon expand"><span class="inner"></span></a>
|
||||
<span id="taskselector-name" class="pagenav-text"><roundcube:label name="tasklist.all" /></span>
|
||||
|
@ -63,13 +64,6 @@
|
|||
class="listing" role="listbox" data-list="tasklist"
|
||||
data-label-msg="listempty" data-label-ext="listusebutton" data-create-command="newtask" />
|
||||
</div>
|
||||
<div class="footer toolbar">
|
||||
<div id="listcontrols" class="listselectors">
|
||||
<a href="#threads" class="button threads" data-popup="threadselect-menu" title="<roundcube:label name="threads" />"><span class="inner"><roundcube:label name="threads" /></span></a>
|
||||
<roundcube:button name="optionsmenu" id="listmenulink" type="link" class="button settings"
|
||||
label="options" innerClass="inner" onclick="tasklist_options_menu()" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- task details frame -->
|
||||
|
@ -87,9 +81,14 @@
|
|||
class="button print disabled" classAct="button print"
|
||||
label="print" title="tasklist.printtitle" innerClass="inner" />
|
||||
<roundcube:button command="delete-task" type="link"
|
||||
label="delete" title="tasklist.removetask"
|
||||
label="delete" title="tasklist.deletetask"
|
||||
class="button delete disabled" classAct="button delete" innerclass="inner" />
|
||||
<span class="spacer"></span>
|
||||
<roundcube:if condition="config:kolab_bonnie_api" />
|
||||
<roundcube:button command="task-history" type="link"
|
||||
class="button history task-history disabled" classAct="button history task-history"
|
||||
label="tasklist.taskhistory" title="libkolab.showhistory" innerClass="inner" />
|
||||
<roundcube:endif />
|
||||
<roundcube:button command="import" type="link"
|
||||
class="button import disabled" classAct="button import"
|
||||
label="import" title="tasklist.importtasks" innerClass="inner" />
|
||||
|
@ -177,10 +176,6 @@
|
|||
class="btn btn-primary edit disabled" classAct="btn btn-primary edit" innerclass="inner" />
|
||||
<roundcube:button command="add-child-task" label="tasklist.addsubtask"
|
||||
class="create btn btn-secondary disabled" classAct="create btn btn-secondary" innerclass="inner" />
|
||||
<roundcube:if condition="config:kolab_bonnie_api" />
|
||||
<roundcube:button command="task-history" type="link" label="libkolab.showhistory"
|
||||
class="btn btn-secondary history task-history disabled" classAct="btn btn-secondary history task-history" />
|
||||
<roundcube:endif />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -259,6 +254,7 @@
|
|||
<div id="tasklistactions-menu" class="popupmenu">
|
||||
<h3 id="aria-label-tasklistoptions" class="voice"><roundcube:label name="tasklist.listactions" /></h3>
|
||||
<ul class="toolbarmenu listing" role="menu" aria-labelledby="aria-label-tasklistoptions">
|
||||
<roundcube:button type="link-menuitem" command="list-create" label="tasklist.createlist" class="create disabled" classAct="create active" />
|
||||
<roundcube:button type="link-menuitem" command="list-edit" label="edit" class="edit disabled" classAct="edit active" />
|
||||
<roundcube:button type="link-menuitem" command="list-delete" label="delete" class="delete disabled" classAct="delete active" />
|
||||
<roundcube:if condition="env:tasklist_driver == 'kolab'" />
|
||||
|
|
|
@ -201,6 +201,7 @@ function rcube_tasklist_ui(settings)
|
|||
rcmail.enable_command('list-showurl', me.tasklists[node.id] && !!me.tasklists[node.id].caldavurl);
|
||||
me.selected_list = node.id;
|
||||
rcmail.update_state({source: node.id});
|
||||
rcmail.triggerEvent('show-list', {title: me.tasklists[node.id].name});
|
||||
});
|
||||
tasklists_widget.addEventListener('subscribe', function(p) {
|
||||
var list;
|
||||
|
@ -920,8 +921,7 @@ function rcube_tasklist_ui(settings)
|
|||
// open jquery UI dialog
|
||||
this.import_dialog = rcmail.show_popup_dialog($dialog, rcmail.gettext('tasklist.importtasks'), buttons, {
|
||||
closeOnEscape: false,
|
||||
button_classes: ['import mainaction', 'cancel'],
|
||||
close: null // do not remove the $dialog element
|
||||
button_classes: ['import mainaction', 'cancel']
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -1014,8 +1014,7 @@ function rcube_tasklist_ui(settings)
|
|||
|
||||
// open jquery UI dialog
|
||||
rcmail.show_popup_dialog($dialog, rcmail.gettext('exporttitle', 'tasklist'), buttons, {
|
||||
button_classes: ['export mainaction', 'cancel'],
|
||||
close: null // do not remove the $dialog element
|
||||
button_classes: ['export mainaction', 'cancel']
|
||||
});
|
||||
};
|
||||
/*
|
||||
|
@ -1413,7 +1412,7 @@ function rcube_tasklist_ui(settings)
|
|||
// Elastic
|
||||
if (!$('.selected', rcmail.gui_objects.resultlist).length) {
|
||||
$('#taskedit').parents('.watermark').removeClass('formcontainer');
|
||||
rcmail.triggerEvent('show-list');
|
||||
rcmail.triggerEvent('show-list', {force: true});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue