1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
Ext.namespace('Zarafa.plugins.files.ui');
Zarafa.plugins.files.ui.FilesRecordAccountView = Ext.extend(Ext.DataView, {
/**
* @cfg {Zarafa.plugins.files.FilesContext} context The context to which this context menu belongs.
*/
context : undefined,
/**
* The {@link Zarafa.plugins.files.FilesContextModel} which is obtained from the {@link #context}.
* @property
* @type Zarafa.plugins.files.FilesContextModel
*/
model: undefined,
constructor: function (config) {
config = config || {};
if (!Ext.isDefined(config.model) && Ext.isDefined(config.context)) {
config.model = config.context.getModel();
}
if (!Ext.isDefined(config.store) && Ext.isDefined(config.model)) {
config.store = config.model.getStore();
}
config.store = Ext.StoreMgr.lookup(config.store);
Ext.applyIf(config, {
xtype: 'filesplugin.filesrecordaccountview',
cls : 'zarafa-files-accountview',
loadingText : dgettext('plugin_files', 'Loading accounts') + '...',
deferEmptyText: false,
autoScroll : true,
emptyText : '<div class="emptytext">' + dgettext('plugin_files', 'There are no accounts added. Go to settings and add an account!') + '</div>',
overClass : 'zarafa-files-accountview-over',
tpl : this.initTemplate(config.context),
multiSelect : true,
selectedClass : 'zarafa-files-accountview-selected',
itemSelector : 'div.zarafa-files-accountview-container'
});
Zarafa.plugins.files.ui.FilesRecordAccountView.superclass.constructor.call(this, config);
this.initEvents();
},
initTemplate: function (context) {
// Load the account store
return new Ext.XTemplate(
'<div style="height: 100%; width: 100%; overflow: auto;">',
'<tpl for=".">',
'<div class="zarafa-files-accountview-container">',
'<div class="zarafa-files-account-background {.:this.getAccountType}"> </div>',
'<div class="zarafa-files-account-info">',
'<span class="zarafa-files-accountview-subject">{filename:htmlEncode}</span>',
'<span class="zarafa-files-accountview-account">{.:this.getAccountIdentifier}</span>',
'</div>',
'</div>',
'</tpl>',
'</div>',
{
getAccountType: function (record) {
// get an instance of the account store.
var store = this.context.getAccountsStore();
// get the account id from the path string
var accId = Zarafa.plugins.files.data.Utils.File.getAccountId(record.id);
// look up the account
var account = store.getById(accId);
var backend = "Webdav"; // Default is webdav...
if (Ext.isDefined(account)) {
backend = account.get("backend");
}
return "icon_256_" + backend;
},
getAccountIdentifier: function (record) {
// get an instance of the account store.
var store = this.context.getAccountsStore();
// get the account id from the path string
var accId = Zarafa.plugins.files.data.Utils.File.getAccountId(record.id);
// look up the account
var account = store.getById(accId);
var identifier = ""; // Default is empty...
// TODO: this is not dynamic because the backend_config variable names might change in other backends
if (Ext.isDefined(account)) {
var bconfig = account.get("backend_config");
if(bconfig && Ext.isDefined(bconfig.user) && Ext.isDefined(bconfig.server_address)) {
identifier = bconfig.user + "@" + bconfig.server_address;
}
}
return Zarafa.plugins.files.data.Utils.Format.truncate(identifier, 27); // 27 = length of the account field
},
context : context
}
);
},
initEvents: function () {
this.on({
'dblclick' : this.onIconDblClick,
'afterrender' : this.onAfterRender,
scope : this
});
},
/**
* Event handler map the delete key.
*/
onAfterRender: function ()
{
new Ext.KeyMap(this.getEl(), {
key: Ext.EventObject.DELETE,
fn : this.onKeyDelete,
scop : this
});
},
/**
* Event handler triggered when delete key pressed.
* Function will show warning message.
*/
onKeyDelete: function ()
{
Zarafa.common.dialogs.MessageBox.show({
title : dgettext('plugin_files', 'Error'),
msg : dgettext('plugin_files', 'To delete an account you have to go to settings.'),
icon : Zarafa.common.dialogs.MessageBox.ERROR,
buttons: Zarafa.common.dialogs.MessageBox.OK
});
},
/**
* Event handler which triggered when double click on data view item.
*
* @param {Ext.DataView} dataView The dataView item which is double clicked.
* @param {Number} index The index of an item which double clicked.
*/
onIconDblClick: function (dataView, index)
{
var store = this.getStore();
var record = store.getAt(index);
store.loadPath(record.get('id'));
}
});
Ext.reg('filesplugin.filesrecordaccountview', Zarafa.plugins.files.ui.FilesRecordAccountView);
|