/** * NOTICE OF LICENSE * * This source file is subject to the Software License Agreement * that is bundled with this package in the file LICENSE.txt. * * @author Peter Sliacky (Zelarg) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ //console.info('back.js loaded'); (function ($) { $.fn.fixMe = function () { return this.each(function () { var $this = $(this), $t_fixed; function init() { $this.wrap('
'); $t_fixed = $this.clone(); $t_fixed.find("tbody").remove().end().addClass("fixed").insertBefore($this); resizeFixed(); } function resizeFixed() { $t_fixed.find("th").each(function (index) { $(this).css("width", $this.find("th").eq(index).outerWidth() + "px"); }); } function scrollFixed() { var offset = $(this).scrollTop(), tableOffsetTop = $this.offset().top, tableOffsetBottom = tableOffsetTop + $this.height() - $this.find("thead").height(); if (offset < tableOffsetTop || offset > tableOffsetBottom) $t_fixed.hide(); else if (offset >= tableOffsetTop && offset <= tableOffsetBottom && $t_fixed.is(":hidden")) $t_fixed.show(); } $(window).resize(resizeFixed); $(window).scroll(scrollFixed); init(); }); }; })(jQuery); function dataUpdate() { var sortedObject = sortable('table.address-fields tbody', 'serialize'); var json = JSON.stringify(sortedObject[0].container, null, 2); $('#TC_invoice_fields').val(json).trigger('change'); json = JSON.stringify(sortedObject[1].container, null, 2); $('#TC_delivery_fields').val(json).trigger('change'); } function customerFieldsUpdate() { var sortedObject = sortable('table.customer-fields tbody', 'serialize'); var json = JSON.stringify(sortedObject[0].container, null, 2); $('#TC_customer_fields').val(json).trigger('change'); } function extend(obj, src) { Object.keys(src).forEach(function (key) { obj[key] = src[key]; }); return obj; } function disableDetailsOnVisibilityChange() { $('input[name=visible]').on('change', function () { if ($(this).is(':checked')) { $(this).closest('tr').find('input').not('[name=visible]').not('[type=hidden]').attr('disabled', false); } else { $(this).closest('tr').find('input').not('[name=visible]').not('[type=hidden]').attr('disabled', true); } }); } function updateLeftRightRatioPct(left_right_ratio) { $('.checkout-block-container.left legend').attr('data-content', ' [' + left_right_ratio + '%]'); $('.checkout-block-container.right legend').attr('data-content', ' [' + (100 - left_right_ratio) + '%]'); } function expandBlocksClasses() { $('.checkout-block-item > [name=classes], .block-classes-info').toggle(); // Disable drag&drop on input fields, inside of .checkout-block-items $('.checkout-block-item').on('mousedown', 'input', function () { $(this).parent('.checkout-block-item').attr('draggable', false); }) $('.checkout-block-item').mouseover(function () { $(this).attr('draggable', true); }) } var blocksLayoutSortableObject; function initSortableContainers() { blocksLayoutSortableObject = sortable('.checkout-block-sortable-container', { placeholderClass: 'ph-class', items: '.checkout-block-item', hoverClass: 'hvr-class', forcePlaceholderSize: true, acceptFrom: '.checkout-block-sortable-container', containerSerializer: function (serializedContainer) { var serialized = {}; var classes = null; var gridPosition = $(serializedContainer.node).closest('.checkout-block-container').find('legend').text(); $.each($(serializedContainer.node).find('.checkout-block-item'), function () { classes = $(this).find('[name=classes]').val(); blockName = $(this).find('[name=blockName]').val(); serialized[blockName] = classes }); var result = []; result[gridPosition] = serialized; return result; } }); for (var i = 0; i < blocksLayoutSortableObject.length; i++) { blocksLayoutSortableObject[i].addEventListener('sortupdate', blocksLayoutDataUpdate2); } } function blocksLayoutDataUpdate2() { // var sortedObject = sortable('.checkout-block-sortable-container', 'serialize'); // var layout = {}; // for (var i = 0; i < 4; i++) { // layout = extend(layout, sortedObject[i].container); // } // json = JSON.stringify(layout, null, 2); // $('#TC_blocks_layout').val(json); var layout = {}; layout = traverseBlocksTree($('.blocks-layout.top-level > .checkout-block-container')); var json = JSON.stringify(layout, null, 2); // console.info(json); $('#TC_blocks_layout').val(json).trigger('change'); } var inner_area = '\
\ \ \ \
\
'; var new_fieldset_html = '
' + inner_area + '
'; function splitTwoBlocks(splitElements, direction) { //var instanceKey = splitElements.map(function() { return $(this).attr('id'); }).toArray().join(':'); var elements = splitElements.toArray(); var instance = Split(elements, { minSize: 50, sizes: [ Math.round(elements[0].dataset.defaultSize), 100 - Math.round(elements[0].dataset.defaultSize) ], direction: direction, elementStyle: function (dimension, size, gutterSize) { return { 'flex-basis': 'calc(' + size + '% - ' + gutterSize + 'px)' } }, onDragStart: function () { var isizes = instance.getSizes(); $(elements[0]).prepend('' + Math.round(isizes[0]) + '%'); $(elements[1]).prepend('' + Math.round(isizes[1]) + '%'); $(elements).addClass('resizing'); }, onDrag: function () { var isizes = instance.getSizes(); $(elements[0]).find(".size-display").text(Math.round(isizes[0]) + '%'); $(elements[1]).find(".size-display").text(Math.round(isizes[1]) + '%'); }, onDragEnd: function () { $(elements[0]).find(".size-display").remove(); $(elements[1]).find(".size-display").remove(); $(elements).removeClass('resizing'); blocksLayoutDataUpdate2(); } }); // set instances from both sides, for easier deletion var ii = 0; splitElements.each(function () { split_instances[$(this).attr('id')] = {instance: instance, position: ii++}; }); } function splitCheckoutBlockContainer(thisEl, direction) { // direction = 'vertical' or 'horizontal' var thisContainer = thisEl.closest('.checkout-block-container'); var thisInnerArea = thisContainer.find('.inner-area'); thisContainer.prepend( '
' + '
' + new_fieldset_html + '
' ); thisContainer.find('.checkout-block-container').first().prepend(thisInnerArea); $('.checkout-block-container').uniqueId(); splitTwoBlocks(thisContainer.find('.checkout-block-container'), direction); initSortableContainers(); blocksLayoutDataUpdate2(); return false; } function removeEmptyContainer(thisEl) { var thisContainer = thisEl.closest('.checkout-block-container'); // Allow remove container only on empty containers if (thisContainer.find('.checkout-block-item').length) { alert('This container is not empty, please move all blocks to another container and then try again'); return; } split_instances[thisContainer.attr('id')]['instance'].destroy(); var splitParent = thisContainer.parent().closest('.checkout-block-container'); // one of 2 is deleted thisContainer.remove(); // the other one is promoted to higher level var siblingContainerHtml = splitParent.find('.checkout-block-container').html(); splitParent.html(siblingContainerHtml); initSortableContainers(); blocksLayoutDataUpdate2(); } var jtl = $('.blocks-layout.top-level > .checkout-block-container'); var containersTree = {}; function traverseBlocksTree(checkoutBlockContainerNode) { var result = {}; checkoutBlockContainerNode.children('[class^=flex-split], .inner-area').each(function () { // console.info($(this)); if ('flex-split-horizontal' === $(this).attr('class') || 'flex-split-vertical' === $(this).attr('class')) { result[$(this).attr('class')] = [ traverseBlocksTree($(this).children('.checkout-block-container').eq(0)), traverseBlocksTree($(this).children('.checkout-block-container').eq(1)) ]; } else { var blocks = $(this).find('.checkout-block-sortable-container .checkout-block-item'); var blocks_res = []; var block_detail = {}; blocks.each(function () { block_detail[$(this).find('.block-name').text()] = $(this).find('[name=classes]').val(); blocks_res.push(block_detail); block_detail = {}; }); result['blocks'] = blocks_res; } // Update size of actual container in JSON generated code var split_instance = split_instances[$(this).closest('.checkout-block-container').attr('id')]; if ("undefined" !== typeof split_instance) { result['size'] = split_instance['instance'].getSizes()[split_instance['position']]; } else { result['size'] = 100; } }); return result; } var split_instances = {}; function fontChangeHandler($fontNameEl) { var fontName = $fontNameEl.val().replace(/\+/g, '-'); var weightOptionsName = 'font-weight-' + fontName; var weightOptionsStr = $('[name=' + weightOptionsName + ']').val(); if ('undefined' !== typeof weightOptionsStr) { var weightOptions = weightOptionsStr.split(','); for (var i = 0, len = weightOptions.length; i < len; i++) { var weightValues = weightOptions[i].split(' '); // console.info(weightValues); } var selectEl = $('#TC_fontWeight'); var oldVal = selectEl.val(); selectEl.children().remove(); $.each(weightOptions, function (i, item) { var weightValues = weightOptions[i].split(' '); $(selectEl).append($('