This commit is contained in:
franck
2013-06-19 10:33:29 +02:00
parent 89abfaad48
commit 8244efdb1d
9 changed files with 3 additions and 310 deletions

View File

@@ -1,87 +0,0 @@
<?php
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Thelia\Admin\Templating\Smarty;
use Thelia\Template\Assets\AsseticManager;
class AssetsManager extends AsseticManager {
const ASSET_TYPE_AUTO = '';
private $assetic_manager;
private $web_root;
private $path_relative_to_web_root;
/**
*
* @param string $web_root the disk path to the web root
* @param string $path_relative_to_web_root the path (relative to web root) where the assets will be generated
*/
public function __construct($web_root, $path_relative_to_web_root) {
parent::__construct();
$this->web_root = $web_root;
$this->path_relative_to_web_root = $path_relative_to_web_root;
$this->assetic_manager = new AsseticManager();
}
public function processSmartyPluginCall($assetType, $params, $content, \Smarty_Internal_Template $template, &$repeat) {
// Opening tag (first call only)
if ($repeat) {
$file = $params['file'];
$filters = isset($params['filters']) ? $params['filters'] : '';
$debug = isset($params['debug']) ? trim(strtolower($params['debug'])) == 'true' : false;
// Get template base path
$tpl_path = $template->source->filepath;
// Get basedir
$tpl_dir = dirname($tpl_path);
// Create absolute dir path
$asset_dir = realpath($tpl_dir.'/'.dirname($file));
$asset_file = basename($file);
if ($asset_dir === false) throw new \Exception("Failed to get real path of '".$tpl_dir.'/'.dirname($file)."'");
$url = $this->assetic_manager->asseticize(
$asset_dir.'/'.$asset_file,
$this->web_root."/".$this->path_relative_to_web_root,
$this->path_relative_to_web_root,
$assetType,
$filters,
$debug
);
$template->assign('asset_url', $url);
}
else if (isset($content)) {
return $content;
}
}
}

View File

@@ -1,150 +0,0 @@
<?php
/*************************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/*************************************************************************************/
namespace Thelia\Admin\Templating;
use \Smarty;
use Thelia\Admin\Templating\Smarty\AssetsManager;
// smarty configuration
class Template extends Smarty
{
private $asset_manager;
public function __construct()
{
parent::__construct();
$compile_dir = THELIA_ROOT . 'cache/smarty/compile';
if (! is_dir($compile_dir)) @mkdir($compile_dir, 0777, true);
$cache_dir = THELIA_ROOT . 'cache/smarty/cache';
if (! is_dir($cache_dir)) @mkdir($cache_dir, 0777, true);
$web_root = THELIA_WEB_DIR;
$asset_dir_from_web_root = 'assets/admin/default'; // FIXME
$this->asset_manager = new AssetsManager($web_root, $asset_dir_from_web_root);
$this->setTemplateDir(__DIR__.'/../template/default'); // FIXME - a parametrer
$this->setCompileDir($compile_dir);
$this->setCacheDir($cache_dir);
// Register translation function 'intl'
$this->registerPlugin('function', 'intl', array($this, 'smartyTranslate'));
// Register Thelia modules inclusion function 'thelia_module'
$this->registerPlugin('function', 'thelia_module', array($this, 'smartyTheliaModule'));
// Register asset management blocks
$this->registerPlugin('block', 'stylesheets', array($this, 'smartyBlockStylesheets'));
$this->registerPlugin('block', 'javascripts', array($this, 'smartyBlockJavascripts'));
$this->registerPlugin('block', 'images', array($this, 'smartyBlockImages'));
/*
$this->setConfigDir(GUESTBOOK_DIR . 'configs');
*/
// Set base config
$this->assign('lang', 'fr');
$this->assign('email', '');
}
public function smartyTranslate($params, &$smarty)
{
if (isset($params['l'])) {
$string = str_replace('\'', '\\\'', $params['l']);
}
else {
$string = '';
}
// TODO
return "[$string]";
}
public function smartyTheliaModule($params, &$smarty)
{
// TODO
return "";
}
public function smartyBlockJavascripts($params, $content, \Smarty_Internal_Template $template, &$repeat)
{
return $this->asset_manager->processSmartyPluginCall('js', $params, $content, $template, $repeat);
}
public function smartyBlockImages($params, $content, \Smarty_Internal_Template $template, &$repeat)
{
return $this->asset_manager->processSmartyPluginCall(AssetsManager::ASSET_TYPE_AUTO, $params, $content, $template, $repeat);
}
public function smartyBlockStylesheets($params, $content, \Smarty_Internal_Template $template, &$repeat)
{
return $this->asset_manager->processSmartyPluginCall('css', $params, $content, $template, $repeat);
}
public function render($templateName, $parameters)
{
$realTemplateName = $templateName . '.tpl';
/**
* Assign variables/objects to the templates.
*
* Description
* void assign(mixed var);
* void assign(string varname, mixed var, bool nocache);
*
* You can explicitly pass name/value pairs, or associative arrays
* containing the name/value pairs.
*
* If you pass the optional third nocache parameter of TRUE, the
* variable is assigned as nocache variable. See {@link http://www.smarty.net/docs/en/caching.cacheable.tpl#cacheability.variables} for details.
*
* Too learn more see {@link http://www.smarty.net/docs/en/api.assign.tpl}
*/
$this->smarty->assign($parameters);
/**
* This returns the template output instead of displaying it. Supply a
* valid template resource type and path. As an optional second
* parameter, you can pass a $cache id, see the caching section for more
* information.
*
* As an optional third parameter, you can pass a $compile_id. This is
* in the event that you want to compile different versions of the same
* template, such as having separate templates compiled for different
* languages. You can also set the $compile_id variable once instead of
* passing this to each call to this function.
*
* Too learn more see {@link http://www.smarty.net/docs/en/api.fetch.tpl}
*/
return $this->smarty->fetch($realTemplateName);
}
}
?>

