--- /dev/null
+##parameters=lightbox, pho_start=None, batch_size=None
+from Products.CMFCore.utils import getToolByName
+from Products.Plinn.PloneMisc import Batch
+
+utool = getToolByName(context, 'portal_url')
+portal = utool.getPortalObject()
+portalDepth = len(portal.getPhysicalPath())
+uidh = getToolByName(context, 'portal_uidhandler')
+pptool = getToolByName(context, 'portal_photo_print', None)
+req = context.REQUEST
+sd = context.session_data_manager.getSessionData(create = 1)
+path = context.getPhysicalPath()
+
+start = pho_start if pho_start is not None else 0
+brains = [uidh.getBrain(uid) for uid in context.uids]
+batch_size = batch_size if batch_size is not None else context.default_batch_size
+batch = Batch(brains, batch_size, start, quantumleap=1)
+
+lightboxUrl = lightbox.absolute_url()
+cart = sd.get('cart', None)
+
+infos = []
+for index, b in enumerate(batch) :
+ path = '/'.join(b.getPath().split('/')[portalDepth:])
+ p = b.getObject()
+ if pptool :
+ buyable = bool(pptool.getPrintingOptionsFor(p))
+ if cart and cart.locked :
+ buyable = False
+ else :
+ buyable = False
+
+ d = {'href' : '%s/lightboxcontext/%s' % (lightboxUrl, path)
+ ,'thumbUrl' : '%s/getThumbnail' % b.getURL()
+ ,'thumbSize' : b.getThumbnailSize
+ ,'title' : ('%s - %s' % (b.Title, b.Description)).strip(' -')
+ ,'cmf_uid':b.cmf_uid
+ ,'className':''
+ ,'buyable' : buyable
+ ,'o':b
+ }
+ infos.append(d)
+
+features = {}
+features['del'] = lambda b: '%s/remove_to_lightbox?uid=%s' % (lightboxUrl, b.cmf_uid)
+features['cart'] = lambda b : '%s/get_slide_buyable_items' % b.getURL()
+
+return {'infos' : infos,
+ 'batch' : batch,
+ 'features' : features}
\ No newline at end of file
options['features'] = features
options['buttons'] = buttons
options['lightboxSelected'] = lightboxSelected
+options['container_type'] = 'lightbox'
return context.lightbox_view_template(**options)
tal:content="structure python:'''
new Lightbox(document.getElementById('lightbox'),
document.getElementById('lightbox_toolbar'),
- %s);
- ''' % ('true' if not batch.next else 'false')">
+ %(complete)s,
+ '%(container_type)s');
+ ''' % {'complete' : 'true' if not batch.next else 'false',
+ 'container_type' : options.get('container_type', 'portfolio')}">
</script>
<script type="text/javascript"
tal:condition="dropable"
var lb = document.getElementById('lightbox');
new Lightbox(lb,
document.getElementById('lightbox_toolbar'),
- %(complete)s);
+ %(complete)s,
+ '%(container_type)s');
var uploadUrl = '%(putUrl)s';
var options = {'slideSize' : %(slideSize)d,
'thumbnailSize' : %(thumbnailSize)d};
''' % {'putUrl' : '%s/put_upload' % here.absolute_url(),
'slideSize' : portal_object.slide_size,
'thumbnailSize' : portal_object.thumb_size,
- 'complete': 'true' if not batch.next else 'false'}">
+ 'complete': 'true' if not batch.next else 'false',
+ 'container_type' : options.get('container_type', 'portfolio')}">
</script>
</div>
<div metal:define-macro="film_bar" tal:omit-tag="">
var reSelected = /.*selected.*/;
-Lightbox = function(grid, toolbar, complete) {
+Lightbox = function(grid, toolbar, complete, container_type) {
var self = this;
this.grid = grid;
this._buildSlidesIndex(); // set this.slides and this.lastSlide;
this.fetchingDisabled = false;
this.complete = complete;
+ this.container_type = container_type;
this.toolbar = toolbar;
if (toolbar) {
this.toolbarFixed = false;
var url = absolute_url() +
'/portfolio_thumbnails_tail?start:int=' +
String(this.slides.length) +
- '&size:int=10';
+ '&size:int=10' +
+ '&container_type=' +
+ this.container_type;
req.open('GET', url, true);
req.send();
};
-##parameters=start=0, size=10
+##parameters=start=0, size=10, container_type='portfolio'
options={}
-options.update(context.getPhotosInfos(context,
- pho_start=start,
- batch_size=size))
+if container_type == 'portfolio' :
+ options.update(context.getPhotosInfos(context,
+ pho_start=start,
+ batch_size=size))
+elif container_type == 'lightbox' :
+ options.update(context.getLightboxPhotosInfos(context,
+ pho_start=start,
+ batch_size=size))
return context.portfolio_thumbnails_tail_template(**options)
\ No newline at end of file