From 1798410d1248aa1fb0dd0b08fec1948c36aa8a26 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 13 Apr 2008 22:13:04 +0000 Subject: [PATCH] home command now loads its template into the master template --- .gitattributes | 1 + .../templates/de/code/selector_main.ctp | 6 +- .../templates/de/code/shipsimu_main.ctp | 8 +- .../ship-simu/templates/de/html/home.tpl | 7 ++ .../commands/local/class_LocalHomeCommand.php | 16 +++- .../main/template/class_TemplateEngine.php | 73 ++++++++++++++++--- 6 files changed, 92 insertions(+), 19 deletions(-) create mode 100644 application/ship-simu/templates/de/html/home.tpl diff --git a/.gitattributes b/.gitattributes index e4a4342..ccc214e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -117,6 +117,7 @@ application/ship-simu/templates/.htaccess -text application/ship-simu/templates/de/.htaccess -text application/ship-simu/templates/de/code/shipsimu_main.ctp -text application/ship-simu/templates/de/html/.htaccess -text +application/ship-simu/templates/de/html/home.tpl -text application/ship-simu/templates/de/html/selector_ship-simu.tpl -text db/.htaccess -text devel/.htaccess -text diff --git a/application/selector/templates/de/code/selector_main.ctp b/application/selector/templates/de/code/selector_main.ctp index 6e10877..a834a9b 100644 --- a/application/selector/templates/de/code/selector_main.ctp +++ b/application/selector/templates/de/code/selector_main.ctp @@ -1,15 +1,15 @@ -{?header:title={--WELCOME_APPLICATION_SELECTOR--}?} +{?header:title=[--WELCOME_APPLICATION_SELECTOR--]?} {?navigation:nav_row=home;imprint;contact?}
- {--HEADER_APPLICATION_SELECTOR--} + [--HEADER_APPLICATION_SELECTOR--]
{?selector_apps?}
-{?footer_msg:footer_msg={--FOOTER_APPLICATION_SELECTOR--}?} +{?footer_msg:footer_msg=[--FOOTER_APPLICATION_SELECTOR--]?} diff --git a/application/ship-simu/templates/de/code/shipsimu_main.ctp b/application/ship-simu/templates/de/code/shipsimu_main.ctp index 208aa2f..12429ff 100644 --- a/application/ship-simu/templates/de/code/shipsimu_main.ctp +++ b/application/ship-simu/templates/de/code/shipsimu_main.ctp @@ -1,11 +1,11 @@ -{?header:title={--WELCOME_SHIP_SIMU--}?} +{?header:title=[--WELCOME_SHIP_SIMU--]?} {?navigation:nav_row=home;imprint;contact?}
- {--HEADER_SHIP_SIMU--} + [--HEADER_SHIP_SIMU--]
@@ -13,7 +13,7 @@
- {--FOOTER_SHIP_SIMU--} + [--FOOTER_SHIP_SIMU--]
-{?footer_msg:footer_msg={--FOOTER_SHIP_SIMU--}?} +{?footer_msg:footer_msg=[--FOOTER_SHIP_SIMU--]?} diff --git a/application/ship-simu/templates/de/html/home.tpl b/application/ship-simu/templates/de/html/home.tpl new file mode 100644 index 0000000..a7f8e71 --- /dev/null +++ b/application/ship-simu/templates/de/html/home.tpl @@ -0,0 +1,7 @@ +
+
+ Willkommen zum Schiffsimulator "Ship-Simu"! +
+ + Hier muss noch ein einleitender Text für die Eingangsseite hin (Home!) +
diff --git a/inc/classes/main/commands/local/class_LocalHomeCommand.php b/inc/classes/main/commands/local/class_LocalHomeCommand.php index c670cb1..02f0928 100644 --- a/inc/classes/main/commands/local/class_LocalHomeCommand.php +++ b/inc/classes/main/commands/local/class_LocalHomeCommand.php @@ -78,11 +78,23 @@ class LocalHomeCommand extends BaseCommand implements Commandable { // Load the master template $masterTemplate = $appInstance->getMasterTemplate(); + // Load the home template + $templateInstance->loadWebTemplate("home"); + + // Assign the home template with the master template as a content ... ;) + $templateInstance->assignTemplateWithVariable("home", "content"); + // Load the master template $templateInstance->loadCodeTemplate($masterTemplate); - // Load the home template - $templateInstance->loadWebTemplate("home"); + // Compile it... + $templateInstance->compileTemplate(); + + // ... and all variables. This should be merged together in a pattern + // to make things easier. A cache mechanism should be added between + // these two calls to cache compiled templates. + $templateInstance->compileVariables(); + die("
".print_r($templateInstance, true)."
"); } } diff --git a/inc/classes/main/template/class_TemplateEngine.php b/inc/classes/main/template/class_TemplateEngine.php index 55bf000..5f13b6f 100644 --- a/inc/classes/main/template/class_TemplateEngine.php +++ b/inc/classes/main/template/class_TemplateEngine.php @@ -194,7 +194,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * Search for a variable in the stack * * @param $var The variable we are looking for - * @return $idx FALSE means not found, > 0 means found on a specific index + * @return $idx FALSE means not found, >=0 means found on a specific index */ private function isVariableAlreadySet ($var) { // First everything is not found @@ -217,6 +217,33 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate return $found; } + /** + * Return a content of a variable or null if not found + * + * @param $var The variable we are looking for + * @return $content Content of the variable or null if not found + */ + private function readVariable ($var) { + // First everything is not found + $content = null; + + // Now search for it + for ($idx = $this->varStack->getIterator(); $idx->valid(); $idx->next()) { + // Get current item + $currEntry = $idx->current(); + + // Is the entry found? + if ($currEntry['name'] == $var) { + // Found! + $content = $currEntry['value']; + break; + } + } + + // Return the current position + return $content; + } + /** * Add a variable to the stack * @@ -623,7 +650,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * [2] => Array - An array with right part of a match including ":" * [3] => Array - An array with right part of a match excluding ":" */ - private function analyzeTemplate ($templateMatches) { + private function analyzeTemplate (array $templateMatches) { // Backup raw template data $backup = $this->getRawTemplateData(); @@ -647,8 +674,17 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate // RECURSIVE PROTECTION! $this->loadedTemplates[] = $template; } catch (FilePointerNotOpenedException $e) { - // Template not found! - $this->rawTemplates[] = $template; + // Template not found, but maybe variable assigned? + if ($this->isVariableAlreadySet($template) !== false) { + // Use that content here + $this->loadedRawData[$template] = $this->readVariable($template); + + // Recursive protection: + $this->loadedTemplates[] = $template; + } else { + // Even this is not done... :/ + $this->rawTemplates[] = $template; + } } } // if ((!isset( ... @@ -701,7 +737,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * @param $templateMatches See method analyzeTemplate() * @return void */ - private function insertAllTemplates ($templateMatches) { + private function insertAllTemplates (array $templateMatches) { // Run through all loaded codes foreach ($this->loadedRawData as $template => $code) { @@ -760,7 +796,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * @param $varMatches An array full of variable/value pairs. * @return void */ - private function assignAllVariables ($varMatches) { + private function assignAllVariables (array $varMatches) { // Search for all variables foreach ($varMatches[1] as $key=>$var) { @@ -788,7 +824,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate * @param $templateMatches See method analyzeTemplate() for details * @return void */ - private function compileRawTemplateData ($templateMatches) { + private function compileRawTemplateData (array $templateMatches) { // Are some code-templates found which we need to compile? if (count($this->loadedRawData) > 0) { @@ -800,9 +836,8 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate // Lookup the matching variable data if (isset($templateMatches[3][$foundIndex])) { - // Split it up with another reg. exp. into variable=value pairs - @preg_match_all($this->regExpVarValue, $templateMatches[3][$foundIndex], $varMatches); + preg_match_all($this->regExpVarValue, $templateMatches[3][$foundIndex], $varMatches); // Assign all variables $this->assignAllVariables($varMatches); @@ -951,7 +986,7 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate $this->extractVariablesFromRawData($rawData); // Search for code-tags which are {? ?} - @preg_match_all($this->regExpCodeTags, $rawData, $templateMatches); + preg_match_all($this->regExpCodeTags, $rawData, $templateMatches); // Analyze the matches array if ((is_array($templateMatches)) && (count($templateMatches) == 4) && (count($templateMatches[0]) > 0)) { @@ -1044,6 +1079,24 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate // Return the requested instance return $this->helpers[$helperName]; } + + /** + * Assigns the last loaded raw template content with a given variable + * + * @param $templateName Name of the template we want to assign + * @param $variableName Name of the variable we want to assign + * @return void + */ + public function assignTemplateWithVariable ($templateName, $variableName) { + // Get the content from last loaded raw template + $content = $this->getRawTemplateData(); + + // Assign the variable + $this->assignVariable($variableName, $content); + + // Purge raw content + $this->setRawTemplateData(""); + } } // [EOF] -- 2.39.5