processmaker-builder
Version:
The gulp task runner for ProcessMaker building
1,098 lines (1,048 loc) • 42.9 kB
JavaScript
var openCreateTemplates = false;
PMDesigner.ProcessFilesManager = function (processFileManagerOptionPath, optionCreation) {
var rowselected = {};
var rowselectedFile = {};
var typeSave = '';
var gridFilesManager;
var gridTemplate;
var gridPublic;
var formEdit;
var windowEdit;
var windowCode;
var editorHTML;
var formUpload;
var formUploadField;
var initTinyMCE = null;
var flagGridTemplate = true;
var flagGridPublic = true;
var presviusValueTiny = "";
var buttonEditClass = 'mafe-button-edit';
var buttonDeleteClass = 'mafe-button-delete';
var buttonPropertiesClass = 'mafe-button-properties';
var warningTemplate = new PMUI.ui.MessageWindow({
id: 'warningTemplate',
windowMessageType: 'warning',
width: 490,
title: 'Process Files Manager'.translate(),
message: 'Do you want to delete this file?'.translate(),
footerItems: [{
id: 'warningTemplateButtonNo',
text: 'No'.translate(),
handler: function () {
warningTemplate.close();
},
buttonType: "error"
}, {
id: 'warningTemplateButtonYes',
text: 'Yes'.translate(),
handler: function () {
(new PMRestClient({
endpoint: 'file-manager/' + rowselectedFile.getData().prf_uid,
typeRequest: 'remove',
messageError: '',
functionSuccess: function (xhr, response) {
PMDesigner.msgFlash('File deleted successfully'.translate(), gridTemplate);
loadTemplate();
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
},
messageSuccess: 'File deleted successfully'.translate(),
flashContainer: gridTemplate
})).executeRestClient();
warningTemplate.close();
},
buttonType: "success"
}
]
});
var isDirtyUpload = function () {
$("input,select,textarea").blur();
if (formUpload.isDirty()) {
var message_window = new PMUI.ui.MessageWindow({
id: "cancelMessageTriggers",
windowMessageType: 'warning',
width: 490,
title: "Upload File".translate(),
message: 'Are you sure you want to discard your changes?'.translate(),
footerItems: [
{
text: "No".translate(),
handler: function () {
message_window.close();
},
buttonType: "error"
},
{
text: "Yes".translate(),
handler: function () {
formUploadField.reset();
message_window.close();
windowUpload.close();
},
buttonType: "success"
}
]
});
message_window.open();
message_window.showFooter();
} else {
windowUpload.close();
}
};
var isDirtyFormEdit = function () {
var fileContent = $(tinyMCE.activeEditor.getContent()).text().trim().length ? tinyMCE.activeEditor.getContent() : formEdit.getField("filecontent").getValue();
if (formEdit.isDirty() || fileContent !== presviusValueTiny) {
$(".mceSplitButtonMenu").each(function () {
if ($(this).is(":visible")) {
$(this).addClass("mrdk").hide();
}
});
var message_window = new PMUI.ui.MessageWindow({
id: "cancelMessageTriggers",
width: 490,
windowMessageType: 'warning',
title: 'Process Files Manager'.translate(),
message: 'Are you sure you want to discard your changes?'.translate(),
footerItems: [
{
text: "No".translate(),
handler: function () {
$(".mceSplitButtonMenu.mrdk").each(function () {
if ($(this).is(":hidden")) {
$(this).removeClass("mrdk").show();
}
});
message_window.close();
windowFilesManager.close();
},
buttonType: "error"
}, {
text: "Yes".translate(),
handler: function () {
message_window.close();
if (clickedClose) {
windowEdit.close();
} else {
windowEdit.close();
windowFilesManager.open();
}
},
buttonType: "success"
}
]
});
message_window.open();
message_window.showFooter();
} else {
if (clickedClose) {
windowEdit.close();
} else {
windowEdit.close();
windowFilesManager.open();
}
}
};
var warningPublic = new PMUI.ui.MessageWindow({
id: 'warningPublic',
title: 'Process Files Manager'.translate(),
windowMessageType: 'warning',
width: 490,
message: 'Do you want to delete this file?'.translate(),
footerItems: [{
id: 'warningPublicButtonNo',
text: 'No'.translate(),
handler: function () {
warningPublic.close();
},
buttonType: "error"
}, {
id: 'warningPublicButtonYes',
text: 'Yes'.translate(),
handler: function () {
(new PMRestClient({
endpoint: 'file-manager/' + rowselectedFile.getData().prf_uid,
typeRequest: 'remove',
messageError: '',
functionSuccess: function (xhr, response) {
loadPublic();
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
},
messageSuccess: 'File deleted successfully'.translate(),
flashContainer: gridPublic
})).executeRestClient();
warningPublic.close();
},
buttonType: "success"
}
]
});
var windowFilesManager = new PMUI.ui.Window({
id: 'windowFilesManager',
title: 'Process Files Manager'.translate(),
height: DEFAULT_WINDOW_HEIGHT,
width: DEFAULT_WINDOW_WIDTH,
items: [
gridFilesManager = new PMUI.grid.GridPanel({
id: 'gridFilesManager',
pageSize: 10,
width: "96%",
style: {
cssClasses: ["mafe-gridPanel"]
},
emptyMessage: 'No records found'.translate(),
nextLabel: 'Next'.translate(),
previousLabel: 'Previous'.translate(),
customStatusBar: function (currentPage, pageSize, numberItems, criteria, filter) {
return messagePageGrid(currentPage, pageSize, numberItems, criteria, filter);
},
dataItems: {},
columns: [
{
title: 'Main Folders'.translate(),
dataType: 'string',
columnData: 'prf_path',
width: DEFAULT_WINDOW_WIDTH - 200,
alignmentCell: 'left',
sortable: true
},
{
id: 'filesGridViewCol',
title: '',
dataType: 'button',
buttonLabel: 'View'.translate(),
buttonStyle: {cssClasses: ['mafe-button-show']},
onButtonClick: function (row, grid) {
rowselected = row;
openFolder();
}
}
],
onRowClick: function (row, grid) {
rowselected = row;
openFolder();
}
})
]
});
var buttonNew = new PMUI.ui.Button({
id: 'createBtn',
text: 'Create'.translate(),
height: "38px",
width: 100,
style: {cssClasses: ['mafe-button-create']},
handler: function (event) {
newfile();
}
});
var gridTemplate = new PMUI.grid.GridPanel({
id: 'gridTemplate',
filterPlaceholder: 'Search ...'.translate(),
pageSize: 10,
width: '96%',
style: {
cssClasses: ["mafe-gridPanel"]
},
tableContainerHeight: 374,
emptyMessage: 'No records found'.translate(),
nextLabel: 'Next'.translate(),
previousLabel: 'Previous'.translate(),
customStatusBar: function (currentPage, pageSize, numberItems, criteria, filter) {
return messagePageGrid(currentPage, pageSize, numberItems, criteria, filter);
},
dataItems: {},
columns: [{
title: "TEMPLATES".translate(),
dataType: 'string',
columnData: 'prf_filename',
width: '500px',
alignmentCell: 'left',
sortable: true
}, {
dataType: 'string',
columnData: 'prf_uid',
alignmentCell: 'left',
visible: false
}, {
dataType: 'string',
columnData: 'prf_content',
alignmentCell: 'left',
visible: false
}, {
id: 'gridTemplateButtonHtmlEditor',
title: '',
dataType: 'button',
buttonLabel: 'Html Editor'.translate(),
width: '106px',
onButtonClick: function (row, grid) {
openHtmlEditor(row);
},
buttonStyle: {cssClasses: [buttonEditClass]}
}, {
id: 'gridTemplateButtonRichTextEditor',
title: '',
dataType: 'button',
buttonLabel: 'Rich Text'.translate(),
width: '100px',
onButtonClick: function (row, grid) {
presviusValueTiny = row.getData().prf_content ? row.getData().prf_content : "";
rowselectedFile = row;
editfile();
},
buttonStyle: {cssClasses: [buttonEditClass]}
}, {
id: 'gridTemplateButtonDownload',
title: '',
dataType: 'button',
buttonLabel: 'Download'.translate(),
width: '100px',
onButtonClick: function (row, grid) {
rowselectedFile = row;
download();
},
buttonStyle: {cssClasses: [buttonPropertiesClass]}
}, {
id: 'gridTemplateButtonDelete',
title: '',
dataType: 'button',
buttonLabel: 'Delete'.translate(),
width: '82px',
onButtonClick: function (row, grid) {
rowselectedFile = row;
warningTemplate.open();
warningTemplate.showFooter();
},
buttonStyle: {cssClasses: [buttonDeleteClass]}
}
]
});
var buttonPublicCreate = new PMUI.ui.Button({
id: 'buttonPublicCreate',
text: 'Create'.translate(),
height: "38px",
width: 100,
style: {cssClasses: ['mafe-button-create']},
handler: function (event) {
newfile();
}
});
var buttonUpload = new PMUI.ui.Button({
id: 'uploadBtn',
text: 'Upload'.translate(),
style: {cssClasses: ['mafe-button-upload'], cssProperties: {'margin-right': '5px', 'float': 'none'}},
handler: function (event) {
windowUpload.open();
formUpload.setFocus();
applyStyleWindowForm(windowUpload);
}
});
var gridPublic = new PMUI.grid.GridPanel({
id: 'gridPublic',
pageSize: 10,
width: '96%',
style: {
cssClasses: ["mafe-gridPanel"]
},
emptyMessage: 'No records found'.translate(),
filterPlaceholder: 'Search ...'.translate(),
nextLabel: 'Next'.translate(),
previousLabel: 'Previous'.translate(),
tableContainerHeight: 374,
customStatusBar: function (currentPage, pageSize, numberItems, criteria, filter) {
return messagePageGrid(currentPage, pageSize, numberItems, criteria, filter);
},
dataItems: {},
columns: [{
title: "PUBLIC".translate(),
dataType: 'string',
columnData: 'prf_filename',
width: '704px',
alignmentCell: 'left',
sortable: true
}, {
dataType: 'string',
columnData: 'prf_uid',
alignmentCell: 'left',
visible: false
}, {
id: 'gridPublicButtonDownload',
title: '',
dataType: 'button',
buttonLabel: 'Download'.translate(),
width: '111px',
onButtonClick: function (row, grid) {
rowselectedFile = row;
download();
},
buttonStyle: {cssClasses: ['mafe-button-properties']}
}, {
id: 'gridPublicButtonDelete',
title: '',
dataType: 'button',
buttonLabel: 'Delete'.translate(),
width: '82px',
onButtonClick: function (row, grid) {
rowselectedFile = row;
warningPublic.open();
warningPublic.showFooter();
},
buttonStyle: {cssClasses: ['mafe-button-delete']}
}
]
});
var windowUpload = new PMUI.ui.Window({
id: 'windowUpload',
title: 'Upload File'.translate(),
height: 200,
width: DEFAULT_WINDOW_WIDTH,
onBeforeClose: function () {
isDirtyUpload();
},
items: [
formUpload = new PMUI.form.Form({
id: 'formUpload',
visibleHeader: false,
items: [
formUploadField = new PMUI.field.UploadField({
id: 'formUploadField',
label: 'File'.translate(),
name: 'prf_file',
multiple: false,
labelWidth: '25%',
accept: 'text/html',
controlsWidth: 300
})
]
})
],
visibleFooter: true,
buttonPanelPosition: 'bottom',
buttonsPosition: 'right',
buttons: [{
id: 'windowUploadButtonCancel',
text: 'Cancel'.translate(),
handler: function () {
isDirtyUpload();
},
buttonType: "error"
}, {
id: 'windowUploadButtonUpload',
text: 'Upload'.translate(),
handler: function () {
uploadFile();
},
buttonType: "success"
}
]
});
/**
* Create window TinyMCE
*/
function createWindowTinyMCE() {
windowEdit = new PMUI.ui.Window({
id: 'windowEdit',
title: '',
height: DEFAULT_WINDOW_HEIGHT - 80,
width: DEFAULT_WINDOW_WIDTH,
onBeforeClose: function () {
PMDesigner.hideAllTinyEditorControls();
clickedClose = true;
isDirtyFormEdit();
},
items: [
formEdit = new PMUI.form.Form({
id: 'formEdit',
visibleHeader: false,
width: 900,
items: [
new PMUI.field.TextField({
id: 'filename',
name: 'filename',
label: 'Filename'.translate(),
placeholder: 'Insert file name'.translate(),
required: true,
valueType: 'string',
labelWidth: "15%",
controlsWidth: 300,
validators: [{
pmType: "regexp",
criteria: /^[a-zA-Z0-9-_ ]*$/,
errorMessage: "File name is invalid".translate()
}]
}),
new PMUI.field.TextAreaField({
id: 'filecontent',
name: 'filecontent',
label: 'Content'.translate(),
value: '',
rows: 210,
labelWidth: "15%",
controlsWidth: 720,
onChange: function (currentValue, previousValue) {
},
style: {cssClasses: ['mafe-textarea-resize']}
})
]
})
],
buttonPanelPosition: 'bottom',
buttonsPosition: 'right',
buttons: [{
id: 'windowEditButtonCancel',
text: 'Cancel'.translate(),
buttonType: 'error',
handler: function () {
PMDesigner.hideAllTinyEditorControls();
clickedClose = false;
isDirtyFormEdit();
}
}, {
id: 'windowEditButtonSave',
text: "Save".translate(),
buttonType: 'success',
handler: function () {
if (formEdit.isValid()) {
PMDesigner.hideAllTinyEditorControls();
$(".mceSplitButtonMenu").hide();
save();
}
}
}
]
});
formEdit.getField('filename').enable();
formEdit.getField('filecontent').getControls()[0].getHTML().className = 'tmceEditor';
windowEdit.open();
windowEdit.showFooter();
applyStyleWindowForm(windowEdit);
tinyMCE.init({
editor_selector: 'tmceEditor',
mode: 'specific_textareas',
directionality: 'ltr',
verify_html: false,
skin: 'o2k7',
theme: 'advanced',
skin_variant: 'silver',
relative_urls : false,
remove_script_host : false,
theme_advanced_source_editor_width: DEFAULT_WINDOW_WIDTH - 50,
theme_advanced_source_editor_height: DEFAULT_WINDOW_HEIGHT - 100,
plugins: "advhr,advimage,advlink,advlist,autolink,autoresize,contextmenu,directionality,emotions,example,example_dependency,fullpage,fullscreen,iespell,inlinepopups,insertdatetime,layer,legacyoutput,lists,media,nonbreaking,noneditable,pagebreak,paste,preview,print,save,searchreplace,style,tabfocus,table,template,visualblocks,visualchars,wordcount,xhtmlxtras,pmSimpleUploader,pmVariablePicker,style",
theme_advanced_buttons1: 'pmSimpleUploader,|,pmVariablePicker,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,fontselect,fontsizeselect,|,cut,copy,paste',
theme_advanced_buttons2: 'bullist,numlist,|,outdent,indent,blockquote,|,tablecontrols,|,undo,redo,|,link,unlink,image,|,forecolor,backcolor,styleprops',
theme_advanced_buttons3: 'hr,removeformat,visualaid,|,sub,sup,|,ltr,rtl,|,code',
popup_css: "/js/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialogTinyBpmn.css",
oninit: initTinyMCE,
onchange_callback: function (inst) {
formEdit.getField('filecontent').setValue(tinyMCE.activeEditor.getContent({format: 'raw'}));
},
handle_event_callback: function (e) {
},
setup: function (ed) {
ed.onSetContent.add(function (ed, l) {
formEdit.getField('filecontent').setValue(tinyMCE.activeEditor.getContent({format: 'raw'}));
});
},
oninit: function () {
tinyMCE.activeEditor.processID = PMDesigner.project.id;
}
});
validateKeysField(formEdit.getField('filename').getControls()[0].getHTML(), ['isbackspace', 'isnumber', 'isletter', 'isunderscore', 'ishyphen', 'isparenthesisopening', 'isparenthesisclosing']);
windowEdit.footer.getItems()[0].setHeight(38);
windowEdit.footer.getItems()[1].setHeight(38);
document.getElementById(windowEdit.footer.getItems()[0].id).style.lineHeight = '18px';
document.getElementById(windowEdit.footer.getItems()[1].id).style.lineHeight = '18px';
}
/**
* Create and open HTML Editor
*/
function openHtmlEditor(rowSelected) {
var buttonCancel,
buttonSave,
contentHTML,
rowData = rowSelected.getData(),
factorWidth = 0.9,
factorHeight = 0.7;
//CodeMirror
editorHTML = new PMCodeMirror({
id: "editCodeHTML"
});
//Footer´s buttons
buttonSave = new PMUI.ui.Button({
id: 'saveHtmlEditor',
text: "Apply".translate(),
buttonType: 'success',
handler: function (event) {
saveHtmlEditor();
}
});
buttonCancel = new PMUI.ui.Button({
id: 'cancelHtmlEditor',
text: "Cancel".translate(),
buttonType: 'error',
handler: function (event) {
windowCode.close();
}
});
//Create Window with Code Mirror
windowCode = new PMUI.ui.Window({
id: 'windowCode',
title: 'HTML Editor'.translate(),
height: DEFAULT_WINDOW_HEIGHT * 0.9,
width: DEFAULT_WINDOW_WIDTH,
footerItems: [
buttonCancel,
buttonSave
],
buttonPanelPosition: "bottom",
footerAlign: "right"
});
windowCode.open();
windowCode.showFooter();
windowCode.addItem(editorHTML);
contentHTML = $.isPlainObject(rowData) && !$.isEmptyObject(rowData) ? rowData.prf_content : "";
editorHTML.cm.setSize(windowCode.getWidth() * factorWidth, windowCode.getHeight() * factorHeight);
editorHTML.cm.setValue(contentHTML);
editorHTML.related_row = rowData.prf_uid;
// Apply styles
$(".CodeMirror.cm-s-default.CodeMirror-wrap").css({
"margin": "10px 0 0 20px",
"border": "1px solid #c0c0c0"
});
$(".CodeMirror.cm-s-default.CodeMirror-wrap").after($ctrlSpaceMessage.css({
"margin": "5px 5px 5px 20px"
}));
$(".pmui-window-body").css("overflow", "hidden");
editorHTML.cm.refresh();
}
function newfile() {
windowFilesManager.close();
initTinyMCE = function () {
tinyMCE.activeEditor.domainURL = "/sys" + WORKSPACE + "/" + LANG + "/" + SKIN + "/";
tinyMCE.activeEditor.processID = PMDesigner.project.id;
};
createWindowTinyMCE();
typeSave = 'new';
var title = (processFileManagerOptionPath == 'templates') ? "Create ".translate() + " " + processFileManagerOptionPath.substring(0, processFileManagerOptionPath.length - 1).translate() : "Create ".translate() + " " + processFileManagerOptionPath.translate() + " " + "file".translate();
windowEdit.setTitle(title.translate());
var closeElement = windowEdit.header.childNodes[1];
if (closeElement.addEventListener) {
closeElement.addEventListener("click", function () {
$(".mceSplitButtonMenu").hide();
}, false);
} else {
closeElement.attachEvent("click", function () {
$(".mceSplitButtonMenu").hide();
});
}
formEdit.setFocus();
}
function editfile() {
var title,
closeElement;
windowFilesManager.close();
initTinyMCE = function () {
tinyMCE.activeEditor.domainURL = "/sys" + WORKSPACE + "/" + LANG + "/" + SKIN + "/";
tinyMCE.activeEditor.processID = PMDesigner.project.id;
};
createWindowTinyMCE();
typeSave = 'update';
title = "Edit ".translate() + " " + processFileManagerOptionPath.substring(0, processFileManagerOptionPath.length - 1).translate();
if (windowEdit && formEdit) {
windowEdit.setTitle(title.translate());
closeElement = windowEdit.header.childNodes[1];
if (closeElement.addEventListener) {
closeElement.addEventListener("click", function () {
$(".mceSplitButtonMenu").hide();
}, false);
} else {
closeElement.attachEvent("click", function () {
$(".mceSplitButtonMenu").hide();
});
}
formEdit.getField('filename').getControl().setStyle({cssProperties: {"background": "#EEEEEE"}});
formEdit.getField('filename').disable();
formEdit.getField('filename').setValue(rowselectedFile.getData().prf_filename);
var a = rowselectedFile.getData().prf_content;
formEdit.getField('filecontent').setValue(a);
if (tinyMCE.activeEditor) {
tinyMCE.activeEditor.setContent(a);
}
}
}
function save() {
var flagAux;
if (!formEdit.isValid()) {
flagAux = formEdit.visible;
} else {
flagAux = formEdit.isValid();
}
if (flagAux) {
if (getData2PMUI(formEdit.html).filename == "") {
return false;
}
}
if ((navigator.userAgent.indexOf("MSIE") != -1) || (navigator.userAgent.indexOf("Trident") != -1)) {
var data = getData2PMUI(formEdit.html);
} else {
var data = formEdit.getData();
}
if (typeSave === 'new') {
(new PMRestClient({
endpoint: 'file-manager',
typeRequest: 'post',
messageError: '',
data: {
prf_filename: data.filename + ".html",
prf_path: processFileManagerOptionPath,
prf_content: data.filecontent
},
functionSuccess: function (xhr, response) {
windowEdit.close();
if (processFileManagerOptionPath == "templates") {
PMDesigner.msgFlash('File saved successfully'.translate(), gridTemplate);
windowFilesManager.open();
loadTemplate();
}
if (processFileManagerOptionPath == "public") {
PMDesigner.msgFlash('File saved successfully'.translate(), gridPublic);
windowFilesManager.open();
loadPublic();
}
formEdit.getField('filename').setValue('');
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
}
})).executeRestClient();
}
if (typeSave === 'update') {
(new PMRestClient({
endpoint: 'file-manager/' + rowselectedFile.getData().prf_uid,
typeRequest: 'update',
messageError: '',
data: {
prf_content: tinyMCE.activeEditor.getContent()
},
functionSuccess: function (xhr, response) {
windowEdit.close();
if (processFileManagerOptionPath == "templates") {
PMDesigner.msgFlash('File updated successfully'.translate(), gridTemplate);
windowFilesManager.open();
loadTemplate();
}
if (processFileManagerOptionPath == "public") {
PMDesigner.msgFlash('File updated successfully'.translate(), gridPublic);
windowFilesManager.open();
loadPublic();
}
formEdit.getField('filename').setValue('');
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
}
})).executeRestClient();
}
}
/**
* Save Content of the Html Editor
*/
function saveHtmlEditor() {
var index = 0,
codeMirror = windowCode.getItems()[index],
contentCodeMirror = codeMirror.getValue(),
rowRelatedUID = codeMirror.related_row,
request;
request = new PMRestClient({
endpoint: 'file-manager/' + rowRelatedUID,
typeRequest: 'update',
messageError: 'Error Update File'.translate(),
data: {
prf_content: contentCodeMirror
},
functionSuccess: function (xhr, response) {
windowCode.close();
if (processFileManagerOptionPath == "templates") {
PMDesigner.msgFlash('File updated successfully'.translate(), gridTemplate);
windowFilesManager.open();
loadTemplate();
}
if (processFileManagerOptionPath == "public") {
PMDesigner.msgFlash('File updated successfully'.translate(), gridPublic);
windowFilesManager.open();
loadPublic();
}
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
}
});
request.executeRestClient();
}
function loadFileManager() {
(new PMRestClient({
endpoint: 'file-manager',
typeRequest: 'get',
messageError: '',
functionSuccess: function (xhr, response) {
gridFilesManager.clearItems();
for (var i = 0; i < response.length; i++) {
gridFilesManager.addDataItem({prf_path: response[i].name});
}
if (openCreateTemplates) {
gridFilesManager.onRowClick(gridFilesManager.getItems()[0]);
newfile();
}
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
}
})).executeRestClient();
}
function loadTemplate() {
(new PMRestClient({
endpoint: 'file-manager',
typeRequest: 'get',
messageError: '',
data: {
path: processFileManagerOptionPath,
get_content: true
},
functionSuccess: function (xhr, response) {
gridTemplate.clearItems();
gridTemplate.clearItemsColumns();
for (var i = 0; i < response.length; i++) {
gridTemplate.addDataItem({
prf_filename: response[i].prf_filename,
prf_content: response[i].prf_content,
prf_uid: response[i].prf_uid,
prf_assigned_routing_screen: response[i].prf_derivation_screen
});
}
gridTemplate.sort('prf_filename', 'asc');
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
}
})).executeRestClient();
checkDerivationScreen();
}
function loadPublic() {
(new PMRestClient({
endpoint: 'file-manager',
typeRequest: 'get',
messageError: '',
data: {
path: processFileManagerOptionPath,
get_content: false
},
functionSuccess: function (xhr, response) {
gridPublic.clearItems();
for (var i = 0; i < response.length; i++) {
gridPublic.addDataItem({
prf_filename: response[i].prf_filename,
prf_uid: response[i].prf_uid
});
}
gridPublic.sort('prf_filename', 'asc');
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
}
})).executeRestClient();
}
function download() {
var xhr,
win = window,
value = 'blob',
url = HTTP_SERVER_HOSTNAME + '/api/1.0/' + WORKSPACE + '/project/' + PMDesigner.project.id + '/file-manager/' + rowselectedFile.getData().prf_uid + '/download';
if (win.XMLHttpRequest)
xhr = new XMLHttpRequest();
else if (win.ActiveXObject)
xhr = new ActiveXObject('Microsoft.XMLHTTP');
win.URL = win.URL || win.webkitURL;
xhr.open('GET', url, true);
xhr.responseType = value;
xhr.setRequestHeader('Authorization', 'Bearer ' + PMDesigner.project.keys.access_token);
xhr.onload = function () {
if (this.status === 200) {
if (processFileManagerOptionPath == "templates") {
PMDesigner.msgFlash('Start file download successfully'.translate(), gridTemplate);
}
if (processFileManagerOptionPath == "public") {
PMDesigner.msgFlash('Start file download successfully'.translate(), gridPublic);
}
var doc = win.document, a = doc.createElementNS('http://www.w3.org/1999/xhtml', 'a'), event = doc.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, win, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
var blob = xhr.response;
if ((navigator.userAgent.indexOf("MSIE") != -1) || (navigator.userAgent.indexOf("Trident") != -1) || (navigator.userAgent.indexOf("Edge") != -1)) {
window.navigator.msSaveBlob(blob, rowselectedFile.getData().prf_filename);
}
else {
a.href = win.URL.createObjectURL(blob);
a.download = rowselectedFile.getData().prf_filename;
a.dispatchEvent(event);
}
}
};
xhr.send()
}
function uploadFile() {
var fileSelector = formUploadField.getHTML().getElementsByTagName('input')[0];
if (fileSelector.files.length === 0) {
PMDesigner.msgFlash('Please select a file to upload'.translate(), windowUpload.footer, "info");
return;
}
(new PMRestClient({
endpoint: 'file-manager',
typeRequest: 'post',
messageError: '',
data: {
prf_filename: fileSelector.files[0].name,
prf_path: processFileManagerOptionPath,
prf_content: null
},
functionSuccess: function (xhr, response) {
var win = window, fd = new FormData(), xhr, val = 'prf_file';
fd.append(val, fileSelector.files[0]);
if (win.XMLHttpRequest)
xhr = new XMLHttpRequest();
else if (win.ActiveXObject)
xhr = new ActiveXObject('Microsoft.XMLHTTP');
xhr.open('POST', '/api/1.0/' + WORKSPACE + '/project/' + PMDesigner.project.id + '/file-manager/' + response.prf_uid + '/upload', true);
xhr.setRequestHeader('Authorization', 'Bearer ' + PMDesigner.project.keys.access_token);
xhr.onload = function () {
if (this.status === 200) {
formUploadField.reset();
windowUpload.close();
if (processFileManagerOptionPath == "templates") {
PMDesigner.msgFlash('File uploaded successfully'.translate(), gridTemplate);
loadTemplate();
}
if (processFileManagerOptionPath == "public") {
PMDesigner.msgFlash('File uploaded successfully'.translate(), gridPublic);
loadPublic();
}
}
};
xhr.send(fd);
},
functionFailure: function (xhr, response) {
PMDesigner.msgWinError(response.error.message);
}
})).executeRestClient();
}
function styleApp() {
try {
gridFilesManager.dom.toolbar.style.display = 'none';
gridTemplate.dom.toolbar.getElementsByTagName('input')[0].style.visibility = 'hidden';
gridPublic.dom.toolbar.getElementsByTagName('input')[0].style.visibility = 'hidden';
} catch (e) {
}
}
function disableAllFields() {
windowFilesManager.getItems()[0].setVisible(false);
}
function openFolder() {
disableAllFields();
styleApp();
if (processFileManagerOptionPath == "templates") {
windowFilesManager.setTitle("Templates".translate());
loadTemplate();
if (flagGridTemplate) {
windowFilesManager.addItem(gridTemplate);
flagGridTemplate = false;
}
var buttonsTemplate = document.createElement("div");
buttonsTemplate.id = "buttonsTemplate";
buttonsTemplate.style.display = "inlineBlock";
buttonsTemplate.style.float = "right";
buttonsTemplate.appendChild(buttonUpload.getHTML());
buttonsTemplate.appendChild(buttonNew.getHTML());
//buttonsTemplate.appendChild(buttonBack.getHTML());
buttonUpload.defineEvents();
buttonNew.defineEvents();
//buttonBack.defineEvents();
gridTemplate.dom.toolbar.appendChild(buttonsTemplate);
gridTemplate.setVisible(true);
gridTemplate.dom.toolbar.getElementsByTagName('input')[0].style.visibility = 'visible';
buttonNew.getHTML().style.top = '-3px';
}
if (processFileManagerOptionPath == "public") {
windowFilesManager.setTitle("Public Files".translate());
loadPublic();
if (flagGridPublic) {
windowFilesManager.addItem(gridPublic);
flagGridPublic = false;
}
var buttonsPublic = document.createElement("div");
buttonsPublic.id = "buttonsPublic";
buttonsPublic.style.display = "inlineBlock";
buttonsPublic.style.float = "right";
buttonsPublic.appendChild(buttonUpload.getHTML());
buttonsPublic.appendChild(buttonPublicCreate.getHTML());
//buttonsPublic.appendChild(buttonBack.getHTML());
buttonUpload.defineEvents();
buttonPublicCreate.defineEvents();
//buttonBack.defineEvents();
gridPublic.dom.toolbar.appendChild(buttonsPublic);
gridPublic.dom.toolbar.getElementsByTagName('input')[0].style.visibility = 'visible';
gridPublic.setVisible(true);
buttonPublicCreate.getHTML().style.top = '-3px';
}
}
/**
* Check Templates Assigned Derivation Screen
* @returns {checkDerivationScreen}
*/
function checkDerivationScreen () {
var gridTemplateAux = gridTemplate,
idRichText = "gridTemplateButtonRichTextEditor",
rowsGrid,
columnsGrid,
dataRowGrid,
columnRichText,
index = 0,
cell = {},
message = "Editor unavailable",
tooltipMafeClass = "mafe-action-tooltip-black",
i,
max;
rowsGrid = gridTemplateAux.getItems();
columnsGrid = gridTemplateAux.getColumns();
columnRichText = $.grep(columnsGrid, function (item, index) {
return item.id === idRichText;
});
for (i = 0, max = rowsGrid.length; i < max; i += 1) {
dataRowGrid = rowsGrid[i].data.customKeys;
if (dataRowGrid.prf_assigned_routing_screen && columnRichText.length) {
columnRichText[index].disableCell(i);
cell = columnRichText[index].getCells().length ? columnRichText[index].getCells()[i] : cell;
if (!$.isEmptyObject(cell)) {
$(cell.getHTML()).attr('title', message).tooltip({
tooltipClass: tooltipMafeClass,
position: {
my: 'center top',
at: 'center bottom+4'
}
});
}
}
}
return this;
}
if (optionCreation == "CREATION_NORMAL") {
windowFilesManager.open();
openFolder();
} else {
windowFilesManager.open();
openFolder();
newfile();
}
checkDerivationScreen();
};
PMDesigner.ProcessFilesManager.createFirst = function (processFileManagerOptionPath, optionCreation) {
PMDesigner.ProcessFilesManager(processFileManagerOptionPath, optionCreation);
};