From: Roland Häder 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 @@ -
-
- Willkommen zum Schiffsimulator "Ship-Simu"! -
+
+ Willkommen zum Schiffsimulator "Ship-Simu"! +
-
- {?ship_simu_news?} -
+
+ {?ship_simu_news?}
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 @@ + + * @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 . + */ +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 @@ - - * @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 . - */ -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ür alle ü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 @@ + + * @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 . + */ +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ür alle ü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 @@ + + * @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 . + */ +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?