- implemented factions basics (search, listview and details)

- added forgotten shared brick for tooltips
This commit is contained in:
Sarjuuk
2014-01-22 10:32:31 +01:00
parent c7c6028adf
commit 91ecc21e8c
26 changed files with 784 additions and 197 deletions

View File

@@ -136,6 +136,7 @@ define('CUSTOM_HAS_VIDEO', 0x04000000);
define('CUSTOM_DISABLED', 0x08000000); define('CUSTOM_DISABLED', 0x08000000);
define('CUSTOM_SERVERSIDE', 0x10000000); define('CUSTOM_SERVERSIDE', 0x10000000);
define('CUSTOM_UNAVAILABLE', 0x20000000); define('CUSTOM_UNAVAILABLE', 0x20000000);
define('CUSTOM_EXCLUDE_FOR_LISTVIEW', 0x40000000); // will not show up in search or on listPage (override for staff)
// Custom Flags (per type) // Custom Flags (per type)
define('SPELL_CU_TALENT', 0x0001); // passive talent define('SPELL_CU_TALENT', 0x0001); // passive talent
@@ -147,7 +148,7 @@ define('SPELL_CU_PET_TALENT_TYPE2', 0x0020); // Cunning
define('SPELL_CU_GLYPH_MAJOR', 0x0040); define('SPELL_CU_GLYPH_MAJOR', 0x0040);
define('SPELL_CU_GLYPH_MINOR', 0x0080); define('SPELL_CU_GLYPH_MINOR', 0x0080);
define('SPELL_CU_QUALITY_MASK', 0x0F00); // set if spell creates an item: (7 - Quality) << 8 define('SPELL_CU_QUALITY_MASK', 0x0F00); // set if spell creates an item: (7 - Quality) << 8
define('SPELL_CU_EXCLUDE_CATEGORY_SEARCH', 0x1000); // only display, when searching for spells in general (!cat || cat = 0) // define('SPELL_CU_EXCLUDE_CATEGORY_SEARCH', 0x1000); // migrate to CUSTOM_EXCLUDE_FOR_LISTVIEW
define('SPELL_CU_FIRST_RANK', 0x2000); // used by filter define('SPELL_CU_FIRST_RANK', 0x2000); // used by filter
define('SPELL_CU_LAST_RANK', 0x4000); define('SPELL_CU_LAST_RANK', 0x4000);

View File

@@ -6,7 +6,33 @@ if (!defined('AOWOW_REVISION'))
class FactionList extends BaseType class FactionList extends BaseType
{ {
public static $type = TYPE_FACTION; public static $type = TYPE_FACTION;
protected $queryBase = 'SELECT f1.*, f1.id AS ARRAY_KEY, f1.parentFactionId AS cat FROM ?_factions f1';
protected $queryOpts = array(
'f1' => [['f2']],
'f2' => ['j' => ['?_factions f2 ON f1.parentFactionId = f2.id', true], 's' => ', IFNULL(f2.parentFactionId, 0) AS cat2']
);
public function __construct($conditions = [])
{
parent::__construct($conditions);
if ($this->error)
return;
// post processing
foreach ($this->iterate() as &$_curTpl)
{
// prepare factionTemplates
if ($_curTpl['templateIds'])
$_curTpl['templateIds'] = explode(' ', $_curTpl['templateIds']);
// prepare quartermaster
if ($_curTpl['qmNpcIds'])
$_curTpl['qmNpcIds'] = explode(' ', $_curTpl['qmNpcIds']);
}
}
public static function getName($id) public static function getName($id)
{ {
@@ -20,24 +46,37 @@ class FactionList extends BaseType
FROM FROM
?_factions ?_factions
WHERE WHERE
factionID = ?d', id = ?d',
$id $id
); );
return Util::localizedString($n, 'name'); return Util::localizedString($n, 'name');
} }
public function reactsAgainst($faction) public function getListviewData()
{ {
// see factionTemplate $data = [];
/*
1: friendly foreach ($this->iterate() as $__)
0: neutral {
-1: hostile $data[$this->id] = array(
*/ 'category' => $this->curTpl['cat'],
'category2' => $this->curTpl['cat2'],
'expansion' => $this->curTpl['expansion'],
'id' => $this->id,
'side' => $this->curTpl['side'],
'name' => $this->getField('name', true)
);
}
return $data;
}
public function addGlobalsToJScript(&$template, $addMask = 0)
{
foreach ($this->iterate() as $__)
$template->extendGlobalData(self::$type, [$this->id => ['name' => $this->getField('name', true)]]);
} }
public function getListviewData() { }
public function addGlobalsToJScript(&$template, $addMask = 0) { }
public function renderTooltip() { } public function renderTooltip() { }
} }

View File

