zulip/static/js/lightbox.js

83 lines
2.3 KiB
JavaScript
Raw Normal View History

2017-03-18 00:50:39 +01:00
var lightbox = (function () {
var exports = {};
function display_image(image, user) {
// image should be an Image Object in JavaScript.
var url = $(image).attr("src");
var title = $(image).parent().attr("title");
$("#lightbox_overlay .player-container").hide();
$("#lightbox_overlay .image-actions, .image-description, .download").show();
2017-03-18 00:50:39 +01:00
var img = new Image();
img.src = url;
$("#lightbox_overlay .image-preview").html("").show()
2017-03-18 00:50:39 +01:00
.append(img);
$(".image-description .title").text(title || "N/A");
$(".image-description .user").text(user);
$(".image-actions .open, .image-actions .download").attr("href", url);
}
function display_youtube_video(id) {
$("#lightbox_overlay .image-preview, .image-description, .download").hide();
2017-03-18 00:50:39 +01:00
var iframe = document.createElement("iframe");
iframe.width = window.innerWidth;
iframe.height = window.innerWidth * 0.5625;
iframe.src = "https://www.youtube.com/embed/" + id;
iframe.setAttribute("frameborder", 0);
iframe.setAttribute("allowfullscreen", true);
$("#lightbox_overlay .player-container").html("").show().append(iframe);
2017-03-18 00:50:39 +01:00
$(".image-actions .open").attr("href", "https://youtu.be/" + id);
}
exports.open = function (data) {
switch (data.type) {
case "photo":
display_image(data.image, data.user);
break;
case "youtube":
display_youtube_video(data.id);
break;
default:
break;
}
$("#lightbox_overlay").addClass("show");
2017-03-18 00:50:39 +01:00
popovers.hide_all();
};
exports.show_from_selected_message = function () {
var selected_msg = $(".selected_message").find("img");
if (selected_msg.length !== 0) {
exports.show_from_inline_image(selected_msg);
}
};
exports.show_from_inline_image = function ($img) {
var zid = rows.id($img.closest(".message_row"));
var user = message_store.get(zid).sender_full_name;
if ($img.parent().parent().hasClass("youtube-video")) {
lightbox.open({
type: "youtube",
id: $img.data("id"),
});
} else {
lightbox.open({
type: "photo",
image: $img[0],
user: user,
});
}
};
2017-03-18 00:50:39 +01:00
return exports;
}());
if (typeof module !== 'undefined') {
module.exports = lightbox;
}