diff --git a/public/javascripts/app/views/photos_view.js b/public/javascripts/app/views/photos_view.js index d9161356e..2f930f018 100644 --- a/public/javascripts/app/views/photos_view.js +++ b/public/javascripts/app/views/photos_view.js @@ -7,7 +7,7 @@ app.views.Photos = Backbone.View.extend({ this.collection = this.model.photos; this.setupEvents(); - //this.setupLightbox(); ERROR: "imageThumb is undefined" ... + this.setupLightbox(); }, setupEvents : function(){ @@ -50,6 +50,10 @@ app.views.Photos = Backbone.View.extend({ setupLightbox : function(){ this.lightbox = Diaspora.BaseWidget.instantiate("Lightbox"); + this.lightbox.set({ + imageParent: '#main_stream', + imageSelector: 'img.photo' + }); $(this.el).delegate("a.photo-link", "click", this.lightbox.lightboxImageClicked); }, diff --git a/public/javascripts/widgets/lightbox.js b/public/javascripts/widgets/lightbox.js index 89186f841..30c969845 100644 --- a/public/javascripts/widgets/lightbox.js +++ b/public/javascripts/widgets/lightbox.js @@ -20,6 +20,11 @@ jQuery.fn.center = (function() { var Lightbox = function() { var self = this; + self.options = { + imageParent: '.stream_element', + imageSelector: 'img.stream-photo' + }; + this.subscribe("widget/ready", function(evt) { $.extend(self, { lightbox: $("#lightbox"), @@ -88,9 +93,9 @@ jQuery.fn.center = (function() { this.lightboxImageClicked = function(evt) { evt.preventDefault(); - var selectedImage = $(this).find("img.stream-photo"), + var selectedImage = $(this).find(self.options.imageSelector), imageUrl = selectedImage.attr("data-full-photo"), - images = selectedImage.parents('.stream_element').find('img.stream-photo'), + images = selectedImage.parents(self.options.imageParent).find(self.options.imageSelector), imageThumb; if( $.browser.msie ) { @@ -147,6 +152,10 @@ jQuery.fn.center = (function() { self.lightbox.hide(); self.body.removeClass("lightboxed"); }; + + this.set = function(opts) { + $.extend(self.options, opts); + }; }; Diaspora.Widgets.Lightbox = Lightbox; diff --git a/spec/javascripts/widgets/lightbox-spec.js b/spec/javascripts/widgets/lightbox-spec.js new file mode 100644 index 000000000..d821dfa0f --- /dev/null +++ b/spec/javascripts/widgets/lightbox-spec.js @@ -0,0 +1,95 @@ +/* Copyright (c) 2010-2012, Diaspora Inc. This file is + * licensed under the Affero General Public License version 3 or later. See + * the COPYRIGHT file. + */ + +describe("Diaspora.Widgets.Lighbox", function() { + var photos; + + var createDummyMarkup = function(opts){ + var defaults = { + linkClass: 'stream-photo-link', + imageParent: 'stream_element', + imageClass: 'stream-photo' + }; + + classes = _.extend(defaults, opts); + + var output = $('
').addClass(classes.imageParent); + _.each(photos, function(photo){ + output.append( + $('') + .attr('href', '#') + .addClass(classes.linkClass) + .append( + $('