Quellcode durchsuchen

Rebuild Tabs Settings... Because Ajax? I dont need a reason for my dumb decisions

Cerothen vor 9 Jahren
Ursprung
Commit
57a209b0f9
7 geänderte Dateien mit 311 neuen und 304 gelöschten Zeilen
  1. 4 0
      ajax.php
  2. 20 1
      css/settings.css
  3. 165 7
      functions.php
  4. 4 4
      index.php
  5. 3 0
      js/ajax.js
  6. 4 1
      lang/en.ini
  7. 111 291
      settings.php

+ 4 - 0
ajax.php

@@ -112,6 +112,10 @@ switch ($_SERVER['REQUEST_METHOD']) {
 			case 'deleteLog':
 				sendNotification(unlink(FAIL_LOG));
 				break;
+			case 'submit-tabs':
+				$response['notify'] = sendNotification(updateTabs($_POST) , false, false);
+				//$response['parent']['reload'] = true;
+				break;
 			default:
 				sendNotification(false, 'Unsupported Action!');
 		}

+ 20 - 1
css/settings.css

@@ -16,4 +16,23 @@ input.invalid {
 
 input.invalid + p.help-text::after {
 	content: " - Does not match pattern!";
-}
+}
+
+
+div.form-content input:not([type=radio]) {
+	width: 100% !important;
+}
+
+tab > div.row {
+	padding: 0px 10px 0px 10px;
+}
+
+tab > div.row > div {
+	padding: 5px !important;
+}
+
+tab > div.row > div:first-child {
+	max-width: 42px;
+}
+
+

+ 165 - 7
functions.php

@@ -2,7 +2,7 @@
 
 // ===================================
 // Define Version
- define('INSTALLEDVERSION', '1.33');
+ define('INSTALLEDVERSION', '1.34');
 // ===================================
 
 // Debugging output functions
@@ -1013,8 +1013,18 @@ function upgradeCheck() {
 		// Update Version and Commit
 		$config['CONFIG_VERSION'] = '1.33';
 		$createConfigSuccess = createConfig($config);
+		unset($config);
+	}
+	
+	// Upgrade to 1.33
+	$config = loadConfig();
+	if (isset($config['database_Location']) && (!isset($config['CONFIG_VERSION']) || $config['CONFIG_VERSION'] < '1.34')) {
+		// Upgrade database to latest version
+		updateSQLiteDB($config['database_Location']);
 		
-		$effectiveVersion = $config['CONFIG_VERSION'];
+		// Update Version and Commit
+		$config['CONFIG_VERSION'] = '1.34';
+		$createConfigSuccess = createConfig($config);
 		unset($config);
 	}
 	
