File manager - Edit - /home/jardides/www/Jardi-design/j37/media/com_pagebuilderck/assets/pagebuilderck.js
Back
/** * @name Page Builder CK * @package com_pagebuilderck * @copyright Copyright (C) 2015. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt * @author Cedric Keiflin - http://www.template-creator.com - http://www.joomlack.fr */ var $ck = jQuery.noConflict(); var CKUNIQUEIDLIST = new Array(); $ck(document).ready(function(){ $ck(document.body).append('<div id="ck_overlay"></div>'); $ck(document.body).append('<div id="popup_editionck" class="ckpopup"></div>'); initWorkspace(); $ck('.cktype[data-type="image"]').each(function(i, holder) { ckAddDndForImageUpload(holder); }); }); function ckCleanInterfaceBeforeSave(workspace) { if (!workspace) workspace = $ck('#workspaceck'); workspace.find('.addcontent').remove(); workspace.find('.ui-resizable-handle').remove(); workspace.find('.blockck_width').remove(); workspace.find('.addrow').remove(); workspace.find('.editorck').remove(); workspace.find('.ui-sortable').removeClass('ui-sortable'); workspace.find('.ui-resizable').removeClass('ui-resizable'); workspace.find('.editfocus').removeClass('editfocus'); workspace.find('.cssfocus').removeClass('cssfocus'); workspace.find('.ui-accordion-header').removeClass('ui-accordion-header-active').removeClass('ui-state-active').removeClass('ui-corner-top'); workspace.find('.accordionsck').accordionck('destroy'); workspace.find('.tabsck').tabsck('destroy'); workspace.find('> #system-readmore').removeAttr('style'); ckResponsiveSettings('1'); ckCheckHtml('1'); } function initWorkspace(workspace) { if (!workspace) workspace = $ck('#workspaceck'); if (! workspace.length) return; ckInitInterface(workspace); ckMakeTooltip(workspace); ckInitContents(workspace); } /** * Insert image from com_media */ function jInsertFieldValue(value, id) { $ck('#'+id).val(value); $ck('#'+id).trigger('change'); } function ckInitContents(workspace) { if (!workspace) workspace = $ck('#workspaceck'); workspace.find('.accordionsck').each(function() { $ck(this).accordionck({ active: parseInt($ck(this).attr('activetab')), heightStyle: "content" }); }); workspace.find('.tabsck').each(function() { $ck(this).tabsck({ active: parseInt($ck(this).attr('activetab')) }); }); } function ckInitInterface(workspace) { if (!workspace) workspace = $ck('#workspaceck'); ckMakeRowsSortable(workspace); workspace.find('> .rowck').each(function(i, row) { row = $ck(row); if (! row.find('> .ckstyle').length) { // for beta version retrocompatibility row.prepend('<div class="ckstyle"></div>'); } ckAddRowEditionEvents(row); ckMakeBlocksSortable(row); row.find('> .inner > .blockck').each(function() { block = $ck(this); ckAddBlockEditionEvents(block); ckMakeItemsSortable(block); block.find('> .inner > .innercontent > .cktype').each(function() { // item = $ck(this); ckAddItemEditionEvents($ck(this)); }); }); }); workspace.find('> #system-readmore').each(function() { block = $ck(this); ckAddBlockEditionEvents(block, 'readmore'); }); if (! workspace.find('.rowck').length) { ckAddRow(false, workspace); } // make the menu items draggable $ck('.menuitemck:not(.fakeck)').draggable({ connectToSortable: ".blockck .innercontent", helper: "clone", appendTo: "#workspaceck", zIndex: "999999", tolerance: "pointer", start: function( event, ui ){ $ck('#menuck').css('overflow', 'visible'); }, stop: function( event, ui ){ $ck('#menuck').css('overflow', ''); } }); // make the menu items draggable $ck('.menuitemck.fakeck').draggable({ connectToSortable: "#workspaceck", helper: "clone", // appendTo: "#workspaceck", zIndex: "999999", tolerance: "pointer", start: function( event, ui ){ $ck('#menuck').css('overflow', 'visible'); }, stop: function( event, ui ){ $ck('#menuck').css('overflow', ''); } }); } /* function ck_toggle_interface(button) { if ($ck(button).hasClass('active')) { $ck(button).removeClass('active'); ckInitInterface(); } else { $ck(button).addClass('active'); ckRemoveInterface(); } }*/ /* function ckRemoveInterface() { var workspace = $ck('#workspaceck'); // delete all unwanted interface elements in the final code workspace.find('.addcontent').remove(); workspace.find('.ui-resizable-handle').remove(); workspace.find('.blockck_width').remove(); workspace.find('.addrow').remove(); workspace.find('.editorck').remove(); workspace.find('.ui-sortable').removeClass('ui-sortable'); workspace.find('.ui-resizable').removeClass('ui-resizable'); workspace.find('.editfocus').removeClass('editfocus'); workspace.find('.ui-accordion-header').removeClass('ui-accordion-header-active').removeClass('ui-state-active').removeClass('ui-corner-top'); $ck('.accordionsck').accordionck('destroy'); $ck('.tabsck').tabsck('destroy'); }*/ function ckInitOptionsTabs() { $ck('#elementscontent div.tab:not(.current)').hide(); $ck('.menulink', $ck('#elementscontainer')).each(function(i, tab) { $ck(tab).click(function() { $ck('#elementscontent div.tab').hide(); $ck('.menulink', $ck('#elementscontainer')).removeClass('current'); if ($ck('#' + $ck(tab).attr('tab')).length) $ck('#' + $ck(tab).attr('tab')).show(); $ck(this).addClass('current'); }); }); } function initModalPopup() { // SqueezeBox.initialize({}); // SqueezeBox.assign($$('a.modal'), { // parse: 'rel' // }); } function ckInitColorPickers(container) { if (! container) container = $ck(document.body); var startcolor = ''; $ck('.colorPicker', container).each(function(i, picker) { picker = $ck(picker); picker.mousedown(function() { if (picker.val()) { startcolor = picker.val().replace('#',''); } else { startcolor = 'fff000'; } picker.colpick({ layout:'full', color: startcolor, livePreview: true, onChange:function(hsb,hex,rgb,el,bySetColor) { $ck(el).css('background-color','#'+hex); setpickercolor(picker); // force the # character if (picker.val().indexOf("#") == -1) { picker.val('#'+picker.val()); } // Fill the text box just if the color was set using the picker, and not the colpickSetColor function. if(!bySetColor) $ck(el).val('#' + hex); }, onSubmit:function(hsb,hex,rgb,el,bySetColor) { picker.trigger('change'); }, onClean: function(button, cal) { picker.val(''); picker.css('background', 'none'); picker.trigger('change'); }, onCopy: function(color, cal) { CLIPBOARDCOLORCK = picker.val(); }, onPaste: function(color, cal) { picker.val(CLIPBOARDCOLORCK); picker.css('background', CLIPBOARDCOLORCK); picker.trigger('change'); setpickercolor(picker); }, onPaletteColor: function(hsb,hex,rgb,el,bySetColor) { picker.val('#'+hex); picker.css('background','#'+hex); picker.trigger('change'); setpickercolor(picker); }, }).keyup(function(){ $ck(this).colpickSetColor(this.value); picker.trigger('change'); }); }); }); } /** * Method to give a black or white color to have a good contrast */ function setpickercolor(picker) { pickercolor = 0.213 * hexToR(picker.val()) / 100 + 0.715 * hexToG(picker.val()) / 100 + 0.072 * hexToB(picker.val()) / 100 < 1.5 ? '#FFF' : '#000'; picker.css('color', pickercolor); return pickercolor; } /* * Functions to manage colors conversion * */ function hexToR(h) { return parseInt((cutHex(h)).substring(0, 2), 16) } function hexToG(h) { return parseInt((cutHex(h)).substring(2, 4), 16) } function hexToB(h) { return parseInt((cutHex(h)).substring(4, 6), 16) } function cutHex(h) { return (h.charAt(0) == "#") ? h.substring(1, 7) : h } function hexToRGB(h) { return 'rgb(' + hexToR(h) + ',' + hexToG(h) + ',' + hexToB(h) + ')'; } /*function jInsertEditorText(text, editor) { var newEl = $ck(text); var valeur = newEl.attr('src'); $ck(editor).val(valeur); $ck(editor).trigger('change'); if (typeof ckUpdatePreviewArea == 'function') { ckUpdatePreviewArea(); } }*/ function ckInitAccordions() { $ck('.menustylesblockaccordion').hide(); $ck('.ckproperty').each(function(i, tab) { tab = $ck(tab); $ck('.menustylesblockaccordion', tab).first().show(); $ck('.menustylesblocktitle', tab).first().addClass('open'); $ck('.menustylesblocktitle', tab).click(function() { if (!$ck(this).hasClass('open')) { $ck('.menustylesblockaccordion', tab).slideUp('fast'); blocstyle = $ck(this).next('.menustylesblockaccordion'); $ck('.menustylesblocktitle', tab).removeClass('open'); $ck(this).addClass('open'); blocstyle.slideDown('fast'); } else { blocstyle = $ck(this).next('.menustylesblockaccordion'); blocstyle.slideUp('fast'); $ck(this).removeClass('open'); } }); }); } function ckInitMenustylesAccordion(tab) { $ck('.menustylesblockaccordion', tab).first().show(); $ck('.menustylesblocktitle', tab).first().addClass('open'); $ck('.menustylesblocktitle', tab).click(function() { if (!$ck(this).hasClass('open')) { $ck('.menustylesblockaccordion', tab).slideUp('fast'); blocstyle = $ck(this).next('.menustylesblockaccordion'); $ck('.menustylesblocktitle', tab).removeClass('open'); $ck(this).addClass('open'); blocstyle.slideDown('fast'); } else { blocstyle = $ck(this).next('.menustylesblockaccordion'); blocstyle.slideUp('fast'); $ck(this).removeClass('open'); } }); } function ckAddRowEditionEvents(row) { ckAddRowEdition(row); } function ckAddBlockEditionEvents(block, type) { if (!type) type = ''; block.mouseenter(function() { ckAddEdition(this, 0, type); }).mouseleave(function() { $ck(this).removeClass('highlight_delete'); ckRemoveEdition(this); }); } function ckAddItemEditionEvents(el) { el.mouseenter(function() { ckAddEdition(this); }).mouseleave(function() { $ck(this).removeClass('highlight_delete'); ckRemoveEdition(this); }); } function ckAddRow(cur_row, workspace) { if (!workspace) workspace = $ck('#workspaceck'); var row = $ck('<div class="rowck row-fluid" id="'+ckGetUniqueId('row_')+'">' +'<div class="inner animate clearfix"></div>' +'<div class="ckstyle"></div>' +'</div>'); // $ck('#workspaceck .addrow').before(row); if (cur_row == false) { workspace.append(row); } else { cur_row.after(row); } ckAddBlock(row); ckAddRowEditionEvents(row); ckMakeBlocksSortable(row); ckMakeTooltip(row); } function ckAddBlock(row) { var newblockid = ckGetUniqueId('block_'); var newblock = $ck('<div class="blockck" id="'+newblockid+'">' + '<div class="ckstyle"></div>' + '<div class="inner animate resizable">' + '<div class="innercontent">' // + response + '</div>' // + '<div class="addcontent animate" title="Add a content" onclick="ckAddContent($ck($ck(this).parents(\'.blockck\')[0]));">+</div>' // + '<div class="removeblock animate" onclick="ckRemoveBlock($ck(this).parents(\'.blockck\')[0]);" onmouseover="$ck(this).parents(\'.blockck\')[0].addClass(\'highlight_delete\');" onmouseleave="$ck(this).parents(\'.blockck\')[0].removeClass(\'highlight_delete\');">x</div>' // + '<div class="handleck animate ui-resizable-handle ui-resizable-e"></div>' // + '<input class="blockck_width" title="Resize the block" onchange="ck_set_block_size($ck($ck(this).parents(\'.blockck\')[0]), this.value);" />' + '</div>' + '</div>'); $ck('> .inner', row).append(newblock); // ckAddStaticEditionButtons(newblock); ckAddBlockEditionEvents(newblock); ckInitBlocksSize(row); ckMakeItemsSortable(newblock); ckMakeTooltip(newblock); return newblockid; } function ckAddItem(type, currentbloc) { ckHideContentList(); // var block_inner = $ck('.ckfocus'); var myurl = "index.php?option=com_pagebuilderck&view=content"; var id = ckGetUniqueId(); jQuery.ajax({ type: "POST", url: myurl, // dataType : 'json', data: { cktype: type, ckid: id } }).done(function(result) { el = $ck(result); if (currentbloc) { $ck(currentbloc).fadeOut(500, function() { $ck(currentbloc).before(el); $ck(currentbloc).remove(); el.trigger('show'); }); } else { $ck('.ckfocus').append(el).removeClass('ckfocus'); } ckAddItemEditionEvents(el); ckMakeItemsSortable($ck($ck('#'+id).parents('.blockck')[0])); ckTriggerAfterAdditem(id); }).fail(function() { alert('A problem occured when trying to load the content. Please retry.'); $ck(currentbloc).remove(); }); } function ckAddRowItem(type, currentbloc) { ckHideContentList(); // var block_inner = $ck('.ckfocus'); var myurl = "index.php?option=com_pagebuilderck&view=content"; var id = ckGetUniqueId(); jQuery.ajax({ type: "POST", url: myurl, // dataType : 'json', data: { cktype: type, ckid: id } }).done(function(result) { item = $ck(result); if (currentbloc) { $ck(currentbloc).fadeOut(500, function() { $ck(currentbloc).before(item); $ck(currentbloc).remove(); item.trigger('show'); }); } else { $ck('.ckfocus').append(item).removeClass('ckfocus'); } item.mouseenter(function() { ckAddEdition(this, 0 , type); }).mouseleave(function() { $ck(this).removeClass('highlight_delete'); ckRemoveEdition(this); }); ckTriggerAfterAdditem(id); }).fail(function() { alert('A problem occured when trying to load the content. Please retry.'); $ck(currentbloc).remove(); }); } // empty function to override in each layout if needed function ckTriggerAfterAdditem(id) { return; } function ckAddStaticEditionButtons(block) { var buttons = '<div class="addcontent animate" title="Add a content" onclick="ckAddContent($ck($ck(this).parents(\'.blockck\')[0]));">+</div>' //+ '<input class="blockck_width" title="Resize the block" onchange="ck_set_block_size($ck($ck(this).parents(\'.blockck\')[0]), this.value);" />' ; block.find('.innercontent').after(buttons); } function ckMakeRowsSortable(workspace) { if (!workspace) workspace = $ck('#workspaceck'); workspace.sortable({ items: "> .rowck, > #system-readmore", helper: "clone", axis: "y", handle: ".moverow", forcePlaceholderSize: true, // forceHelperSize: true, tolerance: "pointer", placeholder: "placeholderck", // zIndex: 9999, stop: function( event, ui ) { }, receive: function( event, ui ) { if (ui.sender.hasClass('menuitemck') && ui.sender.attr('data-type') == 'readmore') { if (workspace.find('#system-readmore').length) { alert('There is already a Readmore in your content. You can only have one readmore.'); return false; } } if (ui.sender.hasClass('menuitemck')) { var newblock = $ck(this).find('.menuitemck'); newblock.css('float', 'none').empty().addClass('ckwait'); ckAddRowItem(ui.sender.attr('data-type'), newblock); } } }); } function ckMakeBlocksSortable(row) { row.sortable({ items: ".blockck", helper: "clone", // axis: "x", handle: ".controlMove", forcePlaceholderSize: true, // forceHelperSize: true, tolerance: "pointer", placeholder: "placeholderchild", // zIndex: 9999, sort: function( event, ui ) { ui.helper.find('.editorck').hide(); }, start: function( event, ui ){ ui.placeholder.width(parseInt($ck('> .inner',ui.helper).width())); ui.placeholder.append('<div class="inner" />') }, stop: function( event, ui ) { } }); } function ckMakeItemsSortable(block) { $ck('.innercontent', block).sortable({ connectWith: ".innercontent", items: '.cktype', helper: "clone", // dropOnEmpty: true, handle: ".controlMoveItem", tolerance: "pointer", // forcePlaceholderSize: true, placeholder: "placeholderck", // cancel: 'div', activate: function (event, ui) { if (ui != undefined && !$ck(ui.item).hasClass('menuitemck')) { $ck(ui.helper).css('width', '250px').css('height', '100px').css('overflow', 'hidden'); } }, stop: function( event, ui ){ if (ui != undefined) { $ck(ui.item).css('width', '').css('height', '').css('overflow', ''); } // ui.placeholder.width(parseInt($ck('> .inner',ui.helper).width())); // ui.placeholder.append('<div class="inner" />') }, receive: function( event, ui ) { if (ui.sender.hasClass('menuitemck')) { var newblock = $ck(this).find('.menuitemck'); newblock.css('float', 'none').empty().addClass('ckwait'); ckAddItem(ui.sender.attr('data-type'), newblock) // createBloc(newblock, ui.sender.attr('data-type')); // makeRowcontainerSortable($ck('ckrowcontainer')); } else { // newblock.remove(); } } }); } /* .row-fluid .span12 { width: 100%; *width: 99.946808510638%; } .row-fluid .span11 { width: 91.489361702128%; *width: 91.436170212766%; } .row-fluid .span10 { width: 82.978723404255%; *width: 82.925531914894%; } .row-fluid .span9 { width: 74.468085106383%; *width: 74.414893617021%; } .row-fluid .span8 { width: 65.957446808511%; *width: 65.904255319149%; } .row-fluid .span7 { width: 57.446808510638%; *width: 57.393617021277%; } .row-fluid .span6 { width: 48.936170212766%; *width: 48.882978723404%; } .row-fluid .span5 { width: 40.425531914894%; *width: 40.372340425532%; } .row-fluid .span4 { width: 31.914893617021%; *width: 31.86170212766%; } .row-fluid .span3 { width: 23.404255319149%; *width: 23.351063829787%; } .row-fluid .span2 { width: 14.893617021277%; *width: 14.840425531915%; } .row-fluid .span1 { width: 6.3829787234043%; *width: 6.3297872340426%; }*/ function ckGetSpanFromClass(el) { if (el.hasClass('span1')) return 1; if (el.hasClass('span2')) return 2; if (el.hasClass('span3')) return 3; if (el.hasClass('span4')) return 4; if (el.hasClass('span5')) return 5; if (el.hasClass('span6')) return 6; if (el.hasClass('span7')) return 7; if (el.hasClass('span8')) return 8; if (el.hasClass('span9')) return 9; if (el.hasClass('span10')) return 10; if (el.hasClass('span11')) return 11; if (el.hasClass('span12')) return 12; } function ckGetSpanFromWidth(w) { w = parseFloat(w); if (w < 10) { span = 1; } else if (w < 20) { span = 2; } else if (w < 30) { span = 3; } else if (w < 40) { span = 4; } else if (w < 45) { span = 5; } else if (w < 50) { span = 6; } else if (w < 60) { span = 7; } else if (w < 70) { span = 8; } else if (w < 80) { span = 9; } else if (w < 90) { span = 10; } else if (w < 95) { span = 11; } else { span = 12; } return span; } function ckInitBlocksSize(row) { // bootstrap method var number_blocks = row.find('.blockck').length; var span = 12 / number_blocks; var spanLast = span; if (parseFloat(span) !== parseInt(span)) { span = parseInt(span); spanLast = 12 - (span * (number_blocks - 1)); } row.find('.blockck').each(function() { $ck(this).attr('class', function(i, c) { return c.replace(/(^|\s)span\S+/g, ''); }); if ($ck(this).next('.blockck').length) { $ck(this).addClass('span' + span); }else { $ck(this).addClass('span' + spanLast); } }); } /* function ckResizeBlocks(ui, span) { var block = $ck(ui.item); var row = $ck(block.parents('.rowck')[0]); block.attr('class', function(i, c) { return c.replace(/(^|\s)span\S+/g, span); }); row.find('.blockck').each(function() { $ck(this).attr('class', function(i, c) { return c.replace(/(^|\s)span\S+/g, ''); }); if ($ck(this).next('.blockck').length) { $ck(this).addClass('span' + span); }else { $ck(this).addClass('span' + spanLast); } }); }*/ function ckResizeBlock(blocid, direction) { var block = $ck('#' + blocid); // if next block can't be lower size, return if (direction == 'up' && block.next('.blockck').hasClass('span1') || !block.next('.blockck').length) return; // if current block can't be lower size, return if (direction == 'down' && block.hasClass('span1') || !block.next('.blockck').length) return; if (direction == 'up') { nextblockspan = ckGetSpanFromClass(block.next('.blockck')) - 1; blockspan = ckGetSpanFromClass(block) + 1; } else { nextblockspan = ckGetSpanFromClass(block.next('.blockck')) + 1; blockspan = ckGetSpanFromClass(block) - 1; } // set the new span class to the current block ckSetSpanFromClass(block, blockspan); // set the new span class to the next block block.next('.blockck').attr('class', function(i, c) { return c.replace(/(^|\s)span\S+/g, ' span' + nextblockspan); }); } function ckSetSpanFromClass(block, span) { block.attr('class', function(i, c) { return c.replace(/(^|\s)span\S+/g, ' span' + span); }); } function ckRemoveBlock(block) { var row = $ck($ck(block).parents('.rowck')[0]); if (!confirm(Joomla.JText._('CK_CONFIRM_DELETE','CK_CONFIRM_DELETE'))) return; $ck(block).remove(); // check if the last block is resizable, disable it if (row.find('.blockck').last().is('.ui-resizable')) { row.find('.blockck').last().resizable('destroy'); } // check if there is just one block left if (! row.find('.blockck').length) { ckAddBlock(row); } // give the correct width to the elements ckInitBlocksSize(row); } function ckRemoveRow(row) { if (!confirm(Joomla.JText._('CK_CONFIRM_DELETE','CK_CONFIRM_DELETE'))) return; row.remove(); // if we delete the last row, then add a new empty one if (! $ck('#workspaceck .rowck').length) { ckAddRow(false); } } function ckRemoveItem(el) { if (!confirm(Joomla.JText._('CK_CONFIRM_DELETE','CK_CONFIRM_DELETE'))) return; $ck(el).remove(); } function ckAddRowEdition(bloc) { bloc = $ck(bloc); if (bloc.hasClass('ui-sortable-helper')) return; if ($ck('> .editorck', bloc).length) return; bloc.css('position','relative'); var editor = '<div class="editorck roweditor" id="' + bloc.attr('id') + '-edition"></div>'; editor = $ck(editor); editor.css({ 'left': '-30px', 'top': '0', 'position': 'absolute', 'z-index': 99, 'height': '100%' }); ckAddRowEditionControls(editor, bloc); bloc.append(editor); ckMakeTooltip(editor); editor.css('display', 'none').fadeIn('fast'); } function ckAddEdition(bloc, i, type) { if (!i) i = 0; if (!type) type = ''; bloc = $ck(bloc); if (bloc.hasClass('ui-sortable-helper')) return; if ($ck('> .editorck', bloc).length && i == 0) return; var leftpos = bloc.position().left; var toppos = bloc.position().top; bloc.css('position','relative'); var editorclass = ''; var editor = '<div class="editorck' + editorclass + '" id="' + bloc.attr('id') + '-edition"></div>'; editor = $ck(editor); editor.css({ 'left': 0, 'top': 0, 'position': 'absolute', 'z-index': 99 + i, 'width': bloc.outerWidth() }); if (bloc.hasClass('cktype')) { ck_addItemEditionControls(editor, bloc); } else { switch (type) { case 'readmore': ckAddEditionControlsReadmore(editor, bloc); break; default: ckAddEditionControls(editor, bloc); break; } } bloc.append(editor); ckMakeTooltip(editor); editor.css('display', 'none').fadeIn('fast'); if (bloc.hasClass('blockck')) editor.css('top', -(editor.find('> .ckfields').height()-30)); } function ckMakeTooltip(el) { el.tooltipck({ // items: ".infotip", content: function() { return $ck(this).attr('title'); }, close: function( event, ui ) { ui.tooltipck.hide(); }, position: { my: "center top", at: "center top-40", using: function( position, feedback ) { $ck( this ).css( position ); } }, track: false, tooltipClass: "cktooltipinfo", container: "body" }); } function ckAddEditionControls(editor, bloc) { var controls = '<div class="ckfields">' + '<div class="controlDel isControl" title="'+Joomla.JText._('CK_REMOVE_BLOCK')+'" onclick="ckRemoveBlock($ck(this).parents(\'.blockck\')[0]);" onmouseover="$ck($ck(this).parents(\'.blockck\')[0]).addClass(\'highlight_delete\');" onmouseleave="$ck($ck(this).parents(\'.blockck\')[0]).removeClass(\'highlight_delete\');"></div>' + '<div class="controlMove isControl" title="'+Joomla.JText._('CK_MOVE_BLOCK')+'"></div>' + '<div class="controlCopy isControl" title="'+Joomla.JText._('CK_DUPLICATE_COLUMN')+'" onclick="ckDuplicateColumn(\'' + bloc.attr('id') + '\');"></div>' + '<div class="controlCss isControl" title="'+Joomla.JText._('CK_EDIT_STYLES')+'" onclick="ckShowCssPopup(\'' + bloc.attr('id') + '\');"></div>' + '<div class="controlFavorite isControl" title="'+Joomla.JText._('CK_DESIGN_SUGGESTIONS')+'" onclick="ckShowFavoritePopup(\'' + bloc.attr('id') + '\');"></div>' + '<div class="controlSizeDown isControl" title="'+Joomla.JText._('CK_DECREASE_WIDTH')+'" onclick="ckResizeBlock(\'' + bloc.attr('id') + '\', \'down\');"></div>' + '<div class="controlSizeUp isControl" title="'+Joomla.JText._('CK_INCREASE_WIDTH')+'" onclick="ckResizeBlock(\'' + bloc.attr('id') + '\', \'up\');"></div>' + '</div>'; editor.append(controls); } function ckAddEditionControlsReadmore(editor, bloc) { var controls = '<div class="ckfields">' + '<div class="controlDel isControl" title="'+Joomla.JText._('CK_REMOVE_BLOCK')+'" onclick="ckRemoveRow($ck(this).parents(\'#system-readmore\')[0]);" onmouseover="$ck($ck(this).parents(\'.blockck\')[0]).addClass(\'highlight_delete\');" onmouseleave="$ck($ck(this).parents(\'.blockck\')[0]).removeClass(\'highlight_delete\');"></div>' + '<div class="controlMove isControl moverow" title="'+Joomla.JText._('CK_MOVE_BLOCK')+'"></div>' + '</div>'; editor.append(controls); } function ckAddRowEditionControls(editor, bloc) { var controls = '<div class="ckfields">' // +'<div class="controlAdd isControl" title="'+Joomla.JText._('CK_ADD_BLOCK')+'" onclick="ckAddBlock($ck($ck(this).parents(\'.rowck\')[0]));">+</div>' + '<div class="controlDel isControl" title="'+Joomla.JText._('CK_REMOVE_ROW')+'" onclick="ckRemoveRow($ck(this).parents(\'.rowck\')[0]);" onmouseover="$ck($ck(this).parents(\'.rowck\')[0]).addClass(\'highlight_delete\');" onmouseleave="$ck($ck(this).parents(\'.rowck\')[0]).removeClass(\'highlight_delete\');" ></div>' + '<div class="controlSize isControl" title="'+Joomla.JText._('CK_EDIT_COLUMNS')+'" onmouseover="ck_row_show_sizes($ck(this).parents(\'.rowck\')[0]);" onmouseleave="ck_row_hide_sizes($ck(this).parents(\'.rowck\')[0]);"></div>' + '<div class="controlMove isControl moverow" title="'+Joomla.JText._('CK_MOVE_ROW')+'"></div>' + '<div class="controlCss isControl" title="'+Joomla.JText._('CK_EDIT_STYLES')+'" onclick="ckShowCssPopup(\'' + bloc.attr('id') + '\');"></div>' + '<div class="controlFavorite isControl" title="'+Joomla.JText._('CK_DESIGN_SUGGESTIONS')+'" onclick="ckShowFavoritePopup(\'' + bloc.attr('id') + '\');"></div>' // + '<div class="controlSize isControl" title="use predefined blocks width" onmouseover="ck_row_show_sizes($ck(this).parents(\'.rowck\')[0]);" onmouseleave="ck_row_hide_sizes($ck(this).parents(\'.rowck\')[0]);"></div>' + '<div class="controlAddRowAfter isControl" title="'+Joomla.JText._('CK_ADD_NEW_ROW')+'" onclick="ckAddRow($ck($ck(this).parents(\'.rowck\')[0]));">+</div>' + '<div class="controlMore isControl" title="'+Joomla.JText._('CK_MORE_MENU_ELEMENTS')+'" onclick="$ck(this).toggleClass(\'ckhover\').next().toggle();">...</div>' + '<div style="display:none;" class="controlMoreChildren">' + '<div class="controlCopy isControl" title="'+Joomla.JText._('CK_DUPLICATE_ROW')+'" onclick="ckDuplicateRow(\'' + bloc.attr('id') + '\');"></div>' + '<div class="controlFullwidth isControl' + (bloc.hasClass('rowckfullwidth') ? ' ckactive' : '') + '" title="'+Joomla.JText._('CK_FULLWIDTH')+'" onclick="ckToggleFullwidthRow(\'' + bloc.attr('id') + '\');"></div>'; + '</div>'; + '</div>'; editor.append(controls); } function ck_addItemEditionControls(editor, bloc) { var controls = '<div class="ckfields">' + '<div class="controlDel isControl" title="'+Joomla.JText._('CK_REMOVE_ITEM')+'" onclick="ckRemoveItem($ck(this).parents(\'.cktype\')[0]);" onmouseover="$ck($ck(this).parents(\'.cktype\')[0]).addClass(\'highlight_delete\');" onmouseleave="$ck($ck(this).parents(\'.cktype\')[0]).removeClass(\'highlight_delete\');" ></div>' + '<div class="controlMoveItem isControl" title="'+Joomla.JText._('CK_MOVE_ITEM')+'"></div>' + '<div class="controlCopy isControl" title="'+Joomla.JText._('CK_DUPLICATE_ITEM')+'" onclick="ckDuplicateItem(\'' + bloc.attr('id') + '\');"></div>' + '<div class="controlEdit isControl" title="'+Joomla.JText._('CK_EDIT_ITEM')+'" onclick="ckShowEditionPopup(\'' + bloc.attr('id') + '\');"></div>' + '<div class="controlFavorite isControl" title="'+Joomla.JText._('CK_DESIGN_SUGGESTIONS')+'" onclick="ckShowFavoritePopup(\'' + bloc.attr('id') + '\');"></div>' + '</div>'; editor.append(controls); } function ckRemoveEdition(bloc, all) { if (!all) all = false; if (all = true) { $ck('.editorck', bloc).remove(); } else { $ck('> .editorck', bloc).remove(); } } function ck_row_show_sizes(row) { row = $ck(row); if (row.find('.editorck > .ckfields > .controlSize .ckfields_size').length) return; var nb_blocks = row.find('.blockck').length; if (nb_blocks == 0) return; var column_buttons = ckCalculateColumnSuggestion(row, nb_blocks); var button_size = row.find('.editorck > .ckfields > .controlSize'); var controls = '<div class="ckfields_size">' + '<div class="controlAdd isControl" title="'+Joomla.JText._('CK_ADD_COLUMN')+'" onclick="ckAddBlock($ck($ck(this).parents(\'.rowck\')[0]));ck_row_hide_sizes($ck(this).parents(\'.rowck\')[0]);">+</div>' + column_buttons + '</div>'; button_size.append(controls); } function ck_row_hide_sizes(row) { row = $ck(row); row.find('.editorck > .ckfields > .controlSize .ckfields_size').remove(); } function ckCalculateColumnSuggestion(row, nb_blocks) { var suggestions = []; switch(nb_blocks) { case 2: suggestions = [ [ '1/4', '3/4' ], [ '1/2', '1/2' ], [ '3/4', '1/4' ], [ '2/3', '1/3' ], [ '1/3', '2/3' ], [ '5/6', '1/6' ], [ '1/6', '5/6' ] ] break; case 3: suggestions = [ [ '1/3', '1/3', '1/3' ], [ '1/4', '1/2', '1/4' ], [ '1/6', '2/3', '1/6' ] ] break; case 4: suggestions = [ [ '1/4', '1/4', '1/4', '1/4' ], [ '1/6', '1/3', '1/3', '1/6' ] ] break; case 6: suggestions = [ [ '1/6', '1/6', '1/6', '1/6', '1/6', '1/6' ], [ '1/12', '1/12', '1/3', '1/3', '1/12', '1/12' ] ] break; default: break; } buttons = ''; for (i=0; i<suggestions.length; i++) { cols = ''; cols_value = []; suggestion = suggestions[i]; for (j=0; j<suggestion.length; j++) { cols += '<div class="isControlCol" data-width="' + suggestion[j] + '" style="width: ' + fracToDec(suggestion[j])*100 + '%;"><div></div></div>'; cols_value.push(suggestion[j]); } cols_value_txt = cols_value.join(' | '); buttons += '<div class="isControl" title="' + cols_value_txt + '" onclick="ckApplyColumnSuggestion($ck($ck(this).parents(\'.rowck\')[0]), this);">' + cols + '</div>'; } return buttons; } /* convert a fraction to decimal */ function fracToDec(frac) { dec = frac.split('/'); return (dec[0]/dec[1]); } function ckApplyColumnSuggestion(row, selection) { if (row.find('.blockck').length != $ck(selection).find('.isControlCol').length) { alert('Error : the number of columns selected does not match the number of columns in the row'); return; } suggestions = $ck(selection).find('.isControlCol'); for (i=0; i<suggestions.length; i++) { data_width = $ck(suggestions[i]).attr('data-width'); ckSetSpanFromClass(row.find('.blockck').eq(i), parseInt(fracToDec(data_width)*12)); } } function ckDuplicateItem(blocid) { bloc = $ck('#' + blocid); var copy = bloc.clone(); copyid = ckGetUniqueId(); copy.attr('id', copyid); bloc.after(copy); copy.removeClass('editfocus'); ckAddItemEditionEvents(copy); // init the effect if needed if (copy.find('.tabsck').length) { copy.find('.tabsck').tabsck(); } if (copy.find('.accordionsck').length) { copy.find('.accordionsck').accordionck(); } // copy the styles var re = new RegExp(blocid, 'g'); copy.find('.ckstyle').html(bloc.find('.ckstyle').html().replace(re,copyid)); } function ckDuplicateColumn(blocid) { var col = $ck('#' + blocid); // add an empty column var colcopyid = ckAddBlock($ck(col.parents('.rowck')[0])); var colcopy = $ck('#' + colcopyid); // copy the styles colcopy.find('> .ckstyle').html(col.find('> .ckstyle').html()); colcopy.attr('id', blocid); ckReplaceId(colcopy, colcopyid); col.find('.cktype').each(function() { colcopy.find('.innercontent').append($ck(this).clone()); }); colcopy.find('.cktype').each(function() { $this = $ck(this); $this.removeClass('editfocus'); // init the effect if needed if ($this.hasClass('cktype') && $this.find('.tabsck').length) { $this.find('.tabsck').tabsck(); } if ($this.hasClass('cktype') && $this.find('.accordionsck').length) { $this.find('.accordionsck').accordionck(); } ckAddItemEditionEvents($this); var copyid = ckGetUniqueId(); // copy the styles ckReplaceId($this, copyid); }); } function ckDuplicateRow(blocid) { var row = $ck('#' + blocid); var rowcopy = row.clone(); var rowcopyid = ckGetUniqueId('row_'); // rowcopy.attr('id', rowcopyid); row.after(rowcopy); rowcopy.removeClass('editfocus'); rowcopy.find('> .editorck').remove(); ckReplaceId(rowcopy, rowcopyid); ckMakeBlocksSortable(rowcopy); ckAddRowEditionEvents(rowcopy); rowcopy.find('.blockck, .cktype').each(function() { $this = $ck(this); $this.removeClass('editfocus'); // init the effect if needed if ($this.hasClass('cktype') && $this.find('.tabsck').length) { $this.find('.tabsck').tabsck(); } if ($this.hasClass('cktype') && $this.find('.accordionsck').length) { $this.find('.accordionsck').accordionck(); } var prefix = ''; if ($this.hasClass('blockck')) { prefix = 'block_'; ckMakeItemsSortable(rowcopy); ckAddBlockEditionEvents($this); } else { ckAddItemEditionEvents($this); } var copyid = ckGetUniqueId(prefix); // copy the styles ckReplaceId($this, copyid); }); } function ckToggleFullwidthRow(blocid) { var row = $ck('#' + blocid); if (row.hasClass('rowckfullwidth')) { row.removeClass('rowckfullwidth').find('.controlFullwidth').removeClass('ckactive'); } else { row.addClass('rowckfullwidth').find('.controlFullwidth').addClass('ckactive'); } } function replaceIdsInRow(newrow, addEvents) { if (! addEvents) addEvents = false; var newrowid = ckGetUniqueId('row_'); newrow.removeClass('editfocus'); newrow.find('> .editorck').remove(); ckReplaceId(newrow, newrowid); if (addEvents) ckMakeBlocksSortable(newrow); if (addEvents) ckAddRowEditionEvents(newrow); newrow.find('.blockck, .cktype').each(function() { $this = $ck(this); $this.removeClass('editfocus'); // init the effect if needed if ($this.hasClass('cktype') && $this.find('.tabsck').length) { if (addEvents) $this.find('.tabsck').tabsck(); } if ($this.hasClass('cktype') && $this.find('.accordionsck').length) { if (addEvents) $this.find('.accordionsck').accordionck(); } var prefix = ''; if ($this.hasClass('blockck')) { prefix = 'block_'; if (addEvents) ckMakeItemsSortable(row); if (addEvents) ckAddBlockEditionEvents($this); } else { if (addEvents) ckAddItemEditionEvents($this); } var copyid = ckGetUniqueId(prefix); ckReplaceId($this, copyid); }); return newrow; } function ckReplaceId(el, newID) { var re = new RegExp(el.attr('id'), 'g'); if (el.find('> .ckstyle').length) el.find('> .ckstyle').html(el.find('> .ckstyle').html().replace(re,newID)); el.attr('id', newID); } function ckAddContent(block) { var id = ckGetUniqueId(); $ck('.ckfocus').removeClass('ckfocus'); $ck('.innercontent', block).addClass('ckfocus'); ckShowContentList(); // $ck('.innercontent', block).append('<p id="' + id + '">ceci est un test de ced</p>'); } /* * Method to give a random unique ID */ function ckGetUniqueId(prefix) { if (! prefix) prefix = ''; var now = new Date().getTime(); var id = prefix + 'ID' + parseInt(now, 10); if ($ck('#' + id).length || CKUNIQUEIDLIST.indexOf(id) != -1) id = ckGetUniqueId(prefix); CKUNIQUEIDLIST.push(id); return id; } function ckShowContentList() { // $ck(document.body).append('<div id="ck_overlay"></div>'); $ck('#ck_overlay').fadeIn().click(function() { ckHideContentList() }); $ck('#ckcontentslist').fadeIn().css('top', $ck(window).scrollTop()); } function ckHideContentList() { $ck('#ck_overlay').fadeOut(); $ck('#ckcontentslist').fadeOut(); } function ckShowEditionPopup(blocid, workspace) { if (!workspace) workspace = $ck('#workspaceck'); blocid = '#' + blocid; $ck(document.body).append('<div id="ckwaitoverlay"></div>'); bloc = workspace.find(blocid); if (! bloc.length) bloc = $ck(blocid); $ck('.editfocus').removeClass('editfocus'); bloc.addClass('editfocus'); $ck('#popup_editionck').empty().fadeIn(); $ck('html, body').animate({scrollTop: 0}, 'slow'); if ($ck('#popup_favoriteck').length) { ckCloseFavoritePopup(true); } var myurl = URIBASE + "/index.php?option=com_pagebuilderck&view=options&layout=edit"; $ck.ajax({ type: "POST", url: myurl, data: { cktype: bloc.attr('data-type'), ckid: bloc.attr('id') } }).done(function(code) { $ck('#popup_editionck').append(code); $ck('#ckwaitoverlay').remove(); ckLoadEditionPopup(); ckLoadPreviewAreaStyles(blocid); }).fail(function() { alert(Joomla.JText._('CK_FAILED', 'Failed')); $ck('#ckwaitoverlay').remove(); }); } function ckCloseEditionPopup() { if (typeof ckBeforeCloseEditionPopup == 'function') { ckBeforeCloseEditionPopup(); } $ck('#popup_editionck').empty().hide(); $ck('html').animate({scrollTop: $ck('.editfocus').offset().top - 100}, 'slow'); } function ckCreateEditItem(i, itemlist, itemtitle, itemcontent) { var itemedition = $ck('<div class="item_edition clearfix">' +'<div class="item_move"></div>' +'<div class="item_title"><input type="text" id="item_title_'+i+'" name="item_title_'+i+'" class="item_title_edition" value="'+itemtitle+'" onchange="ckUpdatePreviewArea()"/></div>' +'<div class="item_toggler">'+Joomla.JText._('CK_CLICK_TO_EDIT_CONTENT','Click to edit the content')+'</div>' +'<div class="item_content"><textarea id="item_content_'+i+'" name="item_title_'+i+'" class="item_content_edition" onchange="ckUpdatePreviewArea()">'+itemcontent+'</textarea></div>' +'<div class="item_delete btn-small btn btn-danger" onclick="ckDeleteEditItem($ck(this).parent())">'+Joomla.JText._('CK_DELETE','Delete')+'</div>' +' <div class="item_setdefault btn-small btn" onclick="ckSetDefaultEditItem($ck(this).parent())"><span class="icon icon-star"></span>'+Joomla.JText._('CK_SET_DEFAULT','Set as default')+'</div>' +'</div>'); itemlist.append(itemedition); return itemedition; } function ckCreateEditImageItem(i, itemlist, itemtitle, itemcontent, itemimg) { var itemedition = $ck('<div class="item_edition clearfix" data_index="'+i+'">' +'<div class="item_move"></div>' +'<div class="item_image">' +'<a class="item_image_selection" href="javascript:void(0)" onclick="ckCallImageManagerPopup(\'item_imageurl'+i+'\')" >' +'<img src="'+itemimg.attr('src')+'" />' +'</a>' +'</div>' +'<div class="item_imageurl"><input type="text" id="item_imageurl'+i+'" name="item_imageurl'+i+'" class="item_imageurl_edition" value="'+getImgPathFromImgSrc(itemimg.attr('src'))+'" style="width: 400px;" onchange="ckUpdatePreviewArea()"/></div>' +'<div class="item_title"><input type="text" id="item_title_'+i+'" name="item_title_'+i+'" class="item_title_edition" value="'+itemtitle+'" style="width: 400px;" onchange="ckUpdatePreviewArea()"/></div>' +'<div class="item_toggler">'+Joomla.JText._('CK_CLICK_TO_EDIT_CONTENT','Click to edit the content')+'</div>' +'<div class="item_content"><textarea id="item_content_'+i+'" name="item_title_'+i+'" class="item_content_edition" onchange="ckUpdatePreviewArea()">'+itemcontent+'</textarea></div>' +'<br />' +'<div class="item_delete btn-small btn btn-danger" onclick="ckDeleteEditItem($ck(this).parent())">'+Joomla.JText._('CK_DELETE','Delete')+'</div>' // +' <div class="item_setdefault btn-small btn" onclick="ckSetDefaultEditItem($ck(this).parent())"><span class="icon icon-star"></span>'+Joomla.JText._('CK_SET_DEFAULT','Set as default')+'</div>' +'</div>'); itemlist.append(itemedition); return itemedition; } function ckCreateEditAdvancedItem(i, itemlist, itemtitle, itemcontentId) { var itemedition = $ck('<div class="item_edition clearfix">' +'<div class="item_move"></div>' +'<div class="item_title"><input type="text" id="item_title_'+i+'" name="item_title_'+i+'" class="item_title_edition" value="'+itemtitle+'" onchange="ckUpdatePreviewArea()"/></div>' +'<div class="item_toggler"><a href="javascript:void(0)" onclick="CKBox.open({handler:\'inline\', fullscreen: true, content:\'\', id: \'ckadvanceditembox\', onCKBoxLoaded: function() {ckInitOnBoxLoaded(\'ckadvanceditembox\', \''+itemcontentId+'\')}})">'+Joomla.JText._('CK_CLICK_TO_EDIT_CONTENT','Click to edit the content')+'</a></div>' // +'<div class="item_content"><a href="">'++'</a></div>' +'<div class="item_delete btn-small btn btn-danger" onclick="ckDeleteEditItem($ck(this).parent())">'+Joomla.JText._('CK_DELETE','Delete')+'</div>' +' <div class="item_setdefault btn-small btn" onclick="ckSetDefaultEditItem($ck(this).parent())"><span class="icon icon-star"></span>'+Joomla.JText._('CK_SET_DEFAULT','Set as default')+'</div>' +'</div>'); itemlist.append(itemedition); return itemedition; } /* empty function callback to fill in each edition area */ function ckInitOnBoxLoaded(boxid, itemcontentId) { return; } function getImgPathFromImgSrc(imgsrc, full) { if (! full) full = false; if (imgsrc.indexOf('http') == 0) return imgsrc; if (URIROOT != '/' && URIROOT && imgsrc.substr(0, URIROOT.length) == URIROOT) imgsrc = imgsrc.replace(URIROOT+'/','').replace(URIROOT,''); while(imgsrc.charAt(0) === '/') imgsrc = imgsrc.substr(1); if (full) imgsrc = URIROOT + '/' + imgsrc; return imgsrc; } function ckMakeEditItemAccordion(el) { $ck(el).accordion({ header: ".item_toggler", collapsible: true, active: false, heightStyle: "content" }); } function ckSetDefaultEditItem(item) { alert('ERROR : If you see this message then the function "ckSetDefaultEditItem" is missing from the element edition. Please contact the developer'); } function ckDeleteEditItem(item) { if (item.parent().children().length <= 1) { alert(Joomla.JText._('CK_CAN_NOT_DELETE_LAST','You can not delete the last item')); return; } if (!confirm(Joomla.JText._('CK_CONFIRM_DELETE','CK_CONFIRM_DELETE'))) return; if (typeof ckBeforeDeleteEditItem == 'function') { ckBeforeDeleteEditItem(item); } item.remove(); if (typeof ck_after_delete_edit_item == 'function') { ck_after_delete_edit_item(); } } function ckShowCssPopup(blocid, savefunc) { if (! savefunc) savefunc = 'ckSaveEditionPopup'; blocid = '#' + blocid; $ck(document.body).append('<div id="ckwaitoverlay"></div>'); bloc = $ck(blocid); $ck('.cssfocus').removeClass('cssfocus'); bloc.addClass('cssfocus'); $ck('#popup_editionck').empty().fadeIn(); $ck('html, body').animate({scrollTop: 0}, 'slow'); if ($ck('#popup_favoriteck').length) { ckCloseFavoritePopup(true); } var myurl = URIBASE + "/index.php?option=com_pagebuilderck&view=page&layout=ajaxstylescss"; $ck.ajax({ type: "POST", url: myurl, data: { objclass: bloc.prop('class'), expertmode: $ck('#body').hasClass('expert'), savefunc: savefunc, ckobjid: bloc.prop('id') } }).done(function(code) { $ck('#popup_editionck').append(code); $ck('#ckwaitoverlay').remove(); ckFillEditionPopup(blocid); ckLoadPreviewAreaStyles(blocid); }).fail(function() { alert(Joomla.JText._('CK_FAILED', 'Failed')); $ck('#ckwaitoverlay').remove(); }); } function ckFillEditionPopup(blocid, workspace) { // blocid = blocid.test('#') ? blocid : '#' + blocid; var patt = new RegExp("#"); var res = patt.test(blocid); blocid = res ? blocid : '#' + blocid; if (!workspace) workspace = $ck('#workspaceck'); var bloc = workspace.find(blocid); if (! bloc.length) bloc = $ck(blocid); $ck('> .ckprops', bloc).each(function(i, ckprops) { ckprops = $ck(ckprops); fieldslist = ckprops.attr('fieldslist') ? ckprops.attr('fieldslist').split(',') : Array(); // fieldslist.each(function(fieldname) { // for (var fieldname of fieldslist) { for (j=0;j<fieldslist.length;j++) { fieldname = fieldslist[j]; if (!$ck('#' + fieldname).length) return; cssvalue = ckprops.attr(fieldname); field = $ck('#' + fieldname); if (field.attr('type') == 'radio') { if (cssvalue == 'checked') { field.attr('checked', 'checked'); } else { field.removeAttr('checked'); } } else if (cssvalue) { if (field.attr('multiple')) cssvalue = cssvalue.split(','); field.val(cssvalue); if (field.hasClass('colorPicker') && field.attr('value')) { setpickercolor(field); field.css('background-color', field.attr('value')); if (field.attr('id').indexOf('backgroundcolorend') != -1) { prefix = field.attr('id').replace("backgroundcolorend", ""); if (prefix && $ck('#blocbackgroundcolorstart').attr('value')) ckCreateGradientPreview(prefix); } if (field.attr('id').indexOf('backgroundcolorstart') != -1) { prefix = field.attr('id').replace("backgroundcolorstart", ""); if (prefix && $ck('#blocbackgroundcolorstart').attr('value')) ckCreateGradientPreview(prefix); } } } else { field.attr('value', ''); } // }); } }); } function ckLoadPreviewAreaStyles(blocid) { bloc = $ck(blocid); var blocstyles = $ck('> .ckstyle', bloc).text(); var replacement = new RegExp(blocid, 'g'); var previewstyles = blocstyles.replace(replacement, '#previewareabloc'); // /blue/g,"red" var editionarea = $ck('#popup_editionck'); $ck('> .ckstyle', $ck('#previewareabloc')).html('<style type="text/css">'+previewstyles+'</style>'); ckAddEventOnFields(editionarea, blocid); } function ckAddEventOnFields(editionarea, blocid) { $ck('.inputbox', editionarea).change(function() { ckGetPreviewAreastylescss('previewareabloc', editionarea, blocid); }); $ck('.colorPicker,.inputbox[type=radio]', editionarea).blur(function() { ckGetPreviewAreastylescss('previewareabloc', editionarea, blocid); }); } function ckGetPreviewAreastylescss(blocid, editionarea, focus) { if (!editionarea) editionarea = document.body; if (!focus) { focus = $ck('.cssfocus'); } else { focus = $ck(focus); } var fieldslist = new Array(); fields = new Object(); $ck('.inputbox', editionarea).each(function(i, el) { el = $ck(el); fields[el.attr('name')] = el.attr('value'); if (el.attr('type') == 'radio') { if (el.attr('checked')) { fields[el.attr('id')] = 'checked'; } else { fields[el.attr('id')] = ''; } } }); $ck('> .ckprops', focus).each(function(i, ckprops) { ckprops = $ck(ckprops); fieldslist = ckprops.attr('fieldslist') ? ckprops.attr('fieldslist').split(',') : Array(); // fieldslist.each(function(fieldname) { // for (var fieldname of fieldslist) { for (j=0;j<fieldslist.length;j++) { fieldname = fieldslist[j]; if (typeof(fields[fieldname]) == 'null') fields[fieldname] = ckprops.attr(fieldname); // }); } }); fields = JSON.stringify(fields); customstyles = new Object(); $ck('.menustylescustom').each(function() { $this = $ck(this); customstyles[$this.attr('data-prefix')] = $this.attr('data-rule'); }); customstyles = JSON.stringify(customstyles); var myurl = URIBASE + "/index.php?option=com_pagebuilderck&view=page&layout=ajaxrendercss"; $ck.ajax({ type: "POST", url: myurl, data: { objclass: focus.prop('class'), ckobjid: blocid, action: 'preview', customstyles: customstyles, fields: fields } }).done(function(code) { $ck('> .ckstyle', $ck('#' + blocid)).empty().append(code); }).fail(function() { alert(Joomla.JText._('CK_FAILED', 'Failed')); }); } function ckSaveEditionPopup(blocid, workspace, returnFunc) { if (! returnFunc) returnFunc = ''; if (!workspace) workspace = $ck('#workspaceck'); var editionarea = $ck('#popup_editionck'); var focus = blocid ? workspace.find('#' + blocid) : workspace.find('.cssfocus'); if (! focus.length) focus = blocid ? $ck('#' + blocid) : $ck('.cssfocus'); $ck('> .ckprops', focus).remove(); $ck('.ckproperty', editionarea).each(function(i, tab) { tab = $ck(tab); tabid = tab.attr('id'); (!$ck('> .' + tabid, focus).length) ? ckCreateFocusProperty(focus, tabid) : $ck('> .' + tabid, focus).empty(); focusprop = $ck('> .' + tabid, focus); ckSavePopupfields(focusprop, tabid); fieldslist = ckGetPopupFieldslist(focus, tabid); focusprop.attr('fieldslist', fieldslist); }); if (focus.hasClass('wrapper') && $ck('> .tab_blocstyles', focus).attr('blocfullwidth') == 1) { $ck('> .inner', focus).removeClass('container').removeClass('container-fluid'); } else if (focus.hasClass('wrapper')) { $ck('> .inner', focus).addClass('container'); } ckGetPreviewstylescss(blocid, editionarea, workspace, returnFunc); ckSetAnimations(blocid, editionarea); ckAddVideoBackground(bloc); editionarea.empty().hide(); } function ckPreviewVideoBackground() { var webmurl = $ck('#blocvideourlwebm').val().replace(URIROOT,''); var mp4url = $ck('#blocvideourlmp4').val().replace(URIROOT,''); var ogvurl = $ck('#blocvideourlogv').val().replace(URIROOT,''); var videocode = ckGetVideoBackgroundCode(webmurl, mp4url, ogvurl); var previewarea = $ck('#previewareabloc > .inner'); if (previewarea.find('.videockbackground').length) previewarea.find('.videockbackground').remove(); previewarea.css('position', 'relative').css('overflow','hidden').prepend(videocode); } function ckAddVideoBackground(bloc) { var webmurl = bloc.find('.tab_videobgstyles').attr('blocvideourlwebm'); var mp4url = bloc.find('.tab_videobgstyles').attr('blocvideourlmp4'); var ogvurl = bloc.find('.tab_videobgstyles').attr('blocvideourlogv'); if (bloc.find('> .tab_videobgstyles').length && ( webmurl || mp4url || ogvurl ) ) { var videocode = ckGetVideoBackgroundCode(webmurl, mp4url, ogvurl); bloc.find('.videockbackground').remove(); bloc.find('> .inner').css('position', 'relative').css('overflow','hidden').prepend(videocode); return; } else { if (bloc.find('.videockbackground').length) { bloc.find('> .inner').css('overflow','').find('.videockbackground').remove(); } } return; } function ckGetVideoBackgroundCode(webmurl, mp4url, ogvurl) { var videocode = '<video autoplay loop muted poster="" class="videockbackground">' + (webmurl ? '<source src="'+URIROOT+'/'+webmurl+'" type="video/webm">' : '') + (mp4url ? '<source src="'+URIROOT+'/'+mp4url+'" type="video/mp4">' : '') + (ogvurl ? '<source src="'+URIROOT+'/'+ogvurl+'" type="video/ogg">' : '') +'</video>'; return videocode; } function ckCheckVideoBackground(bloc) { if (bloc.find('> .tab_videobgstyles') && ( bloc.find('> .tab_videobgstyles').attr('blocvideourlmp4') || bloc.find('> .tab_videobgstyles').attr('blocvideourlwebm') || bloc.find('> .tab_videobgstyles').attr('blocvideourlogv') ) ) return true return false; } function ckSetAnimations(blocid, editionarea) { var focus = blocid ? $ck('#' + blocid) : $ck('.cssfocus'); // replay if ($ck('#blocanimreplay', editionarea).val() == '0') { focus.addClass('noreplayck'); } else { focus.removeClass('noreplayck'); } } function ckCreateFocusProperty(focus, tabid) { focus.prepend('<div class="' + tabid + ' ckprops" />') } function ckSavePopupfields(focusprop, tabid) { $ck('.inputbox', $ck('#' + tabid)).each(function(i, field) { field = $ck(field); if (field.attr('type') != 'radio') { if (field.attr('value') && field.attr('value') != 'default') { focusprop.attr(field.attr('id'), field.val()); } else { focusprop.removeAttr(field.attr('id')); } } else { if (field.attr('checked')) { focusprop.attr(field.attr('id'), 'checked'); } else { focusprop.removeAttr(field.attr('id')); } } if (field.hasClass('isgooglefont') && field.val() != '') { ckSetGoogleFont('', '', field.val(), ''); } }); } function ckCapitalize(s) { return s[0].toUpperCase() + s.slice(1); } function ckSetGoogleFont(prefix, fonturl, fontname, fontweight) { if (! fontname) return; fontname = ckCapitalize(fontname).trim("'"); if (! fonturl) fonturl = "//fonts.googleapis.com/css?family="+fontname.replace(' ', '+'); if (! fontweight) fontweight = $ck('#' + prefix + 'fontweight').val(); // check if the google font exists jQuery.ajax({ url: fonturl, }) .done(function( data ) { if (data) { if (prefix) { $ck('#' + prefix + 'googlefont').removeClass('invalid'); $ck('#' + prefix + 'googlefont').val(fontname); $ck('#' + prefix + 'fontweight').val(fontweight); $ck('#' + prefix + 'fontfamily').val('googlefont').trigger('change'); } ckAddGooglefontStylesheet(fonturl); } else { $ck('#' + prefix + 'googlefont').addClass('invalid'); } }) .fail(function() { $ck('#' + prefix + 'googlefont').addClass('invalid'); }); } function ckAddGooglefontStylesheet(fonturl) { var exist = false; // loop for retrocompatibility before 1.1.13 while ($ck('#googlefontscall').length) { $ck('#googlefontscall').addClass('googlefontscall').removeAttr('id'); } $ck('.googlefontscall link').each(function(i, sheet) { if ($ck(sheet).attr('href') == fonturl) exist = true; }); if (exist == false ) { $ck('.googlefontscall').append("<link href='"+fonturl+"' rel='stylesheet' type='text/css'>"); } } function ckGetPopupFieldslist(focus, tabid) { fieldslist = new Array(); $ck('.inputbox', $ck('#' + tabid)).each(function(i, el) { if ($ck(el).attr('value') && $ck(el).attr('value') != 'default') fieldslist.push($ck(el).attr('id')); }); if (tabid == 'tab_blocstyles' && (focus.hasClass('bannerlogo') || focus.hasClass('banner') || focus.hasClass('bannermenu')) ) fieldslist.push('blocwidth'); return fieldslist.join(','); } function ckGetPreviewstylescss(blocid, editionarea, workspace, returnFunc) { if (!editionarea) editionarea = document.body; if (!workspace) workspace = $ck('#workspaceck'); var focus = blocid ? workspace.find('#' + blocid) : workspace.find('.cssfocus'); if (! focus.length) focus = blocid ? $ck('#' + blocid) : $ck('.cssfocus'); var fieldslist = new Array(); $ck('.inputbox', editionarea).each(function(i, el) { if ($ck(el).attr('value')) fieldslist.push($ck(el).attr('id')); }); fields = new Object(); $ck('> .ckprops', focus).each(function(i, ckprops) { ckprops = $ck(ckprops); fieldslist = ckprops.attr('fieldslist') ? ckprops.attr('fieldslist').split(',') : Array(); // fieldslist.each(function(fieldname) { // for (var fieldname of fieldslist) { for (j=0;j<fieldslist.length;j++) { fieldname = fieldslist[j]; fields[fieldname] = ckprops.attr(fieldname); } // }); }); fields = JSON.stringify(fields); customstyles = new Object(); $ck('.menustylescustom').each(function() { $this = $ck(this); customstyles[$this.attr('data-prefix')] = $this.attr('data-rule'); }); customstyles = JSON.stringify(customstyles); var myurl = URIBASE + "/index.php?option=com_pagebuilderck&view=page&layout=ajaxrendercss"; $ck.ajax({ type: "POST", url: myurl, data: { objclass: focus.prop('class'), ckobjid: focus.prop('id'), action: 'preview', customstyles: customstyles, fields: fields } }).done(function(code) { $ck('> .ckstyle', focus).empty().append(code); if (BLOCCKSTYLESBACKUP != 'undefined') { BLOCCKSTYLESBACKUP = $ck('> .ckstyle', focus).html(); } if (typeof(window[returnFunc]) == 'function') window[returnFunc](); }).fail(function() { alert(Joomla.JText._('CK_FAILED', 'Failed')); }); } function ckCreateGradientPreview(prefix) { if (!$ck('#'+prefix + 'gradientpreview')) return; var area = $ck('#'+prefix + 'gradientpreview'); if ($ck('#'+prefix + 'backgroundcolorstart') && $ck('#'+prefix + 'backgroundcolorstart').val()) { $ck('#'+prefix + 'backgroundcolorend').removeAttr('disabled'); $ck('#'+prefix + 'backgroundpositionend').removeAttr('disabled'); } else { $ck('#'+prefix + 'backgroundcolorend').attr({'disabled': 'disabled', 'value': ''}); $ck('#'+prefix + 'backgroundcolorend').css('background-color', ''); $ck('#'+prefix + 'backgroundpositionend').attr({'disabled': 'disabled', 'value': '100'}); } if ($ck('#'+prefix + 'backgroundcolorend') && $ck('#'+prefix + 'backgroundcolorend').val()) { $ck('#'+prefix + 'backgroundcolorstop1').removeAttr('disabled'); $ck('#'+prefix + 'backgroundpositionstop1').removeAttr('disabled'); $ck('#'+prefix + 'backgroundopacity').attr({'disabled': 'disabled', 'value': ''}); } else { $ck('#'+prefix + 'backgroundcolorstop1').attr({'disabled': 'disabled', 'value': ''}); $ck('#'+prefix + 'backgroundcolorstop1').css('background-color', ''); $ck('#'+prefix + 'backgroundpositionstop1').attr({'disabled': 'disabled', 'value': ''}); $ck('#'+prefix + 'backgroundopacity').removeAttr('disabled'); } if ($ck('#'+prefix + 'backgroundcolorstop1') && $ck('#'+prefix + 'backgroundcolorstop1').val()) { $ck('#'+prefix + 'backgroundcolorstop2').removeAttr('disabled'); $ck('#'+prefix + 'backgroundpositionstop2').removeAttr('disabled'); } else { $ck('#'+prefix + 'backgroundcolorstop2').attr({'disabled': 'disabled', 'value': ''}); $ck('#'+prefix + 'backgroundcolorstop2').css('background-color', ''); $ck('#'+prefix + 'backgroundpositionstop2').attr({'disabled': 'disabled', 'value': ''}); } var gradientstop1 = ''; var gradientstop2 = ''; var gradientend = ''; var gradientpositionstop1 = ''; var gradientpositionstop2 = ''; var gradientpositionend = ''; if ($ck('#'+prefix + 'backgroundpositionstop1') && $ck('#'+prefix + 'backgroundpositionstop1').val()) gradientpositionstop1 = $ck('#'+prefix + 'backgroundpositionstop1').val() + '%'; if ($ck('#'+prefix + 'backgroundpositionstop2') && $ck('#'+prefix + 'backgroundpositionstop2').val()) gradientpositionstop2 = $ck('#'+prefix + 'backgroundpositionstop2').val() + '%'; if ($ck('#'+prefix + 'backgroundpositionstop3') && $ck('#'+prefix + 'backgroundpositionend').val()) gradientpositionend = $ck('#'+prefix + 'backgroundpositionend').val() + '%'; if ($ck('#'+prefix + 'backgroundcolorstop1') && $ck('#'+prefix + 'backgroundcolorstop1').val()) gradientstop1 = $ck('#'+prefix + 'backgroundcolorstop1').val() + ' ' + gradientpositionstop1 + ','; if ($ck('#'+prefix + 'backgroundcolorstop2') && $ck('#'+prefix + 'backgroundcolorstop2').val()) gradientstop2 = $ck('#'+prefix + 'backgroundcolorstop2').val() + ' ' + gradientpositionstop2 + ','; if ($ck('#'+prefix + 'backgroundcolorend') && $ck('#'+prefix + 'backgroundcolorend').val()) gradientend = $ck('#'+prefix + 'backgroundcolorend').val() + ' ' + gradientpositionend; var stylecode = '<style type="text/css">' + '#' + prefix + 'gradientpreview {' + 'background:' + $ck('#'+prefix + 'backgroundcolorstart').val() + ';' + 'background-image: -o-linear-gradient(top,' + $ck('#'+prefix + 'backgroundcolorstart').val() + ',' + gradientstop1 + gradientstop2 + gradientend + ');' + 'background-image: -webkit-linear-gradient(top,' + $ck('#'+prefix + 'backgroundcolorstart').val() + ',' + gradientstop1 + gradientstop2 + gradientend + ');' + 'background-image: -webkit-gradient(linear, left top, left bottom,' + $ck('#'+prefix + 'backgroundcolorstart').val() + ',' + gradientstop1 + gradientstop2 + gradientend + ');' + 'background-image: -moz-linear-gradient(top,' + $ck('#'+prefix + 'backgroundcolorstart').val() + ',' + gradientstop1 + gradientstop2 + gradientend + ');' + 'background-image: -ms-linear-gradient(top,' + $ck('#'+prefix + 'backgroundcolorstart').val() + ',' + gradientstop1 + gradientstop2 + gradientend + ');' + 'background-image: linear-gradient(top,' + $ck('#'+prefix + 'backgroundcolorstart').val() + ',' + gradientstop1 + gradientstop2 + gradientend + ');' + '}' + '</style>'; area.find('.injectstyles').html(stylecode); } function ckInitIconSize(fromicon, iconsizebutton) { $ck(iconsizebutton).each(function() { $ck(this).click(function() { $ck(fromicon).removeClass($ck(iconsizebutton + '.active').attr('data-width')).addClass($ck(this).attr('data-width')); $ck(iconsizebutton).removeClass('active'); $ck(this).addClass('active'); }); }); } function ckGetIconSize(fromicon, iconsizebutton) { var iconsize = 'default'; var icon = $ck(fromicon); iconsize = icon.hasClass('fa-lg') ? 'fa-lg' : iconsize; iconsize = icon.hasClass('fa-2x') ? 'fa-2x' : iconsize; iconsize = icon.hasClass('fa-3x') ? 'fa-3x' : iconsize; iconsize = icon.hasClass('fa-4x') ? 'fa-4x' : iconsize; iconsize = icon.hasClass('fa-5x') ? 'fa-5x' : iconsize; $ck(iconsizebutton).removeClass('active'); $ck(iconsizebutton + '[data-width="' + iconsize + '"]').addClass('active'); } function ckInitIconPosition(fromicon, iconpositionbutton) { $ck(iconpositionbutton).each(function() { $ck(this).click(function() { if ($ck(this).attr('data-position') == 'default') { $ck(fromicon).css('vertical-align', ''); } else { $ck(fromicon).css('vertical-align', $ck(this).attr('data-position')); } $ck(iconpositionbutton).removeClass('active'); $ck(this).addClass('active'); }); }); } function ckGetIconPosition(fromicon, iconpositionbutton) { var iconposition = 'default'; var icon = $ck(fromicon); iconposition = icon.css('vertical-align') == 'default' ? 'default' : iconposition; iconposition = icon.css('vertical-align') == 'top' ? 'top' : iconposition; iconposition = icon.css('vertical-align') == 'middle' ? 'middle' : iconposition; iconposition = icon.css('vertical-align') == 'botom' ? 'bottom' : iconposition; $ck(iconpositionbutton).removeClass('active'); $ck(iconpositionbutton + '[data-position="' + iconposition + '"]').addClass('active'); } function ckGetIconMargin(fromicon, iconmarginfield) { $ck(iconmarginfield).val($ck(fromicon).css('margin-right')); } function ckSetIconMargin(fromicon, iconmarginfield) { if (! $ck(iconmarginfield).length) return; var margin = $ck(iconmarginfield).val(); var pourcent = new RegExp('%',"g"); var euem = new RegExp('%',"g"); var pixel = new RegExp('%',"g"); margin = pourcent.test(margin) ? margin : (euem.test(margin) ? margin : (pixel.test(margin) ? margin : margin + 'px')); $ck(fromicon).css('margin-right', margin); } function ckSelectFaIcon(iconclass) { alert('ERROR : If you see this message then the function "ckSelectFaIcon" is missing from the element edition. Please contact the developer'); } function ckSelectModule(module) { alert('ERROR : If you see this message then the function "ckSelectModule" is missing from the element edition. Please contact the developer'); } function ckLoadEditionPopup() { alert('ERROR : If you see this message then the function "ckLoadEditionPopup" is missing from the element edition. Please contact the developer'); } function ckCallImageManagerPopup(id) { CKBox.open({handler: 'iframe', url: 'index.php?option=com_pagebuilderck&view=browse&type=image&func=selectimagefile&field='+id+'&tmpl=component'}); /*if (! $ck('#pagebuilderckImagemanagerck').length) { var popup = document.createElement('div'); popup.id = 'pagebuilderckImagemanagerck'; popup.className = 'pagebuilderckImagemanagerck pagebuilderckModalck modal hide fade'; document.body.appendChild(popup); popup.innerHTML = '<div class="modal-header">' +'<button type="button" class="close" data-dismiss="modal">×</button>' +'<h3>' + Joomla.JText._('CK_EDIT') + '</h3>' +'</div>' +'<div class="modal-body">' + '<iframe class="iframe" src="' + URIROOT + '/administrator/index.php?option=com_media&view=images&tmpl=component&fieldid=pagebuilderckImagemanagerckfieldid" height="500px" width="800px"></iframe>' +'</div>' +'<div class="modal-footer">' +'<input id="pagebuilderckImagemanagerckfieldid" type="hidden" onchange="jInsertFieldValue(this.value, jQuery(\'#pagebuilderckImagemanagerck\').attr(\'data-fieldid\'))" />' // +'<button class="btn\" data-dismiss="modal" aria-hidden="true"><i class="icon icon-cancel"></i>' + Joomla.JText._('JCANCEL') + '</button>' +'<button class="btn fullscreenck" aria-hidden="true" onclick="ckTooglePagebuilderckModalFullscreen(this)"><i class="icon icon-expand-2"></i>' + Joomla.JText._('CK_FULLSCREEN') +'</button>' //+'<button class=\"btn btn-success\" data-dismiss=\"modal\" aria-hidden=\"true\" onclick=\"jQuery(\'iframe\', jQuery(jQuery(this).parents(\'.moduleckModal\')[0])).contents().find(\'#saveBtn\').click();\">" . JText::_('CK_SAVE_CLOSE') . "</button>' +'</div>'; var BSmodal = jQuery('#pagebuilderckImagemanagerck'); BSmodal.css('z-index', '44444'); var modalFrame = BSmodal.find('iframe'); modalFrame.load(function(){ var modalFrameContent = modalFrame.contents(); modalFrameContent.find('.well').css('padding', '5px 10px'); modalFrameContent.find('#imageframe').height('400px'); }); } else { var BSmodal = jQuery('#pagebuilderckImagemanagerck'); } BSmodal.attr('data-fieldid', id); BSmodal.find('.fullscreenck').removeClass('active'); BSmodal.modal().removeClass('pagebuilderckModalFullscreen'); BSmodal.modal('show');*/ } function ckCallIconsPopup() { if (! $ck('#pagebuilderckIconsmodalck').length) { var popup = document.createElement('div'); popup.id = 'pagebuilderckIconsmodalck'; popup.className = 'pagebuilderckIconsmodalck pagebuilderckModalck modal hide fade'; document.body.appendChild(popup); popup.innerHTML = '<div class="modal-header">' +'<button type="button" class="close" data-dismiss="modal">×</button>' +'<h3>' + Joomla.JText._('CK_ICON') + '</h3>' +'</div>' +'<div class="modal-body">' + '<iframe class="iframe" src="' + URIROOT + '/administrator/index.php?option=com_pagebuilderck&view=icons" height="400px" width="800px"></iframe>' +'</div>' +'<div class="modal-footer">' +'<button class="btn fullscreenck" aria-hidden="true" onclick="ckTooglePagebuilderckModalFullscreen(this)"><i class="icon icon-expand-2"></i>' + Joomla.JText._('CK_FULLSCREEN') +'</button>' +'</div>'; var BSmodal = jQuery('#pagebuilderckIconsmodalck'); BSmodal.css('z-index', '44444'); } else { var BSmodal = jQuery('#pagebuilderckIconsmodalck'); } BSmodal.find('.fullscreenck').removeClass('active'); BSmodal.modal().removeClass('pagebuilderckModalFullscreen'); BSmodal.modal('show'); } function ckCallGoogleFontPopup(prefix) { CKBox.open({url: URIROOT + '/administrator/index.php?option=com_pagebuilderck&view=fonts&tmpl=component&prefix='+prefix}) /*if (! $ck('#pagebuilderckGfontmodalck').length) { var popup = document.createElement('div'); popup.id = 'pagebuilderckGfontmodalck'; popup.className = 'pagebuilderckGfontmodalck pagebuilderckModalck modal hide fade'; document.body.appendChild(popup); popup.innerHTML = '<div class="modal-header">' +'<button type="button" class="close" data-dismiss="modal">×</button>' +'<h3>' + Joomla.JText._('CK_GOOGLE_FONT') + '</h3>' +'</div>' +'<div class="modal-body">' + '<iframe class="iframe" src="' + URIROOT + '/administrator/index.php?option=com_pagebuilderck&view=fonts&tmpl=component&prefix='+prefix+'" height="400px" width="800px"></iframe>' +'</div>' +'<div class="modal-footer">' +'<button class="btn fullscreenck" aria-hidden="true" onclick="ckTooglePagebuilderckModalFullscreen(this)"><i class="icon icon-expand-2"></i>' + Joomla.JText._('CK_FULLSCREEN') +'</button>' +'</div>'; var BSmodal = jQuery('#pagebuilderckGfontmodalck'); BSmodal.css('z-index', '44444'); } else { var BSmodal = jQuery('#pagebuilderckGfontmodalck'); } BSmodal.find('.fullscreenck').removeClass('active'); BSmodal.modal().removeClass('pagebuilderckModalFullscreen'); BSmodal.modal('show');*/ } /*function ckCallModulesPopup() { if (! $ck('#pagebuilderckModulesmodalck').length) { var popup = document.createElement('div'); popup.id = 'pagebuilderckModulesmodalck'; popup.className = 'pagebuilderckModulesmodalck pagebuilderckModalck modal hide fade'; document.body.appendChild(popup); popup.innerHTML = '<div class="modal-header">' +'<button type="button" class="close" data-dismiss="modal">×</button>' +'<h3>' + Joomla.JText._('CK_MODULE') + '</h3>' +'</div>' +'<div class="modal-body">' + '<iframe class="iframe" src="' + URIROOT + '/administrator/index.php?option=com_pagebuilderck&view=modules" height="400px" width="800px"></iframe>' +'</div>' +'<div class="modal-footer">' +'<button class="btn fullscreenck" aria-hidden="true" onclick="ckTooglePagebuilderckModalFullscreen(this)"><i class="icon icon-expand-2"></i>' + Joomla.JText._('CK_FULLSCREEN') +'</button>' +'</div>'; var BSmodal = jQuery('#pagebuilderckModulesmodalck'); BSmodal.css('z-index', '44444'); } else { var BSmodal = jQuery('#pagebuilderckModulesmodalck'); } BSmodal.find('.fullscreenck').removeClass('active'); BSmodal.modal().removeClass('pagebuilderckModalFullscreen'); BSmodal.modal('show'); }*/ function ckOpenModulesPopup() { url = URIROOT + '/administrator/index.php?option=com_pagebuilderck&view=modules'; CKBox.open({id: 'ckmodulespopup', url: url, style: {padding: '10px'} }); } /* Toggle the fullscreen */ function ckTooglePagebuilderckModalFullscreen(button) { var BSmodal = $ck($ck(button).parents('.modal')[0]); if ($ck(button).hasClass('active')) { BSmodal.removeClass('pagebuilderckModalFullscreen'); $ck(button).removeClass('active'); } else { BSmodal.addClass('pagebuilderckModalFullscreen'); ckResizeModalbodyOnFullscreen(); $ck(button).addClass('active'); } } /* Resize the fullscreen modal window to get the best space for edition */ function ckResizeModalbodyOnFullscreen() { var BSmodal = $ck('.modal.pagebuilderckModalFullscreen'); var modalBody = BSmodal.find('.modal-body'); modalBody.css('height', BSmodal.innerHeight() - BSmodal.find('.modal-header').outerHeight() - BSmodal.find('.modal-footer').outerHeight()); } /* Bind the modal resizing on page resize */ jQuery(window).bind('resize',function(){ ckResizeModalbodyOnFullscreen(); ckResizeEditor(); }); /* Play the animation in the Preview area */ function ckPlayAnimationPreview() { $ck('#previewareabloc').hide(0).removeClass('animateck'); $ck('#previewareabloc .blockck').hide(0).removeClass('animateck'); $ck('#previewarea').addClass('pagebuilderck'); var t = setTimeout( function() { $ck('#previewareabloc').show(0).addClass('animateck'); $ck('#previewareabloc .blockck').show(0).addClass('animateck'); }, $ck('#blocanimdur').val()*1000); } /* remove the root path for the image to be shown in the editor */ function ckContentToEditor(content) { if (! content) return ''; var search = new RegExp('<img(.*?)src="'+URIROOT.replace('/', '\/')+'\/(.*?)"',"g"); content = content.replace(search, '<img $1src="$2"'); return content; } /* add the root path for the image to be shown in the pagebuilder */ function ckEditorToContent(content) { if (! content) return ''; var search = new RegExp('<img(.*?)src="(.*?)"',"g"); content = content.replace(search, '<img $1src="'+URIROOT+'/$2"'); return content; } /* show the popup to select a restoration date */ function ckCallRestorePopup() { var BSmodal = jQuery('#pagebuilderckRestoreModalck'); BSmodal.css('z-index', '44444'); BSmodal.modal('show'); } /* load the .pbck backup file and load it in the page */ function ckDoRestoration(id, name, index) { jQuery('.restoreline' + index + ' .processing').addClass('ckwait'); var isLocked = parseInt(jQuery('.restoreline' + index + ' .locked').attr('data-locked')); var myurl = URIBASE + "/index.php?option=com_pagebuilderck&task=ajaxDoRestoration"; $ck.ajax({ type: "POST", url: myurl, data: { id: id, name: name, isLocked: isLocked } }).done(function(code) { $ck('#workspaceck').html(code); jQuery('#pagebuilderckRestoreModalck').modal('hide'); jQuery('.restoreline' + index + ' .processing').removeClass('ckwait'); initWorkspace(); }).fail(function() { alert(Joomla.JText._('CK_FAILED', 'Failed')); }); } /*------------------------------------------------------ * Functions for the image drag and drop upload *-----------------------------------------------------*/ /*function previewfile(holder, file) { var acceptedTypes = { 'image/png': true, 'image/jpeg': true, 'image/gif': true } if (acceptedTypes[file.type] === true) { var reader = new FileReader(); reader.onload = function (event) { var image = new Image(); image.src = event.target.result; // image.width = 250; // a fake resize // holder.appendChild(image); // to use if we want the encoded data64 image to be directly added in the page }; reader.readAsDataURL(file); } else { holder.innerHTML += '<p>Uploaded ' + file.name + ' ' + (file.size ? (file.size/1024|0) + 'K' : ''); // console.log(file); } }*/ /* function ckReadDndImages(holder, files) { // empty the place if there is already an image -> no !! // if ($ck(holder).find('img').length) $ck(holder).find('img').remove(); var formData = !!window.FormData ? new FormData() : null; for (var i = 0; i < files.length; i++) { if (!files[i].type.match(/^image\//)) { alert('The file must be an image : ' + files[i].name) ; continue ; } if (!!window.FormData) formData.append('file', files[i]); // previewfile(holder, files[i]); if (!!window.FormData) { $ck(holder).append('<progress max="100" value="0" class="progress"></progress>'); var holderProgress = $ck(holder).find('.progress'); var myurl = 'index.php?option=com_pagebuilderck&task=ajaxAddPicture&' + cktoken + '=1'; $ck.ajax({ type: "POST", url: myurl, // async: false, data: formData, dataType: 'json', processData: false, // indique à jQuery de ne pas traiter les données contentType: false, // indique à jQuery de ne pas configurer le contentType xhr: function () { var xhr = new window.XMLHttpRequest(); xhr.upload.addEventListener("progress", function (evt) { if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; holderProgress.val( percentComplete * 100 ); if (percentComplete === 1) { holderProgress.addClass('hide'); } } }, false); xhr.addEventListener("progress", function (evt) { if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; holderProgress.val( percentComplete * 100 ); } }, false); return xhr; } }).done(function(response) { if(typeof response.error === 'undefined') { // Success if(typeof response.img !== 'undefined') { holderProgress.remove(); if ($ck(holder).find('img').length) { $ck(holder).find('img').attr('src', URIROOT + response.img).attr('data-src', response.img); } else { $ck(holder).find('.imageck').append('<img data-src="'+response.img+'" src="'+URIROOT + response.img+'" />'); } } } else { alert('ERROR: ' + response.error); } }).fail(function() { // alert(Joomla.JText._('CK_FAILED', 'Failed')); }); } } }*/ /* function ckAddDndForImageUpload(holder) { if (typeof FileReader == 'undefined') return; if ('draggable' in document.createElement('span')) { holder.ondragover = function () { $ck(holder).addClass('ckdndhover'); return false; }; holder.ondragleave = function () { $ck(holder).removeClass('ckdndhover'); return false; }; holder.ondragend = function () { $ck(holder).removeClass('ckdndhover'); return false; }; holder.ondrop = function (e) { $ck(holder).removeClass('ckdndhover'); e.preventDefault(); ckReadDndImages(holder, e.dataTransfer.files); } } else { alert('PAGE BUILDER CK Message : Drag and drop for images not supported'); // fileupload.className = 'hidden'; // fileupload.querySelector('input').onchange = function () { // readfiles(holder, this.files); // }; } }*/ /*------------------------------------------------------ * END of image drag and drop *-----------------------------------------------------*/ /* Lock or unlock the backup to avoid it to be erased */ function ckToggleLockedBackup(id, filename, index) { var isLocked = parseInt(jQuery('.restoreline' + index + ' .locked').attr('data-locked')); jQuery('.restoreline' + index + ' .locked').addClass('ckwait'); var myurl = URIBASE + "/index.php?option=com_pagebuilderck&task=ajaxToggleLockBackup"; $ck.ajax({ type: "POST", url: myurl, data: { id: id, filename: filename, isLocked: isLocked } }).done(function(code) { if (code == '1') { jQuery('.restoreline' + index + ' .locked').removeClass('ckwait'); if (parseInt(isLocked)) { jQuery('.restoreline' + index + ' .locked').removeClass('active').attr('data-locked', '0'); jQuery('.restoreline' + index + ' .locked .fa').removeClass('fa-lock').addClass('fa-unlock'); } else { jQuery('.restoreline' + index + ' .locked').addClass('active').attr('data-locked', '1'); jQuery('.restoreline' + index + ' .locked .fa').removeClass('fa-unlock').addClass('fa-lock'); } } else { alert('Failed. Please reload the page.'); } }).fail(function() { alert(Joomla.JText._('CK_FAILED', 'Failed')); }); } /* Load an existing page into the interface */ function returnLoadPage(id, type) { if (! type) type = 'page'; CKBox.close(); CKBox.open({style: {padding: '10px'}, fullscreen: false, size: {x: '500px', y: '200px'}, handler: 'inline', content: 'cktoolbarLoadPageOptions'}); $ck('#cktoolbarLoadPageOptions .ckaction').attr('data-id', id).attr('data-type', type); } function ckLoadPage(btn, option) { var id = $ck(btn).attr('data-id'); var type = $ck(btn).attr('data-type'); $ck(btn).addClass('ckwait'); if (type == 'library') { var myurl = URIBASE + "/index.php?option=com_pagebuilderck&task=ajaxLoadLibraryHtml"; } else { var myurl = URIBASE + "/index.php?option=com_pagebuilderck&task=ajaxLoadPageHtml"; } $ck.ajax({ type: "POST", url: myurl, data: { id: id } }).done(function(code) { if (code != 'error') { var newcode = $ck(code); // look for each row and upate the html ID newcode.each(function() { if ($ck(this).hasClass('rowck')) replaceIdsInRow($ck(this), false); }); if (option == 'replace') { $ck('#workspaceck').html(newcode); } else if (option == 'bottom') { $ck('#workspaceck').append(newcode); } else { $ck('#workspaceck').prepend(newcode); } initWorkspace(); if ($ck(newcode[2]).find('.cktype[data-type="image"]').length) ckAddDndForImageUpload($ck(newcode[2]).find('.cktype[data-type="image"]')[0]); } else { alert(Joomla.JText._('Error : Can not get the page. Please retry and contact the developer.')); } $ck('#cktoolbarLoadPageOptions .ckwait').removeClass('ckwait'); CKBox.close(); }).fail(function() { alert(Joomla.JText._('CK_FAILED', 'Failed')); $ck('#cktoolbarLoadPageOptions .ckwait').removeClass('ckwait'); }); } function ckSelectFile(file, field) { if (! field) { alert('ERROR : no field given in the function ckSelectFile'); return; } $ck('#'+field).val(file).trigger('change'); } /* for retro compatibility purpose only */ function selectimagefile(file, field) { ckSelectFile(file, field); } function ckLoadIframeEdition(url, htmlId, taskApply, taskCancel) { CKBox.open({id: htmlId, url: url, style: {padding: '10px'}, // url: 'index.php?option=com_content&layout=modal&tmpl=component&task=article.edit&id='+id, onCKBoxLoaded : function(){ckLoadedIframeEdition(htmlId, taskApply, taskCancel);}, footerHtml: '<a class="ckboxmodal-button" href="javascript:void(0)" onclick="ckSaveIframe(\''+htmlId+'\')">'+Joomla.JText._('CK_SAVE_CLOSE')+'</a>' }); } function ckLoadedIframeEdition(boxid, taskApply, taskCancel) { var frame = $ck('#'+boxid).find('iframe'); frame.load(function() { var framehtml = frame.contents(); framehtml.find('button[onclick^="Joomla.submitbutton"]').remove(); framehtml.find('form').prepend('<button style="display:none;" id="saveBtn" onclick="Joomla.submitbutton(\''+taskApply+'\');" ></button>') framehtml.find('form').prepend('<button style="display:none;" id="cancelBtn" onclick="Joomla.submitbutton(\''+taskCancel+'\');" ></button>') }); } function ckSaveIframe(boxid) { var frame = $ck('#'+boxid).find('iframe'); frame.contents().find('#saveBtn').click(); CKBox.close($ck('#'+boxid).find('.ckboxmodal-button'), true); } function ckTestUnit(value, defaultunit) { if (!defaultunit) defaultunit = "px"; if (value.toLowerCase().indexOf('px') > -1 || value.toLowerCase().indexOf('em') > -1 || value.toLowerCase().indexOf('%') > -1) return value; return value + defaultunit; } /*------------------------------------------------------ * Editor management *-----------------------------------------------------*/ function ckShowEditor() { $ck('#ckeditorcontainer').show().find('.toggle-editor').hide(); ckResizeEditor(); } function ckResizeEditor() { var ckeditor_ifr_height = $ck('#ckeditorcontainer .ckboxmodal-body').height() - $ck('#ckeditorcontainer .mce-toolbar').height() - $ck('#ckeditorcontainer .mce-toolbar-grp').height() - $ck('#ckeditorcontainer .mce-statusbar').height(); $ck('#ckeditor_ifr').height(parseInt(ckeditor_ifr_height) - 6); } function ckSaveEditorToContent() { } /*------------------------------------------------------ * END of Editor management *-----------------------------------------------------*/ function ckSaveAsPage () { var title = prompt('This will create a new page with this layout. Please enter a name for this page'); if (! title) return; var myurl = URIBASE + "/index.php?option=com_pagebuilderck&task=page.save&" + PAGEBUILDERCK_TOKEN + "=1"; // CKBox.open({style: {padding: '10px'}, fullscreen: false, size: {x: '500px', y: '200px'}, handler: 'inline', content: 'cktoolbarExportPage'}); $ck.ajax({ type: "POST", url: myurl, data: { id: 0, title: title, method: 'ajax', htmlcode: $ck('#workspaceck').html() } }).done(function(code) { alert(Joomla.JText._('CK_PAGE_SAVED', 'Page saved')); }).fail(function() { alert(Joomla.JText._('CK_FAILED', 'Failed')); }); } function ckResponsiveSettings(forcedisable) { if (! forcedisable) forcedisable = false; var button = $ck('#ckresponsivesettingsbutton'); if (button.hasClass('active') || forcedisable) { button.removeClass('active'); $ck('#workspaceck .cktype').each(function() { $bloc = $ck(this); $bloc.removeClass('ckmobileediting'); $bloc.find('.ckmobileoverlay').remove(); }); } else { button.addClass('active'); $ck('#workspaceck .cktype').each(function() { $bloc = $ck(this); // var hidephone = $bloc.hasClass('ckhidephone') ? 'ckhide' : ''; // var hidedesktop = $bloc.hasClass('ckhidedesktop') ? 'ckhide' : ''; $bloc.addClass('ckmobileediting') .append('<div class="ckmobileoverlay">' + '<div class="ckmobilebutton ckmobilebuttonphone" data-class="ckhidephone" onclick="ckToggleResponsive(this)">' // + '<div class="ckmobilebuttonphone' + hidephone + '" onclick=""></div>' + '</div>' + '<div class="ckmobilebutton ckmobilebuttondesktop" data-class="ckhidedesktop" onclick="ckToggleResponsive(this)">' // + '<div class="ckmobilebuttondesktop' + hidedesktop + '" onclick=""></div>' + '</div>' + '</div>'); }); } } function ckToggleResponsive(btn) { var btn = $ck(btn); var cktype = $ck(btn.parents('.cktype')[0]); if (cktype.hasClass(btn.attr('data-class'))) { // btn.removeClass('ckhide'); cktype.removeClass(btn.attr('data-class')); } else { // btn.addClass('ckhide'); cktype.addClass(btn.attr('data-class')); } } function ckCheckHtml(forcedisable) { if (! forcedisable) forcedisable = false; var button = $ck('#ckhtmlchecksettingsbutton'); if (button.hasClass('active') || forcedisable) { button.removeClass('active'); $ck('#workspaceck .rowck, #workspaceck .blockck, #workspaceck .cktype').each(function() { $bloc = $ck(this); $bloc.removeClass('ckhtmlinfoediting'); $bloc.find('.ckhtmlinfos').remove(); }); } else { button.addClass('active'); var showmessage = false; $ck('#workspaceck .rowck, #workspaceck .blockck, #workspaceck .cktype').each(function() { $bloc = $ck(this); var customclasses = $bloc.find('> .inner').attr('data-customclass') ? $bloc.find('> .inner').attr('data-customclass') : ''; $bloc.addClass('ckhtmlinfoediting') .prepend('<div class="ckhtmlinfos">' + '<div class="ckhtmlinfosid" onclick="ckChangeBlocId(this)" data-id="'+$bloc.attr('id')+'">' + '<span class="label">ID</span> ' + '<span class="ckhtmlinfosidvalue">' + $bloc.attr('id') + '</span>' + '</div>' + '<div class="ckhtmlinfosclass" onclick="ckChangeBlocClassname(this)">' + '<span class="label">Class</span> ' + '<span class="ckhtmlinfosclassvalue">' + customclasses + '</span>' + '</div>' + '</div>'); // check if duplicated IDs if ($ck('[id="'+$bloc.attr('id')+'"]').length > 1) { showmessage = true; $ck('[id="'+$bloc.attr('id')+'"]').each(function() { $ck(this).find('> .ckhtmlinfos .ckhtmlinfosidvalue').addClass('invalid'); }); } }); if (showmessage) { alert(Joomla.JText._('CHECK_IDS_ALERT_PROBLEM','Some blocks have the same ID. This is a problem that must be fixed. Look at the elements in red and rename them')); } else { alert(Joomla.JText._('CHECK_IDS_ALERT_OK','Validation finished, all is ok !')); } } } function ckChangeBlocId(btn) { // blocid = $ck(btn).attr('data-id'); // bloc = $ck('#' + blocid); bloc = $ck($ck(btn).parents('.rowck, .blockck, .cktype')[0]); var result = prompt(Joomla.JText._('CK_ENTER_UNIQUE_ID', 'Please enter a unique ID (must be a text)'), bloc.attr('id')); if (!result) return; result = ckValidateName(result); if (ckValidateBlocId(result)) ckUpdateIdPosition(bloc, result); } function ckChangeBlocClassname(btn) { bloc = $ck($ck(btn).parents('.rowck, .blockck, .cktype')[0]); var blocinner = bloc.find('> .inner'); var customclasses = blocinner.attr('data-customclass') ? blocinner.attr('data-customclass') : ''; var result = prompt(Joomla.JText._('CK_ENTER_CLASSNAMES', 'Please enter the class names separated by a space'), customclasses); if (result == null) return; // result = result.replace(/\s/g, ""); // remove previous classes var customclassesFrom = customclasses.split(' '); for (var i=0; i<customclassesFrom.length; i++) { blocinner.removeClass(customclassesFrom[i]); } // add new classes var customclassesTo = result.split(' '); for (var i=0; i<customclassesTo.length; i++) { blocinner.addClass(customclassesTo[i]); } blocinner.attr('data-customclass', result); bloc.find('> .ckhtmlinfos .ckhtmlinfosclassvalue').text(result); } function ckValidateBlocId(newid) { if (newid != null && newid != "" && !$ck('#' + newid).length) { return true; } else if ($ck('#' + newid).length) { alert(Joomla.JText._('CK_INVALID_ID', 'ID invalid or already exist')); return false; } else if (newid == null || newid == "") { alert(Joomla.JText._('CK_ENTER_VALID_ID', 'Please enter a valid ID')); return false; } return true; } function ckValidateName(name) { var name = name.replace(/\s/g, ""); name = name.toLowerCase(); return name; } function ckUpdateIdPosition(bloc, newid) { // bloc = $ck('#' + blocid); ckReplaceId(bloc, newid); bloc.find('> .ckhtmlinfos .ckhtmlinfosid').attr('data-id', newid); bloc.find('> .ckhtmlinfos .ckhtmlinfosidvalue').removeClass('invalid'); bloc.find('> .ckhtmlinfos .ckhtmlinfosidvalue').text(newid); }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.03 |
proxy
|
phpinfo
|
Settings