diff --git a/data/interfaces/default/css/tautulli.css b/data/interfaces/default/css/tautulli.css index 16320f06..0b74e42e 100644 --- a/data/interfaces/default/css/tautulli.css +++ b/data/interfaces/default/css/tautulli.css @@ -3976,3 +3976,18 @@ a:hover .overlay-refresh-image:hover { -webkit-appearance: none; 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%); +} diff --git a/data/interfaces/default/newsletter_config.html b/data/interfaces/default/newsletter_config.html index 7f3ab901..ab56456a 100644 --- a/data/interfaces/default/newsletter_config.html +++ b/data/interfaces/default/newsletter_config.html @@ -302,6 +302,9 @@

Test if the ${newsletter['agent_label']} newsletter is working. Check the logs for troubleshooting.

+

+ Warning: This will send the newsletter to all users in your email configuration! +

diff --git a/data/interfaces/default/newsletter_preview.html b/data/interfaces/default/newsletter_preview.html new file mode 100644 index 00000000..776af97d --- /dev/null +++ b/data/interfaces/default/newsletter_preview.html @@ -0,0 +1,42 @@ + + + + + + Tautulli - ${title} | ${server_name} + + + + + + + + + + + + + + diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 2b21d3e4..de5d5bae 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -5491,18 +5491,32 @@ class WebInterface(object): @cherrypy.expose @requireAuth(member_of("admin")) 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: 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') + master = (master == 'true') + raw = (raw == 'true') if raw: + cherrypy.response.headers['Content-Type'] = 'application/json;charset=UTF-8' return json.dumps(newsletter_agent.raw_data(preview=preview)) 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"