From a563d594aeb6f9d6553bfb9ed10aff5ffdd20d10 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Wed, 15 Apr 2015 09:02:14 -0400
Subject: [PATCH] - ported some patches

---
 interface/web/dashboard/dashlets/modules.php            |   17 +++++++-
 interface/web/tools/lib/module.conf.php                 |    1 
 interface/web/client/lib/module.conf.php                |    1 
 interface/web/dns/lib/module.conf.php                   |    1 
 interface/web/nav.php                                   |   18 ++++++++
 interface/web/sites/lib/module.conf.php                 |    1 
 interface/web/dashboard/dashboard.php                   |    2 
 interface/web/monitor/lib/module.conf.php               |    1 
 interface/web/dashboard/lib/module.conf.php             |    1 
 interface/web/sites/templates/web_vhost_domain_edit.htm |   19 +++++++++
 interface/lib/classes/auth.inc.php                      |   29 ++++++++++++--
 interface/web/mail/lib/module.conf.php                  |    1 
 interface/web/admin/templates/server_list.htm           |    4 +-
 interface/web/admin/system_config_edit.php              |    2 
 interface/web/admin/lib/module.conf.php                 |    1 
 interface/web/dashboard/lib/custom_menu.inc.php         |    2 
 16 files changed, 88 insertions(+), 13 deletions(-)

diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php
index 562cf40..56e53ee 100644
--- a/interface/lib/classes/auth.inc.php
+++ b/interface/lib/classes/auth.inc.php
@@ -129,11 +129,32 @@
 
 	public function check_module_permissions($module) {
 		// Check if the current user has the permissions to access this module
+		$module = trim(preg_replace('@\s+@', '', $module));
 		$user_modules = explode(',',$_SESSION["s"]["user"]["modules"]);
-		if(!in_array($module,$user_modules)) {
-			// echo "LOGIN_REDIRECT:/index.php";
-			header("Location: /index.php");
-			exit;
+		if(strpos($module, ',') !== false){
+			$can_use_module = false;
+			$tmp_modules = explode(',', $module);
+			if(is_array($tmp_modules) && !empty($tmp_modules)){
+				foreach($tmp_modules as $tmp_module){
+					if($tmp_module != ''){
+						if(in_array($tmp_module,$user_modules)) {
+							$can_use_module = true;
+							break;
+						}
+					}
+				}
+			}
+			if(!$can_use_module){
+				// echo "LOGIN_REDIRECT:/index.php";
+				header("Location: /index.php");
+				exit;
+			}
+		} else {
+			if(!in_array($module,$user_modules)) {
+				// echo "LOGIN_REDIRECT:/index.php";
+				header("Location: /index.php");
+				exit;
+			}
 		}
 	}
 	
diff --git a/interface/web/admin/lib/module.conf.php b/interface/web/admin/lib/module.conf.php
index 7f4d19d..727f7a2 100644
--- a/interface/web/admin/lib/module.conf.php
+++ b/interface/web/admin/lib/module.conf.php
@@ -7,6 +7,7 @@
 $module['template']  = 'module.tpl.htm';
 $module['startpage']  = 'admin/server_list.php';
 $module['tab_width']    = '60';
+$module['order']    = '90';
 
 
 $items[] = array(   'title'     => 'CP Users',
diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php
index c07810c..f48f11b 100644
--- a/interface/web/admin/system_config_edit.php
+++ b/interface/web/admin/system_config_edit.php
@@ -89,7 +89,7 @@
 		$available_dashlets_txt = '';
 		$handle = @opendir(ISPC_WEB_PATH.'/dashboard/dashlets');
 		while ($file = @readdir($handle)) {
-			if ($file != '.' && $file != '..' && !is_dir($file)) {
+			if ($file != '.' && $file != '..' && !is_dir(ISPC_WEB_PATH.'/dashboard/dashlets/'.$file)) {
 				$available_dashlets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.substr($file, 0, -4).']<pre class="addPlaceholderContent" style="display:none;">['.substr($file, 0, -4).'],</pre></a> ';
 			}
 		}
diff --git a/interface/web/admin/templates/server_list.htm b/interface/web/admin/templates/server_list.htm
index dd05473..893872e 100644
--- a/interface/web/admin/templates/server_list.htm
+++ b/interface/web/admin/templates/server_list.htm
@@ -51,13 +51,13 @@
                     </tmpl_loop>
                     <tmpl_unless name="records">
                         <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td colspan="8">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                            <td colspan="7">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
                         </tr>
                     </tmpl_unless>
                 </tbody>
                 <tfoot>
                     <tr>
-                        <td colspan="8"><tmpl_var name="paging"></td>
+                        <td colspan="7"><tmpl_var name="paging"></td>
                     </tr>
                 </tfoot>
             </table>
diff --git a/interface/web/client/lib/module.conf.php b/interface/web/client/lib/module.conf.php
index e4bddd7..7d6f1b3 100644
--- a/interface/web/client/lib/module.conf.php
+++ b/interface/web/client/lib/module.conf.php
@@ -5,6 +5,7 @@
 $module["template"]  = "module.tpl.htm";
 $module["startpage"]  = "client/client_list.php";
 $module["tab_width"]    = '';
+$module['order']    = '20';
 
 
 $items[] = array(   'title'  => "Edit Client",
diff --git a/interface/web/dashboard/dashboard.php b/interface/web/dashboard/dashboard.php
index c806e10..51068b1 100644
--- a/interface/web/dashboard/dashboard.php
+++ b/interface/web/dashboard/dashboard.php
@@ -146,7 +146,7 @@
 $dashlet_list = array();
 $handle = @opendir(ISPC_WEB_PATH.'/dashboard/dashlets');
 while ($file = @readdir($handle)) {
-	if ($file != '.' && $file != '..' && !is_dir($file)) {
+	if ($file != '.' && $file != '..' && !is_dir(ISPC_WEB_PATH.'/dashboard/dashlets/'.$file)) {
 		$dashlet_name = substr($file, 0, -4);
 		$dashlet_class = 'dashlet_'.$dashlet_name;
 		include_once ISPC_WEB_PATH.'/dashboard/dashlets/'.$file;
diff --git a/interface/web/dashboard/dashlets/modules.php b/interface/web/dashboard/dashlets/modules.php
index 1b1d2ef..da1eb0b 100644
--- a/interface/web/dashboard/dashlets/modules.php
+++ b/interface/web/dashboard/dashlets/modules.php
@@ -28,19 +28,32 @@
 					include_once '../' . $mt.'/lib/module.conf.php';
 					/* We don't want to show the dashboard */
 					if ($mt != 'dashboard') {
+						if($mt == 'dns'){
+							$dns_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE dns_server = 1 AND active = 1");
+							if($dns_servers['cnt'] == 0) continue;
+						}
+						if($mt == 'mail'){
+							$mail_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE mail_server = 1 AND active = 1");
+							if($mail_servers['cnt'] == 0) continue;
+						}
+						if($mt == 'sites'){
+							$web_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE web_server = 1 AND active = 1");
+							if($web_servers['cnt'] == 0) continue;
+						}
+					
 						$module_title = $app->lng($module['title']);
 						if(function_exists('mb_strlen')) {
 							if(mb_strlen($module_title, "UTF-8") > 8) $module_title = mb_substr($module_title, 0, 7, "UTF-8").'..';
 						} else {
 							if(strlen($module_title) > 8) $module_title = substr($module_title, 0, 7).'..';
 						}
-						$mod[] = array( 'modules_title'  => $module_title,
+						$mod[$module['order']] = array( 'modules_title'  => $module_title,
 							'modules_startpage' => $module['startpage'],
 							'modules_name'   => $module['name']);
 					}
 				}
 			}
-
+			ksort($mod);
 			$tpl->setloop('modules', $mod);
 		}
 
diff --git a/interface/web/dashboard/lib/custom_menu.inc.php b/interface/web/dashboard/lib/custom_menu.inc.php
index b71bd16..176805e 100644
--- a/interface/web/dashboard/lib/custom_menu.inc.php
+++ b/interface/web/dashboard/lib/custom_menu.inc.php
@@ -71,7 +71,7 @@
 				$rows[] = array('title' => $item->get_title(),
 					'link' => $item->get_link(),
 					'content' => $item->get_content(),
-					'date' => $item->get_date('Y-m-d')
+					'date' => $item->get_date($app->lng('conf_format_dateshort'))
 				);
 			}
 			$n++;
diff --git a/interface/web/dashboard/lib/module.conf.php b/interface/web/dashboard/lib/module.conf.php
index 67f769e..4471f9b 100644
--- a/interface/web/dashboard/lib/module.conf.php
+++ b/interface/web/dashboard/lib/module.conf.php
@@ -32,6 +32,7 @@
 $module['template']  = 'dashboard.tpl.htm';
 $module['startpage']  = 'dashboard/dashboard.php';
 $module['tab_width']    = '';
+$module['order']    = '1';
 
 //$items = array();
 //
diff --git a/interface/web/dns/lib/module.conf.php b/interface/web/dns/lib/module.conf.php
index 83027c6..75b17a9 100644
--- a/interface/web/dns/lib/module.conf.php
+++ b/interface/web/dns/lib/module.conf.php
@@ -5,6 +5,7 @@
 $module["template"]  = "module.tpl.htm";
 $module["startpage"]  = "dns/dns_soa_list.php";
 $module["tab_width"]    = '';
+$module['order']    = '50';
 
 
 $items[] = array( 'title'  => "Add DNS Zone",
diff --git a/interface/web/mail/lib/module.conf.php b/interface/web/mail/lib/module.conf.php
index b6df07e..ca7d177 100644
--- a/interface/web/mail/lib/module.conf.php
+++ b/interface/web/mail/lib/module.conf.php
@@ -7,6 +7,7 @@
 $module['template']  = 'module.tpl.htm';
 $module['startpage']  = 'mail/mail_domain_list.php';
 $module['tab_width']    = '';
+$module['order']    = '40';
 
 
 //**** Email accounts menu
diff --git a/interface/web/monitor/lib/module.conf.php b/interface/web/monitor/lib/module.conf.php
index 6f31204..964d3c8 100644
--- a/interface/web/monitor/lib/module.conf.php
+++ b/interface/web/monitor/lib/module.conf.php
@@ -8,6 +8,7 @@
 $module["template"]  = "module.tpl.htm";
 $module["tab_width"]    = '';
 $module["startpage"]  = "monitor/show_sys_state.php?state=system";
+$module['order']    = '60';
 
 unset($items);
 $items[] = array( 'title'  => "Show Overview",
diff --git a/interface/web/nav.php b/interface/web/nav.php
index 4d8617c..6475daa 100644
--- a/interface/web/nav.php
+++ b/interface/web/nav.php
@@ -45,25 +45,41 @@
 		/*
 		 * If the dashboard is in the list of modules it always has to be the first!
 		 */
+		/*
 		asort($modules);
 		if (in_array('dashboard', $modules)) {
 			$key = array_search('dashboard', $modules);
 			unset($modules[$key]);
 			$modules = array_merge(array('dashboard'), $modules);
 		}
+		*/
 		if(is_array($modules)) {
 			foreach($modules as $mt) {
 				if(is_file($mt.'/lib/module.conf.php')) {
 					if(!preg_match("/^[a-z]{2,20}$/i", $mt)) die('module name contains unallowed chars.');
+					if($mt == 'dns'){
+						$dns_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE dns_server = 1 AND active = 1");
+						if($dns_servers['cnt'] == 0) continue;
+					}
+					if($mt == 'mail'){
+						$mail_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE mail_server = 1 AND active = 1");
+						if($mail_servers['cnt'] == 0) continue;
+					}
+					if($mt == 'sites'){
+						$web_servers = $app->db->queryOneRecord("SELECT COUNT(*) as cnt FROM server WHERE web_server = 1 AND active = 1");
+						if($web_servers['cnt'] == 0) continue;
+					}
+					
 					include_once $mt.'/lib/module.conf.php';
 					$language = (isset($_SESSION['s']['user']['language']))?$_SESSION['s']['user']['language']:$conf['language'];
 					$app->load_language_file('web/'.$mt.'/lib/'.$language.'.lng');
 					$active = ($module['name'] == $_SESSION['s']['module']['name']) ? 1 : 0;
-					$topnav[] = array( 'title'  => $app->lng($module['title']),
+					$topnav[$module['order']] = array( 'title'  => $app->lng($module['title']),
 						'active'  => $active,
 						'module' => $module['name']);
 				}
 			}
+			ksort($topnav);
 		}
 	} else {
 		//*  Loading Login Module
diff --git a/interface/web/sites/lib/module.conf.php b/interface/web/sites/lib/module.conf.php
index 8e253fd..979aa63 100644
--- a/interface/web/sites/lib/module.conf.php
+++ b/interface/web/sites/lib/module.conf.php
@@ -7,6 +7,7 @@
 $module["template"]  = "module.tpl.htm";
 $module["startpage"]  = "sites/web_vhost_domain_list.php";
 $module["tab_width"]    = '';
+$module['order']    = '30';
 
 // Websites menu
 $items=array();
diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm
index e313b9f..e0a8276 100644
--- a/interface/web/sites/templates/web_vhost_domain_edit.htm
+++ b/interface/web/sites/templates/web_vhost_domain_edit.htm
@@ -274,6 +274,8 @@
     jQuery('#parent_domain_id').change(function() {
         reloadServerId(false);
     });
+	// new Vhostsubdomains/Vhostaliasdomains
+	if(serverId == '') jQuery('#parent_domain_id').trigger('change');
     
     function reloadServerId(noFormChange) {
         var parentWebId = jQuery('#parent_domain_id').val();
@@ -337,16 +339,31 @@
 		
     function reloadFastcgiPHPVersions(noFormChange) {
         jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, php_type : jQuery('#php').val(), type : "getphpfastcgi", client_group_id : clientGroupId}, function(data) {
-            var options = '<option value="">Default</option>';
+            //var options = '<option value="">Default</option>';
+			var options = '';
             var phpfastcgiselected = '';
             $.each(data, function(key, val) {
+				<tmpl_if name="id">
                 if($('#fastcgi_php_version').val() == key){
                     phpfastcgiselected = ' selected="selected"';
                 } else {
                     phpfastcgiselected = '';
                 }
+				</tmpl_else>
+					phpfastcgiselected = '';
+				</tmpl_if>
                 options += '<option value="'+key+'"'+phpfastcgiselected+'>'+val+'</option>';
             });
+			<tmpl_if name="id">
+			if($('#fastcgi_php_version').val() == ''){
+                phpfastcgiselected = ' selected="selected"';
+            } else {
+                phpfastcgiselected = '';
+            }
+			</tmpl_else>
+				phpfastcgiselected = '';
+			</tmpl_if>
+			options += '<option value=""'+phpfastcgiselected+'>{tmpl_var name="default_php_txt"}</option>';
             $('#fastcgi_php_version').html(options).change();
             if(noFormChange) ISPConfig.resetFormChanged();
         });
diff --git a/interface/web/tools/lib/module.conf.php b/interface/web/tools/lib/module.conf.php
index 853fd64..617ab0b 100644
--- a/interface/web/tools/lib/module.conf.php
+++ b/interface/web/tools/lib/module.conf.php
@@ -7,6 +7,7 @@
 $module['template']  = 'module.tpl.htm';
 $module['startpage']  = 'tools/index.php';
 $module['tab_width']    = '60';
+$module['order']    = '80';
 
 
 //**** Change User password

--
Gitblit v1.9.1