aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/SemanticScuttle/Model/Template.php104
-rw-r--r--src/SemanticScuttle/Service/Template.php50
2 files changed, 128 insertions, 26 deletions
diff --git a/src/SemanticScuttle/Model/Template.php b/src/SemanticScuttle/Model/Template.php
new file mode 100644
index 0000000..ff5fbbe
--- /dev/null
+++ b/src/SemanticScuttle/Model/Template.php
@@ -0,0 +1,104 @@
+<?php
+/**
+ * SemanticScuttle - your social bookmark manager.
+ *
+ * PHP version 5.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @author Eric Dane <ericdane@users.sourceforge.net>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+
+/**
+ * SemanticScuttle HTML templating system.
+ * This templating system is really, really simple and based
+ * on including php files while proving a set of
+ * variables in the template scope.
+ * When rendering templates, they are directly echoed to the
+ * browser. There is no in-built way to capture their output.
+ *
+ * @category Bookmarking
+ * @package SemanticScuttle
+ * @author Benjamin Huynh-Kim-Bang <mensonge@users.sourceforge.net>
+ * @author Christian Weiske <cweiske@cweiske.de>
+ * @author Eric Dane <ericdane@users.sourceforge.net>
+ * @license GPL http://www.gnu.org/licenses/gpl.html
+ * @link http://sourceforge.net/projects/semanticscuttle
+ */
+class SemanticScuttle_Model_Template
+{
+ /**
+ * Array of variables to be available in template
+ * scope.
+ *
+ * @var array
+ */
+ protected $vars = array();
+
+ /**
+ * File name of template
+ */
+ protected $file = '';
+
+ /**
+ * Template service instance
+ *
+ * @var SemanticScuttle_Service_Template
+ */
+ protected $ts;
+
+
+
+ /**
+ * Create a new template instance
+ *
+ * @param string $file Template filename,
+ * full path
+ * @param array $vars Template variables
+ * @param SemanticScuttle_Service_Template $ts Template service
+ */
+ public function __construct(
+ $file, $vars = null,
+ SemanticScuttle_Service_Template $ts = null
+ ) {
+ $this->vars = $vars;
+ $this->file = $file;
+ $this->ts = $ts;
+ }
+
+
+
+ /**
+ * Sets variables and includes the template file,
+ * causing it to be rendered.
+ *
+ * @return void
+ */
+ public function parse()
+ {
+ if (isset($this->vars)) {
+ extract($this->vars);
+ }
+ include $this->file;
+ }
+
+
+
+ /**
+ * Loads another template
+ *
+ * @param string $file Filename of template, relative
+ * to template directory
+ *
+ * @return SemanticScuttle_Service_Template Template object
+ */
+ public function includeTemplate($file)
+ {
+ return $this->ts->loadTemplate($file, $this->vars);
+ }
+}
+?> \ No newline at end of file
diff --git a/src/SemanticScuttle/Service/Template.php b/src/SemanticScuttle/Service/Template.php
index d175ce1..efa8d28 100644
--- a/src/SemanticScuttle/Service/Template.php
+++ b/src/SemanticScuttle/Service/Template.php
@@ -13,6 +13,8 @@
* @link http://sourceforge.net/projects/semanticscuttle
*/
+require_once 'SemanticScuttle/Model/Template.php';
+
/**
* SemanticScuttle template service.
*
@@ -26,8 +28,18 @@
*/
class SemanticScuttle_Service_Template extends SemanticScuttle_Service
{
+ /**
+ * Full path to template directory.
+ *
+ * Set in constructor to
+ * $GLOBALS['TEMPLATES_DIR']
+ *
+ * @var string
+ */
protected $basedir;
+
+
/**
* Returns the single service instance
*
@@ -44,11 +56,18 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
return $instance;
}
- public function __construct()
+
+
+ /**
+ * Create a new instance
+ */
+ protected function __construct()
{
$this->basedir = $GLOBALS['TEMPLATES_DIR'];
}
+
+
/**
* Loads and displays a template file.
*
@@ -56,41 +75,20 @@ class SemanticScuttle_Service_Template extends SemanticScuttle_Service
* to template dir
* @param array $vars Array of template variables.
*
- * @return Template Template object
+ * @return SemanticScuttle_Model_Template Template object
*/
function loadTemplate($template, $vars = null)
{
if (substr($template, -4) != '.php') {
$template .= '.php';
}
- $tpl = new Template($this->basedir .'/'. $template, $vars, $this);
+ $tpl = new SemanticScuttle_Model_Template(
+ $this->basedir .'/'. $template, $vars, $this
+ );
$tpl->parse();
return $tpl;
}
}
-class Template
-{
- var $vars = array();
- var $file = '';
- var $templateservice;
-
- function Template($file, $vars = null, &$templateservice)
- {
- $this->vars = $vars;
- $this->file = $file;
- $this->templateservice = $templateservice;
- }
-
- function parse() {
- if (isset($this->vars))
- extract($this->vars);
- include($this->file);
- }
-
- function includeTemplate($name) {
- return $this->templateservice->loadTemplate($name, $this->vars);
- }
-}
?> \ No newline at end of file