PHP Classes

File: public/js/tools/page-export-import.js

Recommend this page to a friend!
  Classes of Fabrice Fesch   Melis CMS   public/js/tools/page-export-import.js   Download  
File: public/js/tools/page-export-import.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Melis CMS
Content management system that provides its tools
Author: By
Last change:
Date: 1 year ago
Size: 18,203 bytes
 

Contents

Class file image Download
$(document).ready(function(){ var $body = $("body"); var importFormData; var idsMap; var filename = ''; /** * Process the pages export */ $body.on("click", "#btn-export-pages", function(){ var flag = true; melisCoreTool.pending('#btn-export-pages'); updateProgressValue(0); $(".page-export-form").addClass("hidden"); var dataString = $("#pageExportForm").serializeArray(); //send ajax request to export pages $.ajax({ url: '/melis/MelisCms/PageExport/exportPage', data: dataString, type: 'POST', dataType: 'text', mimeType: 'text/plain; charset=x-user-defined', beforeSend: function(){ setTimeout(function(){ updateProgressValue(20); }, 100); } }).done(function(data, status, request){ var oData; try { oData = JSON.parse(data); } catch (e) { flag = false; updateProgressValue(100); var fileName = request.getResponseHeader("fileName"); var mime = request.getResponseHeader("Content-Type"); var newContent = ""; for (var i = 0; i < data.length; i++) { newContent += String.fromCharCode(data.charCodeAt(i) & 0xFF); } var bytes = new Uint8Array(newContent.length); for (var i = 0; i < newContent.length; i++) { bytes[i] = newContent.charCodeAt(i); } var blob = new Blob([bytes], {type: mime}); saveAs(blob, fileName); melisCore.flashMessenger(); melisHelper.melisOkNotification( translations.tr_melis_cms_tree_export_title, translations.tr_melis_cms_tree_export_notification_message, '#72af46' ); } if (flag) melisHelper.melisKoNotification(translations.tr_melis_cms_tree_export_page, '', [oData.message]); $body.find('#btn-export-pages').siblings('button.btn.btn-danger.pull-left').trigger('click'); melisCoreTool.done('#btn-export-pages'); }).fail(function(data){ melisCoreTool.done('#btn-export-pages'); }); }); /** * Function to show progress * on exporting/importing pages * * @param val */ function updateProgressValue(val) { $(".page-export-progress prog_percent").text(val); $("div#exportImportProgressbar").attr("arial-valuenow", val) .css("width", val + "%") .parent().parent().removeClass("hidden"); } /** * Test File */ $body.on('click', '#page-tree-import-test', function () { melisCoreTool.pending('#page-tree-import-test'); filename = $body.find('.bootstrap-filestyle.input-group input').val(); submitImportForm($('#id_meliscms_tree_sites_import_page_form')); }); $body.on('change', 'input[name=page_tree_import]', function() { var max_size = $body.find('#page-import-max-file-size').val(); var file_size = this.files[0].size; if (parseInt(file_size) > parseInt(max_size)) { melisCoreTool.pending('#page-tree-import-test'); melisHelper.melisKoNotification( translations.tr_melis_cms_page_tree_import, translations.tr_melis_cms_page_tree_error_file_size_exceeded + formatBytes(max_size, 2), [] ); } else { melisCoreTool.done('#page-tree-import-test'); } }); function formatBytes(bytes, decimals) { if (bytes === 0) return '0 Bytes'; const k = 1024; const dm = decimals < 0 ? 0 : decimals; const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; } function submitImportForm (form) { form.unbind("submit"); form.on("submit", function(e) { e.preventDefault(); var formData = new FormData(this); $.ajax({ type: 'POST', url: '/melis/MelisCms/PageImport/checkImportForm', data: formData, cache: false, contentType: false, processData: false, beforeSend: function () { $body.find('#pageImportConsole').text(''); $body.find('#pageImportConsole').css('display', ''); $body.find('#pageImportConsole').append('<p>' + translations.tr_melis_cms_page_tree_import_name_of_file + ': ' + filename + '</p>'); $body.find('#pageImportConsole').append('<p>' + translations.tr_melis_cms_page_tree_import_validated + ': <span style="color: red;">' + translations.tr_meliscms_common_no + '</span></p>'); $body.find('#pageImportConsole').append('<div id="pageImportProcessing"><p>' + translations.tr_melis_cms_page_tree_import_modal_processing + ' <i class="fa fa-spinner fa-spin"></i></p></div>'); } }).done(function (data) { if (data.success) { importTest(data.result); importFormData = data.result; } else { melisHelper.melisKoNotification(translations.tr_melis_cms_page_tree_import, '', data.errors); melisCoreTool.done('#page-tree-import-test'); } }).fail(function (data) { melisCoreTool.done('#page-tree-import-test'); }); }); form.submit(); } function importTest(formData) { $.ajax({ type: 'POST', url: '/melis/MelisCms/PageImport/importTest', data: {formData: JSON.stringify(formData)}, beforeSend: function () { $body.find('#pageImportConsole').animate({ scrollTop: $body.find('#pageImportConsole').get(0).scrollHeight }, 2000); } }).done(function (data) { if (data.success) { $body.find('#importPageForm').css('display', 'none'); $body.find('#importPageValidated').css('display', ''); $body.find('#importPageValidated .tab-content .tab-pane').append('<p>' + translations.tr_melis_cms_page_tree_import_name_of_file + ': ' + formData.page_tree_import.name + '</p>'); $body.find('#importPageValidated .tab-content .tab-pane').append('<p>' + translations.tr_melis_cms_page_tree_import_validated +': <span style="color: green;">' + translations.tr_meliscms_common_yes + '</span></p>'); var btnCancel = '<button type="button" data-dismiss="modal" class="btn btn-danger pull-left">' + translations.tr_meliscms_tool_sites_cancel + '</button>'; var btnImport = '<button type="button" class="btn btn-success" id="page-tree-import">' + translations.tr_melis_cms_page_tree_import_file + '</button>'; $body.find('#importPageValidated .btn-container').append(btnCancel); $body.find('#importPageValidated .btn-container').append(btnImport); } else { $body.find('#pageImportConsole #pageImportProcessing').text(''); $body.find('#pageImportConsole #pageImportProcessing').append('<p>' + translations.tr_melis_cms_page_tree_import_modal_processing_done + ' <i style="color: green;" class="fa fa-check-circle"></i></p>'); $body.find('#pageImportConsole').append('<p style="color: red;">' + translations.tr_melis_cms_page_tree_import_modal_errors + ':</p>'); $.each(data.errors, function (key, error) { $body.find('#pageImportConsole').append('<p style="color: red;"> - ' + error + '</p>'); }); $body.find('#pageImportConsole').animate({ scrollTop: $body.find('#pageImportConsole').get(0).scrollHeight }, 2000); } melisCoreTool.done('#page-tree-import-test'); }).fail(function (data) { melisCoreTool.done('#page-tree-import-test'); }); } $body.on('click', '#page-tree-import', function () { var pageid = $(this).closest('#id_meliscms_page_import_modal').data('pageid'); melisCoreTool.confirm( translations.tr_melis_cms_page_tree_import_continue_and_import, translations.tr_meliscms_tool_sites_cancel, translations.tr_melis_cms_page_tree_import_modal_are_you_sure, translations.tr_melis_cms_page_tree_import_modal_are_you_sure_content, function () { melisCoreTool.pending('#page-tree-import'); $.ajax({ type: 'POST', url: '/melis/MelisCms/PageImport/importPage', data: { formData: JSON.stringify(importFormData), pageid: pageid }, beforeSend: function () { $body.find('#pageImportConsole').css('display', ''); $body.find('#pageImportConsole').append('<p>' + translations.tr_melis_cms_page_tree_import_name_of_file + ': ' + importFormData.page_tree_import.name + '</p>'); $body.find('#pageImportConsole').append('<p>' + translations.tr_melis_cms_page_tree_import_validated + ': <span style="color: red;">' + translations.tr_meliscms_common_no + '</span></p>'); $body.find('#pageImportConsole').append('<div id="pageImportProcessing"><p>' + translations.tr_melis_cms_page_tree_import_modal_processing + ' <i class="fa fa-spinner fa-spin"></i></p></div>'); } }).done(function (data) { var btnClose = '<button type="button" id="importPageDoneClose" data-dismiss="modal" class="btn btn-danger pull-left" style="margin-top: -15px; margin-left: -15px;">' + translations.tr_melis_cms_page_tree_import_close + '</button>'; $body.find('#importPageValidated').css('display', 'none'); $body.find('#importPageDone').css('display', ''); if (data.success) { idsMap = data.idsMap; $body.find('#importPageDone .tab-content .tab-pane .main-error').append('<p>' + translations.tr_melis_cms_page_tree_import_name_of_file + ': ' + importFormData.page_tree_import.name + '</p>'); $body.find('#importPageDone .tab-content .tab-pane .main-error').append('<p>' + translations.tr_melis_cms_page_tree_import_result + ': <span style="color: green;">' + translations.tr_melis_cms_page_tree_import_success + '</span></p>'); $body.find('#importPageDone .tab-content .tab-pane .main-error').append('</br>'); var text = translations.tr_melis_cms_page_tree_import_modal_done + '<br/>' + data.pagesCount + translations.tr_melis_cms_page_tree_import_modal_done2_p + ' ' + $body.find('.pageImportModal').data('pagename') + ' (' + $body.find('.pageImportModal').data('pageid') + ')'; if (data.pagesCount == 1) { text = translations.tr_melis_cms_page_tree_import_modal_done + '<br/>' + data.pagesCount + translations.tr_melis_cms_page_tree_import_modal_done2_s + ' ' + $body.find('.pageImportModal').data('pagename') + ' (' + $body.find('.pageImportModal').data('pageid') + ')'; } $body.find('#importPageDone .tab-content .tab-pane .main-error').append(text); $body.find('#importPageDone .tab-content .tab-pane .main-error').append('</br>'); $body.find('#importPageDone .tab-content .tab-pane .main-error').append('</br>'); if (!data.keepIds) { $body.find('#importPageDone .tab-content .tab-pane .main-error').append('<p><i style="color:red;">NOTE : </i>' + translations.tr_melis_cms_page_tree_import_file_final_message_csv + '</p>'); } else { $body.find('#importPageDone .tab-content .tab-pane .main-error').append('<p><i style="color:red;">NOTE : </i>' + translations.tr_melis_cms_page_tree_import_file_final_message_csv_keep_ids + '</p>'); } $body.find('#importPageDone .btn-container').append(btnClose); melisCore.flashMessenger(); melisHelper.melisOkNotification( translations.tr_melis_cms_page_tree_import_title, translations.tr_melis_cms_page_tree_import_notification_message, '#72af46' ); refreshTreeview(data.firstPage); // download for csv mapping array if (idsMap != false) { $.ajax({ type: 'POST', url: '/melis/MelisCms/PageImport/exportCsv', data: { idsMap: idsMap }, success: function (data, textStatus, request) { if (data) { var fileName = request.getResponseHeader("fileName"); var mime = request.getResponseHeader("Content-Type"); var blob = new Blob([request.responseText], {type: mime}); saveAs(blob, fileName); } } }); } } else { $body.find('#importPageDone .tab-content .tab-pane .main-error').append('<p>' + translations.tr_melis_cms_page_tree_import_name_of_file + ': ' + importFormData.page_tree_import.name + '</p>'); $body.find('#importPageDone .tab-content .tab-pane .main-error').append('<p>' + translations.tr_melis_cms_page_tree_import_result + ': <span style="color: red;">' + translations.tr_melis_cms_page_tree_import_failed + '</span></p>'); $body.find('#importPageDone .tab-content .tab-pane .main-error').append('</br>'); $body.find('#importPageDone .tab-content .tab-pane .main-error').append(translations.tr_melis_cms_page_tree_import_modal_unexpected_errors + translations.tr_melis_cms_page_tree_import_modal_unexpected_errors2 + '</br>' + translations.tr_melis_cms_page_tree_import_modal_unexpected_error_detail + '</br>'); $body.find('#pageImportDoneConsole').css('display', ''); $.each(data.errors, function (key, error) { $body.find('#importPageDone #pageImportDoneConsole').append('<p style="color: red;"> - ' + error + '</p>'); }); $body.find('#importPageDone .btn-container').append(btnClose); } melisCoreTool.done('#page-tree-import'); }).fail(function() { melisCoreTool.done('#page-tree-import'); }); } ); }); function refreshTreeview(pageNumber, self) { optionalArg = (typeof self === 'undefined') ? 0 : self; $.ajax({ url : '/melis/MelisCms/TreeSites/getPageIdBreadcrumb?idPage='+pageNumber+'&includeSelf='+optionalArg, encode : true, dataType : 'json', }).done(function(data){ //process array to add to make this format '1/3/5/6...' var newData = []; var parentNode; $.each( data, function( key, value ) { newData.push("/"+value); if(key === 0){ parentNode = value; } }); newData = newData.toString(); newData = newData.replace(/,/g,''); var tree = $("#id-mod-menu-dynatree").fancytree("getTree"); // reload tree pages tree.reload({ url: '/melis/MelisCms/TreeSites/get-tree-pages-by-page-id' }).done(function(){ tree.loadKeyPath(newData, function(node, status){ if (status == "ok"){ node.setActive(true).done(function(){ node.setExpanded(true); }); } }).done(function(){ tree.clearFilter(); // remove duplicated brach of the tree while rapidly refreshing the tree [ plugin bug fix ] if ( $("#id-mod-menu-dynatree .ui-fancytree > li:last-child").hasClass("fancytree-lastsib") === false){ $("#id-mod-menu-dynatree .ui-fancytree > li:last-child").remove(); } }); }); }).fail(function(xhr, textStatus, errorThrown){ // error modal alert( translations.tr_meliscore_error_message ); }); } // toggle checkbox $body.on("click", ".page-import-cont input[type=checkbox]", function () { var $this = $(this); if ($this.is(':checked')) { $this.prop("checked", true); $this.prev("span").find(".cbmask-inner").addClass('cb-active'); } else { $this.not(".requried-module").prop("checked", false); $this.parents(".page-import-cont").find(".cbmask-inner").removeClass('cb-active'); } }); });