Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/layouts.js
Строк: 521
<?php
!function(a,b){b.fn.concreteLayout=function(a){return this.each(function(){var b=$(this),d=b.data("concreteLayout");d||b.data("concreteLayout",d=new c(this,a))})};var c=function(a,b){this.options=$.extend({toolbar:"#ccm-layouts-toolbar",btnsave:"#ccm-layouts-save-button",btncancel:"#ccm-layouts-cancel-button",editing:!1,supportsgrid:!1,gridrowtmpid:"ccm-theme-grid-temp",additionalGridColumnClasses:""},b),this.$element=$(a),this.$toolbar=$(this.options.toolbar),this._setupDOM(),this._setupToolbarView(),this._setupFormSaveAndCancel(),this._setupFormEvents(),this._updateChooseTypeForm()};c.prototype._setupDOM=function(){this.$formviews=this.$toolbar.find("li[data-grid-form-view]"),this.$formviewcustom=this.$toolbar.find("li[data-grid-form-view=custom]"),this.$formviewthemegrid=this.$toolbar.find("li[data-grid-form-view=themegrid]"),this.$selectgridtype=this.$toolbar.find("select[name=gridType]"),this.$selectcolumnscustom=this.$toolbar.find("input[type=text][name=columns]"),this.$customspacing=this.$toolbar.find("input[name=spacing]"),this.$customautomatedfrm=this.$toolbar.find("input[name=isautomated]"),this.$customautomated=this.$toolbar.find("[data-layout-button=toggleautomated]"),this.$selectgridcolumns=this.$toolbar.find("input[type=text][name=themeGridColumns]"),this.$savebtn=this.$toolbar.find(this.options.btnsave),this.$cancelbtn=this.$toolbar.find(this.options.btncancel),this.$slider=!1},c.prototype._setupFormSaveAndCancel=function(){var a=this;this.$cancelbtn.unbind().on("click",function(){a.$toolbar.remove(),ConcreteEvent.unsubscribe("EditModeExitInlineComplete.layouts"),ConcreteEvent.on("EditModeExitInlineComplete.layouts",function(b,c){a._rescanAreasInPage(b,c)}),ConcreteEvent.fire("EditModeExitInline")}),this.$savebtn.unbind().on("click",function(){Concrete.event.fire("EditModeExitInlineSaved"),a.$toolbar.hide().prependTo("#ccm-block-form"),$("#ccm-block-form").submit(),ConcreteEvent.unsubscribe("EditModeExitInlineComplete.layouts"),ConcreteEvent.on("EditModeExitInlineComplete.layouts",function(b,c){a._rescanAreasInPage(b,c)})})},c.prototype._rescanAreasInPage=function(a,b){var c=Concrete.getEditMode();c.reset(),c.scanBlocks()},c.prototype._setupToolbarView=function(){var a=this;this.$formviews.each(function(b){$(this).attr("data-grid-form-view")!=a.options.formview&&$(this).hide()})},c.prototype._updateChooseTypeForm=function(){var a=this.$selectgridtype.find("option:selected").val(),c=this;switch(c.options.editing&&c.$selectgridtype.prop("disabled",!0),a){case"FF":this.$formviewthemegrid.hide(),this.$formviewcustom.show(),this._updateCustomView();break;case"TG":this.$formviewcustom.hide(),this.$formviewthemegrid.show(),this._updateThemeGridView();break;default:if(this.options.editing)return;var d=a;this._resetSlider(),b.fn.dialog.showLoader();var e=CCM_DISPATCHER_FILENAME+"/ccm/system/dialogs/area/layout/presets/get/"+CCM_CID+"/"+d;$.getJSON(e,function(a){c.$formviewthemegrid.hide(),c.$formviewcustom.hide(),c.$element.html(a.html),c.$element.append($("<input />",{name:"arLayoutPresetID",type:"hidden",value:d})),b.fn.dialog.hideLoader()})}},c.prototype._setupFormEvents=function(){var a=this;this.$selectcolumnscustom.on("keyup",function(){a._updateCustomView()}),this.$customspacing.on("keyup",function(){a._updateCustomView()}),this.$customautomatedfrm.on("change",function(){a._updateCustomView()}),this.$customautomated.on("click",function(){return $(this).parent().hasClass("ccm-inline-toolbar-icon-selected")?($(this).parent().removeClass("ccm-inline-toolbar-icon-selected"),a.$customautomatedfrm.val(0)):($(this).parent().addClass("ccm-inline-toolbar-icon-selected"),a.$customautomatedfrm.val(1)),a.$customautomatedfrm.trigger("change"),!1}),this.$selectgridcolumns.on("keyup",function(){a._updateThemeGridView()}),this.$selectgridtype.on("change",function(){a._updateChooseTypeForm()})},c.prototype.buildThemeGridGrid=function(){this.$element.html("");var a=this.options.rowstart;a+='<div id="ccm-theme-grid-edit-mode-row-wrapper">';var b=this._getThemeGridColumnSpan(this.columns);$.each(b,function(b,c){var d='<div id="ccm-edit-layout-column-'+b+'" class="'+c.cssClass+' ccm-theme-grid-column" data-offset="0" data-span="'+c.value+'"><div class="ccm-layout-column-highlight"><input type="hidden" id="ccm-edit-layout-column-offset-'+b+'" name="offset['+b+']" value="0" /><input type="hidden" id="ccm-edit-layout-column-span-'+b+'" name="span['+b+']" value="'+c.value+'" /></div></div>';a+=d}),a+="</div>",a+=this.options.rowend,this.$element.append(a)},c.prototype._updateThemeGridView=function(a){a||this.$selectgridtype.find("option[value=TG]").prop("selected",!0),this.columns=parseInt(this.$selectgridcolumns.val()),this.maxcolumns=parseInt(this.$selectgridcolumns.attr("data-maximum")),this.options.editing?this.$selectgridcolumns.prop("disabled",!0):this.buildThemeGridGrid(),this._resetSlider(),this.columns>1&&this._showThemeGridSlider()},c.prototype._buildThemeGridGridFromPresetColumns=function(a){this.$element.html("");var b=this.options.rowstart;b+='<div id="ccm-theme-grid-edit-mode-row-wrapper">',$.each(a,function(a,c){var d='<div id="ccm-edit-layout-column-'+a+'" class="ccm-theme-grid-column" data-offset="'+c.arLayoutColumnOffset+'" data-span="'+c.arLayoutColumnSpan+'"><div class="ccm-layout-column-highlight"><input type="hidden" id="ccm-edit-layout-column-offset-'+a+'" name="offset['+a+']" value="'+c.arLayoutColumnOffset+'" /><input type="hidden" id="ccm-edit-layout-column-span-'+a+'" name="span['+a+']" value="'+c.arLayoutColumnSpan+'" /></div></div>';b+=d}),b+="</div>",b+=this.options.rowend,this.$element.append(b),this.columns=a.length,this.maxcolumns=parseInt(this.$selectgridcolumns.attr("data-maximum")),this._resetSlider(),this._redrawThemeGrid(),this._showThemeGridSlider()},c.prototype._updateCustomView=function(a){for(a||this.$selectgridtype.find("option[value=FF]").prop("selected",!0),this.columns=parseInt(this.$selectcolumnscustom.val()),this.customspacing=this.$customspacing.val(),this.automatedcustomlayout=1==this.$customautomatedfrm.val(),this.columnwidths=[],this.options.editing&&this.$selectcolumnscustom.prop("disabled",!0),this.options.editing||this.$element.html(""),i=0;i<this.columns;i++)if(!(this.options.editing&&$("#ccm-edit-layout-column-"+i).length>0)){var b=$("<div />").attr("class","ccm-layout-column");b.attr("id","ccm-edit-layout-column-"+i);var c=$("<div />").attr("class","ccm-layout-column-highlight");c.append($("<input />",{name:"width["+i+"]",type:"hidden",id:"ccm-edit-layout-column-width-"+i})),b.append(c),this.$element.append(b)}var d=this.$element.find(".ccm-layout-column");if(this.columns<d.length)for(i=columns;i<d.length;i++)$("#ccm-edit-layout-column-"+i).remove();for(i=0;i<this.columns;i++){if(c=$("#ccm-edit-layout-column-"+i+" .ccm-layout-column-highlight"),i>0&&c.css("margin-left",this.customspacing/2+"px"),i+1<this.columns&&c.css("margin-right",this.customspacing/2+"px"),b=$("#ccm-edit-layout-column-"+i),b.attr("data-width")){var e=b.attr("data-width")+"px";this.columnwidths.push(parseInt(b.attr("data-width")))}else var e=100/this.columns+"%";b.css("width",e)}this._resetSlider(),!this.automatedcustomlayout&&this.columns>1&&this._showCustomSlider()},c.prototype._resetSlider=function(){this.$slider&&(this.$slider.slider("destroy"),this.$slider=!1),$("#ccm-area-layout-active-control-bar").hasClass("ccm-area-layout-control-bar-add")&&$("#ccm-area-layout-active-control-bar").css("height","0px")},c.prototype._getThemeGridColumnSpan=function(a){var b,c=Math.ceil(this.maxcolumns/a),d=[];for(b=0;a>b;b++)d[b]=c;var e=c*a;for(b=0;b<e-this.maxcolumns;b++){var f=d.length-b-1;d[f]--}var g=[];for(b=0;b<d.length;b++)g[b]={},g[b].cssClass=this.options.gridColumnClasses[d[b]-1],this.options.additionalGridColumnClasses&&(g[b].cssClass=g[b].cssClass+" "+this.options.additionalGridColumnClasses),g[b].value=d[b];return g},c.prototype._getThemeGridNearestValue=function(a,b){var c=null;return $.each(b,function(){(null==c||Math.abs(this-a)<Math.abs(c-a))&&(c=this)}),c},c.prototype._showThemeGridSlider=function(){var a=this;a.$slider=$("#ccm-area-layout-active-control-bar"),a.$slider.css("height","6px");var b=[];for(m=0;m<a.columns;m++)n=$("#ccm-edit-layout-column-"+m),0==m?b.push(Math.floor(n.width())):m+1==a.columns?b.push(Math.floor(n.position().left)):(b.push(Math.floor(n.position().left)),b.push(Math.floor(n.width())+Math.floor(n.position().left)));var c=$("#ccm-area-layout-active-control-bar").width(),d=[],e=[],f=a.options.maxcolumns,g=a.options.gridColumnClasses[0],h=$("#ccm-theme-grid-edit-mode-row-wrapper").closest(".ccm-block-edit-layout, .ccm-layouts-edit-mode-add");h.length||(h=$("#ccm-theme-grid-edit-mode-row-wrapper"));var i=$("<div />",{id:a.options.gridrowtmpid}).appendTo(h),j="";for(m=1;f>=m;m++)j+=a.options.additionalGridColumnClasses?'<div class="'+g+" "+a.options.additionalGridColumnClasses+'"><br><br></div>':'<div class="'+g+'"><br><br></div>';var k=a.options.rowstart+j+a.options.rowend;i.append($(k));for(var l=0,m=0;f>m;m++){var n=i.find("."+g).eq(m);if(0==m){var o=n.position().left;0>o&&(l=Math.abs(o))}d.push(Math.floor(n.position().left+l)),e.push(Math.floor(Math.floor(n.width())+Math.floor(n.position().left)+l))}i.remove(),a.$slider.slider({min:0,max:c,step:1,values:b,slide:function(c,f){"TG"!=a.$selectgridtype.val()&&a.$selectgridtype.find("option[value=TG]").prop("selected",!0);var g,h=$(f.handle).index();g=h%2==0?e:d;for(var i=0;i<b.length;i++)for(var j=0;j<g.length;j++){var k=Math.abs(b[i]-g[j]);2>=k&&(g[j]=b[i])}var l=a.$slider.slider("values",h),m=a._getThemeGridNearestValue(f.value,g),n=!0;if($.each(f.values,function(a,b){m>=b&&a>h?n=!1:b>=m&&h>a&&(n=!1)}),n&&l==m&&(n=!1),n){if(a.$slider.slider("values",h,m),h%2==0){r=Math.floor(h/2),$innercolumn=$("#ccm-edit-layout-column-"+r);var o=parseInt($innercolumn.attr("data-span")),p=$innercolumn.nextAll(".ccm-theme-grid-column:first"),q=p.attr("data-offset");q=q?parseInt(q):0,m>l?(o++,q--):(o--,q++)}else{var r=Math.ceil(h/2);$innercolumn=$("#ccm-edit-layout-column-"+r);var o=parseInt($innercolumn.attr("data-span")),p=$innercolumn,q=p.attr("data-offset");q=q?parseInt(q):0,l>m?(o++,q--):(o--,q++)}p.attr("data-offset",q),$innercolumn.attr("data-span",o),a._redrawThemeGrid()}return!1}})},c.prototype._redrawThemeGrid=function(){var a=this;a.$element.find(".ccm-theme-grid-offset-column").remove(),$.each(a.$element.find(".ccm-theme-grid-column"),function(b,c){var d=$(c);if(d.removeClass(),d.attr("data-span")){var e=parseInt(d.attr("data-span"))-1;d.addClass(a.options.gridColumnClasses[e]),a.options.additionalGridColumnClasses&&d.addClass(a.options.additionalGridColumnClasses)}if(parseInt(d.attr("data-offset"))>0){var f=parseInt(d.attr("data-offset"))-1,g=a.options.gridColumnClasses[f]+" ccm-theme-grid-offset-column";a.options.additionalGridColumnOffsetClasses&&(g=g+" "+a.options.additionalGridColumnOffsetClasses),$("<div />",{"data-offset-column":!0}).html("&nbsp;").addClass(g).insertBefore(d)}$("#ccm-edit-layout-column-offset-"+b).val(parseInt(d.attr("data-offset"))),$("#ccm-edit-layout-column-span-"+b).val(parseInt(d.attr("data-span"))),d.addClass("ccm-theme-grid-column"),a.options.editing&&d.addClass("ccm-theme-grid-column-edit-mode")})},c.prototype._showCustomSlider=function(){this.$slider=$("#ccm-area-layout-active-control-bar"),this.$slider.css("height","6px");var a,b=[],c=0,d=Math.floor(this.$slider.width()),e=this.$element.find(".ccm-layout-column");if(this.columnwidths.length>0)for(a=0;a<this.columnwidths.length-1;a++)c+=this.columnwidths[a],b.push(c);else{var f=d/this.columns;for(a=1;a<this.columns;a++)c+=f,b.push(c)}var g=this;this.$slider.slider({min:0,max:d,step:1,values:b,create:function(a,c){var f=0;$.each(e,function(a,c){var g,h=b[a];g=a+1==e.length?d-f:h-f,g=Math.floor(g),$(c).find("#ccm-edit-layout-column-width-"+a).val(g),f=h})},slide:function(a,b){"FF"!=g.$selectgridtype.val()&&g.$selectgridtype.find("option[value=FF]").prop("selected",!0);var c=0,f=!0;return $.each(b.values,function(a,b){c>b&&(f=!1),c=b}),f?(c=0,void $.each(e,function(a,f){var g;g=a+1==e.length?d-c:b.values[a]-c,g=Math.floor(g),$(f).find("#ccm-edit-layout-column-width-"+a).val(g),$(f).css("width",g+"px"),c=b.values[a]})):!1}})}}(this,jQuery);
?>
Онлайн: 1
Реклама