/home/ivoiecob/email.hirewise-va.com/modules/OfficeDocumentEditor/js/manager.js
'use strict';
module.exports = function (oAppData) {
var
_ = require('underscore'),
$ = require('jquery'),
ko = require('knockout'),
TextUtils = require('%PathToCoreWebclientModule%/js/utils/Text.js'),
Types = require('%PathToCoreWebclientModule%/js/utils/Types.js'),
App = require('%PathToCoreWebclientModule%/js/App.js'),
CAbstractFileModel = require('%PathToCoreWebclientModule%/js/models/CAbstractFileModel.js'),
CAddFileButtonView = require('modules/%ModuleName%/js/views/CAddFileButtonView.js'),
FilesActions = require('modules/%ModuleName%/js/utils/FilesActions.js'),
FilesSettings = require('modules/FilesWebclient/js/Settings.js')
;
const addFileButtonView = ko.observable(null)
const executeCommand = (view, sCommandName) => {
const oView = view()
if (oView) {
if (oView[sCommandName]) {
const command = oView[sCommandName]
if (command.canExecute()) { command() }
}
} else if (ko.isObservable(addFileButtonView)) {
const subscription = addFileButtonView.subscribe(function (oView) {
if (oView && oView[sCommandName]) {
const command = oView[sCommandName]
if (command.canExecute()) { command() }
}
subscription.dispose()
})
}
}
if (App.isUserNormalOrTenant())
{
return {
start: function (ModulesManager) {
var aExtensionsToView = oAppData['%ModuleName%'] ? oAppData['%ModuleName%']['ExtensionsToView'] : [];
aExtensionsToView = aExtensionsToView.map((item) => { return Types.pString(item).toLowerCase() });
CAbstractFileModel.addViewExtensions(aExtensionsToView);
App.subscribeEvent('FilesWebclient::ConstructView::after', function (oParams) {
if (oParams.Name === 'CFilesView') {
var oView = oParams.View;
if (oView && _.isFunction(oView.registerCreateButtonsController)) {
addFileButtonView(new CAddFileButtonView(oView.storageType, oView.currentPath))
oView.registerCreateButtonsController(addFileButtonView());
}
}
});
App.subscribeEvent('FilesWebclient::ParseFile::after', function (aParams) {
var
oFile = aParams[0],
oRawData = aParams[1],
sFileExtension = Types.pString(oFile.extension()).toLowerCase()
;
if (oFile.hasAction('view') && oFile.oActionsData['view'] && -1 !== $.inArray(sFileExtension, aExtensionsToView))
{
delete oFile.oActionsData['view'].HandlerName;
oFile.oActionsData['view'].Handler = FilesActions.view.bind(oFile);
}
if (oFile.hasAction('convert')) {
oFile.removeAction('convert');
if (oFile.oActionsData['convert']) {
oFile.actions.unshift('convert');
oFile.oActionsData['convert'].Text = TextUtils.i18n('%MODULENAME%/ACTION_EDIT_FILE');
oFile.oActionsData['convert'].Handler = FilesActions.convert.bind(oFile);
}
if (oFile.hasAction('view'))
{
oFile.removeAction('view');
oFile.actions.push('view');
}
}
if (oFile.hasAction('edit'))
{
oFile.removeAction('edit');
if (oFile.oActionsData['edit'])
{
oFile.actions.unshift('edit');
oFile.oActionsData['edit'].Text = TextUtils.i18n('%MODULENAME%/ACTION_EDIT_FILE');
oFile.oActionsData['edit'].Handler = FilesActions.edit.bind(oFile);
}
if (oFile.hasAction('view'))
{
oFile.removeAction('view');
oFile.actions.push('view');
}
}
});
App.broadcastEvent('RegisterNewItemElement', {
'title': TextUtils.i18n('%MODULENAME%/ACTION_CREATE_DOCUMENT'),
'handler': () => {
// check if we are on Files screen or not
if (!window.location.hash.startsWith('#' + FilesSettings.HashModuleName)) {
window.location.hash = FilesSettings.HashModuleName
}
executeCommand(addFileButtonView, 'createDocumentCommand')
},
'className': 'item_document',
'order': 5,
'column': 2
})
App.broadcastEvent('RegisterNewItemElement', {
'title': TextUtils.i18n('%MODULENAME%/ACTION_CREATE_SPREADSHEET'),
'handler': () => {
// check if we are on Files screen or not
if (!window.location.hash.startsWith('#' + FilesSettings.HashModuleName)) {
window.location.hash = FilesSettings.HashModuleName
}
executeCommand(addFileButtonView, 'createSpreadSheetCommand')
},
'className': 'item_spreadsheet',
'order': 5,
'column': 2
})
App.broadcastEvent('RegisterNewItemElement', {
'title': TextUtils.i18n('%MODULENAME%/ACTION_CREATE_PRESENTATION'),
'handler': () => {
// check if we are on Files screen or not
if (!window.location.hash.startsWith('#' + FilesSettings.HashModuleName)) {
window.location.hash = FilesSettings.HashModuleName
}
executeCommand(addFileButtonView, 'createPresentationCommand')
},
'className': 'item_presentation',
'order': 5,
'column': 2
})
}
};
}
return null;
};