2 from Products
.CMFCore
.utils
import getToolByName
3 from Products
.Portfolio
.utils
import translate
4 def _(message
) : return translate(message
, context
).encode('utf-8')
8 uidh
= getToolByName(context
, 'portal_uidhandler')
9 utool
= getToolByName(context
, 'portal_url')
10 atool
= getToolByName(context
, 'portal_actions')
11 pptool
= getToolByName(context
, 'portal_photo_print', None)
13 lightboxUrl
= context
.absolute_url()
14 portal
= utool
.getPortalObject()
15 portalDepth
= len(portal
.getPhysicalPath())
17 toUrl
= req
.physicalPathToURL
19 selDict
= req
.SESSION
.get('objects_selection_dict', {})
21 if traverse_subpath
[-1] == 'photo_view_ajax' :
22 photoSubPath
= traverse_subpath
[:-1]
25 photoSubPath
= traverse_subpath
28 photo
= portal
.restrictedTraverse(photoSubPath
)
29 photouid
= uidh
.register(photo
)
31 lightboxUids
= context
.getUidList()
34 buyable
= bool(pptool
.getPrintingOptionsFor(photo
))
35 sd
= context
.session_data_manager
.getSessionData(create
=1)
36 cart
= sd
.get('cart', None)
37 if cart
and cart
.locked
:
41 options
['buyable'] = buyable
47 try : posOfPhoto
= lightboxUids
.index(photouid
)
48 except ValueError : pass
49 options
['backToContextUrl'] = '%s?b_start:int=%s' % (lightboxUrl
, posOfPhoto
/bsize
*bsize
)
50 relPhotoPath
= '/'.join(photo
.getPhysicalPath()[portalDepth
:])
51 lastBcUrl
= '%s/lightboxcontext/%s' % (lightboxUrl
, relPhotoPath
)
52 options
['lastBcUrl'] = lastBcUrl
53 meth
= getattr(photo
, 'photo_view_ajax_template')
54 return meth(**options
)
57 for i
, uid
in enumerate(lightboxUids
) :
58 b
= uidh
.getBrain(uid
)
59 size
= b
.getThumbnailSize
60 size
= {'width':int(size
['width']/2.0), 'height':int(size
['height']/2.0)}
62 className
= selDict
.has_key(uid
) and 'selected' or ''
64 className
= ('%s displayed' % className
).lstrip()
67 relPhotoPath
= '/'.join(b
.getPath().split('/')[portalDepth
:])
68 href
= '%s/lightboxcontext/%s' % (lightboxUrl
, relPhotoPath
)
70 d
= {'src': '%s/getThumbnail' % b
.getURL()
74 ,'className': className
80 previous
= infos
[posOfPhoto
- 1]['href']
82 previous
= infos
[0]['href']
84 if posOfPhoto
< len(infos
) -1 :
85 next
= infos
[posOfPhoto
+ 1]['href']
87 next
= infos
[-1]['href']
89 contextInfos
= {'infos':infos
,
90 'isSelected': selDict
.has_key(photouid
),
91 'backUrl' : '%s?b_start:int=%s' % (lightboxUrl
, posOfPhoto
/bsize
*bsize
),
93 'previous' : previous
,
95 'reBaseCtxUrl':'/^%s/' % ('%s/lightboxcontext/' % lightboxUrl
).replace('/', '\/'),
96 'canonicalUrl': "'%s/'" % portal_url
}
98 options
['contextInfos'] = contextInfos
100 # breadcrumbs customization
101 breadcrumbs
= context
.breadcrumbs()
103 {'id' : photo
.getId()
104 ,'title' : photo
.title_or_id()
105 , 'url' : req
.ACTUAL_URL
}
108 options
['breadcrumbs'] = breadcrumbs
111 ti
= photo
.getTypeInfo()
112 method_id
= ti
.queryMethodID('view', context
=photo
)
113 meth
= getattr(photo
, method_id
)
114 return meth(req
, resp
, **options
)