Add generating newsletter loader

This commit is contained in:
JonnyWong16 2018-02-08 22:54:28 -08:00
parent 25355f29ce
commit 8b1c7df3ce
4 changed files with 77 additions and 3 deletions

View file

@ -3976,3 +3976,18 @@ a:hover .overlay-refresh-image:hover {
-webkit-appearance: none; -webkit-appearance: none;
margin: 0; margin: 0;
} }
.newsletter-loader-container {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.newsletter-loader-message {
color: #282A2D;
text-align: center;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}

View file

@ -302,6 +302,9 @@
<p class="help-block"> <p class="help-block">
Test if the ${newsletter['agent_label']} newsletter is working. Check the <a href="logs">logs</a> for troubleshooting. Test if the ${newsletter['agent_label']} newsletter is working. Check the <a href="logs">logs</a> for troubleshooting.
</p> </p>
<p class="help-block">
Warning: This will send the newsletter to all users in your email configuration!
</p>
<div class="form-group"> <div class="form-group">
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">

View file

@ -0,0 +1,42 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Tautulli - ${title} | ${server_name}</title>
<link href="${http_root}css/plexpy.css${cache_param}" rel="stylesheet">
<link href="${http_root}css/opensans.min.css" rel="stylesheet">
<link href="${http_root}css/font-awesome.min.css" rel="stylesheet">
<style>
* {
padding: 0 !important;
margin: 0 !important;
}
</style>
</head>
<body>
<div id="loader" class="newsletter-loader-container">
<div class="newsletter-loader-message">
<i class="fa fa-refresh fa-spin"></i>&nbsp; Generating Newsletter
</div>
</div>
<script src="${http_root}js/jquery-2.1.4.min.js"></script>
<script>
$(document).ready(function () {
var frame = $('<iframe></iframe>', {
src: 'real_newsletter?newsletter_id=${newsletter_id}&preview=${preview}&master=${master}&raw=${raw}',
frameborder: '0',
style: 'display: none; height: 100vh; width: 100vw;'
});
frame.on('load', function (e) {
$(e.target).fadeIn();
$('#loader').fadeOut();
});
$('body').append(frame)
});
</script>
</body>
</html>

View file

@ -5491,18 +5491,32 @@ class WebInterface(object):
@cherrypy.expose @cherrypy.expose
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))
def newsletter(self, newsletter_id=None, preview=False, master=False, raw=False, **kwargs): def newsletter(self, newsletter_id=None, preview=False, master=False, raw=False, **kwargs):
return serve_template(templatename="newsletter_preview.html",
title="Newsletter",
newsletter_id=newsletter_id,
preview=preview,
master=master,
raw=raw)
@cherrypy.expose
@requireAuth(member_of("admin"))
def real_newsletter(self, newsletter_id=None, preview=False, master=False, raw=False, **kwargs):
if newsletter_id: if newsletter_id:
newsletter = newsletters.get_newsletter_config(newsletter_id=newsletter_id) newsletter = newsletters.get_newsletter_config(newsletter_id=newsletter_id)
newsletter_agent = newsletters.get_agent_class(agent_id=newsletter['agent_id'], config=newsletter['config'])
if newsletter_agent: if newsletter:
newsletter_agent = newsletters.get_agent_class(agent_id=newsletter['agent_id'],
config=newsletter['config'])
preview = (preview == 'true') preview = (preview == 'true')
master = (master == 'true')
raw = (raw == 'true')
if raw: if raw:
cherrypy.response.headers['Content-Type'] = 'application/json;charset=UTF-8'
return json.dumps(newsletter_agent.raw_data(preview=preview)) return json.dumps(newsletter_agent.raw_data(preview=preview))
return newsletter_agent.generate_newsletter(preview=preview, master=master) return newsletter_agent.generate_newsletter(preview=preview, master=master)
return "Invalid newsletter id %s" % newsletter_id return "Invalid Newsletter ID #%s" % newsletter_id
return "Missing newsletter_id parameter" return "Missing newsletter_id parameter"