Selaa lähdekoodia

Customer portal : Added support for demo mode

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@4159 a333f486-631f-4898-b8df-5754b55c2be0
glajarige 9 vuotta sitten
vanhempi
commit
302f4b1f2d

+ 14 - 4
datamodels/2.x/itop-portal-base/portal/src/controllers/userprofilebrickcontroller.class.inc.php

@@ -20,6 +20,7 @@
 namespace Combodo\iTop\Portal\Controller;
 
 use \Exception;
+use \MetaModel;
 use \UserRights;
 use \Silex\Application;
 use \Symfony\Component\HttpFoundation\Request;
@@ -87,14 +88,18 @@ class UserProfileBrickController extends BrickController
 			$sCurContactClass = get_class($oCurContact);
 			$sCurContactId = $oCurContact->GetKey();
 
+			// Setting form mode regarding the demo mode parameter
+			$sFormMode = (MetaModel::GetConfig()->Get('demo_mode')) ? ObjectController::ENUM_MODE_VIEW : ObjectController::ENUM_MODE_EDIT;
+
 			// Preparing forms
-			$aData['forms']['contact'] = ObjectController::HandleForm($oRequest, $oApp, ObjectController::ENUM_MODE_EDIT, $sCurContactClass, $sCurContactId, $oBrick->GetForm());
-			$aData['forms']['preferences'] = $this->HandlePreferencesForm($oRequest, $oApp);
+			$aData['forms']['contact'] = ObjectController::HandleForm($oRequest, $oApp, $sFormMode, $sCurContactClass, $sCurContactId, $oBrick->GetForm());
+			$aData['forms']['preferences'] = $this->HandlePreferencesForm($oRequest, $oApp, $sFormMode);
 			// - If user can change password, we display the form
 			$aData['forms']['password'] = (UserRights::CanChangePassword()) ? $this->HandlePasswordForm($oRequest, $oApp) : null;
 
 			$aData = $aData + array(
-				'oBrick' => $oBrick
+				'oBrick' => $oBrick,
+				'sFormMode' => $sFormMode
 			);
 
 			$oResponse = $oApp['twig']->render($oBrick->GetPageTemplatePath(), $aData);
@@ -103,7 +108,7 @@ class UserProfileBrickController extends BrickController
 		return $oResponse;
 	}
 
-	public function HandlePreferencesForm(Request $oRequest, Application $oApp)
+	public function HandlePreferencesForm(Request $oRequest, Application $oApp, $sFormMode)
 	{
 		$aFormData = array();
 		$oRequestParams = $oRequest->request;
@@ -120,6 +125,11 @@ class UserProfileBrickController extends BrickController
 			$oFormManager = new PreferencesFormManager();
 			$oFormManager->SetRenderer($oFormRenderer)
 				->Build();
+			// - Checking if we have to make the form read only
+			if ($sFormMode === ObjectController::ENUM_MODE_VIEW)
+			{
+				$oFormManager->GetForm()->MakeReadOnly();
+			}
 		}
 		// - Submit
 		else if ($sOperation === 'submit')

+ 3 - 1
datamodels/2.x/itop-portal-base/portal/src/views/bricks/user-profile/layout.html.twig

@@ -89,7 +89,9 @@
 		</div>						
 		<div class="form_buttons">
 			<div class="form_btn_regular">
-				<input class="btn btn-primary form_btn_submit" type="submit" value="{{ 'Portal:Button:Submit'|dict_s }}">
+				{% if sFormMode == constant('\\Combodo\\iTop\\Portal\\Controller\\ObjectController::ENUM_MODE_EDIT') %}
+					<input class="btn btn-primary form_btn_submit" type="submit" value="{{ 'Portal:Button:Submit'|dict_s }}">
+				{% endif %}
 			</div>
 		</div>
 	</div>

+ 15 - 0
sources/form/form.class.inc.php

@@ -426,6 +426,21 @@ class Form
 	}
 
 	/**
+	 * Forces the form to a read only state by setting read only to true on all its fields
+	 * 
+	 * @return \Combodo\iTop\Form\Form
+	 */
+	public function MakeReadOnly()
+	{
+		foreach ($this->GetFields() as $oField)
+		{
+			$oField->SetReadOnly(true);
+		}
+
+		return $this;
+	}
+
+	/**
 	 * @param $sFormPath
 	 * @return Form|null
 	 */