var Portal = Class.create(); Portal.prototype = { initialize: function (options) { this.setOptions(options); var sortables = $$( '.'+this.options.column, '#' + this.options.portal ); sortables.each(function (sortable) { Sortable.create(sortable, { containment: sortables, constraint: false, tag: 'div', only: this.options.block, dropOnEmpty: true, handle: this.options.handle, hoverclass: this.options.hoverclass, onUpdate: function (container) { if (!this.options.saveurl) { return; } if (container.id == this.options.blocklist) { return; } var url = this.options.saveurl; var postBody = container.id + ':'; var blocks = container.select('.'+this.options.block); postBody += blocks.pluck('id').join(','); postBody = 'value=' + escape(postBody); new Ajax.Request(url, { method: 'post', postBody: postBody } ); }.bind(this) }); }.bind(this)); var blocks = $$( '.' + this.options.block, '#' + this.options.portal ); Event.observe( this.options.blocklistlink, 'click', this.displayBlockList.bindAsEventListener(this), false ); new Draggable(this.options.blocklist, { handle: this.options.blocklisthandle } ); }, displayBlockList: function (e) { Effect.toggle(this.options.blocklist); Event.stop(e); }, setOptions: function (options) { this.options = { portal: 'portal', column: 'portal-column', block: 'block', content: 'content', handle: 'handle', hoverclass: 'block-hover', toggle: 'block-toggle', blocklist: 'portal-column-block-list', blocklistlink: 'portal-block-list-link', blocklisthandle: 'block-list-handle', saveurl: '' } Object.extend(this.options, options || {}); }, applySettings: function (settings) { for (var container in settings) { settings[container].each(function (block) { if(document.getElementById(container)!=null && document.getElementById(block)!=null) { $(container).appendChild($(block)); } }); } var frame = $("js_frame"); frame.style.display = "block"; var fastcache = $("fastcache"); if(fastcache){fastcache.style.display = "block";} jQuery(frame).trigger('dropmenu:showlayout'); frame.fire('dropmenu:showlayout'); } }