$( window ).load(function() { //mention legales editor personalization.tinymce_mentios_legales_set_content(); personalization.tinymce_privacy_set_content(); }); var announcement_table = $('#announcement_table').DataTable({ "responsive": true, "autoWidth": false, "processing": true, //Feature control the processing indicator. "serverSide": false, //Feature control DataTables' server-side processing mode. "oLanguage": fr_onload_lang.oLanguage, //Set column definition initialisation properties. "columnDefs": [ { "targets": [ 2, 3], "width": "200px" }, ], "ajax": { "url": app.get_vars().baseurl + "personalization/personalization/get_announcement", "type": "POST", dataSrc:"" }, "aaSorting": [], "columns": [ {"data": "title"}, {"data": "content"}, {"data": "expiration"}, { data: null, render: function (data, type, full, meta ) { if(data.status=='enable'){ return '
' + ' ' + '' + '' + '' + '
' + '
' + ' '; }else{ return '
' + ' ' + '' + '' + '' + '
' + '
' + ' '; } } } ] }); var personalization = (function ($, window, jQuery) { var _vars_ = {}; var $uploadCrop; var upload = $('#upload'); var container = $('#container-image'); var upload_result = $('.upload-result'); var form = $('#form'); var banner_folder = 'resources/images/frontoffice/banner/'; return { "set_vars": function (options) { $.extend(_vars_, options || {}); }, "get_vars" : function(){ return _vars_; }, set_require: function() { var set_require = $("#set_require"); var validated; set_require.on('click', function (ev) { $('#registration_form_list input[type=checkbox]').each(function(){ var req = !this.checked ? 0 : 1; var ids = this.value; var json = { "req": req, "ids": ids } $.ajax({ url: app.get_vars().baseurl+"personalize/update_reg_form", type: 'POST', data : json, dataType: "json", success: function(result) { validated = true; } }); }) app._notify("success", "Mise à jour réussie"); }); }, registration : function() { var registration_form_list = $("#registration_form_list"); var cnt; $.ajax({ url: app.get_vars().baseurl+"personalize/get_reg_form", type: 'GET', dataType: 'json', success: function(res) { for (var i = 0; i < res.length; i++) { var req = res[i].is_required == 1 ? "checked=checked" : ""; var name = res[i].name.toUpperCase(); cnt += ''+( i + 1)+''+app.get_vars().set_preferences[res[i].name]+''+res[i].type.toUpperCase()+''; }; registration_form_list.append(cnt); } }); }, banner_load_box_cropper : function() { $uploadCrop = container.croppie({ viewport: { // width: 750, // height: 180, width: 800, height: 270, type: 'square' }, showZoomer: true // enableResize: true, //enableOrientation: true , boundary: { // width: 800, // height: 220, width: 850, height: 330, } }); upload.on('change', function () { personalization.banner_readFile(this); }); upload_result.on('click', function (ev) { var dialog = bootbox.dialog({ message: '

'+app.get_vars()._app.notif.loading+'

', closeButton: false }); if( $(".cr-image").attr('src') == undefined || $(".cr-image").attr('src') == "") { var formData1 = new FormData( $("#form_banner")[0] ); formData1.append('description', tinyMCE.activeEditor.getContent({format : 'raw'}) ) $.ajax({ url: app.get_vars().baseurl+"personalize/upload_description", type : 'POST', data : formData1, async : false, cache : false, contentType : false, processData : false, success: function(res) { $('#uploadBannerModal').modal('hide'); $(".cr-image").attr('src',''); $("textarea#description").val(''); dialog.modal('hide') location.reload(); } }); } else { $uploadCrop.croppie('result', { type: 'canvas', size: 'original', format : 'jpg' }).then(function (resp) { $('#imagebase64').val(resp); if (typeof FormData !== 'undefined') { var formData2 = new FormData( $("#form_banner")[0] ); formData2.append('description', tinyMCE.activeEditor.getContent({format : 'raw'}) ) if( document.getElementById("upload").value != "" ) { $.ajax({ url : app.get_vars().baseurl+"personalize/upload_banner", type : 'POST', data : formData2, async : false, cache : false, contentType : false, processData : false, success: function( data, textStatus, jQxhr ) { $('#image_banner').attr('src', app.get_vars().baseurl+''+banner_folder+''+data['banner']); $('#image_label').html(data['description']); $('#uploadBannerModal').modal('hide'); $(".cr-image").attr('src',''); $("textarea#description").val(''); location.reload(); dialog.modal('hide') }, error: function( jqXhr, textStatus, errorThrown ) { console.log( errorThrown ); dialog.modal('hide') } }); } } }); } }); }, banner_readFile : function(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $uploadCrop.croppie('bind', { url: e.target.result }); $('.upload-go').addClass('ready'); } reader.readAsDataURL(input.files[0]); } }, banner_get_image : function(type) { var banner = $('#image_banner'); var label = $('#image_label'); var container_image = $('#container-image'); var upload_btn = $('#upload'); // container_image.click(function(){ // upload_btn.trigger('click'); // }) $.ajax({ url: app.get_vars().baseurl+"personalize/get_banner", type: 'POST', dataType: "json", success: function(res) { // if( res['image'] !== undefined ) banner.attr('src', res['image']) // else // banner.attr('src', app.get_vars().baseurl+'resources/images/frontoffice/homepage/caroussel.png') // if( res['description'] !== undefined && res['description'] !== "" ) label.html(res['description']); if(!type){ tinymce.get('description').setContent( res['description'] ) } // else // label.html( "

En remerciement de votre fidélité, Company For Madagascar vous propose d'assister gratuitement aux spectacles et événements ci-dessous.

" + // "

Réservez vos places en vous connectant au moyen de vos identifiants LeMonde.fr

" ); } }); }, tinymce_mentios_legales : function(element,height) { tinymce.init({ code_dialog_height: 500, force_hex_style_colors : true, //force_p_newlines : true, //invalid_elements : "id", //forced_root_block : false, force_br_newlines : true, force_p_newlines : false, forced_root_block : '', // Needed for 3.x selector: element, language: 'fr_FR', height: height, menubar: false, plugins: [ 'advlist autolink lists link image charmap print preview anchor', 'searchreplace visualblocks code fullscreen', 'insertdatetime media table contextmenu paste code', 'anchor code', 'textcolor colorpicker', ], toolbar: 'code | anchor | undo redo | insert | styleselect | bold italic | fontselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', font_formats: 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;AkrutiKndPadmini=Akpdmi-n', content_css: [ '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i', '//www.tinymce.com/css/codepen.min.css'] }); }, tinymce_mentios_legales_set_content : function() { var status , description; var status_mentios_legales = $("#status_mentios_legales"); $.ajax({ url: app.get_vars().baseurl+"personalization/append_mentions_legales", type: 'GET', dataType: 'json', success: function(res) { status = res.status; description = res.description; status_mentios_legales.val(status); //tinymce.activeEditor.setContent(description); tinymce.get('tinymce_mentios_legales').setContent(description) } }); }, tinymce_mentios_legales_update_content : function() { var update_button = $("#update_mentions_legales"); update_button.on('click', function () { var description = tinyMCE.activeEditor.getContent({format : 'raw'}) ; var update_button = $("#update_mentions_legales"); //var description = tinymce.get('tinymce_mentios_legales').getContent() ; var status = $("#status_mentios_legales").val(); var json = {'description':description, 'status':status}; $.ajax({ url: app.get_vars().baseurl+"personalization/update_mentions_legales", type: 'POST', data : json, success: function(result) { app._notify(result.mtype, result.message); } }); }); }, /** * Terms and Privacy */ tinymce_privacy : function(element,height) { tinymce.init({ code_dialog_height: 500, force_hex_style_colors : true, force_br_newlines : true, force_p_newlines : false, forced_root_block : '', // Needed for 3.x selector: element, language: 'fr_FR', height: height, menubar: false, plugins: [ 'advlist autolink lists link image charmap print preview anchor', 'searchreplace visualblocks code fullscreen', 'insertdatetime media table contextmenu paste code', 'anchor code', 'textcolor colorpicker', ], toolbar: 'code | anchor | undo redo | insert | styleselect | bold italic | fontselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', font_formats: 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;AkrutiKndPadmini=Akpdmi-n', content_css: [ '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i', '//www.tinymce.com/css/codepen.min.css'] }); }, tinymce_privacy_set_content : function() { var status , description; var status_privacy = $("#status_privacy"); console.log(app.get_vars().baseurl+"personalization/append_privacy"); $.ajax({ url: app.get_vars().baseurl+"personalization/append_privacy", type: 'GET', dataType: 'json', success: function(res) { status = res.status; description = res.description; status_privacy.val(status); // tinyMCE.activeEditor.setContent(''); // tinymce.get('tinymce_privacy').setContent(description) tinymce.init({ selector:'#tinymce_privacy', code_dialog_height: 500, force_hex_style_colors : true, force_br_newlines : true, force_p_newlines : false, forced_root_block : '', // Needed for 3.x language: 'fr_FR', height: 500, menubar: false, plugins: [ 'advlist autolink lists link image charmap print preview anchor', 'searchreplace visualblocks code fullscreen', 'insertdatetime media table contextmenu paste code', 'anchor code', 'textcolor colorpicker', ], toolbar: 'code | anchor | undo redo | insert | styleselect | bold italic | fontselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', font_formats: 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;AkrutiKndPadmini=Akpdmi-n', content_css: [ '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i', '//www.tinymce.com/css/codepen.min.css'], init_instance_callback : function(editor) { editor.setContent(description); } }); } }); }, /** end */ event_logo_load : function(){ var logo_prev = $('#logo_prev'); var input_choose = $('[name="logo"]'); var form_logo = $('#form_logo'); var append_logo = $("img#prev_logo"); logo_prev.imagepreview({ input: '[name="logo"]', // reset: '#reset1', preview: '#logo_prev' }); input_choose.on('change', function () { var formData = new FormData( $('#form_logo')[0] ); $.ajax({ url : app.get_vars().baseurl+"personalize/upload_logo", type : 'POST', data : formData, async : false, cache : false, contentType : false, processData : false, success: function( result, textStatus, jQxhr ) { append_logo.attr('src' , result.image) app._notify(result.mtype, result.message); form_logo.trigger('reset'); if( result.mtype == "error") logo_prev.hide() }, error: function( jqXhr, textStatus, errorThrown ) { console.log( errorThrown ); } }); }); $.ajax({ url: app.get_vars().baseurl+"personalize/upload_get_logo", type: 'GET', success: function(result) { console.log(result); if( result.length ){ logo_prev.show(); append_logo.attr('src' , result) } } }); }, announcement_content: function (element, height) { function image_upload_handler (blobInfo, success, failure, progress) { var xhr, formData; xhr = new XMLHttpRequest(); xhr.withCredentials = false; xhr.open('POST', app.get_vars().baseurl + "personalization/post_acceptor", true); xhr.upload.onprogress = function (e) { progress(e.loaded / e.total * 100); }; xhr.onload = function() { var json; if (xhr.status === 403) { failure('HTTP Error: ' + xhr.status, { remove: true }); return; } if (xhr.status < 200 || xhr.status >= 300) { failure('HTTP Error: ' + xhr.status); return; } json = JSON.parse(xhr.responseText); if (!json || typeof json.location != 'string') { failure('Invalid JSON: ' + xhr.responseText); return; } success(json.location); }; xhr.onerror = function () { failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); }; formData = new FormData(); formData.append('file', blobInfo.blob(), blobInfo.filename()); // append CSRF token in the form data formData.append('csrf_token', $('meta[name="csrf_token"]').attr('content')); xhr.send(formData); }; tinymce.init({ selector:element, code_dialog_height: 500, force_hex_style_colors: true, //force_p_newlines : true, //invalid_elements : "id", //forced_root_block : false, force_br_newlines: true, force_p_newlines: false, forced_root_block: '', // Needed for 3.x language: 'fr_FR', height: height, menubar: false, plugins: [ 'advlist autolink lists link image charmap print preview anchor', 'searchreplace visualblocks code fullscreen', 'insertdatetime media table contextmenu paste code', 'anchor code', 'textcolor colorpicker', ], a11y_advanced_options: true, convert_urls : false, relative_urls: false, remove_script_host: false, paste_data_images: true, /* enable title field in the Image dialog*/ image_title: true, /* enable automatic uploads of images represented by blob or data URIs*/ automatic_uploads: true, // images_upload_url: app.get_vars().baseurl + "personalization/post_acceptor", images_upload_handler: image_upload_handler, /* URL of our upload handler (for more details check: https://www.tiny.cloud/docs/configure/file-image-upload/#images_upload_url) images_upload_url: 'postAcceptor.php', here we add custom filepicker only to Image dialog */ file_picker_types: 'image', /* and here's our custom image picker*/ file_picker_callback: function (cb, value, meta) { var input = document.createElement('input'); input.setAttribute('type', 'file'); input.setAttribute('accept', 'image/*'); /* Note: In modern browsers input[type="file"] is functional without even adding it to the DOM, but that might not be the case in some older or quirky browsers like IE, so you might want to add it to the DOM just in case, and visually hide it. And do not forget do remove it once you do not need it anymore. */ input.onchange = function () { var file = this.files[0]; var reader = new FileReader(); reader.onload = function () { /* Note: Now we need to register the blob in TinyMCEs image blob registry. In the next release this part hopefully won't be necessary, as we are looking to handle it internally. */ var id = 'blobid' + (new Date()).getTime(); var blobCache = tinymce.activeEditor.editorUpload.blobCache; var base64 = reader.result.split(',')[1]; var blobInfo = blobCache.create(id, file, base64); blobCache.add(blobInfo); /* call the callback and populate the Title field with the file name */ cb(blobInfo.blobUri(), { title: file.name }); }; reader.readAsDataURL(file); }; input.click(); }, toolbar: 'code | anchor | undo redo | insert | styleselect | bold italic | fontselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', font_formats: 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;AkrutiKndPadmini=Akpdmi-n', content_css: [ '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i', '//www.tinymce.com/css/codepen.min.css'] }); }, announcement_content_edit: function (element, height) { function image_upload_handler (blobInfo, success, failure, progress) { var xhr, formData; xhr = new XMLHttpRequest(); xhr.withCredentials = false; xhr.open('POST', app.get_vars().baseurl + "personalization/post_acceptor", true); xhr.upload.onprogress = function (e) { progress(e.loaded / e.total * 100); }; xhr.onload = function() { var json; if (xhr.status === 403) { failure('HTTP Error: ' + xhr.status, { remove: true }); return; } if (xhr.status < 200 || xhr.status >= 300) { failure('HTTP Error: ' + xhr.status); return; } json = JSON.parse(xhr.responseText); if (!json || typeof json.location != 'string') { failure('Invalid JSON: ' + xhr.responseText); return; } success(json.location); }; xhr.onerror = function () { failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); }; formData = new FormData(); formData.append('file', blobInfo.blob(), blobInfo.filename()); // append CSRF token in the form data formData.append('csrf_token', $('meta[name="csrf_token"]').attr('content')); xhr.send(formData); }; tinymce.init({ selector:element, code_dialog_height: 500, force_hex_style_colors: true, //force_p_newlines : true, //invalid_elements : "id", //forced_root_block : false, force_br_newlines: true, force_p_newlines: false, forced_root_block: '', // Needed for 3.x language: 'fr_FR', height: height, menubar: false, plugins: [ 'advlist autolink lists link image charmap print preview anchor', 'searchreplace visualblocks code fullscreen', 'insertdatetime media table contextmenu paste code', 'anchor code', 'textcolor colorpicker', ], a11y_advanced_options: true, convert_urls : false, relative_urls: false, remove_script_host: false, paste_data_images: true, /* enable title field in the Image dialog*/ image_title: true, /* enable automatic uploads of images represented by blob or data URIs*/ automatic_uploads: true, // images_upload_url: app.get_vars().baseurl + "personalization/post_acceptor", images_upload_handler: image_upload_handler, /* URL of our upload handler (for more details check: https://www.tiny.cloud/docs/configure/file-image-upload/#images_upload_url) images_upload_url: 'postAcceptor.php', here we add custom filepicker only to Image dialog */ file_picker_types: 'image', /* and here's our custom image picker*/ file_picker_callback: function (cb, value, meta) { var input = document.createElement('input'); input.setAttribute('type', 'file'); input.setAttribute('accept', 'image/*'); /* Note: In modern browsers input[type="file"] is functional without even adding it to the DOM, but that might not be the case in some older or quirky browsers like IE, so you might want to add it to the DOM just in case, and visually hide it. And do not forget do remove it once you do not need it anymore. */ input.onchange = function () { var file = this.files[0]; var reader = new FileReader(); reader.onload = function () { /* Note: Now we need to register the blob in TinyMCEs image blob registry. In the next release this part hopefully won't be necessary, as we are looking to handle it internally. */ var id = 'blobid' + (new Date()).getTime(); var blobCache = tinymce.activeEditor.editorUpload.blobCache; var base64 = reader.result.split(',')[1]; var blobInfo = blobCache.create(id, file, base64); blobCache.add(blobInfo); /* call the callback and populate the Title field with the file name */ cb(blobInfo.blobUri(), { title: file.name }); }; reader.readAsDataURL(file); }; input.click(); }, toolbar: 'code | anchor | undo redo | insert | styleselect | bold italic | fontselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', font_formats: 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;AkrutiKndPadmini=Akpdmi-n', content_css: [ '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i', '//www.tinymce.com/css/codepen.min.css'] }); // Prevent bootstrap dialog from blocking focusin $(document).on('focusin', function(e) { if ($(e.target).closest(".tox-tinymce-aux, .moxman-window, .tam-assetmanager-root").length) { e.stopImmediatePropagation(); } }); }, tinymce_announcement_content: function () { var t, a, n, save_button = $("#save_announcement"); save_button.on('click', function () { var save_button = $("#save_announcement"); var description = tinyMCE.activeEditor.getContent({format: 'raw'}); var announcement_title = $("#announcement_title").val(); var announcement_expiration = $("#announcement_expiration").val(); //var description = tinymce.get('tinymce_mentios_legales').getContent() ; var status = $("#announcement_status").val(); var json = { 'announcement_title': announcement_title, 'content': description, 'announcement_expiration': announcement_expiration, 'status': status }; if(description!=''&&announcement_title!=''&&announcement_expiration!=''){ $.ajax({ url: app.get_vars().baseurl + "personalization/personalization/check_enable_announcement", type: "GET", success: function(e) { if(e=='full'){ bootbox.dialog({ title: "Edit Announcement", className: "my-modal-with-sm event-normal-registration-modal table", message: 'There are is an existing announcement that was ENABLED. Saving this announcement will DISABLE the active announcement.', cache: !1, show: !1, size: 'large', buttons: [{ label: "RETOUR", className: "btn btn-default", callback: function() { announcement_table.ajax.reload(); } }, { label: "CONFIRMER", className: "btn btn-primary", callback: function() { $.trim($("#announcement_title").val()), a = $.trim($("#announcement_expiration").val()), n = tinymce.get("announcement_content").getContent(), "Choisissez un sujet de question ..." == a || "" == t || "" == n || "" == a ? app._notify("error", "Merci de remplir les champs suivants.") : $.ajax({ url: app.get_vars().baseurl + "personalization/save_announcement", type: 'POST', data: json, success: function (result) { announcement_table.ajax.reload(); app._notify(result.mtype, result.message); $("#announcement_title").val(""); $("#announcement_expiration").val(""); $("#announcement_content").val(""); tinyMCE.activeEditor.setContent(''); } }); } }] }).on("shown.bs.modal", function() { }).on("hide.bs.modal", function() { }).modal("show") }else{ $.trim($("#announcement_title").val()), a = $.trim($("#announcement_expiration").val()), n = tinymce.get("announcement_content").getContent(), "Choisissez un sujet de question ..." == a || "" == t || "" == n || "" == a ? app._notify("error", "Merci de remplir les champs suivants.") : $.ajax({ url: app.get_vars().baseurl + "personalization/save_announcement", type: 'POST', data: json, success: function (result) { announcement_table.ajax.reload(); app._notify(result.mtype, result.message); $("#announcement_title").val(""); $("#announcement_expiration").val(""); $("#announcement_content").val(""); tinyMCE.activeEditor.setContent(''); } }); } } }) }else{ app._notify('error', 'All fields are required.'); } }); }, "update_homepage_title": function(text) { if(text) { $.ajax({ url: app.get_vars().baseurl + "personalization/update-homepage-title", type: "POST", data: {title: text}, success: function(result) { app._notify(result.mtype, "Successfully saved"); } }); }else{ app._notify('error', 'Field is required.'); } }, "get_homepage_title": function() { $.ajax({ url: app.get_vars().baseurl + "personalization/get-homepage-title", type: "GET", success: function(result) { console.log(result) } }); }, 'get_past_workshops': function() { $('#past-event-container').empty() $("#selected-workshop").empty() let past_events = $('') $.ajax({ url: app.get_vars().baseurl+"past_events", type: "get", success: function( result ){ if(result.mtype == "success"){ const options = result.mdata; for(let i=0; i', { value: options[i].event_id, text : options[i].title+' ['+options[i].workshop_author+']' })) } $("#past-event-container").append(past_events); $("#past-event-container").append(``) $(past_events).multiselect({ enableFiltering: true, filterPlaceholder: 'Type to search event ...', maxHeight: 250 }); $('#past-field').change(function() { if($('#past-field').val()!== null && $('#past-field').val().length >= 3) { $('#past-field option').each((index, element) =>{ const x = $("input.form-check-input[value='"+element.value+"']"); x.closest($('button.multiselect-option')).attr('disabled', true) x.closest($('button.multiselect-option.dropdown-item > .form-check > .form-check-input')).attr('disabled', true) x.closest($('button.multiselect-option.dropdown-item.active')).removeAttr('disabled') x.closest($('button.multiselect-option.dropdown-item.active > .form-check > .form-check-input')).removeAttr('disabled') }); } else { $('#save_past_events').removeAttr('disabled') $('#past-field option').each((index, element) =>{ const x = $("input.form-check-input[value='"+element.value+"']"); x.closest($('button.multiselect-option')).removeAttr('disabled') x.closest($('button.multiselect-option.dropdown-item > .form-check > .form-check-input')).removeAttr('disabled') }); } }) $.ajax({ url: app.get_vars().baseurl+"get_selected_past_events", type: "get", success: function( result ){ if(result.mtype == "success"){ const selectedEvents = result.mdata; if(selectedEvents) { selectedEvents.forEach( (event) => { $('#past-field option').each((index, element) =>{ if(event.event_id.indexOf(element.value) > -1) { // personalization.append_past_event(event) const x = $("input.form-check-input[value='"+element.value+"']"); x.closest($('button.multiselect-option')).click() } }); }) } } } }); } } }); }, 'append_past_event': function (event) { const html = `
...
` $("#selected-workshop").append(html); }, 'save_selected_past_events': function() { $.ajax({ url: app.get_vars().baseurl+"add_selected_past_events", type: "post", data: { events: JSON.stringify($('#past-field').val()) }, success: function( result ){ if(result.mtype == "success"){ app._notify("success", 'Selected past events updated'); } } }); } }; })(jQuery, this); $(function() { $("#banner_modal").on('click', function () { //$("#description").val($("#image_label").text()) personalization.tinymce_mentios_legales('textarea#description', 200 ); personalization.banner_get_image(false); $('#uploadBannerModal').modal('show'); }); personalization.banner_load_box_cropper(); personalization.banner_get_image(true); //registration set required personalization.registration(); personalization.set_require(); personalization.get_past_workshops(); //mention legales editor personalization.tinymce_mentios_legales('textarea#tinymce_mentios_legales', 500 ); personalization.tinymce_mentios_legales_update_content(); //announcementeditor personalization.announcement_content('textarea#announcement_content', 500 ); personalization.tinymce_announcement_content(); $("#announcement_table").on("click", ".enable-btn", function() { var e = this.id $(this).closest("tr").attr("id") $.ajax({ url: app.get_vars().baseurl + "personalization/personalization/enable_announcement", type: "POST", data: { id: e }, success: function(e) { if(e=='full'){ app._notify('error', 'Only 1 announcement will be enabled at a time.'); announcement_table.ajax.reload(); }else{ app._notify('success', 'Annonce activée et publiée avec succés.'); announcement_table.ajax.reload(); } } }) // bootbox.dialog({ // title: "Confirmer la suppression de la question", // className: "my-modal-with-sm event-normal-registration-modal table", // message: $("#delete-question"), // cache: !1, // show: !1, // buttons: [{ // label: "RETOUR", // className: "btn btn-default", // callback: function() { // $("#delete-question").empty(), window.setTimeout(function() { // window.location.href = app.get_vars().baseurl + "faqs" // }, 500) // } // }, { // label: "CONFIRMER", // className: "btn btn-primary", // callback: function() { // $.ajax({ // url: app.get_vars().baseurl + "faqs/faqs/delete_question", // type: "POST", // data: { // question: e // }, // success: function(e) { // 1 == e && (app._notify("success", "Supprimé avec succès"), window.setTimeout(function() { // window.location.href = app.get_vars().baseurl + "faqs" // }, 2e3)) // } // }) // } // }] // }).on("shown.bs.modal", function() {}).on("hide.bs.modal", function() { // $("#delete-question").empty() // }).modal("show") }); $("#announcement_table").on("click", ".disable-btn", function() { var e = this.id $(this).closest("tr").attr("id") $.ajax({ url: app.get_vars().baseurl + "personalization/personalization/disable_announcement", type: "POST", data: { id: e }, success: function(e) { app._notify('success', 'Annonce désactivée avec succés'); announcement_table.ajax.reload(); } }) // bootbox.dialog({ // title: "Confirmer la suppression de la question", // className: "my-modal-with-sm event-normal-registration-modal table", // message: $("#delete-question"), // cache: !1, // show: !1, // buttons: [{ // label: "RETOUR", // className: "btn btn-default", // callback: function() { // $("#delete-question").empty(), window.setTimeout(function() { // window.location.href = app.get_vars().baseurl + "faqs" // }, 500) // } // }, { // label: "CONFIRMER", // className: "btn btn-primary", // callback: function() { // $.ajax({ // url: app.get_vars().baseurl + "faqs/faqs/delete_question", // type: "POST", // data: { // question: e // }, // success: function(e) { // 1 == e && (app._notify("success", "Supprimé avec succès"), window.setTimeout(function() { // window.location.href = app.get_vars().baseurl + "faqs" // }, 2e3)) // } // }) // } // }] // }).on("shown.bs.modal", function() {}).on("hide.bs.modal", function() { // $("#delete-question").empty() // }).modal("show") }); $("#announcement_table").on("click", ".delete-btn", function() { var e = this.id $(this).closest("tr").attr("id") $.ajax({ url: app.get_vars().baseurl + "personalization/personalization/delete_announcement", type: "POST", data: { id: e }, success: function(e) { app._notify('success', 'Announcement deleted successfully.'); announcement_table.ajax.reload(); } }) // bootbox.dialog({ // title: "Confirmer la suppression de la question", // className: "my-modal-with-sm event-normal-registration-modal table", // message: $("#delete-question"), // cache: !1, // show: !1, // buttons: [{ // label: "RETOUR", // className: "btn btn-default", // callback: function() { // $("#delete-question").empty(), window.setTimeout(function() { // window.location.href = app.get_vars().baseurl + "faqs" // }, 500) // } // }, { // label: "CONFIRMER", // className: "btn btn-primary", // callback: function() { // $.ajax({ // url: app.get_vars().baseurl + "faqs/faqs/delete_question", // type: "POST", // data: { // question: e // }, // success: function(e) { // 1 == e && (app._notify("success", "Supprimé avec succès"), window.setTimeout(function() { // window.location.href = app.get_vars().baseurl + "faqs" // }, 2e3)) // } // }) // } // }] // }).on("shown.bs.modal", function() {}).on("hide.bs.modal", function() { // $("#delete-question").empty() // }).modal("show") }); $("#announcement_table").on("click", ".edit-btn", function() { var e = this.id; $(this).closest("tr").attr("id"); $("#edit_announcement_content").addClass('edit_announcement_content'+e); function image_upload_handler (blobInfo, success, failure, progress) { var xhr, formData; xhr = new XMLHttpRequest(); xhr.withCredentials = false; xhr.open('POST', app.get_vars().baseurl + "personalization/post_acceptor", true); xhr.upload.onprogress = function (e) { progress(e.loaded / e.total * 100); }; xhr.onload = function() { var json; if (xhr.status === 403) { failure('HTTP Error: ' + xhr.status, { remove: true }); return; } if (xhr.status < 200 || xhr.status >= 300) { failure('HTTP Error: ' + xhr.status); return; } json = JSON.parse(xhr.responseText); if (!json || typeof json.location != 'string') { failure('Invalid JSON: ' + xhr.responseText); return; } success(json.location); }; xhr.onerror = function () { failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); }; formData = new FormData(); formData.append('file', blobInfo.blob(), blobInfo.filename()); // append CSRF token in the form data formData.append('csrf_token', $('meta[name="csrf_token"]').attr('content')); xhr.send(formData); }; tinymce.init({ selector:"textarea", code_dialog_height: 500, force_hex_style_colors: true, //force_p_newlines : true, //invalid_elements : "id", //forced_root_block : false, force_br_newlines: true, force_p_newlines: false, forced_root_block: '', // Needed for 3.x language: 'fr_FR', height: 500, menubar: false, plugins: [ 'advlist autolink lists link image charmap print preview anchor', 'searchreplace visualblocks code fullscreen', 'insertdatetime media table contextmenu paste code', 'anchor code', 'textcolor colorpicker', ], a11y_advanced_options: true, convert_urls : false, relative_urls: false, remove_script_host: false, paste_data_images: true, /* enable title field in the Image dialog*/ image_title: true, /* enable automatic uploads of images represented by blob or data URIs*/ automatic_uploads: true, // images_upload_url: app.get_vars().baseurl + "personalization/post_acceptor", images_upload_handler: image_upload_handler, /* URL of our upload handler (for more details check: https://www.tiny.cloud/docs/configure/file-image-upload/#images_upload_url) images_upload_url: 'postAcceptor.php', here we add custom filepicker only to Image dialog */ file_picker_types: 'image', /* and here's our custom image picker*/ file_picker_callback: function (cb, value, meta) { var input = document.createElement('input'); input.setAttribute('type', 'file'); input.setAttribute('accept', 'image/*'); /* Note: In modern browsers input[type="file"] is functional without even adding it to the DOM, but that might not be the case in some older or quirky browsers like IE, so you might want to add it to the DOM just in case, and visually hide it. And do not forget do remove it once you do not need it anymore. */ input.onchange = function () { var file = this.files[0]; var reader = new FileReader(); reader.onload = function () { /* Note: Now we need to register the blob in TinyMCEs image blob registry. In the next release this part hopefully won't be necessary, as we are looking to handle it internally. */ var id = 'blobid' + (new Date()).getTime(); var blobCache = tinymce.activeEditor.editorUpload.blobCache; var base64 = reader.result.split(',')[1]; var blobInfo = blobCache.create(id, file, base64); blobCache.add(blobInfo); /* call the callback and populate the Title field with the file name */ cb(blobInfo.blobUri(), { title: file.name }); }; reader.readAsDataURL(file); }; input.click(); }, toolbar: 'code | anchor | undo redo | insert | styleselect | bold italic | fontselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', toolbar_mode: 'wrap', font_formats: 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;AkrutiKndPadmini=Akpdmi-n', content_css: [ '//fonts.googleapis.com/css?family=Lato:300,300i,400,400i', '//www.tinymce.com/css/codepen.min.css'] }); // Prevent bootstrap dialog from blocking focusin $(document).on('focusin', function(e) { if ($(e.target).closest(".tox-tinymce-aux, .moxman-window, .tam-assetmanager-root").length) { e.stopImmediatePropagation(); } }); $('#edit-announcement').modal('show'); $.ajax({ url: app.get_vars().baseurl + "personalization/personalization/get_specific_announcement", type: "POST", data: { id: e }, success: function(e) { $('#announcement_title_edit').val(e[0].title); $('#announcement_date_edit').val(e[0].expiration); tinymce.activeEditor.setContent(e[0].content); $(".edit_announcement_content"+e[0].id).one('click',function() { if (requestRunning) { // don't do anything if an AJAX request is pending return; } var t = $('#announcement_title_edit').val(); var d = $('#announcement_date_edit').val(); var c = tinymce.activeEditor.getContent(); var id = e[0].id; var requestRunning = false; var ajaxOpts = { url: app.get_vars().baseurl + "personalization/personalization/update_announcement", type: "POST", data: { title: t,date:d,content:c,id:id }, success: function(e) { 1 == e && (app._notify("success", "Contenu mis à jour avec succès."), window.setTimeout(function() { announcement_table.ajax.reload(); $("#edit-announcement").removeClass('fade').modal('hide'); $('#announcement_title_edit').val(''); $('#announcement_date_edit').val(''); tinymce.activeEditor.setContent(''); tinymce.remove('#announcement_content_edit'); app._form._reset('.edit-announcement-form'); $('#edit-announcement').data('bs.modal', null); $('#edit-announcement').off('hidden.bs.modal'); }, 2e3)) 0 == e && (app._notify("success", "Contenu mis à jour avec succès."), window.setTimeout(function() { announcement_table.ajax.reload(); $("#edit-announcement").removeClass('fade').modal('hide'); $('#announcement_title_edit').val(''); $('#announcement_date_edit').val(''); tinymce.activeEditor.setContent(''); tinymce.remove('#announcement_content_edit'); app._form._reset('.edit-announcement-form'); $('#edit-announcement').data('bs.modal', null); $('#edit-announcement').off('hidden.bs.modal'); }, 2e3)) }, complete: function() { requestRunning = false; } }; requestRunning = true; $.ajax(ajaxOpts) return false; $("#edit_announcement_content").removeClass('edit_announcement_content'+e[0].id); }); $("#edit-announcement").on("hidden.bs.modal", function(){ $("#edit_announcement_content").removeClass('edit_announcement_content'+e[0].id) }); // bootbox.dialog({ // title: "Edit Announcement", // className: "my-modal-with-sm event-normal-registration-modal table", // message: $(".edit-announcement").html(), // cache: !1, // show: !1, // size: 'large', // buttons: [{ // label: "RETOUR", // className: "btn btn-default", // callback: function() { // tinymce.remove('#announcement_content_edit') // announcement_table.ajax.reload(); // bootbox.hideAll(); // location.reload(); // // window.setTimeout(function(){window.location.href = app.get_vars().baseurl+"personalization#announcement";},500); // } // }, { // label: "CONFIRMER", // className: "btn btn-primary", // callback: function() { // var t = $('#announcement_title_edit','.bootbox').val(); // var c = tinymce.activeEditor.getContent(); // var id = e[0].id; // $.ajax({ // url: app.get_vars().baseurl + "personalization/personalization/update_announcement", // type: "POST", // data: { // title: t,content:c,id:id // }, // success: function(e) { // 1 == e && (app._notify("success", "Supprimé avec succès"), window.setTimeout(function() { // announcement_table.ajax.reload(); // bootbox.hideAll(); // location.reload(); // // window.setTimeout(function(){window.location.href = app.get_vars().baseurl+"personalization#announcement";},500); // }, 2e3)) // } // }) // } // }] // }) // .on("shown.bs.modal", function() { // // personalization.announcement_content_edit('textarea#announcement_content_edit', 500); // $('#announcement_title_edit','.bootbox').val(e[0].title); // tinymce.activeEditor.setContent(e[0].content); // $(this).off('shown.bs.modal'); // // }) // .on("hide.bs.modal", function() { // // try { // tinymce.remove('#announcement_content_edit') // tinyMCE.editors=[]; // } catch (e) {} // app._form._reset(this); // $("#announcement_content_edit").html(""); // app.modal.focusout_solution("off"); // app.modal.activate_tinymce("off"); // $(this).data('bs.modal', null); // $(this).off('hidden.bs.modal'); // // }).modal("show") // .init(function(){ // // personalization.announcement_content_edit('textarea#announcement_content_edit', 500); // // //load wysiwyg html editor // // try { // // tinymce.remove('#announcement_content_edit') // // tinyMCE.editors=[]; // // personalization.announcement_content_edit('textarea#announcement_content_edit', 500); // // // tinymce.EditorManager.execCommand('mceAddEditor',true, 'announcement_content_edit'); // // } catch (e) {} // }); } }) }); $("#announcement_table").on("click", ".view-btn", function() { var e = this.id; $(this).closest("tr").attr("id") $.ajax({ url: app.get_vars().baseurl + "personalization/personalization/get_specific_announcement", type: "POST", data: { id: e }, success: function(e) { $('#announcement-modal-title-view').html(e[0].title); $('#announcement-content').html(e[0].content); $("#announcement-modal").modal('show'); } }) }) //logo personalization.event_logo_load(); }); /* Edit Privacy */ $("#update_privacy").click(function() { var description = tinyMCE.activeEditor.getContent({format : 'raw'}) ; var status = $("#status_privacy").val(); var json = {'description':description, 'status':status}; $.ajax({ url: app.get_vars().baseurl+"personalization/update_privacy", type: 'POST', data : json, success: function(result) { app._notify(result.mtype, result.message); } }); }); $("#update_homepage_title").click(function() { personalization.update_homepage_title($("#homepage_title_text").val()) })