X-Git-Url: https://svn.cri.ensmp.fr/git/Portfolio.git/blobdiff_plain/011a53d5681ad1f5fa88a534ec041c93d3e7be95..ed700777982ff5e0a5740ea993111bc439e2d9a2:/skins/selectioncontext.py diff --git a/skins/selectioncontext.py b/skins/selectioncontext.py index f042b6d..fa7c090 100644 --- a/skins/selectioncontext.py +++ b/skins/selectioncontext.py @@ -2,7 +2,6 @@ from Products.CMFCore.utils import getToolByName from Products.Portfolio.utils import translate def _(message) : return translate(message, context).encode('utf-8') -bsize = 20 options = {} uidh = getToolByName(context, 'portal_uidhandler') @@ -16,123 +15,127 @@ portalDepth = len(portal.getPhysicalPath()) req = context.REQUEST toUrl = req.physicalPathToURL resp = req.RESPONSE +bsize = portal.getProperty('default_batch_size', 20) if traverse_subpath[-1] == 'photo_view_ajax' : - photoSubPath = traverse_subpath[:-1] - ajax = True + photoSubPath = traverse_subpath[:-1] + ajax = True else : - photoSubPath = traverse_subpath - ajax = False - + photoSubPath = traverse_subpath + ajax = False + photo = portal.restrictedTraverse(photoSubPath) photouid = uidh.register(photo) lightboxpath = req.SESSION.get('lightboxpath', None) selectionIsLightbox = False if lightboxpath is None : - selection = req.SESSION.get('objects_selection', []) + 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', []) + try : + lightbox = portal.restrictedTraverse(lightboxpath) + selection = lightbox.getUidList() + selectionIsLightbox = True + except: + req.SESSION.set('lightboxpath', None) + selection = req.SESSION.get('objects_selection', []) if pptool : - buyable = bool(pptool.getPrintingOptionsFor(photo)) - sd = context.session_data_manager.getSessionData(create=1) - cart = sd.get('cart', None) - if cart and cart.locked : - buyable = False + buyable = bool(pptool.getPrintingOptionsFor(photo)) + sd = context.session_data_manager.getSessionData(create=1) + cart = sd.get('cart', None) + if cart and cart.locked : + buyable = False else : - buyable = False + buyable = False options['buyable'] = buyable infos = [] posOfPhoto = 0 if ajax == True : - try : posOfPhoto = selection.index(photouid) - except ValueError : pass - options['backToContextUrl'] = '%s?b_start:int=%s' % (selectionUrl, posOfPhoto/bsize*bsize) - photoPath = list(photo.getPhysicalPath()) - photoPath.insert(portalDepth, 'selectioncontext') - options['lastBcUrl'] = toUrl(photoPath) - meth = getattr(photo, 'photo_view_ajax_template') - return meth(req, resp, **options) + try : posOfPhoto = selection.index(photouid) + except ValueError : pass + options['backToContextUrl'] = '%s?b_start:int=%s' % (selectionUrl, posOfPhoto/bsize*bsize) + photoPath = list(photo.getPhysicalPath()) + photoPath.insert(portalDepth, 'selectioncontext') + options['lastBcUrl'] = toUrl(photoPath) + app = context.restrictedTraverse('/') + meth = app.restrictedTraverse(photo.getPhysicalPath() + ('photo_view_ajax_template',)) + return meth(req, resp, **options) for i, uid in enumerate(selection) : - b = uidh.getBrain(uid) - size = b.getThumbnailSize - size = {'width':int(size['width']/2.0), 'height':int(size['height']/2.0)} - - if uid == photouid : - className = 'selected displayed' - posOfPhoto = i - else : - className = 'selected' - - path = b.getPath().split('/') - path.insert(portalDepth, 'selectioncontext') - - d = {'src': '%s/getThumbnail' % b.getURL() - ,'href': toUrl(path) - ,'thumbSize': size - ,'title' : b.Title - ,'className': className - , 'index': i - } - infos.append(d) + b = uidh.getBrain(uid) + size = b.getThumbnailSize + size = {'width':int(size['width']/2.0), 'height':int(size['height']/2.0)} + + if uid == photouid : + className = 'selected displayed' + posOfPhoto = i + else : + className = 'selected' + + path = b.getPath().split('/') + path.insert(portalDepth, 'selectioncontext') + + d = {'src': '%s/getThumbnail' % b.getURL() + ,'href': toUrl(path) + ,'thumbSize': size + ,'title' : b.Description + ,'className' : className + ,'displayed' : uid == photouid + , 'index': i + } + infos.append(d) if posOfPhoto > 0 : - previous = infos[posOfPhoto - 1]['href'] + previous = infos[posOfPhoto - 1]['href'] else : - previous = infos[0]['href'] + previous = infos[0]['href'] if posOfPhoto < len(infos) -1 : - next = infos[posOfPhoto + 1]['href'] + next = infos[posOfPhoto + 1]['href'] else : - next = infos[-1]['href'] + next = infos[-1]['href'] contextInfos = {'infos':infos, - 'isSelected':True, - 'backUrl' : '%s?b_start:int=%s' % (selectionUrl, posOfPhoto/bsize*bsize), - 'index' : posOfPhoto, - 'previous' : previous, - 'next' : next, - 'reBaseCtxUrl':'/^%s/' % (portal_url+'/selectioncontext/').replace('/', '\/'), - 'canonicalUrl': "'%s/'" % portal_url} + 'isSelected':True, + 'backUrl' : '%s?b_start:int=%s' % (selectionUrl, posOfPhoto/bsize*bsize), + 'index' : posOfPhoto, + 'previous' : previous, + 'next' : next, + 'reBaseCtxUrl':'/^%s/' % (portal_url+'/selectioncontext/').replace('/', '\/'), + 'canonicalUrl': "'%s/'" % portal_url} options['contextInfos'] = contextInfos # 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' : selectionUrl}, - - {'id' : photo.getId() - ,'title' : photo.title_or_id() - , 'url' : req.ACTUAL_URL} - ] + { 'id' : 'root' + , 'title' : portal.title + , 'url' : portal_url}, + + {'id' : 'selection_view' + ,'title' : lastBcTitle + , 'url' : selectionUrl}, + + {'id' : photo.getId() + ,'title' : photo.title_or_id() + , 'url' : req.ACTUAL_URL} + ] options['breadcrumbs'] = breadcrumbs ti = photo.getTypeInfo() method_id = ti.queryMethodID('view', context=photo) -meth = getattr(photo, method_id) +app = context.restrictedTraverse('/') +meth = app.restrictedTraverse(photo.getPhysicalPath() + (method_id,)) return meth(req, resp, **options)