X-Git-Url: https://svn.cri.ensmp.fr/git/Portfolio.git/blobdiff_plain/f741aec4647e8df9771660743008ea13387cbe86..01d91dfe8e676a59d83166eba69a55cff7796bd1:/skins/selection_view.py?ds=sidebyside

diff --git a/skins/selection_view.py b/skins/selection_view.py
index ecde5d9..393e86b 100755
--- a/skins/selection_view.py
+++ b/skins/selection_view.py
@@ -1,90 +1,96 @@
 ##parameters=
-from Products.CMFCore.utils import getToolByName
-from Products.Plinn.PloneMisc import Batch
+from Products.CMFCore.utils import getUtilityByInterfaceName
 from Products.Portfolio.utils import translate
 def _(message) : return translate(message, context).encode('utf-8')
 
-uidh = getToolByName(context, 'portal_uidhandler')
-utool = getToolByName(context, 'portal_url')
-pptool = getToolByName(context, 'portal_photo_print', None)
+req = context.REQUEST
+utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool')
 portal = utool.getPortalObject()
 portal_url = utool()
-portalDepth = len(portal.getPhysicalPath())
-req = context.REQUEST
-toUrl = req.physicalPathToURL
+
+form = req.form
+fg = form.get
+sd = context.session_data_manager.getSessionData(create = 1)
 
 # check if a lightbox is currently selected
-lightboxpath = req.SESSION.get('lightboxpath', None)
+lightboxpath = sd.get('lightboxpath', None)
 selectionIsLightbox = False
-if lightboxpath is None :
-	selection = req.SESSION.get('objects_selection', [])
-else :
-	try :
-		lightbox = portal.restrictedTraverse(lightboxpath)
-		selection = lightbox.getUidList()
-		selectionIsLightbox = True
-	except:
-		req.SESSION.set('lightboxpath', None)
-		selection = req.SESSION.get('objects_selection', [])
-
-start = req.get('b_start', 0)
-brains = [uidh.getBrain(uid) for uid in selection]
-batch = Batch(brains, context.default_batch_size, start, orphan=1, quantumleap=1)#, b_start_str='pho_start')
-cart = req.SESSION.get('cart', None)
+if lightboxpath is not None :
+    try :
+        lightbox = portal.restrictedTraverse(lightboxpath)
+        selectionIsLightbox = True
+    except:
+        sd['lightboxpath'] = None
 
-infos = []
-for index, b in enumerate(batch) :
-	path = b.getPath().split('/')
-	path.insert(portalDepth, 'selectioncontext')
-	p = b.getObject()
-	if pptool :
-		buyable = bool(pptool.getPrintingOptionsFor(p))
-		if cart and cart.locked :
-			buyable = False
-	else :
-		buyable = False
-	
-	d = {'href': toUrl('/'.join(path))
-		,'thumbUrl' : '%s/getThumbnail' % b.getURL()
-		,'thumbSize' : b.getThumbnailSize
-		,'title' : ('%s - %s' % (b.Title, b.Description)).strip(' -')
-		,'cmf_uid':b.cmf_uid
-		,'className':''
-		,'buyable' : buyable
-		,'o':b
-		}
-	infos.append(d)
+# form processing
+if fg('delete.x') or form.has_key('delete') :
+    selection = sd.get('objects_selection', [])
+    selDict = sd.get('objects_selection_dict', {})
 
-features = {}
-features['del'] = lambda b : '%s/remove_to_selection' % b.getURL()
-features['cart'] = lambda b : '%s/get_slide_buyable_items' % b.getURL()
+    # get selection from session data or from selected lightbox
+    if not selectionIsLightbox :
+    	selection = sd.get('objects_selection', [])
+    else :
+    	try :
+    		lightbox = portal.restrictedTraverse(lightboxpath)
+    		selection = lightbox.getUidList()
+    	except KeyError :
+    		sd['lightboxpath'] = None
+    		selection = sd.get('objects_selection', [])
+        
+    # remove items from selection
+    rmCpt = 0
+    for uid in [int(uid) for uid in fg('uids', [])] :
+        if selDict.has_key(uid) :
+            del selDict[uid]
+            selection.remove(uid)
+            if selectionIsLightbox :
+                lightbox.remove(uid)
+            rmCpt = rmCpt + 1
+    sd['objects_selection'] = selection
+    sd['objects_selection_dict'] = selDict
+        
+    # ui feedback message
+    if rmCpt :
+        if rmCpt == 1 :
+            msg = _('Photo deselected.')
+        else :
+            msg = _('Deselected photos.')
+    else :
+        msg = _('Nothing to deselect.')
+    
+    if fg('ajax') :
+        req.RESPONSE.setHeader('Content-Type', 'text/xml;;charset=utf-8')
+        return '<deleted>%s</deleted>' % msg
+    else :
+        context.setStatus(True, msg)
 
 # breadcrumbs customization
 if selectionIsLightbox :
-	lastBcTitle = '%s (%s)' % (_('My selection'), lightbox.title_or_id())
+    lastBcTitle = '%s (%s)' % (_('My selection'), lightbox.title_or_id())
 else :
-	lastBcTitle = _('My selection')
+    lastBcTitle = _('My selection')
+
 breadcrumbs = [
-	{ 'id'		: 'root'
-	, 'title'	: portal.title
-	, 'url'	   : portal_url},
-	
-	{'id'		: 'selection_view'
-	 ,'title'	: lastBcTitle
-	 , 'url'	: '%s/selection_view' % portal_url}
-	]
+    { 'id'      : 'root'
+    , 'title'   : portal.title
+    , 'url'    : portal_url},
+    
+    {'id'       : 'selection_view'
+     ,'title'   : lastBcTitle
+     , 'url'    : '%s/selection_view' % portal_url}
+    ]
 
 
 options = {}
-options['infos'] = infos
-options['batch'] = batch
-options['features'] = features
+options.update(context.getSelectionPhotosInfos())
+options['container_type'] = 'selection'
 options['selectionIsLightbox'] = selectionIsLightbox
 options['breadcrumbs'] = breadcrumbs
 
 if selectionIsLightbox :
-	options['lightbox'] = lightbox
+    options['lightbox'] = lightbox
 else :
-	options['selectionName'] = 'not saved yet'
+    options['selectionName'] = 'not saved yet'
 
 return context.selection_view_template(**options)