- Tooltip class from global.js to basic.js (added nessecary prefix)
- miscTools:
* implemented random DB-Page
* others are placeholder (at least no errors are generated)
- Articles / Infobox:
* dropped aowow_article_items, parse nessecary globals directly from article or infobox
* articles default back to english if no target articles is absent
* quickinfo from db is only used if no auto-generated info is available
- CharClass:
* implemented detail-page
* added basic articles per class (english only)
- generic lv-page
* now accepts multiple listviews (as required by miscTools)
* can display text and title
- Markup.js:
* exchanged to current version (yet to be looked over, but basic articles are displayed properly for now)
* removed some hacks that were nessecary for the old Markup / Menu
- Listview
* made some more code readeable, no major changes
* calendar-template is now functional (WorldEvents use it)
...squashing bugs left and right
|
|
@ -47,8 +47,10 @@ $AoWoWconf['characters'][0] = array(
|
|||
// $AoWoWconf['characters'][1] = array();
|
||||
|
||||
// -- Site Configuration --
|
||||
$AoWoWconf['page']['name'] = 'Aowow Database Viewer (ADV)'; // Title of the website
|
||||
$AoWoWconf['page']['cacheTimer'] = 60*60*24*7; // Time to keep cache in seconds (Default: 1 week)
|
||||
$AoWoWconf['page']['name'] = 'Aowow Database Viewer (ADV)'; // Title of the website
|
||||
$AoWoWconf['page']['shortName'] = 'Aowow'; // used in Feeds
|
||||
$AoWoWconf['ttl'] = 60; // time to live for RSS
|
||||
$AoWowConf['cookieTimeout'] = 5*60*1000; // cookie times out in time() + X
|
||||
$AoWoWconf['register'] = true; // Allow account creating
|
||||
// $AoWoWconf['loginFailCount'] = 5; // how often invalid passwords are tollerated
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ class AchievementList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_achievement WHERE [filter] [cond] GROUP BY Id ORDER BY `orderInGroup` ASC';
|
||||
|
||||
public function __construct($conditions, $applyFilter = false)
|
||||
public function __construct($conditions = [], $applyFilter = false)
|
||||
{
|
||||
parent::__construct($conditions, $applyFilter);
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,15 @@ class CharClassList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_classes WHERE [cond] ORDER BY Id ASC';
|
||||
|
||||
public function __construct($conditions = [])
|
||||
{
|
||||
parent::__construct($conditions);
|
||||
|
||||
foreach ($this->iterate() as $k => &$_curTpl)
|
||||
if ($k == 6) // todo (low): grr, move to db
|
||||
$_curTpl['hero'] = 1;
|
||||
}
|
||||
|
||||
public function getListviewData()
|
||||
{
|
||||
$data = [];
|
||||
|
|
@ -25,9 +34,6 @@ class CharClassList extends BaseType
|
|||
'power' => $this->curTpl['powerType'],
|
||||
);
|
||||
|
||||
if ($this->curTpl['expansion'] == 2) // todo (low): grr, move to db
|
||||
$data[$this->id]['hero'] = 1;
|
||||
|
||||
if ($this->curTpl['expansion'])
|
||||
$data[$this->id]['expansion'] = $this->curTpl['expansion'];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class ItemList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, i.entry AS ARRAY_KEY FROM item_template i LEFT JOIN ?_item_template_addon iX ON i.entry = iX.id LEFT JOIN locales_item l ON i.entry = l.entry WHERE [filter] [cond] ORDER BY i.Quality DESC';
|
||||
|
||||
public function __construct($conditions, $miscData = null)
|
||||
public function __construct($conditions = [], $miscData = null)
|
||||
{
|
||||
// search by statweight
|
||||
if ($miscData && isset($miscData['wt']) && isset($miscData['wtv']) && count($miscData['wt']) == count($miscData['wtv']))
|
||||
|
|
@ -281,7 +281,7 @@ class ItemList extends BaseType
|
|||
|
||||
// conjured
|
||||
if ($this->curTpl['Flags'] & ITEM_FLAG_CONJURED)
|
||||
$x .= '<br />'.Lang::$game['conjured'];
|
||||
$x .= '<br />'.Lang::$item['conjured'];
|
||||
|
||||
// bonding
|
||||
if (($this->curTpl['Flags'] & ITEM_FLAG_ACCOUNTBOUND) && $this->curTpl['Quality'] == ITEM_QUALITY_HEIRLOOM)
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@ class ItemsetList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_itemset WHERE [filter] [cond] ORDER BY maxlevel DESC';
|
||||
|
||||
public function __construct($data, $applyFilter = false)
|
||||
public function __construct($conditions = [], $applyFilter = false)
|
||||
{
|
||||
parent::__construct($data, $applyFilter);
|
||||
parent::__construct($conditions, $applyFilter);
|
||||
|
||||
// post processing
|
||||
foreach ($this->iterate() as &$_curTpl)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class QuestList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM quest_template qt LEFT JOIN locales_quest lq ON qt.Id = lq.entry WHERE [filter] [cond] ORDER BY Id ASC';
|
||||
|
||||
public function __construct($conditions)
|
||||
public function __construct($conditions = [])
|
||||
{
|
||||
parent::__construct($conditions);
|
||||
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ class SkillList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_skillLine sl WHERE [cond] ORDER BY id ASC';
|
||||
|
||||
public function __construct($data)
|
||||
public function __construct($conditions = [])
|
||||
{
|
||||
parent::__construct($data);
|
||||
parent::__construct($conditions);
|
||||
|
||||
// post processing
|
||||
foreach ($this->iterate() as &$_curTpl)
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class SpellList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_spell s WHERE [filter] [cond]';
|
||||
|
||||
public function __construct($conditions, $applyFilter = false)
|
||||
public function __construct($conditions = [], $applyFilter = false)
|
||||
{
|
||||
parent::__construct($conditions, $applyFilter);
|
||||
|
||||
|
|
@ -1023,6 +1023,9 @@ class SpellList extends BaseType
|
|||
$eq(a, b) - a == b
|
||||
$floor(a) - floor()
|
||||
$gt(a, b) - a > b
|
||||
$gte(a, b) - a >= b
|
||||
$min(a, b) - min()
|
||||
$max(a, b) - max()
|
||||
*/
|
||||
|
||||
$this->interactive = $interactive;
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ class TitleList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_titles WHERE [cond] ORDER BY Id ASC';
|
||||
|
||||
public function __construct($data)
|
||||
public function __construct($conditions = [])
|
||||
{
|
||||
parent::__construct($data);
|
||||
parent::__construct($conditions);
|
||||
|
||||
// post processing
|
||||
foreach ($this->iterate() as $__)
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ class WorldEventList extends BaseType
|
|||
|
||||
protected $setupQuery = 'SELECT *, -e.id AS ARRAY_KEY, -e.id as id FROM ?_events e LEFT JOIN ?_holidays h ON e.holidayId = h.id WHERE [cond] ORDER BY -e.id ASC';
|
||||
|
||||
public function __construct($data)
|
||||
public function __construct($conditions = [])
|
||||
{
|
||||
parent::__construct($data);
|
||||
parent::__construct($conditions);
|
||||
|
||||
// unseting elements while we iterate over the array will cause the pointer to reset
|
||||
$replace = [];
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ abstract class BaseType
|
|||
$limit = ' LIMIT '.$AoWoWconf['sqlLimit'];
|
||||
$className = get_class($this);
|
||||
|
||||
if (!$this->setupQuery)
|
||||
if (!$this->setupQuery || $conditions === null)
|
||||
return;
|
||||
|
||||
// may be called without filtering
|
||||
|
|
@ -213,6 +213,15 @@ abstract class BaseType
|
|||
return is_numeric($value) ? floatVal($value) : $value;
|
||||
}
|
||||
|
||||
public function getRandomId()
|
||||
{
|
||||
$pattern = '/SELECT .* (-?[\w_]*\.?(id|entry)) AS ARRAY_KEY,?.* FROM (.*) WHERE .*/i';
|
||||
$replace = 'SELECT $1 FROM $3 ORDER BY RAND() ASC LIMIT 1';
|
||||
$query = preg_replace($pattern, $replace, $this->setupQuery);
|
||||
|
||||
return DB::Aowow()->selectCell($query);
|
||||
}
|
||||
|
||||
public function getFoundIDs()
|
||||
{
|
||||
return array_keys($this->templates);
|
||||
|
|
@ -441,10 +450,10 @@ class Lang
|
|||
$tmp = [];
|
||||
|
||||
if ($flags & CUSTOM_DISABLED)
|
||||
$tmp[] = '<span class="tip" onmouseover="Tooltip.showAtCursor(event, \''.self::$main['disabledHint'].'\', 0, 0, \'q\')" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">'.self::$main['disabled'].'</span>';
|
||||
$tmp[] = '<span class="tip" onmouseover="$WH.Tooltip.showAtCursor(event, \''.self::$main['disabledHint'].'\', 0, 0, \'q\')" onmousemove="$WH.Tooltip.cursorUpdate(event)" onmouseout="$WH.Tooltip.hide()">'.self::$main['disabled'].'</span>';
|
||||
|
||||
if ($flags & CUSTOM_SERVERSIDE)
|
||||
$tmp[] = '<span class="tip" onmouseover="Tooltip.showAtCursor(event, \''.self::$main['serversideHint'].'\', 0, 0, \'q\')" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">'.self::$main['serverside'].'</span>';
|
||||
$tmp[] = '<span class="tip" onmouseover="$WH.Tooltip.showAtCursor(event, \''.self::$main['serversideHint'].'\', 0, 0, \'q\')" onmousemove="$WH.Tooltip.cursorUpdate(event)" onmouseout="$WH.Tooltip.hide()">'.self::$main['serverside'].'</span>';
|
||||
|
||||
return $tmp;
|
||||
}
|
||||
|
|
@ -679,28 +688,40 @@ class SmartyAoWoW extends Smarty
|
|||
public function display($tpl)
|
||||
{
|
||||
$tv = &$this->_tpl_vars;
|
||||
$_ = [];
|
||||
|
||||
// fetch article & static infobox
|
||||
if ($tv['page']['type'] && $tv['page']['typeId'])
|
||||
{
|
||||
if ($article = DB::Aowow()->selectRow('SELECT id, article, quickInfo FROM ?_articles WHERE type = ?d AND typeId = ?d AND locale = ?d', $tv['page']['type'], $tv['page']['typeId'], User::$localeId))
|
||||
$article = DB::Aowow()->selectRow(
|
||||
'SELECT SQL_CALC_FOUND_ROWS article, quickInfo, locale FROM ?_articles WHERE type = ?d AND typeId = ?d AND locale = ?d UNION ALL '.
|
||||
'SELECT article, quickInfo, locale FROM ?_articles WHERE type = ?d AND typeId = ?d AND locale = 0 AND FOUND_ROWS() = 0',
|
||||
$tv['page']['type'], $tv['page']['typeId'], User::$localeId,
|
||||
$tv['page']['type'], $tv['page']['typeId']
|
||||
);
|
||||
|
||||
if ($article)
|
||||
{
|
||||
$globals = DB::Aowow()->select('SELECT type, typeId FROM ?_article_items WHERE id = ?d', $article['id']);
|
||||
$tv['article'] = ['text' => $article['article']];
|
||||
if (empty($tv['infobox']) && !empty($article['quickInfo']))
|
||||
$tv['infobox'] = $article['quickInfo'];
|
||||
|
||||
$tv['article'] = $article['article'];
|
||||
@$tv['infoBox'] .= $article['quickInfo'];
|
||||
if ($article['locale'] != User::$localeId)
|
||||
$tv['article']['params'] = ['prepend' => Util::jsEscape('<div class="notice-box" style="margin-right:245px;"><span class="bubble-icon">'.Lang::$main['englishOnly'].'</span></div>')];
|
||||
|
||||
foreach ($globals as $glob)
|
||||
{
|
||||
if (!isset($this->jsGlobals[$glob['type']]))
|
||||
$this->jsGlobals[$glob['type']] = [];
|
||||
foreach ($article as $text)
|
||||
if (preg_match_all('/\[(npc|object|item|itemset|quest|spell|zone|faction|pet|achievement|title|holiday|class|race|skill|currency)=(\d+)[^\]]*\]/i', $text, $matches, PREG_SET_ORDER))
|
||||
foreach ($matches as $match)
|
||||
if ($type = array_search($match[1], Util::$typeStrings))
|
||||
{
|
||||
if (!isset($this->jsGlobals[$type]))
|
||||
$this->jsGlobals[$type] = [];
|
||||
|
||||
$this->jsGlobals[$glob['type']][] = $glob['typeId'];
|
||||
}
|
||||
$this->jsGlobals[$type][] = $match[2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// since it's the same for every page, except index..
|
||||
// fetch announcements
|
||||
if ($tv['query'][0] && !preg_match('/[^a-z]/i', $tv['query'][0]))
|
||||
{
|
||||
$ann = DB::Aowow()->Select('SELECT * FROM ?_announcements WHERE status = 1 AND (page = ?s OR page = "*")', $tv['query'][0]);
|
||||
|
|
|
|||
|
|
@ -98,13 +98,14 @@ switch ($pageCall)
|
|||
case '': // no parameter given -> MainPage
|
||||
require 'pages/main.php';
|
||||
break;
|
||||
case 'latest-additions':
|
||||
case 'latest-articles':
|
||||
case 'latest-comments':
|
||||
case 'latest-screenshots':
|
||||
case 'latest-videos':
|
||||
case 'missing-comments':
|
||||
case 'missing-screenshots':
|
||||
case 'missing-videos':
|
||||
case 'unrated-comments':
|
||||
case 'missing-screenshots':
|
||||
case 'most-comments':
|
||||
case 'random':
|
||||
require 'pages/miscTools.php';
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -81,7 +81,18 @@ $lang = array(
|
|||
// red buttons
|
||||
'links' => "Links",
|
||||
'compare' => "Vergleichen",
|
||||
'view3D' => "3D-Ansicht"
|
||||
'view3D' => "3D-Ansicht",
|
||||
|
||||
// miscTooles
|
||||
'subscribe' => "Abonnieren",
|
||||
'mostComments' => ["Gestern", "Vergangene %d Tage"],
|
||||
'utilities' => array(
|
||||
"Neueste Ergänzungen", "Neueste Artikel", "Neueste Kommentare", "Neueste Screenshots", null,
|
||||
"Nicht bewertete Kommentare", 11 => "Neueste Videos", 12 => "Meiste Kommentare", 13 => "Fehlende Screenshots"
|
||||
),
|
||||
|
||||
// article & infobox
|
||||
'englishOnly' => "Diese Seite ist nur in <b>Englisch</b> verfügbar."
|
||||
),
|
||||
'search' => array(
|
||||
'search' => "Suche",
|
||||
|
|
@ -134,6 +145,15 @@ $lang = array(
|
|||
'valueDelim' => " - ", // " bis "
|
||||
'zone' => "Zone",
|
||||
'zones' => "Gebiete",
|
||||
|
||||
'heroClass' => "Heldenklasse",
|
||||
'resource' => "Ressource",
|
||||
'resources' => "Ressourcen",
|
||||
'role' => "Rolle",
|
||||
'roles' => "Rollen",
|
||||
'specs' => "Spezialisierungen",
|
||||
'_roles' => ['Heiler', 'Nahkampf-DPS', 'Distanz-DPS', 'Tank'],
|
||||
|
||||
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("Stärke", "Beweglichkeit", "Ausdauer", "Intelligenz", "Willenskraft"),
|
||||
'languages' => array(
|
||||
|
|
@ -149,7 +169,7 @@ $lang = array(
|
|||
'ra' => array(-2 => "Horde", -1 => "Allianz", "Beide", "Mensch", "Orc", "Zwerg", "Nachtelf", "Untoter", "Taure", "Gnom", "Troll", null, "Blutelf", "Draenei"),
|
||||
'rep' => array("Hasserfüllt", "Feindselig", "Unfreundlich", "Neutral", "Freundlich", "Wohlwollend", "Respektvoll", "Ehrfürchtig"),
|
||||
'st' => array(
|
||||
null, "Katzengestalt", "Baum des Lebens", "Reisegestalt", "Wassergestalt",
|
||||
"Vorgabe", "Katzengestalt", "Baum des Lebens", "Reisegestalt", "Wassergestalt",
|
||||
"Bärengestalt", null, null, "Terrorbärengestalt", null,
|
||||
null, null, null, "Schattentanz", null,
|
||||
null, "Geisterwolf", "Kampfhaltung", "Verteidigungshaltung", "Berserkerhaltung",
|
||||
|
|
@ -313,14 +333,14 @@ $lang = array(
|
|||
'_tag' => "Tag",
|
||||
|
||||
'notes' => array(
|
||||
null, "Dungeon-Set 1", "Dungeon-Set 2", "Tier 1 Raid-Set",
|
||||
null, "Dungeon-Set 1", "Dungeon-Set 2", "Tier 1 Raid-Set",
|
||||
"Tier 2 Raid-Set", "Tier 3 Raid-Set", "Level 60 PvP-Set (Rar)", "Level 60 PvP-Set (Rar, alt)",
|
||||
"Level 60 PvP-Set (Episch)", "Set der Ruinen von Ahn'Qiraj", "Set des Tempels von Ahn'Qiraj", "Set von Zul'Gurub",
|
||||
"Tier 4 Raid-Set", "Tier 5 Raid-Set", "Dungeon-Set 3", "Set des Arathibeckens",
|
||||
"Level 70 PvP-Set (Rar)", "Arena-Set Saison 1", "Tier 6 Raid-Set", "Arena-Set Saison 2",
|
||||
"Arena-Set Saison 3", "Level 70 PvP-Set 2 (Rar)", "Arena-Set Saison 4", "Tier 7 Raid-Set",
|
||||
"Arena-Set Saison 5", "Tier 8 Raid-Set", "Arena-Set Saison 6", "Tier 9 Raid-Set",
|
||||
"Arena-Set Saison 7", "Tier 10 Raid-Set", "Arena-Set Saison 8"
|
||||
"Arena-Set Saison 7", "Tier 10 Raid-Set", "Arena-Set Saison 8"
|
||||
),
|
||||
'types' => array(
|
||||
null, "Stoff", "Leder", "Schwere Rüstung", "Platte", "Dolch", "Ring",
|
||||
|
|
|
|||
|
|
@ -76,7 +76,18 @@ $lang = array(
|
|||
// red buttons
|
||||
'links' => "Links",
|
||||
'compare' => "Compare",
|
||||
'view3D' => "View in 3D"
|
||||
'view3D' => "View in 3D",
|
||||
|
||||
// misc Tools
|
||||
'subscribe' => "Subscribe",
|
||||
'mostComments' => ["Yesterday", "Past %d Days"],
|
||||
'utilities' => array(
|
||||
"Latest Additions", "Latest Articles", "Latest Comments", "Latest Screenshots", null,
|
||||
"Unrated Comments", 11 => "Latest Videos", 12 => "Most Comments", 13 => "Missing Screenshots"
|
||||
),
|
||||
|
||||
// article & infobox
|
||||
'englishOnly' => "This page is only available in <b>English</b>."
|
||||
),
|
||||
'search' => array(
|
||||
'search' => "Search",
|
||||
|
|
@ -129,6 +140,15 @@ $lang = array(
|
|||
'valueDelim' => " to ",
|
||||
'zone' => "zone",
|
||||
'zones' => "Zones",
|
||||
|
||||
'heroClass' => "Hero class",
|
||||
'resource' => "Resource",
|
||||
'resources' => "Resources",
|
||||
'role' => "Role",
|
||||
'roles' => "Roles",
|
||||
'specs' => "Specs",
|
||||
'_roles' => ['Healer', 'Melee DPS', 'Ranged DPS', 'Tank'],
|
||||
|
||||
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("Strength", "Agility", "Stamina", "Intellect", "Spirit"),
|
||||
'languages' => array(
|
||||
|
|
@ -144,7 +164,7 @@ $lang = array(
|
|||
'ra' => array(-2 => "Horde", -1 => "Alliance", "Both", "Human", "Orc", "Dwarf", "Night Elf", "Undead", "Tauren", "Gnome", "Troll", null, "Blood Elf", "Draenei"),
|
||||
'rep' => array("Hated", "Hostile", "Unfriendly", "Neutral", "Friendly", "Honored", "Revered", "Exalted"),
|
||||
'st' => array(
|
||||
null, "Cat Form", "Tree of Life", "Travel Form", "Aquatic Form",
|
||||
"Default", "Cat Form", "Tree of Life", "Travel Form", "Aquatic Form",
|
||||
"Bear From", null, null, "Dire Bear Form", null,
|
||||
null, null, null, "Shadowdance", null,
|
||||
null, "Ghostwolf", "Battle Stance", "Defensive Stance", "Berserker Stance",
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ $lang = array(
|
|||
'rewards' => "Recompensas",
|
||||
'gains' => "Ganancias",
|
||||
'login' => "[Login]",
|
||||
'forum' => "[Forum]",
|
||||
'forum' => "Foro",
|
||||
'days' => "dias",
|
||||
'hours' => "horas",
|
||||
'minutes' => "minutos",
|
||||
|
|
@ -73,7 +73,18 @@ $lang = array(
|
|||
// red buttons
|
||||
'links' => "Enlaces",
|
||||
'compare' => "Comparar",
|
||||
'view3D' => "Ver en 3D"
|
||||
'view3D' => "Ver en 3D",
|
||||
|
||||
// misc Tools
|
||||
'subscribe' => "Suscribirme",
|
||||
'mostComments' => ["Ayer", "Pasados %d días"],
|
||||
'utilities' => array(
|
||||
"Últimas adiciones", "Últimos artículos", "Últimos comentarios", "Últimas capturas de pantalla", null,
|
||||
"Comentarios sin valorar", 11 => "Últimos vídeos", 12 => "Mayoría de comentarios", 13 => "Capturas de pantalla faltantes"
|
||||
),
|
||||
|
||||
// article & infobox
|
||||
'englishOnly' => "Esta página sólo está disponible en <b>inglés</b>."
|
||||
),
|
||||
'search' => array(
|
||||
'search' => "Búsqueda",
|
||||
|
|
@ -126,6 +137,15 @@ $lang = array(
|
|||
'valueDelim' => " - ",
|
||||
'zone' => "zona",
|
||||
'zones' => "Zonas",
|
||||
|
||||
'heroClass' => "Clase héroe",
|
||||
'resource' => "Recurso",
|
||||
'resources' => "Recursos",
|
||||
'role' => "Rol",
|
||||
'roles' => "Roles",
|
||||
'specs' => "Especializaciones",
|
||||
'_roles' => ['Sanador', 'DPS cuerpo', 'DPS a distancia', 'Tanque'],
|
||||
|
||||
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("Fuerza", "Agilidad", "Aguante", "Intelecto", "Espíritu"),
|
||||
'languages' => array(
|
||||
|
|
@ -141,7 +161,7 @@ $lang = array(
|
|||
'ra' => array(-2 => "Horda", -1 => "Alianza", "Ambos", "Humano", "Orco", "Enano", "Elfo de la noche", "No-muerto", "Tauren", "Gnomo", "Trol ", null, "Blood Elf", "Elfo de sangre"),
|
||||
'rep' => array("Odiado", "Hostil", "Adverso", "Neutral", "Amistoso", "Honorable", "Reverenciado", "Exaltado"),
|
||||
'st' => array(
|
||||
null, "Forma felina", "Árbol de vida", "Forma de viaje", "Forma acuática",
|
||||
"Defecto", "Forma felina", "Árbol de vida", "Forma de viaje", "Forma acuática",
|
||||
"Forma de oso", null, null, "Forma de oso temible", null,
|
||||
null, null, null, "Danza de las Sombras", null,
|
||||
null, "Lobo fantasmal", "Actitud de batalla", "Actitud defensiva", "Actitud rabiosa",
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ $lang = array(
|
|||
'rewards' => "Récompenses",
|
||||
'gains' => "Gains",
|
||||
'login' => "[Login]",
|
||||
'forum' => "[Forum]",
|
||||
'forum' => "Forum",
|
||||
'days' => "jours",
|
||||
'hours' => "heures",
|
||||
'minutes' => "minutes",
|
||||
|
|
@ -73,7 +73,18 @@ $lang = array(
|
|||
// red buttons
|
||||
'links' => "Liens",
|
||||
'compare' => "Comparer",
|
||||
'view3D' => "Voir en 3D"
|
||||
'view3D' => "Voir en 3D",
|
||||
|
||||
// misc Tools
|
||||
'subscribe' => "S'abonner",
|
||||
'mostComments' => ["Hier", "Derniers %d jours"],
|
||||
'utilities' => array(
|
||||
"Derniers ajouts", "Derniers articles", "Derniers commentaires", "Dernières captures d'écran", null,
|
||||
"Commentaire sans note", 11 => "Derniers vidéos", 12 => "Le plus de commentaires", 13 => "Captures d'écrans manquantes"
|
||||
),
|
||||
|
||||
// article & infobox
|
||||
'englishOnly' => "Cette page n'est disponible qu'en <b>anglais</b> pour le moment."
|
||||
),
|
||||
'search' => array(
|
||||
'search' => "Recherche",
|
||||
|
|
@ -126,6 +137,15 @@ $lang = array(
|
|||
'valueDelim' => " - ",
|
||||
'zone' => "zone",
|
||||
'zones' => "Zones",
|
||||
|
||||
'heroClass' => "Classe de héros",
|
||||
'resource' => "Ressource",
|
||||
'resources' => "Ressources",
|
||||
'role' => "Role",
|
||||
'roles' => "Roles",
|
||||
'specs' => "Specialisations",
|
||||
'_roles' => ['Soigneur', 'DPS mêlée', 'DPS à distance', 'Tank'],
|
||||
|
||||
'expansions' => array("Classique", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("Force", "Agilité", "Endurance", "Intelligence", "Esprit"),
|
||||
'languages' => array(
|
||||
|
|
@ -141,7 +161,7 @@ $lang = array(
|
|||
'ra' => array(-2 => "Horde", -1 => "Alliance", "Les deux", "Humain", "Orc", "Nain", "Elfe de la nuit", "Mort-vivant", "Tauren", "Gnome", "Troll", null, "Elfe de sang", "Draeneï"),
|
||||
'rep' => array("Détesté", "Hostile", "Inamical", "Neutre", "Amical", "Honoré", "Révéré", "Exalté"),
|
||||
'st' => array(
|
||||
null, "Forme de félin", "Arbre de vie", "Forme de voyage", "Aquatic Form",
|
||||
"Défaut", "Forme de félin", "Arbre de vie", "Forme de voyage", "Aquatic Form",
|
||||
"Forme d'ours", null, null, "Forme d'ours redoutable", null,
|
||||
null, null, null, "Danse de l'ombre", null,
|
||||
null, "Ghostwolf", "Posture de combat", "Posture défensive", "Posture berserker",
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ $lang = array(
|
|||
'rewards' => "Награды",
|
||||
'gains' => "Бонус",
|
||||
'login' => "[Login]",
|
||||
'forum' => "[Forum]",
|
||||
'forum' => "Форум",
|
||||
'days' => "дн",
|
||||
'hours' => "часы",
|
||||
'minutes' => "мин",
|
||||
|
|
@ -73,7 +73,18 @@ $lang = array(
|
|||
// red buttons
|
||||
'links' => "Ссылки",
|
||||
'compare' => "Сравнить",
|
||||
'view3D' => "Посмотреть в 3D"
|
||||
'view3D' => "Посмотреть в 3D",
|
||||
|
||||
// misc Tools
|
||||
'subscribe' => "Подписаться",
|
||||
'mostComments' => ["Вчера", "Последние %d дней"],
|
||||
'utilities' => array(
|
||||
"Последние добавления", "Последние статьи", "Последние комментарии", "Последние изображения", null,
|
||||
"Комментарии без оценки", 11 => "Последние видео", 12 => "Популярные комментируемые", 13 => "Без изображений"
|
||||
),
|
||||
|
||||
// article & infobox
|
||||
'englishOnly' => "Эта страница доступна только на <b>английском</b> языке."
|
||||
),
|
||||
'search' => array(
|
||||
'search' => "Поиск",
|
||||
|
|
@ -126,6 +137,15 @@ $lang = array(
|
|||
'valueDelim' => " - ",
|
||||
'zone' => "игровая зона",
|
||||
'zones' => "Местности",
|
||||
|
||||
'heroClass' => "Героический класс",
|
||||
'resource' => "Ресурс",
|
||||
'resources' => "Ресурсы",
|
||||
'role' => "Роль",
|
||||
'roles' => "Роли",
|
||||
'specs' => "Ветки талантов",
|
||||
'_roles' => ['Лекарь', 'Боец ближнего боя', 'Боец дальнего боя', 'Танк'],
|
||||
|
||||
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
|
||||
'stats' => array("к силе", "к ловкости", "к выносливости", "к интеллекту", "к духу"),
|
||||
'languages' => array(
|
||||
|
|
@ -141,7 +161,7 @@ $lang = array(
|
|||
'ra' => array(-2 => "Орда", -1 => "Альянс", "Обе", "Человек", "Орк", "Дворф", "Ночной эльф", "Нежить", "Таурен", "Гном", "Тролль", null, "Эльф крови", "Дреней"),
|
||||
'rep' => array("Ненависть", "Враждебность", "Неприязнь", "Равнодушие", "Дружелюбие", "Уважение", "Почтение", "Превознесение"),
|
||||
'st' => array(
|
||||
null, "Облик кошки", "TОблик Древа жизни", "Походный облик", "Водный облик",
|
||||
"По-умолчанию", "Облик кошки", "TОблик Древа жизни", "Походный облик", "Водный облик",
|
||||
"Облик медведя", null, null, "Облик лютого медведя", null,
|
||||
null, null, null, "Танец теней", null,
|
||||
null, "Призрачный волк", "Боевая стойка", "Оборонительная стойка", "Стойка берсерка",
|
||||
|
|
@ -200,7 +220,7 @@ $lang = array(
|
|||
'compare' => "Инструмент сравнения предметов",
|
||||
),
|
||||
'talent' => array(
|
||||
'talentCalc' => "Калькулятор Талантов",
|
||||
'talentCalc' => "Расчёт талантов",
|
||||
'petCalc' => "Расчёт умений питомцев",
|
||||
'chooseClass' => "Выберите класс",
|
||||
'chooseFamily' => "Выберите семейство питомцев",
|
||||
|
|
|
|||
341
pages/class.php
Normal file
|
|
@ -0,0 +1,341 @@
|
|||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
require 'includes/class.community.php';
|
||||
|
||||
$_id = intVal($pageParam);
|
||||
$_mask = 1 << ($_id - 1);
|
||||
$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],
|
||||
2 => [594, 267, 184],
|
||||
3 => [ 50, 163, 51],
|
||||
4 => [253, 38, 39],
|
||||
5 => [613, 56, 78],
|
||||
6 => [770, 771, 772, 776],
|
||||
7 => [375, 373, 374],
|
||||
8 => [237, 8, 6],
|
||||
9 => [355, 354, 593],
|
||||
11 => [574, 134, 573]
|
||||
);
|
||||
|
||||
$cacheKeyPage = implode('_', [CACHETYPE_PAGE, TYPE_CLASS, $_id, -1, User::$localeId]);
|
||||
|
||||
if (!$smarty->loadCache($cacheKeyPage, $pageData))
|
||||
{
|
||||
$cl = new CharClassList(array(['id', $_id]));
|
||||
if ($cl->error)
|
||||
$smarty->notFound(Lang::$game['class']);
|
||||
|
||||
$infobox = [];
|
||||
// hero class
|
||||
if ($cl->getField('hero'))
|
||||
$infobox[] = '[tooltip=tooltip_heroclass]'.Lang::$game['heroClass'].'[/tooltip]';
|
||||
|
||||
// resource
|
||||
if ($_id == 11) // special Druid case
|
||||
$infobox[] = Lang::$game['resources'].Lang::$colon.
|
||||
'[tooltip name=powertype1]'.Lang::$game['st'][0].', '.Lang::$game['st'][31].', '.Lang::$game['st'][2].'[/tooltip][span class=tip tooltip=powertype1]'.Util::ucFirst(Lang::$spell['powerTypes'][0]).'[/span], '.
|
||||
'[tooltip name=powertype2]'.Lang::$game['st'][5].', '.Lang::$game['st'][8].'[/tooltip][span class=tip tooltip=powertype2]'.Util::ucFirst(Lang::$spell['powerTypes'][1]).'[/span], '.
|
||||
'[tooltip name=powertype8]'.Lang::$game['st'][1].'[/tooltip][span class=tip tooltip=powertype8]'.Util::ucFirst(Lang::$spell['powerTypes'][3]).'[/span]';
|
||||
else if ($_id == 6) // special DK case
|
||||
$infobox[] = Lang::$game['resources'].Lang::$colon.'[span]'.Util::ucFirst(Lang::$spell['powerTypes'][5]).', '.Util::ucFirst(Lang::$spell['powerTypes'][$cl->getField('powerType')]).'[/span]';
|
||||
else // regular case
|
||||
$infobox[] = Lang::$game['resource'].Lang::$colon.'[span]'.Util::ucFirst(Lang::$spell['powerTypes'][$cl->getField('powerType')]).'[/span]';
|
||||
|
||||
// roles
|
||||
$roles = [];
|
||||
for ($i = 0; $i < 4; $i++)
|
||||
if ($cl->getField('roles') & (1 << $i))
|
||||
$roles[] = (count($roles) == 2 ? '\n' : '').Lang::$game['_roles'][$i];
|
||||
|
||||
$infobox[] = (count($roles) > 1 ? Lang::$game['roles'] : Lang::$game['role']).Lang::$colon.implode(', ', $roles);
|
||||
|
||||
// specs
|
||||
$specList = [];
|
||||
$skills = new SkillList(array(['id', $classSkills[$_id]]));
|
||||
$skills->addGlobalsToJscript($smarty);
|
||||
foreach ($skills->iterate() as $k => $__)
|
||||
$specList[$k] = '[icon name='.$skills->getField('iconString').'][url=?spells=7.'.$_id.'.'.$k.']'.$skills->getField('name', true).'[/url][/icon]';
|
||||
|
||||
$infobox[] = Lang::$game['specs'].Lang::$colon.'[ul][li]'.implode('[/li][li]', $specList).'[/li][/ul]';
|
||||
|
||||
$pageData = array (
|
||||
'title' => $cl->getField('name', true).' - '.Util::ucFirst(Lang::$game['class']),
|
||||
'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'))
|
||||
)
|
||||
);
|
||||
|
||||
/*
|
||||
note!
|
||||
newer listviews support subTabs - i.e.:
|
||||
Spells => Abilities, Talents, Glyphs, Proficiencies
|
||||
Items => grouping by subclass
|
||||
*/
|
||||
// Quests
|
||||
$conditions = array(
|
||||
['RequiredClasses', $_mask, '&']
|
||||
);
|
||||
|
||||
$quests = new QuestList($conditions);
|
||||
$quests->addGlobalsToJscript($smarty);
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'quest',
|
||||
'data' => $quests->getListviewData(),
|
||||
'params' => array(
|
||||
'sort' => "$['reqlevel', 'name']",
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Items
|
||||
$conditions = array(
|
||||
['allowableClass', 0, '>'],
|
||||
['allowableClass', $_mask, '&'],
|
||||
[['allowableClass', CLASS_MASK_ALL, '&'], CLASS_MASK_ALL, '!'],
|
||||
['itemset', 0], // hmm, do or dont..?
|
||||
0
|
||||
);
|
||||
|
||||
$items = new ItemList($conditions);
|
||||
$items->addGlobalsToJscript($smarty);
|
||||
|
||||
if (!$items->hasDiffFields(['AllowableRace']))
|
||||
$hidden = "$['side']";
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'item',
|
||||
'data' => $items->getListviewData(),
|
||||
'params' => array(
|
||||
'id' => 'items',
|
||||
'name' => '$LANG.tab_items',
|
||||
'tabs' => '$tabsRelated',
|
||||
'visibleCols' => "$['dps', 'armor', 'slot']",
|
||||
'hiddenCols' => isset($hidden) ? $hidden : null,
|
||||
'computeDataFunc' => '$Listview.funcBox.initSubclassFilter',
|
||||
'onAfterCreate' => '$Listview.funcBox.addSubclassIndicator',
|
||||
'note' => sprintf(Util::$filterResultString, '?items&filter=cr=152;crs=4;crv=0'),
|
||||
'_truncated' => 1
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
|
||||
// Itemsets
|
||||
$sets = new ItemsetList(array(['classMask', $_mask, '&']));
|
||||
$sets->addGlobalsToJscript($smarty, GLOBALINFO_SELF);
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'itemset',
|
||||
'data' => $sets->getListviewData(),
|
||||
'params' => array(
|
||||
'note' => sprintf(Util::$filterResultString, '?itemsets&filter=cl='.$_id),
|
||||
'hiddenCols' => "$['classes']",
|
||||
'sort' => "$['-level', 'name']",
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Trainer
|
||||
$conditions = array(
|
||||
['npcflag', 0x30, '&'], // is trainer
|
||||
['trainer_type', 0], // trains class spells
|
||||
['trainer_class', $_id]
|
||||
);
|
||||
|
||||
$trainer = new CreatureList($conditions);
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'creature',
|
||||
'data' => $trainer->getListviewData(),
|
||||
'params' => array(
|
||||
'id' => 'trainers',
|
||||
'name' => '$LANG.tab_trainers',
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Armor Proficiencies
|
||||
$conditions = array(
|
||||
['s.typeCat', -11],
|
||||
['s.skillLine1', SpellList::$skillLines[8]],
|
||||
['s.reqClassMask', $_mask, '&']
|
||||
);
|
||||
|
||||
$armorProf = new SpellList($conditions);
|
||||
$armorProf->addGlobalsToJscript($smarty, GLOBALINFO_SELF);
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'spell',
|
||||
'data' => $armorProf->getListviewData(),
|
||||
'params' => array(
|
||||
'id' => 'armor-proficiencies',
|
||||
'name' => '$LANG.tab_armorproficiencies',
|
||||
'visibleCols' => "$['type', 'classes']",
|
||||
'hiddenCols' => "$['reagents', 'skill']",
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Weapon Proficiencies
|
||||
$conditions = array(
|
||||
['s.typeCat', -11],
|
||||
['OR', ['s.skillLine1', SpellList::$skillLines[6]], ['s.skillLine1', -3]],
|
||||
['s.reqClassMask', $_mask, '&']
|
||||
);
|
||||
|
||||
$weaponProf = new SpellList($conditions);
|
||||
$weaponProf->addGlobalsToJscript($smarty, GLOBALINFO_SELF);
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'spell',
|
||||
'data' => $weaponProf->getListviewData(),
|
||||
'params' => array(
|
||||
'id' => 'weapon-skills',
|
||||
'name' => '$LANG.tab_weaponskills',
|
||||
'visibleCols' => "$['type', 'classes']",
|
||||
'hiddenCols' => "$['reagents', 'skill']",
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Glyphs
|
||||
$conditions = array(
|
||||
['s.typeCat', -13],
|
||||
['s.reqClassMask', $_mask, '&']
|
||||
);
|
||||
|
||||
$glyphs = new SpellList($conditions);
|
||||
$glyphs->addGlobalsToJscript($smarty, GLOBALINFO_SELF);
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'spell',
|
||||
'data' => $glyphs->getListviewData(),
|
||||
'params' => array(
|
||||
'id' => 'glyphs',
|
||||
'name' => '$LANG.tab_glyphs',
|
||||
'visibleCols' => "$['type']",
|
||||
'hiddenCols' => "$['reagents']",
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Abilities
|
||||
$conditions = array(
|
||||
['s.typeCat', [7, -2]],
|
||||
[['s.cuFlags', (SPELL_CU_TALENTSPELL | SPELL_CU_TALENT | SPELL_CU_TRIGGERED | SPELL_CU_EXCLUDE_CATEGORY_SEARCH), '&'], 0],
|
||||
[ // select class by skillLine
|
||||
'OR',
|
||||
['s.skillLine1', $classSkills[$_id]],
|
||||
['AND', ['s.skillLine1', 0, '>'], ['s.skillLine2OrMask', $classSkills[$_id]]]
|
||||
],
|
||||
[ // last rank or unranked
|
||||
'OR',
|
||||
['s.cuFlags', SPELL_CU_LAST_RANK, '&'],
|
||||
['s.rankId', 0]
|
||||
]
|
||||
);
|
||||
|
||||
$abilities = new SpellList($conditions);
|
||||
$abilities->addGlobalsToJscript($smarty, GLOBALINFO_SELF);
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'spell',
|
||||
'data' => $abilities->getListviewData(),
|
||||
'params' => array(
|
||||
'id' => 'abilities',
|
||||
'name' => '$LANG.tab_abilities',
|
||||
'note' => sprintf(Util::$filterResultString, '?spells=7.'.$_id),
|
||||
'visibleCols' => "$['level', 'schools']",
|
||||
'sort' => "$['skill', 'name']",
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Talents
|
||||
$conditions = array(
|
||||
['s.typeCat', -2],
|
||||
['cuFlags', (SPELL_CU_TALENT | SPELL_CU_TALENTSPELL), '&'],
|
||||
[ // select class by skillLine
|
||||
'OR',
|
||||
['s.skillLine1', $classSkills[$_id]],
|
||||
['AND', ['s.skillLine1', 0, '>'], ['s.skillLine2OrMask', $classSkills[$_id]]]
|
||||
],
|
||||
[ // last rank or unranked
|
||||
'OR',
|
||||
['s.cuFlags', SPELL_CU_LAST_RANK, '&'],
|
||||
['s.rankId', 0]
|
||||
]
|
||||
);
|
||||
|
||||
$talents = new SpellList($conditions);
|
||||
$talents->addGlobalsToJscript($smarty, GLOBALINFO_SELF);
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'spell',
|
||||
'data' => $talents->getListviewData(),
|
||||
'params' => array(
|
||||
'id' => "talents",
|
||||
'name' => '$LANG.tab_talents',
|
||||
'note' => sprintf(Util::$filterResultString, '?spells=-2.'.$_id),
|
||||
'visibleCols' => "$['level', 'schools', 'tier']",
|
||||
'sort' => "$['skill', 'tier']",
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
// Races
|
||||
$races = new CharRaceList(array(['classMask', $_mask, '&']));
|
||||
|
||||
$pageData['relTabs'][] = array(
|
||||
'file' => 'race',
|
||||
'data' => $races->getListviewData(),
|
||||
'params' => array(
|
||||
'tabs' => '$tabsRelated'
|
||||
)
|
||||
);
|
||||
|
||||
$smarty->saveCache($cacheKeyPage, $pageData);
|
||||
}
|
||||
|
||||
|
||||
// menuId 12: Class 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_CLASS,
|
||||
'typeId' => $_id,
|
||||
// 'boardUrl' => '', //$GLOBALS['AoWoWconf']['boardUrl'] + X,
|
||||
'reqJS' => array(
|
||||
'template/js/swfobject.js'
|
||||
)
|
||||
));
|
||||
$smarty->assign('community', CommunityContent::getAll(TYPE_CLASS, $_id)); // comments, screenshots, videos
|
||||
$smarty->assign('lang', array_merge(Lang::$main, Lang::$talent));
|
||||
$smarty->assign('lvData', $pageData);
|
||||
|
||||
// load the page
|
||||
$smarty->display('class.tpl');
|
||||
|
||||
?>
|
||||
|
|
@ -8,9 +8,13 @@ $cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_CLASS, -1, -1, User::$localeId]);
|
|||
|
||||
if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
{
|
||||
$pageData = array(
|
||||
'listviews' => []
|
||||
);
|
||||
|
||||
$classes = new CharClassList();
|
||||
|
||||
$pageData = array(
|
||||
$pageData['listviews'][] = array(
|
||||
'file' => 'class',
|
||||
'data' => $classes->getListviewData(),
|
||||
'params' => []
|
||||
|
|
|
|||
|
|
@ -21,9 +21,13 @@ if (isset($cat))
|
|||
|
||||
if (!$smarty->loadCache($cacheKey, $pageData))
|
||||
{
|
||||
$pageData = array(
|
||||
'listviews' => []
|
||||
);
|
||||
|
||||
$money = new CurrencyList(isset($cat) ? array(['category', (int)$cat]) : []);
|
||||
|
||||
$pageData = array(
|
||||
$pageData['listviews'][] = array(
|
||||
'file' => 'currency',
|
||||
'data' => $money->getListviewData(),
|
||||
'params' => []
|
||||
|
|
|
|||
|
|
@ -48,12 +48,22 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||
$deps[$events->id] = $d;
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'event',
|
||||
'data' => $events->getListviewData(),
|
||||
'deps' => $deps,
|
||||
'calendar' => false, // todo (med): fix it Felix!
|
||||
'params' => array(
|
||||
// 'tabs' => '$myTabs'
|
||||
'listviews' => [],
|
||||
'deps' => $deps
|
||||
);
|
||||
|
||||
$pageData['listviews'][] = array(
|
||||
'file' => 'event',
|
||||
'data' => $events->getListviewData(),
|
||||
'params' => ['tabs' => '$myTabs']
|
||||
);
|
||||
|
||||
$pageData['listviews'][] = array(
|
||||
'file' => 'calendar',
|
||||
'data' => $events->getListviewData(),
|
||||
'params' => array(
|
||||
'tabs' => '$myTabs',
|
||||
'hideCount' => 1
|
||||
)
|
||||
);
|
||||
|
||||
|
|
@ -63,18 +73,21 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||
}
|
||||
|
||||
// recalculate dates with now(); can't be cached, obviously
|
||||
foreach ($pageData['data'] as &$data)
|
||||
foreach ($pageData['listviews'] as &$views)
|
||||
{
|
||||
// is a followUp-event
|
||||
if (!empty($pageData['deps'][$data['id']]))
|
||||
foreach ($views['data'] as &$data)
|
||||
{
|
||||
$data['startDate'] = $data['endDate'] = false;
|
||||
continue;
|
||||
}
|
||||
// is a followUp-event
|
||||
if (!empty($pageData['deps'][$data['id']]))
|
||||
{
|
||||
$data['startDate'] = $data['endDate'] = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
$updated = WorldEventList::updateDates($data['startDate'], $data['endDate'], $data['rec']);
|
||||
$data['startDate'] = $updated['start'] ? date(Util::$dateFormatLong, $updated['start']) : false;
|
||||
$data['endDate'] = $updated['end' ] ? date(Util::$dateFormatLong, $updated['end']) : false;
|
||||
$updated = WorldEventList::updateDates($data['startDate'], $data['endDate'], $data['rec']);
|
||||
$data['startDate'] = $updated['start'] ? date(Util::$dateFormatLong, $updated['start']) : false;
|
||||
$data['endDate'] = $updated['end'] ? date(Util::$dateFormatLong, $updated['end']) : false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ if (!$smarty->loadCache($cacheKeyPage, $item))
|
|||
{if $item.sellcopper}<span class="moneycopper">{$item.sellcopper}</span>{/if}
|
||||
</div></li>
|
||||
{/if}
|
||||
{if isset($item.disenchantskill)}<li><div>{#Disenchantable#} (<span class="tip" onmouseover="Tooltip.showAtCursor(event, LANG.tooltip_reqenchanting, 0, 0, 'q')" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">{$item.disenchantskill}</span>)</div></li>{/if}
|
||||
{if isset($item.disenchantskill)}<li><div>{#Disenchantable#} (<span class="tip" onmouseover="$WH.Tooltip.showAtCursor(event, LANG.tooltip_reqenchanting, 0, 0, 'q')" onmousemove="$WH.Tooltip.cursorUpdate(event)" onmouseout="$WH.Tooltip.hide()">{$item.disenchantskill}</span>)</div></li>{/if}
|
||||
{if isset($item.key)}<li><div>{#Can_be_placed_in_the_keyring#}</div></li>{/if}
|
||||
</ul>
|
||||
</td></tr>
|
||||
|
|
|
|||
165
pages/miscTools.php
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
<?php
|
||||
|
||||
if (!defined('AOWOW_REVISION'))
|
||||
die('illegal access');
|
||||
|
||||
|
||||
// require 'includes/class.community.php';
|
||||
|
||||
$_path = [1, 8];
|
||||
$subMenu = $h1Links = null;
|
||||
$_title = '';
|
||||
$_rss = isset($_GET['rss']);
|
||||
|
||||
switch ($pageCall)
|
||||
{
|
||||
case 'random':
|
||||
$type = array_rand(array_filter(Util::$typeStrings));
|
||||
$page = Util::$typeStrings[$type];
|
||||
$id = 0;
|
||||
|
||||
switch ($type)
|
||||
{
|
||||
case TYPE_NPC: $id = (new CreatureList(null))->getRandomId(); break;
|
||||
case TYPE_OBJECT: $id = (new GameobjectList(null))->getRandomId(); break;
|
||||
case TYPE_ITEM: $id = (new ItemList(null))->getRandomId(); break;
|
||||
case TYPE_ITEMSET: $id = (new ItemsetList(null))->getRandomId(); break;
|
||||
case TYPE_QUEST: $id = (new QuestList(null))->getRandomId(); break;
|
||||
case TYPE_SPELL: $id = (new SpellList(null))->getRandomId(); break;
|
||||
case TYPE_ZONE: $id = (new ZoneList(null))->getRandomId(); break;
|
||||
case TYPE_FACTION: $id = (new FactionList(null))->getRandomId(); break;
|
||||
case TYPE_PET: $id = (new PetList(null))->getRandomId(); break;
|
||||
case TYPE_ACHIEVEMENT: $id = (new AchievementList(null))->getRandomId(); break;
|
||||
case TYPE_TITLE: $id = (new TitleList(null))->getRandomId(); break;
|
||||
case TYPE_WORLDEVENT: $id = (new WorldEventList(null))->getRandomId(); break;
|
||||
case TYPE_CLASS: $id = (new CharClassList(null))->getRandomId(); break;
|
||||
case TYPE_RACE: $id = (new CharRaceList(null))->getRandomId(); break;
|
||||
case TYPE_SKILL: $id = (new SkillList(null))->getRandomId(); break;
|
||||
case TYPE_CURRENCY: $id = (new CurrencyList(null))->getRandomId(); break;
|
||||
}
|
||||
|
||||
header('Location: ?'.$page.'='.$id);
|
||||
die();
|
||||
case 'latest-comments':
|
||||
$menu = 2;
|
||||
$lv = array(
|
||||
array(
|
||||
'file' => 'commentpreview',
|
||||
'data' => [],
|
||||
'params' => []
|
||||
)
|
||||
);
|
||||
break;
|
||||
case 'latest-screenshots':
|
||||
$menu = 3;
|
||||
$lv = array(
|
||||
array(
|
||||
'file' => 'screenshot',
|
||||
'data' => [],
|
||||
'params' => []
|
||||
)
|
||||
);
|
||||
break;
|
||||
case 'latest-videos':
|
||||
$menu = 11;
|
||||
$lv = array(
|
||||
array(
|
||||
'file' => 'video',
|
||||
'data' => [],
|
||||
'params' => []
|
||||
)
|
||||
);
|
||||
break;
|
||||
case 'latest-articles':
|
||||
$menu = 1;
|
||||
$lv = [];
|
||||
break;
|
||||
case 'latest-additions':
|
||||
$menu = 0;
|
||||
$lv = [];
|
||||
break;
|
||||
case 'unrated-comments':
|
||||
$menu = 5;
|
||||
$lv = [];
|
||||
break;
|
||||
case 'missing-screenshots':
|
||||
$menu = 13;
|
||||
$lv = [];
|
||||
break;
|
||||
case 'most-comments':
|
||||
if ($pageParam && !in_array($pageParam, [1, 7, 30]))
|
||||
header('Location: ?most-comments=1'.($_rss ? '&rss' : null));
|
||||
|
||||
if (in_array($pageParam, [7, 30]))
|
||||
{
|
||||
$subMenu = $pageParam;
|
||||
$_title = sprintf(Lang::$main['mostComments'][1], $pageParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
$subMenu = 1;
|
||||
$_title = Lang::$main['mostComments'][0];
|
||||
}
|
||||
|
||||
$menu = 12;
|
||||
$lv = [];
|
||||
break;
|
||||
default:
|
||||
$smarty->notFound();
|
||||
}
|
||||
|
||||
if (strstr($pageCall, 'latest') || $pageCall == 'most-comments')
|
||||
{
|
||||
if ($_rss)
|
||||
{
|
||||
header("Content-Type: application/rss+xml; charset=ISO-8859-1");
|
||||
|
||||
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n".
|
||||
"<rss version=\"2.0\">\n\t<channel>\n".
|
||||
"\t\t<title>".$AoWoWconf['page']['shortName'].' - '.Lang::$main['utilities'][$menu] . ($_title ? Lang::$colon . $_title : null)."</title>\n".
|
||||
"\t\t<link>".STATIC_URL.'?'.$pageCall . ($pageParam ? '='.$pageParam : null)."</link>\n".
|
||||
"\t\t<description>".$AoWoWconf['page']['name']."</description>\n".
|
||||
"\t\t<language>".implode('-', str_split(User::$localeString, 2))."</language>\n".
|
||||
"\t\t<ttl>".$AoWoWconf['ttl']."</ttl>\n".
|
||||
// <lastBuildDate>Sat, 31 Aug 2013 15:33:16 -0500</lastBuildDate>
|
||||
"\t</channel>\n";
|
||||
|
||||
/*
|
||||
generate <item>'s here
|
||||
*/
|
||||
|
||||
$xml .= '</rss>';
|
||||
|
||||
die($xml);
|
||||
}
|
||||
else
|
||||
$h1Links = '<small><a href="?'.$pageCall.($pageParam ? '='.$pageParam : null).'&rss" class="rss-icon">'.Lang::$main['subscribe'].'</a></small>';
|
||||
}
|
||||
|
||||
$pageData = array(
|
||||
'listviews' => $lv,
|
||||
'page' => array(
|
||||
'name' => Lang::$main['utilities'][$menu] . ($_title ? Lang::$colon . $_title : null),
|
||||
'h1Links' => $h1Links,
|
||||
)
|
||||
);
|
||||
|
||||
array_push($_path, $menu);
|
||||
if ($subMenu)
|
||||
array_push($_path, $subMenu);
|
||||
|
||||
|
||||
// menuId 8: Utilities g_initPath()
|
||||
// tabId 1: Tools g_initHeader()
|
||||
$smarty->updatePageVars(array(
|
||||
'title' => Lang::$main['utilities'][$menu] . ($_title ? ' - ' . $_title : null),
|
||||
'path' => json_encode($_path, JSON_NUMERIC_CHECK),
|
||||
'tab' => 1
|
||||
));
|
||||
$smarty->assign('lang', Lang::$main);
|
||||
$smarty->assign('lvData', $pageData);
|
||||
|
||||
// load the page
|
||||
$smarty->display('generic-no-filter.tpl');
|
||||
|
||||
?>
|
||||
|
|
@ -23,6 +23,10 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||
$pets = new PetList(isset($cat) ? array(['type', (int)$cat]) : []);
|
||||
|
||||
$pageData = array(
|
||||
'listviews' => []
|
||||
);
|
||||
|
||||
$lvPet = array(
|
||||
'file' => 'pet',
|
||||
'data' => $pets->getListviewData(),
|
||||
'params' => array(
|
||||
|
|
@ -31,7 +35,9 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||
);
|
||||
|
||||
if (($mask = $pets->hasDiffFields(['type'])) == 0x0)
|
||||
$pageData['params']['hiddenCols'] = "$['type']";
|
||||
$lvPet['params']['hiddenCols'] = "$['type']";
|
||||
|
||||
$pageData['listviews'][] = $lvPet;
|
||||
|
||||
$pets->addGlobalsToJscript($smarty, GLOBALINFO_RELATED);
|
||||
|
||||
|
|
|
|||
|
|
@ -11,9 +11,13 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||
$races = new CharRaceList(array(['side', 0, '!'])); // only playable
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'race',
|
||||
'data' => $races->getListviewData(),
|
||||
'params' => []
|
||||
'listviews' => array(
|
||||
array(
|
||||
'file' => 'race',
|
||||
'data' => $races->getListviewData(),
|
||||
'params' => []
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
|
|
|
|||
|
|
@ -26,9 +26,13 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||
$skills = new SkillList($conditions);
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'skill',
|
||||
'data' => $skills->getListviewData(),
|
||||
'params' => []
|
||||
'listviews' => array(
|
||||
array(
|
||||
'file' => 'skill',
|
||||
'data' => $skills->getListviewData(),
|
||||
'params' => []
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
|
|
|
|||
|
|
@ -23,16 +23,22 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||
$titles = new TitleList(isset($cat) ? array(['category', (int)$cat]) : []);
|
||||
|
||||
$pageData = array(
|
||||
'listviews' => []
|
||||
);
|
||||
|
||||
$lvTitles = array(
|
||||
'file' => 'title',
|
||||
'data' => $titles->getListviewData(),
|
||||
'params' => []
|
||||
);
|
||||
|
||||
if ($titles->hasDiffFields(['category']))
|
||||
$pageData['params']['visibleCols'] = "$['category']";
|
||||
$lvTitles['params']['visibleCols'] = "$['category']";
|
||||
|
||||
if (!$titles->hasAnySource())
|
||||
$pageData['params']['hiddenCols'] = "$['source']";
|
||||
$lvTitles['params']['hiddenCols'] = "$['source']";
|
||||
|
||||
$pageData['listviews'][] = $lvTitles;
|
||||
|
||||
$smarty->saveCache($cacheKey, $pageData);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,11 +58,15 @@ if (!$smarty->loadCache($cacheKey, $pageData))
|
|||
$zones = new ZoneList($conditions);
|
||||
|
||||
$pageData = array(
|
||||
'file' => 'zone',
|
||||
'data' => $zones->getListviewData(),
|
||||
'som' => '',
|
||||
'map' => [],
|
||||
'params' => []
|
||||
'som' => '',
|
||||
'map' => [],
|
||||
'listviews' => array(
|
||||
array(
|
||||
'file' => 'zone',
|
||||
'data' => $zones->getListviewData(),
|
||||
'params' => []
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if ($mapFile)
|
||||
|
|
|
|||
12
setup/aowow_articles_u1.sql
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
DROP TABLE IF EXISTS `aowow_article_items`;
|
||||
REPLACE INTO `aowow_articles` VALUES
|
||||
(1300001,13,1,0,'[b][color=c1]Warriors[/color][/b] are a very powerful class, with the ability to tank or deal significant melee damage. The warrior\'s Protection tree contains many talents to improve their survivability and generate threat versus monsters. Protection warriors are one of the main tanking classes of the game.\\n\\nThey also have two damage-oriented talent trees - [icon name=ability_rogue_eviscerate][url=spells=7.1.26]Arms[/url][/icon] and [icon name=ability_warrior_innerrage][url=spells=7.1.256]Fury[/url][/icon], the latter of which includes the talent [spell=46917], which allows the warrior to wield two two-handed weapons at the same time! They are capable of strong melee AoE damage with spells such as [spell=845], [spell=1680], [spell=46924]. A warrior fights while in a specific [i]stance[/i], which grants him bonuses and access to different sets of abilities. He will use [spell=71] for tanking, and [spell=2457] or [spell=2458] for melee DPS.\\n\\n[ul]\\n[li]All warriors can buff their raid or group by using a [i]shout[/i], [spell=6673] or [spell=469], and Fury warriors can provide the passive buff [spell=29801] which significantly increases the melee and ranged critical strike chance of his allies.[/li]\\n[li]Warriors start out with only [spell=2457] at first, but learn [spell=71] at level 10 and [spell=2458] at level 30.[/li]\\n[li]Warriors have numerous useful methods of getting to their target in a hurry! All warriors can use [spell=100] or [spell=20252] to reach an enemy and Protection warriors have [spell=3411], which allows them to intercept a friendly target and protect them from an attack.[/li]\\n[/ul]',NULL),
|
||||
(1300002,13,2,0,'[b][color=c2]Paladins[/color][/b] bolster their allies with holy auras and blessing to protect their friends from harm and enhance their powers. Wearing heavy armor, they can withstand terrible blows in the thickest battles while healing their wounded allies and resurrecting the slain. In combat, they can wield massive two-handed weapons, stun their foes, destroy undead and demons, and judge their enemies with holy vengeance. Paladins are a defensive class, primarily designed to outlast their opponents.\\n\\nThe paladin is a mix of a melee fighter and a secondary spell caster. The paladin has a great deal of group utility due to the paladin\'s healing, blessings, and other abilities. Paladins can have one active aura per paladin on each party member and use specific blessings for specific players. Paladins are pretty hard to kill, thanks to their assortment of defensive abilities. They also make excellent tanks using their [spell=25780] ability.\\n\\n[ul]\\n[li]Can effectively heal, tank, and deal damage in melee.[/li]\\n[li]Has a wide selection of [url=spells=7.2&filter=na=blessing]Blessings[/url], [url=spells=7.2&filter=na=aura]Auras[/url], and other buffs.[/li]\\n[li]Is the only class with access to a true invulnerability spell: [spell=642][/li]\\n[/ul]',NULL),
|
||||
(1300003,13,3,0,'[b][color=c3]Hunters[/color][/b] are a very unique class in World of Warcraft. They are the sole non-magical ranged damage-dealers, fighting with bows and guns. Hunters have a number of different kinds of shots and stings, which can be used to debuff an enemy, and are capable of laying traps to deal damage or otherwise slow/incapacitate their enemy.\\n\\nA hunter will also tame his very own [url=pets]pet[/url] to aid them in combat. While they are not the only class which can use pet minions, the hunter\'s pet is unique in that each species has a particular type of talent tree, which the hunter can use to distribute points into various skills and passive abilities.\\n\\nIn addition, each species has a unique special ability. Hunters can seek out the most desirable pets based on their appearances or abilities, and if they spec deep enough into the [icon name=ability_hunter_beasttaming][url=spells=7.3.50]Beast Mastery[/url][/icon] tree they gain access to special, \\\"exotic\\\" beasts such as [pet=46] or [pet=39]!\\n\\n[ul]\\n[li]Hunters have access to 23 (32 if [icon name=ability_hunter_beasttaming][url=spells=7.3.50]Beast Mastery[/url][/icon]) different [url=pets]species of pets[/url], featuring over 150 different appearances![/li]\\n[li]Hunters have a number of survival-oriented skills which they can use to escape or avoid potential danger, such as [spell=5384] and [spell=781].[/li]\\n[li][icon name=ability_hunter_swiftstrike][url=spells=7.3.51]Survival[/url][/icon] hunters can spec down the tree into [spell=53292], which allows them to provide the [spell=57669] buff to their party and raid members.[/li]\\n[/ul]',NULL),
|
||||
(1300004,13,4,0,'[b][color=c4]Rogues[/color][/b] are a leather-clad melee class capable of dealing large amounts of damage to their enemies with very fast attacks. They are masters of stealth and assassination, passing by enemies unseen and striking from the shadows, then escaping from combat in the blink of an eye.\\n\\nThey are capable of using poisons to cripple their opponents, massively weakening them in battle. Rogues have a powerful arsenal of skills, many of which are strengthened by their ability to stealth and to incapacitate their victims.\\n[ul]\\n[li]Rogues can use a wide variety of melee weapons, such as daggers, fist weapons, one-handed maces, one-handed swords and one-handed axes.[/li]\\n[li]By coating their weapons with [url=items=0.-3&filter=na=poison;ub=4]poison[/url] rogues can severely cripple or weaken their enemies.[/li]\\n[li]When using [spell=1784] rogues will be unseen except by the most perceptive enemies.[/li]\\n[/ul]','[ul][li]Resource: [span]Energy[/span][/li][li]Role: Melee DPS[/li][li]Specs: [ul][li][icon name=Ability_Rogue_Eviscerate][url=spells=7.4.253]Assassination[/url][/icon][/li][li][icon name=Ability_BackStab][url=spells=7.4.38]Combat[/url][/icon][/li][li][icon name=Ability_Stealth][url=spells=7.4.39]Subtlety[/url][/icon][/li][/ul][/li][/ul]'),
|
||||
(1300005,13,5,0,'[b][color=c5]Priests[/color][/b] are commonly considered one of the standard healing classes in World of Warcraft, as they have two talent specs that can be used to heal quite effectively.\\n\\nTheir [icon name=spell_holy_holybolt][url=spells=7.5.56]Holy[/url][/icon] tree includes talents which strongly boost the healing done to their allies, including spells that can be used to heal multiple players at once, such as [spell=48089]. The [icon name=spell_holy_wordfortitude][url=spells=7.5.613]Discipline[/url][/icon] tree, while still capable of significant raw healing output, focuses primarily on damage absorption and mitigation through use of [spell=48066] and procced shielding effects. Priests are also capable of very powerful ranged damage with their unique [icon name=spell_shadow_shadowwordpain][url=spells=7.5.78]Shadow[/url][/icon] abilities, and upon entering [spell=15473] will see a significant increase in their shadow damage while losing the ability to cast any Holy spells.\\n\\n[ul]\\n[li]While the [icon name=spell_holy_wordfortitude][url=spells=7.5.613]Discipline[/url][/icon] talent tree is commonly used for healing, it also contains some powerful talents that can boost the priest\'s Holy damage, though [icon name=spell_shadow_shadowwordpain][url=spells=7.5.78]Shadow[/url][/icon] spells and abilities should be used primarily for DPS.[/li]\\n[li]Priests provide of the most appreciated buffs in the game - [spell=48161], which grants an indispensable stamina buff to everyone in the raid. They can also buff both [spell=48073] and [spell=48169]![/li]\\n[li]Shadow priests are an excellent utility class for any raid, providing the much-loved [spell=57669] buff to boost mana regeneration and can even heal their own party with [spell=15286]![/li]\\n[/ul]',NULL),
|
||||
(1300006,13,6,0,'Introduced in the Wrath of the Lich King expansion, [b][color=c6]Death Knights[/color][/b] are World of Warcraft\'s first hero class. Death knights start at level 55 in a special, instanced zone unreachable by any other class: Acherus, the Ebon Hold, located in [zone=4298]. Here they will earn their talent points as quest rewards and even get a special summoned mount, the [spell=48778]!\\n\\nDeath knights have multiple very strong damage dealing options, as each of their talent trees can be specced to perform exceptionally well with a variety of melee abilities, spells and damage-over-time dealing diseases. They are also very capable tank classes, with both their Blood and Frost trees providing unique options - [icon name=spell_deathknight_bloodboil][url=spells=7.6.770]Blood[/url][/icon] dealing more with self-healing abilities and [icon name=spell_frost_frostnova][url=spells=7.6.771]Frost[/url][/icon] providing significant damage mitigation and strong AoE damage.\\n\\nDeath knights fight with a special buff active called a [i]presence[/i] (similar to a warrior\'s stances) which provides special bonuses to their roles. Death knights utilize a unique power system, with most spells costing either Runes, which are replenished throughout battle, or Runic Power, which can be generated by various abilities.\\n\\n[ul]\\n[li][icon name=spell_deathknight_armyofthedead][url=spells=7.6.772]Unholy[/url][/icon] death knights can spec into [spell=52143], which makes their summoned Ghoul minion a permanent pet to aid in battle![/li]\\n[li]The death knight class has its own special weapon enchanting ability called [spell=53428], which replaces the need for conventional weapon enchants.[/li]\\n[li]Death knights are a very unique damage-dealing class in that their damage is dealt by both melee abilities [i]and[/i] spells![/li]\\n[/ul]',NULL),
|
||||
(1300007,13,7,0,'[b][color=c7]Shamans[/color][/b] master elemental and nature magics and bring the most potential buffs to any group in the form of totems. A shaman can summon one totem of each element - earth, fire, air, and water - which appears at the shaman\'s feet and provides a buff to anyone in the shaman\'s party or raid within range of it. Some shaman totems, notably the fire ones, also do damage to opponents. The trick to playing any type of shaman is knowing which totems to cast under which circumstances to maximize the group\'s damage output and survivability.\\n\\nShamans are primarily spellcasters, although an [icon name=spell_nature_lightningshield][url=spells=7.7.373]Enhancement[/url][/icon] shaman likes to get close and personal and do damage within melee range. An enhancement shaman learns to [spell=30798] weapons and can use [spell=51533] to summon a pair of Spirit Wolves to aid in battle. Despite being primarily melee, [icon name=spell_nature_lightningshield][url=spells=7.7.373]Enhancement[/url][/icon] shamans can still gain some benefit from spellpower and can cast instant [spell=403] or heals with [spell=51530]. \\n\\n[icon name=spell_nature_lightning][url=spells=7.7.375]Elemental[/url][/icon] shamans stand back and cast fire and lightning spells to deal great amounts of damage. They can push back enemies with [spell=51490] and root all enemies in an area with[spell=51486]. They also bring [icon name=spell_fire_totemofwrath][url=spell=57722]Totem of Wrath[/url][/icon] and [spell=51470] as amazing spellcaster raid buffs. A shaman that choses [icon name=spell_nature_magicimmunity][url=spells=7.7.374]Restoration[/url][/icon] gains improved healing spells and can be a great raid or tank healer. Resto shamans are known for their powerful [spell=1064] ability and for providing a [spell=16190] to help their party\'s mana restoration. They also gain a powerful [spell=974], can use [spell=51886] to remove curses, and have an instant-cast direct heal plus heal over time effect called [spell=61295].\\n\\n[ul]\\n[li]There are over twenty different totems a shaman can learn![/li]\\n[li]Shamans can cast [spell=2825] (or [spell=32182]) to boost the entire group\'s damage and healing. This buff is unique and oft sought after for a raid group.[/li]\\n[li]A shaman can turn into a [spell=2645] at level 16 and can even make it instant cast with [spell=16287]. This spell can be used in combat, but not indoors.[/li]\\n[li]Shamans can only have one elemental shield - [spell=324] or [spell=52127] - on at a time. [spell=974], if the shaman knows it, can be cast on another player.[/li]\\n[/ul]',NULL),
|
||||
(1300008,13,8,0,'[b][color=c8]Mages[/color][/b] wield the elements of fire, frost, and arcane to destroy or neutralize their enemies. They are a robed class that excels at dealing massive damage from afar, casting elemental bolts at a single target, or raining destruction down upon their enemies in a wide area of effect. Mages can also augment their allies\' spell-casting powers, summon food or drink to restore their friends, and even travel across the world in an instant by opening arcane portals to distant lands.\\n\\nWhen seeking someone to introduce monsters to a world of pain, the Mage is a good choice. With their elemental and arcane attacks, it\'s a safe bet something they can do won\'t be resisted by your chosen enemy. Damage is the name of the Mage game, and they do it well. Their arsenal includes some powerful buffs, debuffs, stuns, and snares, enabling them to dictate the terms of any fight.\\n\\n[ul]\\n[li]Can [spell=42956] to restore their allies\' health and mana.[/li]\\n[li]Are the only class that can create portals to transport other players. They cannot, however, summon players [i]from[/i] a distant location - that\'s a [icon name=class_warlock][color=c9]Warlock\'s[/color][/icon] job![/li]\\n[li]Mages who use [item=50045] can have a permanent water elemental pet![/li]\\n[/ul]',NULL),
|
||||
(1300009,13,9,0,'[b][color=c9]Warlocks[/color][/b] are masters of the demonic arts. Clothed in demonic styled cloth, they excel in using curses, firing bolts of fire or shadow, and summoning demons to help them in combat. Warlocks, while being excellent spell casters, also excel in supporting fellow allies by summoning other players or using ritual magics to conjure stones imbued with the power to heal.\\n\\nA warlock has very powerful abilities that, if used correctly, make them a very formidable opponent. Using their curses in combination with direct damage spells, Warlocks wreak havoc and destruction.\\n\\n[ul][li]Can use a [spell=698] to summon another player to the portals location.[/li]\\n[li]Are able to conjure [icon name=inv_stone_04][url=item=5509]Healthstones[/url][/icon] that have the ability to heal the user.[/li]\\n[li]Can use curses on enemies to [url=spell=47865]weaken[/url] them or [url=spell=47864]damage[/url] them.[/li][/ul]',NULL),
|
||||
(1300011,13,11,0,'[b][color=c11]Druids[/color][/b] are World of Warcraft\'s \\\"jack of all trades\\\" class -- that is, capable of performing in a variety of different roles and as such have one of the most varied playstyles. A druid can act as a healer, melee DPS, ranged DPS or a tank, utilizing a variety of [i]shapeshifting[/i] forms. As a druid levels up, he is able to learn new, powerful forms which he can cast to change into different creatures to suit their roles.\\n\\nAt lower levels, a druid will heal or ranged DPS in his caster form, but at later levels players who spec into the specialized trees will gain access to two special shapeshift forms for each different role.\\n\\nHealing druids will learn [spell=33891], which reduces the mana cost of their healing spells and grants a passive healing aura to their allies. Their ranged damage-dealing counterparts will learn [spell=24858], increasing their armor and granting a spell critical aura to their allies. There are also two feral form druid forms -- the mighty [spell=5487] (and at later level, [spell=9634]), a tanking-oriented form which provides additional armor and health and grants access to an arsenal of threat-building and damage mitigation abilities, and the rogue-like [spell=768] which is capable of significant melee DPS.\\n\\n[ul]\\n[li]Druids learn their different forms through questing or training. Some shapeshifts are only learned via talents.[/li]\\n[li]There are some shapeshifts that all druids can learn. [spell=5487] is obtained at level 10, [spell=1066] and [spell=783] at level 16, [spell=768] at level 20 and [spell=9634] at level 40.[/li]\\n[li]Druids even have their own flying travel form! [spell=33943] can be trained at level 60, and [spell=40120] at level 71 provided the player has already trained [spell=34091].[/li]\\n[li]Some druid shapeshifts are obtained via talents only - [spell=24858] can be obtained at level 40 when a player specs deep into the [icon name=spell_nature_starfall][url=spells=7.11.574]Balance[/url][/icon] tree, and [spell=33891] at level 50 after speccing deep into [icon name=spell_nature_healingtouch][url=spells=7.11.573]Restoration[/url][/icon].[/li]\\n[li]Druids have their own, class-specific teleport ability that allows them to travel to and from [zone=493], which is handy when needing to train![/li]\\n[li]Because feral druids do not actually swing weapons while in shapeshift forms, they instead gain a special statistic from any melee weapon they equip called \\\"feral attack power.\\\" This stat is a conversion of a weapon\'s DPS (damage per second) into an attack power-granting statistic which affects the cat or bear\'s damage output.[/li]\\n[/ul]',NULL);
|
||||
|
|
@ -16,13 +16,13 @@
|
|||
g_initPath({$page.path});
|
||||
//]]></script>
|
||||
|
||||
{* include file='bricks/infobox.tpl' *}
|
||||
{* include file='bricks/infobox.tpl' info=$lvData.infobox *}
|
||||
|
||||
<table class="infobox">
|
||||
<tr><th>{$lang.quickFacts}</th></tr>
|
||||
<tr><td><div class="infobox-spacer"></div>
|
||||
<ul>
|
||||
{if $lvData.page.points}<li><div>{$lang.points}: <span class="moneyachievement tip" onmouseover="Listview.funcBox.moneyAchievementOver(event)" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">{$lvData.page.points}</span></div></li>{/if}
|
||||
{if $lvData.page.points}<li><div>{$lang.points}: <span class="moneyachievement tip" onmouseover="Listview.funcBox.moneyAchievementOver(event)" onmousemove="$WH.Tooltip.cursorUpdate(event)" onmouseout="$WH.Tooltip.hide()">{$lvData.page.points}</span></div></li>{/if}
|
||||
{foreach from=$lvData.infobox item=info}
|
||||
<li><div>{$info}</div></li>
|
||||
{/foreach}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
<table><tr>
|
||||
<td> <input type="text" name="na" size="30" {if isset($filter.na)}value="{$filter.na}"{/if}/></td>
|
||||
<td> <input type="checkbox" name="ex" value="on" id="achievement-ex" {if isset($filter.ex)}checked="checked"{/if}/></td>
|
||||
<td><label for="achievement-ex"><span class="tip" onmouseover="Tooltip.showAtCursor(event, LANG.tooltip_extendedachievementsearch, 0, 0, 'q')" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">{$lang.extSearch}</span></label></td>
|
||||
<td><label for="achievement-ex"><span class="tip" onmouseover="$WH.Tooltip.showAtCursor(event, LANG.tooltip_extendedachievementsearch, 0, 0, 'q')" onmousemove="$WH.Tooltip.cursorUpdate(event)" onmouseout="$WH.Tooltip.hide()">{$lang.extSearch}</span></label></td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -64,7 +64,7 @@
|
|||
{if isset($filter.setCr)}{$filter.setCr}{/if}
|
||||
//]]></script>
|
||||
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<div id="lv-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
{include file='bricks/listviews/achievement.tpl' data=$lvData.data params=$lvData.params}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,13 @@
|
|||
{if !empty($article)}
|
||||
<div id="article-generic" class="left"></div>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
Markup.printHtml("{$article}", "article-generic", {ldelim}mode:Markup.MODE_ARTICLE{rdelim});
|
||||
Markup.printHtml("{$article.text}", "article-generic", {strip}{ldelim}
|
||||
{foreach from=$article.params key=k item=v}
|
||||
{$k}: {if $v[0] == '$'}{$v|substr:1}{else}'{$v}'{/if},
|
||||
{/foreach}
|
||||
allow: Markup.CLASS_ADMIN,
|
||||
dbpage: true
|
||||
{rdelim}{/strip});
|
||||
//]]></script>
|
||||
|
||||
<div class="pad2"></div>
|
||||
|
|
|
|||
8
template/bricks/globals/pets.tpl
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
var _ = g_pets;
|
||||
{strip}
|
||||
{foreach from=$data key=id item=item}
|
||||
_[{$id}]={ldelim}
|
||||
icon:'{$item.icon|escape:"javascript"}'
|
||||
{rdelim};
|
||||
{/foreach}
|
||||
{/strip}
|
||||
8
template/bricks/globals/zones.tpl
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
var _ = g_gatheredzones;
|
||||
{strip}
|
||||
{foreach from=$data key=id item=item}
|
||||
_[{$id}]={ldelim}
|
||||
name_{$user.language}:'{$item.name|escape:"javascript"}'
|
||||
{rdelim};
|
||||
{/foreach}
|
||||
{/strip}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<table class="infobox">
|
||||
{if !empty($lvData.infobox)}
|
||||
{if !empty($info)}
|
||||
<tr><th id="infobox-quick-facts">{$lang.quickFacts}</th></tr>
|
||||
<tr><td><div class="infobox-spacer"></div><div id="infobox-contents0"></div></td></tr>
|
||||
{/if}
|
||||
|
|
@ -14,8 +14,8 @@
|
|||
{if $user.id > 0}
|
||||
<script type="text/javascript">vi_appendSticky()</script>
|
||||
{/if}
|
||||
{if !empty($lvData.infobox)}
|
||||
{if !empty($info)}
|
||||
<script type="text/javascript">
|
||||
Markup.printHtml("{$lvData.infobox}", "infobox-contents0", {ldelim}mode:Markup.MODE_QUICKFACTS{rdelim});
|
||||
Markup.printHtml("{$info}", "infobox-contents0", {ldelim} allow: Markup.CLASS_STAFF, dbpage: true {rdelim});
|
||||
</script>
|
||||
{/if}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
template:'achievement',
|
||||
{if !isset($params.id)}id:'achievements',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_achievements,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'holidaycal',
|
||||
{if !isset($params.id)}id:'calendar',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_calendar,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'classs',
|
||||
{if !isset($params.id)}id:'classes',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_classes,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
30
template/bricks/listviews/commentpreview.tpl
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{strip}
|
||||
new Listview({ldelim}
|
||||
template: 'commentpreview',
|
||||
id: 'comments',
|
||||
{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}
|
||||
id:{$curr.id},
|
||||
user:'{$curr.user|escape:"javascript"}',
|
||||
date:'{$curr.date|date_format:"%Y/%m/%d %H:%M:%S"}',
|
||||
preview:'{$curr.preview|escape:"javascript"}',
|
||||
subject:'{$curr.subject|escape:"javascript"}',
|
||||
rating: {$curr.rating},
|
||||
deleted:{$curr.deleted},
|
||||
type:{$curr.type},
|
||||
typeId:{$curr.typeId}
|
||||
{rdelim}
|
||||
{if $smarty.foreach.i.last}{else},{/if}
|
||||
{/foreach}
|
||||
]
|
||||
{rdelim});
|
||||
{/strip}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
template:'npc',
|
||||
{if !isset($params.id)}id:'npcs',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_npcs,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach name=params from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'currency',
|
||||
{if !isset($params.id)}id:'currencies',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_currencies,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'holiday',
|
||||
{if !isset($params.id)}id:'holidays',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_holidays,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'item',
|
||||
{if !isset($params.id)}id:'items',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_items,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'itemset',
|
||||
{if !isset($params.id)}id:'itemsets',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_itemsets,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'model',
|
||||
{if !isset($params.id)}id:'gallery',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_gallery,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ var _ = function(family)
|
|||
computeDataFunc: _,
|
||||
{if !isset($params.id)}id:'hunter-pets',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_pets,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'quest',
|
||||
{if !isset($params.id)}id:'quests',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_quests,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'race',
|
||||
{if !isset($params.id)}id:'races',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_races,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
30
template/bricks/listviews/screenshot.tpl
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{strip}
|
||||
new Listview({ldelim}
|
||||
template: 'screenshot',
|
||||
id: 'screenshots',
|
||||
{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}
|
||||
id:{$curr.id},
|
||||
user:'{$curr.user|escape:"javascript"}',
|
||||
date:'{$curr.date|date_format:"%Y/%m/%d %H:%M:%S"}',
|
||||
caption:'{$curr.caption|escape:"javascript"}',
|
||||
subject:'{$curr.subject|escape:"javascript"}',
|
||||
width:{$curr.width},
|
||||
height:{$curr.height},
|
||||
type:{$curr.type},
|
||||
typeId:{$curr.typeId}
|
||||
{rdelim}
|
||||
{if $smarty.foreach.i.last}{else},{/if}
|
||||
{/foreach}
|
||||
]
|
||||
{rdelim});
|
||||
{/strip}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
template:'skill',
|
||||
{if !isset($params.id)}id:'skills',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_skills,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'spell',
|
||||
{if !isset($params.id)}id:'spells',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_spells,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
template:'title',
|
||||
{if !isset($params.id)}id:'titles',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_titles,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
32
template/bricks/listviews/video.tpl
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{strip}
|
||||
new Listview({ldelim}
|
||||
template: 'video',
|
||||
id: 'videos',
|
||||
{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}
|
||||
id:{$vi.id},
|
||||
user:'{$vi.user}',
|
||||
date:'{$vi.date|date_format:"%Y/%m/%d %H:%M:%S"}',
|
||||
videoType:1, {* there is only youtube *}
|
||||
videoId:'{$vi.videoId}',
|
||||
type:{$page.type},
|
||||
typeId:{$page.typeId},
|
||||
{if isset($vi.sticky)}
|
||||
sticky:{$vi.sticky},
|
||||
{/if}
|
||||
{rdelim}
|
||||
{if $smarty.foreach.i.last}{else},{/if}
|
||||
{/foreach}
|
||||
]
|
||||
{rdelim});
|
||||
{/strip}
|
||||
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
template:'zone',
|
||||
{if !isset($params.id)}id:'zones',{/if}
|
||||
{if !isset($params.name)}name:LANG.tab_zones,{/if}
|
||||
{if !isset($params.parent)}parent:'listview-generic',{/if}
|
||||
{if !isset($params.parent)}parent:'lv-generic',{/if}
|
||||
{foreach from=$params key=k item=v}
|
||||
{if $v[0] == '$'}
|
||||
{$k}:{$v|substr:1},
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<div id="tabs-generic"></div>
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<div id="lv-generic" class="listview"></div>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
var tabsRelated = new Tabs({ldelim}parent: $WH.ge('tabs-generic'){rdelim});
|
||||
{foreach from=$tabs item="tab"}
|
||||
|
|
@ -7,10 +7,10 @@
|
|||
{include file="bricks/listviews/`$tab.file`.tpl" data=$tab.data params=$tab.params}
|
||||
{/if}
|
||||
{/foreach}
|
||||
new Listview({ldelim}template: 'comment', id: 'comments', name: LANG.tab_comments, tabs: tabsRelated, parent: 'listview-generic', data: lv_comments{rdelim});
|
||||
new Listview({ldelim}template: 'screenshot', id: 'screenshots', name: LANG.tab_screenshots, tabs: tabsRelated, parent: 'listview-generic', data: lv_screenshots{rdelim});
|
||||
new Listview({ldelim}template: 'comment', id: 'comments', name: LANG.tab_comments, tabs: tabsRelated, parent: 'lv-generic', data: lv_comments{rdelim});
|
||||
new Listview({ldelim}template: 'screenshot', id: 'screenshots', name: LANG.tab_screenshots, tabs: tabsRelated, parent: 'lv-generic', data: lv_screenshots{rdelim});
|
||||
if (lv_videos.length || (g_user && g_user.roles & (U_GROUP_ADMIN | U_GROUP_BUREAU | U_GROUP_VIDEO)))
|
||||
new Listview({ldelim}template: 'video', id: 'videos', name: LANG.tab_videos, tabs: tabsRelated, parent: 'listview-generic', data: lv_videos{rdelim});
|
||||
new Listview({ldelim}template: 'video', id: 'videos', name: LANG.tab_videos, tabs: tabsRelated, parent: 'lv-generic', data: lv_videos{rdelim});
|
||||
tabsRelated.flush();
|
||||
//]]></script>
|
||||
|
||||
|
|
|
|||
44
template/class.tpl
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
{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="headicon-generic" class="h1-icon"></div>
|
||||
<script type="text/javascript">
|
||||
$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="?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>
|
||||
|
||||
{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'}
|
||||
|
|
@ -148,10 +148,10 @@ a.selected, a.selected:hover
|
|||
.text h1
|
||||
{
|
||||
color: white;
|
||||
font-size: 20px;
|
||||
font-size: 19px;
|
||||
font-weight: normal;
|
||||
border-bottom: 1px solid #505050;
|
||||
padding: 0 0 5px;
|
||||
padding: 1px 0 5px;
|
||||
margin: 0 0 13px;
|
||||
line-height: 1.1em;
|
||||
}
|
||||
|
|
@ -721,93 +721,93 @@ span.breadcrumb-ellipsis {
|
|||
/********/
|
||||
|
||||
.menu {
|
||||
position: absolute;
|
||||
z-index: 100000002;
|
||||
position: absolute;
|
||||
z-index: 100000002;
|
||||
}
|
||||
|
||||
.menu .menu-outer {
|
||||
float: left;
|
||||
border: 1px solid #181818;
|
||||
float: left;
|
||||
border: 1px solid #181818;
|
||||
|
||||
-webkit-box-shadow: 1px 1px 5px black;
|
||||
-moz-box-shadow: 1px 1px 5px black;
|
||||
box-shadow: 1px 1px 5px black;
|
||||
-webkit-box-shadow: 1px 1px 5px black;
|
||||
-moz-box-shadow: 1px 1px 5px black;
|
||||
box-shadow: 1px 1px 5px black;
|
||||
}
|
||||
|
||||
.menu .menu-inner {
|
||||
border: 2px solid #484848;
|
||||
border-top: 1px solid #484848;
|
||||
border: 2px solid #484848;
|
||||
border-top: 1px solid #484848;
|
||||
}
|
||||
|
||||
.menu a {
|
||||
display: block;
|
||||
padding: 4px 4px 4px 24px;
|
||||
text-decoration: none;
|
||||
border-top: 1px solid #484848;
|
||||
border-bottom: 1px solid #101010;
|
||||
white-space: nowrap;
|
||||
font-size: 13px;
|
||||
display: block;
|
||||
padding: 4px 4px 4px 24px;
|
||||
text-decoration: none;
|
||||
border-top: 1px solid #484848;
|
||||
border-bottom: 1px solid #101010;
|
||||
white-space: nowrap;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.menu a span {
|
||||
display: block;
|
||||
padding-right: 20px;
|
||||
display: block;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.menu a span.hassubmenu {
|
||||
background: url(../images/Menu/arrow-right.gif) right center no-repeat;
|
||||
background: url(../images/Menu/arrow-right.gif) right center no-repeat;
|
||||
}
|
||||
|
||||
.menu a, .menu a span { /* Setting the background color on both the <a> and the <span> so the hover effect works in IE7 */
|
||||
background-color: #282828;
|
||||
background-color: #282828;
|
||||
}
|
||||
|
||||
.menu a.open, .menu a:hover, .menu a.open span, .menu a:hover span {
|
||||
background-color: #383838;
|
||||
background-color: #383838;
|
||||
}
|
||||
|
||||
.menu a.open, .menu a:hover {
|
||||
border-bottom: 1px solid #202020;
|
||||
border-bottom: 1px solid #202020;
|
||||
}
|
||||
|
||||
.menu a.separator {
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
padding: 4px 8px;
|
||||
background-color: #181818;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
padding: 4px 8px;
|
||||
background-color: #181818;
|
||||
}
|
||||
|
||||
.menu a.separator:hover {
|
||||
text-decoration: underline;
|
||||
background-color: #181818;
|
||||
border-bottom: 1px solid #101010;
|
||||
text-decoration: underline;
|
||||
background-color: #181818;
|
||||
border-bottom: 1px solid #101010;
|
||||
}
|
||||
|
||||
.menu a.unlinked {
|
||||
text-decoration: none !important;
|
||||
cursor: default;
|
||||
text-decoration: none !important;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.menu a.checked {
|
||||
background-image: url(../images/Menu/check.gif);
|
||||
background-position: 9px center;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url(../images/Menu/check.gif);
|
||||
background-position: 9px center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.menu a.icon, .menu a.tinyicon {
|
||||
background-position: 4px center;
|
||||
background-repeat: no-repeat;
|
||||
padding-left: 24px;
|
||||
background-position: 4px center;
|
||||
background-repeat: no-repeat;
|
||||
padding-left: 24px;
|
||||
}
|
||||
|
||||
.menu a.socket-meta, .menu a.socket-red, .menu a.socket-yellow, .menu a.socket-blue, .menu a.socket-prismatic, .menu a.socket-hydraulic, .menu a.socket-cogwheel {
|
||||
background-position: 5px center;
|
||||
background-position: 5px center;
|
||||
}
|
||||
|
||||
.menu a.icon-star-right span
|
||||
{
|
||||
padding-right: 21px;
|
||||
background: url(../images/icons/star.png) no-repeat right center;
|
||||
padding-right: 21px;
|
||||
background: url(../images/icons/star.png) no-repeat right center;
|
||||
}
|
||||
|
||||
/****************/
|
||||
|
|
@ -815,35 +815,35 @@ span.breadcrumb-ellipsis {
|
|||
/****************/
|
||||
|
||||
.menu-buttons {
|
||||
padding: 4px 0 0 5px;
|
||||
padding: 4px 0 0 5px;
|
||||
}
|
||||
|
||||
span.menu-buttons a {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
padding: 4px 11px;
|
||||
font-size: 13px;
|
||||
white-space: nowrap;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
padding: 4px 11px;
|
||||
font-size: 13px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
span.menu-buttons a:hover {
|
||||
text-decoration: underline;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
span.menu-buttons a.open {
|
||||
background-color: #484848;
|
||||
padding: 3px 10px;
|
||||
border: 1px solid #282828;
|
||||
background-color: #484848;
|
||||
padding: 3px 10px;
|
||||
border: 1px solid #282828;
|
||||
}
|
||||
|
||||
span.menu-buttons a.unlinked {
|
||||
text-decoration: none !important;
|
||||
cursor: default;
|
||||
text-decoration: none !important;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
span.menu-buttons span.hassubmenu {
|
||||
padding-right: 13px;
|
||||
background: url(../images/Menu/arrow-down.gif) right center no-repeat;
|
||||
padding-right: 13px;
|
||||
background: url(../images/Menu/arrow-down.gif) right center no-repeat;
|
||||
}
|
||||
|
||||
/* start note: remove with breadcrumbs */
|
||||
|
|
@ -1390,6 +1390,18 @@ a.star-icon-right span
|
|||
padding-left: 13px !important;
|
||||
}
|
||||
|
||||
.bubble-icon
|
||||
{
|
||||
background: url(../images/bubble.gif) left center no-repeat;
|
||||
padding-left: 22px;
|
||||
}
|
||||
|
||||
.bubble-icon-right
|
||||
{
|
||||
background: url(../images/bubble.gif) right center no-repeat;
|
||||
padding-right: 22px;
|
||||
}
|
||||
|
||||
.instance-icon1, .instance-icon2, .instance-icon3, .instance-icon4, .instance-icon5, .instance-icon7
|
||||
{
|
||||
background: url(../../images/icons/instance-icons.gif) no-repeat;
|
||||
|
|
@ -1754,7 +1766,7 @@ a.star-icon-right span
|
|||
.listview-band-top, .listview-band-bottom
|
||||
{
|
||||
background-color: #404040;
|
||||
color: #ccc;
|
||||
color: #cccccc;
|
||||
}
|
||||
|
||||
.listview-band-top
|
||||
|
|
@ -1764,13 +1776,14 @@ a.star-icon-right span
|
|||
|
||||
.listview-band-bottom
|
||||
{
|
||||
padding: 6px 6px 3px 3px;
|
||||
padding: 6px 3px 3px 3px;
|
||||
}
|
||||
|
||||
.listview-band-top input, .listview-band-bottom input, .listview-band-top select, .listview-band-bottom select
|
||||
.listview-band-top input, .listview-band-bottom input,
|
||||
.listview-band-top select, .listview-band-bottom select
|
||||
{
|
||||
font-size: 11px;
|
||||
margin-right: .5em;
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
.listview-quicksearch
|
||||
|
|
@ -1795,7 +1808,7 @@ a.star-icon-right span
|
|||
display: block;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
background: url(../images/search2.gif) no-repeat;
|
||||
background: url(../images/Listview/quicksearch-cancel.gif) no-repeat;
|
||||
}
|
||||
|
||||
.listview-quicksearch a:hover span
|
||||
|
|
@ -1811,7 +1824,7 @@ a.star-icon-right span
|
|||
top: 2px;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
background: url(../images/search4.gif) no-repeat;
|
||||
background: url(../images/Listview/quicksearch.gif) no-repeat;
|
||||
}
|
||||
|
||||
.listview-quicksearch input
|
||||
|
|
@ -1828,12 +1841,15 @@ a.star-icon-right span
|
|||
|
||||
.listview-withselected
|
||||
{
|
||||
/* Top bar */
|
||||
clear: left;
|
||||
padding-left: 33px;
|
||||
background: url(../images/listview-withselected.gif) 11px 6px no-repeat;
|
||||
background: url(../images/Listview/withselected.gif) 11px 6px no-repeat;
|
||||
}
|
||||
|
||||
.listview-withselected2
|
||||
{
|
||||
/* Bottom bar */
|
||||
padding-left: 33px;
|
||||
background: url(../images/listview-withselected.gif) 11px -35px no-repeat;
|
||||
}
|
||||
|
|
@ -1847,7 +1863,7 @@ a.star-icon-right span
|
|||
|
||||
.listview-nav a, .listview-nav span
|
||||
{
|
||||
margin-left: .5em;
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
.listview-note
|
||||
|
|
@ -1855,6 +1871,12 @@ a.star-icon-right span
|
|||
line-height: 16px;
|
||||
}
|
||||
|
||||
.listview table
|
||||
{
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
.listview th
|
||||
{
|
||||
font-size: 14px;
|
||||
|
|
@ -1863,6 +1885,11 @@ a.star-icon-right span
|
|||
border-bottom: 1px solid #202020;
|
||||
}
|
||||
|
||||
.listview .iconlist th
|
||||
{
|
||||
border: none;
|
||||
}
|
||||
|
||||
.listview thead div
|
||||
{
|
||||
position: relative;
|
||||
|
|
@ -1875,7 +1902,7 @@ a.star-icon-right span
|
|||
.listview thead a
|
||||
{
|
||||
display: block;
|
||||
padding: 4px 0;
|
||||
padding: 5px 2px;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
background-color: #585858;
|
||||
|
|
@ -1886,22 +1913,54 @@ a.star-icon-right span
|
|||
padding: 0 4px;
|
||||
}
|
||||
|
||||
.listview thead a span span
|
||||
{
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.listview th a:hover
|
||||
{
|
||||
background-color: #606060;
|
||||
}
|
||||
|
||||
.listview-mode-default, .listview-mode-div, .listview-mode-tiled
|
||||
.listview th a.static
|
||||
{
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.listview th a.static:hover
|
||||
{
|
||||
background-color: #585858;
|
||||
}
|
||||
|
||||
.listview-mode-default, .listview-mode-div, .listview-mode-tiled, .listview-mode-calendar
|
||||
{
|
||||
background-color: #141414;
|
||||
}
|
||||
|
||||
.listview-mode-default th
|
||||
{
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.listview-mode-default td
|
||||
{
|
||||
padding: 4px;
|
||||
color: #ddd;
|
||||
color: #dddddd;
|
||||
text-align: center;
|
||||
border: 1px solid #404040;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.listview-clip td
|
||||
{
|
||||
border: none;
|
||||
border-bottom: 1px solid #303030;
|
||||
}
|
||||
|
||||
.listview-mode-default .small
|
||||
{
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.listview-mode-default .small2
|
||||
|
|
@ -1923,6 +1982,85 @@ a.star-icon-right span
|
|||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.listview-mode-default tbody a
|
||||
{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.listview-mode-default tbody a:hover
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.listview-mode-default tbody.clickable tr
|
||||
{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.listview-mode-default tbody tr:hover
|
||||
{
|
||||
background-color: #202020;
|
||||
}
|
||||
|
||||
.listview-mode-tiled td
|
||||
{
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.listview-mode-tiled td:hover
|
||||
{
|
||||
background-color: #202020;
|
||||
}
|
||||
|
||||
.listview-mode-tiled td.empty-cell
|
||||
{
|
||||
cursor: default !important;
|
||||
}
|
||||
|
||||
.listview-mode-tiled td.empty-cell:hover
|
||||
{
|
||||
background: none !important;
|
||||
}
|
||||
|
||||
.listview-mode-calendar th
|
||||
{
|
||||
padding: 3px;
|
||||
background-color: #404040;
|
||||
}
|
||||
|
||||
.listview-mode-calendar td
|
||||
{
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.listview-mode-calendar .calendar-today
|
||||
{
|
||||
background-color: #404040;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.listview-mode-calendar .calendar-date
|
||||
{
|
||||
background-color: #242424;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.listview-mode-calendar .calendar-event
|
||||
{
|
||||
height: 88px;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.listview tr.mergerow
|
||||
{
|
||||
background-color: #131d1a;
|
||||
}
|
||||
|
||||
.listview tr.mergerow:hover
|
||||
{
|
||||
background-color: #1a2924;
|
||||
}
|
||||
|
||||
.listview tr.checked
|
||||
{
|
||||
background-color: #242424;
|
||||
|
|
@ -1933,6 +2071,32 @@ a.star-icon-right span
|
|||
background-color: #2C2C2C;
|
||||
}
|
||||
|
||||
.listview tr.upgraded
|
||||
{
|
||||
background-color: #242424;
|
||||
}
|
||||
|
||||
.listview tr.upgraded:hover
|
||||
{
|
||||
background-color: #2C2C2C;
|
||||
}
|
||||
|
||||
.listview tr.upgraded td
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.listview-cb
|
||||
{
|
||||
text-align: center;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.listview-cb input
|
||||
{
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.listview-nodata
|
||||
{
|
||||
padding: 4px;
|
||||
|
|
@ -1946,16 +2110,36 @@ a.star-icon-right span
|
|||
background-color: black;
|
||||
}
|
||||
|
||||
.listview-indicators
|
||||
{
|
||||
padding-left: 3px;
|
||||
}
|
||||
|
||||
.sortasc
|
||||
{
|
||||
background: url(../images/sort_asc.gif) no-repeat right center;
|
||||
padding-right: 15px !important;
|
||||
background: url(../images/Listview/sort-asc.gif) no-repeat right center;
|
||||
}
|
||||
|
||||
.sortdesc
|
||||
{
|
||||
background: url(../images/sort_desc.gif) no-repeat right center;
|
||||
padding-right: 15px !important;
|
||||
background: url(../images/Listview/sort-desc.gif) no-repeat right center;
|
||||
}
|
||||
|
||||
td.checked
|
||||
{
|
||||
background-color: #202020;
|
||||
}
|
||||
|
||||
td.checked:hover
|
||||
{
|
||||
background-color: #2C2C2C;
|
||||
}
|
||||
|
||||
td.checked .listview-cb:hover
|
||||
{
|
||||
background-color: #343434;
|
||||
}
|
||||
|
||||
.comment
|
||||
|
|
@ -2972,7 +3156,12 @@ small, .listview-mode-default .small, .comment-edit-modes, .comment-edit-body
|
|||
font-size: 11px;
|
||||
}
|
||||
|
||||
a:hover, a.open, .text b, .text ol li div, .text li div, .infobox li div, .minibox h3 a, .comment-body b, .comment-body h3
|
||||
a.open, .text ol li div, .text li div, .infobox li div, .minibox h3 a, .comment-body b, .comment-body h3
|
||||
{
|
||||
color: #cccccc;
|
||||
}
|
||||
|
||||
a:hover, .text b
|
||||
{
|
||||
color: white;
|
||||
}
|
||||
|
|
@ -3390,6 +3579,19 @@ div.modelviewer, div.screenshotviewer
|
|||
font-size: 13px;
|
||||
}
|
||||
|
||||
.notice-box {
|
||||
padding: 8px;
|
||||
color: #dddddd;
|
||||
margin-bottom: 10px;
|
||||
text-align: center;
|
||||
background: #141414;
|
||||
border: 1px solid #101010;
|
||||
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
div.announcement-pagetop div.announcement-inner {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
{include file='header.tpl'}
|
||||
{assign var="file" value=$lvData.file}
|
||||
|
||||
<div id="main">
|
||||
<div id="main-precontents"></div>
|
||||
|
|
@ -18,18 +17,38 @@
|
|||
g_initPath({$page.path});
|
||||
</script>
|
||||
|
||||
<div id="tabs-generic"></div>
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
{if !empty($lvData.calendar)}var myTabs = new Tabs({ldelim}parent: $WH.ge('tabs-generic'){rdelim});{/if}
|
||||
{include file="bricks/listviews/$file.tpl" data=$lvData.data params=$lvData.params}
|
||||
{if !empty($lvData.calendar)}
|
||||
{include file='bricks/listviews/calendar.tpl' data=$lvData.data params=$lvData.params}
|
||||
myTabs.flush();
|
||||
{/if}
|
||||
</script>
|
||||
{if !empty($lvData.page.name) || !empty($lvData.page.h1Links)}
|
||||
<div class="text">
|
||||
{if !empty($lvData.page.h1Links)}
|
||||
<div class="h1-links">{$lvData.page.h1Links}</div>
|
||||
{/if}
|
||||
{if !empty($lvData.page.name)}
|
||||
<h1>{$lvData.page.name}</h1>
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if !empty($lvData.listviews)}
|
||||
{if count($lvData.listviews) > 1}
|
||||
<div id="tabs-generic"></div>
|
||||
{/if}
|
||||
<div id="lv-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
{if count($lvData.listviews) > 1}
|
||||
var myTabs = new Tabs({ldelim}parent: $WH.ge('tabs-generic'){rdelim});
|
||||
{/if}
|
||||
{foreach from=$lvData.listviews item=lv}
|
||||
{if isset($lv.file)}
|
||||
{include file="bricks/listviews/`$lv.file`.tpl" data=$lv.data params=$lv.params}
|
||||
{/if}
|
||||
{/foreach}
|
||||
{if count($lvData.listviews) > 1}
|
||||
myTabs.flush();
|
||||
{/if}
|
||||
</script>
|
||||
<div class="clear"></div>
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 269 B After Width: | Height: | Size: 269 B |
|
Before Width: | Height: | Size: 346 B After Width: | Height: | Size: 346 B |
|
Before Width: | Height: | Size: 67 B After Width: | Height: | Size: 67 B |
|
Before Width: | Height: | Size: 67 B After Width: | Height: | Size: 67 B |
BIN
template/images/Listview/sort_asc.gif
Normal file
|
After Width: | Height: | Size: 67 B |
BIN
template/images/Listview/sort_desc.gif
Normal file
|
After Width: | Height: | Size: 67 B |
|
Before Width: | Height: | Size: 431 B After Width: | Height: | Size: 431 B |
|
|
@ -16,7 +16,7 @@
|
|||
g_initPath({$page.path});
|
||||
//]]></script>
|
||||
|
||||
{include file='bricks/infobox.tpl'}
|
||||
{include file='bricks/infobox.tpl' info=$lvData.infobox}
|
||||
|
||||
<div class="text">
|
||||
<a href="javascript:;" id="open-links-button" class="button-red" onclick="this.blur(); Links.show({ldelim} type: 4, typeId: {$lvData.page.id} {rdelim});"><em><b><i>{$lang.links}</i></b><span>{$lang.links}</span></em></a>
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@
|
|||
{if isset($filter.setCr)}{$filter.setCr}{/if}
|
||||
//]]></script>
|
||||
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<div id="lv-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
{include file='bricks/listviews/itemset.tpl' data=$lvData.data params=$lvData.params}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -102,8 +102,8 @@ var Draggable = new function () {
|
|||
dragObj = obj;
|
||||
}
|
||||
|
||||
Tooltip.disabled = true;
|
||||
Tooltip.hide();
|
||||
$WH.Tooltip.disabled = true;
|
||||
$WH.Tooltip.hide();
|
||||
|
||||
if (obj.onDrag) {
|
||||
obj.onDrag(e, dragObj, obj);
|
||||
|
|
@ -154,7 +154,7 @@ var Draggable = new function () {
|
|||
$WH.dE(document, 'mousemove', onMouseMove);
|
||||
$WH.dE(document, 'mouseup', onMouseUp);
|
||||
|
||||
Tooltip.disabled = false;
|
||||
$WH.Tooltip.disabled = false;
|
||||
|
||||
dragObj.className = dragObj.className.replace(/dragged/, '');
|
||||
dragObj = null;
|
||||
|
|
|
|||
|
|
@ -849,10 +849,10 @@ Mapper.prototype = {
|
|||
Menu.add(_.a, _.a.menu, { showAtCursor: true });
|
||||
// _.a.onclick = function() {
|
||||
// (Menu.show.bind(this))();
|
||||
// Tooltip.hide();
|
||||
// $WH.Tooltip.hide();
|
||||
// this.onmouseout = function() {
|
||||
// Menu.hide();
|
||||
// this.onmouseout = Tooltip.hide();
|
||||
// this.onmouseout = $WH.Tooltip.hide();
|
||||
// }.bind(this);
|
||||
// $WH.sp();
|
||||
// return false;
|
||||
|
|
@ -1023,7 +1023,7 @@ Mapper.prototype = {
|
|||
_.a = a;
|
||||
_.floor = floor;
|
||||
a.onmouseover = this.pinOver;
|
||||
a.onmouseout = Tooltip.hide;
|
||||
a.onmouseout = $WH.Tooltip.hide;
|
||||
a.onclick = $WH.sp;
|
||||
|
||||
this.pins.push(_);
|
||||
|
|
@ -1077,7 +1077,7 @@ Mapper.prototype = {
|
|||
|
||||
pinOver: function()
|
||||
{
|
||||
Tooltip.show(this, this.tt, 4, 0);
|
||||
$WH.Tooltip.show(this, this.tt, 4, 0);
|
||||
},
|
||||
|
||||
getMousePos: function(e)
|
||||
|
|
|
|||
|
|
@ -1152,17 +1152,17 @@ Summary.prototype = {
|
|||
a.onclick = this.selectColumn.bind(this, col);
|
||||
if (this.selected && this.__selected.id == col.id) {
|
||||
a.onmouseover = function() {
|
||||
Tooltip.show(this, LANG.tooltip_removefocus, 0, 0, 'q');
|
||||
$WH.Tooltip.show(this, LANG.tooltip_removefocus, 0, 0, 'q');
|
||||
};
|
||||
s.className = 'selected';
|
||||
}
|
||||
else {
|
||||
a.onmouseover = function() {
|
||||
Tooltip.show(this, LANG.tooltip_setfocus, 0, 0, 'q');
|
||||
$WH.Tooltip.show(this, LANG.tooltip_setfocus, 0, 0, 'q');
|
||||
};
|
||||
}
|
||||
a.onmousemove = Tooltip.cursorUpdate;
|
||||
a.onmouseout = Tooltip.hide;
|
||||
a.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
a.onmouseout = $WH.Tooltip.hide;
|
||||
$WH.ae(a, s);
|
||||
$WH.ae(div, a);
|
||||
}
|
||||
|
|
@ -1797,8 +1797,8 @@ Summary.prototype = {
|
|||
else {
|
||||
var sp = $WH.ce('span');
|
||||
sp.onmouseover = Summary.groupOver.bind(a, col.group);
|
||||
sp.onmousemove = Tooltip.cursorUpdate;
|
||||
sp.onmouseout = Tooltip.hide;
|
||||
sp.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
sp.onmouseout = $WH.Tooltip.hide;
|
||||
sp.className = 'tip';
|
||||
$WH.ae(sp, $WH.ct('[' + col.group.length + ' ' + LANG.types[3][3] + ']'));
|
||||
$WH.ae(div, sp);
|
||||
|
|
@ -2185,10 +2185,10 @@ Summary.prototype = {
|
|||
a.className = (_.className ? _.className : 'q1');
|
||||
a.style.borderBottom = '1px dotted #808080';
|
||||
a.onmouseover = (function(rating, percent, level, text) {
|
||||
Tooltip.show(this, rating + ' ' + text + ' (' + $WH.sprintf(LANG.tooltip_combatrating, percent, level) + ')<br /><span class="q2">' + LANG.su_toggle + '</span>', 0, 0, 'q');
|
||||
$WH.Tooltip.show(this, rating + ' ' + text + ' (' + $WH.sprintf(LANG.tooltip_combatrating, percent, level) + ')<br /><span class="q2">' + LANG.su_toggle + '</span>', 0, 0, 'q');
|
||||
}).bind(a, result, percent, this.level, LANG.traits[row.id][0]);
|
||||
a.onmousemove = Tooltip.cursorUpdate;
|
||||
a.onmouseout = Tooltip.hide;
|
||||
a.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
a.onmouseout = $WH.Tooltip.hide;
|
||||
a.onclick = this.toggleRatings.bind(this);
|
||||
|
||||
$WH.ae(a, $WH.ct(sign + (this.ratingMode ? percent : result)));
|
||||
|
|
@ -2320,14 +2320,14 @@ Summary.prototype = {
|
|||
},
|
||||
|
||||
selectColumn: function(col) {
|
||||
Tooltip.hide();
|
||||
$WH.Tooltip.hide();
|
||||
|
||||
this.selected = (this.__selected.id == col.id ? null : this.clone.i + col.i);
|
||||
this.refreshAll();
|
||||
},
|
||||
|
||||
deleteColumn: function(col, e) {
|
||||
Tooltip.hide();
|
||||
$WH.Tooltip.hide();
|
||||
|
||||
e = $WH.$E(e);
|
||||
|
||||
|
|
@ -2377,7 +2377,7 @@ Summary.prototype = {
|
|||
},
|
||||
|
||||
deleteWeightScale: function(i) {
|
||||
Tooltip.hide();
|
||||
$WH.Tooltip.hide();
|
||||
|
||||
this.weights.splice(i, 1);
|
||||
|
||||
|
|
@ -3078,7 +3078,7 @@ Summary.prototype = {
|
|||
var pos = $WH.g_getCursorPos(event);
|
||||
setTimeout(Menu.showAtXY.bind(null, this.menu, pos.x, pos.y), 1); // Timeout needed for the context menu to be disabled
|
||||
|
||||
Tooltip.hide();
|
||||
$WH.Tooltip.hide();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
@ -3616,7 +3616,7 @@ Summary.groupOver = function(group, e) {
|
|||
}
|
||||
|
||||
if (buff) {
|
||||
Tooltip.showAtCursor(e, '<table style="white-space: nowrap">' + buff + '</table>');
|
||||
$WH.Tooltip.showAtCursor(e, '<table style="white-space: nowrap">' + buff + '</table>');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -3677,7 +3677,7 @@ Summary.weightOver = function(weight, e) {
|
|||
buff += '<table style="white-space: nowrap"><tr><td style="text-align: right">' + leftTd + '</td><td><div class="indent">' + rightTd + '</td></tr></table><span class="q2">' + LANG.su_toggle + '</span>';
|
||||
}
|
||||
|
||||
Tooltip.showAtCursor(e, buff);
|
||||
$WH.Tooltip.showAtCursor(e, buff);
|
||||
};
|
||||
|
||||
Summary.socketOver = function(gems, e) {
|
||||
|
|
@ -3696,7 +3696,7 @@ Summary.socketOver = function(gems, e) {
|
|||
}
|
||||
|
||||
if (buff) {
|
||||
Tooltip.showAtCursor(e, '<table style="white-space: nowrap">' + buff + '</table>');
|
||||
$WH.Tooltip.showAtCursor(e, '<table style="white-space: nowrap">' + buff + '</table>');
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -3807,8 +3807,8 @@ Summary.funcBox = {
|
|||
}
|
||||
|
||||
a.onmouseover = Summary.socketOver.bind(a, gems[color]);
|
||||
a.onmousemove = Tooltip.cursorUpdate;
|
||||
a.onmouseout = Tooltip.hide;
|
||||
a.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
a.onmouseout = $WH.Tooltip.hide;
|
||||
}
|
||||
|
||||
if (selected) {
|
||||
|
|
@ -3859,10 +3859,10 @@ Summary.templates = {
|
|||
var sp = $WH.ce('span');
|
||||
sp.className = 'tip';
|
||||
sp.onmouseover = function() {
|
||||
Tooltip.show(this, LANG.tooltip_gains, 0, 0, 'q');
|
||||
$WH.Tooltip.show(this, LANG.tooltip_gains, 0, 0, 'q');
|
||||
};
|
||||
sp.onmousemove = Tooltip.cursorUpdate;
|
||||
sp.onmouseout = Tooltip.hide;
|
||||
sp.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
sp.onmouseout = $WH.Tooltip.hide;
|
||||
$WH.ae(sp, $WH.ct(res));
|
||||
$WH.ae(td, sp);
|
||||
}
|
||||
|
|
@ -3969,8 +3969,8 @@ Summary.templates = {
|
|||
a.href = 'javascript:;';
|
||||
a.onclick = this.toggleWeights.bind(this);
|
||||
a.onmouseover = Summary.weightOver.bind(a, weight);
|
||||
a.onmousemove = Tooltip.cursorUpdate;
|
||||
a.onmouseout = Tooltip.hide;
|
||||
a.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
a.onmouseout = $WH.Tooltip.hide;
|
||||
$WH.ae(a, $WH.ct(score));
|
||||
$WH.ae(d, a);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -748,7 +748,7 @@ function TalentCalc() {
|
|||
|
||||
function _bonusPointsOnMouseOver(_this, e) {
|
||||
if (_mode == MODE_PET) {
|
||||
Tooltip.showAtCursor(e, LANG[_bonusPoints ? "tc_rembon": "tc_addbon"], null, null, "q");
|
||||
$WH.Tooltip.showAtCursor(e, LANG[_bonusPoints ? "tc_rembon": "tc_addbon"], null, null, "q");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -759,7 +759,7 @@ function TalentCalc() {
|
|||
}
|
||||
|
||||
function _setLevelCapOnMouseOver(_this, e) {
|
||||
Tooltip.showAtCursor(e, LANG.tooltip_changelevel, null, null, 'q');
|
||||
$WH.Tooltip.showAtCursor(e, LANG.tooltip_changelevel, null, null, 'q');
|
||||
}
|
||||
|
||||
function _createArrow(arrowType, width, height) {
|
||||
|
|
@ -1094,12 +1094,12 @@ function TalentCalc() {
|
|||
|
||||
g_onClick(a, _glyphClick.bind(a, slot));
|
||||
a.onmouseover = _showGlyphTooltip.bind(null, a, slot);
|
||||
a.onmousemove = Tooltip.cursorUpdate;
|
||||
a.onmouseout = Tooltip.hide;
|
||||
a.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
a.onmouseout = $WH.Tooltip.hide;
|
||||
|
||||
g_onClick(link, _glyphClick.bind(link, slot));
|
||||
link.onmouseover = _showGlyphTooltip.bind(null, link, slot);
|
||||
link.onmouseout = Tooltip.hide;
|
||||
link.onmouseout = $WH.Tooltip.hide;
|
||||
|
||||
td.oncontextmenu = $WH.rf;
|
||||
}
|
||||
|
|
@ -1210,7 +1210,7 @@ function TalentCalc() {
|
|||
link.onclick = $WH.rf;
|
||||
g_onClick(link, _iconClick.bind(link, talent));
|
||||
link.onmouseover = _showTooltip.bind(null, link, talent);
|
||||
link.onmouseout = Tooltip.hide;
|
||||
link.onmouseout = $WH.Tooltip.hide;
|
||||
|
||||
var
|
||||
border = $WH.ce('div'),
|
||||
|
|
@ -1376,8 +1376,8 @@ function TalentCalc() {
|
|||
__.href = 'javascript:;';
|
||||
__.onclick = _bonusPointsOnClick.bind(null, __);
|
||||
__.onmouseover = _bonusPointsOnMouseOver.bind(null, __);
|
||||
__.onmousemove = Tooltip.cursorUpdate;
|
||||
__.onmouseout = Tooltip.hide;
|
||||
__.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
__.onmouseout = $WH.Tooltip.hide;
|
||||
$WH.ae(_, __);
|
||||
}
|
||||
|
||||
|
|
@ -1392,8 +1392,8 @@ function TalentCalc() {
|
|||
__.href = 'javascript:;';
|
||||
__.onclick = _setLevelCapOnClick.bind(null, __);
|
||||
__.onmouseover = _setLevelCapOnMouseOver.bind(null, __);
|
||||
__.onmousemove = Tooltip.cursorUpdate;
|
||||
__.onmouseout = Tooltip.hide;
|
||||
__.onmousemove = $WH.Tooltip.cursorUpdate;
|
||||
__.onmouseout = $WH.Tooltip.hide;
|
||||
|
||||
if (!_opt.profiler) {
|
||||
$WH.ae(_, $WH.ct(' ('));
|
||||
|
|
@ -2461,13 +2461,13 @@ function TalentCalc() {
|
|||
}
|
||||
|
||||
if (glyph && _this.parentNode.className.indexOf("icon") != 0) {
|
||||
Tooltip.setIcon(glyph.icon);
|
||||
$WH.Tooltip.setIcon(glyph.icon);
|
||||
}
|
||||
else {
|
||||
Tooltip.setIcon(null);
|
||||
$WH.Tooltip.setIcon(null);
|
||||
}
|
||||
|
||||
Tooltip.show(_this, "<table><tr><td>" + upper + "</td></tr></table><table><tr><td>" + lower + "</td></tr></table>")
|
||||
$WH.Tooltip.show(_this, "<table><tr><td>" + upper + "</td></tr></table><table><tr><td>" + lower + "</td></tr></table>")
|
||||
}
|
||||
|
||||
function _showTooltip(_this, talent) {
|
||||
|
|
@ -2523,7 +2523,7 @@ function TalentCalc() {
|
|||
|
||||
buffer += '</td></tr></table>';
|
||||
|
||||
Tooltip.show(_this, $WH.g_setTooltipLevel(buffer, _getRequiredLevel()));
|
||||
$WH.Tooltip.show(_this, $WH.g_setTooltipLevel(buffer, _getRequiredLevel()));
|
||||
}
|
||||
|
||||
function _simplifyGlyphName(name) {
|
||||
|
|
|
|||
|
|
@ -1604,298 +1604,412 @@ $WH.g_staticTooltipLevelClick = function (div, level, noSlider, buff) {
|
|||
//****************************************************************************//
|
||||
|
||||
$WH.Tooltip = {
|
||||
create: function (i) {
|
||||
var g = $WH.ce("div"),
|
||||
l = $WH.ce("table"),
|
||||
b = $WH.ce("tbody"),
|
||||
f = $WH.ce("tr"),
|
||||
c = $WH.ce("tr"),
|
||||
a = $WH.ce("td"),
|
||||
k = $WH.ce("th"),
|
||||
j = $WH.ce("th"),
|
||||
h = $WH.ce("th");
|
||||
g.className = "wowhead-tooltip";
|
||||
k.style.backgroundPosition = "top right";
|
||||
j.style.backgroundPosition = "bottom left";
|
||||
h.style.backgroundPosition = "bottom right";
|
||||
if (i) {
|
||||
a.innerHTML = i
|
||||
}
|
||||
$WH.ae(f, a);
|
||||
$WH.ae(f, k);
|
||||
$WH.ae(b, f);
|
||||
$WH.ae(c, j);
|
||||
$WH.ae(c, h);
|
||||
$WH.ae(b, c);
|
||||
$WH.ae(l, b);
|
||||
$WH.Tooltip.icon = $WH.ce("p");
|
||||
$WH.Tooltip.icon.style.visibility = "hidden";
|
||||
$WH.ae($WH.Tooltip.icon, $WH.ce("div"));
|
||||
$WH.ae(g, $WH.Tooltip.icon);
|
||||
$WH.ae(g, l);
|
||||
var e = $WH.ce("div");
|
||||
e.className = "wowhead-tooltip-powered";
|
||||
$WH.ae(g, e);
|
||||
$WH.Tooltip.logo = e;
|
||||
return g
|
||||
},
|
||||
fix: function (d, b, f) {
|
||||
var e = $WH.gE(d, "table")[0],
|
||||
h = $WH.gE(e, "td")[0],
|
||||
g = h.childNodes;
|
||||
if (g.length >= 2 && g[0].nodeName == "TABLE" && g[1].nodeName == "TABLE") {
|
||||
g[0].style.whiteSpace = "nowrap";
|
||||
var a;
|
||||
if (g[1].offsetWidth > 300) {
|
||||
a = Math.max(300, g[0].offsetWidth) + 20
|
||||
} else {
|
||||
a = Math.max(g[0].offsetWidth, g[1].offsetWidth) + 20
|
||||
}
|
||||
if (a > 20) {
|
||||
d.style.width = a + "px";
|
||||
g[0].style.width = g[1].style.width = "100%";
|
||||
if (!b && d.offsetHeight > document.body.clientHeight) {
|
||||
e.className = "shrink"
|
||||
create: function(htmlTooltip, secondary) {
|
||||
var
|
||||
d = $WH.ce('div'),
|
||||
t = $WH.ce('table'),
|
||||
tb = $WH.ce('tbody'),
|
||||
tr1 = $WH.ce('tr'),
|
||||
tr2 = $WH.ce('tr'),
|
||||
td = $WH.ce('td'),
|
||||
th1 = $WH.ce('th'),
|
||||
th2 = $WH.ce('th'),
|
||||
th3 = $WH.ce('th');
|
||||
|
||||
d.className = 'tooltip';
|
||||
// d.className = 'wowhead-tooltip';
|
||||
|
||||
th1.style.backgroundPosition = 'top right';
|
||||
th2.style.backgroundPosition = 'bottom left';
|
||||
th3.style.backgroundPosition = 'bottom right';
|
||||
|
||||
if (htmlTooltip) {
|
||||
td.innerHTML = htmlTooltip;
|
||||
}
|
||||
|
||||
$WH.ae(tr1, td);
|
||||
$WH.ae(tr1, th1);
|
||||
$WH.ae(tb, tr1);
|
||||
$WH.ae(tr2, th2);
|
||||
$WH.ae(tr2, th3);
|
||||
$WH.ae(tb, tr2);
|
||||
$WH.ae(t, tb);
|
||||
|
||||
if (!secondary) {
|
||||
$WH.Tooltip.icon = $WH.ce('p');
|
||||
$WH.Tooltip.icon.style.visibility = 'hidden';
|
||||
$WH.ae($WH.Tooltip.icon, $WH.ce('div'));
|
||||
$WH.ae(d, $WH.Tooltip.icon);
|
||||
}
|
||||
|
||||
$WH.ae(d, t);
|
||||
|
||||
if (!secondary) {
|
||||
var img = $WH.ce('div');
|
||||
img.className = 'tooltip-powered';
|
||||
// img.className = 'wowheadtooltip-powered';
|
||||
$WH.ae(d, img);
|
||||
$WH.Tooltip.logo = img;
|
||||
}
|
||||
|
||||
return d;
|
||||
},
|
||||
|
||||
getMultiPartHtml: function(upper, lower) {
|
||||
return '<table><tr><td>' + upper + '</td></tr></table><table><tr><td>' + lower + '</td></tr></table>';
|
||||
},
|
||||
|
||||
fix: function(tooltip, noShrink, visible) {
|
||||
var
|
||||
table = $WH.gE(tooltip, 'table')[0],
|
||||
td = $WH.gE(table, 'td')[0],
|
||||
c = td.childNodes;
|
||||
|
||||
tooltip.className = $WH.trim(tooltip.className.replace('tooltip-slider', ''));
|
||||
|
||||
if (c.length >= 2 && c[0].nodeName == 'TABLE' && c[1].nodeName == 'TABLE') {
|
||||
c[0].style.whiteSpace = 'nowrap';
|
||||
|
||||
var m = parseInt(tooltip.style.width);
|
||||
if(!tooltip.slider || !m) {
|
||||
if (c[1].offsetWidth > 300) {
|
||||
m = Math.max(300, c[0].offsetWidth) + 20;
|
||||
}
|
||||
else {
|
||||
m = Math.max(c[0].offsetWidth, c[1].offsetWidth) + 20;
|
||||
}
|
||||
}
|
||||
|
||||
m = Math.min(320, m);
|
||||
|
||||
if (m > 20) {
|
||||
tooltip.style.width = m + 'px';
|
||||
c[0].style.width = c[1].style.width = '100%';
|
||||
|
||||
if(tooltip.slider) {
|
||||
Slider.setSize(tooltip.slider, m - 6);
|
||||
tooltip.className += ' tooltip-slider';
|
||||
}
|
||||
}
|
||||
}
|
||||
if (f) {
|
||||
d.style.visibility = "visible"
|
||||
}
|
||||
},
|
||||
fixSafe: function (c, b, a) {
|
||||
if ($WH.Browser.ie) {
|
||||
setTimeout($WH.Tooltip.fix.bind(this, c, b, a), 1)
|
||||
} else {
|
||||
$WH.Tooltip.fix(c, b, a)
|
||||
}
|
||||
},
|
||||
append: function (c, b) {
|
||||
var c = $WH.$(c);
|
||||
var a = $WH.Tooltip.create(b);
|
||||
$WH.ae(c, a);
|
||||
$WH.Tooltip.fixSafe(a, 1, 1)
|
||||
},
|
||||
prepare: function () {
|
||||
if ($WH.Tooltip.tooltip) {
|
||||
return
|
||||
}
|
||||
var b = $WH.Tooltip.create();
|
||||
b.style.position = "absolute";
|
||||
b.style.left = b.style.top = "-2323px";
|
||||
var a = $WH.ge("layers");
|
||||
if (!a) {
|
||||
a = $WH.ce("div");
|
||||
a.id = "layers";
|
||||
$WH.aef(document.body, a)
|
||||
}
|
||||
$WH.ae(a, b);
|
||||
$WH.Tooltip.tooltip = b;
|
||||
$WH.Tooltip.tooltipTable = $WH.gE(b, "table")[0];
|
||||
$WH.Tooltip.tooltipTd = $WH.gE(b, "td")[0];
|
||||
if ($WH.Browser.ie6) {
|
||||
b = $WH.ce("iframe");
|
||||
b.src = "javascript:0;";
|
||||
b.frameBorder = 0;
|
||||
if (a) {
|
||||
$WH.ae(a, b)
|
||||
} else {
|
||||
$WH.ae(document.body, b)
|
||||
}
|
||||
$WH.Tooltip.iframe = b
|
||||
}
|
||||
},
|
||||
set: function (b) {
|
||||
var a = $WH.Tooltip.tooltip;
|
||||
a.style.width = "550px";
|
||||
a.style.left = "-2323px";
|
||||
a.style.top = "-2323px";
|
||||
$WH.Tooltip.tooltipTd.innerHTML = b;
|
||||
a.style.display = "";
|
||||
$WH.Tooltip.fix(a, 0, 0)
|
||||
},
|
||||
moveTests: [[null, null], [null, false], [false, null], [false, false]],
|
||||
move: function (m, l, d, o, c, a) {
|
||||
if (!$WH.Tooltip.tooltipTable) {
|
||||
return
|
||||
}
|
||||
var k = $WH.Tooltip.tooltip,
|
||||
g = $WH.Tooltip.tooltipTable.offsetWidth,
|
||||
b = $WH.Tooltip.tooltipTable.offsetHeight,
|
||||
p;
|
||||
k.style.width = g + "px";
|
||||
var j, e;
|
||||
for (var f = 0, h = $WH.Tooltip.moveTests.length; f < h; ++f) {
|
||||
p = $WH.Tooltip.moveTests[f];
|
||||
j = $WH.Tooltip.moveTest(m, l, d, o, c, a, p[0], p[1]);
|
||||
if ($WH.isset("Ads") && !Ads.intersect(j)) {
|
||||
e = true;
|
||||
break
|
||||
} else {
|
||||
if (!$WH.isset("Ads")) {
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($WH.isset("Ads") && !e) {
|
||||
$WH.Tooltip.hiddenAd = Ads.intersect(j, true)
|
||||
}
|
||||
k.style.left = j.l + "px";
|
||||
k.style.top = j.t + "px";
|
||||
k.style.visibility = "visible";
|
||||
if ($WH.Browser.ie6 && $WH.Tooltip.iframe) {
|
||||
var p = $WH.Tooltip.iframe;
|
||||
p.style.left = j.l + "px";
|
||||
p.style.top = j.t + "px";
|
||||
p.style.width = g + "px";
|
||||
p.style.height = b + "px";
|
||||
p.style.display = "";
|
||||
p.style.visibility = "visible"
|
||||
}
|
||||
},
|
||||
moveTest: function (e, l, o, y, c, a, m, b) {
|
||||
var k = e,
|
||||
w = l,
|
||||
f = $WH.Tooltip.tooltip,
|
||||
i = $WH.Tooltip.tooltipTable.offsetWidth,
|
||||
q = $WH.Tooltip.tooltipTable.offsetHeight,
|
||||
g = $WH.g_getWindowSize(),
|
||||
j = $WH.g_getScroll(),
|
||||
h = g.w,
|
||||
p = g.h,
|
||||
d = j.x,
|
||||
v = j.y,
|
||||
u = d,
|
||||
t = v,
|
||||
s = d + h,
|
||||
r = v + p;
|
||||
if (m == null) {
|
||||
m = (e + o + i <= s)
|
||||
}
|
||||
if (b == null) {
|
||||
b = (l - q >= t)
|
||||
}
|
||||
if (m) {
|
||||
e += o + c
|
||||
} else {
|
||||
e = Math.max(e - i, u) - c
|
||||
}
|
||||
if (b) {
|
||||
l -= q + a
|
||||
} else {
|
||||
l += y + a
|
||||
}
|
||||
if (e < u) {
|
||||
e = u
|
||||
} else {
|
||||
if (e + i > s) {
|
||||
e = s - i
|
||||
}
|
||||
}
|
||||
if (l < t) {
|
||||
l = t
|
||||
} else {
|
||||
if (l + q > r) {
|
||||
l = Math.max(v, r - q)
|
||||
}
|
||||
}
|
||||
if ($WH.Tooltip.iconVisible) {
|
||||
if (k >= e - 48 && k <= e && w >= l - 4 && w <= l + 48) {
|
||||
l -= 48 - (w - l)
|
||||
}
|
||||
}
|
||||
return $WH.g_createRect(e, l, i, q)
|
||||
},
|
||||
show: function (f, e, d, b, c) {
|
||||
if ($WH.Tooltip.disabled) {
|
||||
return
|
||||
}
|
||||
if (!d || d < 1) {
|
||||
d = 1
|
||||
}
|
||||
if (!b || b < 1) {
|
||||
b = 1
|
||||
}
|
||||
if (c) {
|
||||
e = '<span class="' + c + '">' + e + "</span>"
|
||||
}
|
||||
var a = $WH.ac(f);
|
||||
$WH.Tooltip.prepare();
|
||||
$WH.Tooltip.set(e);
|
||||
$WH.Tooltip.move(a.x, a.y, f.offsetWidth, f.offsetHeight, d, b)
|
||||
},
|
||||
showAtCursor: function (d, f, c, a, b) {
|
||||
if ($WH.Tooltip.disabled) {
|
||||
return
|
||||
}
|
||||
if (!c || c < 10) {
|
||||
c = 10
|
||||
}
|
||||
if (!a || a < 10) {
|
||||
a = 10
|
||||
}
|
||||
if (b) {
|
||||
f = '<span class="' + b + '">' + f + "</span>"
|
||||
}
|
||||
d = $WH.$E(d);
|
||||
var g = $WH.g_getCursorPos(d);
|
||||
$WH.Tooltip.prepare();
|
||||
$WH.Tooltip.set(f);
|
||||
$WH.Tooltip.move(g.x, g.y, 0, 0, c, a)
|
||||
},
|
||||
showAtXY: function (d, a, e, c, b) {
|
||||
if ($WH.Tooltip.disabled) {
|
||||
return
|
||||
}
|
||||
$WH.Tooltip.prepare();
|
||||
$WH.Tooltip.set(d);
|
||||
$WH.Tooltip.move(a, e, 0, 0, c, b)
|
||||
},
|
||||
cursorUpdate: function (b, a, d) {
|
||||
if ($WH.Tooltip.disabled || !$WH.Tooltip.tooltip) {
|
||||
return
|
||||
}
|
||||
b = $WH.$E(b);
|
||||
if (!a || a < 10) {
|
||||
a = 10
|
||||
}
|
||||
if (!d || d < 10) {
|
||||
d = 10
|
||||
}
|
||||
var c = $WH.g_getCursorPos(b);
|
||||
$WH.Tooltip.move(c.x, c.y, 0, 0, a, d)
|
||||
},
|
||||
hide: function () {
|
||||
if ($WH.Tooltip.tooltip) {
|
||||
$WH.Tooltip.tooltip.style.display = "none";
|
||||
$WH.Tooltip.tooltip.visibility = "hidden";
|
||||
$WH.Tooltip.tooltipTable.className = "";
|
||||
if ($WH.Browser.ie6) {
|
||||
$WH.Tooltip.iframe.style.display = "none"
|
||||
}
|
||||
$WH.Tooltip.setIcon(null);
|
||||
if ($WH.isset("Ads") && $WH.Tooltip.hiddenAd) {
|
||||
Ads.reveal(Tooltip.hiddenAd);
|
||||
$WH.Tooltip.hiddenAd = false
|
||||
}
|
||||
}
|
||||
},
|
||||
setIcon: function (a) {
|
||||
$WH.Tooltip.prepare();
|
||||
if (a) {
|
||||
$WH.Tooltip.icon.style.backgroundImage = "url(" + g_staticUrl + "/images/icons/medium/" + a.toLowerCase() + ".jpg)";
|
||||
$WH.Tooltip.icon.style.visibility = "visible"
|
||||
} else {
|
||||
$WH.Tooltip.icon.style.backgroundImage = "none";
|
||||
$WH.Tooltip.icon.style.visibility = "hidden"
|
||||
}
|
||||
$WH.Tooltip.iconVisible = a ? 1 : 0
|
||||
}
|
||||
|
||||
if (!noShrink && tooltip.offsetHeight > document.body.clientHeight) {
|
||||
table.className = 'shrink';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (visible) {
|
||||
tooltip.style.visibility = 'visible';
|
||||
}
|
||||
},
|
||||
|
||||
fixSafe: function(p1, p2, p3) {
|
||||
$WH.Tooltip.fix(p1, p2, p3);
|
||||
},
|
||||
|
||||
append: function(el, htmlTooltip) {
|
||||
var el = $WH.ge(el);
|
||||
var tooltip = $WH.Tooltip.create(htmlTooltip);
|
||||
$WH.ae(el, tooltip);
|
||||
|
||||
$WH.Tooltip.fixSafe(tooltip, 1, 1);
|
||||
},
|
||||
|
||||
prepare: function() {
|
||||
if ($WH.Tooltip.tooltip) {
|
||||
return;
|
||||
}
|
||||
|
||||
var _ = $WH.Tooltip.create();
|
||||
_.style.position = 'absolute';
|
||||
_.style.left = _.style.top = '-2323px';
|
||||
|
||||
$WH.ae(document.body, _);
|
||||
|
||||
$WH.Tooltip.tooltip = _;
|
||||
$WH.Tooltip.tooltipTable = $WH.gE(_, 'table')[0];
|
||||
$WH.Tooltip.tooltipTd = $WH.gE(_, 'td')[0];
|
||||
|
||||
var _ = $WH.Tooltip.create(null, true);
|
||||
_.style.position = 'absolute';
|
||||
_.style.left = _.style.top = '-2323px';
|
||||
|
||||
$WH.ae(document.body, _);
|
||||
|
||||
$WH.Tooltip.tooltip2 = _;
|
||||
$WH.Tooltip.tooltipTable2 = $WH.gE(_, 'table')[0];
|
||||
$WH.Tooltip.tooltipTd2 = $WH.gE(_, 'td')[0];
|
||||
},
|
||||
|
||||
set: function(text, text2) {
|
||||
var _ = $WH.Tooltip.tooltip;
|
||||
|
||||
_.style.width = '550px';
|
||||
_.style.left = '-2323px';
|
||||
_.style.top = '-2323px';
|
||||
|
||||
if (text.nodeName) {
|
||||
$WH.ee($WH.Tooltip.tooltipTd);
|
||||
$WH.ae($WH.Tooltip.tooltipTd, text);
|
||||
}
|
||||
else {
|
||||
$WH.Tooltip.tooltipTd.innerHTML = text;
|
||||
}
|
||||
|
||||
_.style.display = '';
|
||||
|
||||
$WH.Tooltip.fix(_, 0, 0);
|
||||
|
||||
if (text2) {
|
||||
$WH.Tooltip.showSecondary = true;
|
||||
var _ = $WH.Tooltip.tooltip2;
|
||||
|
||||
_.style.width = '550px';
|
||||
_.style.left = '-2323px';
|
||||
_.style.top = '-2323px';
|
||||
|
||||
if (text2.nodeName) {
|
||||
$WH.ee($WH.Tooltip.tooltipTd2);
|
||||
$WH.ae($WH.Tooltip.tooltipTd2, text2);
|
||||
}
|
||||
else {
|
||||
$WH.Tooltip.tooltipTd2.innerHTML = text2;
|
||||
}
|
||||
|
||||
_.style.display = '';
|
||||
|
||||
$WH.Tooltip.fix(_, 0, 0);
|
||||
}
|
||||
else {
|
||||
$WH.Tooltip.showSecondary = false;
|
||||
}
|
||||
},
|
||||
|
||||
moveTests: [
|
||||
[null, null], // Top right
|
||||
[null, false], // Bottom right
|
||||
[false, null], // Top left
|
||||
[false, false] // Bottom left
|
||||
],
|
||||
|
||||
move: function(x, y, width, height, paddX, paddY) {
|
||||
if (!$WH.Tooltip.tooltipTable) {
|
||||
return;
|
||||
}
|
||||
|
||||
var
|
||||
tooltip = $WH.Tooltip.tooltip,
|
||||
tow = $WH.Tooltip.tooltipTable.offsetWidth,
|
||||
toh = $WH.Tooltip.tooltipTable.offsetHeight,
|
||||
tt2 = $WH.Tooltip.tooltip2,
|
||||
tt2w = $WH.Tooltip.showSecondary ? $WH.Tooltip.tooltipTable2.offsetWidth : 0,
|
||||
tt2h = $WH.Tooltip.showSecondary ? $WH.Tooltip.tooltipTable2.offsetHeight : 0,
|
||||
_;
|
||||
|
||||
tooltip.style.width = tow + 'px';
|
||||
tt2.style.width = tt2w + 'px';
|
||||
|
||||
var
|
||||
rect,
|
||||
safe;
|
||||
|
||||
for (var i = 0, len = $WH.Tooltip.moveTests.length; i < len; ++i) {
|
||||
_ = $WH.Tooltip.moveTests[i];
|
||||
|
||||
rect = $WH.Tooltip.moveTest(x, y, width, height, paddX, paddY, _[0], _[1]);
|
||||
break;
|
||||
}
|
||||
|
||||
tooltip.style.left = rect.l + 'px';
|
||||
tooltip.style.top = rect.t + 'px';
|
||||
tooltip.style.visibility = 'visible';
|
||||
|
||||
if ($WH.Tooltip.showSecondary) {
|
||||
tt2.style.left = rect.l + tow + 'px';
|
||||
tt2.style.top = rect.t + 'px';
|
||||
tt2.style.visibility = 'visible';
|
||||
}
|
||||
},
|
||||
|
||||
moveTest: function(left, top, width, height, paddX, paddY, rightAligned, topAligned) {
|
||||
var
|
||||
bakLeft = left,
|
||||
bakTop = top,
|
||||
tooltip = $WH.Tooltip.tooltip,
|
||||
tow = $WH.Tooltip.tooltipTable.offsetWidth,
|
||||
toh = $WH.Tooltip.tooltipTable.offsetHeight,
|
||||
tt2 = $WH.Tooltip.tooltip2,
|
||||
tt2w = $WH.Tooltip.showSecondary ? $WH.Tooltip.tooltipTable2.offsetWidth : 0,
|
||||
tt2h = $WH.Tooltip.showSecondary ? $WH.Tooltip.tooltipTable2.offsetHeight : 0,
|
||||
winSize = $WH.g_getWindowSize(),
|
||||
scroll = $WH.g_getScroll(),
|
||||
bcw = winSize.w,
|
||||
bch = winSize.h,
|
||||
bsl = scroll.x,
|
||||
bst = scroll.y,
|
||||
minX = bsl,
|
||||
minY = bst,
|
||||
maxX = bsl + bcw,
|
||||
maxY = bst + bch;
|
||||
|
||||
if (rightAligned == null) {
|
||||
rightAligned = (left + width + tow + tt2w <= maxX);
|
||||
}
|
||||
|
||||
if (topAligned == null) {
|
||||
topAligned = (top - Math.max(toh, tt2h) >= minY);
|
||||
}
|
||||
|
||||
if (rightAligned) {
|
||||
left += width + paddX;
|
||||
}
|
||||
else {
|
||||
left = Math.max(left - (tow + tt2w), minX) - paddX;
|
||||
}
|
||||
|
||||
if (topAligned) {
|
||||
top -= Math.max(toh, tt2h) + paddY;
|
||||
}
|
||||
else {
|
||||
top += height + paddY;
|
||||
}
|
||||
|
||||
if (left < minX) {
|
||||
left = minX;
|
||||
}
|
||||
else if (left + tow + tt2w > maxX) {
|
||||
left = maxX - (tow + tt2w);
|
||||
}
|
||||
|
||||
if (top < minY) {
|
||||
top = minY;
|
||||
}
|
||||
else if (top + Math.max(toh, tt2h) > maxY) {
|
||||
top = Math.max(bst, maxY - Math.max(toh, tt2h));
|
||||
}
|
||||
|
||||
if ($WH.Tooltip.iconVisible) {
|
||||
if (bakLeft >= left - 48 && bakLeft <= left && bakTop >= top - 4 && bakTop <= top + 48) {
|
||||
top -= 48 - (bakTop - top);
|
||||
}
|
||||
}
|
||||
|
||||
return $WH.g_createRect(left, top, tow, toh);
|
||||
},
|
||||
|
||||
show: function(_this, text, paddX, paddY, spanClass, text2) {
|
||||
if ($WH.Tooltip.disabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!paddX || paddX < 1) {
|
||||
paddX = 1;
|
||||
}
|
||||
|
||||
if (!paddY || paddY < 1) {
|
||||
paddY = 1;
|
||||
}
|
||||
|
||||
if (spanClass) {
|
||||
text = '<span class="' + spanClass + '">' + text + '</span>';
|
||||
}
|
||||
|
||||
var coords = $WH.ac(_this);
|
||||
|
||||
$WH.Tooltip.prepare();
|
||||
$WH.Tooltip.set(text, text2);
|
||||
$WH.Tooltip.move(coords.x, coords.y, _this.offsetWidth, _this.offsetHeight, paddX, paddY);
|
||||
},
|
||||
|
||||
showAtCursor: function(e, text, paddX, paddY, spanClass, text2) {
|
||||
if ($WH.Tooltip.disabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!paddX || paddX < 10) {
|
||||
paddX = 10;
|
||||
}
|
||||
if (!paddY || paddY < 10) {
|
||||
paddY = 10;
|
||||
}
|
||||
|
||||
if (spanClass) {
|
||||
text = '<span class="' + spanClass + '">' + text + '</span>';
|
||||
if (text2) {
|
||||
text2 = '<span class="' + spanClass + '">' + text2 + '</span>';
|
||||
}
|
||||
}
|
||||
|
||||
e = $WH.$E(e);
|
||||
var pos = $WH.g_getCursorPos(e);
|
||||
|
||||
$WH.Tooltip.prepare();
|
||||
$WH.Tooltip.set(text, text2);
|
||||
$WH.Tooltip.move(pos.x, pos.y, 0, 0, paddX, paddY);
|
||||
},
|
||||
|
||||
showAtXY: function(text, x, y, paddX, paddY, text2) {
|
||||
if ($WH.Tooltip.disabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
$WH.Tooltip.prepare();
|
||||
$WH.Tooltip.set(text, text2);
|
||||
$WH.Tooltip.move(x, y, 0, 0, paddX, paddY);
|
||||
},
|
||||
|
||||
cursorUpdate: function(e, x, y) { // Used along with showAtCursor
|
||||
if ($WH.Tooltip.disabled || !$WH.Tooltip.tooltip) {
|
||||
return;
|
||||
}
|
||||
|
||||
e = $WH.$E(e);
|
||||
|
||||
if (!x || x < 10) {
|
||||
x = 10;
|
||||
}
|
||||
if (!y || y < 10) {
|
||||
y = 10;
|
||||
}
|
||||
|
||||
var pos = $WH.g_getCursorPos(e);
|
||||
$WH.Tooltip.move(pos.x, pos.y, 0, 0, x, y);
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
if ($WH.Tooltip.tooltip) {
|
||||
$WH.Tooltip.tooltip.style.display = 'none';
|
||||
$WH.Tooltip.tooltip.visibility = 'hidden';
|
||||
$WH.Tooltip.tooltipTable.className = '';
|
||||
|
||||
$WH.Tooltip.setIcon(null);
|
||||
}
|
||||
|
||||
if ($WH.Tooltip.tooltip2) {
|
||||
$WH.Tooltip.tooltip2.style.display = 'none';
|
||||
$WH.Tooltip.tooltip2.visibility = 'hidden';
|
||||
$WH.Tooltip.tooltipTable2.className = '';
|
||||
}
|
||||
},
|
||||
|
||||
setIcon: function(icon) {
|
||||
$WH.Tooltip.prepare();
|
||||
|
||||
if (icon) {
|
||||
$WH.Tooltip.icon.style.backgroundImage = 'url(images/icons/medium/' + icon.toLowerCase() + '.jpg)';
|
||||
$WH.Tooltip.icon.style.visibility = 'visible';
|
||||
}
|
||||
else {
|
||||
$WH.Tooltip.icon.style.backgroundImage = 'none';
|
||||
$WH.Tooltip.icon.style.visibility = 'hidden';
|
||||
}
|
||||
|
||||
$WH.Tooltip.iconVisible = icon ? 1 : 0;
|
||||
}
|
||||
};
|
||||
|
||||
if ($WH.isset("$WowheadPower")) {
|
||||
$WowheadPower.init()
|
||||
};
|
||||
if ($WH.isset('$WowheadPower')) {
|
||||
$WowheadPower.init();
|
||||
}
|
||||
|
||||
$WH.g_getProfileIcon = function(raceId, classId, gender, level, icon, size) {
|
||||
var raceXclass = {
|
||||
|
|
|
|||
|
|
@ -837,13 +837,19 @@ var mn_tools = [
|
|||
]],
|
||||
[8,"Hilfsmittel",,[
|
||||
[,"Datenbank"],
|
||||
[4,"Zufällige Seite","?random"],
|
||||
[0,"Neueste Ergänzungen","?latest-additions"],
|
||||
[1,"Neueste Artikel","?latest-articles"],
|
||||
[2,"Neueste Kommentare","?latest-comments"],
|
||||
[3,"Neueste Screenshots","?latest-screenshots"],
|
||||
[11,"Neueste Videos","?latest-videos"],
|
||||
[2,"Neueste Kommentare","?latest-comments"],
|
||||
[12,"Meiste Kommentare",,[
|
||||
[1,"Gestern","?most-comments"],
|
||||
[7,"Vergangene 7 Tage","?most-comments=7"],
|
||||
[30,"Vergangene 30 Tage","?most-comments=30"]
|
||||
]],
|
||||
[5,"Nicht bewertete Kommentare","?unrated-comments"],
|
||||
[13,"Fehlende Screenshots","?missing-screenshots"],
|
||||
[4,"Zufällige Seite","?random"]
|
||||
]]
|
||||
];
|
||||
var mn_community = [
|
||||
|
|
@ -3718,30 +3724,30 @@ var LANG = {
|
|||
|
||||
pr_dialog_level: "Stufe: ",
|
||||
|
||||
menu_charlookup: "Nach Namen suchen...",
|
||||
menu_newprofile: "Neues individuelles Profil",
|
||||
menu_chooseclassspec: "Wählt Eure Klasse/Spezialisierung",
|
||||
menu_charlookup: "Nach Namen suchen...",
|
||||
menu_newprofile: "Neues individuelles Profil",
|
||||
menu_chooseclassspec: "Wählt Eure Klasse/Spezialisierung",
|
||||
|
||||
pr_selectregion: "Wählt eine Region",
|
||||
|
||||
pr_menu_equip: "Anlegen...",
|
||||
pr_menu_replace: "Ersetzen...",
|
||||
pr_menu_add: "Hinzufügen...",
|
||||
pr_menu_unequip: "Ablegen",
|
||||
pr_menu_remove: "Entfernen",
|
||||
pr_menu_addgem: "Edelstein hinzufügen...",
|
||||
pr_menu_repgem: "Edelstein ersetzen...",
|
||||
pr_menu_addenchant: "Verzauberung hinzufügen...",
|
||||
pr_menu_repenchant: "Verzauberung ersetzen...",
|
||||
pr_menu_addsubitem: "Zufällige Eigenschaft hinzufügen",
|
||||
pr_menu_repsubitem: "Zufällige Eigenschaft ersetzen",
|
||||
pr_menu_extrasock: "Zusätzlicher Sockel",
|
||||
pr_menu_display: "Vorschau",
|
||||
pr_menu_clearenh: "Verbesserungen entfernen",
|
||||
pr_menu_links: "Links",
|
||||
pr_menu_compare: "Vergleichen",
|
||||
pr_menu_upgrades: "Bessere Gegenstände finden",
|
||||
pr_menu_whowears: "Wer trägt dies?",
|
||||
pr_menu_equip: "Anlegen...",
|
||||
pr_menu_replace: "Ersetzen...",
|
||||
pr_menu_add: "Hinzufügen...",
|
||||
pr_menu_unequip: "Ablegen",
|
||||
pr_menu_remove: "Entfernen",
|
||||
pr_menu_addgem: "Edelstein hinzufügen...",
|
||||
pr_menu_repgem: "Edelstein ersetzen...",
|
||||
pr_menu_addenchant: "Verzauberung hinzufügen...",
|
||||
pr_menu_repenchant: "Verzauberung ersetzen...",
|
||||
pr_menu_addsubitem: "Zufällige Eigenschaft hinzufügen",
|
||||
pr_menu_repsubitem: "Zufällige Eigenschaft ersetzen",
|
||||
pr_menu_extrasock: "Zusätzlicher Sockel",
|
||||
pr_menu_display: "Vorschau",
|
||||
pr_menu_clearenh: "Verbesserungen entfernen",
|
||||
pr_menu_links: "Links",
|
||||
pr_menu_compare: "Vergleichen",
|
||||
pr_menu_upgrades: "Bessere Gegenstände finden",
|
||||
pr_menu_whowears: "Wer trägt dies?",
|
||||
|
||||
pr_noneitem: "Nichts",
|
||||
pr_nonegem: "Nichts",
|
||||
|
|
|
|||
|
|
@ -881,15 +881,21 @@ var mn_tools = [
|
|||
["pilgrims-bounty","Pilgrim's Bounty","?guide=pilgrims-bounty"],
|
||||
["winter-veil","Feast of Winter Veil","?guide=winter-veil"]
|
||||
]],
|
||||
[8,"Utilities","",[
|
||||
[8,"Utilities",,[
|
||||
[,"Database"],
|
||||
[4,"Random Page","?random"],
|
||||
[0,"Latest Additions","?latest-additions"],
|
||||
[1,"Latest Articles","?latest-articles"],
|
||||
[3,"Latest Screenshots","?latest-screenshots"],
|
||||
[11,"Latest Vídeos","?latest-videos"],
|
||||
[2,"Latest Comments","?latest-comments"],
|
||||
[5,"Unrated Comments","?unrated-comments"]
|
||||
[3,"Latest Screenshots","?latest-screenshots"],
|
||||
[11,"Latest Videos","?latest-videos"],
|
||||
[12,"Most Comments",,[
|
||||
[1,"Yesterday","?most-comments"],
|
||||
[7,"Past 7 Days","?most-comments=7"],
|
||||
[30,"Past 30 Days","?most-comments=30"]
|
||||
]],
|
||||
[5,"Unrated Comments","?unrated-comments"],
|
||||
[13,"Missing Screenshots","?missing-screenshots"],
|
||||
[4,"Random Page","?random"]
|
||||
]]
|
||||
];
|
||||
var mn_community = [
|
||||
|
|
@ -3763,30 +3769,30 @@ var LANG = {
|
|||
|
||||
pr_dialog_level: "Level:",
|
||||
|
||||
menu_charlookup: "Lookup by name...",
|
||||
menu_newprofile: "New Custom Profile",
|
||||
menu_chooseclassspec: "Choose Your Class/Spec",
|
||||
menu_charlookup: "Lookup by name...",
|
||||
menu_newprofile: "New Custom Profile",
|
||||
menu_chooseclassspec: "Choose Your Class/Spec",
|
||||
|
||||
pr_selectregion: "Select a region",
|
||||
|
||||
pr_menu_equip: "Equip...",
|
||||
pr_menu_replace: "Replace...",
|
||||
pr_menu_add: "Add...",
|
||||
pr_menu_unequip: "Unequip",
|
||||
pr_menu_remove: "Remove",
|
||||
pr_menu_addgem: "Add Gem...",
|
||||
pr_menu_repgem: "Replace Gem...",
|
||||
pr_menu_addenchant: "Add Enchant...",
|
||||
pr_menu_repenchant: "Replace Enchant...",
|
||||
pr_menu_addsubitem: "Add Random Property...",
|
||||
pr_menu_repsubitem: "Replace Random Property...",
|
||||
pr_menu_extrasock: "Extra Socket",
|
||||
pr_menu_display: "Display on Character",
|
||||
pr_menu_clearenh: "Clear Enhancements",
|
||||
pr_menu_links: "Links",
|
||||
pr_menu_compare: "Compare",
|
||||
pr_menu_upgrades: "Find Upgrades",
|
||||
pr_menu_whowears: "Who Wears This?",
|
||||
pr_menu_equip: "Equip...",
|
||||
pr_menu_replace: "Replace...",
|
||||
pr_menu_add: "Add...",
|
||||
pr_menu_unequip: "Unequip",
|
||||
pr_menu_remove: "Remove",
|
||||
pr_menu_addgem: "Add Gem...",
|
||||
pr_menu_repgem: "Replace Gem...",
|
||||
pr_menu_addenchant: "Add Enchant...",
|
||||
pr_menu_repenchant: "Replace Enchant...",
|
||||
pr_menu_addsubitem: "Add Random Property...",
|
||||
pr_menu_repsubitem: "Replace Random Property...",
|
||||
pr_menu_extrasock: "Extra Socket",
|
||||
pr_menu_display: "Display on Character",
|
||||
pr_menu_clearenh: "Clear Enhancements",
|
||||
pr_menu_links: "Links",
|
||||
pr_menu_compare: "Compare",
|
||||
pr_menu_upgrades: "Find Upgrades",
|
||||
pr_menu_whowears: "Who Wears This?",
|
||||
|
||||
pr_noneitem: "None",
|
||||
pr_nonegem: "None",
|
||||
|
|
|
|||
|
|
@ -837,13 +837,19 @@ var mn_tools = [
|
|||
]],
|
||||
[8,"Utilidades",,[
|
||||
[,"Base de datos"],
|
||||
[4,"Página aleatoria","?random"],
|
||||
[0,"Últimas adiciones","?latest-additions"],
|
||||
[1,"Últimos artículos","?latest-articles"],
|
||||
[2,"Últimos comentarios","?latest-comments"],
|
||||
[3,"Últimas capturas de pantalla","?latest-screenshots"],
|
||||
[11,"Últimos vídeos","?latest-videos"],
|
||||
[2,"Últimos comentarios","?latest-comments"],
|
||||
[5,"Comentarios sin valorar","?unrated-comments"]
|
||||
[12,"Mayoría de comentarios",,[
|
||||
[1,"Ayer","?most-comments"],
|
||||
[7,"Pasados 7 días","?most-comments=7"],
|
||||
[30,"Pasados 30 días","?most-comments=30"]
|
||||
]],
|
||||
[5,"Comentarios sin valorar","?unrated-comments"],
|
||||
[13,"Capturas de pantalla faltantes","?missing-screenshots"],
|
||||
[4,"Página aleatoria","?random"]
|
||||
]]
|
||||
];
|
||||
var mn_community = [
|
||||
|
|
|
|||
|
|
@ -837,13 +837,19 @@ var mn_tools = [
|
|||
]],
|
||||
[8,"Utilitaires",,[
|
||||
[,"Base de données"],
|
||||
[4,"Page au hasard","?random"],
|
||||
[0,"Derniers ajouts","?latest-additions"],
|
||||
[1,"Derniers articles","?latest-articles"],
|
||||
[2,"Derniers commentaires","?latest-comments"],
|
||||
[3,"Dernières captures d'écran","?latest-screenshots"],
|
||||
[11,"Derniers vidéos","?latest-videos"],
|
||||
[2,"Derniers commentaires","?latest-comments"],
|
||||
[5,"Commentaire sans note","?unrated-comments"]
|
||||
[12,"Le plus de commentaires",,[
|
||||
[1,"Hier","?most-comments"],
|
||||
[7,"Derniers 7 jours","?most-comments=7"],
|
||||
[30,"Derniers 30 jours","?most-comments=30"]
|
||||
]],
|
||||
[5,"Commentaire sans note","?unrated-comments"],
|
||||
[13,"Captures d'écrans manquantes","?missing-screenshots"],
|
||||
[4,"Page au hasard","?random"]
|
||||
]]
|
||||
];
|
||||
var mn_community = [
|
||||
|
|
|
|||
|
|
@ -837,13 +837,19 @@ var mn_tools = [
|
|||
]],
|
||||
[8,"Дополнительно",,[
|
||||
[,"База данных"],
|
||||
[4,"Случайная страница","?random"],
|
||||
[0,"Новые добавления","?latest-additions"],
|
||||
[0,"Последние добавления","?latest-additions"],
|
||||
[1,"Новые статьи","?latest-articles"],
|
||||
[3,"Новые изображения","?latest-screenshots"],
|
||||
[2,"Последние комментарии","?latest-comments"],
|
||||
[3,"Последние изображения","?latest-screenshots"],
|
||||
[11,"Последние видео","?latest-videos"],
|
||||
[2,"Новые комментарии","?latest-comments"],
|
||||
[5,"Комментарии без оценки","?unrated-comments"]
|
||||
[12,"Популярные комментируемые",,[
|
||||
[1,"Вчера","?most-comments"],
|
||||
[7,"Последние 7 дней","?most-comments=7"],
|
||||
[30,"Последние 30 дней","?most-comments=30"]
|
||||
]],
|
||||
[5,"Комментарии без оценки","?unrated-comments"],
|
||||
[13,"Без изображений","?missing-screenshots"],
|
||||
[4,"Случайная страница","?random"]
|
||||
]]
|
||||
];
|
||||
var mn_community = [
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ function pc_init() {
|
|||
|
||||
link.onclick = pc_classClick.bind(link, classId);
|
||||
link.onmouseover = pc_classOver.bind(link, classId);
|
||||
link.onmouseout = Tooltip.hide;
|
||||
link.onmouseout = $WH.Tooltip.hide;
|
||||
|
||||
$WH.ae(div, icon);
|
||||
}
|
||||
|
|
@ -63,14 +63,14 @@ function pc_init() {
|
|||
|
||||
function pc_classClick(classId) {
|
||||
if (pc_object.setClass(classId)) {
|
||||
Tooltip.hide();
|
||||
$WH.Tooltip.hide();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function pc_classOver(classId) {
|
||||
Tooltip.show(this, '<b>' + g_pet_families[classId] + '</b>');
|
||||
$WH.Tooltip.show(this, '<b>' + g_pet_families[classId] + '</b>');
|
||||
}
|
||||
|
||||
function pc_onChange(tc, info, data) {
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ function tc_init() {
|
|||
|
||||
link.onclick = tc_classClick.bind(link, classId);
|
||||
link.onmouseover = tc_classOver.bind(link, classId);
|
||||
link.onmouseout = Tooltip.hide;
|
||||
link.onmouseout = $WH.Tooltip.hide;
|
||||
|
||||
$WH.ae(_, icon);
|
||||
}
|
||||
|
|
@ -54,14 +54,14 @@ function tc_init() {
|
|||
|
||||
function tc_classClick(classId) {
|
||||
if (tc_object.setClass(classId)) {
|
||||
Tooltip.hide();
|
||||
$WH.Tooltip.hide();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function tc_classOver(classId) {
|
||||
Tooltip.show(this, '<b>' + g_chr_classes[classId] + '</b>', 0, 0, 'c' + classId);
|
||||
$WH.Tooltip.show(this, '<b>' + g_chr_classes[classId] + '</b>', 0, 0, 'c' + classId);
|
||||
}
|
||||
|
||||
function tc_onChange(tc, info, data) {
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
g_initPath({$page.path});
|
||||
//]]></script>
|
||||
|
||||
{include file='bricks/infobox.tpl'}
|
||||
{include file='bricks/infobox.tpl' info=$lvData.infobox}
|
||||
|
||||
<div class="text">
|
||||
<a href="javascript:;" id="open-links-button" class="button-red" onclick="this.blur(); Links.show({ldelim} type: 9, typeId: {$lvData.page.id} {rdelim});"><em><b><i>{$lang.links}</i></b><span>{$lang.links}</span></em></a>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<h1>{$lang.foundResult} <i>{$search|escape:"html"}</i></h1>
|
||||
</div>
|
||||
<div id="tabs-generic"></div>
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<div id="lv-generic" class="listview"></div>
|
||||
<script type="text/javascript">
|
||||
var myTabs = new Tabs({ldelim}parent: $WH.ge('tabs-generic'){rdelim});
|
||||
{foreach from=$found item="f"}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
g_initPath({$page.path});
|
||||
</script>
|
||||
|
||||
{include file='bricks/infobox.tpl'}
|
||||
{include file='bricks/infobox.tpl' info=$lvData.infobox}
|
||||
|
||||
</table>
|
||||
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
|
||||
<script type="text/javascript">
|
||||
$WH.ge('headicon-generic').appendChild(Icon.create('{$lvData.page.icon}', 2, 0, 0, {$lvData.page.stack}));
|
||||
Tooltip.fix($WH.ge('tooltip{$lvData.page.id}-generic'), 1, 1);
|
||||
$WH.Tooltip.fix($WH.ge('tooltip{$lvData.page.id}-generic'), 1, 1);
|
||||
</script>
|
||||
|
||||
{if !empty($lvData.page.buff)}
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
<table><tr><td>{$lvData.page.buff}</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>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
Tooltip.fixSafe($WH.ge('btt{$lvData.page.id}'), 1, 1)
|
||||
$WH.Tooltip.fixSafe($WH.ge('btt{$lvData.page.id}'), 1, 1)
|
||||
</script>
|
||||
{/if}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
<table><tr>
|
||||
<td> <input type="text" name="na" size="30" {if isset($filter.na)}value="{$filter.na|escape:'html'}"{/if}/></td>
|
||||
<td> <input type="checkbox" name="ex" value="on" id="spell-ex" {if isset($filter.ex)}checked="checked"{/if}/></td>
|
||||
<td><label for="spell-ex"><span class="tip" onmouseover="Tooltip.showAtCursor(event, LANG.tooltip_extendedspellsearch, 0, 0, 'q')" onmousemove="Tooltip.cursorUpdate(event)" onmouseout="Tooltip.hide()">{$lang.extSearch}</span></label></td>
|
||||
<td><label for="spell-ex"><span class="tip" onmouseover="$WH.Tooltip.showAtCursor(event, LANG.tooltip_extendedspellsearch, 0, 0, 'q')" onmousemove="$WH.Tooltip.cursorUpdate(event)" onmouseout="$WH.Tooltip.hide()">{$lang.extSearch}</span></label></td>
|
||||
</tr></table>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
@ -128,7 +128,7 @@
|
|||
{if isset($filter.setCr)}{$filter.setCr}{/if}
|
||||
//]]></script>
|
||||
|
||||
<div id="listview-generic" class="listview"></div>
|
||||
<div id="lv-generic" class="listview"></div>
|
||||
<script type="text/javascript">//<![CDATA[
|
||||
{include file='bricks/listviews/spell.tpl' data=$lvData.data params=$lvData.params}
|
||||
//]]></script>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
g_initPath({$page.path});
|
||||
//]]></script>
|
||||
|
||||
{include file='bricks/infobox.tpl'}
|
||||
{include file='bricks/infobox.tpl' info=$lvData.infobox}
|
||||
|
||||
<div class="text">
|
||||
<a href="javascript:;" id="open-links-button" class="button-red" onclick="this.blur(); Links.show({ldelim} type: 11, typeId: {$page.typeId} {rdelim});"><em><b><i>{$lang.links}</i></b><span>{$lang.links}</span></em></a>
|
||||
|
|
|
|||