From: Benoît Pin Date: Fri, 10 Oct 2014 15:22:02 +0000 (+0200) Subject: Merge branch 'dd_ordering' into zope-2.13 X-Git-Url: https://svn.cri.ensmp.fr/git/Portfolio.git/commitdiff_plain/refs/heads/zope-2.13?hp=821f2dd54fd8a66a73d7a4c8b99331fbe7476d86 Merge branch 'dd_ordering' into zope-2.13 --- diff --git a/skins/cart_listing.js b/skins/cart_listing.js index 593002a..cf160c3 100644 --- a/skins/cart_listing.js +++ b/skins/cart_listing.js @@ -9,39 +9,39 @@ var CartListing; (function(){ var ENTERKEY = 13; -CartListing = function(table) { +CartListing = function(table) { var thisCL = this; this.table = table; var form = table.parentNode; - while(form.tagName != 'FORM') - form = form.parentNode; + while(form.tagName !== 'FORM') { + form = form.parentNode;} this.fm = new FormManager(form); - if (browser.isIE) - addListener(table, 'focusout', function(evt){thisCL.updateRow(evt);}); - else - addListener(table, 'change', function(evt){thisCL.updateRow(evt);}); + if (browser.isIE){ + addListener(table, 'focusout', function(evt){thisCL.updateRow(evt);});} + else{ + addListener(table, 'change', function(evt){thisCL.updateRow(evt);});} addListener(table, 'keypress', function(evt){thisCL.onKeypress(evt);}); -} +}; CartListing.prototype.updateRow = function(evt) { var target = getTargetedObject(evt); - if (target.tagName != 'INPUT') - return; + if (target.tagName !== 'INPUT'){ + return;} var row = target.parentNode.parentNode; - var inputs = row.getElementsByTagName('input') + var inputs = row.getElementsByTagName('input'); var refreshBtn = inputs[1]; this.fm.submitButton = refreshBtn; this.fm.submit(evt); }; CartListing.prototype.onKeypress = function(evt){ - if (evt.keyCode == ENTERKEY) - this.updateRow(evt); + if (evt.keyCode === ENTERKEY){ + this.updateRow(evt);} }; -})(); \ No newline at end of file +}()); diff --git a/skins/cart_widgets.js b/skins/cart_widgets.js index 594fd22..9f59306 100644 --- a/skins/cart_widgets.js +++ b/skins/cart_widgets.js @@ -19,7 +19,7 @@ CartWidget = function(slide, url) { req.send(null); hideProgressImage(); - if (req.status != 200){ + if (req.status !== 200){ alert(req.status); return; } @@ -27,12 +27,12 @@ CartWidget = function(slide, url) { var wdgtNode = this.wdgtNode = getCopyOfNode(doc); slide.appendChild(wdgtNode); - var descriptions = this.descriptions = new Array(); + var descriptions = this.descriptions = []; var divs = wdgtNode.getElementsByTagName('div'); - var d; - for (var i=0; i
diff --git a/skins/photo_lightbox_viewer.js b/skins/photo_lightbox_viewer.js index bb27a67..ba3ecf1 100644 --- a/skins/photo_lightbox_viewer.js +++ b/skins/photo_lightbox_viewer.js @@ -11,7 +11,7 @@ var Lightbox; 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; @@ -24,7 +24,6 @@ Lightbox = function(grid, toolbar, complete, container_type) { addListener(window, 'scroll', function(evt){self.windowScrollToolbarlHandler(evt);}); } addListener(window, 'scroll', function(evt){self.windowScrollGridHandler(evt);}); - // addListener(window, 'load', function(evt){ self.windowScrollGridHandler();}); registerStartupFunction(function(){ self.windowScrollGridHandler();}); this.lastCBChecked = undefined; this.form = undefined; @@ -46,6 +45,14 @@ Lightbox = function(grid, toolbar, complete, container_type) { fm.onBeforeSubmit = function(fm_, evt) {return self.onBeforeSubmit(fm_, evt);}; fm.onResponseLoad = function(req) {return self.onResponseLoad(req);}; } + + // drag and drop + this.disableDefaultDragging(); + 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() { @@ -71,6 +78,7 @@ Lightbox.prototype.windowScrollToolbarlHandler = function(evt) { this.switchToolBarPositioning(false); } }; + Lightbox.prototype.windowScrollGridHandler = function(evt) { if (!this.complete && !this.fetchingDisabled && @@ -175,6 +183,8 @@ Lightbox.prototype.mouseClickHandler = function(evt) { 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); } @@ -350,6 +360,7 @@ Lightbox.prototype._refreshGrid = function(req) { node = doc.childNodes[i]; if (node.nodeType === 1) { node = getCopyOfNode(node); + this.disableDefaultDragging(node); this.grid.replaceChild(node, this.slides[j]); this.slides[j] = node; j++; @@ -392,6 +403,7 @@ Lightbox.prototype._appendTail = function(req) { node = doc.childNodes[i]; if (node.nodeType === 1) { this.lastSlide = this.grid.appendChild(getCopyOfNode(node)); + this.disableDefaultDragging(this.lastSlide); this.slides.push(this.lastSlide); if (this.cbIndex) { c = this.lastSlide.getElementsByTagName('input')[0]; @@ -424,4 +436,160 @@ else { }; } +if (browser.isGecko) { + Lightbox.prototype.disableDefaultDragging = function(element) { + if (!element) { + element = this.grid; + } + var i, j, name, elements; + var elementsNames = ['a', 'img']; + for (i=0 ; i < elementsNames.length ; i++) { + name = elementsNames[i]; + elements = element.getElementsByTagName(name); + for (j=0 ; j < elements.length ; j++) { + elements[j].draggable=false; + } + } + }; +} +else { + Lightbox.prototype.disableDefaultDragging = function() {}; +} + +Lightbox.prototype.getSelectedSlides = function() { + var i, e, slide; + var slides = []; + for (i=0 ; i=0 ; i--) { + slide = this.draggedSelection[i].cloneNode(true); + this.pendingMovedSlides.push(slide); + this.grid.insertBefore(slide, this.lastDropTarget.nextSibling); + slide.style.opacity = 1; + slide.style.width = ''; + } + this.moveSelectedPhotos(); + } + // this.draggedSelection = this.lastDropTarget + this.dragged = undefined; +}; + +Lightbox.prototype.moveSelectedPhotos = function() { + var req = new XMLHttpRequest(); + self = this; + req.onreadystatechange = function() { + switch (req.readyState) { + case 1 : + showProgressImage(); + break; + case 4 : + hideProgressImage(); + self._moveSelectedPhotos(req); + break; + } + }; + + var url = absolute_url() + '/portfolio_move_photos'; + req.open("POST", url, true); + req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); + var query = 'container_type=' + this.container_type; + var i; + for (i=0 ; i' + except NotImplementedError : + raise + +return printed + diff --git a/skins/portfolio_style.css.dtml b/skins/portfolio_style.css.dtml index 13a6782..c7bae6c 100755 --- a/skins/portfolio_style.css.dtml +++ b/skins/portfolio_style.css.dtml @@ -520,6 +520,26 @@ th.num { color: &dtml-messageFontColor;; } +/* drag and drop */ +#lightbox img, +#lightbox a { + user-drag: none; + -moz-user-select: none; + -webkit-user-drag: none; +} + +*[draggable=true] { + -moz-user-select:none; + -khtml-user-drag: element; + -webkit-user-drag: element; + -khtml-user-select: none; + -webkit-user-select: none; +} + +.lightbox span.dragover { +/* width: px;*/ + border-right: 10px solid &dtml-outlineColor;; +} /* diff --git a/skins/portfolio_view.pt b/skins/portfolio_view.pt index 06de5c3..a194d6f 100644 --- a/skins/portfolio_view.pt +++ b/skins/portfolio_view.pt @@ -28,7 +28,9 @@