- CharRaces:

* implemented detail-page
   * since factions are NYI the infobox will display an empty link
   * added articles for every race

- CharClasses:
   * added forgotten expansion-icon to detail-page

- Search
   * added no result gnome

- moved some locale-strings around, killed one duplicate
This commit is contained in:
Sarjuuk
2013-09-01 21:12:25 +02:00
parent 684b2f2778
commit f422411cb6
20 changed files with 433 additions and 71 deletions

View File

@@ -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 */

View File

@@ -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;

View File

@@ -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 <b>Englisch</b> verfügbar."
'englishOnly' => "Diese Seite ist nur in <b>Englisch</b> 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 \"<a href=\"?title=%d\">%s</a>\" 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",

View File

@@ -87,7 +87,14 @@ $lang = array(
),
// article & infobox
'englishOnly' => "This page is only available in <b>English</b>."
'englishOnly' => "This page is only available in <b>English</b>.",
// 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 \"<a href=\"?title=%d\">%s</a>\"",
'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",

View File

@@ -84,7 +84,14 @@ $lang = array(
),
// article & infobox
'englishOnly' => "Esta página sólo está disponible en <b>inglés</b>."
'englishOnly' => "Esta página sólo está disponible en <b>inglés</b>.",
// 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 \"<a href=\"?title=%d\">%s</a>\"",
'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",

View File

@@ -84,7 +84,14 @@ $lang = array(
),
// article & infobox
'englishOnly' => "Cette page n'est disponible qu'en <b>anglais</b> pour le moment."
'englishOnly' => "Cette page n'est disponible qu'en <b>anglais</b> 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 \"<a href=\"?title=%d\">%s</a>\"",
'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",

View File

@@ -84,7 +84,14 @@ $lang = array(
),
// article & infobox
'englishOnly' => "Эта страница доступна только на <b>английском</b> языке."
'englishOnly' => "Эта страница доступна только на <b>английском</b> языке.",
// 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' => "Наградное звание: \"<a href=\"?title=%d\">%s</a>\"",
'slain' => "убито",
),
'compare' => array(
'compare' => "Инструмент сравнения предметов",
),
'talent' => array(
'talentCalc' => "Расчёт талантов",
'petCalc' => "Расчёт умений питомцев",
'chooseClass' => "Выберите класс",
'chooseFamily' => "Выберите семейство питомцев",
'class' => array(
'racialLeader' => "Лидер расы",
'startZone' => "Начальная локация",
),
'maps' => array(
'maps' => "Карты",

View File

@@ -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);

View File

@@ -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');

View File

@@ -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].'<br />';
if($quest['RequiredNpcOrGo'.$i] != 0 && $quest['RequiredNpcOrGoCount'.$i] != 0)
{

199
pages/race.php Normal file
View File

@@ -0,0 +1,199 @@
<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
require 'includes/class.community.php';
$_id = intVal($pageParam);
$_mask = 1 << ($_id - 1);
$_path = [0, 13, $_id];
$mountVendors = array( // [starter, argent tournament]
null,
[384, 33307],
[3362, 33553],
[1261, 33310],
[4730, 33653],
[4731, 33555],
[3685, 33556],
[7955, 33650],
[7952, 33554],
null,
[16264, 33557],
[17584, 33657]
);
$cacheKeyPage = implode('_', [CACHETYPE_PAGE, TYPE_RACE, $_id, -1, User::$localeId]);
if (!$smarty->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');
?>

View File

@@ -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');

View File

@@ -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);

View File

@@ -2,9 +2,9 @@
<div id="article-generic" class="left"></div>
<script type="text/javascript">//<![CDATA[
Markup.printHtml("{$article.text}", "article-generic", {strip}{ldelim}
{foreach from=$article.params key=k item=v}
{if !empty($article.params)}{foreach from=$article.params key=k item=v}
{$k}: {if $v[0] == '$'}{$v|substr:1}{else}'{$v}'{/if},
{/foreach}
{/foreach}{/if}
allow: Markup.CLASS_ADMIN,
dbpage: true
{rdelim}{/strip});

View File

@@ -0,0 +1,8 @@
var _ = g_factions;
{strip}
{foreach from=$data key=id item=item}
_[{$id}]={ldelim}
name_{$user.language}:'{$item.name|escape:"javascript"}'
{rdelim};
{/foreach}
{/strip}

View File

@@ -24,10 +24,10 @@
$WH.ge('headicon-generic').appendChild(Icon.create('{$lvData.page.icon}', 1));
</script>
<a href="http://old.wowhead.com/?{$query[0]}={$query[1]}" class="button-red"><em><b><i>Wowhead</i></b><span>Wowhead</span></em></a>
<a href="javascript:;" id="open-links-button" class="button-red" onclick="this.blur(); Links.show({ldelim} type: 13, typeId: {$page.typeId} {rdelim});"><em><b><i>{$lang.links}</i></b><span>{$lang.links}</span></em></a>
<a href="javascript:;" id="open-links-button" class="button-red" onclick="this.blur(); Links.show({ldelim} type: {$page.type}, typeId: {$page.typeId} {rdelim});"><em><b><i>{$lang.links}</i></b><span>{$lang.links}</span></em></a>
<a href="?talent#{$lvData.page.talentCalc}" class="button-red"><em><b><i>{$lang.talentCalc}</i></b><span>{$lang.talentCalc}</span></em></a>
<a href="{if !empty($page.boardUrl)}{$page.boardUrl}{else}javascript:;{/if}" class="button-red{if empty($page.boardUrl)} button-red-disabled{/if}"><em><b><i>{$lang.forum}</i></b><span>{$lang.forum}</span></em></a>
<h1 class="h1-icon">{$lvData.page.name}</h1>
<h1 class="h1-icon">{if $lvData.page.expansion}<span class="{$lvData.page.expansion}-icon-right">{$lvData.page.name}</span>{else}{$lvData.page.name}{/if}</h1>
{include file='bricks/article.tpl'}

View File

@@ -3156,12 +3156,12 @@ small, .listview-mode-default .small, .comment-edit-modes, .comment-edit-body
font-size: 11px;
}
a.open, .text ol li div, .text li div, .infobox li div, .minibox h3 a, .comment-body b, .comment-body h3
.text ol li div, .text li div, .minibox h3 a, .comment-body b, .comment-body h3
{
color: #cccccc;
}
a:hover, .text b
a:hover, a.open, .infobox li div, .text b
{
color: white;
}
@@ -3644,3 +3644,11 @@ div.announcement li {
-ms-transition: .5s ease;
transition: .5s ease;
}
.search-noresults {
background:url(../images/noresults.jpg) left no-repeat;
width:254px;
height:215px;
float:right;
margin-top:10px;
}

