home command now loads its template into the master template
authorRoland Häder <roland@mxchange.org>
Sun, 13 Apr 2008 22:13:04 +0000 (22:13 +0000)
committerRoland Häder <roland@mxchange.org>
Sun, 13 Apr 2008 22:13:04 +0000 (22:13 +0000)
.gitattributes
application/selector/templates/de/code/selector_main.ctp
application/ship-simu/templates/de/code/shipsimu_main.ctp
application/ship-simu/templates/de/html/home.tpl [new file with mode: 0644]
inc/classes/main/commands/local/class_LocalHomeCommand.php
inc/classes/main/template/class_TemplateEngine.php

index e4a4342..ccc214e 100644 (file)
@@ -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
index 6e10877..a834a9b 100644 (file)
@@ -1,15 +1,15 @@
 <!-- A compileable template for the application selector //-->
 
-{?header:title={--WELCOME_APPLICATION_SELECTOR--}?}
+{?header:title=[--WELCOME_APPLICATION_SELECTOR--]?}
 
 {?navigation:nav_row=home;imprint;contact?}
 
 <div class="selector_header">
-       {--HEADER_APPLICATION_SELECTOR--}
+       [--HEADER_APPLICATION_SELECTOR--]
 </div>
 
 <div class="selector_list_apps">
        {?selector_apps?}
 </div>
 
-{?footer_msg:footer_msg={--FOOTER_APPLICATION_SELECTOR--}?}
+{?footer_msg:footer_msg=[--FOOTER_APPLICATION_SELECTOR--]?}
index 208aa2f..12429ff 100644 (file)
@@ -1,11 +1,11 @@
 <!-- The compileable main template for the ship simulator //-->
 
-{?header:title={--WELCOME_SHIP_SIMU--}?}
+{?header:title=[--WELCOME_SHIP_SIMU--]?}
 
 {?navigation:nav_row=home;imprint;contact?}
 
 <div class="shipsimu_header">
-       {--HEADER_SHIP_SIMU--}
+       [--HEADER_SHIP_SIMU--]
 </div>
 
 <div class="shipsimu_content">
@@ -13,7 +13,7 @@
 </div>
 
 <div class="shipsimu_content">
-       {--FOOTER_SHIP_SIMU--}
+       [--FOOTER_SHIP_SIMU--]
 </div>
 
-{?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 (file)
index 0000000..a7f8e71
--- /dev/null
@@ -0,0 +1,7 @@
+<div class="home_content">
+       <div class="content_header">
+               Willkommen zum Schiffsimulator &quot;Ship-Simu&quot;!
+       </div>
+
+       Hier muss noch ein einleitender Text f&uuml;r die Eingangsseite hin (Home!)
+</div>
index c670cb1..02f0928 100644 (file)
@@ -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("<pre>".print_r($templateInstance, true)."</pre>");
        }
 }
 
index 55bf000..5f13b6f 100644 (file)
@@ -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
@@ -218,6 +218,33 @@ class TemplateEngine extends BaseFrameworkSystem implements CompileableTemplate
        }
 
        /**
+        * 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
         *
         * @param               $var            The variable we are looking for
@@ -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]