+##parameters=
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.permissions import ReviewPortalContent
+mtool = getToolByName(context, 'portal_membership')
+pptool = getToolByName(context, 'portal_photo_print', None)
+uidtool = getToolByName(context, 'portal_uidhandler')
+
+features = {}
+def toggleSelection(o, selected) :
+ if selected :
+ return '%s/remove_to_selection' % o.absolute_url()
+ else :
+ return '%s/add_to_selection' % o.absolute_url()
+
+features['select'] = toggleSelection
+features['cart'] = lambda o : '%s/get_slide_buyable_items' % o.absolute_url()
+
+if mtool.checkPermission(ReviewPortalContent, context) :
+ features['hideAnonymous'] = True
+
+sd = context.session_data_manager.getSessionData(create = 1)
+selDict = sd.get('objects_selection_dict', {})
+cart = sd.get('cart', None)
+
+p = context
+className = ''
+uid = getattr(p, 'cmf_uid', None)
+if uid is not None :
+ uid = uid()
+absUrl = p.absolute_url()
+selected = selDict.has_key(uid)
+hiddenForAnonymous = p.hiddenForAnonymous()
+if pptool :
+ buyable = bool(pptool.getPrintingOptionsFor(p))
+ if cart and cart.locked :
+ buyable = False
+else :
+ buyable = False
+
+if selected :
+ className = 'selected'
+if hiddenForAnonymous :
+ className = 'hidden-slide'
+
+d = {'href' : absUrl
+ ,'thumbUrl' : '%s/getThumbnail' % absUrl
+ ,'thumbSize': p.getThumbnailSize()
+ ,'title' : ('%s - %s' % (p.Title(), p.Description())).strip(' -')
+ ,'selected' : selected
+ ,'hiddenForAnonymous' : hiddenForAnonymous
+ ,'cmf_uid' : uidtool.register(p)
+ ,'buyable' : buyable
+ ,'className': className
+ ,'o' : p
+ }
+
+return {'info' : d, 'features' : features}