iw/static/js/controller/Activities.js

95 lines
2.9 KiB
JavaScript

Ext.define('IW.controller.Activities', {
extend: 'Ext.app.Controller',
views: [
'activity.Window',
'activity.List'
],
stores: [
'Activities',
'Wikis',
'Pages'
],
models: [
'Activity',
],
init: function() {
this.control({
'activitylist': {
itemdblclick: this.openTarget,
itemdeleteclick: this.deleteWiki
}
});
},
openTarget: function(grid, record, item, index, e, eOpts ) {
var type = record.data.Target_type;
if (type == 'WIKI') {
var wstore = this.getStore('Wikis');
var record = wstore.getById(record.data.Target_id);
if (record) {
this.getController('Wikis').openWiki(null, record);
}
}
if (type == 'PAGE') {
// We will have to build treestore and the record, then open the window with them...
var wstore = this.getStore('Wikis');
var wiki_id = record.data.Target_id.split('/')[0];
var parent_id = record.data.Target_id.split('/')[1];
var page_id = record.data.Target_id.split('/')[2];
var wikirecord = wstore.getById(wiki_id);
var treeStore = Ext.create('IW.store.Pages');
if (parent_id != "") {
treeStore.setRootNode({
expanded: true,
Wiki_id: wikirecord.data.Wiki_id,
Page_id: parent_id
});
} else {
treeStore.setRootNode({
expanded: true,
Wiki_id: wikirecord.data.Wiki_id
});
}
var me = this;
treeStore.load({
scope: this,
callback: function(records, operation, success) {
var pagerecord;
var root = treeStore.getRootNode();
// treeStore doesn't have proper search method, yet
// cascadeBy walks the tree until we get match
root.cascadeBy(function (childNode) {
if (childNode.get('Page_id') == page_id)
{
pagerecord = childNode;
}
}, this);
// If we found one, open it!
if (pagerecord) {
var panel = {
store: treeStore
};
this.getController('Pages').openPage(panel, pagerecord, null, null, null, null);
}
}
});
}
if (type == 'ATTACHMENT') {
var wiki_id = record.data.Target_id.split('/')[0];
var att_id = record.data.Target_id.split('/')[1];
window.open('/att/'+wiki_id+'/'+att_id);
}
}
});