diff options
| author | Kevin Chabowski <kevin@kch42.de> | 2011-09-21 00:15:45 +0200 | 
|---|---|---|
| committer | Kevin Chabowski <kevin@kch42.de> | 2011-09-21 00:15:45 +0200 | 
| commit | fa1b95982a05ca860ada827b9fbdc9def1ac8952 (patch) | |
| tree | d0b5f73b4caf57009d41f52ed9b590d79db61ec7 /example | |
| parent | 9ea6438809d1019cda096ac101904735ee2fec8e (diff) | |
| download | ste-fa1b95982a05ca860ada827b9fbdc9def1ac8952.tar.gz ste-fa1b95982a05ca860ada827b9fbdc9def1ac8952.tar.bz2 ste-fa1b95982a05ca860ada827b9fbdc9def1ac8952.zip | |
Added documentation, an example program and fixed some bugs...
Diffstat (limited to 'example')
| -rw-r--r-- | example/index.php | 58 | ||||
| -rw-r--r-- | example/templates/src/articles.html | 49 | ||||
| -rw-r--r-- | example/templates/src/custom_tags.tpl | 19 | ||||
| -rw-r--r-- | example/templates/src/master.html | 41 | 
4 files changed, 167 insertions, 0 deletions
| diff --git a/example/index.php b/example/index.php new file mode 100644 index 0000000..3d2b1ca --- /dev/null +++ b/example/index.php @@ -0,0 +1,58 @@ +<?php + +# Example program to demonstrate the STE... + +require_once(dirname(__FILE__) . "/../stupid_template_engine.php"); + +# Initialize an STECore instance +$ste = new \ste\STECore( +	new \ste\FilesystemStorageAccess(                # The STECore needs a StorageAccess implementation, we are using the FilesystemStorageAccess, which comes with STE. +		dirname(__FILE__) . "/templates/src",    # FilesystemStorageAccess needs a directory, where the Templates are... +		dirname(__FILE__) . "/templates/transc"  # ...and a directory for the transcompiled templates (write permissions needed). +	) +); + +# First, lets define some custom tags. + +# <ste:uppercase> will exchange all letters with their uppercase complement +$ste->register_tag("uppercase", +	function($ste, $params, $sub) +	{ +		$text = $sub($ste);       # Get the tags content +		return strtoupper($text); # Return the new text. +	} +); + +# <ste:repeat> will repeat its content n times (<ste:for> could be used too, but i needed more examples :-P ) +$ste->register_tag("repeat", +	function($ste, $params, $sub) +	{ +		$output = ""; +		if(!is_numeric($params["n"])) +			throw new Exception("Sorry, but parameter n must be a number..."); +		 +		for($i = 0; $i < $params["n"]; ++$i) +			$output .= $sub($ste); +		 +		return $output; +	} +); + +# assign some data +$ste->vars["users"] = array( +	array("name" => "Foo", "username" => "foo", "online" => true), +	array("name" => "Bar", "username" => "bar", "online" => false), +	array("name" => "Baz", "username" => "baz", "online" => true) +); +$ste->vars["title"] = "cool"; +$ste->vars["articles"] = array( +	array("author" => "foo", "title" => "cool article", "timestamp" => 1316553353, "excerpt" => "bla", "full" => "blablabla"), +	array("author" => "bar", "title" => "awesome",      "timestamp" => 1316552000, "excerpt" => "...", "full" => ".........."), +	array("author" => "baz", "title" => "<ingenious",   "timestamp" => 1316551000, "excerpt" => "...", "full" => ".........."), +	array("author" => "baz", "title" => "whatever...",  "timestamp" => 1316550000, "excerpt" => "...", "full" => "..........") +); + +# Execute the template and output the result +echo $ste->exectemplate("articles.html"); + +?> diff --git a/example/templates/src/articles.html b/example/templates/src/articles.html new file mode 100644 index 0000000..e007f3e --- /dev/null +++ b/example/templates/src/articles.html @@ -0,0 +1,49 @@ +<ste:load name="custom_tags.tpl" /> +<ste:load name="master.html" /> +<ste:comment>Lets overwrite the content section</ste:comment> +<ste:block name="content"> +	<h2>Some Articles</h2> +	<ste:foreach_limit array="articles" value="article" max="3" counter="i"> +		<h3><ste:uppercase><ste:escape>$article[title]</ste:escape></ste:uppercase></h3> +		<div class="author">Author: <ste:escape>$article[author]</ste:escape></div> +		<div class="date"><ste:date timestamp="$article[timestamp]">d. M. Y, H:i:s</ste:date></div> +		<div class="article_content"> +			<ste:if> +				<ste:cmp var_a="i" op="eq" text_b="0" /> +				<ste:then> +					<ste:comment>First entry, lets show the whole text</ste:comment> +					$article[full] +				</ste:then> +				<ste:else> +					$article[excerpt] +				</ste:else> +			</ste:if> +		</div> +		<hr /> +	</ste:foreach_limit> +	<ste:comment>There are more than 3 articles?</ste:comment> +	<ste:set var="articles_n"><ste:arraylen array="articles" /></ste:set> +	<ste:if> +		<ste:cmp var_a="articles_n" op="gt" text_b="3" /> +		<ste:then> +			<p>There are <a href="#">more articles</a>.</p> +		</ste:then> +	</ste:if> +	 +	<h2>Some more useless demo stuff...</h2> +		<h3>Counting from 10 to 0...</h3> +		<p>but take only the even ones and multiply by 5...</p> +		<ste:for start="10" stop="0" step="-1" counter="i"> +			<ste:if> +				<ste:even>$i</ste:even> +				<ste:then> +					<ste:calc>$i * 5</ste:calc><br /> +				</ste:then> +			</ste:if> +		</ste:for> +		 +		<h3>Repeat some text...</h3> +		<ste:repeat n="10"> +			<p>Bla</p> +		</ste:repeat> +</ste:block> diff --git a/example/templates/src/custom_tags.tpl b/example/templates/src/custom_tags.tpl new file mode 100644 index 0000000..7e821c5 --- /dev/null +++ b/example/templates/src/custom_tags.tpl @@ -0,0 +1,19 @@ +<ste:comment>A foreach that will break after 'max' iterations</ste:comment> +<ste:mktag name="foreach_limit" mandatory="array|value|max"> +	<ste:foreach array="$_tag_parameters[array]" value="$_tag_parameters[value]" counter="i"> +		<ste:if> +			<ste:cmp var_a="i" op="gte" var_b="_tag_parameters[max]" /> +			<ste:then> +				<ste:break /> +			</ste:then> +		</ste:if> +		 +		<ste:if> +			$_tag_parameters[counter] +			<ste:then> +				<ste:set var="$_tag_parameters[counter]">$i</ste:set> +			</ste:then> +		</ste:if> +		<ste:tagcontent /> +	</ste:foreach> +</ste:mktag> diff --git a/example/templates/src/master.html b/example/templates/src/master.html new file mode 100644 index 0000000..fe6b1e6 --- /dev/null +++ b/example/templates/src/master.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en"> +<head> +	<title>?{$title|$title - example|example}</title><ste:comment>If $title given, set title to "$title - example", else "example"</ste:comment> +	<style type="text/css"> +		* { +			font-family: sans-serif; +		} +		.online { +			color: #0a0; +		} +		.offline { +			color: #555; +			font-style: italic; +			 +		} +	</style> +	 +</head> +<body> +	<h1>example</h1> +	 +	<div id="content"> +		<ste:block name="content"> +			Default content. +		</ste:block> +	</div> +	<div id="otherstuff"> +		<ste:block name="otherstuff"> +			<h2>List of users</h2> +			<ste:comment>Lets loop through the users...</ste:comment> +			<ul> +				<ste:foreach array="users" value="user"> +					<li class="?{$user[online]|online|offline}">$user[name] ($user[username])</li> +				</ste:foreach> +			</ul> +		</ste:block> +	</div> +</body> +</html> | 
