X-Git-Url: https://scm.cri.ensmp.fr/git/Portfolio.git/blobdiff_plain/2da869b2b46179d64c05eaac4081226fdbbbc9ff..e73353500c67453ef9663d67eaeee7dd46c358ee:/Products/Portfolio/skins/selection_view.py diff --git a/Products/Portfolio/skins/selection_view.py b/Products/Portfolio/skins/selection_view.py new file mode 100755 index 0000000..393e86b --- /dev/null +++ b/Products/Portfolio/skins/selection_view.py @@ -0,0 +1,96 @@ +##parameters= +from Products.CMFCore.utils import getUtilityByInterfaceName +from Products.Portfolio.utils import translate +def _(message) : return translate(message, context).encode('utf-8') + +req = context.REQUEST +utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') +portal = utool.getPortalObject() +portal_url = utool() + +form = req.form +fg = form.get +sd = context.session_data_manager.getSessionData(create = 1) + +# check if a lightbox is currently selected +lightboxpath = sd.get('lightboxpath', None) +selectionIsLightbox = False +if lightboxpath is not None : + try : + lightbox = portal.restrictedTraverse(lightboxpath) + selectionIsLightbox = True + except: + sd['lightboxpath'] = None + +# form processing +if fg('delete.x') or form.has_key('delete') : + selection = sd.get('objects_selection', []) + selDict = sd.get('objects_selection_dict', {}) + + # 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 '%s' % msg + else : + context.setStatus(True, msg) + +# breadcrumbs customization +if selectionIsLightbox : + lastBcTitle = '%s (%s)' % (_('My selection'), lightbox.title_or_id()) +else : + lastBcTitle = _('My selection') + +breadcrumbs = [ + { 'id' : 'root' + , 'title' : portal.title + , 'url' : portal_url}, + + {'id' : 'selection_view' + ,'title' : lastBcTitle + , 'url' : '%s/selection_view' % portal_url} + ] + + +options = {} +options.update(context.getSelectionPhotosInfos()) +options['container_type'] = 'selection' +options['selectionIsLightbox'] = selectionIsLightbox +options['breadcrumbs'] = breadcrumbs + +if selectionIsLightbox : + options['lightbox'] = lightbox +else : + options['selectionName'] = 'not saved yet' + +return context.selection_view_template(**options)