fcc86f61cca2a11fa8148002ac3b7789edfe7da4
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()
74 ,'title' : b
.Description
75 ,'className': className
76 ,'displayed' : uid
== photouid
82 previous
= infos
[posOfPhoto
- 1]['href']
84 previous
= infos
[0]['href']
86 if posOfPhoto
< len(infos
) -1 :
87 next
= infos
[posOfPhoto
+ 1]['href']
89 next
= infos
[-1]['href']
91 contextInfos
= {'infos':infos
,
92 'isSelected': selDict
.has_key(photouid
),
93 'backUrl' : '%s?b_start:int=%s' % (lightboxUrl
, posOfPhoto
/bsize
*bsize
),
95 'previous' : previous
,
97 'reBaseCtxUrl':'/^%s/' % ('%s/lightboxcontext/' % lightboxUrl
).replace('/', '\/'),
98 'canonicalUrl': "'%s/'" % portal_url
}
100 options
['contextInfos'] = contextInfos
102 # breadcrumbs customization
103 breadcrumbs
= context
.breadcrumbs()
105 {'id' : photo
.getId()
106 ,'title' : photo
.title_or_id()
107 , 'url' : req
.ACTUAL_URL
}
110 options
['breadcrumbs'] = breadcrumbs
113 ti
= photo
.getTypeInfo()
114 method_id
= ti
.queryMethodID('view', context
=photo
)
115 app
= context
.restrictedTraverse('/')
116 meth
= app
.restrictedTraverse(photo
.getPhysicalPath() + (method_id
,))
117 return meth(req
, resp
, **options
)