Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/build/core/gathering.js
Строк: 443
<?php
/**
 * Gathering
 */


(function($, window) {

  var 
methods = {

    private:  {

        
handleAppendedElements: function(response$gatheringoptionsprepend) {
            var 
elements = ($('<div />').append(response).find('>div'));
            $.
each(elements, function(iobj) {
                
prepend $gathering.prepend(obj) : $gathering.append(obj);
            });
            if (
elements.length 0) {
                
prepend $gathering.packery('prepended'elements) : $gathering.packery('appended'elements);
                if (
options.showTileControls) {
                    
methods.private.enableEditing($gatheringoptions);
                }

                
methods.private.enableOverlay($gatheringoptions);
                
methods.private.enableHover($gatheringoptions);
            }
        },

        
enableOverlay: function($gatheringoptions) {
            
$gathering.find('a[data-overlay=gathering-item]').not('.overlay-bound').each(function() {
                var 
gaiID = $(this).closest('[data-gathering-item-id]').attr('data-gathering-item-id');
                $(
this).on('click', function() {
                    $.
magnificPopup.open({
                        
ajax: {
                            
settings: {
                                
'data': {
                                    
'gaiID'gaiID,
                                    
'token'options.loadToken
                                
},
                                
'dataType''html',
                                
'type''post'
                            
}
                        },
                        
items: {
                            
srcCCM_TOOLS_PATH '/gathering/item/detail'
                        
},
                        
mainClass'ccm-gathering-overlay-wrapper',    
                        
type'ajax',
                        
removalDelay200
                    
});
                    return 
false;
                });
            }).
addClass('overlay-bound');
        },

        
enableHover: function($gatheringoptions) {

            
$gathering.find('.ccm-gathering-item').not('.hover-bound').each(function() {
                $(
this).on('mouseenter', function() {
                    $(
this).addClass('ccm-gathering-item-over')
                }).
on('mouseleave', function() {
                    $(
this).removeClass('ccm-gathering-item-over')
                });
            }).
addClass('hover-bound');
        },

        
enableEditing: function($gatheringoptions) {
            
$gathering.find('a[data-inline-command=options-tile]').not('.gathering-options-bound').on('click', function(e) {
                var 
$item = $(this);
                var 
$menu = $('[data-menu=' + $(this).attr('data-launch-menu') + ']'); 
                var 
menu = new ConcreteMenu($item, {
                    
menu$menu,
                    
launcher'none'
                
});
                
menu.show(e);
                return 
false;
            }).
addClass('gathering-options-bound');

            var 
$itemElements = $($gathering.packery('getItemElements')).not('.event-bound');
            
$itemElements.draggable({
                
'handle''a[data-inline-command=move-tile]'
                
start: function() {
                    $(
'.ccm-area-block-dropzone').addClass('ccm-area-block-dropzone-active');
                    $(
'div[data-gathering-id]').each(function() {
                        var 
$tagg = $(this);
                        if (
parseInt($tagg.attr('data-gathering-id')) != parseInt(options.gaID)) {
                            
$tagg.addClass('ccm-gathering-item-droppable').droppable({
                                
accept'.ccm-gathering-item',
                                
tolerance'pointer',
                                
hoverClass'ccm-gathering-item-drop-active',
                                
drop: function(eui) {
                                    
jQuery.fn.dialog.showLoader();
                                    var 
$destination = $(this);
                                    var 
gaID $destination.attr('data-gathering-id');
                                    var 
data = [
                                        {
'name''task''value''move_to_new_gathering'},
                                        {
'name''gaiID''value'ui.draggable.attr('data-gathering-item-id')},
                                        {
'name''gaID''value'$destination.attr('data-gathering-id')},
                                        {
'name''cID''value'CCM_CID},
                                        {
'name''itemsPerPage''value'options.itemsPerPage},
                                        {
'name''editToken''value'options.editToken}
                                    ];

                                    var 
$source = $(ui.draggable).parent();
                                    $(
ui.draggable).remove();

                                    $.
ajax({
                                        
type'post',
                                        
urlCCM_TOOLS_PATH '/gathering/update',
                                        
datadata,
                                        
success: function(r) {
                                            
$source.packery('layout');
                                            
$destination.before(r).remove();
                                            
$destination.packery('layout');
                                            
jQuery.fn.dialog.hideLoader();
                                        }
                                    });
                                }
                            });
                        }
                    });
                },
                
stop: function() {
                    
//$('div.ccm-gathering-item-droppable').droppable('destroy');
                    
$('.ccm-area-block-dropzone').removeClass('ccm-area-block-dropzone-active');
                    
$gathering.packery('layout');
                }
            });

            
$gathering.packery('on''dragItemPositioned', function(pkritem) {
                var 
data = [
                    {
'name''task''value''update_display_order'},
                    {
'name''gaID''value'options.gaID},
                    {
'name''editToken''value'options.editToken}
                ];
                var 
items = [];
                var 
elements pkr.getItemElements();
                for (var 
0elements.lengthi++) {
                    var 
$obj = $(elements[i]);
                    
data.push({'name''gaiID[]''value'$obj.attr('data-gathering-item-id')});
                }

                $.
ajax({
                    
type'post',
                    
urlCCM_TOOLS_PATH '/gathering/update',
                    
datadata
                
});
            });

            
$gathering.packery'bindUIDraggableEvents'$itemElements );
            
$itemElements.resizable({
                
handles'se',
                
helper'ccm-gathering-resize-helper',
                
grid: [options.columnWidth options.gutteroptions.rowHeight options.gutter],
                
stop: function(eui) {
                    var 
$tile ui.element,
                    
wx parseInt($tile.css('width')),
                    
hx parseInt($tile.css('height')),
                    
Math.floor(wx options.columnWidth),
                    
Math.floor(hx options.rowHeight);

                    
$gathering.packery('layout');

                    $.
ajax({
                        
type'post',
                        
urlCCM_TOOLS_PATH '/gathering/update',
                        
data: {
                            
'task''resize',
                            
'gaID'options.gaID,
                            
'gaiID'$tile.attr('data-gathering-item-id'),
                            
'gaiSlotWidth'w,
                            
'gaiSlotHeight'h,
                            
'editToken'options.editToken
                        
}
                    });
                }
            });
            
$itemElements.not('.event-bound').addClass('event-bound');
        }

    },
   
    
updateItemTemplate: function(options) {
        
jQuery.fn.dialog.showLoader();
        
options = $.extend({
            
reloadItemTilefalse
        
}, options);
        $.
ajax({
            
type'POST',
            
data: {
                
task'update_item_template',
                
gaiIDoptions.gaiID,
                
gatTypeIDoptions.gatTypeID,
                
gatIDoptions.gatID,
                
tokenoptions.updateToken
            
},
            
urlCCM_TOOLS_PATH '/gathering/item/template',
            
success: function(r) {
                
jQuery.fn.dialog.hideLoader();
                if (
options.reloadItemTile) {
                    
// load the newly rendered HTML into the old gathering item.
                    
$('[data-gathering-item-id=' options.gaiID ']').find('div.ccm-gathering-item-inner-render').html(r);
                }
                
jQuery.fn.dialog.closeTop();
            }
        });
    },

    
deleteItem: function(options) {
        
jQuery.fn.dialog.showLoader();
        $.
ajax({
            
type'POST',
            
data: {
                
task'delete_item',
                
gaiIDoptions.gaiID,
                
tokenoptions.deleteToken
            
},
            
urlCCM_TOOLS_PATH '/gathering/item/delete',
            
success: function(r) {
                
jQuery.fn.dialog.hideLoader();
                var 
$item = $('[data-gathering-item-id=' options.gaiID ']');
                var 
$gathering $item.parent();
                
$item.remove();
                
$gathering.packery('layout');
                
jQuery.fn.dialog.closeTop();
            }
        });
    },

    
getNew: function() {
        var 
$gathering = $(this);
        var 
options = $(this).data('options');
        
jQuery.fn.dialog.showLoader();
        var 
getNewerThan = $($gathering.find('.ccm-gathering-item')[0]).attr('data-gathering-item-id');
        $.
ajax({
            
type'post',
            
urlCCM_TOOLS_PATH '/gathering/get_new',
            
data: {
                
'task''get_gathering_items',
                
'newerThan'getNewerThan,
                
'gaID'options.gaID,
                
'editToken'options.editToken,
                
'showTileControls'options.showTileControls
            
},
        
            
success: function(r) {
                
jQuery.fn.dialog.hideLoader();
                
methods.private.handleAppendedElements(r$gatheringoptionstrue);
            }
        });
    },

    
init: function(options) {

        
options = $.extend({
            
totalPages0,
            
columnWidth120,
            
itemsPerPage24,
            
rowHeight120,
            
showTileControlsfalse,
            
gutter1
        
}, options);

        return 
this.each(function() {
            var 
$gathering = $(this);
            $(
this).data('options'options);
            var 
$loadButton $gathering.parent().find('button[data-gathering-button=gathering-load-more-items]');
            if (
options.totalPages == 1) {
                
$loadButton.hide();
            }
            
$gathering.packery({
                
columnWidthoptions.columnWidth,
                
rowHeightoptions.rowHeight,
                
gutteroptions.gutter
            
});
            
$gathering.css('opacity'1);

            
// handle details and lightbox.
            
methods.private.enableHover($gatheringoptions);

            
// handle details and lightbox.
            
methods.private.enableOverlay($gatheringoptions);

            
$loadButton.on('click', function() {
                var 
page parseInt($gathering.attr('data-gathering-current-page')),
                    
newPage page 1;

                
$loadButton.prop('disabled'true);

                $.
ajax({
                    
type'post',
                    
urlCCM_TOOLS_PATH '/gathering/load_more',
                    
data: {
                        
'task''get_gathering_items',
                        
'gaID'options.gaID,
                        
'page'newPage,
                        
'itemsPerPage'options.itemsPerPage,
                        
'loadToken'options.loadToken,
                        
'editToken'options.editToken,
                        
'showTileControls'options.showTileControls
                    
},
                
                    
success: function(r) {
                        
methods.private.handleAppendedElements(r$gatheringoptions);
                        if (
newPage == options.totalPages) {
                            
$loadButton.hide();
                        } else {
                            
$loadButton.prop('disabled'false);
                            
$gathering.attr('data-gathering-current-page'newPage);
                        }
                    }
                });
            });

            if (
options.showTileControls) {
                var 
$refreshButton = $('[data-gathering-refresh=' options.gaID ']');
                
$refreshButton.on('click', function() {
                    
$gathering.ccmgathering('getNew');
                    return 
false;
                });
                
methods.private.enableEditing($gatheringoptions);
            }
        });    
    }
  };

  $.
fn.ccmgathering = function(method) {

    if ( 
methods[method] ) {
      return 
methods[method].applythis, Array.prototype.slice.callarguments));
    } else if ( 
typeof method === 'object' || ! method ) {
      return 
methods.init.applythisarguments );
    } else {
      $.
error'Method ' +  method ' does not exist on jQuery.ccmgathering' );
    }   

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