diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1fd6d1346..39f128a89 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -215,7 +215,7 @@ module ApplicationHelper else title = I18n.t 'application.helper.video_title.unknown' end - ' Youtube: ' + title + '' + ' Youtube: ' + title + '' end return processed_message end @@ -262,7 +262,7 @@ module ApplicationHelper else title = I18n.t 'application.helper.video_title.unknown' end - ' Vimeo: ' + title + '' + ' Vimeo: ' + title + '' end return processed_message end diff --git a/public/javascripts/widgets/embedder.js b/public/javascripts/widgets/embedder.js index bab95c0bc..3dda07309 100644 --- a/public/javascripts/widgets/embedder.js +++ b/public/javascripts/widgets/embedder.js @@ -24,7 +24,7 @@ var service = $this.data("host"), container = document.createElement("div"), $container = $(container).attr("class", "video-container"), - $videoContainer = $this.siblings(".video-container"); + $videoContainer = $this.closest(".from").siblings(".video-container"); if($videoContainer.length) { $videoContainer.slideUp("fast", function() { $(this).detach(); }); @@ -40,7 +40,7 @@ ); $container.hide() - .insertBefore($this.siblings(".info")) + .insertBefore($this.closest(".from").siblings(".info")) .slideDown('fast'); $this.click(function() { @@ -53,6 +53,12 @@ Embedder.prototype.start = function() { $(".stream").delegate("a.video-link", "click", this.onVideoLinkClicked); this.registerServices(); + + var $post = $("#main_stream").children(".stream_element:first"), + $contentParagraph = $post.children(".content").children(".from").children("p"), + $infoDiv = $contentParagraph.closest(".from").siblings(".info"); + + this.canEmbed = $infoDiv.length; }; Embedder.prototype.registerServices = function() { @@ -70,8 +76,10 @@ }; Embedder.prototype.onVideoLinkClicked = function(evt) { - evt.preventDefault(); - Diaspora.widgets.embedder.embed($(this)); + if(this.canEmbed) { + evt.preventDefault(); + Diaspora.widgets.embedder.embed($(this)); + } }; Diaspora.widgets.add("embedder", Embedder); diff --git a/spec/javascripts/embedder-spec.js b/spec/javascripts/embedder-spec.js index a1f92eb34..45d817b2d 100644 --- a/spec/javascripts/embedder-spec.js +++ b/spec/javascripts/embedder-spec.js @@ -45,6 +45,16 @@ describe("Diaspora", function() { expect($.fn.delegate).toHaveBeenCalledWith("a.video-link", "click", Diaspora.widgets.embedder.onVideoLinkClicked); }); }); + + it("has to have a certain DOM structure", function() { + spec.loadFixture("aspects_index"); + + var $post = $("#main_stream").children(".stream_element:first"), + $contentParagraph = $post.children(".content").children(".from").children("p"), + $infoDiv = $contentParagraph.closest(".from").siblings(".info"); + + expect($infoDiv.length).toEqual(1); + }); }); }); }); \ No newline at end of file