/home/ivoiecob/email.hirewise-va.com/modules/OfficeDocumentEditor/js/utils/FilesActions.js
'use strict';
var
_ = require('underscore'),
moment = require('moment'),
Types = require('%PathToCoreWebclientModule%/js/utils/Types.js'),
UrlUtils = require('%PathToCoreWebclientModule%/js/utils/Url.js'),
Ajax = require('%PathToCoreWebclientModule%/js/Ajax.js'),
Api = require('%PathToCoreWebclientModule%/js/Api.js'),
ModulesManager = require('%PathToCoreWebclientModule%/js/ModulesManager.js'),
Popups = require('%PathToCoreWebclientModule%/js/Popups.js'),
WindowOpener = require('%PathToCoreWebclientModule%/js/WindowOpener.js'),
CFileModel = ModulesManager.run('FilesWebclient', 'getFileConstructor'),
ConvertPopup = require('modules/%ModuleName%/js/popups/ConvertPopup.js'),
oOpenedWindows = {},
oSyncStartedMoments = {},
iCheckWindowsInterval = 0,
FilesActions = {}
;
function checkOpenedWindows()
{
_.each(oOpenedWindows, function (oData, sFullPath) {
var oWin = oData['Win'];
if (oWin.closed)
{
oSyncStartedMoments[sFullPath] = moment();
delete oOpenedWindows[sFullPath];
}
});
if (_.isEmpty(oOpenedWindows))
{
clearInterval(iCheckWindowsInterval);
}
}
function addOpenedWindow(oFile, oWin)
{
var sFullPath = oFile.fullPath();
oOpenedWindows[sFullPath] = {
'Win': oWin,
'File': oFile
};
clearInterval(iCheckWindowsInterval);
iCheckWindowsInterval = setInterval(function () {
checkOpenedWindows();
}, 500);
}
FilesActions.view = function () {
var
oWin = null,
sUrl = UrlUtils.getAppPath() + this.getActionUrl('view') + '/' + moment().unix()
;
if (Types.isNonEmptyString(sUrl) && sUrl !== '#')
{
oWin = WindowOpener.open(sUrl, sUrl, false);
if (oWin)
{
oWin.focus();
}
}
};
FilesActions.edit = function () {
if (oOpenedWindows[this.fullPath()] && !oOpenedWindows[this.fullPath()].Win.closed) {
oOpenedWindows[this.fullPath()].Win.focus();
} else {
var
oWin = null,
sUrl = this.getActionUrl('edit')
;
if (Types.isNonEmptyString(sUrl) && sUrl !== '#') {
if (sUrl === 'convert') {
} else {
sUrl = UrlUtils.getAppPath() + sUrl + '/' + moment().unix()
oWin = WindowOpener.open(sUrl, sUrl, false);
if (oWin) {
addOpenedWindow(this, oWin)
oWin.focus();
}
}
}
}
};
function convertFile (fClosePopup, koConvertInProgress) {
Ajax.send('%ModuleName%', 'ConvertDocument', {
'Type': this.storageType(),
'Path': this.path(),
'FileName': this.fileName()
}, function (oResponse) {
if (_.isFunction(koConvertInProgress))
{
koConvertInProgress(false);
}
if (oResponse && oResponse.Result)
{
var oFile = new CFileModel(oResponse.Result);
ModulesManager.run('FilesWebclient', 'refresh');
oFile.executeAction('edit');
if (_.isFunction(fClosePopup))
{
fClosePopup();
}
}
else
{
Api.showErrorByCode(oResponse);
}
}, this);
};
FilesActions.convert = function () {
Popups.showPopup(ConvertPopup, [convertFile.bind(this), FilesActions.view.bind(this)]);
};
module.exports = FilesActions;