/*Powered By: Manaknightdigital Inc. https://manaknightdigital.com/ Year: 2021*/ var mkd_events = (function () { var topics = {}; var hOP = topics.hasOwnProperty; return { subscribe: function (topic, listener) { // Create the topic's object if not yet created if (!hOP.call(topics, topic)) topics[topic] = []; // Add the listener to queue var index = topics[topic].push(listener) - 1; // Provide handle back for removal of topic return { remove: function () { delete topics[topic][index]; } }; }, publish: function (topic, info) { // If the topic doesn't exist, or there's no listeners in queue, just leave if (!hOP.call(topics, topic)) return; // Cycle through topics queue, fire! topics[topic].forEach(function (item) { item(info != undefined ? info : {}); }); } }; })(); let image_id_uppload_library = ''; let image_url_uppload_library = ''; jQuery(document).ready(function () { jQuery("#sidebarCollapse").on("click", function () { jQuery("#sidebar").toggleClass("active"); }); //import csv code jQuery("#btn-choose-csv").click(function (e) { e.preventDefault(); jQuery("#csv-file").trigger("click"); }); jQuery("#csv-file").change(function () { jQuery("#import-csv").trigger("submit"); }); jQuery("#import-csv").submit(function (e) { e.preventDefault(); var formData = new FormData(this); var url = jQuery(this).attr("action"); jQuery(this).addClass("d-none"); jQuery.ajax({ url: url, type: "POST", data: formData, success: function (res) { var html = ""; if (res.preview == true) { var data = res.data; for (var i = 0; i < data.length; i++) { html += ""; for (var x = 0; x < data[i].length; x++) { html += "" + data[i][x] + ""; } html += ""; } jQuery("#csv-table-body").html(html); jQuery("#csv-table").removeClass("d-none"); jQuery("#btn-save-csv").removeClass("d-none"); } }, cache: false, contentType: false, processData: false, }); }); jQuery("#btn-save-csv").click(function (e) { e.preventDefault(); var model = jQuery("#btn-csv-upload-dialog").data("model"); jQuery("#import-csv").attr("action", "/v1/api/file/import/" + model); jQuery("#import-csv").trigger("submit"); }); jQuery(".modal-image").click(function () { var src = jQuery(this).attr("src"); jQuery("#modal-image-slot").attr("src", src); jQuery("#modal-image-show").modal("show"); }); var page = 0; var num_page = 0; var image_selected = ""; var field = ""; // ====== Assets =========== window.asset_page = 0; window.asset_num_page = 0; window.asset_per_page = 0; window.asset_num_item = 0; window.asset_selected_id = 0; window.asset_selected_img = ""; // ====== CROPPING =========== window.crop_object = null; window.crop_width = 500; window.crop_height = 500; window.crop_boundary_width = 500; window.crop_boundary_height = 500; window.crop_output_image = "output_image"; window.crop_image_id = 0; window.crop_image_url = ""; jQuery(".mkd-close-modal").click(function () { jQuery("#mkd-media-gallery-wrapper").html(""); window.asset_page = 0; window.asset_num_page = 0; window.asset_per_page = 0; window.asset_num_item = 0; window.asset_selected_id = 0; window.asset_selected_img = ""; if (window.crop_object) { window.crop_object.destroy(); } window.crop_object = null; window.crop_width = 500; window.crop_height = 500; window.crop_boundary_width = 500; window.crop_boundary_height = 500; window.crop_output_image = "output_image"; window.crop_image_id = 0; window.crop_image_url = ""; }); jQuery("#mkd-media-choose").click(function () { if (window.asset_selected_id != 0) { jQuery("#" + window.crop_image_id).val(window.asset_selected_id); jQuery("#" + window.crop_image_url).val(window.asset_selected_img); jQuery("#" + window.crop_output_image).attr("src", window.asset_selected_img); jQuery("#mkd-media-gallery").modal("hide"); jQuery("#mkd-media-upload-container").hide(); jQuery("#mkd-media-crop-container").hide(); jQuery("#mkd-media-gallery-container").show(); jQuery(".mkd-media-panel-1").show(); jQuery(".mkd-media-panel-2").hide(); jQuery(".mkd-media-panel-3").hide(); jQuery("#mkd-media-gallery-wrapper").html(""); window.asset_page = 0; window.asset_num_page = 0; window.asset_per_page = 0; window.asset_num_item = 0; window.asset_selected_id = 0; window.asset_selected_img = ""; window.crop_object = null; window.crop_width = 500; window.crop_height = 500; window.crop_boundary_width = 500; window.crop_boundary_height = 500; window.crop_output_image = "output_image"; window.crop_image_id = 0; window.crop_image_url = ""; } }); jQuery("#mkd-load-more").click(function () { if (window.asset_page + window.asset_per_page >= window.asset_num_item) { jQuery("#mkd-load-more-container").hide(); } jQuery.ajax({ type: "GET", url: "/v1/api/assets/" + window.asset_page }).done(function (result) { window.asset_page = result.page; window.asset_num_page = result.num_page; window.asset_num_item = result.num_item; window.asset_per_page = result.per_page; var items = result.item; for (var i = 0; i < items.length; i++) { var element = items[i]; jQuery("#mkd-media-gallery-wrapper").append( '
' ); } if (window.asset_page + window.asset_per_page >= window.asset_num_item) { jQuery("#mkd-load-more-container").hide(); } window.asset_page = window.asset_page + window.asset_per_page; jQuery(".mkd-gallery-image-image").click(function () { var id = Number(jQuery(this).attr("data-id")); jQuery(this).addClass("active"); window.asset_selected_id = id; window.asset_selected_img = jQuery(this).attr("src"); }); }); }); jQuery(".mkd-choose-image").click(function () { var view_width = Number(jQuery(this).attr("data-view-width")); var view_height = Number(jQuery(this).attr("data-view-height")); var boundary_width = Number(jQuery(this).attr("data-boundary-width")); var boundary_height = Number(jQuery(this).attr("data-boundary-height")); var image_preview = jQuery(this).attr("data-image-preview"); var image_id = jQuery(this).attr("data-image-id"); var image_url = jQuery(this).attr("data-image-url"); window.crop_output_image = image_preview; window.crop_image_id = image_id; window.crop_image_url = image_url; if (Number.isInteger(view_width)) { window.crop_width = Number(view_width); } if (Number.isInteger(view_height)) { window.crop_height = Number(view_height); } if (Number.isInteger(boundary_width)) { window.crop_boundary_width = Number(boundary_width); } if (Number.isInteger(boundary_height)) { window.crop_boundary_height = Number(boundary_height); } jQuery("#mkd-media-gallery").modal("show"); jQuery("#mkd-load-more-container").show(); jQuery.ajax({ type: "GET", url: "/v1/api/assets/0" }).done(function (result) { window.asset_page = result.page; window.asset_num_page = result.num_page; window.asset_num_item = result.num_item; window.asset_per_page = result.per_page; var items = result.item; for (var i = 0; i < items.length; i++) { var element = items[i]; jQuery("#mkd-media-gallery-wrapper").append( '
' ); } if (result.page + result.per_page >= result.num_item) { jQuery("#mkd-load-more-container").hide(); } window.asset_page = window.asset_page + window.asset_per_page; jQuery(".mkd-gallery-image-image").click(function () { var id = Number(jQuery(this).attr("data-id")); jQuery(this).addClass("active"); window.asset_selected_id = id; window.asset_selected_img = jQuery(this).attr("src"); }); }); }); jQuery("#mkd-media-upload").click(function () { jQuery("#mkd-media-gallery-container").hide(); jQuery(".mkd-media-panel-1").hide(); jQuery(".mkd-media-panel-3").hide(); jQuery("#mkd-media-upload-container").show(); jQuery(".mkd-media-panel-2").show(); }); mkd_events.subscribe("crop_image", function (e) { jQuery("#mkd-media-upload-container").hide(); jQuery("#mkd-media-crop-container").show(); jQuery(".mkd-media-panel-1").hide(); jQuery(".mkd-media-panel-2").hide(); jQuery(".mkd-media-panel-3").show(); var el = document.getElementById("mkd-crop-upload-container"); window.crop_object = new Croppie(el, { enableExif: true, viewport: { width: window.crop_width, height: window.crop_height }, boundary: { width: window.crop_boundary_width, height: window.crop_boundary_height } }); window.crop_object.bind({ url: e.url }); jQuery("#mkd-media-crop").click(function () { window.crop_object .result({ type: "base64", format: "png" }) .then(function (base64) { jQuery.ajax({ type: "POST", url: "/v1/api/image/upload", data: { image: base64 } }) .done(function (result) { mkd_events.publish("image_uploaded", result); }) .fail(function (jqXHR, textStatus) { alert("Image Upload Failed"); console.log(jqXHR) }); }); }); }); mkd_events.subscribe("file_upload", function (e) { var formData = new FormData(); formData.append("file", e.url, "file"); jQuery.ajax({ url: "/v1/api/file/upload", type: "post", data: formData, processData: false, contentType: false, cache: false, async: false, success: function (data) { jQuery("#" + e.id).val(data.file); jQuery("#" + e.id + "_id").val(data.id); jQuery("#" + e.id + "_text").html(data.file); } }); }); mkd_events.subscribe("image_uploaded", function (e) { jQuery("#mkd-media-gallery").modal("hide"); jQuery("#mkd-media-upload-container").hide(); jQuery("#mkd-media-crop-container").hide(); jQuery("#mkd-media-gallery-container").show(); jQuery(".mkd-media-panel-1").show(); jQuery(".mkd-media-panel-2").hide(); jQuery(".mkd-media-panel-3").hide(); jQuery("#" + window.crop_output_image).attr("src", e.image); jQuery("#" + window.crop_image_id).val(e.id); jQuery("#" + window.crop_image_url).val(e.image); jQuery("#mkd-media-gallery-wrapper").html(""); window.asset_page = 0; window.asset_num_page = 0; window.asset_num_item = 0; window.asset_selected_id = 0; window.asset_selected_img = ""; if (window.crop_object) { window.crop_object.destroy(); } window.crop_object = null; window.crop_width = 500; window.crop_height = 500; window.crop_boundary_width = 500; window.crop_boundary_height = 500; window.crop_output_image = "output_image"; window.crop_image_id = 0; window.crop_image_url = ""; }); mkd_events.subscribe("file_import", function (e) { var formData = new FormData(); formData.append("file", e.url, "file"); jQuery.ajax({ url: "/v1/api/file/import/" + e.model, type: "post", data: formData, processData: false, contentType: false, cache: false, async: false, success: function (data) { alert("Imported Data successfully"); }, error: function (error) { alert("Error: " + error.responseJSON.message); } }); }); //Spreadsheet ================== jQuery("#Spreadsheet_update").submit(function (e) { e.preventDefault(); var id = jQuery("#spreadsheet_id").val(); var sheet_data = luckysheet.getAllSheets(); jQuery.ajax({ type: "POST", url: "/v1/api/update_sheet/" + id, data: JSON.stringify(sheet_data), contentType: "application/json; charset=utf-8", dataType: "json", success: function (result) { location.replace("/admin/spreadsheet/0"); }, error: function (error) { location.replace("/admin/spreadsheet/0"); } }); }); //Marketing Site /** * * Marketing js function to generate slug */ jQuery(document).on('keyup , paste', '.generate_slug_marketing', function (e) { e.preventDefault(); var title = jQuery(this).val(); if (title.length > 0) { jQuery.ajax({ url: '/v1/api/get_marketing_slug/' + title, timeout: 30000, method: 'POST', dataType: 'JSON', success: function (response) { if (response.slug) { jQuery('#form_slug_marketing').val(response.slug); } if (response.error) { alert('Something went wrong!'); } }, error: function () { // alert('Connection time out!'); } }); } }); //SUNEDITOR /** * Sun editor code */ if (document.getElementsByClassName('sun-editor-component').length > 0) { var sun_editor_list = document.getElementsByClassName('sun-editor-component'); for (let i = 0; i < sun_editor_list.length; i++) { var editor_data = SUNEDITOR.create((document.getElementById(sun_editor_list[i].id) || 'sun-editor'), { "buttonList": [ [ "undo", "redo", "font", "fontSize", "formatBlock", "paragraphStyle", "blockquote", "bold", "underline", "italic", "strike", "subscript", "superscript", "fontColor", "hiliteColor", "textStyle", "removeFormat", "outdent", "indent", "align", "horizontalRule", "list", "lineHeight", "table", "link", "image", "video", "audio", "imageGallery", "fullScreen", "showBlocks", "codeView", "preview", "print", "save", "template" ] ], height: '800px' }); jQuery(window).click(function () { document.getElementById(sun_editor_list[i].id).value = editor_data.getContents(); }); } } //per pages jQuery('#change_per_page').change(function () { per_page = jQuery('#change_per_page').val(); jQuery('#form_per_page').val(per_page); var url = new URL(window.location.href); var url_sort = jQuery(this).attr('data-sorturl'); url.pathname = url_sort; url.searchParams.set('per_page_sort', per_page); window.location.href = url.href; }); //uppload var picture = new window.uppload_Uppload({ call: ".uppload-button", bind: ".uppload-image", lang: window.uppload_en, uploader: window.uppload_fetchUploader({ endpoint: "/v1/api/file/upload", responseFunction: json => { jQuery("#" + image_url_uppload_library).val(json.file); jQuery("#" + image_url_uppload_library + "_id").val(json.id); jQuery("#" + image_url_uppload_library + "_text").html(json.file); jQuery("#" + image_url_uppload_library + "_complete").text("Upload Complete"); jQuery("#" + image_url_uppload_library + "_complete").parent().find('.edit-preview-image').attr('src', json.file); jQuery("#" + image_url_uppload_library + "_complete").parent().find('.img-delete-close').remove(); jQuery("#" + image_url_uppload_library + "_complete").parent().find('label').after(''); } }) }); jQuery(document).on('click', '.image_id_uppload_library', function () { image_id_uppload_library = jQuery(this).attr('data-image-id'); image_url_uppload_library = jQuery(this).attr('data-image-url'); }); jQuery(document).on('click','.img-delete-close',function(){ jQuery(this).parent().find('.edit-preview-image').attr('src',''); jQuery(this).parent().find('.check_change_event').val(''); jQuery(this).parent().find('.feature_image_complete').text(''); jQuery(this).remove(); }); jQuery(document).on('click', '.media-gallery-upload', function () { jQuery.ajax({ type: "POST", url: "/v1/api/image/get_all", data: {}, success: function (response) { }, error: function (response) { } }) .done(function (result) { mkd_events.publish("image_uploaded", result); }) .fail(function (jqXHR, textStatus) { alert("Image Upload Failed"); console.log(jqXHR) }); }); picture.use([ new window.uppload_Local(), new window.uppload_Camera(), new window.uppload_Instagram(), new window.uppload_Facebook(), new window.uppload_URL(), new window.uppload_Screenshot(), new window.uppload_Pinterest(), new window.uppload_Flickr(), new window.uppload_NineGag(), new window.uppload_DeviantArt(), new window.uppload_ArtStation(), new window.uppload_Twitter(), new window.uppload_Flipboard(), new window.uppload_Fotki(), new window.uppload_LinkedIn(), new window.uppload_Reddit(), new window.uppload_Tumblr(), new window.uppload_WeHeartIt(), new window.uppload_Crop(), new window.uppload_Brightness(), new window.uppload_Rotate(), new window.uppload_Flip(), new window.uppload_Preview(), new window.uppload_Blur(), new window.uppload_Contrast(), new window.uppload_Grayscale(), new window.uppload_HueRotate(), new window.uppload_Invert(), new window.uppload_Sepia(), new window.uppload_Saturate(), ]); }); function onFileSelected(event) { var selectedFile = event.target.files[0]; var reader = new FileReader(); reader.onload = function (e) { mkd_events.publish("crop_image", { url: e.target.result }); }; reader.readAsDataURL(selectedFile); } function onFileUploaded(event, id) { var selectedFile = event.target.files[0]; var reader = new FileReader(); reader.onload = function (e) { mkd_events.publish("file_upload", { url: selectedFile, id: id }); }; reader.readAsDataURL(selectedFile); } function onFileImport(event, model) { alert( "Remember to have to the following in CSV: \n1.All field seperate by ;. \n2.ID is first field. \n3.All field wrap around with double quotes.\n4.1 line per row.\n5.No header row." ); var selectedFile = event.target.files[0]; var reader = new FileReader(); reader.onload = function (e) { mkd_events.publish("file_import", { url: selectedFile, model: model }); }; reader.readAsDataURL(selectedFile); } function mkd_is_number(evt, obj) { var charCode = evt.which ? evt.which : event.keyCode; var value = obj.value; var dotcontains = value.indexOf(".") != -1; if (dotcontains) { if (charCode == 46) { return false; } } if (charCode == 46) { return true; } if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; }