Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/build/core/style-customizer/inline-toolbar.js
Строк: 334
<?php
(function(global, $) {
    
'use strict';


    function 
ConcreteInlineStyleCustomizer($elementoptions) {
        var 
my this;
        
options = $.extend({
        }, 
options);

        
my.options options;
        
my.$element $element;
        
my.$toolbar my.$element.find('>ul');
        
my.$toolbar.find('div.dropdown-menu').on('click', function(e) {
            if ($(
e.target).is('button')) {
                return 
true;
            } else {
                
e.stopPropagation(); // stop the menu from closing
            
}
        });

        
my.setupForm();
        
my.setupButtons();
        
my.setupSliders();
    }

    
ConcreteInlineStyleCustomizer.prototype = {

        
refreshStyles: function(resp) {
            if (
resp.oldIssID) {
                $(
'head').find('style[data-style-set=' resp.oldIssID +']').remove();
            }
            if (
resp.issID && resp.css) {
                $(
'head').append(resp.css);
            }
        },

        
setupForm: function() {
            var 
my this;
            
my.$element.find('.launch-tooltip').tooltip();
            
my.$element.concreteAjaxForm({
                
success: function(resp) {
                    
my.handleResponse(resp);
                },
                
error: function(r) {
                    
my.$toolbar.prependTo('#ccm-inline-toolbar-container').show();
                }
            });
        },

        
setupButtons: function() {
            var 
my this;
            
my.$toolbar.on('click.inlineStyleCustomizer''button[data-action=cancel-design]', function() {
                
my.$element.hide();
                
ConcreteEvent.fire('EditModeExitInline');
                return 
false;
            });

            
my.$toolbar.on('click.inlineStyleCustomizer''button[data-action=reset-design]', function() {
                $.
concreteAjax({
                    
url: $(this).attr('data-reset-action'),
                    
success: function(resp) {
                        
my.handleResponse(resp);
                    }
                });
                return 
false;
            });

            
my.$toolbar.on('click.inlineStyleCustomizer''button[data-action=save-design]', function() {
                
// move the toolbar back into the form so it submits. so great.
                
my.$toolbar.hide().prependTo(my.$element);
                
my.$element.submit();
                
ConcreteEvent.unsubscribe('EditModeExitInlineComplete');
                return 
false;
            });
        },

        
setupSliders: function(){
            var 
my this;
            
my.$toolbar.find('.ccm-inline-style-sliders').each(function(){
                var 
targetInput = $(this).next().children('.ccm-inline-style-slider-value');
                var 
targetInputFormat targetInput.attr('data-value-format');
                var 
sliderElement = $(this);
                var 
min parseInt($(this).attr('data-style-slider-min'));
                var 
max parseInt($(this).attr('data-style-slider-max'));
                var 
defaultValue = $(this).attr('data-style-slider-default-setting');
                var 
currentValue = function () {
                    return 
parseInt(targetInput.val().replace(/D-/g,''));
                };
                var 
disableCheck = function () {
                    if (
parseInt(defaultValue) === currentValue() || isNaN(currentValue())) {
                        
targetInput.prop('disabled'true).val(defaultValue targetInputFormat);
                    }
                };

                
sliderElement.slider({
                    
minmin,
                    
maxmax,
                    
valuecurrentValue(),
                    
slide: function( eventui ) {
                        
targetInput.prop('disabled'false);
                        
targetInput.val(ui.value targetInputFormat);
                        
disableCheck();
                    }
                });

                
targetInput.change(function () {
                    var 
value currentValue();

                    if (
value max) { 
                        
value max;
                    } else if (
value min) {
                        
value min;
                    } else if (
isNaN(value)) {
                        
value defaultValue;
                    }
                    
                    $(
this).val(value targetInputFormat);
                    
sliderElement.slider("value"value);
                    
disableCheck();
                }).
blur(function () {
                    
disableCheck();
                }).
parent().click(function () {
                    if (
targetInput.prop('disabled')) {
                        
targetInput.prop('disabled'false).select();
                    }
                });

                
disableCheck();
            });
        }

    };

    function 
ConcreteBlockInlineStyleCustomizer($elementoptions) {
        var 
my this;
        
ConcreteInlineStyleCustomizer.call(my$elementoptions);
    }

    
ConcreteBlockInlineStyleCustomizer.prototype Object.create(ConcreteInlineStyleCustomizer.prototype);

    
ConcreteBlockInlineStyleCustomizer.prototype.handleResponse = function(resp) {
        var 
my this;
        var 
editor = new Concrete.getEditMode(),
            
area editor.getAreaByID(resp.aID),
            
block area.getBlockByID(parseInt(resp.originalBlockID)),
            
arEnableGridContainer area.getEnableGridContainer() ? 0,
            
action CCM_DISPATCHER_FILENAME '/ccm/system/block/render';

        $.
get(action, {
            
arHandlearea.getHandle(),
            
cIDresp.cID,
            
bIDresp.bID,
            
arEnableGridContainerarEnableGridContainer
        
}, function (r) {
            
ConcreteToolbar.disableDirectExit();
            var 
newBlock block.replace(r);
            
ConcreteAlert.notify({
                
'message'resp.message
            
});

            
my.refreshStyles(resp);
            
ConcreteEvent.fire('EditModeExitInline', {
                
action'save_inline',
                
blocknewBlock
            
});
            
ConcreteEvent.fire('EditModeExitInlineComplete', {
                
blocknewBlock
            
});
            $.
fn.dialog.hideLoader();
            
editor.destroyInlineEditModeToolbars();
            
editor.scanBlocks();

        });
    }

    function 
ConcreteAreaInlineStyleCustomizer($elementoptions) {
        var 
my this;
        
ConcreteInlineStyleCustomizer.call(my$elementoptions);
    }

    
ConcreteAreaInlineStyleCustomizer.prototype Object.create(ConcreteInlineStyleCustomizer.prototype);

    
ConcreteAreaInlineStyleCustomizer.prototype.handleResponse = function(resp) {
        var 
my this,
            
editor = new Concrete.getEditMode(),
            
area editor.getAreaByID(resp.aID);
        
my.refreshStyles(resp);
        
area.getElem().removeClassExcept('ccm-area ccm-global-area');
        if (
resp.containerClass) {
            
area.getElem().addClass(resp.containerClass);
        }
        
editor.destroyInlineEditModeToolbars();
    }

    
// jQuery Plugin
    
$.fn.concreteBlockInlineStyleCustomizer = function (options) {
        return $.
each($(this), function (iobj) {
            new 
ConcreteBlockInlineStyleCustomizer($(this), options);
        });
    }

    $.
fn.concreteAreaInlineStyleCustomizer = function (options) {
        return $.
each($(this), function (iobj) {
            new 
ConcreteAreaInlineStyleCustomizer($(this), options);
        });
    }

    $.
fn.removeClassExcept = function (val) {
        
return this.each(function (index, el) {
            
var keep = val.split(" "),  // list we'd like to keep
                
reAdd = [],          // ones that should be re-added if found
                
$el = $(el);       // element we're working on

            // look for which we re-add (based on them already existing)
            
for (var i = 0; i < keep.length; i++){
                
if ($el.hasClass(keep[i])) reAdd.push(keep[i]);
            }

            
// drop all, and only add those confirmed as existing
            
$el
                
.removeClass()               // remove existing classes
                
.addClass(reAdd.join(' '));  // re-add the confirmed ones
        
});
    };

    global.
ConcreteBlockInlineStyleCustomizer ConcreteBlockInlineStyleCustomizer;
    global.
ConcreteAreaInlineStyleCustomizer ConcreteAreaInlineStyleCustomizer;

})(
this, $);
?>
Онлайн: 1
Реклама