settings.php 77 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854
  1. <?php
  2. date_default_timezone_set('America/Los_Angeles');
  3. $data = false;
  4. ini_set("display_errors", 1);
  5. ini_set("error_reporting", E_ALL | E_STRICT);
  6. function registration_callback($username, $email, $userdir)
  7. {
  8. global $data;
  9. $data = array($username, $email, $userdir);
  10. }
  11. require_once("user.php");
  12. $USER = new User("registration_callback");
  13. if(!$USER->authenticated) :
  14. die("Why you trying to access this without logging in?!?!");
  15. elseif($USER->authenticated && $USER->role !== "admin") :
  16. die("C'mon man! I give you access to my stuff and now you're trying to get in the back door?");
  17. endif;
  18. function printArray($arrayName){
  19. foreach ( $arrayName as $item ) :
  20. echo $item . "<br/>";
  21. endforeach;
  22. }
  23. $dbfile = DATABASE_LOCATION . constant('User::DATABASE_NAME') . ".db";
  24. $userdirpath = USER_HOME;
  25. $userdirpath = substr_replace($userdirpath, "", -1);
  26. $file_db = new PDO("sqlite:" . $dbfile);
  27. $file_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  28. $getUsers = $file_db->query('SELECT * FROM users');
  29. $gotUsers = $file_db->query('SELECT * FROM users');
  30. $dbTab = $file_db->query('SELECT name FROM sqlite_master WHERE type="table" AND name="tabs"');
  31. $dbOptions = $file_db->query('SELECT name FROM sqlite_master WHERE type="table" AND name="options"');
  32. $tabSetup = "Yes";
  33. $hasOptions = "No";
  34. foreach($dbTab as $row) :
  35. if (in_array("tabs", $row)) :
  36. $tabSetup = "No";
  37. endif;
  38. endforeach;
  39. foreach($dbOptions as $row) :
  40. if (in_array("options", $row)) :
  41. $hasOptions = "Yes";
  42. endif;
  43. endforeach;
  44. if($hasOptions == "No") :
  45. $title = "Organizr";
  46. $topbar = "#eb6363";
  47. $topbartext = "#FFFFFF";
  48. $bottombar = "#eb6363";
  49. $sidebar = "#000000";
  50. $hoverbg = "#eb6363";
  51. $activetabBG = "#eb6363";
  52. $activetabicon = "#FFFFFF";
  53. $activetabtext = "#FFFFFF";
  54. $inactiveicon = "#FFFFFF";
  55. $inactivetext = "#FFFFFF";
  56. endif;
  57. if($tabSetup == "No") :
  58. $result = $file_db->query('SELECT * FROM tabs');
  59. endif;
  60. if($hasOptions == "Yes") :
  61. $resulto = $file_db->query('SELECT * FROM options');
  62. endif;
  63. if($hasOptions == "Yes") :
  64. foreach($resulto as $row) :
  65. $title = $row['title'];
  66. $topbartext = $row['topbartext'];
  67. $topbar = $row['topbar'];
  68. $bottombar = $row['bottombar'];
  69. $sidebar = $row['sidebar'];
  70. $hoverbg = $row['hoverbg'];
  71. $activetabBG = $row['activetabBG'];
  72. $activetabicon = $row['activetabicon'];
  73. $activetabtext = $row['activetabtext'];
  74. $inactiveicon = $row['inactiveicon'];
  75. $inactivetext = $row['inactivetext'];
  76. endforeach;
  77. endif;
  78. $action = "";
  79. if(isset($_POST['action'])) :
  80. $action = $_POST['action'];
  81. endif;
  82. if($action == "deleteDB") :
  83. unset($_COOKIE['Organizr']);
  84. setcookie('Organizr', '', time() - 3600, '/');
  85. unset($_COOKIE['OrganizrU']);
  86. setcookie('OrganizrU', '', time() - 3600, '/');
  87. $file_db = null;
  88. unlink($dbfile);
  89. foreach(glob($userdirpath . '/*') as $file) :
  90. if(is_dir($file)) :
  91. rmdir($file);
  92. elseif(!is_dir($file)) :
  93. unlink($file);
  94. endif;
  95. endforeach;
  96. rmdir($userdirpath);
  97. echo "<script>window.parent.location.reload();</script>";
  98. endif;
  99. if($action == "deleteLog") :
  100. unlink(FAIL_LOG);
  101. echo "<script type='text/javascript'>window.location.replace('settings.php');</script>";
  102. endif;
  103. if($action == "upgrade") :
  104. function downloadFile($url, $path){
  105. $folderPath = "upgrade/";
  106. if(!mkdir($folderPath)) : echo "can't make dir"; endif;
  107. $newfname = $folderPath . $path;
  108. $file = fopen ($url, 'rb');
  109. if ($file) {
  110. $newf = fopen ($newfname, 'wb');
  111. if ($newf) {
  112. while(!feof($file)) {
  113. fwrite($newf, fread($file, 1024 * 8), 1024 * 8);
  114. }
  115. }
  116. }
  117. if ($file) {
  118. fclose($file);
  119. }
  120. if ($newf) {
  121. fclose($newf);
  122. }
  123. }
  124. function unzipFile($zipFile){
  125. $zip = new ZipArchive;
  126. $extractPath = "upgrade/";
  127. if($zip->open($extractPath . $zipFile) != "true"){
  128. echo "Error :- Unable to open the Zip File";
  129. }
  130. /* Extract Zip File */
  131. $zip->extractTo($extractPath);
  132. $zip->close();
  133. }
  134. // Function to remove folders and files
  135. function rrmdir($dir) {
  136. if (is_dir($dir)) {
  137. $files = scandir($dir);
  138. foreach ($files as $file)
  139. if ($file != "." && $file != "..") rrmdir("$dir/$file");
  140. rmdir($dir);
  141. }
  142. else if (file_exists($dir)) unlink($dir);
  143. }
  144. // Function to Copy folders and files
  145. function rcopy($src, $dst) {
  146. if (is_dir ( $src )) {
  147. if (!file_exists($dst)) : mkdir ( $dst ); endif;
  148. $files = scandir ( $src );
  149. foreach ( $files as $file )
  150. if ($file != "." && $file != "..")
  151. rcopy ( "$src/$file", "$dst/$file" );
  152. } else if (file_exists ( $src ))
  153. copy ( $src, $dst );
  154. }
  155. $url = "https://github.com/causefx/Organizr/archive/master.zip";
  156. $file = "upgrade.zip";
  157. $source = __DIR__ . "/upgrade/Organizr-master/";
  158. $cleanup = __DIR__ . "/upgrade/";
  159. $destination = __DIR__ . "/";
  160. downloadFile($url, $file);
  161. unzipFile($file);
  162. rcopy($source, $destination);
  163. rrmdir($cleanup);
  164. echo "<script>window.parent.location.reload(true);</script>";
  165. endif;
  166. if(!isset($_POST['op'])) :
  167. $_POST['op'] = "";
  168. endif;
  169. if($action == "addTabz") :
  170. if($tabSetup == "No") :
  171. $file_db->exec("DELETE FROM tabs");
  172. endif;
  173. if($tabSetup == "Yes") :
  174. $file_db->exec("CREATE TABLE tabs (name TEXT UNIQUE, url TEXT, defaultz TEXT, active TEXT, user TEXT, guest TEXT, icon TEXT, iconurl TEXT, window TEXT)");
  175. endif;
  176. $addTabName = array();
  177. $addTabUrl = array();
  178. $addTabIcon = array();
  179. $addTabIconUrl = array();
  180. $addTabDefault = array();
  181. $addTabActive = array();
  182. $addTabUser = array();
  183. $addTabGuest = array();
  184. $addTabWindow = array();
  185. $buildArray = array();
  186. foreach ($_POST as $key => $value) :
  187. $trueKey = explode('-', $key);
  188. if ($value == "on") :
  189. $value = "true";
  190. endif;
  191. if($trueKey[0] == "name"):
  192. array_push($addTabName, $value);
  193. endif;
  194. if($trueKey[0] == "url"):
  195. array_push($addTabUrl, $value);
  196. endif;
  197. if($trueKey[0] == "icon"):
  198. array_push($addTabIcon, $value);
  199. endif;
  200. if($trueKey[0] == "iconurl"):
  201. array_push($addTabIconUrl, $value);
  202. endif;
  203. if($trueKey[0] == "default"):
  204. array_push($addTabDefault, $value);
  205. endif;
  206. if($trueKey[0] == "active"):
  207. array_push($addTabActive, $value);
  208. endif;
  209. if($trueKey[0] == "user"):
  210. array_push($addTabUser, $value);
  211. endif;
  212. if($trueKey[0] == "guest"):
  213. array_push($addTabGuest, $value);
  214. endif;
  215. if($trueKey[0] == "window"):
  216. array_push($addTabWindow, $value);
  217. endif;
  218. endforeach;
  219. $tabArray = 0;
  220. if(count($addTabName) > 0) :
  221. foreach(range(1,count($addTabName)) as $index) :
  222. if(!isset($addTabDefault[$tabArray])) :
  223. $tabDefault = "false";
  224. else :
  225. $tabDefault = $addTabDefault[$tabArray];
  226. endif;
  227. $buildArray[] = array('name' => $addTabName[$tabArray],
  228. 'url' => $addTabUrl[$tabArray],
  229. 'defaultz' => $tabDefault,
  230. 'active' => $addTabActive[$tabArray],
  231. 'user' => $addTabUser[$tabArray],
  232. 'guest' => $addTabGuest[$tabArray],
  233. 'icon' => $addTabIcon[$tabArray],
  234. 'window' => $addTabWindow[$tabArray],
  235. 'iconurl' => $addTabIconUrl[$tabArray]);
  236. $tabArray++;
  237. endforeach;
  238. endif;
  239. $insert = "INSERT INTO tabs (name, url, defaultz, active, user, guest, icon, iconurl, window)
  240. VALUES (:name, :url, :defaultz, :active, :user, :guest, :icon, :iconurl, :window)";
  241. $stmt = $file_db->prepare($insert);
  242. $stmt->bindParam(':name', $name);
  243. $stmt->bindParam(':url', $url);
  244. $stmt->bindParam(':defaultz', $defaultz);
  245. $stmt->bindParam(':active', $active);
  246. $stmt->bindParam(':user', $user);
  247. $stmt->bindParam(':guest', $guest);
  248. $stmt->bindParam(':icon', $icon);
  249. $stmt->bindParam(':iconurl', $iconurl);
  250. $stmt->bindParam(':window', $window);
  251. foreach ($buildArray as $t) :
  252. $name = $t['name'];
  253. $url = $t['url'];
  254. $defaultz = $t['defaultz'];
  255. $active = $t['active'];
  256. $user = $t['user'];
  257. $guest = $t['guest'];
  258. $icon = $t['icon'];
  259. $iconurl = $t['iconurl'];
  260. $window = $t['window'];
  261. $stmt->execute();
  262. endforeach;
  263. endif;
  264. if($action == "addOptionz") :
  265. if($hasOptions == "Yes") :
  266. $file_db->exec("DELETE FROM options");
  267. endif;
  268. if($hasOptions == "No") :
  269. $file_db->exec("CREATE TABLE options (title TEXT UNIQUE, topbar TEXT, bottombar TEXT, sidebar TEXT, hoverbg TEXT, topbartext TEXT, activetabBG TEXT, activetabicon TEXT, activetabtext TEXT, inactiveicon TEXT, inactivetext TEXT)");
  270. endif;
  271. $title = $_POST['title'];
  272. $topbartext = $_POST['topbartext'];
  273. $topbar = $_POST['topbar'];
  274. $bottombar = $_POST['bottombar'];
  275. $sidebar = $_POST['sidebar'];
  276. $hoverbg = $_POST['hoverbg'];
  277. $activetabBG = $_POST['activetabBG'];
  278. $activetabicon = $_POST['activetabicon'];
  279. $activetabtext = $_POST['activetabtext'];
  280. $inactiveicon = $_POST['inactiveicon'];
  281. $inactivetext = $_POST['inactivetext'];
  282. $insert = "INSERT INTO options (title, topbartext, topbar, bottombar, sidebar, hoverbg, activetabBG, activetabicon, activetabtext, inactiveicon, inactivetext)
  283. VALUES (:title, :topbartext, :topbar, :bottombar, :sidebar, :hoverbg, :activetabBG, :activetabicon , :activetabtext , :inactiveicon, :inactivetext)";
  284. $stmt = $file_db->prepare($insert);
  285. $stmt->bindParam(':title', $title);
  286. $stmt->bindParam(':topbartext', $topbartext);
  287. $stmt->bindParam(':topbar', $topbar);
  288. $stmt->bindParam(':bottombar', $bottombar);
  289. $stmt->bindParam(':sidebar', $sidebar);
  290. $stmt->bindParam(':hoverbg', $hoverbg);
  291. $stmt->bindParam(':activetabBG', $activetabBG);
  292. $stmt->bindParam(':activetabicon', $activetabicon);
  293. $stmt->bindParam(':activetabtext', $activetabtext);
  294. $stmt->bindParam(':inactiveicon', $inactiveicon);
  295. $stmt->bindParam(':inactivetext', $inactivetext);
  296. $stmt->execute();
  297. endif;
  298. ?>
  299. <!DOCTYPE html>
  300. <html lang="en" class="no-js">
  301. <head>
  302. <meta charset="UTF-8">
  303. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  304. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  305. <meta name="msapplication-tap-highlight" content="no" />
  306. <title>Settings</title>
  307. <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
  308. <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
  309. <link rel="stylesheet" href="bower_components/mdi/css/materialdesignicons.min.css">
  310. <link rel="stylesheet" href="bower_components/metisMenu/dist/metisMenu.min.css">
  311. <link rel="stylesheet" href="bower_components/Waves/dist/waves.min.css">
  312. <link rel="stylesheet" href="bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css">
  313. <link rel="stylesheet" href="js/selects/cs-select.css">
  314. <link rel="stylesheet" href="js/selects/cs-skin-elastic.css">
  315. <link href="bower_components/iconpick/dist/css/fontawesome-iconpicker.min.css" rel="stylesheet">
  316. <link rel="stylesheet" href="bower_components/google-material-color/dist/palette.css">
  317. <link rel="stylesheet" href="bower_components/sweetalert/dist/sweetalert.css">
  318. <link rel="stylesheet" href="bower_components/smoke/dist/css/smoke.min.css">
  319. <script src="js/menu/modernizr.custom.js"></script>
  320. <script type="text/javascript" src="js/sha1.js"></script>
  321. <script type="text/javascript" src="js/user.js"></script>
  322. <link rel="stylesheet" href="bower_components/animate.css/animate.min.css">
  323. <link rel="stylesheet" href="css/style.css">
  324. <link href="css/jquery.filer.css" rel="stylesheet">
  325. <link href="css/jquery.filer-dragdropbox-theme.css" rel="stylesheet">
  326. <!--[if lt IE 9]>
  327. <script src="bower_components/html5shiv/dist/html5shiv.min.js"></script>
  328. <script src="bower_components/respondJs/dest/respond.min.js"></script>
  329. <![endif]-->
  330. </head>
  331. <body style="padding: 0; background: #273238;">
  332. <style>
  333. input.form-control.material.icp-auto.iconpicker-element.iconpicker-input {
  334. display: none;
  335. }input.form-control.iconpicker-search {
  336. color: black;
  337. }
  338. </style>
  339. <div id="main-wrapper" class="main-wrapper">
  340. <!--Content-->
  341. <div id="content" style="margin:0 20px; overflow:hidden">
  342. <br/>
  343. <div id="versionCheck"></div>
  344. <div class="row">
  345. <div class="col-lg-12">
  346. <div class="tabbable tabs-with-bg" id="eighth-tabs">
  347. <ul class="nav nav-tabs" style="background: #C0C0C0">
  348. <li class="active">
  349. <a href="#tab-tabs" data-toggle="tab"><i class="fa fa-list gray"></i></a>
  350. </li>
  351. <li>
  352. <a href="#customedit" data-toggle="tab"><i class="fa fa-paint-brush green"></i></a>
  353. </li>
  354. <li>
  355. <a href="#useredit" data-toggle="tab"><i class="fa fa-user red"></i></a>
  356. </li>
  357. <li>
  358. <a href="#loginlog" data-toggle="tab"><i class="fa fa-file-text-o indigo"></i></a>
  359. </li>
  360. <li>
  361. <a href="#about" data-toggle="tab"><i class="fa fa-info red-orange"></i></a>
  362. </li>
  363. </ul>
  364. <div class="tab-content" style="overflow: auto">
  365. <div class="content-box box-shadow big-box todo-list tab-pane big-box fade in active" id="tab-tabs">
  366. <div class="sort-todo">
  367. <a class="total-tabs">Tabs <span class="badge gray-bg"></span></a>
  368. <button id="iconHide" type="button" class="btn waves btn-labeled btn-success btn-sm text-uppercase waves-effect waves-float">
  369. <span class="btn-label"><i class="fa fa-upload"></i></span>Upload Icons
  370. </button>
  371. <button id="iconAll" type="button" class="btn waves btn-labeled btn-success btn-sm text-uppercase waves-effect waves-float">
  372. <span class="btn-label"><i class="fa fa-picture-o"></i></span>View Icons
  373. </button>
  374. <?php if($action) : ?>
  375. <button id="apply" class="btn waves btn-labeled btn-success btn-sm pull-right text-uppercase waves-effect waves-float" type="submit">
  376. <span class="btn-label"><i class="fa fa-check"></i></span>Apply Changes
  377. </button>
  378. <?php endif; ?>
  379. </div>
  380. <input type="file" name="files[]" id="uploadIcons" multiple="multiple">
  381. <div id="viewAllIcons" style="display: none;">
  382. <h4><strong>All Icons</strong> [Click icon to copy path to clipboard]</h4>
  383. <div class="row">
  384. <textarea id="copyTarget" class="hideCopy" style="left: -9999px; top: 0; position: absolute;"></textarea>
  385. <?php
  386. $dirname = "images/";
  387. $images = scandir($dirname);
  388. $ignore = Array(".", "..", "favicon/", "favicon", "._.DS_Store", ".DS_Store");
  389. foreach($images as $curimg){
  390. if(!in_array($curimg, $ignore)) { ?>
  391. <div class="col-xs-2" style="width: 125px; height: 125px; padding-right: 0px;">
  392. <a class="thumbnail">
  393. <img style="width: 100px; height: 100px;" src="<?=$dirname.$curimg;?>" alt="thumbnail" class="allIcons">
  394. </a>
  395. </div>
  396. <?php } } ?>
  397. </div>
  398. </div>
  399. <form id="add_tab" method="post">
  400. <div class="form-group add-tab">
  401. <div class="input-group">
  402. <div class="input-group-addon">
  403. <i class="fa fa-pencil gray"></i>
  404. </div>
  405. <input type="text" class="form-control name-of-todo" placeholder="Type In New Tab Name And Hit Enter" style="border-top-left-radius: 0;
  406. border-bottom-left-radius: 0;">
  407. </div>
  408. </div>
  409. </form>
  410. <div class="panel">
  411. <form id="submitTabs" method="post">
  412. <div class="panel-body todo">
  413. <input type="hidden" name="action" value="addTabz" />
  414. <ul class="list-group ui-sortable">
  415. <?php if($tabSetup == "No") : $tabNum = 1;
  416. foreach($result as $row) :
  417. if($row['defaultz'] == "true") : $default = "checked"; else : $default = ""; endif;
  418. if($row['active'] == "true") : $activez = "checked"; else : $activez = ""; endif;
  419. if($row['guest'] == "true") : $guestz = "checked"; else : $guestz = ""; endif;
  420. if($row['user'] == "true") : $userz = "checked"; else : $userz = ""; endif;
  421. if($row['window'] == "true") : $windowz = "checked"; else : $windowz = ""; endif;
  422. ?>
  423. <li id="item-<?=$tabNum;?>" class="list-group-item gray-bg" style="position: relative; left: 0px; top: 0px;">
  424. <tab class="content-form form-inline">
  425. <div class="form-group">
  426. <div class="action-btns" style="width:calc(100%)">
  427. <a class="" style="margin-left: 0px"><span class="fa fa-hand-paper-o"></span></a>
  428. </div>
  429. </div>
  430. <div class="form-group">
  431. <input style="width: 100%;" type="text" class="form-control material input-sm" id="name-<?=$tabNum;?>" name="name-<?=$tabNum;?>" placeholder="New Tab Name" value="<?=$row['name'];?>">
  432. </div>
  433. <div class="form-group">
  434. <input style="width: 100%;" type="text" class="form-control material input-sm" id="url-<?=$tabNum;?>" name="url-<?=$tabNum;?>" placeholder="Tab URL" value="<?=$row['url']?>">
  435. </div>
  436. <div style="margin-right: 5px;" class="form-group">
  437. <div class="input-group">
  438. <input data-placement="bottomRight" class="form-control material icp-auto" name="icon-<?=$tabNum;?>" value="<?=$row['icon'];?>" type="text" />
  439. <span class="input-group-addon"></span>
  440. </div>
  441. - OR -
  442. </div>
  443. <div class="form-group">
  444. <input style="width: 100%;" type="text" class="form-control material input-sm" id="iconurl-<?=$tabNum;?>" name="iconurl-<?=$tabNum;?>" placeholder="Icon URL" value="<?=$row['iconurl']?>">
  445. </div>
  446. <div class="form-group">
  447. <div class="radio radio-danger">
  448. <input type="radio" id="default[<?=$tabNum;?>]" value="true" name="default" <?=$default;?>>
  449. <label for="default[<?=$tabNum;?>]">Default</label>
  450. </div>
  451. </div>
  452. <div class="form-group">
  453. <div class="">
  454. <input id="" class="switcher switcher-success" value="false" name="active-<?=$tabNum;?>" type="hidden">
  455. <input id="active[<?=$tabNum;?>]" class="switcher switcher-success" name="active-<?=$tabNum;?>" type="checkbox" <?=$activez;?>>
  456. <label for="active[<?=$tabNum;?>]"></label>
  457. </div>
  458. Active
  459. </div>
  460. <div class="form-group">
  461. <div class="">
  462. <input id="" class="switcher switcher-primary" value="false" name="user-<?=$tabNum;?>" type="hidden">
  463. <input id="user[<?=$tabNum;?>]" class="switcher switcher-primary" name="user-<?=$tabNum;?>" type="checkbox" <?=$userz;?>>
  464. <label for="user[<?=$tabNum;?>]"></label>
  465. </div>
  466. User
  467. </div>
  468. <div class="form-group">
  469. <div class="">
  470. <input id="" class="switcher switcher-primary" value="false" name="guest-<?=$tabNum;?>" type="hidden">
  471. <input id="guest[<?=$tabNum;?>]" class="switcher switcher-warning" name="guest-<?=$tabNum;?>" type="checkbox" <?=$guestz;?>>
  472. <label for="guest[<?=$tabNum;?>]"></label>
  473. </div>
  474. Guest
  475. </div>
  476. <div class="form-group">
  477. <div class="">
  478. <input id="" class="switcher switcher-primary" value="false" name="window-<?=$tabNum;?>" type="hidden">
  479. <input id="window[<?=$tabNum;?>]" class="switcher switcher-warning" name="window-<?=$tabNum;?>" type="checkbox" <?=$windowz;?>>
  480. <label for="window[<?=$tabNum;?>]"></label>
  481. </div>
  482. No iFrame
  483. </div>
  484. <div class="pull-right action-btns" style="padding-top: 8px;">
  485. <a class="trash"><span class="fa fa-close"></span></a>
  486. </div>
  487. </tab>
  488. </li>
  489. <?php $tabNum ++; endforeach; endif;?>
  490. </ul>
  491. </div>
  492. <div class="checkbox clear-todo pull-left"></div>
  493. <button class="btn waves btn-labeled btn-success btn-sm pull-right text-uppercase waves-effect waves-float" type="submit">
  494. <span class="btn-label"><i class="fa fa-floppy-o"></i></span>Save Tabs
  495. </button>
  496. </form>
  497. </div>
  498. </div>
  499. <div class="tab-pane big-box fade in" id="useredit">
  500. <div class="row">
  501. <div class="col-lg-12">
  502. <div class="gray-bg content-box big-box box-shadow">
  503. <form class="content-form form-inline" name="new user registration" id="registration" action="" method="POST">
  504. <input type="hidden" name="op" value="register"/>
  505. <input type="hidden" name="sha1" value=""/>
  506. <div class="form-group">
  507. <input type="text" class="form-control gray" name="username" placeholder="Username" autocorrect="off" autocapitalize="off" value="">
  508. </div>
  509. <div class="form-group">
  510. <input type="email" class="form-control gray" name="email" placeholder="E-mail">
  511. </div>
  512. <div class="form-group">
  513. <input type="password" class="form-control gray" name="password1" placeholder="Password">
  514. </div>
  515. <div class="form-group">
  516. <input type="password" class="form-control gray" name="password2" placeholder="Retype Password">
  517. </div>
  518. <button type="submit" onclick="User.processRegistration()" class="btn btn-primary btn-icon waves waves-circle waves-effect waves-float"><i class="fa fa-user-plus"></i></button>
  519. </form>
  520. </div>
  521. </div>
  522. </div>
  523. <div class="content-box big-box">
  524. <form class="content-form form-inline" name="unregister" id="unregister" action="" method="POST">
  525. <input type="hidden" name="op" value="unregister"/>
  526. <p id="inputUsername"></p>
  527. <div class="table-responsive">
  528. <table class="table table-striped">
  529. <thead>
  530. <tr>
  531. <th>#</th>
  532. <th>Username</th>
  533. <th>E-Mail</th>
  534. <th>Login Status</th>
  535. <th>Last Seen</th>
  536. <th>User Group</th>
  537. <th>User Actions</th>
  538. </tr>
  539. </thead>
  540. <tbody>
  541. <?php $countUsers = 1;
  542. foreach($gotUsers as $row) :
  543. if($row['role'] == "admin") :
  544. $userColor = "red";
  545. $disableAction = "disabled=\"disabled\"";
  546. else :
  547. $userColor = "blue";
  548. $disableAction = "";
  549. endif;
  550. if($row['active'] == "true") :
  551. $userActive = "Logged In";
  552. $userActiveColor = "primary";
  553. else :
  554. $userActive = "Logged Out";
  555. $userActiveColor = "danger";
  556. endif;
  557. $userpic = md5( strtolower( trim( $row['email'] ) ) );
  558. if(!empty($row["last"])) :
  559. $lastActive = date("Y-m-d H:i", intval($row["last"]));
  560. else :
  561. $lastActive = "";
  562. endif;
  563. ?>
  564. <tr id="<?=$row['username'];?>">
  565. <th scope="row"><?=$countUsers;?></th>
  566. <td><i class="userpic"><img src="https://www.gravatar.com/avatar/<?=$userpic;?>?s=25&d=mm" class="img-circle"></i> &nbsp; <?=$row['username'];?></td>
  567. <td><?=$row['email'];?></td>
  568. <td><span class="label label-<?=$userActiveColor;?>"><?=$userActive;?></span></td>
  569. <td><?=$lastActive;?></td>
  570. <td><span class="text-uppercase <?=$userColor;?>"><?=$row['role'];?></span></td>
  571. <td id="<?=$row['username'];?>">
  572. <button <?=$disableAction;?> class="btn waves btn-labeled btn-danger btn btn-sm text-uppercase waves-effect waves-float deleteUser">
  573. <span class="btn-label"><i class="fa fa-user-times"></i></span>Delete
  574. </button>
  575. </td>
  576. </tr>
  577. <?php $countUsers++; endforeach; ?>
  578. </tbody>
  579. </table>
  580. </div>
  581. </form>
  582. </div>
  583. </div>
  584. <div class="tab-pane big-box fade in" id="loginlog">
  585. <div class="content-box big-box">
  586. <div class="table-responsive">
  587. <?php if(file_exists(FAIL_LOG)) : ?>
  588. <form id="deletelog" method="post">
  589. <input type="hidden" name="action" value="deleteLog" />
  590. <button class="btn waves btn-labeled btn-danger btn-sm pull-right text-uppercase waves-effect waves-float" type="submit">
  591. <span class="btn-label"><i class="fa fa-trash"></i></span>Purge Log
  592. </button>
  593. </form>
  594. <table class="table table-striped">
  595. <thead>
  596. <tr>
  597. <th>Date</th>
  598. <th>Username</th>
  599. <th>IP Address</th>
  600. <th>Type</th>
  601. </tr>
  602. </thead>
  603. <tbody>
  604. <?php
  605. $getFailLog = str_replace("\r\ndate", "date", file_get_contents(FAIL_LOG));
  606. $gotFailLog = json_decode($getFailLog, true);
  607. function getColor($colorTest){
  608. if($colorTest == "bad_auth") :
  609. $gotColorTest = "danger";
  610. elseif($colorTest == "good_auth") :
  611. $gotColorTest = "primary";
  612. endif;
  613. echo $gotColorTest;
  614. }
  615. foreach (array_reverse($gotFailLog["auth"]) as $key => $val) : ?>
  616. <tr>
  617. <td><?=$val["date"];?></td>
  618. <td><?=$val["username"];?></td>
  619. <td><?=$val["ip"];?></td>
  620. <td><span class="label label-<?php getColor($val["auth_type"]);?>"><?=$val["auth_type"];?></span></td>
  621. </tr>
  622. <?php endforeach; ?>
  623. </tbody>
  624. </table>
  625. <?php endif;
  626. if(!file_exists(FAIL_LOG)) :
  627. echo "Nothing in log..................";
  628. endif;
  629. ?>
  630. </div>
  631. </div>
  632. </div>
  633. <div class="tab-pane big-box fade in" id="about">
  634. <h4><strong>About Organizr</strong></h4>
  635. <p id="version"></p>
  636. <p id="submitFeedback">
  637. <a href='https://github.com/causefx/Organizr/issues/new' target='_blank' type='button' class='btn waves btn-labeled btn-success btn text-uppercase waves-effect waves-float'><span class='btn-label'><i class='fa fa-github-alt'></i></span>Submit Issue or Request</a>
  638. <a href='https://github.com/causefx/Organizr' target='_blank' type='button' class='btn waves btn-labeled btn-primary btn text-uppercase waves-effect waves-float'><span class='btn-label'><i class='fa fa-github'></i></span>View On Github</a>
  639. <a href='https://riot.im/app/#/room/#iCauseFX:matrix.org' target='_blank' type='button' class='btn waves btn-labeled btn-dark btn text-uppercase waves-effect waves-float'><span class='btn-label'><i class='fa fa-comments-o'></i></span>Chat With Us</a>
  640. </p>
  641. <p id="whatsnew"></p>
  642. <p id="downloadnow"></p>
  643. <div class="panel panel-danger">
  644. <div class="panel-heading">
  645. <h3 class="panel-title">Delete Database</h3>
  646. </div>
  647. <div class="panel-body">
  648. <div class="col-lg-4">
  649. <p>Only do this if an upgrade requires it. This will delete your database so there is no going back and you will need to set everything back up, including user accouts.</p>
  650. <form id="deletedb" method="post">
  651. <input type="hidden" name="action" value="deleteDB" />
  652. <button class="btn waves btn-labeled btn-danger pull-right text-uppercase waves-effect waves-float" type="submit">
  653. <span class="btn-label"><i class="fa fa-trash"></i></span>Delete Databse
  654. </button>
  655. </form>
  656. </div>
  657. </div>
  658. </div>
  659. </div>
  660. <div class="tab-pane small-box fade in" id="customedit">
  661. <form id="add_optionz" method="post">
  662. <input type="hidden" name="action" value="addOptionz" />
  663. <div class="btn-group">
  664. <button type="button" class="btn btn-dark dropdown-toggle btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  665. Choose Theme <span class="caret"></span>
  666. </button>
  667. <ul class="dropdown-menu gray-bg">
  668. <li id="plexTheme" style="background: #000000; border-radius: 5px; margin: 5px;"><a style="color: #E49F0C !important;" href="#">Plex</a></li>
  669. <li id="embyTheme" style="background: #212121; border-radius: 5px; margin: 5px;"><a style="color: #52B54B !important;" href="#">Emby</a></li>
  670. <li id="bookTheme" style="background: #3B5998; border-radius: 5px; margin: 5px;"><a style="color: #FFFFFF !important;" href="#">Facebook</a></li>
  671. <li id="spaTheme" style="background: #66BBAE; border-radius: 5px; margin: 5px;"><a style="color: #5B391E !important;" href="#">Spa</a></li>
  672. <li id="darklyTheme" style="background: #375A7F; border-radius: 5px; margin: 5px;"><a style="color: #FFFFFF !important;" href="#">Darkly</a></li>
  673. <li id="slateTheme" style="background: #272B30; border-radius: 5px; margin: 5px;"><a style="color: #C8C8C8 !important;" href="#">Slate</a></li>
  674. <li role="separator" class="divider"></li>
  675. <li id="defaultTheme" style="background: #eb6363; border-radius: 5px; margin: 5px;"><a style="color: #FFFFFF !important;" href="#">Default</a></li>
  676. </ul>
  677. </div>
  678. <button class="btn waves btn-labeled btn-success btn-sm pull-right text-uppercase waves-effect waves-float" type="submit">
  679. <span class="btn-label"><i class="fa fa-floppy-o"></i></span>Save Options
  680. </button>
  681. <div class="content-box box-shadow big-box grids">
  682. <div class="row show-grids">
  683. <h4><strong>Title</strong></h4>
  684. <div class="col-md-2 gray-bg">
  685. <center>Title</center>
  686. <input name="title" class="form-control gray" value="<?=$title;?>" placeholder="Organizr">
  687. </div>
  688. <div class="col-md-2 gray-bg">
  689. <center>Title Text</center>
  690. <input name="topbartext" id="topbartext" class="form-control jscolor {hash:true}" value="<?=$topbartext;?>">
  691. </div>
  692. </div>
  693. <div class="row show-grids">
  694. <h4><strong>Navigation Bars</strong></h4>
  695. <div class="col-md-2 gray-bg">
  696. <center>Top Bar</center>
  697. <input name="topbar" id="topbar" class="form-control jscolor {hash:true}" value="<?=$topbar;?>">
  698. </div>
  699. <div class="col-md-2 gray-bg">
  700. <center>Bottom Bar</center>
  701. <input name="bottombar" id="bottombar" class="form-control jscolor {hash:true}" value="<?=$bottombar;?>">
  702. </div>
  703. <div class="clearfix visible-xs-block"></div>
  704. <div class="col-md-2 gray-bg">
  705. <center>Side Bar</center>
  706. <input name="sidebar" id="sidebar" class="form-control jscolor {hash:true}" value="<?=$sidebar;?>">
  707. </div>
  708. <div class="col-md-2 gray-bg">
  709. <center>Hover BG</center>
  710. <input name="hoverbg" id="hoverbg" class="form-control jscolor {hash:true}" value="<?=$hoverbg;?>">
  711. </div>
  712. </div>
  713. <div class="row show-grids">
  714. <h4><strong>Active Tab</strong></h4>
  715. <div class="col-md-2 gray-bg">
  716. <center>Active Tab BG</center>
  717. <input name="activetabBG" id="activetabBG" class="form-control jscolor {hash:true}" value=<?=$activetabBG;?>"">
  718. </div>
  719. <div class="col-md-2 gray-bg">
  720. <center>Active Tab Icon</center>
  721. <input name="activetabicon" id="activetabicon" class="form-control jscolor {hash:true}" value="<?=$activetabicon;?>">
  722. </div>
  723. <div class="col-md-2 gray-bg">
  724. <center>Active Tab Text</center>
  725. <input name="activetabtext" id="activetabtext" class="form-control jscolor {hash:true}" value="<?=$activetabtext;?>">
  726. </div>
  727. </div>
  728. <div class="row show-grids">
  729. <h4><strong>Inactive Tab</strong></h4>
  730. <div class="col-md-2 gray-bg">
  731. <center>Inactive Icon</center>
  732. <input name="inactiveicon" id="inactiveicon" class="form-control jscolor {hash:true}" value="<?=$inactiveicon;?>">
  733. </div>
  734. <div class="col-md-2 gray-bg">
  735. <center>Inactive Text</center>
  736. <input name="inactivetext" id="inactivetext" class="form-control jscolor {hash:true}" value="<?=$inactivetext;?>">
  737. </div>
  738. </div>
  739. </div>
  740. </form>
  741. </div>
  742. </div>
  743. </div>
  744. </div>
  745. </div>
  746. </div>
  747. <!--End Content-->
  748. <!--Welcome notification-->
  749. <div id="welcome"></div>
  750. </div>
  751. <?php if(!$USER->authenticated) : ?>
  752. <?php endif;?>
  753. <?php if($USER->authenticated) : ?>
  754. <?php endif;?>
  755. <!--Scripts-->
  756. <script src="bower_components/jquery/dist/jquery.min.js"></script>
  757. <script src="bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  758. <script src="bower_components/metisMenu/dist/metisMenu.min.js"></script>
  759. <script src="bower_components/Waves/dist/waves.min.js"></script>
  760. <script src="bower_components/moment/min/moment.min.js"></script>
  761. <script src="bower_components/jquery.nicescroll/jquery.nicescroll.min.js"></script>
  762. <script src="bower_components/slimScroll/jquery.slimscroll.min.js"></script>
  763. <script src="bower_components/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.js"></script>
  764. <script src="bower_components/cta/dist/cta.min.js"></script>
  765. <!--Menu-->
  766. <script src="js/menu/classie.js"></script>
  767. <script src="bower_components/iconpick/dist/js/fontawesome-iconpicker.js"></script>
  768. <!--Selects-->
  769. <script src="js/selects/selectFx.js"></script>
  770. <script src="js/jscolor.js"></script>
  771. <script src="bower_components/sweetalert/dist/sweetalert.min.js"></script>
  772. <script src="bower_components/smoke/dist/js/smoke.min.js"></script>
  773. <!--Notification-->
  774. <script src="js/notifications/notificationFx.js"></script>
  775. <script src="js/jqueri_ui_custom/jquery-ui.min.js"></script>
  776. <script src="js/jquery.filer.min.js" type="text/javascript"></script>
  777. <script src="js/custom.js" type="text/javascript"></script>
  778. <?php if($_POST['op']) : ?>
  779. <script>
  780. $.smkAlert({
  781. text: '<?php echo printArray($USER->info_log); ?>',
  782. type: 'info'
  783. });
  784. <?php if(!empty($USER->error_log)) : ?>
  785. $.smkAlert({
  786. position: 'top-left',
  787. text: '<?php echo printArray($USER->error_log); ?>',
  788. type: 'warning'
  789. });
  790. <?php endif; ?>
  791. </script>
  792. <?php endif; ?>
  793. <?php if($action == "addTabz") : ?>
  794. <script>
  795. if(!window.location.hash) {
  796. window.location = window.location + '#loaded';
  797. window.location.reload();
  798. }else{
  799. swal("Tabs Saved!", "Apply Changes To Reload The Page!", "success");
  800. }
  801. </script>
  802. <?php endif; ?>
  803. <?php if($action == "addOptionz") : ?>
  804. <script>
  805. swal("Colors Saved!", "Apply Changes To Reload The Page!", "success");
  806. </script>
  807. <?php endif; ?>
  808. <script>
  809. (function($) {
  810. function startTrigger(e,data) {
  811. var $elem = $(this);
  812. $elem.data('mouseheld_timeout', setTimeout(function() {
  813. $elem.trigger('mouseheld');
  814. }, e.data));
  815. }
  816. function stopTrigger() {
  817. var $elem = $(this);
  818. clearTimeout($elem.data('mouseheld_timeout'));
  819. }
  820. var mouseheld = $.event.special.mouseheld = {
  821. setup: function(data) {
  822. var $this = $(this);
  823. $this.bind('mousedown', +data || mouseheld.time, startTrigger);
  824. $this.bind('mouseleave mouseup', stopTrigger);
  825. },
  826. teardown: function() {
  827. var $this = $(this);
  828. $this.unbind('mousedown', startTrigger);
  829. $this.unbind('mouseleave mouseup', stopTrigger);
  830. },
  831. time: 200 // default to 750ms
  832. };
  833. })(jQuery);
  834. $(function () {
  835. //$(".todo ul").sortable();
  836. $(".todo ul").sortable({
  837. 'containment': 'parent',
  838. 'opacity': 0.9
  839. });
  840. $("#add_tab").on('submit', function (e) {
  841. e.preventDefault();
  842. var $toDo = $(this).find('.name-of-todo');
  843. toDo_name = $toDo.val();
  844. if (toDo_name.length >= 3) {
  845. var newid = $('.list-group-item').length + 1;
  846. $(".todo ul").append(
  847. '<li id="item-' + newid + '" class="list-group-item gray-bg" style="position: relative; left: 0px; top: 0px;"><tab class="content-form form-inline"> <div class="form-group"><div class="action-btns" style="width:calc(100%)"><a class="" style="margin-left: 0px"><span class="fa fa-hand-paper-o"></span></a></div></div> <div class="form-group"><input style="width: 100%;" type="text" class="form-control material input-sm" name="name-' + newid + '" id="name[' + newid + ']" placeholder="New Tab Name" value="' + toDo_name + '"></div> <div class="form-group"><input style="width: 100%;" type="text" class="form-control material input-sm" name="url-' + newid + '" id="url[' + newid + ']" placeholder="Tab URL"></div> <div style="margin-right: 5px;" class="form-group"><div class="input-group"><input style="width: 100%;" name="icon-' + newid + '" data-placement="bottomRight" class="form-control material icp-auto" value="fa-diamond" type="text" /><span class="input-group-addon"></span></div> - OR -</div> <div class="form-group"><input style="width: 100%;" type="text" class="form-control material input-sm" id="iconurl-' + newid + '" name="iconurl-' + newid + '" placeholder="Icon URL" value=""></div> <div class="form-group"> <div class="radio radio-danger"> <input type="radio" name="default" id="default[' + newid + ']" name="default"> <label for="default[' + newid + ']">Default</label></div></div> <div class="form-group"><div class=""><input id="" class="switcher switcher-success" value="false" name="active-' + newid + '" type="hidden"><input name="active-' + newid + '" id="active[' + newid + ']" class="switcher switcher-success" type="checkbox" checked=""><label for="active[' + newid + ']"></label></div> Active</div> <div class="form-group"><div class=""><input id="" class="switcher switcher-primary" value="false" name="user-' + newid + '" type="hidden"><input id="user[' + newid + ']" name="user-' + newid + '" class="switcher switcher-primary" type="checkbox" checked=""><label for="user[' + newid + ']"></label></div> User</div> <div class="form-group"><div class=""><input id="" class="switcher switcher-primary" value="false" name="guest-' + newid + '" type="hidden"><input name="guest-' + newid + '" id="guest[' + newid + ']" class="switcher switcher-warning" type="checkbox" checked=""><label for="guest[' + newid + ']"></label></div> Guest</div> <div class="form-group"><div class=""><input id="" class="switcher switcher-primary" value="false" name="window-' + newid + '" type="hidden"><input name="window-' + newid + '" id="window[' + newid + ']" class="switcher switcher-warning" type="checkbox"><label for="window[' + newid + ']"></label></div> No iFrame</div><div class="pull-right action-btns" style="padding-top: 8px;"><a class="trash"><span class="fa fa-close"></span></a></div></tab></li>'
  848. );
  849. $('.icp-auto').iconpicker({placement: 'left', hideOnSelect: false, collision: true});
  850. var eventObject = {
  851. title: $.trim($("#" + newid).text()),
  852. className: $("#" + newid).attr("data-bg"),
  853. stick: true
  854. };
  855. $("#" + newid).data('eventObject', eventObject);
  856. $toDo.val('').focus();
  857. } else {
  858. $toDo.focus();
  859. }
  860. });
  861. count();
  862. $(".list-group-item").addClass("list-item");
  863. //Remove one completed item
  864. $(document).on('click', '.trash', function (e) {
  865. var listItemRemove = $(this).closest(".list-group-item");
  866. var animation = "zoomOutRight";
  867. var container = $(this).closest(".list-group-item");
  868. //container.attr('class', 'list-group-item gray-bg animation-container');
  869. container.addClass('animated ' + animation);
  870. setTimeout(function() {
  871. var clearedCompItem = listItemRemove.remove();
  872. console.log("removed");
  873. e.preventDefault();
  874. count();
  875. }, 800);
  876. });
  877. //Count items
  878. function count() {
  879. var active = $('.list-group-item').length;
  880. $('.total-tabs span').text(active);
  881. };
  882. $("#submitTabs").on('submit', function (e) {
  883. console.log("submitted");
  884. $("div.radio").each(function(i) {
  885. $(this).find('input').attr('name', 'default-' + i);
  886. console.log(i);
  887. });
  888. $('form input[type="radio"]').not(':checked').each(function() {
  889. $(this).prop('checked', true);
  890. $(this).prop('value', "false");
  891. console.log("found unchecked");
  892. });
  893. });
  894. $('#apply').on('click touchstart', function(){
  895. window.parent.location.reload();
  896. });
  897. });
  898. </script>
  899. <script>
  900. $("#iconHide").click(function(){
  901. $( "div[class^='jFiler jFiler-theme-dragdropbox']" ).toggle();
  902. });
  903. $("#iconAll").click(function(){
  904. $( "div[id^='viewAllIcons']" ).toggle();
  905. });
  906. $(".deleteUser").click(function(){
  907. var parent_id = $(this).parent().attr('id');
  908. editUsername = $('#unregister').find('#inputUsername');
  909. $(editUsername).html('<input type="hidden" name="username"value="' + parent_id + '" />');
  910. });
  911. $('.icp-auto').iconpicker({placement: 'left', hideOnSelect: false, collision: true});
  912. $("li[class^='list-group-item']").bind('mouseheld', function(e) {
  913. $(this).find("span[class^='fa fa-hand-paper-o']").attr("class", "fa fa-hand-grab-o");
  914. $(this).mouseup(function() {
  915. $(this).find("span[class^='fa fa-hand-grab-o']").attr("class", "fa fa-hand-paper-o");
  916. });
  917. });
  918. function copyToClipboard(elem) {
  919. // create hidden text element, if it doesn't already exist
  920. var targetId = "_hiddenCopyText_";
  921. var isInput = elem.tagName === "INPUT" || elem.tagName === "TEXTAREA";
  922. var origSelectionStart, origSelectionEnd;
  923. if (isInput) {
  924. // can just use the original source element for the selection and copy
  925. target = elem;
  926. origSelectionStart = elem.selectionStart;
  927. origSelectionEnd = elem.selectionEnd;
  928. } else {
  929. // must use a temporary form element for the selection and copy
  930. target = document.getElementById(targetId);
  931. if (!target) {
  932. var target = document.createElement("textarea");
  933. target.style.position = "absolute";
  934. target.style.left = "-9999px";
  935. target.style.top = "0";
  936. target.id = targetId;
  937. document.body.appendChild(target);
  938. }
  939. target.textContent = elem.textContent;
  940. }
  941. // select the content
  942. var currentFocus = document.activeElement;
  943. target.focus();
  944. target.setSelectionRange(0, target.value.length);
  945. // copy the selection
  946. var succeed;
  947. try {
  948. succeed = document.execCommand("copy");
  949. } catch(e) {
  950. succeed = false;
  951. }
  952. // restore original focus
  953. if (currentFocus && typeof currentFocus.focus === "function") {
  954. //currentFocus.focus();
  955. }
  956. if (isInput) {
  957. // restore prior selection
  958. elem.setSelectionRange(origSelectionStart, origSelectionEnd);
  959. } else {
  960. // clear temporary content
  961. target.textContent = "";
  962. }
  963. return succeed;
  964. }
  965. $("img[class^='allIcons']").click(function(){
  966. $("textarea[id^='copyTarget']").val($(this).attr("src"));
  967. copyToClipboard(document.getElementById("copyTarget"));
  968. $.smkAlert({
  969. text: 'Icon Path Copied To Clipboard',
  970. type: 'success'
  971. });
  972. $( "div[id^='viewAllIcons']" ).toggle();
  973. });
  974. </script>
  975. <script>
  976. //Custom Themes
  977. function changeColor(elementName, elementColor) {
  978. var definedElement = document.getElementById(elementName);
  979. definedElement.value = elementColor;
  980. definedElement.style.backgroundColor = elementColor;
  981. }
  982. $('#plexTheme').on('click touchstart', function(){
  983. changeColor("topbartext", "#E49F0C");
  984. changeColor("topbar", "#000000");
  985. changeColor("bottombar", "#000000");
  986. changeColor("sidebar", "#121212");
  987. changeColor("hoverbg", "#FFFFFF");
  988. changeColor("activetabBG", "#E49F0C");
  989. changeColor("activetabicon", "#FFFFFF");
  990. changeColor("activetabtext", "#FFFFFF");
  991. changeColor("inactiveicon", "#949494");
  992. changeColor("inactivetext", "#B8B8B8");
  993. });
  994. $('#embyTheme').on('click touchstart', function(){
  995. changeColor("topbartext", "#52B54B");
  996. changeColor("topbar", "#212121");
  997. changeColor("bottombar", "#212121");
  998. changeColor("sidebar", "#121212");
  999. changeColor("hoverbg", "#FFFFFF");
  1000. changeColor("activetabBG", "#52B54B");
  1001. changeColor("activetabicon", "#FFFFFF");
  1002. changeColor("activetabtext", "#FFFFFF");
  1003. changeColor("inactiveicon", "#949494");
  1004. changeColor("inactivetext", "#B8B8B8");
  1005. });
  1006. $('#bookTheme').on('click touchstart', function(){
  1007. changeColor("topbartext", "#FFFFFF");
  1008. changeColor("topbar", "#3B5998");
  1009. changeColor("bottombar", "#3B5998");
  1010. changeColor("sidebar", "#8B9DC3");
  1011. changeColor("hoverbg", "#FFFFFF");
  1012. changeColor("activetabBG", "#3B5998");
  1013. changeColor("activetabicon", "#FFFFFF");
  1014. changeColor("activetabtext", "#FFFFFF");
  1015. changeColor("inactiveicon", "#DFE3EE");
  1016. changeColor("inactivetext", "#DFE3EE");
  1017. });
  1018. $('#spaTheme').on('click touchstart', function(){
  1019. changeColor("topbartext", "#5B391E");
  1020. changeColor("topbar", "#66BBAE");
  1021. changeColor("bottombar", "#66BBAE");
  1022. changeColor("sidebar", "#C3EEE7");
  1023. changeColor("hoverbg", "#66BBAE");
  1024. changeColor("activetabBG", "#C6C386");
  1025. changeColor("activetabicon", "#FFFFFF");
  1026. changeColor("activetabtext", "#FFFFFF");
  1027. changeColor("inactiveicon", "#5B391E");
  1028. changeColor("inactivetext", "#5B391E");
  1029. });
  1030. $('#darklyTheme').on('click touchstart', function(){
  1031. changeColor("topbartext", "#FFFFFF");
  1032. changeColor("topbar", "#375A7F");
  1033. changeColor("bottombar", "#375A7F");
  1034. changeColor("sidebar", "#222222");
  1035. changeColor("hoverbg", "#464545");
  1036. changeColor("activetabBG", "#FFFFFF");
  1037. changeColor("activetabicon", "#464545");
  1038. changeColor("activetabtext", "#464545");
  1039. changeColor("inactiveicon", "#0CE3AC");
  1040. changeColor("inactivetext", "#0CE3AC");
  1041. });
  1042. $('#slateTheme').on('click touchstart', function(){
  1043. changeColor("topbartext", "#C8C8C8");
  1044. changeColor("topbar", "#272B30");
  1045. changeColor("bottombar", "#272B30");
  1046. changeColor("sidebar", "#32383E");
  1047. changeColor("hoverbg", "#58C0DE");
  1048. changeColor("activetabBG", "#3E444C");
  1049. changeColor("activetabicon", "#C8C8C8");
  1050. changeColor("activetabtext", "#FFFFFF");
  1051. changeColor("inactiveicon", "#C8C8C8");
  1052. changeColor("inactivetext", "#C8C8C8");
  1053. });
  1054. $('#defaultTheme').on('click touchstart', function(){
  1055. changeColor("topbartext", "#FFFFFF");
  1056. changeColor("topbar", "#eb6363");
  1057. changeColor("bottombar", "#eb6363");
  1058. changeColor("sidebar", "#000000");
  1059. changeColor("hoverbg", "#eb6363");
  1060. changeColor("activetabBG", "#eb6363");
  1061. changeColor("activetabicon", "#FFFFFF");
  1062. changeColor("activetabtext", "#FFFFFF");
  1063. changeColor("inactiveicon", "#FFFFFF");
  1064. changeColor("inactivetext", "#FFFFFF");
  1065. });
  1066. </script>
  1067. <script>
  1068. $( document ).ready(function() {
  1069. $( "div[class^='jFiler jFiler-theme-dragdropbox']" ).hide();
  1070. $.ajax({
  1071. type: "GET",
  1072. url: "https://api.github.com/repos/causefx/Organizr/releases/latest",
  1073. dataType: "json",
  1074. success: function(github) {
  1075. var currentVersion = "0.994";
  1076. var githubVersion = github.tag_name;
  1077. var githubDescription = github.body;
  1078. var githubName = github.name;
  1079. infoTabVersion = $('#about').find('#version');
  1080. infoTabNew = $('#about').find('#whatsnew');
  1081. infoTabDownload = $('#about').find('#downloadnow');
  1082. if(currentVersion < githubVersion){
  1083. console.log("You Need To Upgrade");
  1084. $.smkAlert({
  1085. text: '<strong>New Version Available</strong> Click Info Tab',
  1086. type: 'warning',
  1087. permanent: true
  1088. });
  1089. $(infoTabNew).html("<br/><h4><strong>What's New in " + githubVersion + "</strong></h4><strong>Title: </strong>" + githubName + " <br/><strong>Changes: </strong>" + githubDescription);
  1090. $(infoTabDownload).html("<br/><form style=\"display:initial;\" id=\"deletedb\" method=\"post\"><input type=\"hidden\" name=\"action\" value=\"upgrade\" /><button class=\"btn waves btn-labeled btn-success text-uppercase waves-effect waves-float\" type=\"submit\"><span class=\"btn-label\"><i class=\"fa fa-refresh\"></i></span>Auto Upgrade</button></form> <a href='https://github.com/causefx/Organizr/archive/master.zip' target='_blank' type='button' class='btn waves btn-labeled btn-success text-uppercase waves-effect waves-float'><span class='btn-label'><i class='fa fa-download'></i></span>Organizr v." + githubVersion + "</a>");
  1091. $( "p[id^='upgrade']" ).toggle();
  1092. }else if(currentVersion === githubVersion){
  1093. console.log("You Are on Current Version");
  1094. $.smkAlert({
  1095. text: 'Software is <strong>Up-To-Date!</strong>',
  1096. type: 'success'
  1097. });
  1098. }else{
  1099. console.log("something went wrong");
  1100. $.smkAlert({
  1101. text: '<strong>WTF!? </strong>Can\'t check version.',
  1102. type: 'danger',
  1103. time: 10
  1104. });
  1105. }
  1106. $(infoTabVersion).html("<strong>Installed Version: </strong>" + currentVersion + " <strong>Current Version: </strong>" + githubVersion + " <strong>Database Location: </strong> <?php echo DATABASE_LOCATION;?>");
  1107. }
  1108. });
  1109. });
  1110. </script>
  1111. </body>
  1112. </html>