Ext.define("Compass.ErpApp.Desktop.Applications.Knitkit.ImageAssetsPanel", { extend: "Ext.tab.Panel", alias: 'widget.knitkit_ImageAssetsPanel', cls: 'image-assets-panel', constructor: function (config) { this.websiteId = null; var self = this; self.module = config.module; this.sharedImageAssetsDataView = Ext.create("Compass.ErpApp.Desktop.Applications.Knitkit.ImageAssetsDataView", { url: '/knitkit/erp_app/desktop/image_assets/shared/get_images', uploadUrl: '/knitkit/erp_app/desktop/image_assets/shared/upload_file', module: config.module, listeners: { afterrender: function () { if (currentUser.hasCapability('view', 'GlobalImageAsset')) { self.sharedImageAssetsDataView.directory = 'root_node'; var store = self.sharedImageAssetsDataView.getStore(); store.load({ params: { directory: 'root_node' } }); } }, imageuploaded: function (comp) { self.sharedImageAssetsTreePanel.getStore().load({ callback: function () { self.sharedImageAssetsTreePanel.getView().refresh(); } }); } } }); this.websiteImageAssetsDataView = Ext.create("Compass.ErpApp.Desktop.Applications.Knitkit.ImageAssetsDataView", { module: config.module, url: '/knitkit/erp_app/desktop/image_assets/website/get_images', uploadUrl: '/knitkit/erp_app/desktop/image_assets/website/upload_file', listeners: { imageuploaded: function (comp) { var store = self.websiteImageAssetsTreePanel.getStore(); store.load({ callback: function () { self.websiteImageAssetsDataView.getStore().load({ params: { directory: 'root_node', website_id: self.websiteId } }); } }); } } }); this.sharedImageAssetsTreePanel = Ext.create("Compass.ErpApp.Shared.FileManagerTree", { region: 'north', rootText: 'Shared Images', collapsible: false, allowDownload: false, addViewContentsToContextMenu: false, showNewFileMenuItem: false, rootVisible: true, multiSelect: true, controllerPath: '/knitkit/erp_app/desktop/image_assets/shared', standardUploadUrl: '/knitkit/erp_app/desktop/image_assets/shared/upload_file', url: '/knitkit/erp_app/desktop/image_assets/shared/expand_directory', containerScroll: true, height: 200, additionalContextMenuItems: [ { nodeType: 'leaf', text: 'Insert image at cursor', iconCls: 'icon-add', listeners: { scope: self, 'click': function () { var node = this.sharedImageAssetsTreePanel.selectedNode; var imgTagHtml = ''; self.module.centerRegion.insertHtmlIntoActiveCkEditorOrCodemirror(imgTagHtml); } } } ], listeners: { 'allowdelete': function () { return currentUser.hasCapability('delete', 'GlobalImageAsset'); }, 'allowupload': function () { return currentUser.hasCapability('upload', 'GlobalImageAsset'); }, 'itemclick': function (view, record, item, index, e) { e.stopEvent(); if (!record.data["leaf"]) { self.sharedImageAssetsDataView.directory = record.data.id; var store = self.sharedImageAssetsDataView.getStore(); store.load({ params: { directory: record.data.id } }); } else { return false; } }, 'fileDeleted': function (fileTreePanel, node) { var store = self.sharedImageAssetsDataView.getStore(); store.load({ params: { directory: node.parentNode.data.id } }); }, 'fileUploaded': function (fileTreePanel, node) { var store = self.sharedImageAssetsDataView.getStore(); store.load({ params: { directory: node.data.id } }); }, 'downloadfile': function (fileTreePanel, node) { window.open("/download/" + node.data.text + "?path=" + node.data.downloadPath + '&disposition=attachment', 'mywindow', 'width=400,height=200'); return false; } } }); this.websiteImageAssetsTreePanel = Ext.create("Compass.ErpApp.Shared.FileManagerTree", { autoLoadRoot: false, region: 'north', rootText: 'Images', collapsible: false, allowDownload: false, addViewContentsToContextMenu: false, showNewFileMenuItem: false, rootVisible: true, multiSelect: true, controllerPath: '/knitkit/erp_app/desktop/image_assets/website', standardUploadUrl: '/knitkit/erp_app/desktop/image_assets/website/upload_file', url: '/knitkit/erp_app/desktop/image_assets/website/expand_directory', containerScroll: true, height: 200, additionalContextMenuItems: [ { nodeType: 'leaf', text: 'Insert image at cursor', iconCls: 'icon-add', listeners: { scope: self, 'click': function () { var node = this.websiteImageAssetsTreePanel.selectedNode; var imgTagHtml = ''; self.module.centerRegion.insertHtmlIntoActiveCkEditorOrCodemirror(imgTagHtml); } } } ], listeners: { 'load': function (store, node, records) { store.getRootNode().data.text = self.websiteName; self.websiteImageAssetsTreePanel.view.refresh(); }, 'itemclick': function (view, record, item, index, e) { if (self.websiteId !== null) { e.stopEvent(); if (!record.data["leaf"]) { self.websiteImageAssetsDataView.directory = record.data.id; self.websiteImageAssetsDataView.websiteId = self.websiteId; var store = self.websiteImageAssetsDataView.getStore(); store.load({ params: { directory: record.data.id, website_id: self.websiteId } }); } else { return false; } } }, 'fileDeleted': function (fileTreePanel, node) { self.websiteImageAssetsDataView.getStore().load({ params: { directory: node.parentNode.data.downloadPath, website_id: self.websiteId } }); }, 'fileUploaded': function (fileTreePanel, node) { self.websiteImageAssetsDataView.getStore().load({ params: { directory: node.data.id, website_id: self.websiteId } }); }, 'downloadfile': function (fileTreePanel, node) { window.open("/download/" + node.data.text + "?path=" + node.data.downloadPath + '&disposition=attachment', 'mywindow', 'width=400,height=200'); return false; } } }); var sharedImagesPanel = Ext.create('Ext.panel.Panel', { cls: 'image-assets', region: 'center', margins: '0 0 0 0', layout: 'fit', items: this.sharedImageAssetsDataView }); var websiteImagesPanel = Ext.create('Ext.panel.Panel', { cls: 'image-assets', region: 'center', margins: '0 0 0 0', layout: 'fit', items: this.websiteImageAssetsDataView }); var sharedImagesLayout = Ext.create('Ext.panel.Panel', { layout: 'border', title: 'Shared', items: [this.sharedImageAssetsTreePanel, sharedImagesPanel] }); var websiteImagesLayout = Ext.create('Ext.panel.Panel', { autoRender: true, layout: 'border', title: 'Website', items: [this.websiteImageAssetsTreePanel, websiteImagesPanel], listeners: { scope: self, 'show': function (panel) { self.reloadWebsiteImageAssetsTreePanel(self.websiteId); } } }); this.selectWebsite = function (website) { this.websiteId = website.id; this.websiteName = website.name; this.reloadWebsiteImageAssetsTreePanel(website.id); }; this.clearWebsite = function () { this.websiteId = null; this.websiteName = null; this.websiteImageAssetsTreePanel.extraPostData = { website_id: null }; this.websiteImageAssetsTreePanel.getStore().setProxy({ type: 'ajax', url: '/knitkit/erp_app/desktop/file_assets/website/expand_directory', extraParams: { website_id: null } }); this.websiteImageAssetsTreePanel.getRootNode().removeAll(true); }; this.reloadWebsiteImageAssetsTreePanel = function (websiteId) { this.websiteImageAssetsTreePanel.extraPostData = { website_id: websiteId }; this.websiteImageAssetsTreePanel.getStore().setProxy({ type: 'ajax', url: '/knitkit/erp_app/desktop/image_assets/website/expand_directory', extraParams: { website_id: websiteId } }); if (websiteId) { while (delNode = this.websiteImageAssetsTreePanel.getRootNode().childNodes[0]) { this.websiteImageAssetsTreePanel.getRootNode().removeChild(delNode); } this.websiteImageAssetsTreePanel.getRootNode().expand(); if (!this.websiteImageAssetsTreePanel.getStore().isLoading()) { this.websiteImageAssetsTreePanel.getStore().load(); self.websiteImageAssetsDataView.directory = 'root_node'; self.websiteImageAssetsDataView.websiteId = websiteId; self.websiteImageAssetsDataView.getStore().load({ params: { directory: 'root_node', website_id: websiteId } }); } } }; var items = []; if (currentUser.hasCapability('view', 'GlobalImageAsset')) { items.push(sharedImagesLayout); } if (currentUser.hasCapability('view', 'SiteImageAsset')) { items.push(websiteImagesLayout); } config = Ext.apply({ deferredRender: false, layout: 'fit', title: 'Images', items: items, activeTab: 1, listeners: { afterrender: function (panel) { // workaround for extJS rendering bug. set activetab 1 above and 0 afterrender panel.setActiveTab(0); } } }, config); this.callParent([config]); } });