Browse Source

Compiler: added brand management

git-svn-id: http://svn.code.sf.net/p/itop/code/trunk@2838 a333f486-631f-4898-b8df-5754b55c2be0
romainq 11 năm trước cách đây
mục cha
commit
99037986ae

+ 9 - 3
application/itopwebpage.class.inc.php

@@ -1,5 +1,5 @@
 <?php
-// Copyright (C) 2010-2012 Combodo SARL
+// Copyright (C) 2010-2013 Combodo SARL
 //
 //   This file is part of iTop.
 //
@@ -20,7 +20,7 @@
 /**
  * Class iTopWebPage
  *
- * @copyright   Copyright (C) 2010-2012 Combodo SARL
+ * @copyright   Copyright (C) 2010-2013 Combodo SARL
  * @license     http://opensource.org/licenses/AGPL-3.0
  */
 
@@ -764,12 +764,18 @@ EOF
 			$sOnlineHelpUrl = MetaModel::GetConfig()->Get('online_help');
 			//$sLogOffMenu = "<span id=\"logOffBtn\" style=\"height:55px;padding:0;margin:0;\"><img src=\"../images/onOffBtn.png\"></span>";
 
+			$sDisplayIcon = utils::GetAbsoluteUrlAppRoot().'images/itop-logo.png';
+			if (file_exists(MODULESROOT.'branding/main-logo.png'))
+			{
+				$sDisplayIcon = utils::GetAbsoluteUrlModulesRoot().'branding/main-logo.png';
+			}
+
 			$sHtml .= $sNorthPane;
 			$sHtml .= '<div id="left-pane" class="ui-layout-west">';
 			$sHtml .= '<!-- Beginning of the left pane -->';
 			$sHtml .= ' <div class="ui-layout-north">';
 			$sHtml .= ' <div id="header-logo">';
-			$sHtml .= ' <div id="top-left"></div><div id="logo"><a href="'.htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8').'"><img src="../images/itop-logo.png" title="'.htmlentities($sVersionString, ENT_QUOTES, 'UTF-8').'" style="border:0; margin-top:16px; margin-right:40px;"/></a></div>';
+			$sHtml .= ' <div id="top-left"></div><div id="logo"><a href="'.htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8').'"><img src="'.$sDisplayIcon.'" title="'.htmlentities($sVersionString, ENT_QUOTES, 'UTF-8').'" style="border:0; margin-top:16px; margin-right:40px;"/></a></div>';
 			$sHtml .= ' </div>';
 			$sHtml .= ' <div class="header-menu">';
 			$sHtml .= '		<div class="icon ui-state-default ui-corner-all"><span id="tPinMenu" class="ui-icon ui-icon-pin-w">pin</span></div>';

+ 14 - 4
application/loginwebpage.class.inc.php

@@ -1,5 +1,5 @@
 <?php
-// Copyright (C) 2010-2012 Combodo SARL
+// Copyright (C) 2010-2013 Combodo SARL
 //
 //   This file is part of iTop.
 //
@@ -20,7 +20,7 @@
 /**
  * Class LoginWebPage
  *
- * @copyright   Copyright (C) 2010-2012 Combodo SARL
+ * @copyright   Copyright (C) 2010-2013 Combodo SARL
  * @license     http://opensource.org/licenses/AGPL-3.0
  */
 
@@ -123,7 +123,12 @@ EOF
 	
 			$sVersionShort = Dict::Format('UI:iTopVersion:Short', ITOP_VERSION);
 			$sIconUrl = Utils::GetConfig()->Get('app_icon_url');
