Просмотр исходного кода

When iTop is in read only mode, then the portal displays a banner and prevent the user from accessing the modification forms

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2540 a333f486-631f-4898-b8df-5754b55c2be0
romainq 12 лет назад
Родитель
Сommit
8d44539e6e
3 измененных файлов с 81 добавлено и 54 удалено
  1. 16 1
      application/portalwebpage.class.inc.php
  2. 62 53
      portal/index.php
  3. 3 0
      portal/portal.css

+ 16 - 1
application/portalwebpage.class.inc.php

@@ -255,6 +255,21 @@ EOF
 	
 	public function output()
 	{
+		$sApplicationBanner = '';
+		if (!MetaModel::DBHasAccess(ACCESS_USER_WRITE))
+		{
+			$sReadOnly = Dict::S('UI:AccessRO-Users');
+			$sAdminMessage = trim(MetaModel::GetConfig()->Get('access_message'));
+			$sApplicationBanner .= '<div id="admin-banner">';
+			$sApplicationBanner .= '<img src="../images/locked.png" style="vertical-align:middle;">';
+			$sApplicationBanner .= '&nbsp;<b>'.$sReadOnly.'</b>';
+			if (strlen($sAdminMessage) > 0)
+			{
+				$sApplicationBanner .= '&nbsp;: '.$sAdminMessage.'';
+			}
+			$sApplicationBanner .= '</div>';
+		}
+
 		$sMenu = '';
 		if ($this->m_bEnableDisconnectButton)
 		{
@@ -264,7 +279,7 @@ EOF
 		{
 			$sMenu .= "<a class=\"button\" id=\"{$aMenuItem['id']}\" href=\"{$aMenuItem['hyperlink']}\"><span>".Dict::S($aMenuItem['label'])."</span></a>";
 		}
-		$this->s_content = '<div id="portal"><div id="welcome">'.$this->m_sWelcomeMsg.'</div><div id="banner"><div id="logo"></div><div id="menu">'.$sMenu.'</div></div><div id="content">'.$this->s_content.'</div></div>';
+		$this->s_content = '<div id="portal"><div id="welcome">'.$this->m_sWelcomeMsg.'</div><div id="banner"><div id="logo"></div><div id="menu">'.$sMenu.'</div></div>'.$sApplicationBanner.'<div id="content">'.$this->s_content.'</div></div>';
 		parent::output();
 	}
 

+ 62 - 53
portal/index.php

@@ -507,40 +507,43 @@ function ShowDetailsRequest(WebPage $oP, $oObj)
 	$bIsEscalateButton = false;
 	$bIsCloseButton = false;
 	$bEditAttachments = false;
-	switch($oObj->GetState())
-	{
-		case 'new':
-		case 'assigned':
-		case 'frozen':
-		$aEditAtt = array(
-			PORTAL_ATTCODE_LOG => '????'
-		);
-		$bEditAttachments = true;
-		// disabled - $bIsEscalateButton = true;
-		break;
-
-		case 'escalated_tto':
-		case 'escalated_ttr':
-		$aEditAtt = array(
-			PORTAL_ATTCODE_LOG => '????'
-		);
-		$bEditAttachments = true;
-		break;
-
-		case 'resolved':
-		$aEditAtt = array(
-			// non, read-only dans cet etat - 'ticket_log' => '????',
-			'user_satisfaction' => '????',
-			PORTAL_ATTCODE_COMMENT => '????',
-		);
-		$bIsCloseButton = true;
-		break;
-
-		case 'closed':
-		case 'closure_requested':
-		default:
-		$aEditAtt = array();
-		break;
+	$aEditAtt = array();
+	if (!MetaModel::DBIsReadOnly())
+	{
+		switch($oObj->GetState())
+		{
+			case 'new':
+			case 'assigned':
+			case 'frozen':
+			$aEditAtt = array(
+				PORTAL_ATTCODE_LOG => '????'
+			);
+			$bEditAttachments = true;
+			// disabled - $bIsEscalateButton = true;
+			break;
+	
+			case 'escalated_tto':
+			case 'escalated_ttr':
+			$aEditAtt = array(
+				PORTAL_ATTCODE_LOG => '????'
+			);
+			$bEditAttachments = true;
+			break;
+	
+			case 'resolved':
+			$aEditAtt = array(
+				// non, read-only dans cet etat - 'ticket_log' => '????',
+				'user_satisfaction' => '????',
+				PORTAL_ATTCODE_COMMENT => '????',
+			);
+			$bIsCloseButton = true;
+			break;
+	
+			case 'closed':
+			case 'closure_requested':
+			default:
+			break;
+		}
 	}
 
 // REFACTORISER LA MISE EN FORME
@@ -771,7 +774,10 @@ try
 						
 				case 'create_request':
 				DisplayMainMenu($oP);
-				CreateRequest($oP, $oUserOrg);
+				if (!MetaModel::DBIsReadOnly())
+				{
+					CreateRequest($oP, $oUserOrg);
+				}
 				break;
 						
 				case 'details':
@@ -782,26 +788,29 @@ try
 				
 				case 'update_request':
 				DisplayMainMenu($oP);
-				$oObj = $oP->FindObjectFromArgs(array('UserRequest'));
-				switch(get_class($oObj))
-				{
-				case 'UserRequest':
-					$aAttList = array(PORTAL_ATTCODE_LOG, 'user_satisfaction', PORTAL_ATTCODE_COMMENT);
-					break;
-	
-				default:
-					throw new Exception("Implementation issue: unexpected class '".get_class($oObj)."'");
-				}
-				try
+				if (!MetaModel::DBIsReadOnly())
 				{
-					$oP->DoUpdateObjectFromPostedForm($oObj, $aAttList);
-					$oObj->Reload(); // Make sure the object is in good shape to be displayed
-				}
-				catch(TransactionException $e)
-				{
-					$oP->add("<h1>".Dict::S('UI:Error:ObjectAlreadyUpdated')."</h1>\n");
+					$oObj = $oP->FindObjectFromArgs(array('UserRequest'));
+					switch(get_class($oObj))
+					{
+					case 'UserRequest':
+						$aAttList = array(PORTAL_ATTCODE_LOG, 'user_satisfaction', PORTAL_ATTCODE_COMMENT);
+						break;
+		
+					default:
+						throw new Exception("Implementation issue: unexpected class '".get_class($oObj)."'");
+					}
+					try
+					{
+						$oP->DoUpdateObjectFromPostedForm($oObj, $aAttList);
+						$oObj->Reload(); // Make sure the object is in good shape to be displayed
+					}
+					catch(TransactionException $e)
+					{
+						$oP->add("<h1>".Dict::S('UI:Error:ObjectAlreadyUpdated')."</h1>\n");
+					}
+					DisplayObject($oP, $oObj, $oUserOrg);
 				}
-				DisplayObject($oP, $oObj, $oUserOrg);
 				break;
 	
 				case 'show_ongoing':

+ 3 - 0
portal/portal.css

@@ -28,6 +28,9 @@ div#portal #banner {
 	vertical-align: middle;
 	width: 100%;
 }
+div#portal #admin-banner {
+	width: 100%;
+}
 div#portal #logo {
 	background: url("../images/itop-logo.png") no-repeat scroll 0 0 transparent;
 	border: 0 none;