From 73bdfc0777e30d4a90f9a5516ce8ff0075e00057 Mon Sep 17 00:00:00 2001 From: Supremicus Date: Fri, 13 Feb 2015 12:02:03 +1000 Subject: [PATCH 1/2] Remove defunct boxcar notifier --- CHANGES.md | 1 + gui/slick/images/notifiers/boxcar.png | Bin 1537 -> 0 bytes .../default/config_notifications.tmpl | 65 +------- gui/slick/js/configNotifications.js | 17 -- sickbeard/__init__.py | 23 --- sickbeard/notifiers/__init__.py | 3 - sickbeard/notifiers/boxcar.py | 155 ------------------ sickbeard/webserve.py | 18 -- 8 files changed, 2 insertions(+), 280 deletions(-) delete mode 100644 gui/slick/images/notifiers/boxcar.png delete mode 100644 sickbeard/notifiers/boxcar.py diff --git a/CHANGES.md b/CHANGES.md index d0b5bea3..cc4dd97f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -36,6 +36,7 @@ * Change The Pirate Bay url back as it's now back up and oldpiratebay hasn't been updated for weeks * Remove duplicate thepiratebay icon * Change to ensure uTorrent API parameters are ordered for uT 2.2.1 compatibility +* Remove defunct boxcar notifier [develop changelog] * Change uT params from unicode to str.format as magnet URLs worked but sending files in POST bodies failed diff --git a/gui/slick/images/notifiers/boxcar.png b/gui/slick/images/notifiers/boxcar.png deleted file mode 100644 index 3e1a700060aa601ce52c21c1502fdbc672d2bb72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1537 zcmV+c2LAbpP)-axgyH)0&LwvZGo}^s*+De zRV|)1pY|W`OaT-OZBXkRb(X@;Q&U@e<8~*!{CkLj!f*!s zRm1Y+qGG~YumZlTluvF8!3a>B5Y}{&R~eRXZ9)Ed54!=EhpmeWWf4MfV<|Ch$C#ZC z&<{HV;wH;g?jsf<_~#jP;iz&oE9Ku+`4pLmQSIJGeKW&wbr~aDg~}Es&(5tpSs)BL zMxe{hby@JF1%hr1qTBJ@H<*k5m=ZE*L6WjEouJC52ttV&Uro4#;5e`-6`N!o4Q^8n z!>?^JAtBmbDAnU;jdC1=*&!wWPx|D_61tlwA+j81v=5<3!tznFClQGN`zQ%+G2@w( z)tWEZv??GgCBc`OD1>5P#EGLwKK~Bp%OB7_vI4}p=SLh}LGs4)=zsVM!d@Fy?1V-& z$pCZGeL#d6rJiuH@^WKll&)C@h0Z8zgFLPwMT&TL4>pdttbjSW4w)4Yckf_+Z41G} zzwp>c=TJ{mXnLV)In5*lW+GOQF@dyYv5=rMjmgRB9D&Usiv&VXSw1-?r^)7V^saq? z-dFEp_UdV`_78h7|C)`*=|IM>leR>n~J43qHpslFJr7c!aqOvV7XlZFC z+sqZGk`^7U+8ydUM8I%~Tz*3d+GihyJ-dnY_!?S+3F6CNWBl_ygd0a7!_a%eRa-bE zds#DqpEJ#D@zvC9qNQ_d7i@Z|LG56^wuIhi=W*hTcd+#7+t4e0$l(EI-~0$&#N?k9 zjz{c)_B}(BfD}1HF^Q&1VvT5jz)Hv`y-?0}u|M4N8)!(R+e0V<G*| zuno<=6!cO?ZyY+^{dpfOh8I1cB}_({3UZhyoO=X{QlB8$9%Jv5@3H50bB*iEjN;gM zVI5{L#&nSS#yYv8p~xLTp-Eul3@SK+)hC}opTF}_f_{G;)#ezeO)s>M(cULU0 zpnklMr_P_j+KVTU4-#~H^od?qm4A0j*0r_mxm0_x}3 z&}YuEfznSrDwq@oXss?`sT;yf*e9zXsJwtKF1bMale+;;it02K6>p*pYASHBO$JfqI_@4 z*`JOlkOLqh$kfdmCm3h{CY(NMEN)c$k2w6ed&&7%3h5=vJ=fK(e(#csqSwmF^wfa^ z=Bc6vST~?W6Ng|D|Ne;PX`2H$_7mXlK;V+v>9$AHR`7CW>no)G!rY>z8^A;G>OVmL n_pxql3fve=T#f}se+w`G>KdJwn8 -
-
- -

Boxcar

-

Universal push notification for iOS. Read your messages where and when you want them! A subscription will be sent if needed.

-
-
-
- -
- -
-
- -
-
- -
-
- -
-
- - -
-
Click below to test.
- - -
- -
-
-
-

Boxcar2

+

Boxcar2

Read your messages where and when you want them!

diff --git a/gui/slick/js/configNotifications.js b/gui/slick/js/configNotifications.js index d430aa96..515b5277 100644 --- a/gui/slick/js/configNotifications.js +++ b/gui/slick/js/configNotifications.js @@ -74,23 +74,6 @@ $(document).ready(function(){ $('#testPLEX').prop('disabled', false); }); }); - - $('#testBoxcar').click(function() { - var boxcar_username = $.trim($('#boxcar_username').val()); - if (!boxcar_username) { - $('#testBoxcar-result').html('Please fill out the necessary fields above.'); - $('#boxcar_username').addClass('warning'); - return; - } - $('#boxcar_username').removeClass('warning'); - $(this).prop('disabled', true); - $('#testBoxcar-result').html(loading); - $.get(sbRoot + '/home/testBoxcar', {'username': boxcar_username}) - .done(function (data) { - $('#testBoxcar-result').html(data); - $('#testBoxcar').prop('disabled', false); - }); - }); $('#testBoxcar2').click(function () { var boxcar2_accesstoken = $.trim($('#boxcar2_accesstoken').val()); diff --git a/sickbeard/__init__.py b/sickbeard/__init__.py index a7d48ad6..bba467f1 100755 --- a/sickbeard/__init__.py +++ b/sickbeard/__init__.py @@ -309,14 +309,6 @@ TWITTER_USERNAME = None TWITTER_PASSWORD = None TWITTER_PREFIX = None -USE_BOXCAR = False -BOXCAR_NOTIFY_ONSNATCH = False -BOXCAR_NOTIFY_ONDOWNLOAD = False -BOXCAR_NOTIFY_ONSUBTITLEDOWNLOAD = False -BOXCAR_USERNAME = None -BOXCAR_PASSWORD = None -BOXCAR_PREFIX = None - USE_BOXCAR2 = False BOXCAR2_NOTIFY_ONSNATCH = False BOXCAR2_NOTIFY_ONDOWNLOAD = False @@ -491,7 +483,6 @@ def initialize(consoleLogging=True): RENAME_EPISODES, AIRDATE_EPISODES, properFinderScheduler, PROVIDER_ORDER, autoPostProcesserScheduler, \ WOMBLE, OMGWTFNZBS, OMGWTFNZBS_USERNAME, OMGWTFNZBS_APIKEY, providerList, newznabProviderList, torrentRssProviderList, \ EXTRA_SCRIPTS, USE_TWITTER, TWITTER_USERNAME, TWITTER_PASSWORD, TWITTER_PREFIX, RECENTSEARCH_FREQUENCY, \ - USE_BOXCAR, BOXCAR_USERNAME, BOXCAR_PASSWORD, BOXCAR_NOTIFY_ONDOWNLOAD, BOXCAR_NOTIFY_ONSUBTITLEDOWNLOAD, BOXCAR_NOTIFY_ONSNATCH, \ USE_BOXCAR2, BOXCAR2_ACCESSTOKEN, BOXCAR2_NOTIFY_ONDOWNLOAD, BOXCAR2_NOTIFY_ONSUBTITLEDOWNLOAD, BOXCAR2_NOTIFY_ONSNATCH, \ USE_PUSHOVER, PUSHOVER_USERKEY, PUSHOVER_APIKEY, PUSHOVER_NOTIFY_ONDOWNLOAD, PUSHOVER_NOTIFY_ONSUBTITLEDOWNLOAD, PUSHOVER_NOTIFY_ONSNATCH, \ USE_LIBNOTIFY, LIBNOTIFY_NOTIFY_ONSNATCH, LIBNOTIFY_NOTIFY_ONDOWNLOAD, LIBNOTIFY_NOTIFY_ONSUBTITLEDOWNLOAD, USE_NMJ, NMJ_HOST, NMJ_DATABASE, NMJ_MOUNT, USE_NMJv2, NMJv2_HOST, NMJv2_DATABASE, NMJv2_DBLOC, USE_SYNOINDEX, \ @@ -521,7 +512,6 @@ def initialize(consoleLogging=True): CheckSection(CFG, 'Growl') CheckSection(CFG, 'Prowl') CheckSection(CFG, 'Twitter') - CheckSection(CFG, 'Boxcar') CheckSection(CFG, 'Boxcar2') CheckSection(CFG, 'NMJ') CheckSection(CFG, 'NMJv2') @@ -793,12 +783,6 @@ def initialize(consoleLogging=True): TWITTER_PASSWORD = check_setting_str(CFG, 'Twitter', 'twitter_password', '') TWITTER_PREFIX = check_setting_str(CFG, 'Twitter', 'twitter_prefix', 'SickGear') - USE_BOXCAR = bool(check_setting_int(CFG, 'Boxcar', 'use_boxcar', 0)) - BOXCAR_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Boxcar', 'boxcar_notify_onsnatch', 0)) - BOXCAR_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Boxcar', 'boxcar_notify_ondownload', 0)) - BOXCAR_NOTIFY_ONSUBTITLEDOWNLOAD = bool(check_setting_int(CFG, 'Boxcar', 'boxcar_notify_onsubtitledownload', 0)) - BOXCAR_USERNAME = check_setting_str(CFG, 'Boxcar', 'boxcar_username', '') - USE_BOXCAR2 = bool(check_setting_int(CFG, 'Boxcar2', 'use_boxcar2', 0)) BOXCAR2_NOTIFY_ONSNATCH = bool(check_setting_int(CFG, 'Boxcar2', 'boxcar2_notify_onsnatch', 0)) BOXCAR2_NOTIFY_ONDOWNLOAD = bool(check_setting_int(CFG, 'Boxcar2', 'boxcar2_notify_ondownload', 0)) @@ -1641,13 +1625,6 @@ def save_config(): new_config['Twitter']['twitter_password'] = helpers.encrypt(TWITTER_PASSWORD, ENCRYPTION_VERSION) new_config['Twitter']['twitter_prefix'] = TWITTER_PREFIX - new_config['Boxcar'] = {} - new_config['Boxcar']['use_boxcar'] = int(USE_BOXCAR) - new_config['Boxcar']['boxcar_notify_onsnatch'] = int(BOXCAR_NOTIFY_ONSNATCH) - new_config['Boxcar']['boxcar_notify_ondownload'] = int(BOXCAR_NOTIFY_ONDOWNLOAD) - new_config['Boxcar']['boxcar_notify_onsubtitledownload'] = int(BOXCAR_NOTIFY_ONSUBTITLEDOWNLOAD) - new_config['Boxcar']['boxcar_username'] = BOXCAR_USERNAME - new_config['Boxcar2'] = {} new_config['Boxcar2']['use_boxcar2'] = int(USE_BOXCAR2) new_config['Boxcar2']['boxcar2_notify_onsnatch'] = int(BOXCAR2_NOTIFY_ONSNATCH) diff --git a/sickbeard/notifiers/__init__.py b/sickbeard/notifiers/__init__.py index 0c6c9ebc..fa2f4203 100644 --- a/sickbeard/notifiers/__init__.py +++ b/sickbeard/notifiers/__init__.py @@ -30,7 +30,6 @@ import growl import prowl from . import libnotify import pushover -import boxcar import boxcar2 import nma import pushalot @@ -55,7 +54,6 @@ growl_notifier = growl.GrowlNotifier() prowl_notifier = prowl.ProwlNotifier() libnotify_notifier = libnotify.LibnotifyNotifier() pushover_notifier = pushover.PushoverNotifier() -boxcar_notifier = boxcar.BoxcarNotifier() boxcar2_notifier = boxcar2.Boxcar2Notifier() nma_notifier = nma.NMA_Notifier() pushalot_notifier = pushalot.PushalotNotifier() @@ -77,7 +75,6 @@ notifiers = [ growl_notifier, prowl_notifier, pushover_notifier, - boxcar_notifier, boxcar2_notifier, nma_notifier, pushalot_notifier, diff --git a/sickbeard/notifiers/boxcar.py b/sickbeard/notifiers/boxcar.py deleted file mode 100644 index f7318db0..00000000 --- a/sickbeard/notifiers/boxcar.py +++ /dev/null @@ -1,155 +0,0 @@ -# Author: Marvin Pinto -# Author: Dennis Lutter -# URL: http://code.google.com/p/sickbeard/ -# -# This file is part of SickGear. -# -# SickGear is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# SickGear is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SickGear. If not, see . - -import urllib, urllib2 -import time - -import sickbeard - -from sickbeard import logger -from sickbeard.common import notifyStrings, NOTIFY_SNATCH, NOTIFY_DOWNLOAD, NOTIFY_SUBTITLE_DOWNLOAD, NOTIFY_GIT_UPDATE, NOTIFY_GIT_UPDATE_TEXT -from sickbeard.exceptions import ex - -API_URL = "https://boxcar.io/devices/providers/fWc4sgSmpcN6JujtBmR6/notifications" - - -class BoxcarNotifier: - def test_notify(self, boxcar_username): - return self._notify("This is a test notification from Sick Beard", "Test", boxcar_username, force=True) - - def _sendBoxcar(self, msg, title, email, subscribe=False): - """ - Sends a boxcar notification to the address provided - - msg: The message to send (unicode) - title: The title of the message - email: The email address to send the message to (or to subscribe with) - subscribe: If true then instead of sending a message this function will send a subscription notification (optional, default is False) - - returns: True if the message succeeded, False otherwise - """ - - # build up the URL and parameters - msg = msg.strip() - curUrl = API_URL - - # if this is a subscription notification then act accordingly - if subscribe: - data = urllib.urlencode({'email': email}) - curUrl = curUrl + "/subscribe" - - # for normal requests we need all these parameters - else: - data = urllib.urlencode({ - 'email': email, - 'notification[from_screen_name]': title, - 'notification[message]': msg.encode('utf-8'), - 'notification[from_remote_service_id]': int(time.time()) - }) - - - # send the request to boxcar - try: - req = urllib2.Request(curUrl) - handle = urllib2.urlopen(req, data) - handle.close() - - except urllib2.HTTPError, e: - # if we get an error back that doesn't have an error code then who knows what's really happening - if not hasattr(e, 'code'): - logger.log("Boxcar notification failed. Error code: " + ex(e), logger.ERROR) - return False - else: - logger.log("Boxcar notification failed. Error code: " + str(e.code), logger.WARNING) - - # HTTP status 404 if the provided email address isn't a Boxcar user. - if e.code == 404: - logger.log("Username is wrong/not a boxcar email. Boxcar will send an email to it", logger.WARNING) - return False - - # For HTTP status code 401's, it is because you are passing in either an invalid token, or the user has not added your service. - elif e.code == 401: - - # If the user has already added your service, we'll return an HTTP status code of 401. - if subscribe: - logger.log("Already subscribed to service", logger.ERROR) - # i dont know if this is true or false ... its neither but i also dont know how we got here in the first place - return False - - #HTTP status 401 if the user doesn't have the service added - else: - subscribeNote = self._sendBoxcar(msg, title, email, True) - if subscribeNote: - logger.log("Subscription send", logger.DEBUG) - return True - else: - logger.log("Subscription could not be send", logger.ERROR) - return False - - # If you receive an HTTP status code of 400, it is because you failed to send the proper parameters - elif e.code == 400: - logger.log("Wrong data sent to boxcar", logger.ERROR) - return False - - logger.log("Boxcar notification successful.", logger.MESSAGE) - return True - - def notify_snatch(self, ep_name, title=notifyStrings[NOTIFY_SNATCH]): - if sickbeard.BOXCAR_NOTIFY_ONSNATCH: - self._notifyBoxcar(title, ep_name) - - - def notify_download(self, ep_name, title=notifyStrings[NOTIFY_DOWNLOAD]): - if sickbeard.BOXCAR_NOTIFY_ONDOWNLOAD: - self._notifyBoxcar(title, ep_name) - - def notify_subtitle_download(self, ep_name, lang, title=notifyStrings[NOTIFY_SUBTITLE_DOWNLOAD]): - if sickbeard.BOXCAR_NOTIFY_ONSUBTITLEDOWNLOAD: - self._notifyBoxcar(title, ep_name + ": " + lang) - - def notify_git_update(self, new_version = "??"): - if sickbeard.USE_BOXCAR: - update_text=notifyStrings[NOTIFY_GIT_UPDATE_TEXT] - title=notifyStrings[NOTIFY_GIT_UPDATE] - self._notifyBoxcar(title, update_text + new_version) - - def _notifyBoxcar(self, title, message, username=None, force=False): - """ - Sends a boxcar notification based on the provided info or SB config - - title: The title of the notification to send - message: The message string to send - username: The username to send the notification to (optional, defaults to the username in the config) - force: If True then the notification will be sent even if Boxcar is disabled in the config - """ - - if not sickbeard.USE_BOXCAR and not force: - logger.log("Notification for Boxcar not enabled, skipping this notification", logger.DEBUG) - return False - - # if no username was given then use the one from the config - if not username: - username = sickbeard.BOXCAR_USERNAME - - logger.log("Sending notification for " + message, logger.DEBUG) - - return self._sendBoxcar(message, title, username) - - -notifier = BoxcarNotifier diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index f774436b..36de6ee2 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -2344,8 +2344,6 @@ class ConfigNotifications(MainHandler): prowl_notify_onsubtitledownload=None, prowl_api=None, prowl_priority=0, use_twitter=None, twitter_notify_onsnatch=None, twitter_notify_ondownload=None, twitter_notify_onsubtitledownload=None, - use_boxcar=None, boxcar_notify_onsnatch=None, boxcar_notify_ondownload=None, - boxcar_notify_onsubtitledownload=None, boxcar_username=None, use_boxcar2=None, boxcar2_notify_onsnatch=None, boxcar2_notify_ondownload=None, boxcar2_notify_onsubtitledownload=None, boxcar2_accesstoken=None, use_pushover=None, pushover_notify_onsnatch=None, pushover_notify_ondownload=None, @@ -2418,12 +2416,6 @@ class ConfigNotifications(MainHandler): sickbeard.TWITTER_NOTIFY_ONDOWNLOAD = config.checkbox_to_value(twitter_notify_ondownload) sickbeard.TWITTER_NOTIFY_ONSUBTITLEDOWNLOAD = config.checkbox_to_value(twitter_notify_onsubtitledownload) - sickbeard.USE_BOXCAR = config.checkbox_to_value(use_boxcar) - sickbeard.BOXCAR_NOTIFY_ONSNATCH = config.checkbox_to_value(boxcar_notify_onsnatch) - sickbeard.BOXCAR_NOTIFY_ONDOWNLOAD = config.checkbox_to_value(boxcar_notify_ondownload) - sickbeard.BOXCAR_NOTIFY_ONSUBTITLEDOWNLOAD = config.checkbox_to_value(boxcar_notify_onsubtitledownload) - sickbeard.BOXCAR_USERNAME = boxcar_username - sickbeard.USE_BOXCAR2 = config.checkbox_to_value(use_boxcar2) sickbeard.BOXCAR2_NOTIFY_ONSNATCH = config.checkbox_to_value(boxcar2_notify_onsnatch) sickbeard.BOXCAR2_NOTIFY_ONDOWNLOAD = config.checkbox_to_value(boxcar2_notify_ondownload) @@ -3357,16 +3349,6 @@ class Home(MainHandler): return "Test prowl notice failed" - def testBoxcar(self, username=None): - self.set_header('Cache-Control', 'max-age=0,no-cache,no-store') - - result = notifiers.boxcar_notifier.test_notify(username) - if result: - return "Boxcar notification succeeded. Check your Boxcar clients to make sure it worked" - else: - return "Error sending Boxcar notification" - - def testBoxcar2(self, accesstoken=None): self.set_header('Cache-Control', 'max-age=0,no-cache,no-store') From a5dfb0135d295bf2e2cec80b0d6a5bbc5edadd3c Mon Sep 17 00:00:00 2001 From: Supremicus Date: Fri, 13 Feb 2015 15:28:03 +1000 Subject: [PATCH 2/2] Boxcar2 notifier changes --- CHANGES.md | 2 + .../default/config_notifications.tmpl | 2873 +++++++++-------- gui/slick/js/configNotifications.js | 779 ++--- sickbeard/__init__.py | 5 +- sickbeard/notifiers/boxcar2.py | 115 +- sickbeard/webserve.py | 7 +- 6 files changed, 1916 insertions(+), 1865 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index cc4dd97f..9b9f030a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -37,6 +37,8 @@ * Remove duplicate thepiratebay icon * Change to ensure uTorrent API parameters are ordered for uT 2.2.1 compatibility * Remove defunct boxcar notifier +* Add sound selection for boxcar2 notifier +* Change boxcar2 notifier to use updated api scheme [develop changelog] * Change uT params from unicode to str.format as magnet URLs worked but sending files in POST bodies failed diff --git a/gui/slick/interfaces/default/config_notifications.tmpl b/gui/slick/interfaces/default/config_notifications.tmpl index 6e6a472e..0802f65f 100644 --- a/gui/slick/interfaces/default/config_notifications.tmpl +++ b/gui/slick/interfaces/default/config_notifications.tmpl @@ -1,1500 +1,1541 @@ #import sickbeard #from sickbeard.helpers import anon_url -#set global $title="Config - Notifications" -#set global $header="Notifications" +#set global $title = 'Config - Notifications' +#set global $header = 'Notifications' -#set global $sbPath="../.." +#set global $sbPath = '../..' -#set global $topmenu="config"# -#include $os.path.join($sickbeard.PROG_DIR, "gui/slick/interfaces/default/inc_top.tmpl") +#set global $topmenu = 'config' +#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_top.tmpl') #if $varExists('header') -

$header

+

$header

#else -

$title

+

$title

#end if
-
-
-
- +
+ +
+ -
-
- -
- -

XBMC

-

A free and open source cross-platform media center and home entertainment system software with a 10-foot user interface designed for the living-room TV.

-
-
-
-
+
+
+ +
+ +

XBMC

+

A free and open source cross-platform media center and home entertainment system software with a 10-foot user interface designed for the living-room TV.

+
+
+
+
-
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- - - -
-
- - -
-
- - -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
- -
+
+ +
-
-
- -

Plex Media Server

-

Plex organizes all of your personal media, wherever you keep it, so you can enjoy it on any device

-

For sending notifications to Plex Home Theater (PHT) clients, use the XBMC notifier with port 3005.

-
-
-
- -
+
+
+ +

Plex Media Server

+

Plex organizes all of your personal media, wherever you keep it, so you can enjoy it on any device

+

For sending notifications to Plex Home Theater (PHT) clients, use the XBMC notifier with port 3005.

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
- -
-
- - -
-
- - - -
-
- - -
-
- - -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + + +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
-
+
+
-
-
- -

NMJ

-

The Networked Media Jukebox, or NMJ, is the official media jukebox interface made available for the Popcorn Hour 200-series.

-
-
-
- -
+
+
+ +

NMJ

+

The Networked Media Jukebox, or NMJ, is the official media jukebox interface made available for the Popcorn Hour 200-series.

+
+
+
+ +
-
-
- - -
-
- - -
-
- - -
-
- - -
-
Click below to test.
- - -
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
-
+
+
-
-
- -

NMJv2

-

The Networked Media Jukebox, or NMJv2, is the official media jukebox interface made available for the Popcorn Hour 300 & 400-series.

-
-
-
- -
+
+
+ +

NMJv2

+

The Networked Media Jukebox, or NMJv2, is the official media jukebox interface made available for the Popcorn Hour 300 & 400-series.

+
+
+
+ +
-
-
- - -
-
- Database location - - - - -
-
- - -
-
- - -
-
- - -
-
Click below to test.
- - -
+
+
+ + +
+
+ Database location + + + + +
+
+ + +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
-
- +
+
+ -
-
- -

Synology

-

The Synology DiskStation NAS.

-

Synology Indexer is the daemon running on the Synology NAS to build its media database.

-
+
+
+ +

Synology

+

The Synology DiskStation NAS.

+

Synology Indexer is the daemon running on the Synology NAS to build its media database.

+
-
-
- - -
+
+
+ + +
-
- -
+
+ +
-
-
- - -
-
- -

Synology Notifier

-

Synology Notifier is the notification system of Synology DSM

-
+
+
+ + +
+
+ +

Synology Notifier

+

Synology Notifier is the notification system of Synology DSM

+
-
-
- - -
-
-
- -
-
- -
-
- -
- -
-
-
+
+
+ + +
+
+
+ +
+
+ +
+
+ +
+ +
+
+ -
-
- -

pyTivo

-

pyTivo is both an HMO and GoBack server. This notifier will load the completed downloads to your Tivo.

-
-
-
- - -
+
+
+ +

pyTivo

+

pyTivo is both an HMO and GoBack server. This notifier will load the completed downloads to your Tivo.

+
+
+
+ + +
-
-
- - -
-
- - -
-
- - -
- -
+
+
+ + +
+
+ + +
+
+ + +
+ +
-
-
+
+
- + - -
-
-
- -

Growl

-

A cross-platform unobtrusive global notification system.

-
-
-
- -
+ +
+
+
+ +

Growl

+

A cross-platform unobtrusive global notification system.

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
- - -
-
- - - -
-
Click below to register and test Growl, this is required for Growl notifications to work.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + + +
+
Click below to register and test Growl, this is required for Growl notifications to work.
+ + +
-
-
+
+
-
-
- Prowl -

Prowl

-

A Growl client for iOS.

-
-
-
- -
+
+
+ Prowl +

Prowl

+

A Growl client for iOS.

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
- - -
-
- - -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
-
+
+
-
-
- -

Libnotify

-

The standard desktop notification API for Linux/*nix systems. This notifier will only function if the pynotify module is installed (Ubuntu/Debian package python-notify).

-
-
-
- -
+
+
+ +

Libnotify

+

The standard desktop notification API for Linux/*nix systems. This notifier will only function if the pynotify module is installed (Ubuntu/Debian package python-notify).

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
Click below to test.
+ + +
-
-
+
+
-
-
- -

Pushover

-

Pushover makes it easy to send real-time notifications to your Android and iOS devices.

-
-
-
- -
+
+
+ +

Pushover

+

Pushover makes it easy to send real-time notifications to your Android and iOS devices.

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
- - -
-
- - -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
-
+
+
-
-
- -

Boxcar2

-

Read your messages where and when you want them!

-
-
-
- -
+
+
+ +

Boxcar2

+

Read your messages where and when you want them!

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
- - -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
-
+
+
-
-
- -

Notify My Android

-

Notify My Android is a Prowl-like Android App and API that offers an easy way to send notifications from your application directly to your Android device.

-
-
-
- -
+
+
+ +

Notify My Android

+

Notify My Android is a Prowl-like Android App and API that offers an easy way to send notifications from your application directly to your Android device.

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
- - -
-
- - -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
-
+
+
-
-
- -

Pushalot

-

Pushalot is a platform for receiving custom push notifications to connected devices running Windows Phone or Windows 8.

-
-
-
-
+
+
+ +

Pushalot

+

Pushalot is a platform for receiving custom push notifications to connected devices running Windows Phone or Windows 8.

+
+
+
+
-
-
- -
-
- -
-
- -
-
- - -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
Click below to test.
+ + +
-
-
+
+
-
-
- -

Pushbullet

-

Pushbullet is a platform for receiving custom push notifications to connected devices running Android and desktop Chrome browsers.

-
-
-
- -
+
+
+ +

Pushbullet

+

Pushbullet is a platform for receiving custom push notifications to connected devices running Android and desktop Chrome browsers.

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
- - -
-
- - -
-
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
Click below to test.
+ + +
-
-
+
+
-
- -
-
-
- -

Twitter

-

A social networking and microblogging service, enabling its users to send and read other users' messages called tweets.

-
-
-
- - -
+
+ +
+
+
+ +

Twitter

+

A social networking and microblogging service, enabling its users to send and read other users' messages called tweets.

+
+
+
+ + +
-
-
- -
-
- -
-
- -
-
- - -
-
- - -
- -
Click below to test.
- - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+ +
Click below to test.
+ + +
-
-
+ +
-
-
- -

Trakt

-

trakt helps keep a record of what TV shows and movies you are watching. Based on your favorites, trakt recommends additional shows and movies you'll enjoy!

-
-
-
- -
+
+
+ +

Trakt

+

trakt helps keep a record of what TV shows and movies you are watching. Based on your favorites, trakt recommends additional shows and movies you'll enjoy!

+
+
+
+ +
-
-
- - -
-
- - -
-
- - -
-
- -
-
- -
-
- -
-
-
- - -
-
- -
-
- -
-
- -
-
-
Click below to test.
- - -
-
-
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+ +
+
+
+ + +
+
+ +
+
+ +
+
+ +
+
+
Click below to test.
+ + +
+
+
-
-
- -

Email

-

Allows configuration of email notifications on a per show basis.

-
-
-
- -
+
+
+ +

Email

+

Allows configuration of email notifications on a per show basis.

+
+
+
+ +
-
-
- -
-
- -
-
- -
-
- - -
-
- - -
-
- - -
-
- -
-
- - -
-
- - -
-
- - -
-
- - - -
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + + +
-
Click below to test.
- - -
-
-
+
Click below to test.
+ + +
+ +
- - + + -

+

- +
-#include $os.path.join($sickbeard.PROG_DIR,"gui/slick/interfaces/default/inc_bottom.tmpl") +#include $os.path.join($sickbeard.PROG_DIR, 'gui/slick/interfaces/default/inc_bottom.tmpl') diff --git a/gui/slick/js/configNotifications.js b/gui/slick/js/configNotifications.js index 515b5277..1e851c4d 100644 --- a/gui/slick/js/configNotifications.js +++ b/gui/slick/js/configNotifications.js @@ -1,102 +1,103 @@ $(document).ready(function(){ - var loading = ''; + var loading = ''; - $('#testGrowl').click(function () { - var growl_host = $.trim($('#growl_host').val()); - var growl_password = $.trim($('#growl_password').val()); - if (!growl_host) { - $('#testGrowl-result').html('Please fill out the necessary fields above.'); + $('#testGrowl').click(function () { + var growl_host = $.trim($('#growl_host').val()); + var growl_password = $.trim($('#growl_password').val()); + if (!growl_host) { + $('#testGrowl-result').html('Please fill out the necessary fields above.'); $('#growl_host').addClass('warning'); - return; - } - $('#growl_host').removeClass('warning'); + return; + } + $('#growl_host').removeClass('warning'); $(this).prop('disabled', true); - $('#testGrowl-result').html(loading); - $.get(sbRoot + '/home/testGrowl', {'host': growl_host, 'password': growl_password}) - .done(function (data) { - $('#testGrowl-result').html(data); - $('#testGrowl').prop('disabled', false); - }); - }); + $('#testGrowl-result').html(loading); + $.get(sbRoot + '/home/testGrowl', {'host': growl_host, 'password': growl_password}) + .done(function (data) { + $('#testGrowl-result').html(data); + $('#testGrowl').prop('disabled', false); + }); + }); - $('#testProwl').click(function () { - var prowl_api = $.trim($('#prowl_api').val()); - var prowl_priority = $('#prowl_priority').val(); - if (!prowl_api) { - $('#testProwl-result').html('Please fill out the necessary fields above.'); + $('#testProwl').click(function () { + var prowl_api = $.trim($('#prowl_api').val()); + var prowl_priority = $('#prowl_priority').val(); + if (!prowl_api) { + $('#testProwl-result').html('Please fill out the necessary fields above.'); $('#prowl_api').addClass('warning'); - return; - } - $('#prowl_api').removeClass('warning'); + return; + } + $('#prowl_api').removeClass('warning'); $(this).prop('disabled', true); - $('#testProwl-result').html(loading); - $.get(sbRoot + '/home/testProwl', {'prowl_api': prowl_api, 'prowl_priority': prowl_priority}) - .done(function (data) { - $('#testProwl-result').html(data); - $('#testProwl').prop('disabled', false); - }); - }); - - $('#testXBMC').click(function () { - var xbmc_host = $.trim($('#xbmc_host').val()); - var xbmc_username = $.trim($('#xbmc_username').val()); - var xbmc_password = $.trim($('#xbmc_password').val()); - if (!xbmc_host) { - $('#testXBMC-result').html('Please fill out the necessary fields above.'); + $('#testProwl-result').html(loading); + $.get(sbRoot + '/home/testProwl', {'prowl_api': prowl_api, 'prowl_priority': prowl_priority}) + .done(function (data) { + $('#testProwl-result').html(data); + $('#testProwl').prop('disabled', false); + }); + }); + + $('#testXBMC').click(function () { + var xbmc_host = $.trim($('#xbmc_host').val()); + var xbmc_username = $.trim($('#xbmc_username').val()); + var xbmc_password = $.trim($('#xbmc_password').val()); + if (!xbmc_host) { + $('#testXBMC-result').html('Please fill out the necessary fields above.'); $('#xbmc_host').addClass('warning'); - return; - } - $('#xbmc_host').removeClass('warning'); + return; + } + $('#xbmc_host').removeClass('warning'); $(this).prop('disabled', true); - $('#testXBMC-result').html(loading); - $.get(sbRoot + '/home/testXBMC', {'host': xbmc_host, 'username': xbmc_username, 'password': xbmc_password}) - .done(function (data) { - $('#testXBMC-result').html(data); - $('#testXBMC').prop('disabled', false); - }); - }); + $('#testXBMC-result').html(loading); + $.get(sbRoot + '/home/testXBMC', {'host': xbmc_host, 'username': xbmc_username, 'password': xbmc_password}) + .done(function (data) { + $('#testXBMC-result').html(data); + $('#testXBMC').prop('disabled', false); + }); + }); - $('#testPLEX').click(function () { - var plex_host = $.trim($('#plex_host').val()); - var plex_username = $.trim($('#plex_username').val()); - var plex_password = $.trim($('#plex_password').val()); - if (!plex_host) { - $('#testPLEX-result').html('Please fill out the necessary fields above.'); + $('#testPLEX').click(function () { + var plex_host = $.trim($('#plex_host').val()); + var plex_username = $.trim($('#plex_username').val()); + var plex_password = $.trim($('#plex_password').val()); + if (!plex_host) { + $('#testPLEX-result').html('Please fill out the necessary fields above.'); $('#plex_host').addClass('warning'); - return; - } - $('#plex_host').removeClass('warning'); + return; + } + $('#plex_host').removeClass('warning'); $(this).prop('disabled', true); - $('#testPLEX-result').html(loading); - $.get(sbRoot + '/home/testPLEX', {'host': plex_host, 'username': plex_username, 'password': plex_password}) - .done(function (data) { - $('#testPLEX-result').html(data); - $('#testPLEX').prop('disabled', false); - }); - }); - - $('#testBoxcar2').click(function () { - var boxcar2_accesstoken = $.trim($('#boxcar2_accesstoken').val()); - if (!boxcar2_accesstoken) { - $('#testBoxcar2-result').html('Please fill out the necessary fields above.'); - $('#boxcar2_accesstoken').addClass('warning'); - return; - } - $('#boxcar2_accesstoken').removeClass('warning'); - $(this).prop('disabled', true); - $('#testBoxcar2-result').html(loading); - $.get(sbRoot + '/home/testBoxcar2', {'accessToken': boxcar2_accesstoken}) - .done(function (data) { - $('#testBoxcar2-result').html(data); - $('#testBoxcar2').prop('disabled', false); - }); - }); + $('#testPLEX-result').html(loading); + $.get(sbRoot + '/home/testPLEX', {'host': plex_host, 'username': plex_username, 'password': plex_password}) + .done(function (data) { + $('#testPLEX-result').html(data); + $('#testPLEX').prop('disabled', false); + }); + }); - $('#testPushover').click(function () { - var pushover_userkey = $('#pushover_userkey').val(); - var pushover_apikey = $('#pushover_apikey').val(); - if (!pushover_userkey || !pushover_apikey) { - $('#testPushover-result').html('Please fill out the necessary fields above.'); + $('#testBoxcar2').click(function () { + var boxcar2_accesstoken = $.trim($('#boxcar2_accesstoken').val()); + var boxcar2_sound = $('#boxcar2_sound').val() || 'default'; + if (!boxcar2_accesstoken) { + $('#testBoxcar2-result').html('Please fill out the necessary fields above.'); + $('#boxcar2_accesstoken').addClass('warning'); + return; + } + $('#boxcar2_accesstoken').removeClass('warning'); + $(this).prop('disabled', true); + $('#testBoxcar2-result').html(loading); + $.get(sbRoot + '/home/testBoxcar2', {'accesstoken': boxcar2_accesstoken, 'sound': boxcar2_sound}) + .done(function (data) { + $('#testBoxcar2-result').html(data); + $('#testBoxcar2').prop('disabled', false); + }); + }); + + $('#testPushover').click(function () { + var pushover_userkey = $('#pushover_userkey').val(); + var pushover_apikey = $('#pushover_apikey').val(); + if (!pushover_userkey || !pushover_apikey) { + $('#testPushover-result').html('Please fill out the necessary fields above.'); if (!pushover_userkey) { $('#pushover_userkey').addClass('warning'); } else { @@ -107,108 +108,108 @@ $(document).ready(function(){ } else { $('#pushover_apikey').removeClass('warning'); } - return; - } + return; + } $('#pushover_userkey,#pushover_apikey').removeClass('warning'); $(this).prop('disabled', true); - $('#testPushover-result').html(loading); - $.get(sbRoot + '/home/testPushover', {'userKey': pushover_userkey, 'apiKey': pushover_apikey}) - .done(function (data) { - $('#testPushover-result').html(data); - $('#testPushover').prop('disabled', false); - }); - }); + $('#testPushover-result').html(loading); + $.get(sbRoot + '/home/testPushover', {'userKey': pushover_userkey, 'apiKey': pushover_apikey}) + .done(function (data) { + $('#testPushover-result').html(data); + $('#testPushover').prop('disabled', false); + }); + }); - $('#testLibnotify').click(function() { - $('#testLibnotify-result').html(loading); - $.get(sbRoot + '/home/testLibnotify', - function (data) { $('#testLibnotify-result').html(data); }); - }); + $('#testLibnotify').click(function() { + $('#testLibnotify-result').html(loading); + $.get(sbRoot + '/home/testLibnotify', + function (data) { $('#testLibnotify-result').html(data); }); + }); - $('#twitterStep1').click(function() { - $('#testTwitter-result').html(loading); - $.get(sbRoot + '/home/twitterStep1', function (data) {window.open(data); }) - .done(function () { $('#testTwitter-result').html('Step1: Confirm Authorization'); }); - }); + $('#twitterStep1').click(function() { + $('#testTwitter-result').html(loading); + $.get(sbRoot + '/home/twitterStep1', function (data) {window.open(data); }) + .done(function () { $('#testTwitter-result').html('Step1: Confirm Authorization'); }); + }); - $('#twitterStep2').click(function () { - var twitter_key = $.trim($('#twitter_key').val()); - if (!twitter_key) { - $('#testTwitter-result').html('Please fill out the necessary fields above.'); + $('#twitterStep2').click(function () { + var twitter_key = $.trim($('#twitter_key').val()); + if (!twitter_key) { + $('#testTwitter-result').html('Please fill out the necessary fields above.'); $('#twitter_key').addClass('warning'); - return; - } + return; + } $('#twitter_key').removeClass('warning'); - $('#testTwitter-result').html(loading); - $.get(sbRoot + '/home/twitterStep2', {'key': twitter_key}, - function (data) { $('#testTwitter-result').html(data); }); - }); + $('#testTwitter-result').html(loading); + $.get(sbRoot + '/home/twitterStep2', {'key': twitter_key}, + function (data) { $('#testTwitter-result').html(data); }); + }); - $('#testTwitter').click(function() { - $.get(sbRoot + '/home/testTwitter', - function (data) { $('#testTwitter-result').html(data); }); - }); + $('#testTwitter').click(function() { + $.get(sbRoot + '/home/testTwitter', + function (data) { $('#testTwitter-result').html(data); }); + }); - $('#settingsNMJ').click(function() { - if (!$('#nmj_host').val()) { - alert('Please fill in the Popcorn IP address'); - $('#nmj_host').focus(); - return; - } - $('#testNMJ-result').html(loading); - var nmj_host = $('#nmj_host').val(); - - $.get(sbRoot + '/home/settingsNMJ', {'host': nmj_host}, - function (data) { - if (data === null) { - $('#nmj_database').removeAttr('readonly'); - $('#nmj_mount').removeAttr('readonly'); - } - var JSONData = $.parseJSON(data); - $('#testNMJ-result').html(JSONData.message); - $('#nmj_database').val(JSONData.database); - $('#nmj_mount').val(JSONData.mount); + $('#settingsNMJ').click(function() { + if (!$('#nmj_host').val()) { + alert('Please fill in the Popcorn IP address'); + $('#nmj_host').focus(); + return; + } + $('#testNMJ-result').html(loading); + var nmj_host = $('#nmj_host').val(); + + $.get(sbRoot + '/home/settingsNMJ', {'host': nmj_host}, + function (data) { + if (data === null) { + $('#nmj_database').removeAttr('readonly'); + $('#nmj_mount').removeAttr('readonly'); + } + var JSONData = $.parseJSON(data); + $('#testNMJ-result').html(JSONData.message); + $('#nmj_database').val(JSONData.database); + $('#nmj_mount').val(JSONData.mount); - if (JSONData.database) { - $('#nmj_database').attr('readonly', true); - } else { - $('#nmj_database').removeAttr('readonly'); - } - if (JSONData.mount) { - $('#nmj_mount').attr('readonly', true); - } else { - $('#nmj_mount').removeAttr('readonly'); - } - }); - }); + if (JSONData.database) { + $('#nmj_database').attr('readonly', true); + } else { + $('#nmj_database').removeAttr('readonly'); + } + if (JSONData.mount) { + $('#nmj_mount').attr('readonly', true); + } else { + $('#nmj_mount').removeAttr('readonly'); + } + }); + }); - $('#testNMJ').click(function () { - var nmj_host = $.trim($('#nmj_host').val()); - var nmj_database = $('#nmj_database').val(); - var nmj_mount = $('#nmj_mount').val(); - if (!nmj_host) { - $('#testNMJ-result').html('Please fill out the necessary fields above.'); + $('#testNMJ').click(function () { + var nmj_host = $.trim($('#nmj_host').val()); + var nmj_database = $('#nmj_database').val(); + var nmj_mount = $('#nmj_mount').val(); + if (!nmj_host) { + $('#testNMJ-result').html('Please fill out the necessary fields above.'); $('#nmj_host').addClass('warning'); - return; - } - $('#nmj_host').removeClass('warning'); + return; + } + $('#nmj_host').removeClass('warning'); $(this).prop('disabled', true); - $('#testNMJ-result').html(loading); - $.get(sbRoot + '/home/testNMJ', {'host': nmj_host, 'database': nmj_database, 'mount': nmj_mount}) - .done(function (data) { - $('#testNMJ-result').html(data); - $('#testNMJ').prop('disabled', false); - }); - }); + $('#testNMJ-result').html(loading); + $.get(sbRoot + '/home/testNMJ', {'host': nmj_host, 'database': nmj_database, 'mount': nmj_mount}) + .done(function (data) { + $('#testNMJ-result').html(data); + $('#testNMJ').prop('disabled', false); + }); + }); $('#settingsNMJv2').click(function() { - if (!$('#nmjv2_host').val()) { - alert('Please fill in the Popcorn IP address'); - $('#nmjv2_host').focus(); - return; - } - $('#testNMJv2-result').html(loading); - var nmjv2_host = $('#nmjv2_host').val(); + if (!$('#nmjv2_host').val()) { + alert('Please fill in the Popcorn IP address'); + $('#nmjv2_host').focus(); + return; + } + $('#testNMJv2-result').html(loading); + var nmjv2_host = $('#nmjv2_host').val(); var nmjv2_dbloc; var radios = document.getElementsByName('nmjv2_dbloc'); for (var i = 0; i < radios.length; i++) { @@ -218,46 +219,46 @@ $(document).ready(function(){ } } - var nmjv2_dbinstance=$('#NMJv2db_instance').val(); - $.get(sbRoot + '/home/settingsNMJv2', {'host': nmjv2_host,'dbloc': nmjv2_dbloc,'instance': nmjv2_dbinstance}, - function (data){ - if (data == null) { - $('#nmjv2_database').removeAttr('readonly'); - } - var JSONData = $.parseJSON(data); - $('#testNMJv2-result').html(JSONData.message); - $('#nmjv2_database').val(JSONData.database); - - if (JSONData.database) - $('#nmjv2_database').attr('readonly', true); - else - $('#nmjv2_database').removeAttr('readonly'); - }); - }); + var nmjv2_dbinstance=$('#NMJv2db_instance').val(); + $.get(sbRoot + '/home/settingsNMJv2', {'host': nmjv2_host,'dbloc': nmjv2_dbloc,'instance': nmjv2_dbinstance}, + function (data){ + if (data == null) { + $('#nmjv2_database').removeAttr('readonly'); + } + var JSONData = $.parseJSON(data); + $('#testNMJv2-result').html(JSONData.message); + $('#nmjv2_database').val(JSONData.database); + + if (JSONData.database) + $('#nmjv2_database').attr('readonly', true); + else + $('#nmjv2_database').removeAttr('readonly'); + }); + }); - $('#testNMJv2').click(function () { - var nmjv2_host = $.trim($('#nmjv2_host').val()); - if (!nmjv2_host) { - $('#testNMJv2-result').html('Please fill out the necessary fields above.'); + $('#testNMJv2').click(function () { + var nmjv2_host = $.trim($('#nmjv2_host').val()); + if (!nmjv2_host) { + $('#testNMJv2-result').html('Please fill out the necessary fields above.'); $('#nmjv2_host').addClass('warning'); - return; - } + return; + } $('#nmjv2_host').removeClass('warning'); - $(this).prop('disabled', true); - $('#testNMJv2-result').html(loading); - $.get(sbRoot + '/home/testNMJv2', {'host': nmjv2_host}) - .done(function (data) { - $('#testNMJv2-result').html(data); - $('#testNMJv2').prop('disabled', false); - }); - }); - - $('#testTrakt').click(function () { - var trakt_api = $.trim($('#trakt_api').val()); - var trakt_username = $.trim($('#trakt_username').val()); - var trakt_password = $.trim($('#trakt_password').val()); - if (!trakt_api || !trakt_username || !trakt_password) { - $('#testTrakt-result').html('Please fill out the necessary fields above.'); + $(this).prop('disabled', true); + $('#testNMJv2-result').html(loading); + $.get(sbRoot + '/home/testNMJv2', {'host': nmjv2_host}) + .done(function (data) { + $('#testNMJv2-result').html(data); + $('#testNMJv2').prop('disabled', false); + }); + }); + + $('#testTrakt').click(function () { + var trakt_api = $.trim($('#trakt_api').val()); + var trakt_username = $.trim($('#trakt_username').val()); + var trakt_password = $.trim($('#trakt_password').val()); + if (!trakt_api || !trakt_username || !trakt_password) { + $('#testTrakt-result').html('Please fill out the necessary fields above.'); if (!trakt_api) { $('#trakt_api').addClass('warning'); } else { @@ -273,189 +274,189 @@ $(document).ready(function(){ } else { $('#trakt_password').removeClass('warning'); } - return; - } + return; + } $('#trakt_api,#trakt_username,#trakt_password').removeClass('warning'); - $(this).prop('disabled', true); - $('#testTrakt-result').html(loading); - $.get(sbRoot + '/home/testTrakt', {'api': trakt_api, 'username': trakt_username, 'password': trakt_password}) - .done(function (data) { - $('#testTrakt-result').html(data); - $('#testTrakt').prop('disabled', false); - }); - }); - - $('#testEmail').click(function () { - var status, host, port, tls, from, user, pwd, err, to; - status = $('#testEmail-result'); - status.html(loading); - host = $('#email_host').val(); - host = host.length > 0 ? host : null; - port = $('#email_port').val(); - port = port.length > 0 ? port : null; - tls = $('#email_tls').attr('checked') !== undefined ? 1 : 0; - from = $('#email_from').val(); - from = from.length > 0 ? from : 'root@localhost'; - user = $('#email_user').val().trim(); - pwd = $('#email_password').val(); - err = ''; - if (host === null) { - err += '
  • You must specify an SMTP hostname!
  • '; - } - if (port === null) { - err += '
  • You must specify an SMTP port!
  • '; - } else if (port.match(/^\d+$/) === null || parseInt(port, 10) > 65535) { - err += '
  • SMTP port must be between 0 and 65535!
  • '; - } - if (err.length > 0) { - err = '
      ' + err + '
    '; - status.html(err); - } else { - to = prompt('Enter an email address to send the test to:', null); - if (to === null || to.length === 0 || to.match(/.*@.*/) === null) { - status.html('

    You must provide a recipient email address!

    '); - } else { - $.get(sbRoot + '/home/testEmail', {host: host, port: port, smtp_from: from, use_tls: tls, user: user, pwd: pwd, to: to}, - function (msg) { $('#testEmail-result').html(msg); }); - } - } - }); - - $('#testNMA').click(function () { - var nma_api = $.trim($('#nma_api').val()); - var nma_priority = $('#nma_priority').val(); - if (!nma_api) { - $('#testNMA-result').html('Please fill out the necessary fields above.'); - $('#nma_api').addClass('warning'); - return; - } - $('#nma_api').removeClass('warning'); - $(this).prop('disabled', true); - $('#testNMA-result').html(loading); - $.get(sbRoot + '/home/testNMA', {'nma_api': nma_api, 'nma_priority': nma_priority}) - .done(function (data) { - $('#testNMA-result').html(data); - $('#testNMA').prop('disabled', false); - }); - }); - - $('#testPushalot').click(function () { - var pushalot_authorizationtoken = $.trim($('#pushalot_authorizationtoken').val()); - if (!pushalot_authorizationtoken) { - $('#testPushalot-result').html('Please fill out the necessary fields above.'); - $('#pushalot_authorizationtoken').addClass('warning'); - return; - } - $('#pushalot_authorizationtoken').removeClass('warning'); - $(this).prop('disabled', true); - $('#testPushalot-result').html(loading); - $.get(sbRoot + '/home/testPushalot', {'authorizationToken': pushalot_authorizationtoken}) - .done(function (data) { - $('#testPushalot-result').html(data); - $('#testPushalot').prop('disabled', false); - }); - }); - - $('#testPushbullet').click(function () { - var pushbullet_api = $.trim($('#pushbullet_api').val()); - if (!pushbullet_api) { - $('#testPushbullet-result').html('Please fill out the necessary fields above.'); - $('#pushbullet_api').addClass('warning'); - return; - } - $('#pushbullet_api').removeClass('warning'); - $(this).prop('disabled', true); - $('#testPushbullet-result').html(loading); - $.get(sbRoot + '/home/testPushbullet', {'api': pushbullet_api}) - .done(function (data) { - $('#testPushbullet-result').html(data); - $('#testPushbullet').prop('disabled', false); - }); - }); - - function get_pushbullet_devices(msg){ - - if(msg){ - $('#testPushbullet-result').html(loading); - } - - var pushbullet_api = $("#pushbullet_api").val(); - - if(!pushbullet_api) { - $('#testPushbullet-result').html("You didn't supply a Pushbullet api key"); - $("#pushbullet_api").focus(); - return false; - } - - var current_pushbullet_device = $("#pushbullet_device").val(); - $.get(sbRoot + "/home/getPushbulletDevices", {'api': pushbullet_api}, - function (data) { - var devices = jQuery.parseJSON(data).devices; - $("#pushbullet_device_list").html(''); - for (var i = 0; i < devices.length; i++) { - if(devices[i].active == true) { - if(current_pushbullet_device == devices[i].iden) { - $("#pushbullet_device_list").append('') - } else { - $("#pushbullet_device_list").append('') - } - } - } - if(msg) { - $('#testPushbullet-result').html(msg); - } - } - ); - - $("#pushbullet_device_list").change(function(){ - $("#pushbullet_device").val($("#pushbullet_device_list").val()); - $('#testPushbullet-result').html("Don't forget to save your new pushbullet settings."); - }); - }; - - $('#getPushbulletDevices').click(function(){ - get_pushbullet_devices("Device list updated. Please choose a device to push to."); - }); - - // we have to call this function on dom ready to create the devices select - get_pushbullet_devices(); - - $('#email_show').change(function () { - var key = parseInt($('#email_show').val(), 10); - $('#email_show_list').val(key >= 0 ? notify_data[key.toString()].list : ''); + $(this).prop('disabled', true); + $('#testTrakt-result').html(loading); + $.get(sbRoot + '/home/testTrakt', {'api': trakt_api, 'username': trakt_username, 'password': trakt_password}) + .done(function (data) { + $('#testTrakt-result').html(data); + $('#testTrakt').prop('disabled', false); + }); }); - // Update the internal data struct anytime settings are saved to the server - $('#email_show').bind('notify', function () { load_show_notify_lists(); }); + $('#testEmail').click(function () { + var status, host, port, tls, from, user, pwd, err, to; + status = $('#testEmail-result'); + status.html(loading); + host = $('#email_host').val(); + host = host.length > 0 ? host : null; + port = $('#email_port').val(); + port = port.length > 0 ? port : null; + tls = $('#email_tls').attr('checked') !== undefined ? 1 : 0; + from = $('#email_from').val(); + from = from.length > 0 ? from : 'root@localhost'; + user = $('#email_user').val().trim(); + pwd = $('#email_password').val(); + err = ''; + if (host === null) { + err += '
  • You must specify an SMTP hostname!
  • '; + } + if (port === null) { + err += '
  • You must specify an SMTP port!
  • '; + } else if (port.match(/^\d+$/) === null || parseInt(port, 10) > 65535) { + err += '
  • SMTP port must be between 0 and 65535!
  • '; + } + if (err.length > 0) { + err = '
      ' + err + '
    '; + status.html(err); + } else { + to = prompt('Enter an email address to send the test to:', null); + if (to === null || to.length === 0 || to.match(/.*@.*/) === null) { + status.html('

    You must provide a recipient email address!

    '); + } else { + $.get(sbRoot + '/home/testEmail', {host: host, port: port, smtp_from: from, use_tls: tls, user: user, pwd: pwd, to: to}, + function (msg) { $('#testEmail-result').html(msg); }); + } + } + }); - function load_show_notify_lists() { - $.get(sbRoot + "/home/loadShowNotifyLists", function (data) { - var list, html, s; - list = $.parseJSON(data); - notify_data = list; - if (list._size === 0) { - return; - } - html = ''; - for (s in list) { - if (s.charAt(0) !== '_') { - html += '