Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/build/core/app/edit-mode/dragarea.js
Строк: 163
<?php
(function (window, $, _Concrete) {
    
'use strict';

    
/**
     * Drag Area that we create for dropping the blocks into
     * @param {jQuery}   elem  The drag area html element
     * @param {Area} area  The area it belongs to
     * @param {Block} block The block that this drag_area is above, this may be null.
     */
    
var DragArea Concrete.DragArea = function DragArea(elemareablock) {
        
this.init.apply(this_.toArray(arguments));
    };

    
DragArea.prototype = {

        
init: function dragAreaInit(elemareablock) {
            var 
my this;

            
Concrete.createGetterSetters.call(my, {
                
blockblock,
                
activetrue,
                
elemelem,
                
areaarea,
                
isContenderfalse,
                
isSelectablefalse,
                
animationLength500
            
});

            
my.bindEvent('EditModeContenders', function (edata) {
                
my.setIsContender(_.contains(datamy));
            });

            
my.bindEvent('EditModeSelectableContender', function (edata) {
                
my.setIsSelectable(data === my);
            });
        },

        
destroy: function dragAreaDestroy() {
            var 
my this;

            
my.getElem().remove();
        },

        
bindEvent: function dragAreaBindEvent(eventhandler) {
            return 
Concrete.EditMode.prototype.bindEvent.apply(this_(arguments).toArray());
        },

        
getActive: function dragAreaGetActive() {
            
// If Area is inactive, this has to be inactive.
            
return this.getArea().getActive() && this.getAttr('active');
        },

        
/**
         * Is DragArea selectable
         * @param  {Pep}       pep   The active Pep
         * @param  {Block}     block The dragging Block
         * @param  {Event}     event The relevant event
         * @return {Boolean}         Is the dragarea selectable
         */
        
isSelectable: function dragAreaIsSelectable(pepblock) {
            return 
pep.isOverlapping(block.getDragger(), this.getElem());
        },

        
/**
         * Handle setting the DragArea to selectable, this is generally a visual change.
         * @param  {Boolean} is_selectable true/false
         * @return {Boolean}               Success, always true.
         */
        
setIsSelectable: function dragAreaSetIsSelectable(is_selectable) {
            var 
my this;

            if (
is_selectable && !my.getIsSelectable()) {
                
my.getArea().getElem().addClass('ccm-parent-menu-item-active');
                
my.getElem().addClass('ccm-area-drag-area-selectable');
            } else if (!
is_selectable && my.getIsSelectable()) {
                
my.getArea().getElem().removeClass('ccm-parent-menu-item-active');
                
my.getElem().removeClass('ccm-area-drag-area-selectable');
            }
            
my.setAttr('isSelectable'is_selectable);
            return 
true;
        },

        
/**
         * Is this DragArea a contender
         * @param  {Pep}     pep   The relevant Pep object
         * @param  {Block}   block The dragging Block
         * @return {Boolean}       true/false
         */
        
isContender: function dragAreaIsContender(pepblock) {
            var 
my this;
            
_.identity(pep); // This does nothing but quiet the lint

            
return (my.getBlock() !== block);
        },

        
/**
         * Handle setting as contender
         * @param  {Boolean} is_contender Is this a contender
         * @return {Boolean}              Success, always true.
         */
        
setIsContender: function dragAreaSetIsContender(is_contender) {
            var 
my this;
            if (
is_contender && !my.getIsContender()) {
                
_.defer(function () {
                    
my.getElem().addClass('ccm-area-drag-area-contender');
                });
            } else if (!
is_contender && my.getIsContender()) {
                
_.defer(function () {
                    
my.getElem().removeClass('ccm-area-drag-area-contender');
                });
            }
            
my.setAttr('isContender'is_contender);
            return 
true;
        },

        
/**
         * Get the distance from the center of the DragArea to the center of a block.
         * @param  {Block}  block The block to measure
         * @return {double}       The distance from center to center
         */
        
centerDistanceToBlock: function (block) {
            var 
my this;

            var 
block_elem block.getDragger(),
                
block_center = {
                    
xblock_elem.offset().left block_elem.width() / 2,
                    
yblock_elem.offset().top block_elem.height() / 2
                
},
                
my_elem my.getElem(),
                
my_center = {
                    
xmy_elem.offset().left my_elem.width() / 2,
                    
ymy_elem.offset().top my_elem.height() / 2
                
};

            return 
Math.sqrt(Math.pow(Math.abs(block_center.my_center.x), 2) + Math.pow(Math.abs(block_center.my_center.y), 2));
        }

    };



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