diff --git a/includes/class.community.php b/includes/class.community.php
index 7560c61c..72a6a4b9 100644
--- a/includes/class.community.php
+++ b/includes/class.community.php
@@ -8,6 +8,70 @@ if (!defined('AOWOW_REVISION'))
* get Community Content
************/
+/* latest comments
+ // $comments = array();
+ // $rows = $DB->select('
+ // SELECT `id`, `type`, `typeID`, LEFT(`commentbody`, 120) as `preview`, `userID` as `user`, `post_date` as `date`, (NOW()-`post_date`) as `elapsed`
+ // FROM ?_comments
+ // WHERE 1
+ // ORDER BY post_date DESC
+ // LIMIT 300
+ // ');
+ // foreach($rows as $i => $row)
+ // {
+ // $comments[$i] = array();
+ // $comments[$i] = $row;
+ // switch($row['type'])
+ // {
+ // case 1: // NPC
+ // $comments[$i]['subject'] = $DB->selectCell('SELECT name FROM creature_template WHERE entry=?d LIMIT 1', $row['typeID']);
+ // break;
+ // case 2: // GO
+ // $comments[$i]['subject'] = $DB->selectCell('SELECT name FROM gameobject_template WHERE entry=?d LIMIT 1', $row['typeID']);
+ // break;
+ // case 3: // Item
+ // $comments[$i]['subject'] = $DB->selectCell('SELECT name FROM item_template WHERE entry=?d LIMIT 1', $row['typeID']);
+ // break;
+ // case 4: // Item Set
+ // $comments[$i]['subject'] = $DB->selectCell('SELECT name_loc'.$_SESSION['locale'].' FROM ?_itemset WHERE Id=?d LIMIT 1', $row['typeID']);
+ // break;
+ // case 5: // Quest
+ // $comments[$i]['subject'] = $DB->selectCell('SELECT Title FROM quest_template WHERE entry=?d LIMIT 1', $row['typeID']);
+ // break;
+ // case 6: // Spell
+ // $comments[$i]['subject'] = $DB->selectCell('SELECT spellname_loc'.$_SESSION['locale'].' FROM ?_spell WHERE spellID=?d LIMIT 1', $row['typeID']);
+ // break;
+ // case 7: // Zone
+ // // TODO
+ // break;
+ // case 8: // Faction
+ // $comments[$i]['subject'] = $DB->selectCell('SELECT name_loc'.$_SESSION['locale'].' FROM ?_factions WHERE factionID=?d LIMIT 1', $row['typeID']);
+ // break;
+ // default:
+ // $comments[$i]['subject'] = 'Unknown';
+ // break;;
+ // }
+ // $comments[$i]['user'] = $rDB->selectCell('SELECT CONCAT(UCASE(SUBSTRING(username, 1,1)),LOWER(SUBSTRING(username, 2))) FROM aowow_account WHERE id=?d LIMIT 1', $row['user']);
+ // if(empty($comments[$i]['user']))
+ // $comments[$i]['user'] = 'Anonymous';
+ // $comments[$i]['rating'] = array_sum($DB->selectCol('SELECT rate FROM ?_comments_rates WHERE commentid=?d', $row['id']));
+ // $comments[$i]['purged'] = ($comments[$i]['rating'] <= -50)? 1: 0;
+ // $comments[$i]['deleted'] = 0;
+ // }
+ // $smarty->assign('comments', $comments);
+*/
+
+/* yet another todo (aug. 2010)
+ extend g_users with authors
+ _['ArgentSun']={border:1,roles:140,joined:'2007/11/17 17:21:48',posts:5575,title:'The Ambitious',avatar:2,avatarmore:'395', sig:'[i] "Schrödinger\'s cat walks into a bar...\n... and it doesn\'t!"[/i]'};
+ _['Fearow']= { roles:0, joined:'2009/12/25 08:36:58',posts:3, avatar:1,avatarmore:'inv_misc_herb_17',sig:'But if your life is such a big joke, then why should I care?'};
+*/
+/*
+ {id:115,user:'Ciderhelm',date:'2010/05/10 19:14:18',caption:'TankSpot\'s Guide to the Fury Warrior (Part 1)',videoType:1,videoId:'VUvxFvVmttg',type:13,typeId:1},
+ {id:116,user:'Ciderhelm',date:'2010/05/10 19:14:18',caption:'TankSpot\'s Guide to the Fury Warrior (Part 2)',videoType:1,videoId:'VEfnuIcq7n8',type:13,typeId:1},
+ {id:117,user:'Ciderhelm',date:'2010/05/10 19:14:18',caption:'TankSpot\'s Protection Warrior Guide',videoType:1,videoId:'vF-7kmvJZXY',type:13,typeId:1,sticky:1}
+*/
+
class CommunityContent
{
/* todo: administration of content */
diff --git a/includes/utilities.php b/includes/utilities.php
index 03ab4cfe..07eb6ab3 100644
--- a/includes/utilities.php
+++ b/includes/utilities.php
@@ -416,10 +416,9 @@ class Lang
public static $search;
public static $profiler;
- public static $compare;
- public static $talent;
public static $achievement;
+ public static $class;
public static $currency;
public static $event;
public static $item;
@@ -814,7 +813,7 @@ class SmartyAoWoW extends Smarty
switch ($type)
{
- case TYPE_NPC: (new CreatureList(array(['ct.entry', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
+ case TYPE_NPC: (new CreatureList(array(['ct.id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
case TYPE_OBJECT: (new GameobjectList(array(['gt.entry', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
case TYPE_ITEM: (new ItemList(array(['i.entry', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
case TYPE_QUEST: (new QuestList(array(['qt.entry', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
diff --git a/localization/locale_dede.php b/localization/locale_dede.php
index b477a395..f0e86ea2 100644
--- a/localization/locale_dede.php
+++ b/localization/locale_dede.php
@@ -83,7 +83,7 @@ $lang = array(
'compare' => "Vergleichen",
'view3D' => "3D-Ansicht",
- // miscTooles
+ // miscTools
'subscribe' => "Abonnieren",
'mostComments' => ["Gestern", "Vergangene %d Tage"],
'utilities' => array(
@@ -92,7 +92,14 @@ $lang = array(
),
// article & infobox
- 'englishOnly' => "Diese Seite ist nur in Englisch verfügbar."
+ 'englishOnly' => "Diese Seite ist nur in Englisch verfügbar.",
+
+ // calculators
+ 'compareTool' => "Gegenstandsvergleichswerkzeug",
+ 'talentCalc' => "Talentrechner",
+ 'petCalc' => "Begleiterrechner",
+ 'chooseClass' => "Wählt eine Klasse",
+ 'chooseFamily' => "Wählt eine Tierart"
),
'search' => array(
'search' => "Suche",
@@ -120,6 +127,8 @@ $lang = array(
'eventShort' => "Ereignis",
'event' => "Weltereigniss",
'events' => "Weltereignisse",
+ 'faction' => "Fraktion",
+ 'factions' => "Fraktionen",
'cooldown' => "%s Abklingzeit",
'itemset' => "Ausrüstungsset",
'itemsets' => "Ausrüstungssets",
@@ -127,7 +136,6 @@ $lang = array(
'mechAbbr' => "Ausw.",
'pet' => "Begleiter",
'pets' => "Begleiter",
- 'petCalc' => "Begleiterrechner",
'requires' => "Benötigt %s",
'profile' => "",
'profiles' => "Profile",
@@ -264,14 +272,9 @@ $lang = array(
'titleReward' => "Euch wird der Titel \"%s\" verliehen",
'slain' => "getötet",
),
- 'compare' => array(
- 'compare' => "Gegenstandsvergleichswerkzeug",
- ),
- 'talent' => array(
- 'talentCalc' => "Talentrechner",
- 'petCalc' => "Begleiterrechner",
- 'chooseClass' => "Wählt eine Klasse",
- 'chooseFamily' => "Wählt eine Tierart",
+ 'class' => array(
+ 'racialLeader' => "Volksanführer",
+ 'startZone' => "Startgebiet",
),
'maps' => array(
'maps' => "Karten",
diff --git a/localization/locale_enus.php b/localization/locale_enus.php
index 009638de..4a4e0caf 100644
--- a/localization/locale_enus.php
+++ b/localization/locale_enus.php
@@ -87,7 +87,14 @@ $lang = array(
),
// article & infobox
- 'englishOnly' => "This page is only available in English."
+ 'englishOnly' => "This page is only available in English.",
+
+ // calculators
+ 'compareTool' => "Item Comparison Tool",
+ 'talentCalc' => "Talent Calculator",
+ 'petCalc' => "Hunter Pet Calculator",
+ 'chooseClass' => "Choose a class",
+ 'chooseFamily' => "Choose a pet family"
),
'search' => array(
'search' => "Search",
@@ -115,6 +122,8 @@ $lang = array(
'eventShort' => "Event",
'event' => "World Event",
'events' => "World Events",
+ 'faction' => "faction",
+ 'factions' => "Factions",
'cooldown' => "%s cooldown",
'itemset' => "item Set",
'itemsets' => "Item Sets",
@@ -122,7 +131,6 @@ $lang = array(
'mechAbbr' => "Mech.",
'pet' => "Pet",
'pets' => "Hunter Pets",
- 'petCalc' => "Hunter Pet Calculator",
'profile' => "profile",
'profiles' => "Profiles",
'requires' => "Requires %s",
@@ -259,14 +267,9 @@ $lang = array(
'titleReward' => "You shall be granted the title \"%s\"",
'slain' => "slain",
),
- 'compare' => array(
- 'compare' => "Item Comparison Tool",
- ),
- 'talent' => array(
- 'talentCalc' => "Talent Calculator",
- 'petCalc' => "Hunter Pet Calculator",
- 'chooseClass' => "Choose a class",
- 'chooseFamily' => "Choose a pet family",
+ 'class' => array(
+ 'racialLeader' => "Racial leader",
+ 'startZone' => "Starting zone",
),
'maps' => array(
'maps' => "Maps",
diff --git a/localization/locale_eses.php b/localization/locale_eses.php
index 57861c5e..ffa1840a 100644
--- a/localization/locale_eses.php
+++ b/localization/locale_eses.php
@@ -84,7 +84,14 @@ $lang = array(
),
// article & infobox
- 'englishOnly' => "Esta página sólo está disponible en inglés."
+ 'englishOnly' => "Esta página sólo está disponible en inglés.",
+
+ // calculators
+ 'compareTool' => "Herramienta de comparación de objetos",
+ 'talentCalc' => "Calculadora de talentos",
+ 'petCalc' => "Calculadora de mascotas",
+ 'chooseClass' => "Escoge una clase",
+ 'chooseFamily' => "Escoge una familia de mascota"
),
'search' => array(
'search' => "Búsqueda",
@@ -112,6 +119,8 @@ $lang = array(
'eventShort' => "Evento",
'event' => "Suceso mundial ",
'events' => "Eventos del mundo",
+ 'faction' => "facción",
+ 'factions' => "Facciones",
'cooldown' => "%s de reutilización",
'itemset' => "conjunto de objetos",
'itemsets' => "Conjuntos de objetos",
@@ -119,7 +128,6 @@ $lang = array(
'mechAbbr' => "Mec.",
'pet' => "Mascota",
'pets' => "Mascotas de cazador",
- 'petCalc' => "Calculadora de mascotas",
'profile' => "",
'profiles' => "Perfiles",
'requires' => "Requiere %s",
@@ -217,14 +225,9 @@ $lang = array(
'titleReward' => "Deberías obtener el título \"%s\"",
'slain' => "matado",
),
- 'compare' => array(
- 'compare' => "Herramienta de comparación de objetos",
- ),
- 'talent' => array(
- 'talentCalc' => "Calculadora de talentos",
- 'petCalc' => "Calculadora de mascotas",
- 'chooseClass' => "Escoge una clase",
- 'chooseFamily' => "Escoge una familia de mascota",
+ 'class' => array(
+ 'racialLeader' => "Lider racial",
+ 'startZone' => "Zona de inicio",
),
'maps' => array(
'maps' => "Mapas",
diff --git a/localization/locale_frfr.php b/localization/locale_frfr.php
index 82aeab69..af1ffa58 100644
--- a/localization/locale_frfr.php
+++ b/localization/locale_frfr.php
@@ -84,7 +84,14 @@ $lang = array(
),
// article & infobox
- 'englishOnly' => "Cette page n'est disponible qu'en anglais pour le moment."
+ 'englishOnly' => "Cette page n'est disponible qu'en anglais pour le moment.",
+
+ // calculators
+ 'compareTool' => "Outil de comparaison d'objets",
+ 'talentCalc' => "Calculateur de Talents",
+ 'petCalc' => "Calculateur de familiers",
+ 'chooseClass' => "Choisissez une classe",
+ 'chooseFamily' => "Choisissez un familier"
),
'search' => array(
'search' => "Recherche",
@@ -112,6 +119,8 @@ $lang = array(
'eventShort' => "Évènement",
'event' => "Évènement mondial",
'events' => "Évènements mondiaux",
+ 'faction' => "faction",
+ 'factions' => "Factions",
'cooldown' => "%s de recharge",
'itemset' => "ensemble d'objets",
'itemsets' => "Ensembles d'objets",
@@ -119,7 +128,6 @@ $lang = array(
'mechAbbr' => "Mécan.",
'pet' => "Familier",
'pets' => "Familiers de chasseur",
- 'petCalc' => "Calculateur de familiers",
'profile' => "",
'profiles' => "Profils",
'requires' => "%s requis",
@@ -216,14 +224,9 @@ $lang = array(
'titleReward' => "Vous devriez recevoir le titre \"%s\"",
'slain' => "tué",
),
- 'compare' => array(
- 'compare' => "Outil de comparaison d'objets",
- ),
- 'talent' => array(
- 'talentCalc' => "Calculateur de Talents",
- 'petCalc' => "Calculateur de familiers",
- 'chooseClass' => "Choisissez une classe",
- 'chooseFamily' => "Choisissez un familier",
+ 'class' => array(
+ 'racialLeader' => "Leader racial",
+ 'startZone' => "Zone initiales",
),
'maps' => array(
'maps' => "Cartes",
diff --git a/localization/locale_ruru.php b/localization/locale_ruru.php
index 6ed3256c..06e79793 100644
--- a/localization/locale_ruru.php
+++ b/localization/locale_ruru.php
@@ -84,7 +84,14 @@ $lang = array(
),
// article & infobox
- 'englishOnly' => "Эта страница доступна только на английском языке."
+ 'englishOnly' => "Эта страница доступна только на английском языке.",
+
+ // calculators
+ 'compareTool' => "Инструмент сравнения предметов",
+ 'talentCalc' => "Расчёт талантов",
+ 'petCalc' => "Расчёт умений питомцев",
+ 'chooseClass' => "Выберите класс",
+ 'chooseFamily' => "Выберите семейство питомцев"
),
'search' => array(
'search' => "Поиск",
@@ -112,6 +119,8 @@ $lang = array(
'eventShort' => "Игровое событие",
'event' => "Событие",
'events' => "Игровые события",
+ 'faction' => "фракция",
+ 'factions' => "Фракции",
'cooldown' => "Восстановление: %s",
'itemset' => "комплект",
'itemsets' => "Комплекты",
@@ -121,7 +130,6 @@ $lang = array(
'pets' => "Питомцы охотников",
'profile' => "",
'profiles' => "Профили",
- 'petCalc' => "Расчёт умений питомцев",
'requires' => "Требует %s",
'requires2' => "Требуется:",
'reqLevel' => "Требуется уровень: %s",
@@ -216,14 +224,9 @@ $lang = array(
'titleReward' => "Наградное звание: \"%s\"",
'slain' => "убито",
),
- 'compare' => array(
- 'compare' => "Инструмент сравнения предметов",
- ),
- 'talent' => array(
- 'talentCalc' => "Расчёт талантов",
- 'petCalc' => "Расчёт умений питомцев",
- 'chooseClass' => "Выберите класс",
- 'chooseFamily' => "Выберите семейство питомцев",
+ 'class' => array(
+ 'racialLeader' => "Лидер расы",
+ 'startZone' => "Начальная локация",
),
'maps' => array(
'maps' => "Карты",
diff --git a/pages/class.php b/pages/class.php
index 4f688c25..7a41b49c 100644
--- a/pages/class.php
+++ b/pages/class.php
@@ -8,7 +8,7 @@ require 'includes/class.community.php';
$_id = intVal($pageParam);
$_mask = 1 << ($_id - 1);
-$path = [0, 12, $_id];
+$_path = [0, 12, $_id];
$tcClassId = [null, 8, 3, 1, 5, 4, 9, 6, 2, 7, null, 0]; // see TalentCalc.js
$classSkills = array(
1 => [ 26, 256, 257],
@@ -66,13 +66,14 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
$pageData = array (
'title' => $cl->getField('name', true).' - '.Util::ucFirst(Lang::$game['class']),
- 'path' => $path,
+ 'path' => $_path,
'infobox' => '[ul][li]'.implode('[/li][li]', $infobox).'[/li][/ul]',
'relTabs' => [],
'page' => array(
'name' => $cl->getField('name', true),
'talentCalc' => Util::$tcEncoding[$tcClassId[$_id] * 3],
- 'icon' => 'class_'.strtolower($cl->getField('fileString'))
+ 'icon' => 'class_'.strtolower($cl->getField('fileString')),
+ 'expansion' => Util::$expansionString[$cl->getField('expansion')]
)
);
@@ -84,7 +85,8 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
*/
// Quests
$conditions = array(
- ['RequiredClasses', $_mask, '&']
+ ['RequiredClasses', $_mask, '&'],
+ [['RequiredClasses', CLASS_MASK_ALL, '&'], CLASS_MASK_ALL, '!']
);
$quests = new QuestList($conditions);
diff --git a/pages/compare.php b/pages/compare.php
index 18e9e000..792786b7 100644
--- a/pages/compare.php
+++ b/pages/compare.php
@@ -56,7 +56,7 @@ if ($compareString)
// tabId 1: Tools g_initHeader()
$smarty->updatePageVars(array(
- 'title' => Lang::$compare['compare'],
+ 'title' => Lang::$main['compareTool'],
'tab' => 1,
'reqCSS' => array(
['path' => 'template/css/Summary.css'],
@@ -71,7 +71,7 @@ $smarty->updatePageVars(array(
),
));
$smarty->assign('lvData', $pageData);
-$smarty->assign('lang', array_merge(Lang::$main, Lang::$compare));
+$smarty->assign('lang', Lang::$main);
// load the page
$smarty->display('compare.tpl');
diff --git a/pages/quest.php b/pages/quest.php
index fc8e5cb6..9ba5991d 100644
--- a/pages/quest.php
+++ b/pages/quest.php
@@ -352,6 +352,10 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
$quest['coreqs'] = array();
for($i=0;$i<=4;++$i)
{
+ /*
+ * RequiredSpellCast dropped by TC 29.8.13
+ */
+
//echo $quest['ReqCreatureOrGOCount'.$i].'
';
if($quest['RequiredNpcOrGo'.$i] != 0 && $quest['RequiredNpcOrGoCount'.$i] != 0)
{
diff --git a/pages/race.php b/pages/race.php
new file mode 100644
index 00000000..36a3b09a
--- /dev/null
+++ b/pages/race.php
@@ -0,0 +1,199 @@
+loadCache($cacheKeyPage, $pageData))
+{
+ $race = new CharRaceList(array(['id', $_id])); // should this be limited to playable races..?
+ if ($race->error)
+ $smarty->notFound(Lang::$game['race']);
+
+ /***********/
+ /* INFOBOX */
+ /***********/
+
+ $infobox = []; // unfortunately is all of this custom data :/
+
+ // side
+ if ($_ = $race->getField('side'))
+ $infobox[] = Lang::$main['side'].Lang::$colon.'[span class='.($_ == 2 ? 'horde' : 'alliance').'-icon]'.Lang::$game['si'][$_].'[/span]';
+
+ // faction
+ if ($_ = $race->getField('factionId'))
+ {
+ $smarty->extendGlobalIds(TYPE_FACTION, $_);
+ $infobox[] = Util::ucFirst(Lang::$game['faction']).Lang::$colon.'[faction='.$_.']';
+ }
+
+ // leader
+ if ($_ = $race->getField('leader'))
+ {
+ $smarty->extendGlobalIds(TYPE_NPC, $_);
+ $infobox[] = Lang::$class['racialLeader'].Lang::$colon.'[npc='.$_.']';
+ }
+
+ // start area
+ if ($_ = $race->getField('startAreaId'))
+ {
+ $smarty->extendGlobalIds(TYPE_ZONE, $_);
+ $infobox[] = Lang::$class['startZone'].Lang::$colon.'[zone='.$_.']';
+ }
+
+ $pageData = array (
+ 'title' => $race->getField('name', true).' - '.Util::ucFirst(Lang::$game['race']),
+ 'path' => $_path,
+ 'infobox' => '[ul][li]'.implode('[/li][li]', $infobox).'[/li][/ul]',
+ 'relTabs' => [],
+ 'page' => array(
+ 'name' => $race->getField('name', true),
+ 'icon' => strtolower($race->getField('fileString')),
+ 'expansion' => Util::$expansionString[$race->getField('expansion')]
+ )
+ );
+
+ /********/
+ /* TABS */
+ /********/
+
+ // Classes
+ $classes = new CharClassList(array(['racemask', $_mask, '&']));
+ $classes->addGlobalsToJscript($smarty);
+
+ $pageData['relTabs'][] = array(
+ 'file' => 'class',
+ 'data' => $classes->getListviewData(),
+ 'params' => array(
+ 'tabs' => '$tabsRelated'
+ )
+ );
+
+
+ // Tongues
+ $conditions = array(
+ ['typeCat', -11], // proficiencies
+ ['reqRaceMask', $_mask, '&'] // only languages are race-restricted
+ );
+
+ $tongues = new SpellList($conditions);
+ $tongues->addGlobalsToJscript($smarty);
+
+ $pageData['relTabs'][] = array(
+ 'file' => 'spell',
+ 'data' => $tongues->getListviewData(),
+ 'params' => array(
+ 'id' => 'languages',
+ 'name' => '$LANG.tab_languages',
+ 'hiddenCols' => "$['reagents']",
+ 'tabs' => '$tabsRelated'
+ )
+ );
+
+ // Racials
+ $conditions = array(
+ ['typeCat', -4], // racial traits
+ ['reqRaceMask', $_mask, '&']
+ );
+
+ $racials = new SpellList($conditions);
+ $racials->addGlobalsToJscript($smarty);
+
+ $pageData['relTabs'][] = array(
+ 'file' => 'spell',
+ 'data' => $racials->getListviewData(),
+ 'params' => array(
+ 'id' => 'racial-traits',
+ 'name' => '$LANG.tab_racialtraits',
+ 'hiddenCols' => "$['reagents']",
+ 'tabs' => '$tabsRelated'
+ )
+ );
+
+ // Quests
+ $conditions = array(
+ ['RequiredRaces', $_mask, '&'],
+ [['RequiredRaces', RACE_MASK_ALL, '&'], RACE_MASK_ALL, '!'],
+ [['RequiredRaces', RACE_MASK_HORDE, '&'], RACE_MASK_HORDE, '!'],
+ [['RequiredRaces', RACE_MASK_ALLIANCE, '&'], RACE_MASK_ALLIANCE, '!']
+ );
+
+ $quests = new QuestList($conditions);
+ $quests->addGlobalsToJscript($smarty);
+
+ $pageData['relTabs'][] = array(
+ 'file' => 'quest',
+ 'data' => $quests->getListviewData(),
+ 'params' => array(
+ 'tabs' => '$tabsRelated'
+ )
+ );
+
+ // Mounts
+ // ok, this sucks, but i rather hardcode the trainer, than fetch items by namepart
+ $items = isset($mountVendors[$_id]) ? DB::Aowow()->selectCol('SELECT item FROM npc_vendor WHERE entry IN (?a)', $mountVendors[$_id]) : 0;
+
+ $conditions = array(
+ ['i.entry', $items],
+ ['i.class', 15], // misc
+ ['i.subclass', 5], // mounts
+ );
+
+ $mounts = new ItemList($conditions);
+ $mounts->addGlobalsToJscript($smarty);
+
+ $pageData['relTabs'][] = array(
+ 'file' => 'item',
+ 'data' => $mounts->getListviewData(),
+ 'params' => array(
+ 'id' => 'mounts',
+ 'name' => '$LANG.tab_mounts',
+ 'tabs' => '$tabsRelated',
+ 'hiddenCols' => "$['slot', 'type']"
+ )
+ );
+
+ $smarty->saveCache($cacheKeyPage, $pageData);
+}
+
+
+// menuId 13: Race g_initPath()
+// tabId 0: Database g_initHeader()
+$smarty->updatePageVars(array(
+ 'title' => $pageData['title'],
+ 'path' => json_encode($pageData['path'], JSON_NUMERIC_CHECK),
+ 'tab' => 0,
+ 'type' => TYPE_RACE,
+ 'typeId' => $_id
+));
+$smarty->assign('community', CommunityContent::getAll(TYPE_RACE, $_id)); // comments, screenshots, videos
+$smarty->assign('lang', Lang::$main);
+$smarty->assign('lvData', $pageData);
+
+// load the page
+$smarty->display('race.tpl');
+
+?>
diff --git a/pages/talent.php b/pages/talent.php
index 80e348ab..e59792ee 100644
--- a/pages/talent.php
+++ b/pages/talent.php
@@ -9,7 +9,7 @@ if (!isset($petCalc))
// tabId 1: Tools g_initHeader()
$smarty->updatePageVars(array(
- 'title' => $petCalc ? Lang::$talent['petCalc'] : Lang::$talent['talentCalc'],
+ 'title' => $petCalc ? Lang::$main['petCalc'] : Lang::$main['talentCalc'],
'tab' => 1,
'reqCSS' => array(
['path' => 'template/css/TalentCalc.css'],
@@ -26,7 +26,7 @@ $smarty->updatePageVars(array(
)
));
$smarty->assign('tcType', $petCalc ? 'pc' : 'tc');
-$smarty->assign('lang', array_merge(Lang::$main, Lang::$talent));
+$smarty->assign('lang', Lang::$main);
// load the page
$smarty->display('talent.tpl');
diff --git a/setup/aowow_articles_u2.sql b/setup/aowow_articles_u2.sql
new file mode 100644
index 00000000..976ec9b9
--- /dev/null
+++ b/setup/aowow_articles_u2.sql
@@ -0,0 +1,15 @@
+ALTER TABLE `aowow_articles`
+ DROP COLUMN `id`,
+ ADD UNIQUE INDEX (`type`, `typeId`, `locale`);
+
+INSERT INTO `aowow_articles` VALUES
+ (14,1,0,'[b]Overview:[/b] The [b]humans[/b] are the most populous and the youngest race in Azeroth. The humans have become the [i]de facto[/i] leaders of the Alliance, with their youthful ambitions and resilience.\\n\\n[b]Capital City:[/b] The human seat of power is in the rebuilt city of [zone=1519].\\n\\n[b]Starting Zone:[/b] Humans begin questing in [zone=12].\\n\\n[b]Mounts:[/b] [npc=384] sells armoried ponies in Stormwind, and [npc=33307] at the Argent Tournament has a few distinct models.',NULL),
+ (14,2,0,'[b]Overview:[/b] The [b]orcs[/b] were originally a race of noble savages, residing on the world of Draenor. Unfortunately, The Burning Legion made use of them in an attempt to conquer Azeroth—they were infected with the daemonic blood of Mannoroth the Destructor, driven mad, and turned upon both the Draenei and the denizens of Azeroth. After losing the Second War, they were cut off from the corrupting influence of Mannoroth, and began to return to their shamanistic roots. Now, under the leadership of their new Warchief, the orcs are carving out a home for themselves in Azeroth.\\n\\n[b]Capital City:[/b] The orcs now reside in the city of [zone=1637], named after the deceased Orgrim Doomhammer, former Warchief of the Horde.\\n\\n[b]Starting Zone:[/b] Orcs begin questing in [zone=14].\\n\\n[b]Mounts:[/b] [npc=3362] in Orgrimmar sells a variety of wolves; [npc=33553] sells a few distinctive mounts at the Argent Tournament.',NULL),
+ (14,3,0,'[b]Overview:[/b] The [b]dwarves[/b] are a hardy race, hailing from Khaz Modan in the Eastern Kingdoms. Rumor has it they are descended from the Titans. There are three main clans of dwarves vying for power in Ironforge: the Bronzebeards, Wildhammers, and Dark Irons.\\n\\n[b]Capital City:[/b] The dwarves make their home in their ancestral seat of [zone=1537].\\n\\n[b]Starting Zone:[/b] Dwarves begin in [zone=1].\\n\\n[b]Mounts:[/b] [npc=1261] by the Amberstill Ranch sells rams, as well as [npc=33310] at the Argent Tournament.',NULL),
+ (14,4,0,'[b]Overview:[/b] The [b]night elves[/b] are an ancient and mysterious race. They lived in Kalimdor for thousands of years, undisturbed until the world tree was sacrificed to halt the advance of the Burning Legion prior to the events of World of Warcraft.\\n\\n[b]Capital City:[/b] The night elf capital city is [zone=1657], situated in the branches of the world tree itself.\\n\\n[b]Starting Zone:[/b] Night Elves begin in [zone=141], learning about the recent political changes in Darnassus.\\n\\n[b]Mounts:[/b] [npc=4730] in Darnassus sells a variety of nightsabers, as well as [npc=33653] at the Argent Tournament.',NULL),
+ (14,5,0,'[b]Overview:[/b] When the [b]undead[/b] scourge initially swept across Azeroth, they converted a number of members of the Alliance to the undead. When the combined forces of the orcs, elves, trolls, dwarves and humans began to fight back, though, [npc=36597]\'s hold on his forces began to weaken. A small faction of humans, known as the Forsaken, broke free of the Lich King\'s control.\\n\\nNow, free of the bonds of servitude as well as the troublesome emotions and connections of their human lives, the Forsaken have found a new home—with the Horde.\\n\\n[b]Capital City:[/b] The Forsaken reside in the [zone=1497], underneath the ruins of the former human city of Lordaeron.\\n\\n[b]Starting Zone:[/b] [zone=85] is the starting zone for Forsaken players--they are raised as second-generation Forsaken by val\'kyr and experience Sylvanas\' menacing new agenda firsthand.\\n\\n[b]Mounts:[/b] [npc=4731] in Tirisfal Glades sells numerous undead horses; [npc=33555] at the Argent Tournament sells a few distinct models.',NULL),
+ (14,6,0,'[b]Overview:[/b] The [b]tauren[/b], a race with deep shamanistic roots, are longtime residents of Kalimdor. They have a deep and abiding love of nature, and the vast majority of them worship a deity known as the Earth Mother. \\n\\n[b]Capital City:[/b] The tauren reside in [zone=1638].\\n\\n[b]Starting Zone:[/b] Tauren begin questing in [zone=215].\\n\\n[b]Mounts:[/b] [npc=3685] sells numerous kodo mounts; [npc=33556] at the Argent Tournament sells a few distinctive models.',NULL),
+ (14,7,0,'[b]Overview:[/b] The [b]gnomes[/b] are a quirky race, obsessed with gadgets and technology. They originally come from the city of [zone=721], which was destroyed by [npc=7937] in an attempt to save it from an invading army of troggs.\\n\\n[b]Capital City:[/b] The gnomes now make their home in [zone=1537]; they have made efforts to retake their beloved former city with [achievement=4786].\\n\\n[b]Starting Zone:[/b] Gnomes begin in [zone=1], but they have a very different quest sequence from Dwarves, covering Gnomeregan.\\n\\n[b]Mounts:[/b] [npc=7955] in Dun Morogh sells numerous mechanostriders, as well as [npc=33650] at the Argent Tournament.',NULL),
+ (14,8,0,'[b]Overview:[/b] While there are many different tribes of [b]trolls[/b] scattered across Azeroth, only the [url=/faction=530]Darkspear Tribe[/url] has ever sworn allegiance to the Horde. The trolls originally lived in the Broken Isles, but were overrun by naga and murlocs and driven from their home. The orcs, led by [npc=4949], saved the Darkspear tribe from certain destruction and offered them amnesty among the Horde. In return, the Darkspear tribe swore fealty to the orcish warchief.\\n\\n[b]Capital City:[/b] The Darkspear Trolls live now in the Horde capital of [zone=1637].\\n\\n[b]Starting Zone:[/b] Trolls begin questing in [b]Echo Isles[/b].\\n\\n[b]Mounts:[/b] [npc=7952] in Sen\'jin Village sells numerous raptors; [npc=33554] at the Argent Tournament sells a few distinctive models.',NULL),
+ (14,10,0,'[b]Overview:[/b] The [b]blood elves[/b] are a proud, haughty race, joining the Horde in Burning Crusade. They represent a faction of former high elves, split off from the rest of elven society; they are also survivors of Arthas\' assault on Silvermoon. Blood elves are fully dependent on magic, having revelled in its power for so long that they suffer horrible withdrawal if it were to be taken away.\\n\\n[b]Capital City:[/b] The blood elves have rebuilt [zone=3487].\\n\\n[b]Starting Zone:[/b] [zone=3430] is the starting zone for Blood Elves.\\n\\n[b]Mounts:[/b] [npc=16264] in Eversong Woods sells numerous hawkstriders; [npc=33557] at the Argent Tournament sells a few unique models.',NULL),
+ (14,11,0,'[b]Overview:[/b] The [b]Draenei[/b] are followers of the Naaru and worshipers of the Holy Light. They originally hail from the distant world of Argus, fleeing after Sargeras tried to corrupt them. They then settled on the Orcish homeworld of Draenor, where after a period of peace, they were brutally murdered during Guldan\'s corruption of the Orcs. Finally they settled in Azeroth, to seek aid in their battle against the Burning Legion. Draenei were introduced in the Burning Crusade expansion.\\n\\n[b]Capital City:[/b] The Draenei have the seat of their power in the ruins of their once-great ship, [zone=3557].\\n\\n[b]Starting Zone:[/b] [zone=3524] and [zone=3525] cover the attempts of the Draenei to settle on their new island and deal with the inherent corruption present.\\n\\n[b]Mounts:[/b] [npc=17584] sells a variety of Elekks, as well as [npc=33657] at the Argent Tournament.',NULL);
diff --git a/template/bricks/article.tpl b/template/bricks/article.tpl
index bf0d4826..6ea9831e 100644
--- a/template/bricks/article.tpl
+++ b/template/bricks/article.tpl
@@ -2,9 +2,9 @@