Ext.namespace('Zarafa.common');
/**
* @class Zarafa.common.CommonContext
* @extends Zarafa.core.Context
*/
Zarafa.common.CommonContext = Ext.extend(Zarafa.core.Context, {
/**
* @constructor
* @param config
*/
constructor : function(config)
{
config = config || {};
Ext.applyIf(config, {
hasToolbar : false,
hasContentPanel : false
});
Zarafa.common.CommonContext.superclass.constructor.call(this, config);
// Register categories for the settings
this.registerInsertionPoint('context.settings.categories', this.createDelegateSettingsCategory, this);
this.registerInsertionPoint('context.settings.categories', this.createSendAsSettingsCategory, this);
this.registerInsertionPoint('context.settings.categories', this.createRuleSettingsCategory, this);
// Register common specific dialog types
Zarafa.core.data.SharedComponentType.addProperty('common.dialog.copymoverecords');
Zarafa.core.data.SharedComponentType.addProperty('common.dialog.recurrence');
Zarafa.core.data.SharedComponentType.addProperty('common.dialog.categories');
Zarafa.core.data.SharedComponentType.addProperty('common.dialog.widgets');
Zarafa.core.data.SharedComponentType.addProperty('common.dialog.checknames');
Zarafa.core.data.SharedComponentType.addProperty('common.dialog.restoreitems');
Zarafa.core.data.SharedComponentType.addProperty('common.dialog.reminder');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.previewpanel.extrainfo');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.importance');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.category');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.categories');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.freebusy');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.freebusy.timelinebody');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.freebusy.timelineheader');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.reminder.remindergrid');
Zarafa.core.data.SharedComponentType.addProperty('common.contextmenu.flags');
Zarafa.core.data.SharedComponentType.addProperty('common.printer.renderer');
Zarafa.core.data.SharedComponentType.addProperty('common.rules.dialog.ruleswordsedit');
Zarafa.core.data.SharedComponentType.addProperty('common.attachment.dialog.attachitem');
Zarafa.core.data.SharedComponentType.addProperty('common.attachment.dialog.mixattachitem');
Zarafa.core.data.SharedComponentType.addProperty('common.attachment.dialog.attachitem.columnmodel');
Zarafa.core.data.SharedComponentType.addProperty('common.attachment.dialog.attachitem.textrenderer');
Zarafa.core.data.SharedComponentType.addProperty('common.attachment.dialog.importtofolder');
Zarafa.core.data.SharedComponentType.addProperty('common.sendas.dialog.sendaseditcontentpanel');
Zarafa.core.data.SharedComponentType.addProperty('common.categories.dialogs.newcategory');
Zarafa.core.data.SharedComponentType.addProperty('common.categories.dialogs.renamecategory');
Zarafa.core.data.SharedComponentType.addProperty('common.flags.dialogs.customflag');
},
/**
* Bid for the type of shared component and the given record.
* @param {Zarafa.core.data.SharedComponentType} type Type of component a context can bid for.
* @param {Ext.data.Record} record Optionally passed record.
* @return {Number} The bid for the shared component
*/
bidSharedComponent: function(type, record)
{
var bid = -1;
if (Array.isArray(record)) {
record = record[0];
}
switch (type) {
// Bid for common dialogs
case Zarafa.core.data.SharedComponentType['common.dialog.copymoverecords']:
case Zarafa.core.data.SharedComponentType['common.dialog.recurrence']:
case Zarafa.core.data.SharedComponentType['common.dialog.categories']:
case Zarafa.core.data.SharedComponentType['common.attachment.dialog.attachitem']:
case Zarafa.core.data.SharedComponentType['common.attachment.dialog.mixattachitem']:
case Zarafa.core.data.SharedComponentType['common.attachment.dialog.importtofolder']:
case Zarafa.core.data.SharedComponentType['common.dialog.widgets']:
case Zarafa.core.data.SharedComponentType['common.dialog.checknames']:
case Zarafa.core.data.SharedComponentType['common.dialog.restoreitems']:
case Zarafa.core.data.SharedComponentType['common.dialog.reminder']:
case Zarafa.core.data.SharedComponentType['common.contextmenu.previewpanel.extrainfo']:
case Zarafa.core.data.SharedComponentType['common.contextmenu.freebusy.timelinebody']:
case Zarafa.core.data.SharedComponentType['common.contextmenu.freebusy.timelineheader']:
case Zarafa.core.data.SharedComponentType['common.contextmenu.importance']:
case Zarafa.core.data.SharedComponentType['common.contextmenu.category']:
case Zarafa.core.data.SharedComponentType['common.contextmenu.flags']:
case Zarafa.core.data.SharedComponentType['common.contextmenu.categories']:
case Zarafa.core.data.SharedComponentType['common.contextmenu.reminder.remindergrid']:
case Zarafa.core.data.SharedComponentType['common.rules.dialog.ruleswordsedit']:
case Zarafa.core.data.SharedComponentType['common.sendas.dialog.sendaseditcontentpanel']:
case Zarafa.core.data.SharedComponentType['common.categories.dialogs.newcategory']:
case Zarafa.core.data.SharedComponentType['common.categories.dialogs.renamecategory']:
case Zarafa.core.data.SharedComponentType['common.flags.dialogs.customflag']:
bid = 1;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.freebusy']:
if (record instanceof Zarafa.core.data.IPMRecipientRecord) {
bid = 1;
}
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu']:
if (record instanceof Zarafa.core.data.IPMRecipientRecord || record instanceof Zarafa.core.data.IPMAttachmentRecord) {
bid = 1;
}
break;
case Zarafa.core.data.SharedComponentType['common.create']:
if (record instanceof Zarafa.core.data.IPMRecipientRecord) {
bid = 1;
} else if(record instanceof Zarafa.common.delegates.data.DelegateRecord) {
bid = 1;
} else if(record instanceof Zarafa.common.rules.data.RulesRecord) {
bid = 1;
}
break;
case Zarafa.core.data.SharedComponentType['common.view']:
if (record instanceof Zarafa.core.data.IPMRecipientRecord) {
bid = 1;
} else if(record instanceof Zarafa.core.data.IPMAttachmentRecord) {
bid = 0;
}
break;
}
return bid;
},
/**
* Will return the reference to the shared component.
* Based on the type of component requested a component is returned.
* @param {Zarafa.core.data.SharedComponentType} type Type of component a context can bid for.
* @param {Ext.data.Record} record Optionally passed record.
* @return {Ext.Component} Component
*/
getSharedComponent: function(type, record)
{
var component;
switch (type) {
case Zarafa.core.data.SharedComponentType['common.dialog.copymoverecords']:
component = Zarafa.common.dialogs.CopyMoveContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.dialog.recurrence']:
component = Zarafa.common.recurrence.dialogs.RecurrenceContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.dialog.categories']:
component = Zarafa.common.categories.dialogs.CategoriesContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.attachment.dialog.attachitem']:
component = Zarafa.common.attachment.dialogs.AttachItemContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.attachment.dialog.mixattachitem']:
component = Zarafa.common.attachment.dialogs.MixAttachItemContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.attachment.dialog.importtofolder']:
component = Zarafa.common.attachment.dialogs.ImportToFolderContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.dialog.widgets']:
component = Zarafa.core.ui.widget.WidgetContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.dialog.checknames']:
component = Zarafa.common.checknames.dialogs.CheckNamesContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.dialog.restoreitems']:
component = Zarafa.common.restoreitem.dialogs.RestoreItemContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.dialog.reminder']:
component = Zarafa.common.reminder.dialogs.ReminderContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.rules.dialog.ruleswordsedit']:
component = Zarafa.common.rules.dialogs.RulesWordsEditContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.sendas.dialog.sendaseditcontentpanel']:
component = Zarafa.common.sendas.dialogs.SendAsEditContentPanel;
break;
case Zarafa.core.data.SharedComponentType['common.create']:
if (record instanceof Zarafa.core.data.IPMRecipientRecord) {
component = Zarafa.common.recipientfield.ui.EditRecipientContentPanel;
} else if(record instanceof Zarafa.common.delegates.data.DelegateRecord) {
component = Zarafa.common.delegates.dialogs.DelegatePermissionContentPanel;
} else if(record instanceof Zarafa.common.rules.data.RulesRecord) {
component = Zarafa.common.rules.dialogs.RulesEditContentPanel;
}
break;
case Zarafa.core.data.SharedComponentType['common.view']:
if (record instanceof Zarafa.core.data.IPMRecipientRecord) {
component = Zarafa.common.recipientfield.ui.ViewRecipientContentPanel;
} else if (record instanceof Zarafa.core.data.IPMAttachmentRecord){
component = this;
}
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.previewpanel.extrainfo']:
component = Zarafa.common.ui.messagepanel.ExtraInfoContextMenu;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.freebusy']:
component = Zarafa.common.freebusy.ui.FreebusyContextMenu;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.freebusy.timelinebody']:
component = Zarafa.common.freebusy.ui.FreebusyTimelineBodyContextMenu;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.freebusy.timelineheader']:
component = Zarafa.common.freebusy.ui.FreebusyTimelineHeaderContextMenu;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu']:
if (record instanceof Zarafa.core.data.IPMRecipientRecord) {
component = Zarafa.common.recipientfield.ui.RecipientContextMenu;
}
else if (record instanceof Zarafa.core.data.IPMAttachmentRecord){
component = Zarafa.common.attachment.ui.AttachmentContextMenu;
}
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.importance']:
component = Zarafa.common.ui.ImportanceMenu;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.category']:
component = Zarafa.common.categories.ui.CategoryContextMenu;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.categories']:
component = Zarafa.common.categories.ui.CategoriesContextMenu;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.reminder.remindergrid']:
component = Zarafa.common.reminder.dialogs.ReminderGridContextMenu;
break;
case Zarafa.core.data.SharedComponentType['common.contextmenu.flags']:
component = Zarafa.common.flags.ui.FlagsMenu;
break;
case Zarafa.core.data.SharedComponentType['common.categories.dialogs.newcategory']:
component = Zarafa.common.categories.dialogs.NewCategoryPanel;
break;
case Zarafa.core.data.SharedComponentType['common.categories.dialogs.renamecategory']:
component = Zarafa.common.categories.dialogs.RenameCategoryPanel;
break;
case Zarafa.core.data.SharedComponentType['common.flags.dialogs.customflag']:
component = Zarafa.common.flags.dialogs.CustomFlagContentPanel;
break;
}
return component;
},
/**
* Default doOpen that will be called if no other context wins the bid
*
* @param {Zarafa.core.data.IPMAttachmentRecord} records The record to be opened
*/
doOpen: function(record)
{
Zarafa.common.Actions.downloadAttachment(record);
},
/**
* Create the delegate {@link Zarafa.settings.ui.SettingsCategory Settings Category}
* to the {@link Zarafa.settings.SettingsContext}. This will create new
* {@link Zarafa.settings.ui.SettingsCategoryTab tabs} for the
* {@link Zarafa.calendar.ui.SettingsDelegatesCategory Delegate}
* in the {@link Zarafa.settings.ui.SettingsCategoryWidgetPanel Widget Panel}.
* @param {String} insertionName insertion point name that is currently populated
* @param {Zarafa.settings.ui.SettingsMainPanel} settingsMainPanel settings main panel
* which is populating this insertion point
* @param {Zarafa.settings.SettingsContext} settingsContext settings context
* @return {Array} configuration object for the categories to register
* @private
*/
createDelegateSettingsCategory : function(insertionName, settingsMainPanel, settingsContext)
{
return {
xtype : 'zarafa.settingsdelegatecategory',
settingsContext : settingsContext
};
},
/**
* Create the send as {@link Zarafa.settings.ui.SettingsCategory Settings Category}
* to the {@link Zarafa.settings.SettingsContext}. This will create new
* {@link Zarafa.settings.ui.SettingsCategoryTab tabs} for the
* {@link Zarafa.calendar.ui.SettingsSendAsCategory SendAs}
* in the {@link Zarafa.settings.ui.SettingsCategoryWidgetPanel Widget Panel}.
* @param {String} insertionName insertion point name that is currently populated
* @param {Zarafa.settings.ui.SettingsMainPanel} settingsMainPanel settings main panel
* which is populating this insertion point
* @param {Zarafa.settings.SettingsContext} settingsContext settings context
* @return {Array} configuration object for the categories to register
* @private
*/
createSendAsSettingsCategory : function(insertionName, settingsMainPanel, settingsContext)
{
return {
xtype : 'zarafa.settingssendascategory',
settingsContext : settingsContext
};
},
/**
* Create the Rule {@link Zarafa.settings.ui.SettingsCategory Settings Category}
* to the {@link Zarafa.settings.SettingsContext}. This will create new
* {@link Zarafa.settings.ui.SettingsCategoryTab tabs} for the
* {@link Zarafa.calendar.ui.SettingsRuleCategory Rules}
* in the {@link Zarafa.settings.ui.SettingsCategoryWidgetPanel Widget Panel}.
* @param {String} insertionName insertion point name that is currently populated
* @param {Zarafa.settings.ui.SettingsMainPanel} settingsMainPanel settings main panel
* which is populating this insertion point
* @param {Zarafa.settings.SettingsContext} settingsContext settings context
* @return {Array} configuration object for the categories to register
* @private
*/
createRuleSettingsCategory : function(insertionName, settingsMainPanel, settingsContext)
{
return {
xtype : 'zarafa.settingsrulecategory',
settingsContext : settingsContext
};
}
});
Zarafa.onReady(function() {
container.registerContext(new Zarafa.core.ContextMetaData({
name : 'default',
allowUserVisible : false,
pluginConstructor : Zarafa.common.CommonContext
}));
});