2 from Products
.CMFCore
.utils
import getToolByName
3 from Products
.Portfolio
.utils
import translate
4 def _(message
) : return translate(message
, context
).encode('utf-8')
7 uidh
= getToolByName(context
, 'portal_uidhandler')
8 utool
= getToolByName(context
, 'portal_url')
9 atool
= getToolByName(context
, 'portal_actions')
10 pptool
= getToolByName(context
, 'portal_photo_print', None)
12 lightboxUrl
= context
.absolute_url()
13 portal
= utool
.getPortalObject()
14 portalDepth
= len(portal
.getPhysicalPath())
16 toUrl
= req
.physicalPathToURL
18 selDict
= req
.SESSION
.get('objects_selection_dict', {})
19 bsize
= portal
.getProperty('default_batch_size', 20)
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 app
= context
.restrictedTraverse('/')
54 meth
= app
.restrictedTraverse(photo
.getPhysicalPath() + ('photo_view_ajax_template',))
55 return meth(**options
)
58 for i
, uid
in enumerate(lightboxUids
) :
59 b
= uidh
.getBrain(uid
)
60 size
= b
.getThumbnailSize
61 size
= {'width':int(size
['width']/2.0), 'height':int(size
['height']/2.0)}
63 className
= selDict
.has_key(uid
) and 'selected' or ''
65 className
= ('%s displayed' % className
).lstrip()
68 relPhotoPath
= '/'.join(b
.getPath().split('/')[portalDepth
:])
69 href
= '%s/lightboxcontext/%s' % (lightboxUrl
, relPhotoPath
)
71 d
= {'src': '%s/getThumbnail' % b
.getURL()
75 ,'className': className
81 previous
= infos
[posOfPhoto
- 1]['href']
83 previous
= infos
[0]['href']
85 if posOfPhoto
< len(infos
) -1 :
86 next
= infos
[posOfPhoto
+ 1]['href']
88 next
= infos
[-1]['href']
90 contextInfos
= {'infos':infos
,
91 'isSelected': selDict
.has_key(photouid
),
92 'backUrl' : '%s?b_start:int=%s' % (lightboxUrl
, posOfPhoto
/bsize
*bsize
),
94 'previous' : previous
,
96 'reBaseCtxUrl':'/^%s/' % ('%s/lightboxcontext/' % lightboxUrl
).replace('/', '\/'),
97 'canonicalUrl': "'%s/'" % portal_url
}
99 options
['contextInfos'] = contextInfos
101 # breadcrumbs customization
102 breadcrumbs
= context
.breadcrumbs()
104 {'id' : photo
.getId()
105 ,'title' : photo
.title_or_id()
106 , 'url' : req
.ACTUAL_URL
}
109 options
['breadcrumbs'] = breadcrumbs
112 ti
= photo
.getTypeInfo()
113 method_id
= ti
.queryMethodID('view', context
=photo
)
114 app
= context
.restrictedTraverse('/')
115 meth
= app
.restrictedTraverse(photo
.getPhysicalPath() + (method_id
,))
116 return meth(req
, resp
, **options
)