diff --git a/includes/defines.php b/includes/defines.php index adae618e..3b87eba1 100644 --- a/includes/defines.php +++ b/includes/defines.php @@ -30,6 +30,7 @@ define('CACHETYPE_TOOLTIP', 1); define('CACHETYPE_BUFF', 2); // only used by spells obviously define('CACHETYPE_SEARCH', 3); define('CACHETYPE_XML', 4); // only used by items +define('CACHETYPE_NONE', 5); // page will not be cached define('SEARCH_TYPE_REGULAR', 0x10000000); define('SEARCH_TYPE_OPEN', 0x20000000); diff --git a/includes/genericPage.class.php b/includes/genericPage.class.php index cc7f9ef3..6a2bb92b 100644 --- a/includes/genericPage.class.php +++ b/includes/genericPage.class.php @@ -24,6 +24,7 @@ trait ListPage { protected $category = null; protected $validCats = []; + protected $typeId = 0; function generateCacheKey($cacheType) { @@ -53,16 +54,16 @@ class GenericPage protected $tabId = 0; protected $community = ['co' => [], 'sc' => [], 'vi' => []]; - private $js = []; - private $css = []; + protected $js = []; + protected $css = []; private $gLocale = []; protected $gPageInfo = []; private $gUser = []; - protected function generatePath() {} - protected function generateTitle() {} - protected function generateContent() {} + protected function generatePath() {} + protected function generateTitle() {} + protected function generateContent() {} public function __construct() { @@ -86,7 +87,10 @@ class GenericPage if (!$this->tpl) return; + } + private function prepare() + { if (!$this->loadCache()) { // run generators @@ -105,22 +109,23 @@ class GenericPage $this->community = CommunityContent::getAll($this->type, $this->typeId); $this->mysql = DB::Aowow()->getStatistics(); - - $this->display(); } - public function display($override = '') - { + public function display($override = '') + { + if (!$override) + $this->prepare(); + if (!$override && !$this->isSaneInclude('template/pages/', $this->tpl)) die(User::isInGroup(U_GROUP_STAFF) ? 'Error: nonexistant template requestst: template/pages/'.$this->tpl.'.tpl.php' : null); $this->addAnnouncements(); include('template/pages/'.($override ? $override : $this->tpl).'.tpl.php'); - } + } - public function gBrick($file, array $localVars = []) - { + public function gBrick($file, array $localVars = []) + { foreach ($localVars as $n => $v) $$n = $v; @@ -128,10 +133,10 @@ class GenericPage echo !User::isInGroup(U_GROUP_STAFF) ? "\n\nError: nonexistant template requestst: template/globals/".$file.".tpl.php\n\n" : null; else include('template/globals/'.$file.'.tpl.php'); - } + } - public function brick($file, array $localVars = []) - { + public function brick($file, array $localVars = []) + { foreach ($localVars as $n => $v) $$n = $v; @@ -139,10 +144,10 @@ class GenericPage echo User::isInGroup(U_GROUP_STAFF) ? "\n\nError: nonexistant template requestst: template/bricks/".$file.".tpl.php\n\n" : null; else include('template/bricks/'.$file.'.tpl.php'); - } + } - public function lvBrick($file, array $localVars = []) - { + public function lvBrick($file, array $localVars = []) + { foreach ($localVars as $n => $v) $$n = $v; @@ -150,7 +155,7 @@ class GenericPage echo User::isInGroup(U_GROUP_STAFF) ? "\n\nError: nonexistant template requestst: template/listviews/".$file.".tpl.php\n\n" : null; else include('template/listviews/'.$file.'.tpl.php'); - } + } private function isSaneInclude($path, $file) { @@ -163,31 +168,41 @@ class GenericPage return true; } - public function addJS($name, $unshift = false) - { - if (!in_array($name, $this->js)) - { - if ($unshift) - array_unshift($this->js, $name); - else - $this->js[] = $name; - } - } + public function addJS($name, $unshift = false) + { + if (is_array($name)) + { + foreach ($name as $n) + $this->addJS($n, $unshift); + } + else if (!in_array($name, $this->js)) + { + if ($unshift) + array_unshift($this->js, $name); + else + $this->js[] = $name; + } + } - public function addCSS($name, $unshift = false) - { - if (!in_array($name, $this->css)) - { - if ($unshift) - array_unshift($this->css, $name); - else - $this->css[] = $name; - } - } + public function addCSS($struct, $unshift = false) + { + if (is_array($struct) && empty($struct['path']) && empty($struct['string'])) + { + foreach ($struct as $s) + $this->addCSS($s, $unshift); + } + else if (!in_array($struct, $this->css)) + { + if ($unshift) + array_unshift($this->css, $struct); + else + $this->css[] = $struct; + } + } private function addArticle() // fetch article & static infobox { - if (empty($this->type) || !isset($this->typeId)) + if (empty($this->type) && !isset($this->typeId)) return; $article = DB::Aowow()->selectRow( @@ -216,10 +231,17 @@ class GenericPage } } + $replace = array( + ' '' => 'scr"+"ipt>', + 'HOST_URL' => HOST_URL, + 'STATIC_URL' => STATIC_URL + ); $this->article = array( - 'text' => $article['article'], + 'text' => strtr($article['article'], $replace), 'params' => [] ); + if (empty($this->infobox) && !empty($article['quickInfo'])) $this->infobox = $article['quickInfo']; diff --git a/index.php b/index.php index a803268f..22ef36af 100644 --- a/index.php +++ b/index.php @@ -20,11 +20,12 @@ if (version_compare(PHP_VERSION, '5.4.0') <= 0) (new GenericPage)->maintenance(); } +$altClass = ''; switch ($pageCall) { /* called by user */ case '': // no parameter given -> MainPage - $pageCall = 'main'; + $altClass = 'main'; case 'account': // account management [nyi] case 'achievement': case 'achievements': @@ -52,6 +53,9 @@ switch ($pageCall) case 'objects': case 'pet': case 'pets': + case 'petcalc': // tool: pet talent calculator + if ($pageCall == 'petcalc') + $altClass = 'talent'; case 'profile': // character profiler [nyi] case 'profiles': // character profile listing [nyi] case 'quest': @@ -65,13 +69,14 @@ switch ($pageCall) // case 'sounds': case 'spell': case 'spells': + case 'talent': // tool: talent calculator case 'title': case 'titles': case 'user': // tool: user profiles [nyi] case 'zone': case 'zones': - $_ = $pageCall.'Page'; - new $_($pageParam); + $_ = ($altClass ?: $pageCall).'Page'; + (new $_($pageCall, $pageParam))->display(); break; /* other pages */ case 'whats-new': @@ -81,7 +86,7 @@ switch ($pageCall) case 'help': case 'faq': case 'aboutus': - new MorePage($pageCall); + (new MorePage($pageCall, $pageParam))->display(); break; case 'latest-additions': case 'latest-articles': @@ -94,11 +99,6 @@ switch ($pageCall) case 'random': require 'pages/miscTools.php'; break; - case 'petcalc': // tool: pet talent calculator - $petCalc = true; - case 'talent': // tool: talent calculator - require 'pages/talent.php'; - break; /* called by script */ case 'data': // tool: dataset-loader case 'cookie': // lossless cookies and user settings diff --git a/pages/class.php b/pages/class.php index dd5b6abb..9fe480df 100644 --- a/pages/class.php +++ b/pages/class.php @@ -18,11 +18,13 @@ class ClassPage extends GenericPage protected $mode = CACHETYPE_PAGE; protected $js = ['swfobject.js']; - public function __construct($id) + public function __construct($__, $id) { + parent::__construct(); + $this->typeId = intVal($id); - $this->subject = new CharClassList(array(['id', $id])); + $this->subject = new CharClassList(array(['id', $this->typeId])); if ($this->subject->error) $this->notFound(Lang::$game['class']); @@ -32,8 +34,6 @@ class ClassPage extends GenericPage 'typeId' => $this->typeId, 'name' => $this->name ); - - parent::__construct(); } protected function generatePath() diff --git a/pages/classes.php b/pages/classes.php index a8de57ad..3afec19a 100644 --- a/pages/classes.php +++ b/pages/classes.php @@ -18,9 +18,9 @@ class ClassesPage extends GenericPage public function __construct() { - $this->name = Util::ucFirst(Lang::$game['classes']); - parent::__construct(); + + $this->name = Util::ucFirst(Lang::$game['classes']); } protected function generateContent() diff --git a/pages/compare.php b/pages/compare.php index 1e0c54d1..a0ad3aac 100644 --- a/pages/compare.php +++ b/pages/compare.php @@ -4,79 +4,94 @@ if (!defined('AOWOW_REVISION')) die('invalid access'); - // tabId 1: Tools g_initHeader() -$pageData = array( - 'items' => null, - 'summary' => '[]', - 'title' => Lang::$main['compareTool'], - 'tab' => 1, - 'reqCSS' => array( - ['path' => STATIC_URL.'/css/Summary.css'], - ['path' => STATIC_URL.'/css/Summary_ie6.css', 'ieCond' => 'lte IE 6'], - ), - 'reqJS' => array( - STATIC_URL.'/js/profile.js', - STATIC_URL.'/js/Draggable.js', - STATIC_URL.'/js/filters.js', - STATIC_URL.'/js/Summary.js', - STATIC_URL.'/js/swfobject.js', - '?data=weight-presets.gems.enchants.itemsets&locale='.User::$localeId.'&t='.$_SESSION['dataKey'] - ) -); -$compareString = ''; - -// prefer $_GET over $_COOKIE -if (!empty($_GET['compare'])) - $compareString = $_GET['compare']; -else if (!empty($_COOKIE['compare_groups'])) - $compareString = urldecode($_COOKIE['compare_groups']); - -if ($compareString) +class ComparePage extends GenericPage { - $sets = explode(";", $compareString); - $items = $outSet = []; - foreach ($sets as $set) + protected $tpl = 'compare'; + protected $tabId = 1; + protected $mode = CACHETYPE_PAGE; + protected $js = array( + 'profile.js', + 'Draggable.js', + 'filters.js', + 'Summary.js', + 'swfobject.js', + ); + protected $css = array( + ['path' => 'Summary.css'], + ['path' => 'Summary_ie6.css', 'ieCond' => 'lte IE 6'], + ); + + protected $summary = []; + protected $cmpItems = []; + + private $compareString = ''; + + public function __construct() { - $itemsting = explode(":", $set); - $outString = []; - foreach ($itemsting as $substring) + parent::__construct(); + + // prefer $_GET over $_COOKIE + if (!empty($_GET['compare'])) + $this->compareString = $_GET['compare']; + else if (!empty($_COOKIE['compare_groups'])) + $this->compareString = urldecode($_COOKIE['compare_groups']); + + $this->name = Lang::$main['compareTool']; + } + + protected function generateContent() + { + // add conditional js + $this->addJS('?data=weight-presets.gems.enchants.itemsets&locale='.User::$localeId.'&t='.$_SESSION['dataKey']); + + if (!$this->compareString) + return; + + $sets = explode(';', $this->compareString); + $items = $outSet = []; + foreach ($sets as $set) { - $params = explode(".", $substring); - $items[] = (int)$params[0]; - while (sizeof($params) < 7) - $params[] = 0; + $itemSting = explode(':', $set); + $outString = []; + foreach ($itemSting as $substring) + { + $params = explode('.', $substring); + $items[] = (int)$params[0]; + while (sizeof($params) < 7) + $params[] = 0; - $outString[] = $params; + $outString[] = $params; + } + + $outSet[] = $outString; } + $this->summary = $outSet; - $outSet[] = $outString; + $iList = new ItemList(array(['i.id', $items])); + $data = $iList->getListviewData(ITEMINFO_SUBITEMS | ITEMINFO_JSON); + + foreach ($iList->iterate() as $itemId => $__) + { + if (empty($data[$itemId])) + continue; + + $this->cmpItems[] = [ + $itemId, + $iList->getField('name', true), + $iList->getField('quality'), + $iList->getField('iconString'), + $data[$itemId] + ]; + } } - $pageData['summary'] = json_encode($outSet, JSON_NUMERIC_CHECK); - $iList = new ItemList(array(['i.id', $items])); - $data = $iList->getListviewData(ITEMINFO_SUBITEMS | ITEMINFO_JSON); - - foreach ($iList->iterate() as $itemId => $__) + protected function generateTitle() { - if (empty($data[$itemId])) - continue; - - $pageData['items'][] = [ - $itemId, - Util::jsEscape($iList->getField('name', true)), - $iList->getField('quality'), - $iList->getField('iconString'), - json_encode($data[$itemId], JSON_NUMERIC_CHECK) - ]; + array_unshift($this->title, $this->name); } + + protected function generatePath() {} } - -$smarty->updatePageVars($pageData); -$smarty->assign('lang', Lang::$main); - -// load the page -$smarty->display('compare.tpl'); - ?> diff --git a/pages/maps.php b/pages/maps.php index 49d87a6d..b642d96f 100644 --- a/pages/maps.php +++ b/pages/maps.php @@ -5,23 +5,40 @@ if (!defined('AOWOW_REVISION')) // tabId 1: Tools g_initHeader() -$smarty->updatePageVars(array( - 'title' => Lang::$maps['maps'], - 'tab' => 1, - 'reqCSS' => array( +class MapsPage extends GenericPage +{ + protected $tpl = 'maps'; + protected $tabId = 1; + protected $mode = CACHETYPE_NONE; + protected $js = array( + 'maps.js', + 'Mapper.js' + ); + protected $css = array( ['string' => 'zone-picker { margin-left: 4px }'], - ['path' => STATIC_URL.'/css/Mapper.css'], - ['path' => STATIC_URL.'/css/Mapper_ie6.css', 'ieCond' => 'lte IE 6'] - ), - 'reqJS' => array( - STATIC_URL.'/js/maps.js', - STATIC_URL.'/js/Mapper.js', - '?data=zones&locale='.User::$localeId.'&t='.$_SESSION['dataKey'] - ) -)); -$smarty->assign('lang', array_merge(Lang::$main, Lang::$maps)); + ['path' => 'Mapper.css'], + ['path' => 'Mapper_ie6.css', 'ieCond' => 'lte IE 6'] + ); -// load the page -$smarty->display('maps.tpl'); + public function __construct() + { + parent::__construct(); + + $this->name = Lang::$maps['maps']; + } + + protected function generateContent() + { + // add conditional js + $this->addJS('?data=zones&locale=' . User::$localeId . '&t=' . $_SESSION['dataKey']); + } + + protected function generateTitle() + { + array_unshift($this->title, $this->name); + } + + protected function generatePath() {} +} ?> diff --git a/pages/more.php b/pages/more.php index 4937ce91..0b31d34c 100644 --- a/pages/more.php +++ b/pages/more.php @@ -3,87 +3,74 @@ if (!defined('AOWOW_REVISION')) die('illegal access'); -$type = 0; // "type, the unclean" (jupp, this var is dancing (in a pile of crap and goo)) -$typeId = -1; -$_path = [2]; -$title = ''; // not translated except for help -$validParams = array( - "commenting-and-you", - "modelviewer", - "screenshots-tips-tricks", - "stat-weighting", - "talent-calculator", - "item-comparison", - "profiler" -); - -switch($pageCall) -{ - case 'help': - $type = -13; - if (isset($validParams[$pageParam])) - header('Location: ?help='.$validParams[$pageParam]); - - if (($typeId = array_search($pageParam, $validParams)) === false) - Util::$pageTemplate->error(); - - $title = Lang::$main['helpTopics'][$typeId]; - break; - case 'tooltips': - $type = -10; - $typeId = 0; - $title = 'Tooltips'; - break; - case 'faq': - $type = -3; - $typeId = 0; - $title = 'Frequently Asked Questions'; - break; - case 'aboutus': - $type = 0; - $typeId = 0; - $title = 'What is AoWoW?'; - break; - case 'searchplugins': - $type = -8; - $typeId = 0; - $title = 'Search Plugins'; - break; - case 'searchbox': - $type = -16; - $typeId = 0; - $title = 'Search Box'; - break; - case 'whats-new': - $type = -7; - $typeId = 0; - $title = 'What\'s New'; - break; - default: - Util::$pageTemplate->error(); -} - -$_path[] = abs($type); - -if ($typeId > -1) - $_path[] = $typeId; // the actual text is an article accessed by type + typeId // menuId 2: More g_initPath() // tabid 2: More g_initHeader() -$pageData = array( - 'name' => $title, - 'title' => $title, - 'path' => json_encode($_path, JSON_NUMERIC_CHECK), - 'tab' => 2, - 'type' => $type, - 'typeId' => $typeId -); -$smarty->updatePageVars($pageData); -$smarty->assign('lang', array_merge(Lang::$main, Lang::$game)); +class MorePage extends GenericPage +{ + protected $tpl = 'text-page-generic'; + protected $path = [2]; + protected $tabId = 2; + protected $mode = CACHETYPE_NONE; + protected $js = ['swfobject.js']; -// load the page -$smarty->display('text-page-generic.tpl'); + private $subPages = [ -13 => ['commenting-and-you', 'modelviewer', 'screenshots-tips-tricks', 'stat-weighting', 'talent-calculator', 'item-comparison', 'profiler']]; + private $validPages = array( // [type, typeId, name] + 'whats-new' => [ -7, 0, "What's New"], + 'searchbox' => [-16, 0, 'Search Box'], + 'tooltips' => [-10, 0, 'Tooltips'], + 'faq' => [ -3, 0, 'Frequently Asked Questions'], + 'aboutus' => [ 0, 0, 'What is AoWoW?'], + 'searchplugins' => [ -8, 0, 'Search Plugins'], + 'help' => [-13, null, ''] + ); + + public function __construct($page, $subPage) + { + parent::__construct(); + + // chack if page is valid + if ($_ = @$this->validPages[$page]) + { + // check if subpage is valid + if (!isset($_[1])) + { + if (($_[1] = array_search($subPage, $this->subPages[$_[0]])) === false) + $this->error(); + + // ye.. hack .. can for some reason not be defined in the array itself + if ($page == 'help') + $_[2] = Lang::$main['helpTopics'][$_[1]]; + } + $this->type = $_[0]; + $this->typeId = $_[1]; + $this->name = $_[2]; + $this->gPageInfo = array( + 'type' => $this->type, + 'typeId' => $this->typeId, + 'name' => $this->name + ); + } + else + $this->error(); + } + + protected function generatePath() + { + $this->path[] = abs($this->type); + + if ($this->typeId > -1) + $this->path[] = $this->typeId; + } + + protected function generateTitle() + { + array_unshift($this->title, $this->name); + } + + protected function generateContent() {} // its just articles here +} ?> diff --git a/pages/race.php b/pages/race.php index bae5c383..b313af1c 100644 --- a/pages/race.php +++ b/pages/race.php @@ -18,11 +18,11 @@ class RacePage extends GenericPage protected $mode = CACHETYPE_PAGE; protected $js = ['swfobject.js']; - public function __construct($id) + public function __construct($__, $id) { $this->typeId = intVal($id); - $this->subject = new CharRaceList(array(['id', $id])); + $this->subject = new CharRaceList(array(['id', $this->typeId])); if ($this->subject->error) $this->notFound(Lang::$game['race']); diff --git a/pages/races.php b/pages/races.php index 39fb0828..19abb087 100644 --- a/pages/races.php +++ b/pages/races.php @@ -18,9 +18,9 @@ class RacesPage extends GenericPage public function __construct() { - $this->name = Util::ucFirst(Lang::$game['races']); - parent::__construct(); + + $this->name = Util::ucFirst(Lang::$game['races']); } protected function generateContent() diff --git a/pages/talent.php b/pages/talent.php index c4991334..49a676b5 100644 --- a/pages/talent.php +++ b/pages/talent.php @@ -4,32 +4,50 @@ if (!defined('AOWOW_REVISION')) die('illegal access'); -if (!isset($petCalc)) - $petCalc = false; - // tabId 1: Tools g_initHeader() -$smarty->updatePageVars(array( - 'title' => $petCalc ? Lang::$main['petCalc'] : Lang::$main['talentCalc'], - 'tab' => 1, - 'dataKey' => $_SESSION['dataKey'], - 'reqCSS' => array( - ['path' => STATIC_URL.'/css/TalentCalc.css'], - ['path' => STATIC_URL.'/css/talent.css'], - ['path' => STATIC_URL.'/css/TalentCalc_ie6.css', 'ieCond' => 'lte IE 6'], - ['path' => STATIC_URL.'/css/TalentCalc_ie67.css', 'ieCond' => 'lte IE 7'], - $petCalc ? ['path' => STATIC_URL.'/css/petcalc.css'] : null - ), - 'reqJS' => array( - STATIC_URL.'/js/TalentCalc.js', - ($petCalc ? '?data=pet-talents.pets' : '?data=glyphs').'&locale='.User::$localeId.'&t='.$_SESSION['dataKey'], - $petCalc ? STATIC_URL.'/js/petcalc.js' : STATIC_URL.'/js/talent.js', - $petCalc ? STATIC_URL.'/js/swfobject.js' : null - ) -)); -$smarty->assign('tcType', $petCalc ? 'pc' : 'tc'); -$smarty->assign('lang', array_merge(Lang::$main, ['colon' => Lang::$colon])); +class TalentPage extends GenericPage +{ + protected $tpl = 'talent'; + protected $tabId = 1; + protected $mode = CACHETYPE_NONE; + protected $js = ['TalentCalc.js']; + protected $css = array( + ['path' => 'TalentCalc.css'], + ['path' => 'talent.css'], + ['path' => 'TalentCalc_ie6.css', 'ieCond' => 'lte IE 6'], + ['path' => 'TalentCalc_ie67.css', 'ieCond' => 'lte IE 7'], + ); -// load the page -$smarty->display('talent.tpl'); + private $isPetCalc = false; + + public function __construct($pageCall) + { + parent::__construct(); + + $this->isPetCalc = $pageCall == 'petcalc'; + $this->name = $this->isPetCalc ? Lang::$main['petCalc'] : Lang::$main['talentCalc']; + } + + protected function generateContent() + { + // add conditional js & css + $this->addJS(array( + ($this->isPetCalc ? '?data=pet-talents.pets' : '?data=glyphs').'&locale='.User::$localeId.'&t='.$_SESSION['dataKey'], + $this->isPetCalc ? 'petcalc.js' : 'talent.js', + $this->isPetCalc ? 'swfobject.js' : null + )); + $this->addCSS($this->isPetCalc ? ['path' => 'petcalc.css'] : null); + + $this->tcType = $this->isPetCalc ? 'pc' : 'tc'; + $this->dataKey = $_SESSION['dataKey']; + } + + protected function generateTitle() + { + array_unshift($this->title, $this->name); + } + + protected function generatePath() {} +} ?> diff --git a/template/bricks/announcement.tpl.php b/template/bricks/announcement.tpl.php index 41edd4c8..81ae4f68 100644 --- a/template/bricks/announcement.tpl.php +++ b/template/bricks/announcement.tpl.php @@ -5,12 +5,13 @@ foreach ($this->announcements as $_): article)): ?>
\n"; + echo ' \n"; endif; endforeach; ?> diff --git a/template/pages/compare.tpl b/template/pages/compare.tpl deleted file mode 100644 index 86588f7d..00000000 --- a/template/pages/compare.tpl +++ /dev/null @@ -1,26 +0,0 @@ -{include file='header.tpl'} - -
-
-
-{if !empty($announcements)} - {foreach from=$announcements item=item} - {include file='bricks/announcement.tpl' an=$item} - {/foreach} -{/if} - - -
-
- -
-
-
-
- -{include file='footer.tpl'} diff --git a/template/pages/compare.tpl.php b/template/pages/compare.tpl.php new file mode 100644 index 00000000..5eb48f30 --- /dev/null +++ b/template/pages/compare.tpl.php @@ -0,0 +1,25 @@ +brick('header'); ?> + +
+
+
+ +brick('announcement'); ?> + + +
+
+ +
+
+
+
+ +brick('footer'); ?> diff --git a/template/pages/maps.tpl b/template/pages/maps.tpl.php similarity index 58% rename from template/pages/maps.tpl rename to template/pages/maps.tpl.php index 45976489..42cdc154 100644 --- a/template/pages/maps.tpl +++ b/template/pages/maps.tpl.php @@ -1,46 +1,44 @@ -{include file='header.tpl'} +brick('header'); ?>
-{if !empty($announcements)} - {foreach from=$announcements item=item} - {include file='bricks/announcement.tpl' an=$item} - {/foreach} -{/if} + +brick('announcement'); ?> +
@@ -48,8 +46,8 @@
@@ -60,4 +58,4 @@
-{include file='footer.tpl'} +brick('footer'); ?> diff --git a/template/pages/talent.tpl b/template/pages/talent.tpl deleted file mode 100644 index 148000b4..00000000 --- a/template/pages/talent.tpl +++ /dev/null @@ -1,24 +0,0 @@ -{include file='header.tpl'} - -
-
-
-{if !empty($announcements)} - {foreach from=$announcements item=item} - {include file='bricks/announcement.tpl' an=$item} - {/foreach} -{/if} -
-
-

{if $tcType == 'tc'}{$lang.chooseClass}{else}{$lang.chooseFamily}{/if}{$lang.colon}

-
-
-
- -
-
-
- -{include file='footer.tpl'} diff --git a/template/pages/talent.tpl.php b/template/pages/talent.tpl.php new file mode 100644 index 00000000..f0143388 --- /dev/null +++ b/template/pages/talent.tpl.php @@ -0,0 +1,22 @@ +brick('header'); ?> + +
+
+
+ +brick('announcement'); ?> + +
+
+

tcType == 'tc' ? Lang::$main['chooseClass'] : Lang::$main['chooseFamily']) . Lang::$main['colon']; ?>

+
+
+
+ +
+
+
+ +brick('footer'); ?>