fileviewer/js/FileviewerPlugin.js

105 lines
3.1 KiB
JavaScript

Ext.namespace('Zarafa.plugins.fileviewer');
/**
* @class Zarafa.plugins.fileviewer.FileviewerPlugin
* @extends Zarafa.core.Plugin
*/
Zarafa.plugins.fileviewer.FileviewerPlugin = Ext.extend(Zarafa.core.Plugin, {
/**
* This method is called by the parent and will initialize all insertion points
* and shared components.
*/
initPlugin: function () {
Zarafa.plugins.fileviewer.FileviewerPlugin.superclass.initPlugin.apply(this, arguments);
Zarafa.core.data.SharedComponentType.addProperty('fileviewer.viewpanel');
},
/**
* Fired when the user doubleclicked on a box
* @param {Zarafa.common.ui.BoxField} boxField Parent of the box
* @param {Zarafa.common.ui.Box} box The box that has been doubleclicked
* @param {Ext.data.Record} record The record that belongs to the box
*/
doOpen: function (record) {
var componentType = Zarafa.core.data.SharedComponentType['fileviewer.viewpanel'];
var config = {
modal : true,
autoResize: true
};
Zarafa.core.data.UIFactory.openLayerComponent(componentType, record, config);
},
/**
* Check if the given file is either a PDF file or a ODF file.
*
* @param path
* @returns {boolean}
* @private
*/
isSupportedDocument: function (path) {
return path.match(/^.*\.(pdf|od[tps])$/i) ? true : false;
},
/**
* Bid for the type of shared component and the given record.
* This will bid on a common.create or common.view for a
* record with a message class set to IPM or IPM.Note.
* @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;
switch (type) {
case Zarafa.core.data.SharedComponentType['fileviewer.viewpanel']:
bid = 1;
break;
case Zarafa.core.data.SharedComponentType['common.view']:
{
if (record instanceof Zarafa.core.data.IPMAttachmentRecord) {
var filename = record.get('name');
if (this.isSupportedDocument(filename)) {
bid = 2; // bit higher then the other plugins to make sure that this plugin is used
}
}
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.view']:
component = this;
break;
case Zarafa.core.data.SharedComponentType['fileviewer.viewpanel']:
component = Zarafa.plugins.fileviewer.ViewerPanel;
break;
}
return component;
}
});
Zarafa.onReady(function () {
container.registerPlugin(new Zarafa.core.PluginMetaData({
name : 'fileviewer',
displayName : _('PDF/ODF Preview Plugin'),
about : Zarafa.plugins.fileviewer.ABOUT,
pluginConstructor: Zarafa.plugins.fileviewer.FileviewerPlugin
}));
});