View File

@@ -5572,7 +5572,9 @@ Listview.funcBox = {
bibi.style.whiteSpace = 'nowrap';
$WH.ae(bibi, $WH.ct(text));
$WH.ae(d, bibi);
sp.style.paddingLeft = bibi.offsetWidth + 'px';
if ($(bibi2).length > 0) {
sp.style.paddingLeft = $(bibi2).width() + 'px';
}
}
$WH.ae(d, sp);

45
template/race.tpl Normal file
View File

@@ -0,0 +1,45 @@
{include file='header.tpl'}
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
{if !empty($announcements)}
{foreach from=$announcements item=item}
{include file='bricks/announcement.tpl' an=$item}
{/foreach}
{/if}
<script type="text/javascript">//<![CDATA[
{include file='bricks/community.tpl'}
var g_pageInfo = {ldelim}type: {$page.type}, typeId: {$page.typeId}, name: '{$lvData.page.name|escape:"quotes"}'{rdelim};
g_initPath({$page.path});
//]]></script>
{include file='bricks/infobox.tpl' info=$lvData.infobox}
<div class="text">
<div id="race-icon-male" class="h1-icon"></div>
<div id="race-icon-female" class="h1-icon"></div>
<script type="text/javascript">
$WH.ge('race-icon-male').appendChild(Icon.create('race_{$lvData.page.icon}_male', 1));
$WH.ge('race-icon-female').appendChild(Icon.create('race_{$lvData.page.icon}_female', 1));
</script>
<a href="http://old.wowhead.com/?{$query[0]}={$query[1]}" class="button-red"><em><b><i>Wowhead</i></b><span>Wowhead</span></em></a>
<a href="javascript:;" id="open-links-button" class="button-red" onclick="this.blur(); Links.show({ldelim} type: {$page.type}, typeId: {$page.typeId} {rdelim});"><em><b><i>{$lang.links}</i></b><span>{$lang.links}</span></em></a>
<h1 class="h1-icon">{if $lvData.page.expansion}<span class="{$lvData.page.expansion}-icon-right">{$lvData.page.name}</span>{else}{$lvData.page.name}{/if}</h1>
{include file='bricks/article.tpl'}
<h2 class="clear">{$lang.related}</h2>
</div>
{include file='bricks/tabsRelated.tpl' tabs=$lvData.relTabs}
{include file='bricks/contribute.tpl'}
</div><!-- main-contents -->
</div><!-- main -->
{include file='footer.tpl'}

View File

@@ -24,6 +24,7 @@
</script>
{else}
<h1>{$lang.noResult} <i>{$search|escape:"html"}</i></h1>
<div class="search-noresults"/></div>
{$lang.tryAgain}
{/if}