mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-10 23:42:37 -07:00
Add generating newsletter loader
This commit is contained in:
parent
25355f29ce
commit
8b1c7df3ce
4 changed files with 77 additions and 3 deletions
|
@ -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%);
|
||||||
|
}
|
||||||
|
|
|
@ -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">
|
||||||
|
|
42
data/interfaces/default/newsletter_preview.html
Normal file
42
data/interfaces/default/newsletter_preview.html
Normal 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> 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>
|
|
@ -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"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue