From: Roland Häder <roland@mxchange.org>
Date: Mon, 5 May 2008 21:29:32 +0000 (+0000)
Subject: Default news controller added, some fixes
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=0fd5fb832c877ace8a50db9eaf3caa207372f537;p=shipsimu.git

Default news controller added, some fixes
---

diff --git a/.gitattributes b/.gitattributes
index 3d2a700..adac8d9 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -144,6 +144,8 @@ inc/classes/exceptions/container/.htaccess -text
 inc/classes/exceptions/container/class_ContainerItemIsNoArrayException.php -text
 inc/classes/exceptions/container/class_ContainerItemIsNullException.php -text
 inc/classes/exceptions/container/class_ContainerMaybeDamagedException.php -text
+inc/classes/exceptions/controller/.htaccess -text
+inc/classes/exceptions/controller/class_DefaultControllerException.php -text
 inc/classes/exceptions/database/.htaccess -text
 inc/classes/exceptions/database/local_file/.htaccess -text
 inc/classes/exceptions/database/local_file/class_SavePathIsEmptyException.php -text
@@ -254,7 +256,8 @@ inc/classes/main/console/class_ConsoleTools.php -text
 inc/classes/main/controller/.htaccess -text
 inc/classes/main/controller/class_BaseController.php -text
 inc/classes/main/controller/default/.htaccess -text
-inc/classes/main/controller/default/class_DefaultController.php -text
+inc/classes/main/controller/default/class_LocalDefaultController.php -text
+inc/classes/main/controller/default/class_LocalDefaultNewsController.php -text
 inc/classes/main/controller/registration/.htaccess -text
 inc/classes/main/controller/registration/class_DefaultRegistrationController.php -text
 inc/classes/main/database/.htaccess -text
diff --git a/application/ship-simu/templates/de/html/home.tpl b/application/ship-simu/templates/de/html/home.tpl
index 2523adf..8625082 100644
--- a/application/ship-simu/templates/de/html/home.tpl
+++ b/application/ship-simu/templates/de/html/home.tpl
@@ -1,9 +1,7 @@
-<div id="home_content">
-	<div id="content_header">
-		Willkommen zum Schiffsimulator &quot;Ship-Simu&quot;!
-	</div>
+<div id="content_header">
+	Willkommen zum Schiffsimulator &quot;Ship-Simu&quot;!
+</div>
 
-	<div id="news_frame">
-		{?ship_simu_news?}
-	</div>
+<div id="news_frame">
+	{?ship_simu_news?}
 </div>