-			$this->add("<div id=\"login-logo\"><a href=\"".htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8')."\"><img title=\"$sVersionShort\" src=\"../images/itop-logo-external.png\"></a></div>\n");
+			$sDisplayIcon = utils::GetAbsoluteUrlAppRoot().'images/itop-logo-external.png';
+			if (file_exists(MODULESROOT.'branding/login-logo.png'))
+			{
+				$sDisplayIcon = utils::GetAbsoluteUrlModulesRoot().'branding/login-logo.png';
+			}
+			$this->add("<div id=\"login-logo\"><a href=\"".htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8')."\"><img title=\"$sVersionShort\" src=\"$sDisplayIcon\"></a></div>\n");
 			$this->add("<div id=\"login\">\n");
 			$this->add("<h1>".Dict::S('UI:Login:Welcome')."</h1>\n");
 			if ($bFailedLogin)
@@ -199,7 +204,12 @@ function DoCheckPwd()
 EOF
 );
 		$sIconUrl = Utils::GetConfig()->Get('app_icon_url');
-		$this->add("<div id=\"login-logo\"><a href=\"".htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8')."\"><img title=\"$sVersionShort\" src=\"../images/itop-logo.png\"></a></div>\n");
+		$sDisplayIcon = utils::GetAbsoluteUrlAppRoot().'images/itop-logo.png';
+		if (file_exists(MODULESROOT.'branding/main-logo.png'))
+		{
+			$sDisplayIcon = utils::GetAbsoluteUrlModulesRoot().'branding/main-logo.png';
+		}
+		$this->add("<div id=\"login-logo\"><a href=\"".htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8')."\"><img title=\"$sVersionShort\" src=\"$sDisplayIcon\"></a></div>\n");
 		$this->add("<div id=\"login\">\n");
 		$this->add("<h1>".Dict::S('UI:Login:ChangeYourPassword')."</h1>\n");
 		if ($bFailedLogin)

+ 13 - 2
application/portalwebpage.class.inc.php

@@ -1,5 +1,5 @@
 <?php
-// Copyright (C) 2010-2012 Combodo SARL
+// Copyright (C) 2010-2013 Combodo SARL
 //
 //   This file is part of iTop.
 //
@@ -19,7 +19,7 @@
 /**
  * Class PortalWebPage
  *
- * @copyright   Copyright (C) 2010-2012 Combodo SARL
+ * @copyright   Copyright (C) 2010-2013 Combodo SARL
  * @license     http://opensource.org/licenses/AGPL-3.0
  */
 
@@ -235,6 +235,17 @@ EOF
 
 		// For Wizard helper to process the ajax replies
 		$this->add('<div id="ajax_content"></div>');
+
+		// Customize the logo (unless a customer CSS has been defined)
+		if ($sAlternateStyleSheet == '')
+		{
+			if (file_exists(MODULESROOT.'branding/portal-logo.png'))
+			{
+				$sDisplayIcon = utils::GetAbsoluteUrlModulesRoot().'branding/portal-logo.png';
+				$this->add_style("div#portal #logo {background: url(\"$sDisplayIcon\") no-repeat scroll 0 0 transparent;}");
+			}
+		}
+
 }
 
 	public function SetCurrentTab($sTabLabel = '')

+ 7 - 2
pages/logoff.php

@@ -1,5 +1,5 @@
 <?php
-// Copyright (C) 2010-2012 Combodo SARL
+// Copyright (C) 2010-2013 Combodo SARL
 //
 //   This file is part of iTop.
 //
@@ -55,7 +55,12 @@ $oPage = new LoginWebPage();
 $oPage->no_cache();
 $sVersionShort = Dict::Format('UI:iTopVersion:Short', ITOP_VERSION);
 $sIconUrl = Utils::GetConfig()->Get('app_icon_url');
-$oPage->add("<div id=\"login-logo\"><a href=\"".htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8')."\"><img title=\"$sVersionShort\" src=\"../images/itop-logo-external.png\"></a></div>\n");
+$sDisplayIcon = utils::GetAbsoluteUrlAppRoot().'images/itop-logo-external.png';
+if (file_exists(MODULESROOT.'branding/login-logo.png'))
+{
+	$sDisplayIcon = utils::GetAbsoluteUrlModulesRoot().'branding/login-logo.png';
+}
+$oPage->add("<div id=\"login-logo\"><a href=\"".htmlentities($sIconUrl, ENT_QUOTES, 'UTF-8')."\"><img title=\"$sVersionShort\" src=\"$sDisplayIcon\"></a></div>\n");
 $oPage->add("<div id=\"login\">\n");
 $oPage->add("<h1>".Dict::S('UI:LogOff:ThankYou')."</h1>\n");
 

+ 1 - 1
portal/index.php

@@ -19,7 +19,7 @@
 /**
  * iTop User Portal main page
  *
- * @copyright   Copyright (C) 2010-2012 Combodo SARL
+ * @copyright   Copyright (C) 2010-2013 Combodo SARL
  * @license     http://opensource.org/licenses/AGPL-3.0
  */
 require_once('../approot.inc.php');

+ 49 - 1
setup/compiler.class.inc.php

@@ -316,7 +316,13 @@ EOF;
 		{
 			$this->CompileDictionary($oDictionaryNode, $sTempTargetDir, $sFinalTargetDir);
 		}
-	} // Compile()
+
+		// Compile the branding
+		//
+		$oBrandingNode = $this->oFactory->GetNodes('branding')->item(0);
+		$this->CompileBranding($oBrandingNode, $sTempTargetDir, $sFinalTargetDir);
+
+	} // DoCompile()
 
 	/**
 	 * Helper to form a valid ZList from the array built by GetNodeAsArrayOfItems()
@@ -1537,6 +1543,48 @@ EOF;
 			}
 		}
 	}
+
+
+	protected function CompileLogo($oBrandingNode, $sTempTargetDir, $sFinalTargetDir, $sNodeName, $sTargetFile)
+	{
+		if (($sIcon = $oBrandingNode->GetChildText($sNodeName)) && (strlen($sIcon) > 0))
+		{
+			if (substr($sIcon, 0, 8) == 'branding')
+			{
+				$sSourceFile = $sTempTargetDir.'/'.$sIcon;
+			}
+			else
+			{
+				$sSourceFile = APPROOT.$sIcon;
+			}
+			$sTargetFile = $sTempTargetDir.'/branding/'.$sTargetFile.'.png';
+
+			if (!file_exists($sSourceFile))
+			{
+				throw new Exception("Branding $sNodeName: could not find the file $sIcon ($sSourceFile)");
+			}
+
+			// Note: rename makes sense only when the file given as a file ref, otherwise it may be an item of the application (thus it must be kept there)
+			copy($sSourceFile, $sTargetFile);
+		}
+	}
+
+	protected function CompileBranding($oBrandingNode, $sTempTargetDir, $sFinalTargetDir)
+	{
+		if ($oBrandingNode)
+		{
+			// Transform file refs into files in the images folder
+			SetupUtils::builddir($sTempTargetDir.'/branding');
+			$this->CompileFiles($oBrandingNode, $sTempTargetDir.'/branding', $sFinalTargetDir.'/branding', 'branding');
+
+			$this->CompileLogo($oBrandingNode, $sTempTargetDir, $sFinalTargetDir, 'main_logo', 'main-logo');
+			$this->CompileLogo($oBrandingNode, $sTempTargetDir, $sFinalTargetDir, 'login_logo', 'login-logo');
+			$this->CompileLogo($oBrandingNode, $sTempTargetDir, $sFinalTargetDir, 'portal_logo', 'portal-logo');
+
+			// Cleanup the images directory (made by CompileFiles)
+			SetupUtils::rrmdir($sTempTargetDir.'/branding/images');
+		}
+	}
 }
 
 ?>