homepage.php 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826
  1. <?php
  2. $data = false;
  3. ini_set("display_errors", 1);
  4. ini_set("error_reporting", E_ALL | E_STRICT);
  5. require_once("user.php");
  6. require_once("functions.php");
  7. use Kryptonit3\Sonarr\Sonarr;
  8. use Kryptonit3\SickRage\SickRage;
  9. $sonarr = new Sonarr(SONARRURL, SONARRKEY);
  10. $radarr = new Sonarr(RADARRURL, RADARRKEY);
  11. $sickrage = new SickRage(SICKRAGEURL, SICKRAGEKEY);
  12. $USER = new User("registration_callback");
  13. // Check if connection to homepage is allowed
  14. qualifyUser(HOMEPAGEAUTHNEEDED, true);
  15. $dbfile = DATABASE_LOCATION.'users.db';
  16. $file_db = new PDO("sqlite:" . $dbfile);
  17. $file_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  18. $dbOptions = $file_db->query('SELECT name FROM sqlite_master WHERE type="table" AND name="options"');
  19. $hasOptions = "No";
  20. foreach($dbOptions as $row) :
  21. if (in_array("options", $row)) :
  22. $hasOptions = "Yes";
  23. endif;
  24. endforeach;
  25. if($hasOptions == "No") :
  26. $title = "Organizr";
  27. $topbar = "#333333";
  28. $topbartext = "#66D9EF";
  29. $bottombar = "#333333";
  30. $sidebar = "#393939";
  31. $hoverbg = "#AD80FD";
  32. $activetabBG = "#F92671";
  33. $activetabicon = "#FFFFFF";
  34. $activetabtext = "#FFFFFF";
  35. $inactiveicon = "#66D9EF";
  36. $inactivetext = "#66D9EF";
  37. $loading = "#66D9EF";
  38. $hovertext = "#000000";
  39. endif;
  40. if($hasOptions == "Yes") :
  41. $resulto = $file_db->query('SELECT * FROM options');
  42. foreach($resulto as $row) :
  43. $title = isset($row['title']) ? $row['title'] : "Organizr";
  44. $topbartext = isset($row['topbartext']) ? $row['topbartext'] : "#66D9EF";
  45. $topbar = isset($row['topbar']) ? $row['topbar'] : "#333333";
  46. $bottombar = isset($row['bottombar']) ? $row['bottombar'] : "#333333";
  47. $sidebar = isset($row['sidebar']) ? $row['sidebar'] : "#393939";
  48. $hoverbg = isset($row['hoverbg']) ? $row['hoverbg'] : "#AD80FD";
  49. $activetabBG = isset($row['activetabBG']) ? $row['activetabBG'] : "#F92671";
  50. $activetabicon = isset($row['activetabicon']) ? $row['activetabicon'] : "#FFFFFF";
  51. $activetabtext = isset($row['activetabtext']) ? $row['activetabtext'] : "#FFFFFF";
  52. $inactiveicon = isset($row['inactiveicon']) ? $row['inactiveicon'] : "#66D9EF";
  53. $inactivetext = isset($row['inactivetext']) ? $row['inactivetext'] : "#66D9EF";
  54. $loading = isset($row['loading']) ? $row['loading'] : "#66D9EF";
  55. $hovertext = isset($row['hovertext']) ? $row['hovertext'] : "#000000";
  56. endforeach;
  57. endif;
  58. $startDate = date('Y-m-d',strtotime("-".CALENDARSTARTDAY." days"));
  59. $endDate = date('Y-m-d',strtotime("+".CALENDARENDDAY." days"));
  60. ?>
  61. <!DOCTYPE html>
  62. <html lang="en" class="no-js">
  63. <head>
  64. <meta charset="UTF-8">
  65. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  66. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  67. <meta name="msapplication-tap-highlight" content="no" />
  68. <title><?=$title;?> Homepage</title>
  69. <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
  70. <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
  71. <link rel="stylesheet" href="bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css">
  72. <script src="js/menu/modernizr.custom.js"></script>
  73. <link rel="stylesheet" href="bower_components/animate.css/animate.min.css">
  74. <link rel="stylesheet" href="bower_components/fullcalendar/dist/fullcalendar.css">
  75. <link rel="stylesheet" href="css/style.css?v=<?php echo INSTALLEDVERSION; ?>">
  76. <link rel="stylesheet" href="bower_components/mdi/css/materialdesignicons.min.css?v=<?php echo INSTALLEDVERSION; ?>">
  77. <link rel="stylesheet" href="bower_components/google-material-color/dist/palette.css?v=<?php echo INSTALLEDVERSION; ?>">
  78. <link rel="stylesheet" type="text/css" href="bower_components/slick/slick.css?v=<?php echo INSTALLEDVERSION; ?>">
  79. <!-- Add the slick-theme.css if you want default styling -->
  80. <!--Scripts-->
  81. <script src="bower_components/jquery/dist/jquery.min.js"></script>
  82. <script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  83. <script src="bower_components/moment/min/moment.min.js"></script>
  84. <script src="bower_components/jquery.nicescroll/jquery.nicescroll.min.js"></script>
  85. <script src="bower_components/slimScroll/jquery.slimscroll.min.js"></script>
  86. <script src="bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js"></script>
  87. <script src="bower_components/jquery.nicescroll/jquery.nicescroll.min.js"></script>
  88. <script src="bower_components/cta/dist/cta.min.js"></script>
  89. <script src="bower_components/fullcalendar/dist/fullcalendar.js?v=<?php echo INSTALLEDVERSION; ?>"></script>
  90. <script src="bower_components/slick/slick.js?v=<?php echo INSTALLEDVERSION; ?>"></script>
  91. <script src="js/jqueri_ui_custom/jquery-ui.min.js"></script>
  92. <script src="js/jquery.mousewheel.min.js" type="text/javascript"></script>
  93. <!--Other-->
  94. <script src="js/ajax.js?v=<?php echo INSTALLEDVERSION; ?>"></script>
  95. <!--[if lt IE 9]>
  96. <script src="bower_components/html5shiv/dist/html5shiv.min.js"></script>
  97. <script src="bower_components/respondJs/dest/respond.min.js"></script>
  98. <![endif]-->
  99. <style>
  100. .recentItems {
  101. padding-top: 10px;
  102. margin: 5px 0;
  103. }
  104. .slick-image-tall{
  105. width: 125px;
  106. height: 180px;
  107. }
  108. .slick-image-short{
  109. width: 125px;
  110. height: 130px;
  111. margin-top: 50px;
  112. }
  113. .overlay{
  114. position: absolute;
  115. top: 0;
  116. left: 0;
  117. width: 100%;
  118. height: 100%;
  119. display: none;
  120. z-index: 0;
  121. opacity: .98;
  122. }
  123. sort {
  124. display: none;
  125. }
  126. table.fc-list-table {
  127. table-layout: auto;
  128. }.tabbable{
  129. margin-bottom: 0;
  130. }.fc-day-grid-event .fc-content {
  131. white-space: normal;
  132. }.fc-list-item {
  133. table-layout: auto;
  134. position: inherit;
  135. margin: 10px;
  136. border-radius: 4px;
  137. padding: 0 5px 0 5px;
  138. color: #fff !important;
  139. }.fc-calendar .fc-toolbar {
  140. background: <?=$topbar;?>;
  141. color: <?=$topbartext;?>;
  142. border-radius: 5px 5px 0 0;
  143. padding: 15px;
  144. }.fc-calendar .fc-toolbar .fc-right {
  145. bottom: 0px;
  146. right: 20px;
  147. }.fc-calendar .fc-toolbar .fc-right button {
  148. color: <?=$topbartext;?>;
  149. }.fc-calendar .fc-toolbar .fc-prev-button, .fc-calendar .fc-toolbar .fc-next-button {
  150. color: <?=$topbartext;?>;
  151. }.carousel-image{
  152. width: 100px !important;
  153. height: 150px !important;
  154. border-radius: 3px 0 0 3px;
  155. }.carousel-image.album{
  156. width: 150px !important;
  157. height: 150px !important;
  158. border-radius: 3px 0 0 3px;
  159. }.carousel-control.album {
  160. top: 5px !important;
  161. width: 4% !important;
  162. }.carousel-control {
  163. top: 5px !important;
  164. width: 4% !important;
  165. }.carousel-caption.album {
  166. position: absolute;
  167. right: 4%;
  168. top: 0px;
  169. left: 160px;
  170. z-index: 10;
  171. bottom: 0px;
  172. padding-top: 0px;
  173. color: #fff;
  174. text-align: left;
  175. }.carousel-caption {
  176. position: absolute;
  177. right: 4%;
  178. top: 0px;
  179. left: 110px;
  180. z-index: 10;
  181. bottom: 0px;
  182. padding-top: 0px;
  183. color: #fff;
  184. text-align: left;
  185. padding-bottom: 2px !important;
  186. overflow: hidden !important;
  187. } @media screen and (max-width: 576px) {
  188. .nzbtable {
  189. padding-left: 5px !important;
  190. padding-right: 2px !important;
  191. font-size: 10px !important;
  192. word-break: break-word !important;
  193. }
  194. .nzbtable-file-row {
  195. padding-left: 5px !important;
  196. padding-right: 2px !important;
  197. font-size: 10px !important;
  198. white-space: normal !important;
  199. word-break: break-all !important;
  200. width: 0% !important;
  201. }
  202. } .nzbtable-file-row {
  203. white-space: normal !important;
  204. word-break: break-all !important;
  205. width: 0% !important;
  206. }.nzbtable-row {
  207. white-space: normal !important;
  208. width: 0% !important;
  209. font-size: 12px; !important;
  210. }<?php if(CUSTOMCSS == "true") :
  211. $template_file = "custom.css";
  212. $file_handle = fopen($template_file, "rb");
  213. echo fread($file_handle, filesize($template_file));
  214. fclose($file_handle);
  215. echo "\n";
  216. endif; ?>
  217. </style>
  218. </head>
  219. <body class="scroller-body" style="padding: 0px;">
  220. <div class="main-wrapper" style="position: initial;">
  221. <div id="content" class="container-fluid">
  222. <!-- <button id="numBnt">Numerical</button> -->
  223. <br/>
  224. <?php if (qualifyUser(HOMEPAGENOTICEAUTH) && HOMEPAGENOTICETITLE && HOMEPAGENOTICETYPE && HOMEPAGENOTICEMESSAGE) { ?>
  225. <div class="row">
  226. <div class="col-lg-12">
  227. <div class="content-box big-box box-shadow panel-box panel-<?php echo HOMEPAGENOTICETYPE; ?>">
  228. <div class="content-title i-block">
  229. <h4 class="zero-m"><strong><?php echo HOMEPAGENOTICETITLE; ?></strong></h4>
  230. <div class="content-tools i-block pull-right">
  231. <a class="close-btn">
  232. <i class="fa fa-times"></i>
  233. </a>
  234. </div>
  235. </div>
  236. <p><?php echo HOMEPAGENOTICEMESSAGE; ?></p>
  237. </div>
  238. </div>
  239. </div>
  240. <?php } ?>
  241. <?php if (qualifyUser(HOMEPAGECUSTOMHTML1AUTH) && HOMEPAGECUSTOMHTML1) { echo "<div>" . HOMEPAGECUSTOMHTML1 . "</div>"; } ?>
  242. <?php if(SPEEDTEST == "true"){ ?>
  243. <style type="text/css">
  244. .flash {
  245. animation: flash 0.6s linear infinite;
  246. }
  247. @keyframes flash {
  248. 0% { opacity: 0.6; }
  249. 50% { opacity: 1; }
  250. }
  251. </style>
  252. <script type="text/javascript">
  253. var w = null
  254. function runTest() {
  255. document.getElementById('startBtn').style.display = 'none'
  256. document.getElementById('testArea').style.display = ''
  257. document.getElementById('abortBtn').style.display = ''
  258. w = new Worker('bower_components/speed/speedtest_worker.min.js')
  259. var interval = setInterval(function () { w.postMessage('status') }, 100)
  260. w.onmessage = function (event) {
  261. var data = event.data.split(';')
  262. var status = Number(data[0])
  263. var dl = document.getElementById('download')
  264. var ul = document.getElementById('upload')
  265. var ping = document.getElementById('ping')
  266. var jitter = document.getElementById('jitter')
  267. dl.className = status === 1 ? 'w-name flash' : 'w-name'
  268. ping.className = status === 2 ? 'w-name flash' : 'w-name'
  269. jitter.className = ul.className = status === 3 ? 'w-name flash' : 'w-name'
  270. if (status >= 4) {
  271. clearInterval(interval)
  272. document.getElementById('abortBtn').style.display = 'none'
  273. document.getElementById('startBtn').style.display = ''
  274. w = null
  275. }
  276. if (status === 5) {
  277. document.getElementById('testArea').style.display = 'none'
  278. }
  279. dl.textContent = data[1] + " Mbit/s";
  280. $("#downloadpercent").attr("style", "width: " + data[1] + "%;");
  281. $("#uploadpercent").attr("style", "width: " + data[2] + "%;");
  282. $("#pingpercent").attr("style", "width: " + data[3] + "%;");
  283. $("#jitterpercent").attr("style", "width: " + data[5] + "%;");
  284. ul.textContent = data[2] + " Mbit/s";
  285. ping.textContent = data[3] + " ms";
  286. jitter.textContent = data[5] + " ms";
  287. }
  288. w.postMessage('start')
  289. }
  290. function abortTest() {
  291. if (w) w.postMessage('abort')
  292. }
  293. </script>
  294. <div class="row" id="testArea" style="display:none">
  295. <div class="test col-sm-3 col-lg-3">
  296. <div class="content-box ultra-widget green-bg" data-counter="">
  297. <div id="downloadpercent" class="progress-bar progress-bar-striped active w-used" style=""></div>
  298. <div class="w-content">
  299. <div class="w-icon right pull-right"><i class="mdi mdi-cloud-download"></i></div>
  300. <div class="w-descr left pull-left text-center">
  301. <span class="testName text-uppercase w-name">Download</span>
  302. <br>
  303. <span class="w-name counter" id="download" ></span>
  304. </div>
  305. </div>
  306. </div>
  307. </div>
  308. <div class="test col-sm-3 col-lg-3">
  309. <div class="content-box ultra-widget red-bg" data-counter="">
  310. <div id="uploadpercent" class="progress-bar progress-bar-striped active w-used" style=""></div>
  311. <div class="w-content">
  312. <div class="w-icon right pull-right"><i class="mdi mdi-cloud-upload"></i></div>
  313. <div class="w-descr left pull-left text-center">
  314. <span class="testName text-uppercase w-name">Upload</span>
  315. <br>
  316. <span class="w-name counter" id="upload" ></span>
  317. </div>
  318. </div>
  319. </div>
  320. </div>
  321. <div class="test col-sm-3 col-lg-3">
  322. <div class="content-box ultra-widget yellow-bg" data-counter="">
  323. <div id="pingpercent" class="progress-bar progress-bar-striped active w-used" style=""></div>
  324. <div class="w-content">
  325. <div class="w-icon right pull-right"><i class="mdi mdi-timer"></i></div>
  326. <div class="w-descr left pull-left text-center">
  327. <span class="testName text-uppercase w-name">Latency</span>
  328. <br>
  329. <span class="w-name counter" id="ping" ></span>
  330. </div>
  331. </div>
  332. </div>
  333. </div>
  334. <div class="test col-sm-3 col-lg-3">
  335. <div class="content-box ultra-widget blue-bg" data-counter="">
  336. <div id="jitterpercent" class="progress-bar progress-bar-striped active w-used" style=""></div>
  337. <div class="w-content">
  338. <div class="w-icon right pull-right"><i class="mdi mdi-pulse"></i></div>
  339. <div class="w-descr left pull-left text-center">
  340. <span class="testName text-uppercase w-name">Jitter</span>
  341. <br>
  342. <span class="w-name counter" id="jitter" ></span>
  343. </div>
  344. </div>
  345. </div>
  346. </div>
  347. <br/>
  348. </div>
  349. <div id="abortBtn" class="row" style="display: none" onclick="javascript:abortTest()">
  350. <div class="col-lg-12">
  351. <div class="content-box red-bg" style="cursor: pointer;">
  352. <h1 style="margin: 10px" class="text-uppercase text-center">Abort Speed Test</h1>
  353. <div class="clearfix"></div>
  354. </div>
  355. </div>
  356. </div>
  357. <div id="startBtn" class="row" onclick="javascript:runTest()">
  358. <div class="col-lg-12">
  359. <div class="content-box green-bg" style="cursor: pointer;">
  360. <h1 style="margin: 10px" class="text-uppercase text-center">Run Speed Test</h1>
  361. <div class="clearfix"></div>
  362. </div>
  363. </div>
  364. </div>
  365. <?php } ?>
  366. <?php if((NZBGETURL != "" && qualifyUser(NZBGETHOMEAUTH)) || (SABNZBDURL != "" && qualifyUser(SABNZBDHOMEAUTH))) { ?>
  367. <div id="downloadClientRow" class="row">
  368. <sort>2</sort>
  369. <div class="col-xs-12 col-md-12">
  370. <div class="content-box">
  371. <div class="tabbable panel with-nav-tabs panel-default">
  372. <div class="panel-heading">
  373. <div class="content-tools i-block pull-right">
  374. <a id="getDownloader" class="repeat-btn">
  375. <i class="fa fa-repeat"></i>
  376. </a>
  377. <a class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
  378. <i class="fa fa-chevron-down"></i>
  379. </a>
  380. <!-- Lets Move This To Homepage Settings
  381. <ul id="downloaderSeconds" class="dropdown-menu" style="top: 32px !important">
  382. <li data-value="5000"><a>Refresh every 5 seconds</a></li>
  383. <li data-value="10000"><a>Refresh every 10 seconds</a></li>
  384. <li data-value="30000"><a>Refresh every 30 seconds</a></li>
  385. <li data-value="60000"><a>Refresh every 60 seconds</a></li>
  386. </ul>
  387. -->
  388. </div>
  389. <h3 class="pull-left"><?php if(NZBGETURL != ""){ echo "NZBGet "; } if(SABNZBDURL != ""){ echo "SABnzbd "; } ?></h3>
  390. <ul class="nav nav-tabs pull-right">
  391. <li class="active"><a href="#downloadQueue" data-toggle="tab" aria-expanded="true"><?php echo $language->translate("QUEUE");?></a></li>
  392. <li class=""><a href="#downloadHistory" data-toggle="tab" aria-expanded="false"><?php echo $language->translate("HISTORY");?></a></li>
  393. </ul>
  394. <div class="clearfix"></div>
  395. </div>
  396. <div class="panel-body">
  397. <div class="tab-content">
  398. <div class="tab-pane fade active in" id="downloadQueue">
  399. <div class="table-responsive" style="max-height: 300px">
  400. <table class="table table-striped progress-widget zero-m" style="max-height: 300px">
  401. <thead>
  402. <tr>
  403. <th class="col-xs-7 nzbtable-file-row"><?php echo $language->translate("FILE");?></th>
  404. <th class="col-xs-2 nzbtable"><?php echo $language->translate("STATUS");?></th>
  405. <th class="col-xs-1 nzbtable"><?php echo $language->translate("CATEGORY");?></th>
  406. <th class="col-xs-2 nzbtable"><?php echo $language->translate("PROGRESS");?></th>
  407. </tr>
  408. </thead>
  409. <tbody class="dl-queue sabnzbd"></tbody>
  410. <tbody class="dl-queue nzbget"></tbody>
  411. </table>
  412. </div>
  413. </div>
  414. <div class="tab-pane fade" id="downloadHistory">
  415. <div class="table-responsive" style="max-height: 300px">
  416. <table class="table table-striped progress-widget zero-m" style="max-height: 300px">
  417. <thead>
  418. <tr>
  419. <th class="col-xs-7 nzbtable-file-row"><?php echo $language->translate("FILE");?></th>
  420. <th class="col-xs-2 nzbtable"><?php echo $language->translate("STATUS");?></th>
  421. <th class="col-xs-1 nzbtable"><?php echo $language->translate("CATEGORY");?></th>
  422. <th class="col-xs-2 nzbtable"><?php echo $language->translate("PROGRESS");?></th>
  423. </tr>
  424. </thead>
  425. <tbody class="dl-history sabnzbd"></tbody>
  426. <tbody class="dl-history nzbget"></tbody>
  427. </table>
  428. </div>
  429. </div>
  430. </div>
  431. </div>
  432. </div>
  433. </div>
  434. </div>
  435. </div>
  436. <?php } ?>
  437. <?php if (qualifyUser(PLEXHOMEAUTH) && PLEXTOKEN) { ?>
  438. <div id="plexRowNowPlaying" class="row">
  439. <?php if(PLEXPLAYINGNOW == "true"){ echo getPlexStreams(12, PLEXSHOWNAMES); } ?>
  440. </div>
  441. <div id="plexRow" class="row">
  442. <div class="col-lg-12">
  443. <sort>3</sort>
  444. <?php
  445. if(PLEXRECENTMOVIE || PLEXRECENTTV || PLEXRECENTMUSIC){
  446. $plexArray = array("movie" => PLEXRECENTMOVIE, "season" => PLEXRECENTTV, "album" => PLEXRECENTMUSIC);
  447. echo getPlexRecent($plexArray);
  448. }
  449. ?>
  450. </div>
  451. </div>
  452. <?php } ?>
  453. <?php if (qualifyUser(EMBYHOMEAUTH) && EMBYTOKEN) { ?>
  454. <div id="embyRow" class="row">
  455. <sort>3</sort>
  456. <?php
  457. $embySize = (EMBYRECENTMOVIE == "true") + (EMBYRECENTTV == "true") + (EMBYRECENTMUSIC == "true") + (EMBYPLAYINGNOW == "true");
  458. if(EMBYRECENTMOVIE == "true"){ echo getEmbyRecent("movie", 12/$embySize); }
  459. if(EMBYRECENTTV == "true"){ echo getEmbyRecent("season", 12/$embySize); }
  460. if(EMBYRECENTMUSIC == "true"){ echo getEmbyRecent("album", 12/$embySize); }
  461. if(EMBYPLAYINGNOW == "true"){ echo getEmbyStreams(12/$embySize); }
  462. ?>
  463. </div>
  464. <?php } ?>
  465. <?php if ((SONARRURL != "" && qualifyUser(SONARRHOMEAUTH)) || (RADARRURL != "" && qualifyUser(RADARRHOMEAUTH)) || (HEADPHONESURL != "" && qualifyUser(HEADPHONESHOMEAUTH)) || (SICKRAGEURL != "" && qualifyUser(SICKRAGEHOMEAUTH))) { ?>
  466. <div id="calendarLegendRow" class="row" style="padding: 0 0 10px 0;">
  467. <sort>1</sort>
  468. <div class="col-lg-12 content-form form-inline">
  469. <div class="form-group">
  470. <select class="form-control" id="imagetype_selector" style="width: auto !important; display: inline-block">
  471. <option value="all">View All</option>
  472. <?php if(RADARRURL != ""){ echo '<option value="film">Movies</option>'; }?>
  473. <?php if(SONARRURL != "" || SICKRAGEURL != ""){ echo '<option value="tv">TV Shows</option>'; }?>
  474. <?php if(HEADPHONESURL != ""){ echo '<option value="music">Music</option>'; }?>
  475. </select>
  476. <span class="label label-primary well-sm">Available</span>
  477. <span class="label label-danger well-sm">Unavailable</span>
  478. <span class="label indigo-bg well-sm">Unreleased</span>
  479. <span class="label light-blue-bg well-sm">Premier</span>
  480. </div>
  481. </div>
  482. </div>
  483. <div id="calendarRow" class="row">
  484. <sort>1</sort>
  485. <div class="col-lg-12">
  486. <div id="calendar" class="fc-calendar box-shadow fc fc-ltr fc-unthemed"></div>
  487. </div>
  488. </div>
  489. <?php } ?>
  490. </div>
  491. </div>
  492. <script>
  493. $('.close-btn').click(function(e){
  494. var closedBox = $(this).closest('div.content-box').remove();
  495. e.preventDefault();
  496. });
  497. function localStorageSupport() {
  498. return (('localStorage' in window) && window['localStorage'] !== null)
  499. }
  500. $( document ).ready(function() {
  501. $('.repeat-btn').click(function(){
  502. var refreshBox = $(this).closest('div.content-box');
  503. $("<div class='refresh-preloader'><div class='la-timer la-dark'><div></div></div></div>").appendTo(refreshBox).fadeIn(300);
  504. setTimeout(function(){
  505. var refreshPreloader = refreshBox.find('.refresh-preloader'),
  506. deletedRefreshBox = refreshPreloader.fadeOut(300, function(){
  507. refreshPreloader.remove();
  508. });
  509. },1500);
  510. });
  511. $(document).on('click', '.w-refresh', function(){
  512. //Your code
  513. var id = $(this).attr("link");
  514. $("div[np^='"+id+"']").toggle();
  515. console.log(id);
  516. //console.log(moreInfo);
  517. });
  518. var windowSize = window.innerWidth;
  519. var nowPlaying = "";
  520. if(windowSize >= 1000){
  521. nowPlaying = 8;
  522. }else if(windowSize <= 400){
  523. nowPlaying = 2;
  524. }else if(windowSize <= 600){
  525. nowPlaying = 3;
  526. }else if(windowSize <= 849){
  527. nowPlaying = 6;
  528. }else if(windowSize <= 999){
  529. nowPlaying = 7;
  530. }
  531. console.log(windowSize+" - " +nowPlaying);
  532. $('.recentItems').slick({
  533. slidesToShow: 13,
  534. slidesToScroll: 13,
  535. infinite: true,
  536. lazyLoad: 'ondemand',
  537. prevArrow: '<a class="zero-m pull-left prev-mail btn btn-default waves waves-button btn-sm waves-effect waves-float"><i class="fa fa-angle-left"></i></a>',
  538. nextArrow: '<a class="pull-left next-mail btn btn-default waves waves-button btn-sm waves-effect waves-float"><i class="fa fa-angle-right"></i></a>',
  539. appendArrows: '.recentHeader',
  540. responsive: [
  541. {
  542. breakpoint: 1750,
  543. settings: {
  544. slidesToShow: 12,
  545. slidesToScroll: 12,
  546. }
  547. },
  548. {
  549. breakpoint: 1600,
  550. settings: {
  551. slidesToShow: 11,
  552. slidesToScroll: 11,
  553. }
  554. },
  555. {
  556. breakpoint: 1450,
  557. settings: {
  558. slidesToShow: 10,
  559. slidesToScroll: 10,
  560. }
  561. },
  562. {
  563. breakpoint: 1300,
  564. settings: {
  565. slidesToShow: 9,
  566. slidesToScroll: 9,
  567. }
  568. },
  569. {
  570. breakpoint: 1150,
  571. settings: {
  572. slidesToShow: 8,
  573. slidesToScroll: 8,
  574. }
  575. },
  576. {
  577. breakpoint: 1000,
  578. settings: {
  579. slidesToShow: 7,
  580. slidesToScroll: 7,
  581. }
  582. },
  583. {
  584. breakpoint: 850,
  585. settings: {
  586. slidesToShow: 6,
  587. slidesToScroll: 6,
  588. }
  589. },
  590. {
  591. breakpoint: 700,
  592. settings: {
  593. slidesToShow: 5,
  594. slidesToScroll: 5,
  595. }
  596. },
  597. {
  598. breakpoint: 675,
  599. settings: {
  600. slidesToShow: 4,
  601. slidesToScroll: 4
  602. }
  603. },
  604. {
  605. breakpoint: 480,
  606. settings: {
  607. slidesToShow: 3,
  608. slidesToScroll: 3
  609. }
  610. }
  611. // You can unslick at a given breakpoint now by adding:
  612. // settings: "unslick"
  613. // instead of a settings object
  614. ]
  615. });
  616. var movieFiltered = false;
  617. var seasonFiltered = false;
  618. var albumFiltered = false;
  619. $('.js-filter-movie').on('click', function(){
  620. if (movieFiltered === false) {
  621. $('.recentItems').slick('slickFilter','.item-season, .item-album');
  622. $(this).text('Show Movies');
  623. movieFiltered = true;
  624. } else {
  625. $('.recentItems').slick('slickUnfilter');
  626. $(this).text('Hide Movies');
  627. movieFiltered = false;
  628. }
  629. });
  630. $('.js-filter-season').on('click', function(){
  631. if (seasonFiltered === false) {
  632. $('.recentItems').slick('slickFilter','.item-movie, .item-album');
  633. $(this).text('Show TV');
  634. seasonFiltered = true;
  635. } else {
  636. $('.recentItems').slick('slickUnfilter');
  637. $(this).text('Hide TV');
  638. seasonFiltered = false;
  639. }
  640. });
  641. $('.js-filter-album').on('click', function(){
  642. if (albumFiltered === false) {
  643. $('.recentItems').slick('slickFilter','.item-season, .item-movie');
  644. $(this).text('Show Music');
  645. albumFiltered = true;
  646. } else {
  647. $('.recentItems').slick('slickUnfilter');
  648. $(this).text('Hide Music');
  649. albumFiltered = false;
  650. }
  651. });
  652. /*$('.w-refresh').click(function(e){
  653. var moreInfo = $(this).closest('div.overlay').addClass("show");
  654. console.log(moreInfo);
  655. moreInfo.show();
  656. e.preventDefault();
  657. });*/
  658. $("body").niceScroll({
  659. railpadding: {top:0,right:0,left:0,bottom:0},
  660. scrollspeed: 30,
  661. mousescrollstep: 60
  662. });
  663. $(".table-responsive").niceScroll({
  664. railpadding: {top:0,right:0,left:0,bottom:0},
  665. scrollspeed: 30,
  666. mousescrollstep: 60
  667. });
  668. /*$(".carousel-caption").niceScroll({
  669. railpadding: {top:0,right:0,left:0,bottom:0},
  670. scrollspeed: 30,
  671. mousescrollstep: 60
  672. });*/
  673. // check if browser support HTML5 local storage
  674. <?php if((NZBGETURL != "" && qualifyUser(NZBGETHOMEAUTH)) || (SABNZBDURL != "" && qualifyUser(SABNZBDHOMEAUTH))){ ?>
  675. var queueRefresh = 30000;
  676. var historyRefresh = 120000; // This really doesn't need to happen that often
  677. var queueLoad = function() {
  678. <?php if(SABNZBDURL != "") { echo '$("tbody.dl-queue.sabnzbd").load("ajax.php?a=sabnzbd-update&list=queue");'; } ?>
  679. <?php if(NZBGETURL != "") { echo '$("tbody.dl-queue.nzbget").load("ajax.php?a=nzbget-update&list=listgroups");'; } ?>
  680. };
  681. var historyLoad = function() {
  682. <?php if(SABNZBDURL != "") { echo '$("tbody.dl-history.sabnzbd").load("ajax.php?a=sabnzbd-update&list=history");'; } ?>
  683. <?php if(NZBGETURL != "") { echo '$("tbody.dl-history.nzbget").load("ajax.php?a=nzbget-update&list=history");'; } ?>
  684. };
  685. // Initial Loads
  686. queueLoad();
  687. historyLoad();
  688. // Interval Loads
  689. var queueInterval = setInterval(queueLoad, queueRefresh);
  690. var historyInterval = setInterval(historyLoad, historyRefresh);
  691. // Manual Load
  692. $("#getDownloader").click(function() {
  693. queueLoad();
  694. historyLoad();
  695. });
  696. <?php } ?>
  697. });
  698. </script>
  699. <?php if ((SONARRURL != "" && qualifyUser(SONARRHOMEAUTH)) || (RADARRURL != "" && qualifyUser(RADARRHOMEAUTH)) || (HEADPHONESURL != "" && qualifyUser(HEADPHONESHOMEAUTH)) || (SICKRAGEURL != "" && qualifyUser(SICKRAGEHOMEAUTH))) { ?>
  700. <script>
  701. $(function () {
  702. var date = new Date();
  703. var d = date.getDate();
  704. var m = date.getMonth();
  705. var y = date.getFullYear();
  706. $('#calendar').fullCalendar({
  707. eventLimit: false,
  708. firstDay: <?php echo CALENDARSTART;?>,
  709. height: "auto",
  710. defaultView: '<?php echo CALENDARVIEW;?>',
  711. header: {
  712. left: 'prev,next,',
  713. center: 'title',
  714. right: 'today, month, basicDay,basicWeek,'
  715. },
  716. views: {
  717. basicDay: { buttonText: '<?php echo $language->translate("DAY");?>', eventLimit: false },
  718. basicWeek: { buttonText: '<?php echo $language->translate("WEEK");?>', eventLimit: false },
  719. month: { buttonText: '<?php echo $language->translate("MONTH");?>', eventLimit: false },
  720. today: { buttonText: '<?php echo $language->translate("TODAY");?>' },
  721. },
  722. events: [
  723. <?php if (SICKRAGEURL != "" && qualifyUser(SICKRAGEHOMEAUTH)){ echo getSickrageCalendarWanted($sickrage->future()); echo getSickrageCalendarHistory($sickrage->history("100","downloaded")); } ?>
  724. <?php if (SONARRURL != "" && qualifyUser(SONARRHOMEAUTH)){ echo getSonarrCalendar($sonarr->getCalendar($startDate, $endDate)); } ?>
  725. <?php if (RADARRURL != "" && qualifyUser(RADARRHOMEAUTH)){ echo getRadarrCalendar($radarr->getCalendar($startDate, $endDate)); } ?>
  726. <?php if (HEADPHONESURL != "" && qualifyUser(HEADPHONESHOMEAUTH)){ echo getHeadphonesCalendar(HEADPHONESURL, HEADPHONESKEY, "getHistory"); echo getHeadphonesCalendar(HEADPHONESURL, HEADPHONESKEY, "getWanted"); } ?>
  727. ],
  728. eventRender: function eventRender( event, element, view ) {
  729. return ['all', event.imagetype].indexOf($('#imagetype_selector').val()) >= 0
  730. },
  731. editable: false,
  732. droppable: false,
  733. timeFormat: '<?php echo CALTIMEFORMAT; ?>',
  734. });
  735. });
  736. $('#imagetype_selector').on('change',function(){
  737. $('#calendar').fullCalendar('rerenderEvents');
  738. })
  739. var $divs = $("div.row");
  740. $('#numBnt').on('click', function () {
  741. var numericallyOrderedDivs = $divs.sort(function (a, b) {
  742. return $(a).find("sort").text() > $(b).find("sort").text();
  743. });
  744. $("#content").html(numericallyOrderedDivs);
  745. });
  746. </script>
  747. <?php } ?>
  748. </body>
  749. </html>