diff --git a/inc/classes/exceptions/controller/.htaccess b/inc/classes/exceptions/controller/.htaccess
new file mode 100644
index 0000000..3a42882
--- /dev/null
+++ b/inc/classes/exceptions/controller/.htaccess
@@ -0,0 +1 @@
+Deny from all
diff --git a/inc/classes/exceptions/controller/class_DefaultControllerException.php b/inc/classes/exceptions/controller/class_DefaultControllerException.php
new file mode 100644
index 0000000..aead2d4
--- /dev/null
+++ b/inc/classes/exceptions/controller/class_DefaultControllerException.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * This exception is thrown when the default controller is missing
+ *
+ * @author		Roland Haeder <webmaster@mxchange.org>
+ * @version		0.0.0
+ * @copyright	Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @license		GNU GPL 3.0 or any newer version
+ * @link 		http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class DefaultControllerException extends FrameworkException {
+	/**
+	 * The super constructor for all exceptions
+	 *
+	 * @param		$resolverInstance	An instance of a resolver class
+	 * @param		$code				An optional code for better debugging
+	 * @return	void
+	 */
+	public function __construct(ControllerResolver $resolverInstance, $code) {
+		// Prepare the message
+		$message = sprintf("[%s:%d] Cannot resolv default controller. Maybe missing?",
+			$resolverInstance->__toString(),
+			$this->getLine()
+		);
+
+		// Call parent contructor with message
+		parent::__construct($message, $code);
+	}
+}
+
+// [EOF]
+?>
diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php
index 9db3049..4abdf29 100644
--- a/inc/classes/main/class_BaseFrameworkSystem.php
+++ b/inc/classes/main/class_BaseFrameworkSystem.php
@@ -148,6 +148,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface {
 	const EXCEPTION_INVALID_COMMAND              = 0x031;
 	const EXCEPTION_INVALID_CONTROLLER           = 0x032;
 	const EXCEPTION_HEADERS_ALREADY_SENT         = 0x033;
+	const EXCEPTION_DEFAUL_CONTROLLER_GONE       = 0x034;
 
 	/**
 	 * In the super constructor these system classes shall be ignored or else
diff --git a/inc/classes/main/commands/local/class_LocalHomeCommand.php b/inc/classes/main/commands/local/class_LocalHomeCommand.php
index 4f96e30..58e1a76 100644
--- a/inc/classes/main/commands/local/class_LocalHomeCommand.php
+++ b/inc/classes/main/commands/local/class_LocalHomeCommand.php
@@ -39,9 +39,6 @@ class LocalHomeCommand extends BaseCommand implements Commandable {
 
 		// Clean up a little
 		$this->removeSystemArray();
-
-		// Set assigned controller
-		$this->setControllerName("default");
 	}
 
 	/**
@@ -60,7 +57,7 @@ class LocalHomeCommand extends BaseCommand implements Commandable {
 		// Return the prepared instance
 		return $commandInstance;
 	}
-	
+
 	/**
 	 * Executes the given command with given request and response objects
 	 *
diff --git a/inc/classes/main/controller/default/class_DefaultController.php b/inc/classes/main/controller/default/class_DefaultController.php
deleted file mode 100644
index e700a6e..0000000
--- a/inc/classes/main/controller/default/class_DefaultController.php
+++ /dev/null
@@ -1,96 +0,0 @@
-<?php
-/**
- * The default controller for all other requests
- *
- * @author		Roland Haeder <webmaster@ship-simu.org>
- * @version		0.0.0
- * @copyright	Copyright(c) 2007, 2008 Roland Haeder, this is free software
- * @license		GNU GPL 3.0 or any newer version
- * @link		http://www.ship-simu.org
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-class DefaultController extends BaseController implements Controller {
-	/**
-	 * Instance of a CommandResolver class
-	 */
-	private $resolverInstance = null;
-
-	/**
-	 * Private constructor
-	 *
-	 * @return	void
-	 */
-	protected function __construct () {
-		// Call parent constructor
-		parent::__construct(__CLASS__);
-
-		// Set part description
-		$this->setObjectDescription("Standart-Controller f&uuml;r alle &uuml;brigen Anfragen");
-
-		// Create unique ID number
-		$this->createUniqueID();
-
-		// Clean up a little
-		$this->removeSystemArray();
-	}
-
-	/**
-	 * Creates an instance of this class
-	 *
-	 * @param	$resolverInstance		An instance of a command resolver class
-	 * @return	$controllerInstance		A prepared instance of this class
-	 */
-	public final static function createDefaultController (CommandResolver $resolverInstance) {
-		// Create the instance
-		$controllerInstance = new DefaultController();
-
-		// Set the command resolver
-		$controllerInstance->setResolverInstance($resolverInstance);
-
-		// Return the prepared instance
-		return $controllerInstance;
-	}
-
-	/**
-	 * Setter for a command resolver instance
-	 *
-	 * @param	$resolverInstance	An instance of a command resolver class
-	 * @return	void
-	 */
-	public final function setResolverInstance (CommandResolver $resolverInstance) {
-		$this->resolverInstance = $resolverInstance;
-	}
-
-	/**
-	 * Handles the given request and response
-	 *
-	 * @param	$requestInstance	An instance of a request class
-	 * @param	$responseInstance	An instance of a response class
-	 * @return	void
-	 */
-	public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) {
-		// Get the command instance
-		$commandInstance = $this->resolverInstance->resolvCommandByRequest($requestInstance);
-
-		// Execute the command
-		$commandInstance->execute($requestInstance, $responseInstance);
-
-		// Flush the response out
-		$responseInstance->flushResponse();
-	}
-}
-
-// [EOF]
-?>
diff --git a/inc/classes/main/controller/default/class_LocalDefaultController.php b/inc/classes/main/controller/default/class_LocalDefaultController.php
new file mode 100644
index 0000000..a79243a
--- /dev/null
+++ b/inc/classes/main/controller/default/class_LocalDefaultController.php
@@ -0,0 +1,96 @@
+<?php
+/**
+ * The default controller for all other requests
+ *
+ * @author		Roland Haeder <webmaster@ship-simu.org>
+ * @version		0.0.0
+ * @copyright	Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @license		GNU GPL 3.0 or any newer version
+ * @link		http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class LocalLocalDefaultController extends BaseController implements Controller {
+	/**
+	 * Instance of a CommandResolver class
+	 */
+	private $resolverInstance = null;
+
+	/**
+	 * Private constructor
+	 *
+	 * @return	void
+	 */
+	protected function __construct () {
+		// Call parent constructor
+		parent::__construct(__CLASS__);
+
+		// Set part description
+		$this->setObjectDescription("Standart-Controller f&uuml;r alle &uuml;brigen Anfragen");
+
+		// Create unique ID number
+		$this->createUniqueID();
+
+		// Clean up a little
+		$this->removeSystemArray();
+	}
+
+	/**
+	 * Creates an instance of this class
+	 *
+	 * @param	$resolverInstance		An instance of a command resolver class
+	 * @return	$controllerInstance		A prepared instance of this class
+	 */
+	public final static function createLocalDefaultController (CommandResolver $resolverInstance) {
+		// Create the instance
+		$controllerInstance = new LocalDefaultController();
+
+		// Set the command resolver
+		$controllerInstance->setResolverInstance($resolverInstance);
+
+		// Return the prepared instance
+		return $controllerInstance;
+	}
+
+	/**
+	 * Setter for a command resolver instance
+	 *
+	 * @param	$resolverInstance	An instance of a command resolver class
+	 * @return	void
+	 */
+	public final function setResolverInstance (CommandResolver $resolverInstance) {
+		$this->resolverInstance = $resolverInstance;
+	}
+
+	/**
+	 * Handles the given request and response
+	 *
+	 * @param	$requestInstance	An instance of a request class
+	 * @param	$responseInstance	An instance of a response class
+	 * @return	void
+	 */
+	public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) {
+		// Get the command instance
+		$commandInstance = $this->resolverInstance->resolvCommandByRequest($requestInstance);
+
+		// Execute the command
+		$commandInstance->execute($requestInstance, $responseInstance);
+
+		// Flush the response out
+		$responseInstance->flushResponse();
+	}
+}
+
+// [EOF]
+?>
diff --git a/inc/classes/main/controller/default/class_LocalDefaultNewsController.php b/inc/classes/main/controller/default/class_LocalDefaultNewsController.php
new file mode 100644
index 0000000..90d3ec7
--- /dev/null
+++ b/inc/classes/main/controller/default/class_LocalDefaultNewsController.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * The default controller with news for e.g. home or news page
+ *
+ * @author		Roland Haeder <webmaster@ship-simu.org>
+ * @version		0.0.0
+ * @copyright	Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @license		GNU GPL 3.0 or any newer version
+ * @link		http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+class LocalDefaultNewsController extends BaseController implements Controller {
+	/**
+	 * Instance of a CommandResolver class
+	 */
+	private $resolverInstance = null;
+
+	/**
+	 * Private constructor
+	 *
+	 * @return	void
+	 */
+	protected function __construct () {
+		// Call parent constructor
+		parent::__construct(__CLASS__);
+
+		// Set part description
+		$this->setObjectDescription("Standart-Controller mit News-Auflistung");
+
+		// Create unique ID number
+		$this->createUniqueID();
+
+		// Clean up a little
+		$this->removeSystemArray();
+	}
+
+	/**
+	 * Creates an instance of this class
+	 *
+	 * @param	$resolverInstance		An instance of a command resolver class
+	 * @return	$controllerInstance		A prepared instance of this class
+	 */
+	public final static function createLocalDefaultNewsController (CommandResolver $resolverInstance) {
+		// Create the instance
+		$controllerInstance = new LocalDefaultNewsController();
+
+		// Set the command resolver
+		$controllerInstance->setResolverInstance($resolverInstance);
+
+		// Return the prepared instance
+		return $controllerInstance;
+	}
+
+	/**
+	 * Setter for a command resolver instance
+	 *
+	 * @param	$resolverInstance	An instance of a command resolver class
+	 * @return	void
+	 */
+	public final function setResolverInstance (CommandResolver $resolverInstance) {
+		$this->resolverInstance = $resolverInstance;
+	}
+
+	/**
+	 * Handles the given request and response
+	 *
+	 * @param	$requestInstance	An instance of a request class
+	 * @param	$responseInstance	An instance of a response class
+	 * @return	void
+	 */
+	public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) {
+		// Get the command instance
+		$commandInstance = $this->resolverInstance->resolvCommandByRequest($requestInstance);
+
+		// Get the news page variable from the request instance
+		$newsPage = $requestInstance->getRequestElement("news_page");
+
+		// Load the news here
+		$this->loadNews($newsPage);
+
+		// Execute the command
+		$commandInstance->execute($requestInstance, $responseInstance);
+
+		// Flush the response out
+		$responseInstance->flushResponse();
+	}
+
+	/**
+	 * Loads news from the connected database for later usage
+	 *
+	 * @param	$newsPage	Page of listed news we want to read
+	 * @return	void
+	 */
+	private function loadNews ($newsPage) {
+	}
+}
+
+// [EOF]
+?>
diff --git a/inc/classes/main/resolver/class_BaseResolver.php b/inc/classes/main/resolver/class_BaseResolver.php
index 74cfa47..d442ef3 100644
--- a/inc/classes/main/resolver/class_BaseResolver.php
+++ b/inc/classes/main/resolver/class_BaseResolver.php
@@ -37,9 +37,9 @@ class BaseResolver extends BaseFrameworkSystem {
 	 *
 	 * @return	void
 	 */
-	protected function __construct () {
+	protected function __construct ($class) {
 		// Call parent constructor
-		parent::__construct(__CLASS__);
+		parent::__construct($class);
 
 		// Clean up a little
 		$this->removeSystemArray();
diff --git a/inc/classes/main/resolver/local/class_LocalControllerResolver.php b/inc/classes/main/resolver/local/class_LocalControllerResolver.php
index 8ff0788..9c94209 100644
--- a/inc/classes/main/resolver/local/class_LocalControllerResolver.php
+++ b/inc/classes/main/resolver/local/class_LocalControllerResolver.php
@@ -140,7 +140,7 @@ class LocalControllerResolver extends BaseResolver implements ControllerResolver
 		$controllerInstance = null;
 
 		// Default controller
-		$class = "DefaultController";
+		$class = "LocalDefaultController";
 
 		// Generate the class name
 		if ($commandName != $defaultCommand) {
@@ -148,6 +148,9 @@ class LocalControllerResolver extends BaseResolver implements ControllerResolver
 			$class = sprintf("Local%sController",
 				ucfirst(strtolower($commandName))
 			);
+		} elseif ($this->getConfigInstance()->readConfig("home_with_news") == "Y") {
+			// Yes, display news in home then set default controller with news
+			$class = "LocalDefaultNewsController";
 		}
 
 		// Is this class loaded?