Commit d65e82d2 authored by Carsten Schoenert's avatar Carsten Schoenert

New upstream version 3.4.22+dfsg1

parent 38175e2e
......@@ -12,9 +12,8 @@ pipeline {
parallel {
stage('JS Lint') {
agent {
docker {
image 'node:9'
args '-u 0'
dockerfile {
label 'docker'
}
}
steps {
......
This diff is collapsed.
......@@ -382,6 +382,10 @@ td.x-grid3-hd-menu-open .x-grid3-hd-inner {
.icon_mail_oof {
background-position: sprite-position($iconsmap, icon_mail_oof, $offset-y: $padding-medium + 2, $offset-x: $padding-medium - 3);
}
.icon_rule_oof {
@extend .icon_oof;
background-position: sprite-position($iconsmap, icon_oof, $offset-y: $padding-medium - 2, $offset-x: $padding-medium - 3);
}
.icon_contact_user {
@extend .icon_contact_card;
background-position: sprite-position($iconsmap, icon_contact_card, $offset-y: $padding-medium + 2, $offset-x: $padding-medium - 2);
......
......@@ -22,7 +22,7 @@ Zarafa.ABOUT = ""
+ "GNU Affero General Public License for more details.</p>"
+ "<p>You should have received a copy of the GNU Affero General Public License "
+ "along with this program. If not, see <a href=\"http://www.gnu.org/licenses/\" target=\"_blank\">http://www.gnu.org/licenses/</a>.</p>"
+ "along with this program. If not, see <a href=\"https://www.gnu.org/licenses/\" target=\"_blank\">https://www.gnu.org/licenses/</a>.</p>"
+ "<hr />"
......@@ -30,7 +30,7 @@ Zarafa.ABOUT = ""
+ "<h1>Ext JS</h1>"
+ "<p>Copyright (C) Sencha, Inc. Ext JS is distributed under the terms of the GNU General Public License: <a href=\"http://www.gnu.org/copyleft/gpl.html\" target=\"_blank\">http://www.gnu.org/copyleft/gpl.html</a></p>"
+ "<p>Copyright (C) Sencha, Inc. Ext JS is distributed under the terms of the GNU General Public License: <a href=\"https://www.gnu.org/copyleft/gpl.html\" target=\"_blank\">https://www.gnu.org/copyleft/gpl.html</a></p>"
+ "<h1>Printer rendering</h1>"
......@@ -58,7 +58,7 @@ Zarafa.ABOUT = ""
+ "<h1>TinyMCE</h1>"
+ "<p>Copyright, Moxiecode Systems AB. Released under LGPL License: <a href=\"http://www.tinymce.com/license\" target=\"_blank\">http://www.tinymce.com/license</a></p>"
+ "<p>Copyright, Moxiecode Systems AB. Released under LGPL License: <a href=\"https://www.tinymce.com/license\" target=\"_blank\">https://www.tinymce.com/license</a></p>"
+ "<h1>TinyMCE PowerPaste</h1>"
......@@ -76,4 +76,4 @@ Zarafa.ABOUT = ""
+ "GNU Affero General Public License for more details.</p>"
+ "You should have received a copy of the GNU Affero General Public License "
+ "along with this program. If not, see <a href=\"http://www.gnu.org/licenses/\" target=\"_blank\">http://www.gnu.org/licenses/</a>.</p>";
+ "along with this program. If not, see <a href=\"https://www.gnu.org/licenses/\" target=\"_blank\">https://www.gnu.org/licenses/</a>.</p>";
......@@ -811,6 +811,9 @@ Ext.apply(Zarafa, {
this.startIdleTimeChecker(clientTimeout);
}
// Starts shared stores unread email poller.
this.startSharedStoresHierarchyChecker();
// Check if the Wingdings font is installed
this.wingdingsInstalled = window.checkfont.exists('Wingdings');
},
......@@ -884,6 +887,27 @@ Ext.apply(Zarafa, {
}]).defer(interval); //Start sending keepalives after interval milliseconds.
},
/**
* Start the Shared Stores unread mail poller, fetches the hierarchy
* once to fill the server side cache.
* @private
*/
startSharedStoresHierarchyChecker: function()
{
const interval = container.getServerConfig().getSharedStorePollingInterval();
if (!Ext.isNumber(interval)) {
return;
}
// Fetch shared stores state on login.
container.getHierarchyStore().sendSharedStoreHierarchyUpdate();
setInterval(function() {
container.getHierarchyStore().sendSharedStoreHierarchyUpdate();
}, interval);
},
/**
* init UI by lazily constructing the main panel (implicit in container.getMainPanel) and
* setting the default context to visible. Note that during onHierarchyLoad we will also
......
......@@ -126,6 +126,9 @@ Zarafa.advancesearch.AdvanceSearchStore = Ext.extend(Zarafa.core.data.ListModule
var searchDate = '';
switch (record.get('message_class')){
case 'IPM.Note':
case 'IPM.Note.SMIME.MultipartSigned':
case 'IPM.Note.SMIME.SignedEncrypt':
case 'IPM.Note.SMIME':
searchDate = record.get('message_delivery_time') || record.get('last_modification_time');
break;
case 'IPM.Task':
......
......@@ -97,7 +97,6 @@ Zarafa.advancesearch.ui.SearchGridRenderers = {
value = _('To') + ': ' + value;
}
}
var userName = Ext.util.Format.htmlEncode(value);
return Zarafa.common.ui.grid.Renderers.presenceStatus(userName, p, userRecord);
},
......
......@@ -535,7 +535,7 @@ Zarafa.calendar.CalendarContext = Ext.extend(Zarafa.core.Context, {
return {
xtype: 'menuitem',
id: 'zarafa-maintoolbar-newitem-appointment',
tooltip : _('Appointment')+' (Ctrl + Alt + A)',
tooltip: _('Appointment') + ' (Ctrl + Alt + A)',
plugins : 'zarafa.menuitemtooltipplugin',
text: _('Appointment'),
handler: function()
......
......@@ -1124,6 +1124,12 @@ Zarafa.calendar.dialogs.AppointmentTab = Ext.extend(Ext.form.FormPanel, {
return;
}
// Workaround for KC-1270, backend should not return
// folders with inaccessible parent folder.
if (!dataItem.getParentFolder()) {
return;
}
var displayString = dataItem.get('display_name');
var mapiStore = dataItem.getParentFolder().getMAPIStore();
......@@ -1186,6 +1192,24 @@ Zarafa.calendar.dialogs.AppointmentTab = Ext.extend(Ext.form.FormPanel, {
createInStore.add(readerData.records);
createInStore.applySort();
combo.view.bindStore(createInStore);
// Add tool-tip
this.addToolTip(combo);
},
/**
* Helper function which add tool-tip only if text-overflowed.
* @param {Ext.form.ComboBox} combo The combobox which was selected
* @private
*/
addToolTip : function(combo){
var children = combo.innerList.dom.children;
for (var i = 0; i < children.length; i++) {
// check if text gets overflowed or not
if (children[i].offsetWidth < children[i].scrollWidth) {
children[i].setAttribute('ext:qtip', children[i].textContent);
}
}
},
/**
......
......@@ -54,12 +54,9 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
xtype : 'zarafa.meetingrequestbuttons'
},{
xtype: 'button',
overflowText: _('Send invitation'),
overflowText: _('Send'),
text: _('Send'),
tooltip: {
title: _('Send invitation'),
text: _('Send invitation to recipients') + ' (Ctrl + ENTER)'
},
tooltip: _('Send') + ' (Ctrl + Enter)',
iconCls : 'buttons-icon_send_white',
cls: 'button_sendMail zarafa-action',
ref: 'sendInvitation',
......@@ -67,12 +64,9 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
scope: this
},{
xtype: 'button',
text : _('Save'),
overflowText: _('Save & Close'),
tooltip: {
title: _('Save & Close'),
text: _('Save appointment and close dialog') + ' (Ctrl + S)'
},
text : _('Save')+' & '+_('Close'),
overflowText: _('Save')+' & '+_('Close'),
tooltip: _('Save')+' & '+_('Close') + ' (Ctrl + S)',
cls : 'zarafa-action',
iconCls : 'buttons-icon_save_white',
ref : 'saveAppointment',
......@@ -81,38 +75,29 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
},{
xtype: 'button',
overflowText: _('Save'),
tooltip: {
title: _('Save'),
text: _('Save without sending an invitation to recipients') + ' (Ctrl + S)'
},
tooltip: _('Save') + ' (Ctrl + S)',
cls: 'tb-calendar-btn-save',
iconCls: 'icon_saveEmail',
ref : 'saveMeeting',
handler: this.onSaveButton,
scope: this
},{
xtype : 'button',
xtype: 'button',
overflowText: _('Delete'),
tooltip: {
title: _('Delete'),
text: _('Delete this appointment')
},
tooltip: _('Delete'),
cls: 'tb-calendar-btn-delete',
iconCls : 'icon_delete',
iconCls: 'icon_delete',
ref: 'deleteAppointment',
handler : this.onDeleteButton,
scope : this
handler: this.onDeleteButton,
scope: this
},{
xtype: 'zarafa.attachmentbutton',
plugins : [ 'zarafa.recordcomponentupdaterplugin' ],
ref : 'normalAttachmentsButton', // FIXME: Remove after WA-4880 is implemented
ref: 'normalAttachmentsButton', // FIXME: Remove after WA-4880 is implemented
overflowText: _('Add attachment'),
tooltip: {
title: _('Add attachment'),
text: _('Add attachments to this appointment')
},
tooltip: _('Add attachment'),
cls: 'tb-calendar-btn-add-attachment',
iconCls : 'icon_attachment',
iconCls: 'icon_attachment',
// Add a listener to the component added event to set use the correct update function when the toolbar overflows
// (i.e. is too wide for the panel) and Ext moves the button to a menuitem.
listeners : {
......@@ -121,32 +106,19 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
}
},{
// FIXME: Remove after WA-4880 is implemented
xtype : 'button',
ref : 'occurenceAttachmentsButton',
overflowText : _('Cannot add attachment'),
tooltip : {
title : _('Cannot add attachment'),
text : _('Attachments cannot be modified for a single occurence')
},
xtype: 'button',
disabled: true,
ref: 'occurenceAttachmentsButton',
overflowText: _('Add attachment'),
tooltip: _('Attachments cannot be modified for a single occurence'),
cls: 'tb-calendar-btn-occurence-attachment',
iconCls : 'icon_attachment',
handler : function() {
Ext.MessageBox.show({
title : _('Warning'),
msg : _('Attachments cannot be modified for a single occurence'),
buttons : Ext.Msg.OK,
icon : Ext.MessageBox.WARNING
});
}
iconCls: 'icon_attachment'
},{
xtype: 'button',
overflowText: _('Print'),
tooltip: {
title: _('Print'),
text: _('Print this appointment')
},
tooltip: _('Print'),
cls: 'tb-calendar-btn-print',
iconCls : 'icon_print',
iconCls: 'icon_print',
handler: function() {
Zarafa.common.Actions.openPrintDialog(this.record);
},
......@@ -154,10 +126,7 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
},{
xtype: 'button',
overflowText: _('Check names'),
tooltip: {
title: _('Check names'),
text: _('Check all recipient names')
},
tooltip: _('Check names'),
cls: 'tb-calendar-btn-checknames',
iconCls: 'icon_checkNames',
ref: 'checkNames',
......@@ -197,23 +166,15 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
xtype: 'button',
text: _('Recurrence'),
overflowText: _('Recurrence'),
tooltip: {
title: _('Recurrence'),
text: _('Open the recurrence dialog')
},
cls: 'tb-calendar-btn-recurrence',
iconCls: 'icon_recurrence',
ref: 'recurrence',
handler : this.onSetRecurrence,
handler: this.onSetRecurrence,
scope: this
},{
xtype: 'button',
text: _('Invite attendees'),
overflowText: _('Invite attendees'),
tooltip: {
title: _('Invite attendees'),
text: _('Invite attendees for this appointment')
},
cls: 'tb-calendar-btn-ivite-attendees',
iconCls: 'icon_invite_attendees',
ref: 'inviteAttendees',
......@@ -222,10 +183,6 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
},{
xtype: 'button',
text: _('Cancel invitation'),
tooltip: {
title: _('Cancel invitation'),
text: _('Convert this meeting request to an appointment by removing attendees')
},
overflowText: _('Cancel invitation'),
cls: 'tb-calendar-btn-cancel',
iconCls: 'icon_cancel_meeting_request',
......@@ -235,10 +192,7 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
},{
xtype: 'button',
overflowText: _('High priority'),
tooltip: {
title: _('High priority'),
text: _('Mark this appointment as high priority')
},
tooltip: _('Mark this appointment as high priority'),
cls: 'tb-calendar-btn-high-priority',
iconCls: 'icon_setHighPriority',
ref: 'highPriority',
......@@ -250,10 +204,7 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
},{
xtype: 'button',
overflowText: _('Low priority'),
tooltip: {
title: _('Low priority'),
text: _('Mark this appointment as low priority')
},
tooltip: _('Mark this appointment as low priority'),
cls: 'tb-calendar-btn-low-priority',
iconCls: 'icon_setLowPriority',
ref: 'lowPriority',
......@@ -265,10 +216,7 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
},{
xtype: 'button',
overflowText: _('Categories'),
tooltip: {
title: _('Categories'),
text: _('Open the categories dialog')
},
tooltip: _('Open the categories dialog'),
cls: 'tb-calendar-btn-categories',
iconCls: 'icon_categories',
handler: this.onCategories,
......@@ -276,10 +224,7 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
},{
xtype: 'button',
overflowText: _('Private'),
tooltip: {
title: _('Private'),
text: _('Mark this appointment as private')
},
tooltip: _('Mark this appointment as private'),
cls: 'tb-calendar-btn-private',
iconCls: 'icon_private',
ref: 'setPrivate',
......@@ -434,13 +379,8 @@ Zarafa.calendar.dialogs.AppointmentToolbar = Ext.extend(Zarafa.core.ui.ContentPa
onSaveButtonBeforeShow : function(button)
{
if(this.record.isMeetingReceived()) {
var tooltip = {
title: _('Save & Close'),
text: _('Save meeting request and close dialog') + ' (Ctrl + S)'
};
button.setTooltip(tooltip);
button.setTooltip(_('Save') + ' (Ctrl + S)');
}
},
/**
......
......@@ -16,21 +16,21 @@ Zarafa.calendar.dialogs.SendMeetingRequestConfirmationPanel = Ext.extend(Ext.for
* @property
* @type String
*/
acceptInfoString : _('This meeting has been accepted and will be moved to your Calendar. Do you want to include comments with your response?'),
acceptInfoString : _('This meeting will be accepted and moved to your calendar. Do you want to include comments with your response?'),
/**
* Info string that will be shown for attendee that is going to tentatively accept meeting request.
* @property
* @type String
*/
tentativeAcceptInfoString : _('This meeting has been tentatively accepted and will be moved to your Calendar. Do you want to include comments with your response?'),
tentativeAcceptInfoString : _('This meeting will be tentatively accepted and moved to your calendar. Do you want to include comments with your response?'),
/**
* Info string that will be shown for attendee that is going to decline meeting request.
* @property
* @type String
*/
declineInfoString : _('This meeting has been declined and will be moved to the Deleted Items folder. Do you want to include comments with your response?'),
declineInfoString : _('This meeting will be declined and moved to your Deleted Items folder. Do you want to include comments with your response?'),
/**
* @constructor
......@@ -56,7 +56,7 @@ Zarafa.calendar.dialogs.SendMeetingRequestConfirmationPanel = Ext.extend(Ext.for
style: 'padding-bottom: 10px;'
},{
xtype:'radio',
boxLabel: _('Edit the response before Sending.'),
boxLabel: _('Edit the response before sending'),
name: 'sendmrconfirmation',
autoHeight: true,
listeners : {
......
......@@ -1022,7 +1022,7 @@ Zarafa.calendar.ui.CalendarPanel = Ext.extend(Ext.Panel, {
*/
createRecordCopy: function (copiedRecord)
{
var record = this.model.createRecord(undefined, this.getNewDateRange(copiedRecord));
var record = this.model.createRecord(undefined, undefined, this.getNewDateRange(copiedRecord));
var remainder = copiedRecord.get('reminder');
// Outlook add's this 0x00000008 and 0x00000080 flags along with auxApptFlagCopied in
......@@ -1031,7 +1031,7 @@ Zarafa.calendar.ui.CalendarPanel = Ext.extend(Ext.Panel, {
// between original and copied appointment/meeting record in calender.
var auxiliaryFlags = Zarafa.core.mapi.AppointmentAuxiliaryFlags.auxApptFlagCopied | 0x00000008 | 0x00000080;
Ext.apply(record.data, {
'subject' : !copiedRecord.isCopied() ? _('Copy')+":"+copiedRecord.get('subject') : copiedRecord.get('subject'),
'subject' : !copiedRecord.isCopied() ? _('Copy')+": "+copiedRecord.get('subject') : copiedRecord.get('subject'),
'body' : copiedRecord.get('body'),
'location' : copiedRecord.get('location'),
'importance' : copiedRecord.get('importance'),
......
......@@ -29,6 +29,13 @@ Zarafa.common.Actions = {
*/
totalFiles : undefined,
/**
* Defines if the imported item should be shown after import.
* @property
* @type Boolean
*/
showImported : false,
/**
* Open a {@link Zarafa.common.dialogs.CopyMoveContentPanel CopyMoveContentPanel} for
* copying or moving {@link Zarafa.core.data.IPMRecord records} to the
......@@ -1178,11 +1185,13 @@ Zarafa.common.Actions = {
*
* @param {Object/Array} files The files is contains file information.
* @param {Zarafa.hierarchy.data.MAPIFolderRecord} folder folder to which files needs to be imported.
* @param {Boolean} show Open the imported item
*/
importEmlCallback : function(files, folder)
importEmlCallback : function(files, folder, show)
{
this.brokenFiles = [];
this.totalFiles = files.length;
this.showImported = show === true;
this.readFiles(files, folder);
},
......@@ -1195,10 +1204,23 @@ Zarafa.common.Actions = {
importDone : function(response, folder)
{
if (response.success === true) {
if ( this.showImported !== true ) {
container.getNotifier().notify('info.import', _('Import'), String.format(_('Successfully imported item(s) to {0}'), folder.get('display_name')));
}
} else {
container.getNotifier().notify('info.import', _('Import'), String.format(_('Failed to import item(s) to {0}'), folder.get('display_name')));
}
if ( this.showImported === true && Ext.isDefined(response.items)) {
var record = Zarafa.core.data.RecordFactory.createRecordObjectByMessageClass('IPM.Note', {
'entryid' : response.items,
'parent_entryid' : folder.get('entryid'),
'store_entryid' : folder.get('store_entryid')
});
record.opened = false;
Zarafa.core.data.UIFactory.openViewRecord(record);
}
},
/**
......
......@@ -32,6 +32,7 @@ Zarafa.common.reminder.dialogs.ReminderContentPanel = Ext.extend(Zarafa.core.ui.
minWidth: 350,
maxWidth: 350,
height: 300,
forceFullyOpenInMainWindow: true,
items : [{
xtype : 'zarafa.reminderpanel',
store: config.store
......
......@@ -74,6 +74,13 @@ Zarafa.common.rules.dialogs.RulesEditPanel = Ext.extend(Ext.form.FormPanel, {
}, {
xtype : 'spacer',
height : 15
}, {
xtype : 'checkbox',
ref : 'onlyIfOOFCheckbox',
hidden : this.hideCheckBox(),
boxLabel : _('Apply only when Out of Office is active'),
handler : this.onToggleIfOOF,
scope : this
}, {
xtype : 'checkbox',
ref : 'stopProcessingCheckbox',
......@@ -94,6 +101,16 @@ Zarafa.common.rules.dialogs.RulesEditPanel = Ext.extend(Ext.form.FormPanel, {
this.record.set(field.name, value);
},
/**
* Function will hide the "Apply only when..." check box when
* ZCP version is less than 5.6.
*/
hideCheckBox : function(){
var version = container.getVersion();
var mapiVersion = version.getZCP();
return version.versionCompare(mapiVersion, '5.6') === -1 ? true : false;
},
/**
* Function will be called when user toggles state of checkbox to indicate that
* this will be last rule to be executed after that no rules should be executed.
......@@ -114,6 +131,25 @@ Zarafa.common.rules.dialogs.RulesEditPanel = Ext.extend(Ext.form.FormPanel, {
this.record.set('rule_state', state);
},
/**
* Function will be called when user toggles "Apply only when Out of Office.." of checkbox
* to indicate that this will be the rule to be executed only when user is out of office.
*
* @param {Ext.form.Checkbox} checkbox The Checkbox being toggled.
* @param {Boolean} checked The new checked state of the checkbox.
* @private
*/
onToggleIfOOF : function(checkbox, checked)
{
var state = this.record.get('rule_state');
if (checked) {
state |= Zarafa.core.mapi.RuleStates.ST_ONLY_WHEN_OOF;
} else {
state &= ~Zarafa.core.mapi.RuleStates.ST_ONLY_WHEN_OOF;
}
this.record.set('rule_state', state);
},
/**
* Updates the panel by loading data from the record into the form panel.
* @param {Zarafa.rules.delegates.data.RulesRecord} record The record update the panel with.
......@@ -129,6 +165,7 @@ Zarafa.common.rules.dialogs.RulesEditPanel = Ext.extend(Ext.form.FormPanel, {
var state = record.get('rule_state');
this.stopProcessingCheckbox.setValue((state & RuleStates.ST_EXIT_LEVEL) === RuleStates.ST_EXIT_LEVEL);
this.onlyIfOOFCheckbox.setValue((state & RuleStates.ST_ONLY_WHEN_OOF) === RuleStates.ST_ONLY_WHEN_OOF);
},
/**
......@@ -148,6 +185,13 @@ Zarafa.common.rules.dialogs.RulesEditPanel = Ext.extend(Ext.form.FormPanel, {
} else {
state &= ~Zarafa.core.mapi.RuleStates.ST_EXIT_LEVEL;
}
if (this.onlyIfOOFCheckbox.getValue()) {
state |= Zarafa.core.mapi.RuleStates.ST_ONLY_WHEN_OOF;
} else {
state &= ~Zarafa.core.mapi.RuleStates.ST_ONLY_WHEN_OOF;
}
this.record.set('rule_state', state);
record.endEdit();
......
......@@ -116,6 +116,13 @@ Zarafa.common.rules.ui.RulesGrid = Ext.extend(Zarafa.common.ui.grid.GridPanel, {
// override processEvent so we can save the change in the record
processEvent : this.onRuleStateColumnProcessEvent.createDelegate(this)
}, {
dataIndex : 'rule_state',
header : _('Out of office'),
sortable : false,
fixed : true,
width : 100,
renderer : this.ruleOutOfOfficeStateRenderer
},{
dataIndex : 'rule_name',
header : _('Rule'),
sortable : false,
......@@ -123,6 +130,26 @@ Zarafa.common.rules.ui.RulesGrid = Ext.extend(Zarafa.common.ui.grid.GridPanel, {
}];
},
/**
* Render the cell as Rule state, setting an Out of office icon in
* out of office column to indicate that rule is active when
* user is out of office rule state.
*
* @param {Object} value The data value for the cell.
* @param {Object} p An object with metadata
* @param {Ext.data.record} record The {Ext.data.Record} from which the data was extracted.
*/
ruleOutOfOfficeStateRenderer : function(value, p, record)
{
var stateOnlyWhenOOF = value & Zarafa.core.mapi.RuleStates.ST_ONLY_WHEN_OOF;
if (stateOnlyWhenOOF === Zarafa.core.mapi.RuleStates.ST_ONLY_WHEN_OOF) {
p.css += ' icon_rule_oof';
}
return '';
},
/**
* Render the cell as Rule state checkbox, function will call {@link Ext.ux.grid.CheckColumn#renderer CheckColumn#renderer}
* after setting boolean value for rule state.
......
......@@ -76,7 +76,7 @@ Zarafa.common.ui.ContextMainPanelToolbar = Ext.extend(Ext.Toolbar, {
},{
xtype: 'zarafa.toolbarbutton',
overflowText: _('Delete'),
tooltip: _('Delete') + ' (DELETE)',
tooltip: _('Delete'),
ref : 'deleteButton',
iconCls: 'icon_delete',
nonEmptySelectOnly: true,
......
......@@ -41,7 +41,7 @@ Zarafa.common.ui.PreviewPanelToolbarButtons = Ext.extend(Object, {
var toolbarButtons = [];
toolbarButtons = [{
xtype: 'zarafa.toolbarbutton',
tooltip: _('Delete') + ' (DELETE)',
tooltip: _('Delete'),
overflowText: _('Delete'),
iconCls: 'icon_delete',
nonEmptySelectOnly: true,
......@@ -66,8 +66,8 @@ Zarafa.common.ui.PreviewPanelToolbarButtons = Ext.extend(Object, {
if (Zarafa.supportsPopOut()) {
toolbarButtons.push({