PHP Classes

File: test/08-web/test.php

Recommend this page to a friend!
  Classes of Nikos M.   Contemplate   test/08-web/test.php   Download  
File: test/08-web/test.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: Contemplate
Template engine that provides programming controls
Author: By
Last change:
Date: 1 year ago
Size: 4,434 bytes
 

Contents

Class file image Download
<?php
/**
* Contemplate
* Light-weight Templating Engine for PHP, Python, Node and client-side JavaScript
*
* https://github.com/foo123/Contemplate
*
* @inspired by : Simple JavaScript Templating, John Resig - http://ejohn.org/ - MIT Licensed
* http://ejohn.org/blog/javascript-micro-templating/
*
* Test
*
**/

// run as: "php -S localhost:8001 test.php"

define('ABSPATH', dirname(__FILE__));

$uri = /*urldecode(*/parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)/*)*/;

if (
$uri === '') $uri = '/';

if (
$uri !== '/' && file_exists(ABSPATH . '/' . $uri))
{
    return
false; // existing file, serve as-is
}

// include the Contemplate Class
include_once(ABSPATH.'/../../src/php/Contemplate.php');

function
test_plugin($v = null)
{
    if (
$v) return 'Plugin Test value: ' . $v;
    return
'Plugin Test no value given';
}
function
print_plugin($v = null)
{
    return
'<pre>' . print_r($v, true) . '</pre>';
}

/*function uuid_override($args)
{
    return 'uuid overriden';
}
// does not override native Contemplate::uuid method,
// so make this expected behaviour for other Contemplate implementations as well
Contemplate::addPlugin('uuid', 'uuid_override');*/

Contemplate::addPlugin('plg_test', 'test_plugin');
Contemplate::addPlugin('plg_print', 'print_plugin');
function
bracket($v = null)
{
    return
'[[' . $v . ']]';
}
Contemplate::addPlugin('inlinedBracket', Contemplate::inline('bracket($0)',array('$0'=>0),false));

// set the cache directory (make sure to exist)
Contemplate::setCacheDir(ABSPATH.'/_tplcache');

// dynamically update the cached template if original template has changed
Contemplate::setCacheMode(Contemplate::CACHE_TO_DISK_AUTOUPDATE);

// add the templates paths
global $TPLS;
$TPLS = array(
   
'main' => ABSPATH.'/_tpls/main.tpl.html',
   
'base' => ABSPATH.'/_tpls/base.tpl.html',
   
'demo' => ABSPATH.'/_tpls/demo.tpl.html',
   
'sub' => ABSPATH.'/_tpls/sub.tpl.html',
   
'date' => ABSPATH.'/_tpls/date.tpl.html',
   
// add an inline template
   
'inlinetpl' => array('<% super("block") %><% for($list as $l=>$item) %> <% $l %> <% $item %><br /><% endfor %>')
);
//Contemplate::add($TPLS);
Contemplate::setTemplateFinder(function($tpl){
    global
$TPLS;
    return isset(
$TPLS[$tpl]) ? $TPLS[$tpl] : null;
});

/*print_r(Contemplate::parseTpl( '<% %for($list as $l=>$item) %> <% $l %> <% $item %><br /><% %endfor() %>' ));*/

/* localize some strings */
/* make sure this file is encoded in UTF-8 */
/*Contemplate::setLocaleStrings(array(
    "Jul" => "????",
    "Sep" => "????"
));*/


// the data to be used by the templates
$listdata = array('list'=>array('item1', 'item2', 'item3'));

$data = array(
   
'users' => array(
        array(
            array(
'name'=>'u1', 'text'=>'text1', 'id'=>'id1'),
            array(
'name'=>'u2', 'text'=>'text2', 'id'=>'id2', 'key1'=>'key1'),
            array(
'name'=>'u3', 'text'=>'text3', 'id'=>'id3'),
        ),
        array(
            array(
'name'=>'u4', 'text'=>'text4', 'id'=>'id4'),
            array(
'name'=>'u5', 'text'=>'text5', 'id'=>'id5'),
            array(
'name'=>'u6', 'text'=>'text6', 'id'=>'id6', 'key'=>array('key1'=>'key1')),
        )
    ),
   
'table_data' => array(
       
'column1' => array(1,2,3),
       
'column2' => array(4,5,6),
       
'column3' => array(7,8,9),
    ),
   
'table_options' => array('header'=>true),
   
'select_data' => array(
       
'group1' => array(1=>'label 1',2=>'label 2',3=>'label 3'),
       
'group2' => array(4=>'label 4',5=>'label 5',6=>'label 6'),
       
'group3' => array(7=>'label 7',8=>'label 8',9=>'label 9'),
    ),
   
'select_options' => array(
       
'optgroups' => array('group1', 'group2', 'group3'),
       
'selected' => 3,
       
'multiple' => false,
       
'style' => 'width:200px;'
   
)
);

$main_template_data = array(
   
'templates' => array(
       
'base' => Contemplate::getTemplateContents('base'),
       
'demo' => Contemplate::getTemplateContents('demo'),
       
'sub' => Contemplate::getTemplateContents('sub'),
       
'date' => Contemplate::getTemplateContents('date')
    ),
   
'contemplate_version' => Contemplate::VERSION,
   
//'sepleft' => $sepleft,
    //'sepright' => $sepright,
   
'data_client' => json_encode($data),
   
'render_server' => Contemplate::tpl('demo', $data),
   
'render_inline' => Contemplate::tpl('inlinetpl', $listdata, array('separators' => '<% %>'))
);

echo
Contemplate::tpl('main', $main_template_data);