View File

@@ -1,13 +0,0 @@
{* Include required JS files *}
{javascripts file='../assets/js/jquery.min.js'}
<link rel="stylesheet" href="{$asset_url}" target="screen">
{/javascripts}
{javascripts file='../assets/bootstrap/js/bootstrap.min.js'}
<link rel="stylesheet" href="{$asset_url}" target="screen">
{/javascripts}
{* TODO allow modules to include JS here *}
</body>
</html>

View File

@@ -1,24 +0,0 @@
<!DOCTYPE html>
<html lang="{$lang}">
<head>
<title>{intl l='Thelia Back Office'}{if ! empty($page_title)} - {$page_title}{/if}</title>
{images file='../assets/img/favicon.ico'}<link rel="shortcut icon" href="{$asset_url}" />{/images}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{stylesheets file='../assets/css/*' filters='less,cssrewrite'}
<link rel="stylesheet" href="{$asset_url}">
{/stylesheets}
{stylesheets file='../assets/bootstrap/css/bootstrap.min.css' filters='cssrewrite'}
<link rel="stylesheet" href="{$asset_url}">
{/stylesheets}
{stylesheets file='../assets/bootstrap/css/bootstrap-responsive.min.css' filters='cssrewrite'}
<link rel="stylesheet" href="{$asset_url}">
{/stylesheets}
{* TODO allow modules to include CSS here *}
</head>
<body>

View File

@@ -1,35 +0,0 @@
{$page_title={intl l='Thelia'}}
{include file='includes/header.inc.tpl'}
<div class="loginpage">
<div class="brandbar container">
<a class="brand" href="index.php">{images file='assets/img/logo-thelia-34px.png'}<img src="{$asset_url}" alt="{intl l='Thelia, solution e-commerce libre'}" />{/images}</a>
</div>
<div id="wrapper" class="container">
{thelia_module action='index_top'}
<div class="hero-unit">
<h1>{intl l='Thelia Back Office'}</h1>
<form action="/admin/login" method="post" class="well form-inline">
<input type="text" class="input" placeholder="{intl l='E-mail address'}" name="username" />
<input type="password" class="input" placeholder="{intl l='Password'}" name="password" />
<label class="checkbox"> <input type="checkbox" name="remember" value="yes"> {intl l='Remember me'}</label>
<button type="submit" class="btn btn-primary">{intl l='Login'} <i class="icon-play"></i></button>
</form>
</div>
<div class="row-fluid">
</div>
</div>
{thelia_module action='index_bottom'}
</div>
{include file='includes/footer.inc.tpl'}

View File

@@ -1 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>

View File

@@ -65,6 +65,9 @@ An image from asset directory :
{elseloop rel="catloop2"} {elseloop rel="catloop2"}
<p>... but catloop2 is still empty :-)</p> <p>... but catloop2 is still empty :-)</p>
{/elseloop} {/elseloop}
{ifloop rel="catloop1"}
<p>... and catloop1 is still NOT empty :-)</p>
{/ifloop}
</div> </div>
<div> <div>