@@ -1272,7 +1282,7 @@ function buildField($params, $sizeSm = 12, $sizeMd = 12, $sizeLg = 12) {
 	
 	// Tags
 	$tags = array();
-	foreach(array('placeholder','style','disabled','readonly','pattern','min','max','required','onkeypress','onchange','onfocus','onleave','href') as $value) {
+	foreach(array('placeholder','style','disabled','readonly','pattern','min','max','required','onkeypress','onchange','onfocus','onleave','href','onclick') as $value) {
 		$tags[] = (isset($params[$value])?$value.'="'.$params[$value].'"':'');
 	}
 	
@@ -1306,14 +1316,19 @@ function buildField($params, $sizeSm = 12, $sizeMd = 12, $sizeLg = 12) {
 		case 'toggle':
 			$checked = ((is_bool($val) && $val) || trim($val) === 'true'?' checked':'');
 			$labelOut = '<label for="'.$id.'"></label>'.$label;
-			$field = '<input id="'.$id.'" name="'.$name.'" type="checkbox" class="switcher switcher-success'.$class.'" '.implode(' ',$tags).' value="'.$val.'"'.$checked.'>';
+			$field = '<input id="'.$id.'" name="'.$name.'" type="checkbox" class="switcher switcher-success'.$class.'" '.implode(' ',$tags).' data-value="'.$val.'"'.$checked.'>';
+			break;
+		case 'radio':
+			$labelOut = '';
+			$checked = ((is_bool($val) && $val) || ($val && trim($val) !== 'false')?' checked':'');
+			$bType = (isset($params['buttonType'])?$params['buttonType']:'success');
+			$field = '<div class="radio radio-'.$bType.'"><input id="'.$id.'" name="'.$name.'" type="radio" class="'.$class.'" '.implode(' ',$tags).' value="'.$val.'"'.$checked.'><label for="'.$id.'">'.$label.'</label></div>';
 			break;
 		case 'date':
 			$field = 'Unsupported, planned.';
 			break;
 		case 'hidden':
-			$labelOut = '';
-			$field = '<input id="'.$id.'" name="'.$name.'" type="hidden" class="'.$class.'" '.implode(' ',$tags).' value="'.$val.'">';
+			return '<input id="'.$id.'" name="'.$name.'" type="hidden" class="'.$class.'" '.implode(' ',$tags).' value="'.$val.'">';
 			break;
 		case 'header':
 			$labelOut = '';
@@ -1343,7 +1358,7 @@ function buildField($params, $sizeSm = 12, $sizeMd = 12, $sizeLg = 12) {
 			// Get HTML
 			$html = (isset($params['html'])?$params['html']:'Nothing Specified!');
 			// If LabelOut is in html dont print it twice
-			$labelOut = (strpos($html,'$labelOut')!==false?'':$labelOut);
+			$labelOut = (strpos($html,'$label')!==false?'':$labelOut);
 			// Replace variables in settings
 			$html = preg_replace_callback('/\$\w+\b/', function ($match) use ($settings) { return (isset($settings[$match[0]])?$settings[$match[0]]:'{'.$match[0].' is undefined}'); }, $html);
 			// Build Field
@@ -1375,6 +1390,116 @@ function buildField($params, $sizeSm = 12, $sizeMd = 12, $sizeLg = 12) {
 	return '<div class="'.$wrapClass.' col-sm-'.$sizeSm.' col-md-'.$sizeMd.' col-lg-'.$sizeLg.'">'.$labelBef.$field.$labelAft.'</div>';
 }
 
+// Tab Settings Generation
+function printTabRow($data) {
+	$hidden = false;
+	if ($data===false) {
+		$hidden = true;
+		$data = array( // New Tab Defaults
+			'id' => 'new',
+			'name' => '',
+			'url' => '',
+			'icon' => 'fa-diamond',
+			'iconurl' => '',
+			'active' => 'true',
+			'user' => 'true',
+			'guest' => 'true',
+			'window' => 'false',
+			'defaultz' => '',
+		);
+	}
+	$image = '<span style="font: normal normal normal 30px/1 FontAwesome;" class="fa fa-hand-paper-o"></span>';
+	
+	$output = '
+		<li id="tab-'.$data['id'].'" class="list-group-item" style="position: relative; left: 0px; top: 0px; '.($hidden?' display: none;':'').'">
+			<tab class="content-form form-inline">
+				<div class="row">
+					'.buildField(array(
+						'type' => 'custom',
+						'html' => '<div class="action-btns tabIconView" style="width:100%;"><a style="margin-left: 0px">$val</a></div>',
+						'value' => $image,
+					),12,1,1).'
+					'.buildField(array(
+						'type' => 'hidden',
+						'id' => 'tab-'.$data['id'].'-id',
+						'name' => 'id['.$data['id'].']',
+						'value' => $data['id'],
+					),12,2,1).'
+					'.buildField(array(
+						'type' => 'text',
+						'id' => 'tab-'.$data['id'].'-name',
+						'name' => 'name['.$data['id'].']',
+						'placeholder' => 'Organizr Homepage',
+						'labelTranslate' => 'TAB_NAME',
+						'value' => $data['name'],
+					),12,2,1).'
+					'.buildField(array(
+						'type' => 'text',
+						'id' => 'tab-'.$data['id'].'-url',
+						'name' => 'url['.$data['id'].']',
+						'placeholder' => 'homepage.php',
+						'labelTranslate' => 'TAB_URL',
+						'value' => $data['url'],
+					),12,2,1).'
+					'.buildField(array(
+						'type' => 'text',
+						'id' => 'tab-'.$data['id'].'-iconurl',
+						'name' => 'iconurl['.$data['id'].']',
+						'placeholder' => 'images/organizr.png',
+						'labelTranslate' => 'ICON_URL',
+						'value' => $data['iconurl'],
+					),12,2,1).'
+					'.buildField(array(
+						'type' => 'custom',
+						'id' => 'tab-'.$data['id'].'-icon',
+						'name' => 'icon['.$data['id'].']',
+						'html' => '- '.translate('OR').' - <div class="input-group"><input data-placement="bottomRight" class="form-control material icp-auto'.($hidden?'-pend':'').'" id="$id" name="$name" value="$val" type="text" /><span class="input-group-addon"></span></div>',
+						'value' => $data['icon'],
+					),12,1,1).'
+					'.buildField(array(
+						'type' => 'checkbox',
+						'labelTranslate' => 'ACTIVE',
+						'name' => 'active['.$data['id'].']',
+						'value' => $data['active'],
+					),12,1,1).'
+					'.buildField(array(
+						'type' => 'checkbox',
+						'labelTranslate' => 'USER',
+						'name' => 'user['.$data['id'].']',
+						'value' => $data['user'],
+					),12,1,1).'
+					'.buildField(array(
+						'type' => 'checkbox',
+						'labelTranslate' => 'GUEST',
+						'name' => 'guest['.$data['id'].']',
+						'value' => $data['guest'],
+					),12,1,1).'
+					'.buildField(array(
+						'type' => 'checkbox',
+						'labelTranslate' => 'NO_IFRAME',
+						'name' => 'window['.$data['id'].']',
+						'value' => $data['window'],
+					),12,1,1).'
+					'.buildField(array(
+						'type' => 'radio',
+						'labelTranslate' => 'DEFAULT',
+						'name' => 'defaultz['.$data['id'].']',
+						'value' => $data['defaultz'],
+						'onclick' => "$('[type=radio][id!=\''+this.id+'\']').each(function() { this.checked=false; });",
+					),12,1,1).'
+					'.buildField(array(
+						'type' => 'button',
+						'icon' => 'trash',
+						'labelTranslate' => 'REMOVE',
+						'onclick' => "$(this).parents('li').remove();",
+					),12,1,1).'
+				</div>
+			</tab>
+		</li>
+	';
+	return $output;
+}
+
 // Timezone array
 function timezoneOptions() {
 	$output = array();
@@ -1437,6 +1562,7 @@ function createSQLiteDB($path = false) {
 		// Create Tabs
 		$tabs = $GLOBALS['file_db']->query('CREATE TABLE `tabs` (
 			`id`	INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
+			`order`	INTEGER,
 			`users_id`	INTEGER,
 			`name`	TEXT,
 			`url`	TEXT,
@@ -1800,6 +1926,38 @@ function sabnzbdConnect($list = 'queue') {
 	}
 }
 
+function updateTabs($tabs) {
+	if (!isset($GLOBALS['file_db'])) {
+		$GLOBALS['file_db'] = new PDO('sqlite:'.DATABASE_LOCATION.'users.db');
+		$GLOBALS['file_db']->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+	}
+	// Validate
+	if (!isset($tabs['defaultz'])) { $tabs['defaultz'][current(array_keys($tabs['name']))] = 'true'; }
+	if (isset($tabs['name']) && isset($tabs['url']) && is_array($tabs['name'])) {
+		// Clear Existing Tabs
+		$GLOBALS['file_db']->query("DELETE FROM tabs");
+		// Process New Tabs
+		$totalValid = 0;
+		foreach ($tabs['name'] as $key => $value) {
+			// Qualify
+			if (!$value || !isset($tabs['url']) || !$tabs['url'][$key]) { continue; }
+			$totalValid++;
+			$fields = array();
+			foreach(array('id','name','url','icon','iconurl','order') as $v) {
+				if (isset($tabs[$v]) && isset($tabs[$v][$key])) { $fields[$v] = $tabs[$v][$key]; }
+			}
+			foreach(array('active','user','guest','defaultz','window') as $v) {
+				if (isset($tabs[$v]) && isset($tabs[$v][$key])) { $fields[$v] = ($tabs[$v][$key]!=='false'?'true':'false'); }
+			}
+			$GLOBALS['file_db']->query('INSERT INTO tabs (`'.implode('`,`',array_keys($fields)).'`) VALUES (\''.implode("','",$fields).'\');');
+		}
+		return $totalValid;
+	} else {
+		return false;
+	}
+	return false;
+}
+
 // ==============
 
 function clean($strin) {

+ 4 - 4
index.php

@@ -117,8 +117,8 @@ if (file_exists('config/config.php')) {
 
         if($USER->authenticated && $USER->role == "admin") :
 
-            $result = $file_db->query('SELECT * FROM tabs WHERE active = "true"');
-            $getsettings = $file_db->query('SELECT * FROM tabs WHERE active = "true"');
+            $result = $file_db->query('SELECT * FROM tabs WHERE active = "true" ORDER BY `order` asc');
+            $getsettings = $file_db->query('SELECT * FROM tabs WHERE active = "true" ORDER BY `order` asc');
 
             foreach($getsettings as $row) :
 
@@ -132,11 +132,11 @@ if (file_exists('config/config.php')) {
 
         elseif($USER->authenticated && $USER->role == "user") :
 
-            $result = $file_db->query('SELECT * FROM tabs WHERE active = "true" AND user = "true"');
+            $result = $file_db->query('SELECT * FROM tabs WHERE active = "true" AND user = "true" ORDER BY `order` asc');
 
         else :
 
-            $result = $file_db->query('SELECT * FROM tabs WHERE active = "true" AND guest = "true"');
+            $result = $file_db->query('SELECT * FROM tabs WHERE active = "true" AND guest = "true" ORDER BY `order` asc');
 
         endif;
 

+ 3 - 0
js/ajax.js

@@ -31,9 +31,12 @@ function ajax_request(method, action, data, callback, options) {
 				
 				// Internal Process Function
 				var scopefunctions = function(scopeObj, data) {
+					
 					// Reload?
 					if (data.reload === true) {
+						console.log(scopeObj.location.href );
 						scopeObj.location.href = scopeObj.location.href;
+						scopeObj.location.reload(true);
 					}
 					
 					// Navigate?

+ 4 - 1
lang/en.ini

@@ -243,4 +243,7 @@ SETTINGS_NOT_SAVED = "Settings could not be saved"
 CALTIMEFORMAT = "Select time format"
 SHOW_HOMEPAGE = "Minimum authentication level to access homepage"
 SHOW_ON_HOMEPAGE = "Minimum authentication level for homepage"
-CUSTOMHTML = "Custom HTML"
+CUSTOMHTML = "Custom HTML"
+TAB_NAME = "Tab Name"
+NEW_TAB = "New Tab"
+REMOVE = "Remove"

+ 111 - 291
settings.php

@@ -31,26 +31,23 @@ foreach(loadAppearance() as $key => $value) {
 	$$key = $value;
 }
 
+// Slimbar
+if(SLIMBAR == "true") {
+	$slimBar = "30"; 
+	$userSize = "25";
+} else {
+	$slimBar = "56"; 
+	$userSize = "40"; 
+}
 
 
 
 
 
-
-
-$action = "";
-if(isset($_POST['action'])) :
-    $action = $_POST['action'];
-endif;
-
-if(!isset($_POST['op'])) :
-
-    $_POST['op'] = "";
-endif; 
-
-if($action == "addTabz") :
+if(0) :
+	debug_out($_POST,1);
 	$file_db->exec("DELETE FROM tabs");
-
+	
     $addTabName = array();
     $addTabUrl = array();
     $addTabIcon = array();
@@ -146,13 +143,12 @@ if($action == "addTabz") :
     endforeach;
 endif;
 
-if(SLIMBAR == "true") : $slimBar = "30"; $userSize = "25"; else : $slimBar = "56"; $userSize = "40"; endif;
+
 ?>
 
 <!DOCTYPE html>
 
 <html lang="en" class="no-js">
-
     <head>
         <meta charset="UTF-8">
         <meta name="viewport" content="width=device-width, initial-scale=1.0">
@@ -231,9 +227,50 @@ if(SLIMBAR == "true") : $slimBar = "30"; $userSize = "25"; else : $slimBar = "56
         <script src="bower_components/DataTables/media/js/jquery.dataTables.js"></script>
         <script src="bower_components/datatables.net-responsive/js/dataTables.responsive.js"></script>
         <script src="bower_components/datatables-tabletools/js/dataTables.tableTools.js"></script>
-    </head>
-
-    <body class="scroller-body" style="padding: 0; background: #273238; overflow: hidden">
+		
+		<!--Other-->
+		<script>
+			function addTab() {
+				var idNumber = Math.round(Math.random() * 999999999) + 1000000000;
+				var $element = $('#tab-new').clone();
+				$element.css('display','block');
+				$element.attr('id', $element.attr('id').replace('new',idNumber));
+				$element.find('[value=new]').attr('value', idNumber).val(idNumber);
+				$element.find('[id][name]').each(function () {
+					this.id = this.id.replace('new',idNumber);
+					this.name = this.name.replace('new',idNumber);
+				});
+				$element.find('[for]').each(function () {
+					$(this).attr('for',$(this).attr('for').replace('new',idNumber));
+				});
+				$element.appendTo('#submitTabs ul');
+				$element.find('.icp-auto-pend').iconpicker({placement: 'left', hideOnSelect: false, collision: true}).hide();
+			}
+			function submitTabs(form) {
+				var formData = {};
+				var ids = [];
+				
+				$.each($(form).serializeArray(), function(i,v) {
+					var regmatch = /(\w+)\[((?:new-)?\d+)\]/i.exec(v.name);
+					if (regmatch) {
+						if (ids.indexOf(regmatch[2]) == -1) {
+							ids.push(regmatch[2]);
+							if (typeof formData['order'] !== 'object') { formData['order'] = {}; }
+							formData['order'][regmatch[2]] = ids.length;
+						}
+						if (typeof formData[regmatch[1]] !== 'object') { formData[regmatch[1]] = {}; }
+						formData[regmatch[1]][regmatch[2]] = v.value; 
+					} else {
+						console.log(regmatch);
+					}
+				});
+				console.log(formData);
+				ajax_request('POST', 'submit-tabs', formData);
+				
+				return false;
+			}
+		</script>
+		
         <style>
             @media screen and (max-width:737px){
                 .email-body{width: 100%; overflow: auto;}
@@ -352,6 +389,9 @@ fclose($file_handle);
 echo "\n";
 endif; ?>
         </style>
+    </head>
+
+    <body class="scroller-body" style="padding: 0; background: #273238; overflow: hidden">
         <div id="main-wrapper" class="main-wrapper">
 
             <!--Content-->
@@ -360,22 +400,13 @@ endif; ?>
                 <div id="versionCheck"></div>
                 <div class="row">
                     <div class="col-lg-2">
-                        <?php if($action) : ?>
-
-                        <button id="apply" style="width: 100%" class="btn waves btn-success btn-sm text-uppercase waves-effect waves-float animated tada" type="submit">
-
-                            <?php echo $language->translate("APPLY_CHANGES");?>
-
-                        </button>
-
-                        <?php endif; ?>
+						<button id="apply" style="width: 100%; display: none;" class="btn waves btn-success btn-sm text-uppercase waves-effect waves-float animated tada" type="submit">
+							<?php echo $language->translate("APPLY_CHANGES");?>
+						</button>
                         <div class="content-box profile-sidebar box-shadow">
                             <img src="images/organizr-logo-h-d.png" width="100%" style="margin-top: -10px;">
-
                             <div class="profile-usermenu">
-
                                 <ul class="nav" id="settings-list">
-
                                     <li class=""><a id="open-tabs"><i class="fa fa-list red-orange"></i>Edit Tabs</a></li>
                                     <li class=""><a id="open-colors"><i class="fa fa-paint-brush green"></i>Edit Colors</a></li>
                                     <li><a id="open-users"><i class="fa fa-user red"></i>Manage Users</a></li>
@@ -383,11 +414,8 @@ endif; ?>
                                     <li><a id="open-homepage"><i class=" fa fa-home yellow"></i>Edit Homepage</a></li>
                                     <li><a id="open-advanced"><i class=" fa fa-cog light-blue"></i>Advanced</a></li>
                                     <li><a id="open-info"><i class=" fa fa-info orange"></i>&nbsp; About</a></li>
-
                                 </ul>
-
                             </div>
-
                         </div>
                     </div>
                     <div class="col-lg-10">
@@ -403,245 +431,62 @@ endif; ?>
                         <div class="email-inner small-box">
                             <div class="email-inner-section">
                                 <div class="small-box todo-list fade in" id="tab-tabs">
-
-                                    <div class="sort-todo">
-
-                                        <a class="total-tabs"><?php echo $language->translate("TABS");?> <span class="badge gray-bg"></span></a>
-
-                                        <button id="iconHide" type="button" class="btn waves btn-labeled btn-success btn-sm text-uppercase waves-effect waves-float">
-
-                                            <span class="btn-label"><i class="fa fa-upload"></i></span><?php echo $language->translate("UPLOAD_ICONS");?>
-
-                                        </button>
-
-                                        <button id="iconAll" type="button" class="btn waves btn-labeled btn-success btn-sm text-uppercase waves-effect waves-float">
-
-                                            <span class="btn-label"><i class="fa fa-picture-o"></i></span><?php echo $language->translate("VIEW_ICONS");?>
-
-                                        </button>
-
-                                    </div>
-
-                                    <input type="file" name="files[]" id="uploadIcons" multiple="multiple">
-
-                                    <div id="viewAllIcons" style="display: none;">
-
-                                        <h4><strong><?php echo $language->translate("ALL_ICONS");?></strong> [<?php echo $language->translate("CLICK_ICON");?>]</h4>
-
-                                        <div class="row">
-
-                                            <textarea id="copyTarget" class="hideCopy" style="left: -9999px; top: 0; position: absolute;"></textarea>                                           
-                                            <?php
-                                            $dirname = "images/";
-                                            $images = scandir($dirname);
-                                            $ignore = Array(".", "..", "favicon/", "favicon", "._.DS_Store", ".DS_Store", "confused.png", "sowwy.png", "sort-btns", "loading.png", "titlelogo.png", "default.svg", "login.png", "themes", "nadaplaying.jpg", "organizr-logo-h-d.png", "organizr-logo-h.png");
-                                            foreach($images as $curimg){
-                                                if(!in_array($curimg, $ignore)) { ?>
-
-                                            <div class="col-xs-2" style="width: 75px; height: 75px; padding-right: 0px;">    
-
-                                                <a data-toggle="tooltip" data-placement="bottom" title="<?=$dirname.$curimg;?>" class="thumbnail" style="box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);">
-
-                                                    <img style="width: 50px; height: 50px;" src="<?=$dirname.$curimg;?>" alt="thumbnail" class="allIcons">
-
-                                                </a>
-
-                                            </div>
-
-                                            <?php } } ?>
-
-                                        </div>
-
-                                    </div>
-
-                                    <form id="add_tab" method="post">
-
-                                        <div class="form-group add-tab">
-
-                                            <div class="input-group">
-
-                                                <div class="input-group-addon">
-
-                                                    <i class="fa fa-pencil gray"></i>
-
-                                                </div>
-
-                                                <input type="text" class="form-control name-of-todo" placeholder="<?php echo $language->translate("TYPE_HIT_ENTER");?>" style="border-top-left-radius: 0;
-            border-bottom-left-radius: 0;">
-
-                                            </div>
-
-                                        </div>
-
-                                    </form>
-
-                                    <div class="panel">
-
-                                        <form id="submitTabs" method="post">
-
+									<form id="submitTabs" onsubmit="submitTabs(this); return false;">
+										<div class="sort-todo">
+											<button id="newtab" type="button" class="btn waves btn-labeled btn-success btn-sm text-uppercase waves-effect waves-float" onclick="addTab()">
+												<span class="btn-label"><i class="fa fa-picture-o"></i></span><?php echo translate("NEW_TAB");?>
+											</button>
+											<button id="iconHide" type="button" class="btn waves btn-labeled btn-warning btn-sm text-uppercase waves-effect waves-float">
+												<span class="btn-label"><i class="fa fa-upload"></i></span><?php echo $language->translate("UPLOAD_ICONS");?>
+											</button>
+											<button id="iconAll" type="button" class="btn waves btn-labeled btn-info btn-sm text-uppercase waves-effect waves-float">
+												<span class="btn-label"><i class="fa fa-picture-o"></i></span><?php echo $language->translate("VIEW_ICONS");?>
+											</button>
+											<button type="submit" class="btn waves btn-labeled btn-success btn btn-sm pull-right text-uppercase waves-effect waves-float">
+												<span class="btn-label"><i class="fa fa-floppy-o"></i></span><?php echo translate('SAVE_TABS'); ?>
+											</button>
+										</div>
+										<input type="file" name="files[]" id="uploadIcons" multiple="multiple">
+										<div id="viewAllIcons" style="display: none;">
+											<h4><strong><?php echo $language->translate("ALL_ICONS");?></strong> [<?php echo $language->translate("CLICK_ICON");?>]</h4>
+											<div class="row">
+												<textarea id="copyTarget" class="hideCopy" style="left: -9999px; top: 0; position: absolute;"></textarea>                                           
+<?php
+$dirname = "images/";
+$images = scandir($dirname);
+$ignore = Array(".", "..", "favicon/", "favicon", "._.DS_Store", ".DS_Store", "confused.png", "sowwy.png", "sort-btns", "loading.png", "titlelogo.png", "default.svg", "login.png", "themes", "nadaplaying.jpg", "organizr-logo-h-d.png", "organizr-logo-h.png");
+foreach($images as $curimg){
+	if(!in_array($curimg, $ignore)) { ?>
+												<div class="col-xs-2" style="width: 75px; height: 75px; padding-right: 0px;">    
+													<a data-toggle="tooltip" data-placement="bottom" title="<?=$dirname.$curimg;?>" class="thumbnail" style="box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);">
+														<img style="width: 50px; height: 50px;" src="<?=$dirname.$curimg;?>" alt="thumbnail" class="allIcons">
+													</a>
+												</div>
+<?php 
+	}
+}
+?>
+											</div>
+										</div>
+										<div class="panel">
                                             <div class="panel-body todo">
-
-                                                <input type="hidden" name="action" value="addTabz" />
-
                                                 <ul class="list-group ui-sortable">
-
-                                                    <?php  
-													$tabNum = 1;
-                                                    foreach($file_db->query('SELECT * FROM tabs') as $row) {
-
-                                                    if($row['defaultz'] == "true") : $default = "checked"; else : $default = ""; endif;
-                                                    if($row['active'] == "true") : $activez = "checked"; else : $activez = ""; endif;
-                                                    if($row['guest'] == "true") : $guestz = "checked"; else : $guestz = ""; endif;
-                                                    if($row['user'] == "true") : $userz = "checked"; else : $userz = ""; endif;
-                                                    if($row['window'] == "true") : $windowz = "checked"; else : $windowz = ""; endif;
-                                                    if($row['iconurl'] != "") : $backgroundListImage = "background-image: url('". $row['iconurl'] . "') !important; background-repeat: no-repeat !important; background-position: left !important; background-blend-mode: difference !important; background-size: 50px 50px !important"; else : $backgroundListImage = ""; endif;
-
-                                                    ?>
-                                                    <li id="item-<?=$tabNum;?>" class="list-group-item" style="position: relative; left: 0px; top: 0px;">
-
-                                                        <tab class="content-form form-inline">
-
-                                                            <div class="form-group">
-
-                                                                <div class="action-btns tabIconView" style="width:calc(100%)">
-
-                                                                    <?php if($backgroundListImage == "") : ?>
-                                                                    <a class="" style="margin-left: 0px"><span style="font: normal normal normal 30px/1 FontAwesome;" class="fa fa-hand-paper-o"></span></a>
-                                                                    <?php endif; ?>
-
-                                                                    <?php if($backgroundListImage != "") : ?>
-                                                                    <a class="" style="margin-left: 0px"><span style="display: none; font: normal normal normal 30px/1 FontAwesome;" class="fa fa-hand-paper-o"></span></a>
-                                                                    <a class="" style="margin-left: 0px"><span style=""><img style="height: 30px; width: 30px" src="<?=$row['iconurl']?>"></span></a>
-
-                                                                    <?php endif; ?>
-
-                                                                </div>
-
-                                                            </div>
-
-                                                            <div class="form-group">
-
-                                                                <input style="width: 100%;" type="text" class="form-control material input-sm" id="name-<?=$tabNum;?>" name="name-<?=$tabNum;?>" placeholder="<?php echo $language->translate("NEW_TAB_NAME");?>" value="<?=$row['name'];?>">
-
-                                                            </div>
-
-                                                            <div class="form-group">
-
-                                                                <input style="width: 100%;" type="text" class="form-control material input-sm" id="url-<?=$tabNum;?>" name="url-<?=$tabNum;?>" placeholder="<?php echo $language->translate("TAB_URL");?>" value="<?=$row['url']?>">
-
-                                                            </div>
-
-                                                            <div style="margin-right: 5px;" class="form-group">
-
-                                                                <div class="input-group">
-                                                                    <input data-placement="bottomRight" class="form-control material icp-auto" name="icon-<?=$tabNum;?>" value="<?=$row['icon'];?>" type="text" />
-                                                                    <span class="input-group-addon"></span>
-                                                                </div>
-
-                                                                - <?php echo $language->translate("OR");?> -
-
-                                                            </div>
-
-                                                            <div class="form-group">
-
-                                                                <input style="width: 100%;" type="text" class="form-control material input-sm" id="iconurl-<?=$tabNum;?>" name="iconurl-<?=$tabNum;?>" placeholder="<?php echo $language->translate("ICON_URL");?>" value="<?=$row['iconurl']?>">
-
-                                                            </div>
-
-                                                            <div class="form-group">
-
-                                                                <div class="radio radio-danger">
-
-
-                                                                    <input type="radio" id="default[<?=$tabNum;?>]" value="true" name="default" <?=$default;?>>
-                                                                    <label for="default[<?=$tabNum;?>]"><?php echo $language->translate("DEFAULT");?></label>
-
-                                                                </div>
-
-                                                            </div>
-
-                                                            <div class="form-group">
-
-                                                                <div class="">
-
-                                                                    <input id="" class="switcher switcher-success" value="false" name="active-<?=$tabNum;?>" type="hidden">
-                                                                    <input id="active[<?=$tabNum;?>]" class="switcher switcher-success" name="active-<?=$tabNum;?>" type="checkbox" <?=$activez;?>>
-
-                                                                    <label for="active[<?=$tabNum;?>]"></label>
-
-                                                                </div>
-                                                                <?php echo $language->translate("ACTIVE");?>
-                                                            </div>
-
-                                                            <div class="form-group">
-
-                                                                <div class="">
-
-                                                                    <input id="" class="switcher switcher-primary" value="false" name="user-<?=$tabNum;?>" type="hidden">
-                                                                    <input id="user[<?=$tabNum;?>]" class="switcher switcher-primary" name="user-<?=$tabNum;?>" type="checkbox" <?=$userz;?>>
-                                                                    <label for="user[<?=$tabNum;?>]"></label>
-
-                                                                </div>
-                                                                <?php echo $language->translate("USER");?>
-                                                            </div>
-
-                                                            <div class="form-group">
-
-                                                                <div class="">
-
-                                                                    <input id="" class="switcher switcher-primary" value="false" name="guest-<?=$tabNum;?>" type="hidden">
-                                                                    <input id="guest[<?=$tabNum;?>]" class="switcher switcher-warning" name="guest-<?=$tabNum;?>" type="checkbox" <?=$guestz;?>>
-                                                                    <label for="guest[<?=$tabNum;?>]"></label>
-
-                                                                </div>
-                                                                <?php echo $language->translate("GUEST");?>
-                                                            </div>
-
-                                                            <div class="form-group">
-
-                                                                <div class="">
-
-                                                                    <input id="" class="switcher switcher-primary" value="false" name="window-<?=$tabNum;?>" type="hidden">
-                                                                    <input id="window[<?=$tabNum;?>]" class="switcher switcher-danger" name="window-<?=$tabNum;?>" type="checkbox" <?=$windowz;?>>
-                                                                    <label for="window[<?=$tabNum;?>]"></label>
-
-                                                                </div>
-                                                                <?php echo $language->translate("NO_IFRAME");?>
-                                                            </div>
-
-                                                            <div class="pull-right action-btns" style="padding-top: 8px;">
-
-                                                                <a class="trash"><span class="fa fa-trash"></span></a>
-
-                                                            </div>
-
-                                                        </tab>
-
-                                                    </li>
-                                                    <?php $tabNum ++; }?>
-
+<?php
+foreach($file_db->query('SELECT * FROM tabs ORDER BY `order` asc') as $key => $row) {
+	if (!isset($row['id'])) { $row['id'] = $key + 1; }
+	echo printTabRow($row);
+}
+?>
                                                 </ul>
-
                                             </div>
-
-                                            <div class="checkbox clear-todo pull-left"></div>
-
-                                            <button style="margin-top: 5px;" class="btn waves btn-labeled btn-success btn-sm pull-right text-uppercase waves-effect waves-float" type="submit">
-
-                                                <span class="btn-label"><i class="fa fa-floppy-o"></i></span><?php echo $language->translate("SAVE_TABS");?>
-
-                                            </button>
-
-                                        </form>
-
-                                    </div>
-
+										</div>
+									</form>
+<?php echo printTabRow(false); ?>
                                 </div>
                             </div>
                         </div>
                     </div>
                 </div>
-
                 <div class="email-content color-box white-bg">
 <?php
 // Build Colour Settings
@@ -2191,32 +2036,6 @@ echo buildSettings(
                 });
             });
         </script>
-        <?php if($_POST['op']) : ?>
-        <script>
-            parent.notify("<?php echo printArray($USER->info_log); ?>","info-circle","notice","5000", "<?=$notifyExplode[0];?>", "<?=$notifyExplode[1];?>");
-            <?php if(!empty($USER->error_log)) : ?>
-            parent.notify("<?php echo printArray($USER->error_log); ?>","exclamation-circle ","error","5000", "<?=$notifyExplode[0];?>", "<?=$notifyExplode[1];?>");
-            <?php endif; ?>
-        </script>
-        <?php endif; ?>
-        <?php if($action == "addTabz") : ?>
-        <script>
-
-            if(!window.location.hash) {
-                window.location = window.location + '#loaded';
-                window.location.reload();
-            }else{
-               parent.notify("<strong><?php echo $language->translate('TABS_SAVED');?></strong> <?php echo $language->translate('APPLY_RELOAD');?>","floppy-o","success","5000", "<?=$notifyExplode[0];?>", "<?=$notifyExplode[1];?>"); 
-            }
-        </script>
-        <?php endif; ?>
-         <?php if($action == "addOptionz") : ?>
-        <script>
-
-            parent.notify("<strong><?php echo $language->translate('COLORS_SAVED');?></strong> <?php echo $language->translate('APPLY_RELOAD');?>","floppy-o","success","5000", "<?=$notifyExplode[0];?>", "<?=$notifyExplode[1];?>");
-        </script>
-        <?php endif; ?>
-
         <script>
             (function($) {
                 function startTrigger(e,data) {
@@ -2321,7 +2140,8 @@ echo buildSettings(
                 };
 
                 $("#submitTabs").on('submit', function (e) {
-
+					console.log('disabled this func')
+					return false;
                     console.log("submitted");
 
                     $("div.radio").each(function(i) {