@@ -316,7 +316,10 @@ class ItemList extends BaseType
$data[$this->id]['reqfaction'] = $x; $data[$this->id]['reqfaction'] = $x;
if ($x = $this->curTpl['requiredFactionRank']) if ($x = $this->curTpl['requiredFactionRank'])
$data[$this->id]['reqrep'] = $x; {
$data[$this->id]['reqrep'] = $x;
$data[$this->id]['standing'] = $x; // used in /faction item-listing
}
if ($x = $this->curTpl['slots']) if ($x = $this->curTpl['slots'])
$data[$this->id]['nslots'] = $x; $data[$this->id]['nslots'] = $x;
@@ -1237,6 +1240,9 @@ class ItemList extends BaseType
{ {
$this->ssd[$this->id] = DB::Aowow()->selectRow("SELECT * FROM ?_scalingstatdistribution WHERE id = ?", $this->curTpl['scalingStatDistribution']); $this->ssd[$this->id] = DB::Aowow()->selectRow("SELECT * FROM ?_scalingstatdistribution WHERE id = ?", $this->curTpl['scalingStatDistribution']);
if (!$this->ssd[$this->id])
return;
// stats and ratings // stats and ratings
for ($i = 1; $i <= 10; $i++) for ($i = 1; $i <= 10; $i++)
{ {

View File

@@ -112,7 +112,7 @@ class QuestList extends BaseType
return $data; return $data;
} }
public function getListviewData() public function getListviewData($extraFactionId = 0) // i should formulate a propper parameter..
{ {
$data = []; $data = [];
@@ -170,6 +170,7 @@ class QuestList extends BaseType
$data[$this->id]['weekly'] = true; $data[$this->id]['weekly'] = true;
// flags & 64: Hostile - there are quests, that flag the player for pvp when taken .. where is that set..? // flags & 64: Hostile - there are quests, that flag the player for pvp when taken .. where is that set..?
// wflags: &1: disabled/historical; &32: AutoAccept; &64: Hostile(?)
if ($this->curTpl['Flags'] & 0x4000) // Unavailable (todo (med): get disables) if ($this->curTpl['Flags'] & 0x4000) // Unavailable (todo (med): get disables)
{ {
$data[$this->id]['historical'] = true; // post 5.0 $data[$this->id]['historical'] = true; // post 5.0
@@ -179,7 +180,23 @@ class QuestList extends BaseType
if ($this->curTpl['Flags'] & 0x80000) // Auto Accept if ($this->curTpl['Flags'] & 0x80000) // Auto Accept
$data[$this->id]['wflags'] |= 0x20; $data[$this->id]['wflags'] |= 0x20;
// todo reprewards .. accesses QuestFactionReward.dbc $data[$this->id]['reprewards'] = [];
for ($i = 1; $i < 6; $i++)
{
$foo = $this->curTpl['RewardFactionId'.$i];
$bar = $this->curTpl['RewardFactionValueIdOverride'.$i] / 100;
if (!$bar && ($_ = $this->curTpl['RewardFactionValueId'.$i]))
$bar = Util::$questFactionReward[abs($_)] * ($_ < 0 ? -1 : 1);
if ($foo && $bar)
{
$data[$this->id]['reprewards'][] = [$foo, $bar];
if ($extraFactionId == $foo)
$data[$this->id]['reputation'] = $bar;
}
}
} }
return $data; return $data;

View File

@@ -53,7 +53,6 @@ class SkillList extends BaseType
foreach ($this->iterate() as $__) foreach ($this->iterate() as $__)
{ {
$data[$this->id] = array( $data[$this->id] = array(
'category' => $this->curTpl['typeCat'], 'category' => $this->curTpl['typeCat'],
'categorybak' => $this->curTpl['categoryId'], 'categorybak' => $this->curTpl['categoryId'],

View File

@@ -18,6 +18,7 @@ class Lang
public static $class; public static $class;
public static $currency; public static $currency;
public static $event; public static $event;
public static $faction;
public static $item; public static $item;
public static $itemset; public static $itemset;
public static $maps; public static $maps;
@@ -344,7 +345,7 @@ class SmartyAoWoW extends Smarty
if ($article) if ($article)
{ {
$tv['article'] = ['text' => $article['article']]; $tv['article'] = ['text' => Util::jsEscape($article['article'])];
if (empty($tv['infobox']) && !empty($article['quickInfo'])) if (empty($tv['infobox']) && !empty($article['quickInfo']))
$tv['infobox'] = $article['quickInfo']; $tv['infobox'] = $article['quickInfo'];
@@ -493,7 +494,7 @@ class SmartyAoWoW extends Smarty
case TYPE_NPC: (new CreatureList(array(['ct.id', $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_OBJECT: (new GameobjectList(array(['gt.entry', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
case TYPE_ITEM: (new ItemList(array(['i.id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break; case TYPE_ITEM: (new ItemList(array(['i.id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
case TYPE_QUEST: (new QuestList(array(['qt.entry', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break; case TYPE_QUEST: (new QuestList(array(['qt.id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
case TYPE_SPELL: (new SpellList(array(['s.id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break; case TYPE_SPELL: (new SpellList(array(['s.id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
case TYPE_ZONE: (new ZoneList(array(['z.id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break; case TYPE_ZONE: (new ZoneList(array(['z.id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
case TYPE_FACTION: (new FactionList(array(['id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break; case TYPE_FACTION: (new FactionList(array(['id', $ids], 0)))->addGlobalsToJscript($this, GLOBALINFO_SELF); break;
@@ -638,6 +639,11 @@ class Util
10 => [ 65, 66, 67, 210, 394, 495, 3537, 3711, 4024, 4197, 4395] 10 => [ 65, 66, 67, 210, 394, 495, 3537, 3711, 4024, 4197, 4395]
); );
public static $questFactionReward = array( // from QuestFactionReward.dbc
0, 10, 25, 75, 150, 250, 350, 500, 1000, 5
);
/* why: /* why:
Because petSkills (and ranged weapon skills) are the only ones with more than two skillLines attached. Because Left Joining ?_spell with ?_skillLineAbility causes more trouble than it has uses. Because petSkills (and ranged weapon skills) are the only ones with more than two skillLines attached. Because Left Joining ?_spell with ?_skillLineAbility causes more trouble than it has uses.
Because this is more or less the only reaonable way to fit all that information into one database field, so.. Because this is more or less the only reaonable way to fit all that information into one database field, so..
@@ -750,8 +756,7 @@ class Util
null, 4, 10, 9, 8, 6, 15, 11, 3, 5, null, 7 null, 4, 10, 9, 8, 6, 15, 11, 3, 5, null, 7
); );
// from DurabilityQuality.dbc public static $itemDurabilityQualityMod = array( // from DurabilityQuality.dbc
public static $itemDurabilityQualityMod = array(
null, 1.0, 0.6, 1.0, 0.8, 1.0, 1.0, 1.2, 1.25, 1.44, 2.5, 1.728, 3.0, 0.0, 0.0, 1.2, 1.25 null, 1.0, 0.6, 1.0, 0.8, 1.0, 1.0, 1.2, 1.25, 1.44, 2.5, 1.728, 3.0, 0.0, 0.0, 1.2, 1.25
); );

View File

@@ -330,6 +330,12 @@ $lang = array(
'exotic' => "Exotisch", 'exotic' => "Exotisch",
'cat' => ["Wildheit", "Hartnäckigkeit", "Gerissenheit"] 'cat' => ["Wildheit", "Hartnäckigkeit", "Gerissenheit"]
), ),
'faction' => array(
'spillover' => "Reputationsüberlauf",
'spilloverDesc' => "Für diese Fraktion erhaltener Ruf wird zusätzlich mit den unten aufgeführten Fraktionen anteilig verrechnet.",
'maxStanding' => "Max. Ruf",
'quartermaster' => "Rüstmeister"
),
'itemset' => array( 'itemset' => array(
'_desc' => "<b>%s</b> ist das <b>%s</b>. Es enthält %s Teile.", '_desc' => "<b>%s</b> ist das <b>%s</b>. Es enthält %s Teile.",
'_descTagless' => "<b>%s</b> ist ein Ausrüstungsset, das %s Teile enthält.", '_descTagless' => "<b>%s</b> ist ein Ausrüstungsset, das %s Teile enthält.",

View File

@@ -317,6 +317,12 @@ $lang = array(
'exotic' => "Exotic", 'exotic' => "Exotic",
'cat' => ["Ferocity", "Tenacity", "Cunning"] 'cat' => ["Ferocity", "Tenacity", "Cunning"]
), ),
'faction' => array(
'spillover' => "Reputation Spillover",
'spilloverDesc' => "Gaining Reputation with this faction also yields a proportional gain with the factions listed below.",
'maxStanding' => "Max. Standing",
'quartermaster' => "Quartermaster"
),
'itemset' => array( 'itemset' => array(
'_desc' => "<b>%s</b> is the <b>%s</b>. It contains %s pieces.", '_desc' => "<b>%s</b> is the <b>%s</b>. It contains %s pieces.",
'_descTagless' => "<b>%s</b> is an item set that contains %s pieces.", '_descTagless' => "<b>%s</b> is an item set that contains %s pieces.",

View File

@@ -288,6 +288,12 @@ $lang = array(
'exotic' => "Exótica", 'exotic' => "Exótica",
'cat' => ["Ferocidad", "Tenacidad", "Astucia"] 'cat' => ["Ferocidad", "Tenacidad", "Astucia"]
), ),
'faction' => array(
'spillover' => "[Reputation Spillover]",
'spilloverDesc' => "[Gaining Reputation with this faction also yields a proportional gain with the factions listed below.]",
'maxStanding' => "Posición máxima",
'quartermaster' => "Intendente"
),
'itemset' => array( 'itemset' => array(
'_desc' => "<b>%s</b> es el <b>%s</b>. Contiene %s piezas.", '_desc' => "<b>%s</b> es el <b>%s</b>. Contiene %s piezas.",
'_descTagless' => "<b>%s</b> es un conjunto de objetos que tiene %s piezas.", '_descTagless' => "<b>%s</b> es un conjunto de objetos que tiene %s piezas.",

View File

@@ -288,6 +288,12 @@ $lang = array(
'exotic' => "Exotique", 'exotic' => "Exotique",
'cat' => ["Férocité", "Tenacité", "Ruse"] 'cat' => ["Férocité", "Tenacité", "Ruse"]
), ),
'faction' => array(
'spillover' => "[Reputation Spillover]",
'spilloverDesc' => "[Gaining Reputation with this faction also yields a proportional gain with the factions listed below.]",
'maxStanding' => "Niveau maximum",
'quartermaster' => "Intendant"
),
'itemset' => array( 'itemset' => array(
'_desc' => "<b>%s</b> est le <b>%s</b>. Il contient %s pièces.", '_desc' => "<b>%s</b> est le <b>%s</b>. Il contient %s pièces.",
'_descTagless' => "<b>%s</b> est un ensemble d'objet qui contient %s pièces.", '_descTagless' => "<b>%s</b> est un ensemble d'objet qui contient %s pièces.",

View File

@@ -288,6 +288,12 @@ $lang = array(
'exotic' => "Экзотический", 'exotic' => "Экзотический",
'cat' => ["Свирепость", "Упорство", "Хитрость"] 'cat' => ["Свирепость", "Упорство", "Хитрость"]
), ),
'faction' => array(
'spillover' => "[Reputation Spillover]",
'spilloverDesc' => "[Gaining Reputation with this faction also yields a proportional gain with the factions listed below.]",
'maxStanding' => "Макс Уровень",
'quartermaster' => "Интендант"
),
'itemset' => array( 'itemset' => array(
'_desc' => "<b>%s</b> — <b>%s</b>. Он состоит из %s предметов.", '_desc' => "<b>%s</b> — <b>%s</b>. Он состоит из %s предметов.",
'_descTagless' => "<b>%s</b> — набор из %s предметов.", '_descTagless' => "<b>%s</b> — набор из %s предметов.",

View File

@@ -88,13 +88,13 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
switch ($acv->getField('faction')) switch ($acv->getField('faction'))
{ {
case 1: case 1:
$infobox[] = Lang::$main['side'].': [span class=alliance-icon]'.Lang::$game['si'][SIDE_ALLIANCE].'[/span]'; $infobox[] = Lang::$main['side'].Lang::$colon.'[span class=alliance-icon]'.Lang::$game['si'][SIDE_ALLIANCE].'[/span]';
break; break;
case 2: case 2:
$infobox[] = Lang::$main['side'].': [span class=horde-icon]'.Lang::$game['si'][SIDE_HORDE].'[/span]'; $infobox[] = Lang::$main['side'].Lang::$colon.'[span class=horde-icon]'.Lang::$game['si'][SIDE_HORDE].'[/span]';
break; break;
default: // case 3 default: // case 3
$infobox[] = Lang::$main['side'].': '.Lang::$game['si'][SIDE_BOTH]; $infobox[] = Lang::$main['side'].Lang::$colon.Lang::$game['si'][SIDE_BOTH];
} }
// todo (low): crosslink with charactersDB to check if realmFirsts are still available // todo (low): crosslink with charactersDB to check if realmFirsts are still available

236
pages/faction.php Normal file
View File

@@ -0,0 +1,236 @@
<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
require 'includes/community.class.php';
$_id = intVal($pageParam);
$cacheKeyPage = implode('_', [CACHETYPE_PAGE, TYPE_FACTION, $_id, -1, User::$localeId]);
if (!$smarty->loadCache($cacheKeyPage, $pageData))
{
$faction = new FactionList(array(['id', $_id]));
if ($faction->error)
$smarty->notFound(Lang::$game['faction']);
/***********/
/* Infobox */
/***********/
$infobox = [];
// Quartermaster if any
if ($ids = $faction->getField('qmNpcIds'))
{
Util::$pageTemplate->extendGlobalIds(TYPE_NPC, $ids);
$qmStr = Lang::$faction['quartermaster'].Lang::$colon;
if (count($ids) == 1)
$qmStr .= '[npc='.$ids[0].']';
else if (count($ids) > 1)
{
$qmStr .= '[ul]';
foreach ($ids as $id)
$qmStr .= '[li][npc='.$id.'][/li]';
$qmStr .= '[/ul]';
}
$infobox[] = $qmStr;
}
// side if any
if ($_ = $faction->getField('side'))
$infobox[] = Lang::$main['side'].Lang::$colon.'[span class='.($_ == 1 ? 'alliance' : 'horde').'-icon]'.Lang::$game['si'][$_].'[/span]';
/****************/
/* Main Content */
/****************/
$pageData = array(
'title' => $faction->getField('name', true),
'path' => [0, 7],
'relTabs' => [],
'spillover' => null,
'infobox' => $infobox ? '[ul][li]'.implode('[/li][li]', $infobox).'[/li][/ul]' : null,
'buttons' => array(
BUTTON_WOWHEAD => true,
BUTTON_LINKS => true
),
'page' => array(
'name' => $faction->getField('name', true),
'id' => $_id
),
);
if ($_ = $faction->getField('cat2'))
$pageData['path'][] = $_;
if ($_ = $faction->getField('cat'))
$pageData['path'][] = $_;
// Spillover Effects
$conditions = array(
['id', $_id, '!'], // not self
['reputationIndex', -1, '!'] // only gainable
);
if ($p = $faction->getField('parentFactionId')) // linked via parent
$conditions[] = ['OR', ['id', $p], ['parentFactionId', $p]];
else
$conditions[] = ['parentFactionId', $_id]; // self as parent
$spillover = new FactionList($conditions);
$spillover->addGlobalsToJscript(Util::$pageTemplate);
$buff = [];
foreach ($spillover->iterate() as $spillId => $__)
if ($val = ($spillover->getField('spilloverRateIn') * $faction->getField('spilloverRateOut') * 100))
$buff[] = '[tr][td][faction='.$spillId.'][/td][td][span class=q'.($val > 0 ? '2]+' : '10]').$val.'%[/span][/td][td]'.Lang::$game['rep'][$spillover->getField('spilloverMaxRank')].'[/td][/tr]';
if ($buff)
$pageData['spillover'] = '[h3 class=clear]'.Lang::$faction['spillover'].'[/h3][div margin=15px]'.Lang::$faction['spilloverDesc'].'[/div][table class=grid width=400px][tr][td width=150px][b]'.Util::ucFirst(Lang::$game['faction']).'[/b][/td][td width=100px][b]'.Lang::$spell['_value'].'[/b][/td][td width=150px][b]'.Lang::$faction['maxStanding'].'[/b][/td][/tr]'.implode('', $buff).'[/table]';
/**************/
/* Extra Tabs */
/**************/
// tab: items
$items = new ItemList(array(['requiredFaction', $_id]));
if (!$items->error)
{
$items->addGlobalsToJscript($smarty, GLOBALINFO_SELF);
$pageData['relTabs'][] = array(
'file' => 'item',
'data' => $items->getListviewData(),
'showRep' => true,
'params' => array(
'tabs' => '$tabsRelated',
'extraCols' => '$_',
'sort' => "$['standing', 'name']",
'note' => sprintf(Util::$filterResultString, '?items&filter=cr=17;crs='.$_id.';crv=0')
)
);
}
// tab: creatures with onKill reputation
$cIds = DB::Aowow()->selectCol('SELECT DISTINCT creature_id FROM creature_onkill_reputation cor, ?_factions f WHERE
(RewOnKillRepValue1 > 0 AND (RewOnKillRepFaction1 = ?d OR (cor.RewOnKillRepFaction1 = f.id AND f.parentFactionId = ?d AND IsTeamAward1 <> 0))) OR
(RewOnKillRepValue2 > 0 AND (RewOnKillRepFaction2 = ?d OR (cor.RewOnKillRepFaction2 = f.id AND f.parentFactionId = ?d AND IsTeamAward2 <> 0)))',
$_id, $faction->getField('parentFactionId'),
$_id, $faction->getField('parentFactionId')
);
$killCreatures = new CreatureList(array(['id', $cIds]));
if (!$killCreatures->error)
{
$killCreatures->addGlobalsToJscript($smarty);
$pageData['relTabs'][] = array(
'file' => 'npc',
'data' => $killCreatures->getListviewData(),
'showRep' => true,
'params' => array(
'tabs' => '$tabsRelated',
)
);
}
// tab: members
$conditions = array(
['factionA', $faction->getField('templateIds')],
['factionH', $faction->getField('templateIds')],
'OR'
);
$killCreatures = new CreatureList($conditions);
if (!$killCreatures->error)
{
$killCreatures->addGlobalsToJscript($smarty);
$pageData['relTabs'][] = array(
'file' => 'npc',
'data' => $killCreatures->getListviewData(),
'showRep' => true,
'params' => array(
'id' => 'member',
'name' => '$LANG.tab_member',
'tabs' => '$tabsRelated',
)
);
}
// tab: quests
$conditions = array(
['AND', ['RewardFactionId1', $_id], ['OR', ['RewardFactionValueId1', 0, '>'], ['RewardFactionValueIdOverride1', 0, '>']]],
['AND', ['RewardFactionId2', $_id], ['OR', ['RewardFactionValueId2', 0, '>'], ['RewardFactionValueIdOverride2', 0, '>']]],
['AND', ['RewardFactionId3', $_id], ['OR', ['RewardFactionValueId3', 0, '>'], ['RewardFactionValueIdOverride3', 0, '>']]],
['AND', ['RewardFactionId4', $_id], ['OR', ['RewardFactionValueId4', 0, '>'], ['RewardFactionValueIdOverride4', 0, '>']]],
['AND', ['RewardFactionId5', $_id], ['OR', ['RewardFactionValueId5', 0, '>'], ['RewardFactionValueIdOverride5', 0, '>']]],
'OR'
);
$quests = new QuestList($conditions);
if (!$quests->error)
{
$quests->addGlobalsToJscript($smarty, GLOBALINFO_ANY);
$pageData['relTabs'][] = array(
'file' => 'quest',
'data' => $quests->getListviewData($_id),
'showRep' => true,
'params' => array(
'tabs' => '$tabsRelated',
'extraCols' => '$_',
'note' => sprintf(Util::$filterResultString, '?quests?filter=cr=1;crs='.$_id.';crv=0')
)
);
}
// tab: achievements
$conditions = array(
['ac.type', ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION],
['ac.value1', $_id]
);
$acvs = new AchievementList($conditions);
if (!$acvs->error)
{
$acvs->addGlobalsToJscript($smarty, GLOBALINFO_ANY);
$pageData['relTabs'][] = array(
'file' => 'achievement',
'data' => $acvs->getListviewData(),
'params' => array(
'id' => 'criteria-of',
'name' => '$LANG.tab_criteriaof',
'tabs' => '$tabsRelated',
'visibleCols' => "$['category']"
)
);
}
$smarty->saveCache($cacheKeyPage, $pageData);
}
// menuId 7: Faction g_initPath()
// tabId 0: Database g_initHeader()
$smarty->updatePageVars(array(
'title' => $pageData['title']." - ".Util::ucfirst(Lang::$game['skill']),
'path' => json_encode($pageData['path'], JSON_NUMERIC_CHECK),
'tab' => 0,
'type' => TYPE_FACTION,
'typeId' => $_id
));
$smarty->assign('redButtons', $pageData['buttons']);
$smarty->assign('community', CommunityContent::getAll(TYPE_FACTION, $_id)); // comments, screenshots, videos
$smarty->assign('lang', array_merge(Lang::$main, [Lang::$colon]));
$smarty->assign('lvData', $pageData);
// load the page
$smarty->display('faction.tpl');
?>

80
pages/factions.php Normal file
View File

@@ -0,0 +1,80 @@
<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
$cats = Util::extractURLParams($pageParam);
$path = [0, 7];
$title = [Util::ucFirst(Lang::$game['factions'])];
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_FACTION, -1, implode('.', $cats), User::$localeId]);
$validCats = array(
1118 => [469, 891, 67, 892, 169],
980 => [936],
1097 => [1037, 1052, 1117],
0 => true
);
if (!Util::isValidPage($validCats, $cats))
$smarty->error();
if (!$smarty->loadCache($cacheKey, $pageData))
{
$conditions = [];
if (User::isInGroup(U_GROUP_STAFF))
$conditions[] = ['reputationIndex', -1, '!']; // unlisted factions
if (isset($cats[0]) && empty($cats[1]))
{
if (!$cats[0])
$conditions[] = ['f1.parentFactionId', [1118, 980, 1097, 469, 891, 67, 892, 169, 1037, 1052, 1117, 936], '!'];
else
{
$subs = DB::Aowow()->selectCol('SELECT id FROM ?_factions WHERE parentFactionId = ?d', $cats[0]);
$conditions[] = ['OR', ['f1.parentFactionId', $subs], ['f1.id', $subs]];
}
$path[] = $cats[0];
// array_unshift($title, Lang::$factions['cat'][$cats[0]]);
}
else if (!empty($cats[1]))
{
$conditions[] = ['f1.parentFactionId', $cats[1]];
$path[] = $cats[0];
$path[] = $cats[1];
// array_unshift($title, Lang::$factions['cat'][$cats[1]]);
}
$factions = new FactionList($conditions);
$pageData = array(
'title' => $title,
'path' => $path,
'listviews' => array(
array(
'file' => 'faction',
'data' => $factions->getListviewData(),
'params' => []
)
)
);
$smarty->saveCache($cacheKey, $pageData);
}
// menuId 7: Faction g_initPath()
// tabId 0: Database g_initHeader()
$smarty->updatePageVars(array(
'title' => implode(' - ', $title),
'path' => json_encode($path, JSON_NUMERIC_CHECK),
'tab' => 0
));
$smarty->assign('lang', Lang::$main);
$smarty->assign('lvData', $pageData);
// load the page
$smarty->display('generic-no-filter.tpl');
?>

View File

@@ -71,7 +71,8 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
} }
// 2 recipe Items [items] (Books) // 2 recipe Items [items] (Books)
$conditions = array( $skill2Filter = [null, 171, 164, 185, 333, 202, 129, 755, 165, 186, 197, null, null, 356, 182, 773];
$conditions = array(
['requiredSkill', $_id], ['requiredSkill', $_id],
['class', ITEM_CLASS_RECIPE], ['class', ITEM_CLASS_RECIPE],
0 0
@@ -89,7 +90,7 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
'id' => 'recipe-items', 'id' => 'recipe-items',
'name' => '$LANG.tab_recipeitems', 'name' => '$LANG.tab_recipeitems',
'tabs' => '$tabsRelated', 'tabs' => '$tabsRelated',
// 'note' => sprintf(Util::$filterResultString, "?items=9.subClass") // todo (med): after items 'note' => !empty(array_flip($skill2Filter)[$_id]) ? sprintf(Util::$filterResultString, "?items=9.".array_flip($skill2Filter)[$_id]) : null
) )
); );
} }
@@ -345,7 +346,6 @@ if (!$smarty->loadCache($cacheKeyPage, $pageData))
} }
} }
$smarty->saveCache($cacheKeyPage, $pageData); $smarty->saveCache($cacheKeyPage, $pageData);
} }

View File

@@ -26,6 +26,8 @@ if (!$smarty->loadCache($cacheKey, $pageData))
$skills = new SkillList($conditions); $skills = new SkillList($conditions);
$pageData = array( $pageData = array(
'title' => $title,
'path' => $path,
'listviews' => array( 'listviews' => array(
array( array(
'file' => 'skill', 'file' => 'skill',

View File

@@ -39,7 +39,7 @@ if (!defined('AOWOW_REVISION'))
18: Listview - template: 'achievement', id: 'statistics', name: LANG.tab_statistics, 18: Listview - template: 'achievement', id: 'statistics', name: LANG.tab_statistics,
19: Listview - template: 'zone', id: 'zones', name: LANG.tab_zones, 19: Listview - template: 'zone', id: 'zones', name: LANG.tab_zones,
20: Listview - template: 'object', id: 'objects', name: LANG.tab_objects, 20: Listview - template: 'object', id: 'objects', name: LANG.tab_objects,
todo 21: Listview - template: 'faction', id: 'factions', name: LANG.tab_factions, 21: Listview - template: 'faction', id: 'factions', name: LANG.tab_factions,
22: Listview - template: 'skill', id: 'skills', name: LANG.tab_skills, 22: Listview - template: 'skill', id: 'skills', name: LANG.tab_skills,
23: Listview - template: 'pet', id: 'pets', name: LANG.tab_pets, 23: Listview - template: 'pet', id: 'pets', name: LANG.tab_pets,
24: Listview - template: 'spell', id: 'npc-abilities', name: LANG.tab_npcabilities, 24: Listview - template: 'spell', id: 'npc-abilities', name: LANG.tab_npcabilities,
@@ -379,7 +379,7 @@ if ($searchMask & 0x80)
{ {
$conditions = array( // hmm, inclued classMounts..? $conditions = array( // hmm, inclued classMounts..?
['s.typeCat', [7, -2, -3]], ['s.typeCat', [7, -2, -3]],
[['s.cuFlags', (SPELL_CU_TRIGGERED | SPELL_CU_TALENT | SPELL_CU_EXCLUDE_CATEGORY_SEARCH), '&'], 0], [['s.cuFlags', (SPELL_CU_TRIGGERED | SPELL_CU_TALENT | CUSTOM_EXCLUDE_FOR_LISTVIEW), '&'], 0],
[['s.attributes0', 0x80, '&'], 0], [['s.attributes0', 0x80, '&'], 0],
['s.name_loc'.User::$localeId, $query], ['s.name_loc'.User::$localeId, $query],
$maxResults $maxResults
@@ -861,7 +861,7 @@ if ($searchMask & 0x80000)
{ {
$objects->addGlobalsToJScript($smarty); $objects->addGlobalsToJScript($smarty);
$found['zone'] = array( $found['object'] = array(
'type' => TYPE_OBJECT, 'type' => TYPE_OBJECT,
'appendix' => ' (Object)', 'appendix' => ' (Object)',
'matches' => $objects->getMatches(), 'matches' => $objects->getMatches(),
@@ -874,14 +874,43 @@ if ($searchMask & 0x80000)
if ($objects->getMatches() > $maxResults) if ($objects->getMatches() > $maxResults)
{ {
$found['zone']['params']['note'] = sprintf(Util::$tryNarrowingString, 'LANG.lvnote_objectsfound', $objects->getMatches(), $maxResults); $found['object']['params']['note'] = sprintf(Util::$tryNarrowingString, 'LANG.lvnote_objectsfound', $objects->getMatches(), $maxResults);
$found['zone']['params']['_truncated'] = 1; $found['object']['params']['_truncated'] = 1;
} }
} }
} }
// 21 Factions // 21 Factions
// if ($searchMask & 0x100000) if ($searchMask & 0x100000)
{
$conditions = array(
['name_loc'.User::$localeId, $query],
[['cuFlags', CUSTOM_EXCLUDE_FOR_LISTVIEW, '&'], 0],
$maxResults
);
$factions = new FactionList($conditions);
if ($data = $factions->getListviewData())
{
$found['faction'] = array(
'type' => TYPE_FACTION,
'appendix' => ' (Faction)',
'matches' => $factions->getMatches(),
'file' => 'faction',
'data' => $data,
'params' => [
'tabs' => '$myTabs'
]
);
if ($factions->getMatches() > $maxResults)
{
$found['faction']['params']['note'] = sprintf(Util::$tryNarrowingString, 'LANG.lvnote_factionsfound', $factions->getMatches(), $maxResults);
$found['faction']['params']['_truncated'] = 1;
}
}
}
// 22 Skills // 22 Skills
if ($searchMask & 0x200000) if ($searchMask & 0x200000)
@@ -985,7 +1014,7 @@ if ($searchMask & 0x1000000)
{ {
$conditions = array( $conditions = array(
['s.name_loc'.User::$localeId, $query], ['s.name_loc'.User::$localeId, $query],
['OR', ['s.typeCat', [0, -9]], ['s.cuFlags', SPELL_CU_EXCLUDE_CATEGORY_SEARCH, '&']], ['OR', ['s.typeCat', [0, -9]], ['s.cuFlags', CUSTOM_EXCLUDE_FOR_LISTVIEW, '&']],
$maxResults $maxResults
); );

View File

@@ -0,0 +1,28 @@
{strip}
new Listview({ldelim}
template:'faction',
{if !isset($params.id)}id:'factions',{/if}
{if !isset($params.name)}name:LANG.tab_factions,{/if}
{if !isset($params.parent)}parent:'lv-generic',{/if}
{foreach from=$params key=k item=v}
{if $v[0] == '$'}
{$k}:{$v|substr:1},
{else if $v}
{$k}:'{$v}',
{/if}
{/foreach}
data:[
{foreach name=i from=$data item=curr}
{ldelim}
{foreach from=$curr key='name' item=val}
{if $name != 'id'}
{$name}:{$val|@json_encode:$smarty.const.JSON_NUMERIC_CHECK},
{/if}
{/foreach}
id:{$curr.id}
{rdelim}
{if $smarty.foreach.i.last}{else},{/if}
{/foreach}
]
{rdelim});
{/strip}

View File

@@ -1,3 +1,24 @@
{if !empty($tab.showRep)}
var _ = [
{ldelim}
id: 'standing',
after: 'reqlevel',
name: LANG.standing,
width: '12%',
value: 'standing',
type: 'text',
getValue: function(item)
{ldelim}
return g_reputation_standings[item.standing];
{rdelim},
compute: function(item, td)
{ldelim}
return g_reputation_standings[item.standing];
{rdelim}
{rdelim}
];
{/if}
{strip} {strip}
new Listview({ldelim} new Listview({ldelim}
template:'item', template:'item',

View File

@@ -1,3 +1,16 @@
{if !empty($tab.showRep)}
var _ = [
{ldelim}
id: 'reputation',
after: 'rewards',
name: LANG.rep,
tooltip: LANG.tooltip_repgain,
width: '8%',
value: 'reputation'
{rdelim}
];
{/if}
{strip} {strip}
new Listview({ldelim} new Listview({ldelim}
template:'quest', template:'quest',
@@ -14,62 +27,12 @@
data:[ data:[
{foreach name=i from=$data item=curr} {foreach name=i from=$data item=curr}
{ldelim} {ldelim}
id:'{$curr.id}', {foreach from=$curr key='name' item=val}
name:'{$curr.name|escape:"quotes"}', {if $name != 'id'}
level:'{$curr.level}', {$name}:{$val|@json_encode:$smarty.const.JSON_NUMERIC_CHECK},
{if isset($curr.reqlevel)} {/if}
reqlevel:{$curr.reqlevel}, {/foreach}
{/if} id:{$curr.id}
{if isset($curr.reqclass)}
reqclass:{$curr.reqclass},
{/if}
{if isset($curr.reqrace)}
reqrace:{$curr.reqrace},
{/if}
side:'{$curr.side}'
{if isset($curr.itemrewards)}
,itemrewards:[
{section name=j loop=$curr.itemrewards}
[{$curr.itemrewards[j][0]},{$curr.itemrewards[j][1]}]
{if $smarty.section.j.last}{else},{/if}
{/section}
]
{/if}
{if isset($curr.itemchoices)}
,itemchoices:[
{section name=j loop=$curr.itemchoices}
[{$curr.itemchoices[j][0]},{$curr.itemchoices[j][1]}]
{if $smarty.section.j.last}{else},{/if}
{/section}
]
{/if}
{if $curr.xp}
,xp:{$curr.xp}
{/if}
{if isset($curr.titlereward)}
,titlereward:{$curr.titlereward}
{/if}
{if isset($curr.money)}
,money:{$curr.money}
{/if}
{if isset($curr.category)}
,category:{$curr.category}
{/if}
{if isset($curr.category2)}
,category2:{$curr.category2}
{/if}
{if isset($curr.type)}
,type:{$curr.type}
{/if}
{if isset($curr.daily)}
,daily:1
{/if}
{if isset($curr.weekly)}
,weekly:1
{/if}
{if $curr.wflags}
,wflags:{$curr.wflags} {* wflags: &1: disabled/historical; &32: AutoAccept; &64: Hostile(?) *}
{/if}
{rdelim} {rdelim}
{if $smarty.foreach.i.last}{else},{/if} {if $smarty.foreach.i.last}{else},{/if}
{/foreach} {/foreach}

View File

@@ -0,0 +1,28 @@
<div id="ic{$page.typeId}" style="float: left"></div>
<div id="tt{$page.typeId}" class="tooltip" style="float: left; padding-top: 1px"></div>
<div style="clear: left"></div>
<div id="sl{$page.typeId}" style="margin-left: 70px; margin-top: 4px;"></div>
<div id="ks{$page.typeId}" style="margin-left: 70px; margin-top: 4px;"></div>
{if !empty($jsGlobals[6][2].buff)} {* not set with items *}
<h3>{$lang._aura}</h3>
<div id="btt{$page.typeId}" class="tooltip"></div>
{/if}
<script type="text/javascript">//<![CDATA[
$WH.ge('ic{$page.typeId}').appendChild(Icon.create('{$lvData.page.icon}', 2, null, 0, {$lvData.page.stack}));
var
tt = $WH.ge('tt{$page.typeId}'),
{if !empty($jsGlobals[6][2].buff)}
btt = $WH.ge('btt{$page.typeId}'),
{/if}
sl = $WH.ge('sl{$page.typeId}'),
ks = $WH.ge('ks{$page.typeId}');
tt.innerHTML = '<table><tr><td>' + ($WH.g_enhanceTooltip.bind(tt))({$page.typeId}, true, true, sl, null, [{$page.typeId}], ks, null) + '</td><th style="background-position: top right"></th></tr><tr><th style="background-position: bottom left"></th><th style="background-position: bottom right"></th></tr></table>';
$WH.Tooltip.fixSafe(tt, 1, 1);
{if !empty($jsGlobals[6][2].buff)}
btt.innerHTML = '<table><tr><td>' + ($WH.g_enhanceTooltip.bind(btt))({$page.typeId}, true, true, sl, tt, [{$page.typeId}], ks) + '</td><th style="background-position: top right"></th></tr><tr><th style="background-position: bottom left"></th><th style="background-position: bottom right"></th></tr></table>';
$WH.Tooltip.fixSafe(btt, 1, 1);
{/if}
//]]></script>

51
template/faction.tpl Normal file
View File

@@ -0,0 +1,51 @@
{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">
{include file='bricks/redButtons.tpl'}
<h1>{$lvData.page.name}</h1>
{include file='bricks/article.tpl'}
{if $lvData.spillover}
<div id="spillover" class="left"></div>
<script type="text/javascript">//<![CDATA[
Markup.printHtml("{$lvData.spillover}", "spillover", {strip}{ldelim}
allow: Markup.CLASS_ADMIN,
dbpage: true
{rdelim}{/strip});
//]]></script>
<div class="pad2"></div>
{/if}
<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'}

20
template/factions.tpl Normal file
View File

@@ -0,0 +1,20 @@
{include file='header.tpl'}
<div id="main">
<div id="main-precontents"></div>
<div id="main-contents" class="main-contents">
<script type="text/javascript">
g_initPath({$page.path});
</script>
<div id="lv-factions" class="listview"></div>
<script type="text/javascript">
{include file='bricks/factions_table.tpl' data=$factions.data params=$factions.params}
</script>
<div class="clear"></div>
</div>
</div>
{include file='footer.tpl'}

View File

@@ -507,7 +507,7 @@ var Markup = {
unnamed: { req: false, valid: /^hidden$/i }, unnamed: { req: false, valid: /^hidden$/i },
'float': { req: false, valid: /^(left|right)$/i }, 'float': { req: false, valid: /^(left|right)$/i },
align: { req: false, valid: /^(left|right|center)$/i }, align: { req: false, valid: /^(left|right|center)$/i },
margin: { req: false, valid: /^\d+$/ }, margin: { req: false, valid: /^\d+(px|em|\%)$/ },
width: { req: false, valid: /^[0-9]+(px|em|\%)$/ } width: { req: false, valid: /^[0-9]+(px|em|\%)$/ }
}, },
allowedClass: MARKUP_CLASS_STAFF, allowedClass: MARKUP_CLASS_STAFF,
@@ -1739,7 +1739,7 @@ var Markup = {
if(g_quests[id] && g_quests[id][nameCol]) if(g_quests[id] && g_quests[id][nameCol])
{ {
var quest = g_quests[id]; var quest = g_quests[id];
return '<a href="' + url + '?quest=' + id + '"' + (!attr.icon ? ' class="icontiny"><img src="' + g_staticUrl + '/images/icons/tiny/' + (quest.daily ? 'quest_start_daily' : 'quest_start') + '.gif"' : '') + Markup._addGlobalAttributes(attr) + ' align="absmiddle" /> <span class="tinyicontxt">' + Markup._safeHtml(quest[nameCol]) + '</span></a>'; return '<a href="' + url + '?quest=' + id + '"' + (!attr.icon ? ' class="icontiny"><img src="' + g_staticUrl + '/images/icons/' + (quest.daily ? 'quest_start_daily' : 'quest_start') + '.gif"' : '') + Markup._addGlobalAttributes(attr) + ' align="absmiddle" /> <span class="tinyicontxt">' + Markup._safeHtml(quest[nameCol]) + '</span></a>';
} }
return '<a href="' + url + '?quest=' + id + '"' + Markup._addGlobalAttributes(attr) + '>(' + LANG.types[5][0] + ' #' + id + ')</a>'; return '<a href="' + url + '?quest=' + id + '"' + Markup._addGlobalAttributes(attr) + '>(' + LANG.types[5][0] + ' #' + id + ')</a>';
}, },

View File

@@ -825,132 +825,164 @@ function g_formatTimeSimple(d, txt, noPrefix) {
return txt; return txt;
} }
function g_cleanCharacterName(e) { function g_createGlow(txt, cn) {
var d = ""; var s = $WH.ce('span');
for (var c = 0, a = e.length; c < a; ++c) {
var b = e.charAt(c).toLowerCase(); for (var i = -1; i <= 1; ++i) {
if (b >= "a" && b <= "z") { for (var j = -1; j <= 1; ++j) {
d += b var d = $WH.ce('div');
} else { d.style.position = 'absolute';
d += e.charAt(c) d.style.whiteSpace = 'nowrap';
} d.style.left = i + 'px';
} d.style.top = j + 'px';
return d
} if (i == 0 && j == 0) {
function g_createGlow(a, h) { d.style.zIndex = 4;
var e = $WH.ce("span");
for (var c = -1; c <= 1; ++c) {
for (var b = -1; b <= 1; ++b) {
var g = $WH.ce("div");
g.style.position = "absolute";
g.style.whiteSpace = "nowrap";
g.style.left = c + "px";
g.style.top = b + "px";
if (c == 0 && b == 0) {
g.style.zIndex = 4
} else {
g.style.color = "black";
g.style.zIndex = 2
} }
g.innerHTML = a; else {
$WH.ae(e, g) d.style.color = 'black';
d.style.zIndex = 2;
}
//$WH.ae(d, $WH.ct(txt));
d.innerHTML = txt;
$WH.ae(s, d);
} }
} }
e.style.position = "relative";
e.className = "glow" + (h != null ? " " + h: ""); s.style.position = 'relative';
var f = $WH.ce("span"); s.className = 'glow' + (cn != null ? ' ' + cn : '');
f.style.visibility = "hidden";
$WH.ae(f, $WH.ct(a)); var ph = $WH.ce('span');
$WH.ae(e, f); ph.style.visibility = 'hidden';
return e $WH.ae(ph, $WH.ct(txt));
$WH.ae(s, ph);
return s;
} }
function g_createProgressBar(c) {
if (c == null) { function g_createProgressBar(opt) {
c = {} if (opt == null) {
opt = {};
} }
if (!c.text) {
c.text = " " if (typeof opt.text == 'undefined') {
opt.text = ' ';
} }
if (c.color == null) {
c.color = "rep0" if (opt.color == null) {
opt.color = 'rep0';
} }
if (c.width == null || c.width > 100) { if (opt.width == null || opt.width > 100) {
c.width = 100 opt.width = 100;
} }
var d, e;
if (c.hoverText) { var el, div;
d = $WH.ce("a"); if (opt.hoverText) {
d.href = "javascript:;" el = $WH.ce('a');
} else { el.href = 'javascript:;';
d = $WH.ce("span")
} }
d.className = "progressbar"; else {
if (c.text || c.hoverText) { el = $WH.ce('span');
e = $WH.ce("div"); }
e.className = "progressbar-text";
if (c.text) { el.className = 'progressbar';
var a = $WH.ce("del");
$WH.ae(a, $WH.ct(c.text)); if (opt.text || opt.hoverText) {
$WH.ae(e, a) div = $WH.ce('div');
div.className = 'progressbar-text';
if (opt.text) {
var del = $WH.ce('del');
$WH.ae(del, $WH.ct(opt.text));
$WH.ae(div, del);
} }
if (c.hoverText) {
var b = $WH.ce("ins"); if (opt.hoverText) {
$WH.ae(b, $WH.ct(c.hoverText)); var ins = $WH.ce('ins');
$WH.ae(e, b) $WH.ae(ins, $WH.ct(opt.hoverText));
$WH.ae(div, ins);
} }
$WH.ae(d, e)
$WH.ae(el, div);
} }
e = $WH.ce("div");
e.className = "progressbar-" + c.color; div = $WH.ce('div');
e.style.width = c.width + "%"; div.className = 'progressbar-' + opt.color;
$WH.ae(e, $WH.ct(String.fromCharCode(160))); div.style.width = opt.width + '%';
$WH.ae(d, e); if (opt.height) {
return d div.style.height = opt.height;
}
$WH.ae(div, $WH.ct(String.fromCharCode(160)));
$WH.ae(el, div);
if (opt.text) {
var div = $WH.ce('div');
div.className = 'progressbar-text progressbar-hidden';
$WH.ae(div, $WH.ct(opt.text));
$WH.ae(el, div);
}
return el;
} }
function g_createReputationBar(g) {
var f = g_createReputationBar.P; function g_createReputationBar(totalRep) {
if (!g) { var P = g_createReputationBar.P;
g = 0
if (!totalRep) {
totalRep = 0;
} }
g += 42000;
if (g < 0) { totalRep += 42000;
g = 0 if (totalRep < 0) {
} else { totalRep = 0;
if (g > 84999) { }
g = 84999 else if (totalRep > 84999) {
totalRep = 84999;
}
var
currentRep = totalRep,
maxRep,
standing = 0;
for (var i = 0, len = P.length; i < len; ++i) {
if (P[i] > currentRep) {
break;
}
if (i < len - 1) {
currentRep -= P[i];
standing = i + 1;
} }
} }
var e = g,
h, b = 0; maxRep = P[standing];
for (var d = 0, a = f.length; d < a; ++d) {
if (f[d] > e) { var opt = {
break text: g_reputation_standings[standing],
} hoverText: currentRep + ' / ' + maxRep,
if (d < a - 1) { color: 'rep' + standing,
e -= f[d]; width: parseInt(currentRep / maxRep * 100)
b = d + 1
}
}
h = f[b];
var c = {
text: g_reputation_standings[b],
hoverText: e + " / " + h,
color: "rep" + b,
width: parseInt(e / h * 100)
}; };
return g_createProgressBar(c)
return g_createProgressBar(opt);
} }
g_createReputationBar.P = [36000, 3000, 3000, 3000, 6000, 12000, 21000, 999]; g_createReputationBar.P = [36000, 3000, 3000, 3000, 6000, 12000, 21000, 999];
function g_createAchievementBar(b, d, a) {
if (!b) { function g_createAchievementBar(points, outOf, overall, bonus) {
b = 0 if (!points) {
points = 0;
} }
var c = {
text: b + (d > 0 ? " / " + d: ""), var opt = {
color: (a ? "rep7": "ach" + (d > 0 ? 0 : 1)), text: points + (bonus > 0 ? '(+' + bonus + ')': '') + (outOf > 0 ? ' / ' + outOf: ''),
width: (d > 0 ? parseInt(b / d * 100) : 100) color: (overall ? 'rep7' : 'ach' + (outOf > 0 ? 0 : 1)),
width: (outOf > 0 ? parseInt(points / outOf * 100) : 100)
}; };
return g_createProgressBar(c)
return g_createProgressBar(opt);
} }
function g_getMoneyHtml(money, side, costItems, costCurrency, achievementPoints) { function g_getMoneyHtml(money, side, costItems, costCurrency, achievementPoints) {

View File

@@ -27,7 +27,7 @@
{include file='bricks/redButtons.tpl'} {include file='bricks/redButtons.tpl'}
<h1 class="h1-icon">{$lvData.page.name}</h1> <h1>{$lvData.page.name}</h1>
{include file='bricks/article.tpl'} {include file='bricks/article.tpl'}