Files
edx-platform/lms/static/js/toggle_login_modal.js
njdup 5791fd1087 Instructors can view previously sent email content
Previously on the send email page of the instructor dashboard, instructors could only view
task information about emails they've sent for their course in the past.
In addition to this, I've now added the ability to see the content of all previously sent emails.

A "Sent Email History" button has been added to the page. When clicked, a table displaying the
subject line, number of emails sent, and date/time of submission for each previously sent email
is created. An instructor can then click on any subject line to see the content of that email,
displayed in a modal window that appears on the page.

The window is also equipped with a "copy email to editor" button, which copies the emails contents
to the tinyMCE editor, so that an instructor can easily resend an email that they've sent
in the past.
2014-08-04 10:08:32 -07:00

127 lines
4.2 KiB
JavaScript

(function($){
$.fn.extend({
/*
* leanModal prepares an element to be a modal dialog. Call it once on the
* element that launches the dialog, when the page is ready. This function
* will add a .click() handler that properly opens the dialog.
*
* The launching element must:
* - be an <a> element, not a button,
* - have an href= attribute identifying the id of the dialog element,
* - have rel='leanModal'.
*/
leanModal: function(options) {
var defaults = {
top: 100,
overlay: 0.5,
closeButton: null,
position: 'fixed'
}
if ($("#lean_overlay").length == 0) {
var overlay = $("<div id='lean_overlay'></div>");
$("body").append(overlay);
}
options = $.extend(defaults, options);
return this.each(function() {
var o = options;
$(this).click(function(e) {
$(".modal").hide();
var modal_id = $(this).attr("href");
if ($(modal_id).hasClass("video-modal")) {
//Video modals need to be cloned before being presented as a modal
//This is because actions on the video get recorded in the history.
//Deleting the video (clone) prevents the odd back button behavior.
var modal_clone = $(modal_id).clone(true, true);
modal_clone.attr('id', 'modal_clone');
$(modal_id).after(modal_clone);
modal_id = '#modal_clone';
}
$("#lean_overlay").click(function(e) {
close_modal(modal_id, e);
});
$(o.closeButton).click(function(e) {
close_modal(modal_id, e);
});
// To enable closing of email modal when copy button hit
$(o.copyEmailButton).click(function(e) {
close_modal(modal_id, e);
});
var modal_height = $(modal_id).outerHeight();
var modal_width = $(modal_id).outerWidth();
$('#lean_overlay').css({ 'display' : 'block', opacity : 0 });
$('#lean_overlay').fadeTo(200,o.overlay);
$('iframe', modal_id).attr('src', $('iframe', modal_id).data('src'));
if ($(modal_id).hasClass("email-modal")){
$(modal_id).css({
'width' : 80 + '%',
'height' : 80 + '%',
'position' : o.position,
'opacity' : 0,
'z-index' : 11000,
'left' : 10 + '%',
'top' : 10 + '%'
})
} else {
$(modal_id).css({
'position' : o.position,
'opacity' : 0,
'z-index': 11000,
'left' : 50 + '%',
'margin-left' : -(modal_width/2) + "px",
'top' : o.top + "px"
})
}
$(modal_id).show().fadeTo(200,1);
$(modal_id).find(".notice").hide().html("");
var notice = $(this).data('notice')
if(notice !== undefined) {
$notice = $(modal_id).find(".notice");
$notice.show().html(notice);
// This is for activating leanModal links that were in the notice. We should have a cleaner way of
// allowing all dynamically added leanmodal links to work.
$notice.find("a[rel*=leanModal]").leanModal({ top : 120, overlay: 1, closeButton: ".close-modal", position: 'absolute' });
}
window.scrollTo(0, 0);
e.preventDefault();
});
});
function close_modal(modal_id, e) {
$("#lean_overlay").fadeOut(200);
$('iframe', modal_id).attr('src', '');
$(modal_id).css({ 'display' : 'none' });
if (modal_id == '#modal_clone') {
$(modal_id).remove();
}
e.preventDefault();
}
}
});
$(document).ready(function ($) {
$("a[rel*=leanModal]").each(function () {
$(this).leanModal({ top : 120, overlay: 1, closeButton: ".close-modal", position: 'absolute' });
embed = $($(this).attr('href')).find('iframe')
if (embed.length > 0 && embed.attr('src')) {
var sep = (embed.attr('src').indexOf("?") > 0) ? '&' : '?';
embed.data('src', embed.attr('src') + sep + 'autoplay=1&rel=0');
embed.attr('src', '');
}
});
});
})(jQuery);