<div metal:define-macro="grid"
tal:define="slide_size portal_object/slide_size;
mayBeDropable exists:dropable;
- dropable python:True if mayBeDropable and dropable else False"
+ dropable python:True if mayBeDropable and dropable else False;
+ mayBeOrderable exists:orderable;
+ orderable python:True if mayBeOrderable and orderable else False"
i18n:domain="portfolio">
<div id="lightbox" tal:attributes="class python:'lightbox photo-drop-target' if dropable else 'lightbox'">
<span metal:define-macro="thumbnails" tal:repeat="info infos" tal:omit-tag="">
new Lightbox(lb,
document.getElementById('lightbox_toolbar'),
%(complete)s,
- '%(container_type)s');
+ '%(container_type)s',
+ %(orderable)s);
var uploadUrl = '%(putUrl)s';
var options = {'slideSize' : %(slideSize)d,
'thumbnailSize' : %(thumbnailSize)d};
'slideSize' : portal_object.slide_size,
'thumbnailSize' : portal_object.thumb_size,
'complete': 'true' if not batch.next else 'false',
- 'container_type' : options.get('container_type', 'portfolio')}">
+ 'container_type' : options.get('container_type', 'portfolio'),
+ 'orderable' : 'true' if orderable else 'false'}">
</script>
</div>
<div metal:define-macro="film_bar" tal:omit-tag="">
var reSelected = /.*selected.*/;
-Lightbox = function(grid, toolbar, complete, container_type) {
+Lightbox = function(grid, toolbar, complete, container_type, orderable) {
var self = this;
this.grid = grid;
this._buildSlidesIndex(); // set this.slides and this.lastSlide;
// drag and drop
this.disableDefaultDragging();
- addListener(this.grid, 'dragstart', function(evt){self.onDragStart(evt);});
- addListener(this.grid, 'dragover', function(evt){self.onDragOver(evt);});
- addListener(this.grid, 'dragend', function(evt){self.onDragEnd(evt);});
+ this._DDOrderingListeners = {'dragstart' : function(evt){self.onDragStart(evt);},
+ 'dragover' : function(evt){self.onDragOver(evt);},
+ 'dragend' : function(evt){self.onDragEnd(evt);}
+ };
+ if(orderable) {this.enableDDOrdering();}
};
Lightbox.prototype._buildSlidesIndex = function() {
this.switchToolBarPositioning(false);
}
};
+
Lightbox.prototype.windowScrollGridHandler = function(evt) {
if (!this.complete &&
!this.fetchingDisabled &&
Lightbox.prototype.onChangeHandler = function(evt) {
var target = getTargetedObject(evt);
if (target.name === 'sort_on') {
+ if (target.value === 'position') {this.enableDDOrdering();}
+ else {this.disableDDOrdering();}
this.fm.submitButton = {'name' : 'set_sorting', 'value' : 'ok'};
this.fm.submit(evt);
}
return slides;
};
+
+Lightbox.prototype.enableDDOrdering = function() {
+ addListener(this.grid, 'dragstart', this._DDOrderingListeners.dragstart);
+ addListener(this.grid, 'dragover', this._DDOrderingListeners.dragover);
+ addListener(this.grid, 'dragend', this._DDOrderingListeners.dragend);
+};
+
+Lightbox.prototype.disableDDOrdering = function() {
+ removeListener(this.grid, 'dragstart', this._DDOrderingListeners.dragstart);
+ removeListener(this.grid, 'dragover', this._DDOrderingListeners.dragover);
+ removeListener(this.grid, 'dragend', this._DDOrderingListeners.dragend);
+};
+
Lightbox.prototype.onDragStart = function(evt) {
var target = getTargetedObject(evt);
this.dragged = target;
<div metal:fill-slot="main" tal:omit-tag=""
tal:define="AddPortalContent modules/Products/CMFCore/permissions/AddPortalContent;
+ ManageProperties modules/Products/CMFCore/permissions/ManageProperties;
dropable python:mtool.checkPermission(AddPortalContent, here);
+ orderable python:mtool.checkPermission(ManageProperties, here) and here.getDefaultSorting()[0] == 'position';
Batch python:modules['Products.Plinn'].Batch;
pho_start python:request.get('pho_start', 0);
port_start python:request.get('port_start', 0);