Forgot to check default template set before falling back to plugin default template...
[squirrelmail.git] / class / template / template.class.php
index bf2dcc3fd51a35f21dad2b89dc475eb8dd82b180..84310b8dbe0a3827918ae42105ab49873543024e 100755 (executable)
@@ -267,20 +267,28 @@ return substr($this->template_dir, strlen(SM_PATH));
      *
      * Find the right template file.
      *
      *
      * Find the right template file.
      *
-     * Templates are expected to be found in the template set directory
-     * (for example SM_PATH/templates/<template name>/) or, in the case
-     * of plugin templates, in a plugin directory in the template set
-     * directory (for example, 
-     * SM_PATH/templates/<template name>/plugins/<plugin name>/) *OR* in 
-     * a template directory in the plugin as a fallback (for example,
-     * SM_PATH/plugins/<plugin name>/templates/<template name>/).  If 
-     * the correct file is not found for the current template set, a 
+     * Templates are expected to be found in the template set directory,
+     * for example:
+     *     SM_PATH/templates/<template name>/
+     * or, in the case of plugin templates, in a plugin directory in the 
+     * template set directory, for example:
+     *     SM_PATH/templates/<template name>/plugins/<plugin name>/
+     * *OR* in a template directory in the plugin as a fallback, for example:
+     *     SM_PATH/plugins/<plugin name>/templates/<template name>/
+     * If the correct file is not found for the current template set, a 
      * default template is loaded, which is expected to be found in the 
      * default template is loaded, which is expected to be found in the 
-     * default template directory (for example, SM_PATH/templates/default/)
-     * or for plugins, in a plugin directory in the default template set
-     * (for example, SM_PATH/templates/default/plugins/<plugin name>/),
-     * *OR* in a default template directory in the plugin as a fallback
-     * (for example, SM_PATH/plugins/<plugin name>/templates/default/).
+     * default template directory, for example:
+     *     SM_PATH/templates/default/
+     * or for plugins, in a plugin directory in the default template set,
+     * for example:
+     *     SM_PATH/templates/default/plugins/<plugin name>/
+     * *OR* in a default template directory in the plugin as a fallback,
+     * for example:
+     *     SM_PATH/plugins/<plugin name>/templates/default/
+     *
+     * Plugin authors must note that the $filename MUST be prefaced
+     * with "plugins/<plugin name>/" in order to correctly resolve the 
+     * template file.
      *
      * @param string $filename The name of the template file,
      *                         possibly prefaced with 
      *
      * @param string $filename The name of the template file,
      *                         possibly prefaced with 
@@ -313,19 +321,29 @@ return substr($this->template_dir, strlen(SM_PATH));
                           . $this->get_template_file_directory() 
                           . substr($filename, strlen($plugin_name) + 9);
 
                           . $this->get_template_file_directory() 
                           . substr($filename, strlen($plugin_name) + 9);
 
-                // no go, we have to get the default template
-                // from the plugin
+                // no go, we have to get the default template
+                // first try the default SM template
                 //
                 if (!file_exists($filepath)) {
 
                 //
                 if (!file_exists($filepath)) {
 
-                    $filepath = SM_PATH . 'plugins/' . $plugin_name . '/'
+                    $filepath = SM_PATH 
                               . $this->get_default_template_file_directory() 
                               . $this->get_default_template_file_directory() 
-                              . substr($filename, strlen($plugin_name) + 9);
+                              . $filename;
 
 
-                    // no dice whatsoever, return empty string
+                    // still no luck?  get default template from the plugin
                     //
                     if (!file_exists($filepath)) {
                     //
                     if (!file_exists($filepath)) {
-                        $filepath = '';
+
+                        $filepath = SM_PATH . 'plugins/' . $plugin_name . '/'
+                                  . $this->get_default_template_file_directory() 
+                                  . substr($filename, strlen($plugin_name) + 9);
+
+                        // no dice whatsoever, return empty string
+                        //
+                        if (!file_exists($filepath)) {
+                            $filepath = '';
+                        }
+
                     }
 
                 }
                     }
 
                 }