zones-listview: working draft

This commit is contained in:
Sarjuuk
2013-05-21 23:14:25 +02:00
parent 8b7ca25f08
commit 5f2cd9efec
20 changed files with 2722 additions and 1249 deletions

164
includes/class.zone.php Normal file
View File

@@ -0,0 +1,164 @@
<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
/*
areatable: discarded Ids
unused: 276, 296, 1579, 2280, 3459, 3817, 208, 4076
*/
class ZoneList extends BaseType
{
protected $setupQuery = 'SELECT *, id AS ARRAY_KEY FROM ?_zones z WHERE [cond] ORDER BY Id ASC';
protected $matchQuery = 'SELECT COUNT(1) FROM ?_zones WHERE [cond]';
// public function __construct($data)
// {
// parent::__construct($data);
// // post processing
// while ($this->iterate())
// {
// // preparse sources
// if (!empty($this->curTpl['source']))
// {
// $sources = explode(' ', $this->curTpl['source']);
// foreach ($sources as $src)
// {
// $src = explode(':', $src);
// $this->sources[$this->id][$src[0]][] = $src[1];
// }
// }
// }
// $this->reset(); // push first element back for instant use
// }
public function getListviewData()
{
$data = [];
/*
LFG_TYPE_NONE = 0, // Internal use only
LFG_TYPE_DUNGEON = 1,
LFG_TYPE_RAID = 2,
LFG_TYPE_QUEST = 3,
LFG_TYPE_ZONE = 4,
LFG_TYPE_HEROIC = 5,
LFG_TYPE_RANDOM = 6
CREATE TABLE `aowow_zones` (
`id` mediumint(8) UNSIGNED NOT NULL COMMENT 'Zone Id' ,
`mapId` mediumint(8) UNSIGNED NOT NULL COMMENT 'Map Identifier' ,
`category` smallint(6) NOT NULL ,
`flags` int(11) NOT NULL ,
`faction` tinyint(2) NOT NULL ,
`expansion` tinyint(2) NOT NULL ,
`type` tinyint(2) UNSIGNED NOT NULL ,
`maxPlayer` smallint(6) NOT NULL ,
`levelReq` smallint(6) NOT NULL ,
`levelReqLFG` smallint(6) NOT NULL ,
`levelHeroic` smallint(6) NOT NULL ,
`levelMax` smallint(6) NOT NULL ,
`levelMin` smallint(6) NOT NULL ,
`name_loc0` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`name_loc2` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`name_loc3` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`name_loc6` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`name_loc8` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;
var g_zone_categories = {
0: "Eastern Kingdoms", // areaTable.map == 0 AND
1: "Kalimdor", // areaTable.map == 1 AND
2: "Dungeons", // map.areaType == 1
3: "Raids", // map.areaType == 2
6: "Battlegrounds", // map.areaType == 3
8: "Outland", // areaTable.map == 530 AND
9: "Arenas" // map.areaType == 4
10: "Northrend", // areaTable.map == 571 AND
};
var g_zone_instancetypes = {
1: "Transit", // [manual]
2: "Dungeon",
3: "Raid", // Classic
4: "Battleground", // map.isBattleground
5: "Dungeon", // Heroic
6: "Arena", // map.areaType == 4
7: "Raid", // 10-25
8: "Raid" // 10-25 Heroic
};
var g_zone_territories = {
0: "Alliance", // areaTable.factionGroupMask == 2
1: "Horde", // areaTable.factionGroupMask == 4
2: "Contested", // areaTable.factionGroupMask == 6
3: "Sanctuary", // areaTable.flags & AREA_FLAG_SANCTUARY
4: "PvP", // map.areaType IN [3, 4]
5: "World PvP" // areaTable.flags & AREA_FLAG_WINTERGRASP
};
visibleCols: ['heroiclevel', 'players']
"id":5004, // areaTable.Id
"category":2, // s.o
"expansion":3, // lfgDungeons.expansion || map.expansion
"territory":2, // s.o.
"instance":5, // s.o.
"nplayers":5, // map.maxPlayers
"reqlevel":77, // access_requirement.level_min
"heroicLevel":85, // access_requirement.level_min
"lfgReqLevel":80, // lfgDungeons.targetLevel
"maxlevel":82, // lfgDungeons.levelMin
"minlevel":80, // lfgDungeons.levelMax
"name":"Abyssal Maw: Throne of the Tides", // areaTable.name_X
*/
while ($this->iterate())
{
$data[$this->id] = array(
'id' => $this->id,
'category' => $this->curTpl['category'],
'territory' => $this->curTpl['faction'],
'minlevel' => $this->curTpl['levelMin'],
'maxlevel' => $this->curTpl['levelMax'],
'name' => $this->getField('name', true)
);
if ($_ = $this->curTpl['expansion'])
$data[$this->id]['expansion'] = $_;
if ($_ = $this->curTpl['type'])
$data[$this->id]['instance'] = $_;
if ($_ = $this->curTpl['maxPlayer'])
$data[$this->id]['nplayers'] = $_;
if ($_ = $this->curTpl['levelReq'])
$data[$this->id]['reqlevel'] = $_;
if ($_ = $this->curTpl['levelReqLFG'])
$data[$this->id]['lfgReqLevel'] = $_;
if ($_ = $this->curTpl['levelHeroic'])
$data[$this->id]['heroicLevel'] = $_;
}
return $data;
}
public function addGlobalsToJscript(&$refs)
{
if (!isset($refs['gZones']))
$refs['gZones'] = [];
while ($this->iterate())
$refs['gZones'][$this->id]['name'] = Util::jsEscape($this->getField('name', true));
}
public function addRewardsToJScript(&$ref) { }
public function renderTooltip() { }
}
?>

View File

@@ -115,6 +115,9 @@ $lang = array(
'spell' => "Zauber", 'spell' => "Zauber",
'spells' => "Zauber", 'spells' => "Zauber",
'valueDelim' => " - ", // " bis " 'valueDelim' => " - ", // " bis "
'zone' => "Zone",
'zones' => "Gebiete",
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
'stats' => array("Stärke", "Beweglichkeit", "Ausdauer", "Intelligenz", "Willenskraft"), 'stats' => array("Stärke", "Beweglichkeit", "Ausdauer", "Intelligenz", "Willenskraft"),
'languages' => array( 'languages' => array(
1 => "Orcisch", 2 => "Darnassisch", 3 => "Taurisch", 6 => "Zwergisch", 7 => "Gemeinsprache", 8 => "Dämonisch", 9 => "Titanisch", 10 => "Thalassisch", 1 => "Orcisch", 2 => "Darnassisch", 3 => "Taurisch", 6 => "Zwergisch", 7 => "Gemeinsprache", 8 => "Dämonisch", 9 => "Titanisch", 10 => "Thalassisch",
@@ -249,8 +252,12 @@ $lang = array(
'CosmicMap' => "Kosmische Karte", 'CosmicMap' => "Kosmische Karte",
), ),
'zone' => array( 'zone' => array(
'zone' => "Zone", // 'zone' => "Zone",
'zonePartOf' => "Diese Zone ist Teil der Zone", // 'zonePartOf' => "Diese Zone ist Teil der Zone",
'cat' => array(
"Östliche Königreiche", "Kalimdor", "Dungeons", "Schlachtzüge", "Unbenutzt", null,
"Schlachtfelder", null, "Scherbenwelt", "Arenen", "Nordend"
)
), ),
'title' => array( 'title' => array(
'cat' => array( 'cat' => array(

View File

@@ -110,6 +110,9 @@ $lang = array(
'spell' => "spell", 'spell' => "spell",
'spells' => "Spells", 'spells' => "Spells",
'valueDelim' => " to ", 'valueDelim' => " to ",
'zone' => "zone",
'zones' => "Zones",
'expansions' => array("Classic", "The Burning Crusade", "Wrath of the Lich King"),
'stats' => array("Strength", "Agility", "Stamina", "Intellect", "Spirit"), 'stats' => array("Strength", "Agility", "Stamina", "Intellect", "Spirit"),
'languages' => array( 'languages' => array(
1 => "Orcish", 2 => "Darnassian", 3 => "Taurahe", 6 => "Dwarvish", 7 => "Common", 8 => "Demonic", 9 => "Titan", 10 => "Thalassian", 1 => "Orcish", 2 => "Darnassian", 3 => "Taurahe", 6 => "Dwarvish", 7 => "Common", 8 => "Demonic", 9 => "Titan", 10 => "Thalassian",
@@ -240,8 +243,12 @@ $lang = array(
'CosmicMap' => "Cosmic Map", 'CosmicMap' => "Cosmic Map",
), ),
'zone' => array( 'zone' => array(
'zone' => "Zone", // 'zone' => "Zone",
'zonePartOf' => "This zone is part of", // 'zonePartOf' => "This zone is part of",
'cat' => array(
"Eastern Kingdoms", "Kalimdor", "Dungeons", "Raids", "Unused", null,
"Battlegrounds", null, "Outland", "Arenas", "Northrend"
)
), ),
'title' => array( 'title' => array(
'cat' => array( 'cat' => array(

View File

@@ -107,6 +107,9 @@ $lang = array(
'spell' => "hechizo", 'spell' => "hechizo",
'spells' => "Hechizos", 'spells' => "Hechizos",
'valueDelim' => " - ", 'valueDelim' => " - ",
'zone' => "zona",
'zones' => "Zonas",
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
'stats' => array("Fuerza", "Agilidad", "Aguante", "Intelecto", "Espíritu"), 'stats' => array("Fuerza", "Agilidad", "Aguante", "Intelecto", "Espíritu"),
'languages' => array( 'languages' => array(
1 => "Orco", 2 => "Darnassiano", 3 => "Taurahe", 6 => "Enánico", 7 => "Lengua común", 8 => "Demoníaco", 9 => "Titánico", 10 => "Thalassiano", 1 => "Orco", 2 => "Darnassiano", 3 => "Taurahe", 6 => "Enánico", 7 => "Lengua común", 8 => "Demoníaco", 9 => "Titánico", 10 => "Thalassiano",
@@ -201,8 +204,12 @@ $lang = array(
'CosmicMap' => "Mapa cósmico", 'CosmicMap' => "Mapa cósmico",
), ),
'zone' => array( 'zone' => array(
'zone' => "Zone", // 'zone' => "Zone",
'zonePartOf' => "Cette zone fait partie de la zone", // 'zonePartOf' => "Cette zone fait partie de la zone",
'cat' => array(
"Reinos del Este", "Kalimdor", "Mazmorras", "Bandas", "No las uso", null,
"Campos de batalla", null, "Terrallende", "Arenas", "Rasganorte"
)
), ),
'title' => array( 'title' => array(
'cat' => array( 'cat' => array(

View File

@@ -107,6 +107,9 @@ $lang = array(
'spell' => "sort", 'spell' => "sort",
'spells' => "Sorts", 'spells' => "Sorts",
'valueDelim' => " - ", 'valueDelim' => " - ",
'zone' => "zone",
'zones' => "Zones",
'expansions' => array("Classique", "The Burning Crusade", "Wrath of the Lich King"),
'stats' => array("Force", "Agilité", "Endurance", "Intelligence", "Esprit"), 'stats' => array("Force", "Agilité", "Endurance", "Intelligence", "Esprit"),
'languages' => array( 'languages' => array(
1 => "Orc", 2 => "Darnassien", 3 => "Taurahe", 6 => "Nain", 7 => "Commun", 8 => "Démoniaque", 9 => "Titan", 10 => "Thalassien", 1 => "Orc", 2 => "Darnassien", 3 => "Taurahe", 6 => "Nain", 7 => "Commun", 8 => "Démoniaque", 9 => "Titan", 10 => "Thalassien",
@@ -201,8 +204,12 @@ $lang = array(
'CosmicMap' => "Carte cosmique", 'CosmicMap' => "Carte cosmique",
), ),
'zone' => array( 'zone' => array(
'zone' => "Zone", // 'zone' => "Zone",
'zonePartOf' => "Cette zone fait partie de la zone", // 'zonePartOf' => "Cette zone fait partie de la zone",
'cat' => array(
"Royaumes de l'est", "Kalimdor", "Donjons", "Raids", "Inutilisées", null,
"Champs de bataille", null, "Outreterre", "Arènes", "Norfendre"
)
), ),
'title' => array( 'title' => array(
'cat' => array( 'cat' => array(

View File

@@ -107,6 +107,9 @@ $lang = array(
'spell' => "заклинание", 'spell' => "заклинание",
'spells' => "Заклинания", 'spells' => "Заклинания",
'valueDelim' => " - ", 'valueDelim' => " - ",
'zone' => "игровая зона",
'zones' => "Местности",
'expansions' => array("World of Warcraft", "The Burning Crusade", "Wrath of the Lich King"),
'stats' => array("к силе", "к ловкости", "к выносливости", "к интеллекту", "к духу"), 'stats' => array("к силе", "к ловкости", "к выносливости", "к интеллекту", "к духу"),
'languages' => array( 'languages' => array(
1 => "орочий", 2 => "дарнасский", 3 => "таурахэ", 6 => "дворфийский", 7 => "всеобщий", 8 => "язык демонов", 9 => "язык титанов", 10 => "талассийский", 1 => "орочий", 2 => "дарнасский", 3 => "таурахэ", 6 => "дворфийский", 7 => "всеобщий", 8 => "язык демонов", 9 => "язык титанов", 10 => "талассийский",
@@ -201,8 +204,12 @@ $lang = array(
'CosmicMap' => "Звёздная карта", 'CosmicMap' => "Звёздная карта",
), ),
'zone' => array( 'zone' => array(
'zone' => "Игровая зона", // 'zone' => "Игровая зона",
'zonePartOf' => "Эта игровая локация является частью локации", // 'zonePartOf' => "Эта игровая локация является частью локации",
'cat' => array(
"Восточные королевства", "Калимдор", "Подземелья", "Рейды", "Неактивно", null,
"Поля боя", null, "Запределье", "Арены", "Нордскол"
)
), ),
'title' => array( 'title' => array(
'cat' => array( 'cat' => array(

96
pages/zones.php Normal file
View File

@@ -0,0 +1,96 @@
<?php
if (!defined('AOWOW_REVISION'))
die('illegal access');
$cats = Util::extractURLParams($pageParam);
$path = [0, 6];
$title = [Util::ucFirst(Lang::$game['zones'])];
$cacheKey = implode('_', [CACHETYPE_PAGE, TYPE_ZONE, -1, $cats[0] ? implode('.', $cats) : -1, User::$localeId]);
$validCats = array(
0 => true,
1 => true,
2 => [0, 1, 2],
3 => [0, 1, 2],
6 => true,
8 => true,
9 => true,
10 => true
);
if (!Util::isValidPage($validCats, $cats))
$smarty->error();
if (isset($cats[0]))
{
if (isset($cats[1]))
array_unshift($title, Lang::$game['expansions'][$cats[1]]);
$path = array_merge($path, $cats);
array_unshift($title, Lang::$zone['cat'][$cats[0]]);
}
if (!$smarty->loadCache($cacheKey, $pageData))
{
$conditions = [];
$visibleCols = [];
$hiddenCols = [];
if (isset($cats[0]))
$conditions[] = ['z.category', $cats[0]];
if (isset($cats[1]) && in_array($cats[0], [2, 3]))
$conditions[] = ['z.expansion', $cats[1]];
$zones = new ZoneList($conditions);
$somData = "{flightmaster: [{ coords: [[59.3,48.0]], level: 0, name: 'Thrallmar, Hellfire Peninsula', type: 1, id: 16587, reacthorde: 1, reactalliance: -1, paths: [[50.9,55.0],[49.1,72.1],[68.5,51.5],[60.9,61.3],[44.1,65.8]] },{ coords: [[58.9,55.8]], level: 0, name: 'Honor Hold, Hellfire Peninsula', type: 1, id: 16822, reacthorde: -1, reactalliance: 1, paths: [[50.1,48.3],[52.2,75.7],[68.6,52.8],[65.9,47.6],[44.1,65.8]] },{ coords: [[50.1,48.3]], level: 0, name: 'Temple of Telhamat, Hellfire Peninsula', type: 1, id: 18785, reacthorde: -1, reactalliance: 1, paths: [[39.7,48.2],[68.6,52.8]] },{ coords: [[50.9,55.0]], level: 0, name: 'Falcon Watch, Hellfire Peninsula', type: 1, id: 18942, reacthorde: 1, reactalliance: -1, paths: [[29.7,48.1],[33.6,60.8],[44.1,65.8],[68.5,51.5],[44.6,49.2]] },{ coords: [[39.7,48.2]], level: 0, name: 'Telredor, Zangarmarsh', type: 1, id: 18788, reacthorde: -1, reactalliance: 1, paths: [[32.6,73.4],[44.1,65.8],[35.5,31.2],[32.0,41.7],[42.7,34.0]] },{ coords: [[29.7,48.1]], level: 0, name: 'Zabra\'jin, Zangarmarsh', type: 1, id: 18791, reacthorde: 1, reactalliance: -1, paths: [[33.6,60.8],[44.1,65.8],[39.9,29.0],[44.6,49.2]] },{ coords: [[32.6,73.4]], level: 0, name: 'Telaar, Nagrand', type: 1, id: 18789, reacthorde: -1, reactalliance: 1, paths: [[52.2,75.7],[44.1,65.8]] },{ coords: [[33.6,60.8]], level: 0, name: 'Garadar, Nagrand', type: 1, id: 18808, reacthorde: 1, reactalliance: -1, paths: [[44.1,65.8]] },{ coords: [[52.2,75.7]], level: 0, name: 'Allerian Stronghold, Terokkar Forest', type: 1, id: 18809, reacthorde: -1, reactalliance: 1, paths: [[62.1,84.2],[44.1,65.8]] },{ coords: [[53.8,23.5]], level: 0, name: 'Area 52, Netherstorm', type: 1, id: 18938, reacthorde: 1, reactalliance: 1, paths: [[63.8,24.4],[57.5,14.3],[42.9,24.4]] },{ coords: [[59.8,75.9]], level: 0, name: 'Shadowmoon Village, Shadowmoon Valley', type: 1, id: 19317, reacthorde: 1, reactalliance: -1, paths: [[49.1,72.1],[70.1,76.3],[68.0,85.0]] },{ coords: [[62.1,84.2]], level: 0, name: 'Wildhammer Stronghold, Shadowmoon Valley', type: 1, id: 18939, reacthorde: -1, reactalliance: 1, paths: [[70.1,76.3],[68.0,85.0]] },{ coords: [[35.5,31.2]], level: 0, name: 'Sylvanaar, Blade\'s Edge Mountains', type: 1, id: 18937, reacthorde: -1, reactalliance: 1, paths: [[53.8,23.5],[57.5,14.3],[42.7,34.0],[42.9,24.4],[32.0,41.7]] },{ coords: [[39.9,29.0]], level: 0, name: 'Thunderlord Stronghold, Blade\'s Edge Mountains', type: 1, id: 18953, reacthorde: 1, reactalliance: -1, paths: [[53.8,23.5],[57.5,14.3],[44.6,49.2],[42.9,24.4],[47.5,32.6]] },{ coords: [[49.1,72.1]], level: 0, name: 'Stonebreaker Hold, Terokkar Forest', type: 1, id: 18807, reacthorde: 1, reactalliance: -1, paths: [[44.1,65.8]] },{ coords: [[44.1,65.8]], level: 0, name: 'Shattrath, Terokkar Forest', type: 1, id: 18940, reacthorde: 1, reactalliance: 1 },{ coords: [[68.6,52.8]], level: 0, name: 'Hellfire Peninsula, The Dark Portal', type: 1, id: 18931, reacthorde: -1, reactalliance: 1, paths: [[65.9,47.6]] },{ coords: [[68.5,51.5]], level: 0, name: 'Hellfire Peninsula, The Dark Portal', type: 1, id: 18930, reacthorde: 1, reactalliance: -1 },{ coords: [[57.5,14.3]], level: 0, name: 'The Stormspire, Netherstorm', type: 1, id: 19583, reacthorde: 1, reactalliance: 1, paths: [[63.8,24.4]] },{ coords: [[70.1,76.3]], level: 0, name: 'Altar of Sha\'tar, Shadowmoon Valley', type: 1, id: 19581, reacthorde: 1, reactalliance: 1 },{ coords: [[60.9,61.3]], level: 0, name: 'Spinebreaker Ridge, Hellfire Peninsula', type: 1, id: 19558, reacthorde: 1, reactalliance: -1 },{ coords: [[65.9,47.6]], level: 0, name: 'Shatter Point, Hellfire Peninsula', type: 1, id: 20234, reacthorde: -1, reactalliance: 1 },{ coords: [[63.8,24.4]], level: 0, name: 'Cosmowrench, Netherstorm', type: 1, id: 20515, reacthorde: 1, reactalliance: 1 },{ coords: [[44.6,49.2]], level: 0, name: 'Swamprat Post, Zangarmarsh', type: 1, id: 20762, reacthorde: 1, reactalliance: -1, paths: [[44.1,65.8],[47.5,32.6]] },{ coords: [[42.7,34.0]], level: 0, name: 'Toshley\'s Station, Blade\'s Edge Mountains', type: 1, id: 21107, reacthorde: -1, reactalliance: 1, paths: [[53.8,23.5],[42.9,24.4]] },{ coords: [[68.0,85.0]], level: 0, name: 'Sanctum of the Stars, Shadowmoon Valley', type: 1, id: 21766, reacthorde: 1, reactalliance: 1 },{ coords: [[42.9,24.4]], level: 0, name: 'Evergrove, Blade\'s Edge Mountains', type: 1, id: 22216, reacthorde: 1, reactalliance: 1 },{ coords: [[47.5,32.6]], level: 0, name: 'Mok\'Nathal Village, Blade\'s Edge Mountains', type: 1, id: 22455, reacthorde: 1, reactalliance: -1, paths: [[53.8,23.5]] },{ coords: [[32.0,41.7]], level: 0, name: 'Orebor Harborage, Zangarmarsh', type: 1, id: 22485, reacthorde: -1, reactalliance: 1 }]}";
$pageData = array(
'file' => 'zone',
'data' => $zones->getListviewData(),
'som' => $somData,
'map' => array(
'zone' => -2,
'zoom' => 1,
'overlay' => 'true',
'zoomable' => 'false',
),
'params' => []
);
$smarty->saveCache($cacheKey, $pageData);
}
/*
filters.js
Mapper.js
ShowOnMap.js
new ShowOnMap();
*/
$page = array(
'tab' => 0, // for g_initHeader($tab)
'title' => implode(' - ', $title),
'path' => json_encode($path, JSON_NUMERIC_CHECK),
'reqJS' => array(
array('path' => 'template/js/Mapper.js', 'conditional' => false),
array('path' => 'template/js/ShowOnMap.js', 'conditional' => false),
),
'reqCSS' => array(
array('path' => 'template/css/Mapper.css', 'condition' => false),
array('path' => 'template/css/Mapper_ie6.css', 'condition' => 'lte IE 6'),
),
);
$smarty->updatePageVars($page);
$smarty->assign('lang', Lang::$main);
$smarty->assign('mysql', DB::Aowow()->getStatistics());
$smarty->assign('lvData', $pageData);
$smarty->display('generic-no-filter.tpl');
?>

67
setup/aowow_zones.sql Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,36 @@
{strip}
new Listview({ldelim}
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}
{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},
category:{$curr.category},
territory:{$curr.territory},
minlevel:{$curr.minlevel},
maxlevel:{$curr.maxlevel},
name:'{$curr.name|escape:"quotes"}'
{if isset($curr.expansion)},expansion:{$curr.expansion}{/if}
{if isset($curr.instance)},instance:{$curr.instance}{/if}
{if isset($curr.nplayers)},nplayers:{$curr.nplayers}{/if}
{if isset($curr.reqlevel)},reqlevel:{$curr.reqlevel}{/if}
{if isset($curr.lfgReqLevel)},lfgReqLevel:{$curr.lfgReqLevel}{/if}
{if isset($curr.heroicLevel)},heroicLevel:{$curr.heroicLevel}{/if}
{* {if isset($curr.percent)},percent:{$curr.percent}{/if} what was that originaly for..? *}
{rdelim}
{if $smarty.foreach.i.last}{else},{/if}
{/foreach}
]
{rdelim});
{/strip}

View File

@@ -0,0 +1,11 @@
<div id="mapper" style="width: 778px; margin: 0 auto">
{if isset($som)}<div id="som-generic"></div>{/if}
<div id="mapper-generic"></div>
<div class="pad clear"></div>
</div>
<script type="text/javascript">//<![CDATA[
var g_pageInfo = {ldelim}id:-2{rdelim}; {* what on gods green earth..? *}
var myMapper = new Mapper({ldelim}{foreach from=$map key=k item=v}{$k}: {$v}, {/foreach}parent: 'mapper-generic'{rdelim});
{if isset($som)}new ShowOnMap({$som});{/if}
//]]></script>

View File

@@ -1,59 +1,193 @@
/*
Mapper.css version 294
*/
.mapper { .mapper {
position:relative; position: relative;
margin-top:10px; margin-top: 10px;
border:3px solid #404040; border: 3px solid #404040;
background-color:black; background-color: black;
} }
.mapper .pin { .mapper .pin {
position:absolute; position: absolute;
width:1px; width: 1px;
height:1px; height: 1px;
font-size:1px; font-size: 1px;
z-index: 5; /* Put pins on top of lines */
} }
.mapper .pin a { .mapper .pin a {
position:relative; position: relative;
width:11px; width: 11px;
height:11px; height: 11px;
left:-5px; left: -5px;
top:-5px; top: -5px;
background:url(../images/map-pin-yellow.png) no-repeat; background: url(../images/Mapper/pin-yellow.png) no-repeat;
display:block; display: block;
} }
.mapper .pin-1 a { .mapper .pin-start a {
background-image:url(../images/map-pin-green.png); background-image: url(../images/Mapper/quest-start.png);
width: 9px;
height: 17px;
left: -4px;
top: -8px;
z-index: 5;
} }
.mapper .pin-2 a { .mapper .pin-end a {
background-image:url(../images/map-pin-red.png); background-image: url(../images/Mapper/quest-end.png);
width: 12px;
height: 18px;
left: -6px;
top: -9px;
z-index: 5;
} }
.mapper .pin-3 a { .mapper .pin-startend a {
background-image:url(../images/map-pin-blue.png); background-image: url(../images/Mapper/quest-startend.png);
width: 19px;
height: 18px;
left: -9px;
top: -9px;
z-index: 5;
} }
.mapper .pin-4 a { .mapper-pin, .mapper-pin-1, .mapper-pin-2, .mapper-pin-3, .mapper-pin-4 {
background-image:url(../images/map-pin-purple.png); padding-left: 13px;
background-image: url(../images/Mapper/pin-yellow.png);
background-repeat: no-repeat;
background-position: 0 50%;
}
.mapper-pin-1, .mapper .pin-1 a {
background-image: url(../images/Mapper/pin-green.png);
}
.mapper-pin-2, .mapper .pin-2 a {
background-image: url(../images/Mapper/pin-red.png);
}
.mapper-pin-3, .mapper .pin-3 a {
background-image: url(../images/Mapper/pin-blue.png);
}
.mapper-pin-4, .mapper .pin-4 a {
background-image: url(../images/Mapper/pin-purple.png);
} }
.mapper .glow { .mapper .glow {
margin:0 2px; margin: 0 2px;
font-size:12px; font-size: 12px;
font-weight:bold; font-weight: bold;
color:white; color: white;
cursor:default; cursor: default;
white-space:nowrap; white-space: nowrap;
} }
.mapper .glow a { .mapper .glow a {
text-decoration:none; text-decoration: none;
} }
.mapper .glow a:hover { .mapper .glow a:hover {
text-decoration:underline; text-decoration: underline;
}
.mapper-som-button {
margin: 0 !important;
float: left !important;
}
.mapper-legend {
float: left;
display: block;
background-color: #141414;
border: 1px solid #101010;
font-size: 11px;
margin: -4px 0 0 15px;
white-space: nowrap;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}
.mapper-legend-container {
padding: 4px 8px;
}
.mapper-legend-pin {
margin: 0 5px;
}
.mapper .line var {
background: #C8B94C;
}
.mapper .line-1 var {
background: #73B85B;
}
.mapper .line-2 var {
background: #D7563C;
}
.mapper .line-3 var {
background: #47ACCD;
}
.mapper .line-4 var {
background: #C844D0;
}
html.ie678 .line var {
margin-left: 0;
}
.line {
position: absolute;
display: block;
cursor: default;
}
.line var {
width: 100%;
height: 2px;
margin: -2px 0 0 2px;
display: block;
background: #FFFFFF;
border: 1px solid #181818;
border-left: none;
border-right: none;
-o-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-webkit-transform-origin: 0 0;
-o-box-shadow: 0px 0px 3px black;
/*-moz-box-shadow: 0px 0px 3px black;*/
-webkit-box-shadow: 0px 0px 3px black;
}
.line.flipped {
-o-transform: scaleY(-1);
-moz-transform: scaleY(-1);
-webkit-transform: scaleY(-1);
-ms-filter: "FlipV";
filter: FlipV;
}
.mapper .line var {
background: #C8B94C;
}
.mapper .line-1 var {
background: #73B85B;
}
.mapper .line-2 var {
background: #D7563C;
}
.mapper .line-3 var {
background: #47ACCD;
}
.mapper .line-4 var {
background: #C844D0;
} }

View File

@@ -10,6 +10,9 @@
{include file='bricks/announcement.tpl' an=$item} {include file='bricks/announcement.tpl' an=$item}
{/foreach} {/foreach}
{/if} {/if}
{if isset($lvData.map)}
{include file='bricks/mapper.tpl' map=$lvData.map som=$lvData.som}
{/if}
<script type="text/javascript"> <script type="text/javascript">
g_initPath({$page.path}); g_initPath({$page.path});
@@ -18,10 +21,12 @@
<div id="tabs-generic"></div> <div id="tabs-generic"></div>
<div id="listview-generic" class="listview"></div> <div id="listview-generic" class="listview"></div>
<script type="text/javascript"> <script type="text/javascript">
var myTabs = new Tabs({ldelim}parent: $WH.ge('tabs-generic'){rdelim}); {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} {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}{/if} {if !empty($lvData.calendar)}
{include file='bricks/listviews/calendar.tpl' data=$lvData.data params=$lvData.params}
myTabs.flush(); myTabs.flush();
{/if}
</script> </script>
<div class="clear"></div> <div class="clear"></div>

View File

@@ -431,7 +431,7 @@ Mapper.prototype = {
var maxIdx = [false, -1]; var maxIdx = [false, -1];
for(var i = 0; i < zoneList.length; ++i) for(var i = 0; i < zoneList.length; ++i)
{ {
if(i > 0) span.append((i == zoneList.length-1 ? LANG.and : LANG.comma)); if(i > 0) ae(span, (i == zoneList.length-1 ? LANG.and : LANG.comma));
var entry = null; var entry = null;
if(self.objectives[zoneList[i][0]].mappable > 0) if(self.objectives[zoneList[i][0]].mappable > 0)
{ {
@@ -458,19 +458,19 @@ Mapper.prototype = {
if(types.start && types.end) if(types.start && types.end)
{ {
entry.className += ' icontiny'; entry.className += ' icontiny';
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/tiny/quest_startend.gif)'; entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/quest_startend.gif)';
entry.style += ' padding-left', '20px'; entry.style += ' padding-left', '20px';
} }
else if(types.start) else if(types.start)
{ {
entry.className += ' icontiny'; entry.className += ' icontiny';
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/tiny/quest_start.gif)'; entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/quest_start.gif)';
entry.style += ' padding-left', '14px'; entry.style += ' padding-left', '14px';
} }
else if(types.end) else if(types.end)
{ {
entry.className += ' icontiny'; entry.className += ' icontiny';
entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/tiny/quest_end.gif)'; entry.style += ' background-image', 'url(' + g_staticUrl + '/images/icons/quest_end.gif)';
entry.style += ' padding-left', '16px'; entry.style += ' padding-left', '16px';
} }
} }
@@ -979,12 +979,18 @@ Mapper.prototype = {
// $('.line.' + Mapper.sizes[this.zoom][2], this.floorPins[level]).show(); // $('.line.' + Mapper.sizes[this.zoom][2], this.floorPins[level]).show();
if (this.floorPins[level]) { if (this.floorPins[level]) {
var lines = this.floorPins[level].getElementsByClassName('line'); var lines = this.floorPins[level].getElementsByClassName('line');
for (i in lines) for (i in lines) {
lines[i].display = 'none'; if (i < lines.length) {
lines[i].style.display = 'none';
}
}
lines = this.floorPins[level].getElementsByClassName('line ' + Mapper.sizes[this.zoom][2]); lines = this.floorPins[level].getElementsByClassName('line ' + Mapper.sizes[this.zoom][2]);
for (i in lines) for (i in lines) {
lines[i].display = 'block'; if (i < lines.length) {
lines[i].style.display = 'block';
}
}
} }
// end of replacement // end of replacement

827
template/js/ShowOnMap.js Normal file
View File

@@ -0,0 +1,827 @@
var ShowOnMap = function(data, mapper) {
var self = this;
self.data = data;
if (mapper == null) {
mapper = myMapper;
}
self.mapper = mapper;
self._legend = null;
self._legendLabel = null;
self._legendContents = null;
self._legendHorde = null;
self._legendAlliance = null;
self._menu = [];
self.construct();
};
ShowOnMap.prototype.onExpand = function() {
this.expanded = true;
location.replace(this.pound + '.map');
};
ShowOnMap.prototype.onCollapse = function() {
this.expanded = false;
var hash = g_getHash();
if (hash.indexOf('#show') == 0 && hash.indexOf('.map') > 0) {
this.pound = hash.substr(0, hash.indexOf('.map'));
location.replace(this.pound);
}
}
ShowOnMap.prototype.construct = function() {
if (!this.data) {
return;
}
var d = ge('som-generic');
var cmpFunc = function(a, b) {
return strcmp(a[1], b[1]);
};
var allianceMenu = [];
var hordeMenu = [];
for (var i in this.data) {
if (this.data[i].length === undefined) {
var submenu = [];
var allCoords = [];
var allLegend = {};
var group = this.data[i];
for (var p in group) {
var hasPaths = false;
for (var n = 0, len = group[p].length; n < len; ++n) {
if (group[p][n].paths) {
hasPaths = true;
break;
}
}
var i2 = g_urlize(p);
if (group[p][0].name_enus !== undefined) {
i2 = g_urlize(group[p][0].name_enus);
}
var coords = {};
var legend = {};
var entry = [i2];
//pin.list.key = i;
var combined = ShowOnMap.combinePins(group[p], false, hasPaths);
var pins = combined[0];
var nPins = combined[1];
var nCoords = 0;
for (var n = 0; n < pins.length; ++n) {
var pin = pins[n];
var tooltip = ShowOnMap.buildTooltip(pin.list);
var url = tooltip[2];
var m = null;
if (url == 'javascript:;') {
m = tooltip[3];
}
if (pin.list.length == 1) {
url = (g_types[pin.list[0].type] && pin.list[0].id ? '?' + g_types[pin.list[0].type] + '=' + pin.list[0].id : '');
}
if (i == 'rare' || i == 'herb' || i == 'vein') {
tooltip[1] = submenu.length + 1;
}
if (coords[pin.level] == undefined) {
coords[pin.level] = [];
}
coords[pin.level].push([
pin.coord[0],
pin.coord[1],
{
url: url,
label: tooltip[0],
menu: m,
type: tooltip[1],
lines: pin.list[0].paths
}
]);
nCoords++;
}
if (nCoords > 0) {
var url = (g_types[group[p][0].type] && group[p][0].id ? '?' + g_types[group[p][0].type] + '=' + group[p][0].id : '');
legend[submenu.length+1] = [p, url];
entry.push(p + sprintf(LANG.qty, nPins));
entry.push(this.showStuff.bind(this, coords, [i, i2], legend));
submenu.push(entry);
for (var l in coords) {
if (allCoords[l]) {
allCoords[l] = allCoords[l].concat(coords[l]);
}
else {
allCoords[l] = coords[l];
}
}
allLegend[submenu.length] = [p, url];
}
}
if (submenu.length > 0) {
submenu.sort(cmpFunc);
var entry = [i, LANG.som[i], this.showStuff.bind(this, allCoords, [i], allLegend), submenu];
this._menu.push(entry);
}
}
else {
if (this.data[i].length == 0) {
continue;
}
var hasPaths = false;
for (var n = 0, len = this.data[i].length; n < len; ++n) {
if (this.data[i][n].paths) {
hasPaths = true;
break;
}
}
var entry = [i];
var coords = {};
var hordeCoords = {}, hordeDailyCoords = {};
var allianceCoords = {}, allianceDailyCoords = {};
var legend = {};
var hordeLegend = {};
var allianceLegend = {};
var combined = ShowOnMap.combinePins(this.data[i], false, hasPaths);
var nPins = combined[1];
var nCoords = 0, nHordeCoords = 0, nHordeDailyCoords = 0, nAllianceCoords = 0, nAllianceDailyCoords = 0;
var processPins = function(id, pins) {
for (var n = 0; n < pins.length; ++n) {
var pin = pins[n];
var idx = id;
pin.list.key = i;
var tooltip = ShowOnMap.buildTooltip(pin.list, (id == 'hordedailyquests' || id == 'alliancedailyquests') ? true : false);
var url = tooltip[2];
var m = null;
if (url == 'javascript:;') {
m = tooltip[3];
}
if (pin.list.length == 1) {
url = (g_types[pin.list[0].type] && pin.list[0].id ? '?' + g_types[pin.list[0].type] + '=' + pin.list[0].id : '');
}
var coord = [
pin.coord[0],
pin.coord[1],
{
url: url,
label: tooltip[0],
menu: m,
type: tooltip[1],
lines: pin.list[0].paths
}
];
if (coords[pin.level] == undefined) {
coords[pin.level] = [];
hordeCoords[pin.level] = [];
hordeDailyCoords[pin.level] = [];
allianceCoords[pin.level] = [];
allianceDailyCoords[pin.level] = [];
}
if (idx != 'rare' && idx != 'spirithealer' && idx != 'book' && idx != 'forge' && idx != 'anvil' && idx != 'hordequests' && idx != 'alliancequests' && idx != 'hordedailyquests' && idx != 'alliancedailyquests' && idx != 'boss') {
if (tooltip[1] == 2 || tooltip[1] == 0) {
if (tooltip[1] == 2) {
hordeLegend[2] = [LANG.som_legend_horde, null];
}
else {
hordeLegend[0] = [LANG.som_legend_neutral, null];
}
hordeCoords[pin.level].push(coord);
nHordeCoords++;
}
if (tooltip[1] == 3 || tooltip[1] == 0) {
if (tooltip[1] == 3) {
allianceLegend[3] = [LANG.som_legend_alliance, null];
}
else {
allianceLegend[0] = [LANG.som_legend_neutral, null];
}
allianceCoords[pin.level].push(coord);
nAllianceCoords++;
}
}
else if (idx == 'hordequests') {
idx = 'quest';
if (tooltip[1] == 2) {
hordeLegend[2] = [LANG.som_legend_horde, null];
}
else {
hordeLegend[0] = [LANG.som_legend_neutral, null];
}
hordeCoords[pin.level].push(coord);
nHordeCoords++;
}
else if (idx == 'hordedailyquests') {
idx = 'daily';
if (tooltip[1] == 2) {
hordeLegend[2] = [LANG.som_legend_horde, null];
}
else {
hordeLegend[0] = [LANG.som_legend_neutral, null];
}
hordeDailyCoords[pin.level].push(coord);
nHordeDailyCoords++;
}
else if (idx == 'alliancequests') {
idx = 'quest';
if (tooltip[1] == 3) {
allianceLegend[3] = [LANG.som_legend_alliance, null];
}
else {
allianceLegend[0] = [LANG.som_legend_neutral, null];
}
allianceCoords[pin.level].push(coord);
nAllianceCoords++;
}
else if (idx == 'alliancedailyquests') {
idx = 'daily';
if (tooltip[1] == 3) {
allianceLegend[3] = [LANG.som_legend_alliance, null];
}
else {
allianceLegend[0] = [LANG.som_legend_neutral, null];
}
allianceDailyCoords[pin.level].push(coord);
nAllianceDailyCoords++;
}
else {
coords[pin.level].push(coord);
nCoords++;
}
}
return idx;
};
var idx = processPins(i, combined[0]);
if (i == 'alliancequests') {
var allianceDailyPins = ShowOnMap.combinePins(this.data[i], true);
if (allianceDailyPins[1] > 0) {
processPins('alliancedailyquests', allianceDailyPins[0]);
}
}
else if (i == 'hordequests') {
var hordeDailyPins = ShowOnMap.combinePins(this.data[i], true);
if (hordeDailyPins[1] > 0) {
processPins('hordedailyquests', hordeDailyPins[0]);
}
}
if (idx == 'rare') {
nPins = this.data[idx].length;
}
else if (idx == 'forge' || idx == 'anvil') {
nPins = combined[0].length;
}
if (nCoords > 0) {
var entry = [idx, LANG.som[idx] + sprintf(LANG.qty, nPins), this.showStuff.bind(this, coords, [idx], legend)];
this._menu.push(entry);
}
if (nHordeCoords > 0) {
var entry = [idx, LANG.som[idx] + sprintf(LANG.qty, nHordeCoords), this.showStuff.bind(this, hordeCoords, ['horde', idx], hordeLegend), null];
if (idx == 'quest') {
entry.push({ tinyIcon: 'quest_start' });
if (nHordeDailyCoords > 0) {
hordeMenu.push(entry);
entry = ['daily', LANG.som.daily + sprintf(LANG.qty, nHordeDailyCoords), this.showStuff.bind(this, hordeDailyCoords, ['horde', 'daily'], hordeLegend), null, { tinyIcon: 'quest_start_daily' }];
}
}
hordeMenu.push(entry);
}
if (nAllianceCoords > 0) {
var entry = [idx, LANG.som[idx] + sprintf(LANG.qty, nAllianceCoords), this.showStuff.bind(this, allianceCoords, ['alliance', idx], allianceLegend), null];
if (idx == 'quest') {
entry.push({ tinyIcon: 'quest_start' });
if (nAllianceDailyCoords > 0) {
allianceMenu.push(entry);
entry = ['daily', LANG.som.daily + sprintf(LANG.qty, nAllianceDailyCoords), this.showStuff.bind(this, allianceDailyCoords, ['alliance', 'daily'], allianceLegend), null, { tinyIcon: 'quest_start_daily' }];
}
}
allianceMenu.push(entry);
}
}
}
allianceMenu.sort(cmpFunc);
hordeMenu.sort(cmpFunc);
this._menu.sort(cmpFunc);
if (hordeMenu.length > 0) {
this._menu.unshift(['horde', LANG.som.horde, '', hordeMenu, { tinyIcon: 'side_horde' }]);
}
if (allianceMenu.length > 0) {
this._menu.unshift(['alliance', LANG.som.alliance, '', allianceMenu, { tinyIcon: 'side_alliance' }]);
}
var nothing = [-1, LANG.som_nothing, this.showStuff.bind(this, [], [-1], {})];
nothing.checked = true;
this._menu.push(nothing);
var redButton = RedButton.create(LANG.showonmap, true);
redButton.className += ' mapper-som-button';
// Menu.add(redButton, this._menu, { showAtCursor: true });
redButton.menu = this._menu;
redButton.onclick = function() {
(Menu.show.bind(this))();
Tooltip.hide();
this.onmouseout = function() {
Menu.hide();
this.onmouseout = Tooltip.hide();
}.bind(this);
sp();
return false;
}.bind(redButton);
// replace end
ae(d, redButton);
var clear;
if (!this._legend) {
this._legend = ce('div');
this._legend.className = 'mapper-legend';
this._legend.style.display = 'none';
var d2 = ce('div');
d2.className = 'mapper-legend-container';
this._legendLabel = ce('b')
ae(this._legendLabel, ct(LANG.som_legend));
ae(d2, this._legendLabel);
this._legendContents = ce('div');
this._legendContents.style.cssFloat = 'right';
ae(d2, this._legendContents);
var clear = ce('div');
clear.style.clear = 'right';
ae(d2, clear);
ae(this._legend, d2);
}
ae(d, this._legend);
var clear = ce('div');
clear.style.clear = 'left';
ae(d, clear);
var components = [];
var hash = g_getHash();
if (hash.indexOf('#show:') != -1) {
components = hash.split('.');
}
else if (this.data.instance) {
components.push('#show:boss');
}
if (components.length > 0) {
if (components.length == 2 && components[1] == 'map') {
this.expanded = true;
this.mapper.toggleZoom();
}
var path = components[0].split(':');
if (path.length < 2) {
return;
}
var menu = this._menu;
for (var n = 1; n < path.length; ++n) {
var maxToRecurse = path.length - 1;
for (var p = 0; p < menu.length; ++p) {
if (menu[p][0] == path[n]) {
if (menu[p][3] && n < maxToRecurse) {
menu = menu[p][3];
}
else {
menu = menu[p];
}
break;
}
}
}
if (menu && menu[2] && menu[2].constructor && menu[2].call && menu[2].apply) { // sarjuuk: check if menu[2] is function
menu[2]();
}
}
};
ShowOnMap.prototype.setLegend = function(info) {
ee(this._legendContents);
var div = ce('div');
var count = 0;
for (var i in info) {
var sp = ce('span');
sp.className = 'mapper-pin mapper-pin-' + i + ' mapper-legend-pin';
if (info[i][1]) {
var a = ce('a');
a.href = info[i][1];
ae(a, ct(info[i][0]));
ae(sp, a);
}
else {
sp.innerText = info[i][0];
}
ae(div, sp);
if ((++count) % 4 == 0) {
ae(div, ce('br'));
}
}
ae(this._legendContents, div);
};
ShowOnMap.prototype.showStuff = function(coords, path, legendInfo) {
this.mapper.update({zone: g_pageInfo.id, coords: coords, preservelevel: true});
this.setLegend(legendInfo);
this.checkMenu(path);
if (path.length == 1 && path[0] == -1) {
this.pound = '';
location.replace('#.');
return;
}
this.pound = '#show:' + path.join(':');
if (this.pound != '#show:boss') {
location.replace(this.pound + (this.expanded ? '.map' : ''));
}
};
ShowOnMap.prototype.clearChecks = function(menu) {
for (var i = 0; i < menu.length; ++i) {
menu[i].checked = false;
if (menu[i][3] && menu[i][3].length > 0) {
this.clearChecks(menu[i][3]);
}
}
this._legend.style.display = 'none';
};
ShowOnMap.prototype.checkMenu = function(path) {
this.clearChecks(this._menu);
if (path[0] != -1) {
this._legend.style.display = 'block';
}
else {
this._legend.style.display = 'none';
}
var menu = this._menu;
var label = [];
for (var i = 0; i < path.length; ++i) {
for (var j = 0; j < menu.length; ++j) {
if (menu[j][0] == path[i]) {
menu[j].checked = true;
label.push([menu[j][0], menu[j][1]]);
menu = menu[j][3];
break;
}
}
}
var maxLabel = label.length - 1;
var str = '';
var singlePinOptions = { 'rare': true, 'herb': true, 'vein': true };
for (var i = 0; i < label.length; ++i) {
if (i > 0 && singlePinOptions[label[0][0]]) {
/* unsure, kept for reference, replacement below
var span = $('span', this._legendContents);
span.removeClass('mapper-legend-pin');
span.append($('<b/>', { text: ' ' + label[i][1].substr(label[i][1].lastIndexOf('(')) }));
*/
var span = gE(this._legendContents[0], 'span')[0];
span.className.replace(/\mapper-legend-pin\b/,'');
var b = ce('b');
b.innerText = ' ' + label[i][1].substr(label[i][1].lastIndexOf('('));
ae(span, b);
// replace end
}
else {
if (i == maxLabel) {
str += '<span>';
}
else {
str += '<span class="breadcrumb-arrow">';
}
str += label[i][1] + '</span>';
}
}
this._legendLabel.innerHtml = str;
};
ShowOnMap.combinePins = function(pins, dailyOnly, hasPaths) {
var combined = {};
var coord = null, tmpCoord = null;
var x, y;
var nPins = 0;
var getCoord = function(coord, tight) {
var x = Math.floor(coord[0]);
var y = Math.floor(coord[1]);
if (!tight) {
if (x % 2 == 1) {
x += 1;
}
if (y % 2 == 1) {
y += 1;
}
}
if (combined[x] === undefined) {
combined[x] = {};
}
if (combined[x][y] === undefined) {
combined[x][y] = [];
}
return [x, y];
}
for (var p = 0; p < pins.length; ++p) {
var pin = pins[p];
if (dailyOnly) {
if (!pin.quests) {
continue;
}
var noDaily = true;
for (var n = 0; n < pin.quests.length; ++n) {
if (pin.quests[n].daily) {
noDaily = false;
break;
}
}
if (noDaily) {
continue;
}
}
else if (hasPaths) {
// Don't combine pins that have paths
coord = getCoord([pin.id, 0], true);
x = coord[0]; y = coord[1];
var newPin = dO(pin);
newPin.coord = pin.coords[0];
combined[x][y].push(newPin);
nPins++;
continue;
}
if (pin.point == 'start' || pin.point == 'end') {
coord = getCoord(pin.coord);
x = coord[0]; y = coord[1];
if (combined[x][y].length > 3) {
var temp = combined[x][y];
combined[x][y] = [];
for (var i = 0; i < temp.length; ++i) {
tmpCoord = getCoord(temp[i].coord, true);
combined[tmpCoord[0]][tmpCoord[1]].push(temp[i]);
}
}
combined[x][y].push(pin);
nPins++;
}
else {
for (var c = 0; c < pin.coords.length; ++c) {
coord = getCoord(pin.coords[c]);
x = coord[0]; y = coord[1];
var newPin = dO(pin);
newPin.coord = pin.coords[c];
if (combined[x][y].length > 3) {
var temp = combined[x][y];
combined[x][y] = [];
for (var i = 0; i < temp.length; ++i) {
tmpCoord = getCoord(temp[i].coord, true);
combined[tmpCoord[0]][tmpCoord[1]].push(temp[i]);
}
}
combined[x][y].push(newPin);
nPins++;
}
}
}
var complete = [];
for (x in combined) {
for (y in combined[x]) {
complete.push({
coord: [combined[x][y][0].coord[0], combined[x][y][0].coord[1]],
level: combined[x][y][0].level,
list: combined[x][y]
});
}
}
return [complete, nPins];
};
ShowOnMap.buildTooltip = function(list, dailyOnly) {
var str = '';
var url = '';
var menu = [];
var pinType = -1;
var uniques = {};
var nUniques = 0;
var pointTypes = {};
var objType = 1;
for (var n = 0; n < list.length; ++n) {
var obj = list[n];
url = (g_types[obj.type] && obj.id ? '?' + g_types[obj.type] + '=' + obj.id : '');
var key = url + obj.item;
var pointKey = url + obj.point;
if (!uniques[key]) {
uniques[key] = {
url: url,
obj: obj,
coords: [obj.coord],
all: [obj]
};
nUniques++;
}
else {
if (!pointTypes[pointKey]) {
uniques[key].all.push(obj);
}
uniques[key].coords.push(obj.coord);
}
pointTypes[pointKey] = 1;
}
var n = 0;
for (var key in uniques) {
var url = uniques[key].url;
var all = uniques[key].all;
var obj = uniques[key].obj;
var coords = uniques[key].coords;
if (n > 0) {
str += '<br />';
}
menu.push([n++, obj.name, url]);
objType = obj.type;
if (!obj.point) {
if ((obj.reacthorde == 1 && obj.reactalliance < 1) || obj.side == 2) {
if (pinType == 2 || pinType == -1) {
pinType = 2;
}
else {
pinType = 0;
}
}
else if ((obj.reactalliance == 1 && obj.reacthorde < 1) || obj.side == 1) {
if (pinType == 3 || pinType == -1) {
pinType = 3;
}
else {
pinType = 0;
}
}
else {
pinType = 0;
}
}
str += '<b class="q' + (pinType == 2 ? ' icon-horde' : '') + (pinType == 3 ? ' icon-alliance' : '') + '">' + obj.name + '</b>';
if (coords.length > 0) {
str += ' (' + coords[0][0] + ', ' + coords[0][1] + ')<br />';
}
if (obj.quests) {
if (obj.quests.length > 1) {
str += LANG.som_startsquestpl;
}
else {
str += LANG.som_startsquest;
}
str += '<div class="indent">';
for (var q = 0; q < obj.quests.length; ++q) {
var quest = obj.quests[q];
if (dailyOnly && !quest.daily) {
continue;
}
str += '<span class="q0">[' + quest.level + ']</span> ' + quest.name + ((quest.series && !quest.first) ? '<sup style="font-size: 8px">(*)</sup>' : '') + ((quest.category < 0 && g_quest_sorts[quest.category]) ? ' <i class="q0">' + g_quest_sorts[quest.category] + '</i>' : '') + '<br />';
}
str += '</div>';
}
else if (obj.description) {
str += obj.description + '<br />';
}
else if (obj.point) {
for (var n = 0; n < all.length; ++n) {
var o = all[n];
switch (o.point) {
case 'start':
str += LANG.mapper_startsquest + '<br />';
if (pinType == 'end') {
pinType = 'startend';
}
else if (pinType != 'startend') {
pinType = 'start';
}
break;
case 'end':
str += LANG.mapper_endsquest + '<br />';
if (pinType == 'start') {
pinType = 'startend';
}
else if (pinType != 'startend') {
pinType = 'end';
}
break;
case 'sourcestart':
str += LANG.mapper_sourcestart + '<br />';
str += '<div class="indent">' + o.item + '</div>';
if (pinType == 'end') {
pinType = 'startend';
}
else if (pinType != 'startend') {
pinType = 'start';
}
break;
case 'sourceend':
str += LANG.mapper_sourceend + '<br />';
str += '<div class="indent">' + o.item + '</div>';
if (pinType == 'start') {
pinType = 'startend';
}
else if (pinType != 'startend') {
pinType = 'end';
}
break;
case 'requirement':
str += LANG.mapper_requiredquest + '<br />';
if (pinType == -1) {
pinType = o.objective;
}
break;
case 'sourcerequirement':
str += LANG.mapper_sourcereq + '<br />';
str += '<div class="indent">' + o.item + '</div>';
if (pinType == -1) {
pinType = o.objective;
}
break;
}
}
}
}
str += '<div class="q2">';
if (list.length == 1) {
str += (list[0].type == 1 ? LANG.som_viewnpc : (list[0].type == 2 ? LANG.som_viewobj : ''));
}
else if (nUniques == 1) {
str += (objType == 1 ? LANG.som_viewnpc : (objType == 2 ? LANG.som_viewobj : ''));
}
else {
str += '<br />' + LANG.som_view;
}
str += '</div>';
var ret = [];
ret.push(str);
ret.push(pinType);
if (list.length == 1 || nUniques == 1) {
ret.push(url);
ret.push(null);
}
else {
ret.push('javascript:;');
ret.push(menu);
}
return ret;
};
// !sarjuuk: tempfix!
Markup._fixUrl = function(url)
{
if(!url) return '';
// Make local URLs absolute
var firstChar = url.charAt(0);
if(firstChar == '/' || firstChar == '?')
{
url = url.replace(/^[\/\?]+/, '');
url = '?' + url;
}
return url;
}

View File

@@ -2329,16 +2329,26 @@ function g_isLeftClick(a) {
a = $E(a); a = $E(a);
return (a && a._button == 1) return (a && a._button == 1)
} }
function g_createOrRegex(c) {
var e = c.split(" "), function g_createOrRegex(search, negativeGroup) {
d = ""; search = search.replace(/(\(|\)|\|\+|\*|\?|\$|\^)/g, '\\$1');
for (var b = 0, a = e.length; b < a; ++b) { var
if (b > 0) { parts = search.split(' '),
d += "|" strRegex= '';
for (var j = 0, len = parts.length; j < len; ++j) {
if (j > 0) {
strRegex += '|';
} }
d += e[b] strRegex += parts[j];
} }
return new RegExp("(" + d + ")", "gi")
// The additional group is necessary so we dont replace %s
return new RegExp((negativeGroup != null ? '(' + negativeGroup + ')?' : '') + '(' + strRegex + ')', 'gi');
}
function g_getHash() {
return '#' + decodeURIComponent(location.href.split('#')[1] || '');
} }
DomContentLoaded.addEvent(function () { DomContentLoaded.addEvent(function () {
@@ -7175,9 +7185,9 @@ Listview.funcBox = {
p.value = b.response; p.value = b.response;
p.rows = 3; p.rows = 3;
p.style.height = "6em"; p.style.height = "6em";
h.append(B); ae(h, B);
h.append(w); ae(h, w);
h.append(p) ae(h, p)
} }
ae(m, h); ae(m, h);
ae(m, ce('div')); ae(m, ce('div'));
@@ -10138,205 +10148,217 @@ Listview.templates = {
nItemsPerPage: -1, nItemsPerPage: -1,
searchable: 1, searchable: 1,
filtrable: 1, filtrable: 1,
columns: [{
id: "name", columns: [
{
id: 'name',
name: LANG.name, name: LANG.name,
type: "text", type: 'text',
align: "left", align: 'left',
value: "name", value: 'name',
compute: function(c, e) { compute: function(zone, td) {
var b = ce("a"); var a = ce('a');
b.style.fontFamily = "Verdana, sans-serif"; a.style.fontFamily = 'Verdana, sans-serif';
b.href = this.template.getItemLink(c); a.href = this.template.getItemLink(zone);
ae(b, ct(c.name)); ae(a, ct(zone.name));
if (c.expansion) { if (zone.expansion) {
var d = ce("span"); var sp = ce('span');
d.className = (c.expansion == 1 ? "bc-icon": "wotlk-icon"); sp.className = g_GetExpansionClassName(zone.expansion);
ae(d, b); ae(sp, a);
ae(e, d) ae(td, sp);
} else { }
ae(e, b) else {
ae(td, a);
} }
}, },
getVisibleText: function(a) { getVisibleText: function(zone) {
var b = a.name; var buff = zone.name + Listview.funcBox.getExpansionText(zone);
if (a.expansion == 1) {
b += " bc" if (zone.instance == 5 || zone.instance == 8) {
} else { buff += ' heroic';
if (a.expansion == 2) {
b += "wotlk wrath"
} }
if (a.instance == 5 || a.instance == 8) {
b += " heroic" return buff;
}
}
return b
} }
}, },
{ {
id: "level", id: 'level',
name: LANG.level, name: LANG.level,
type: "range", type: 'range',
width: "10%", width: '10%',
getMinValue: function(a) { getMinValue: function(zone) {
return a.minlevel return zone.minlevel;
}, },
getMaxValue: function(a) { getMaxValue: function(zone) {
return a.maxlevel return zone.maxlevel;
}, },
compute: function(a, b) { compute: function(zone, td) {
if (a.minlevel > 0 && a.maxlevel > 0) { if (zone.minlevel > 0 && zone.maxlevel > 0) {
if (a.minlevel != a.maxlevel) { if (zone.minlevel != zone.maxlevel) {
return a.minlevel + LANG.hyphen + a.maxlevel return zone.minlevel + LANG.hyphen + zone.maxlevel;
} else { }
return a.minlevel else {
return zone.minlevel;
} }
} }
}, },
sortFunc: function(d, c, e) { sortFunc: function(a, b, col) {
if (e > 0) { if (col > 0) {
return strcmp(d.minlevel, c.minlevel) || strcmp(d.maxlevel, c.maxlevel) return strcmp(a.minlevel, b.minlevel) || strcmp(a.maxlevel, b.maxlevel);
} else { }
return strcmp(d.maxlevel, c.maxlevel) || strcmp(d.minlevel, c.minlevel) else {
return strcmp(a.maxlevel, b.maxlevel) || strcmp(a.minlevel, b.minlevel);
} }
} }
}, },
{ {
id: "players", id: 'players',
name: LANG.players, name: LANG.players,
type: "text", type: 'text',
hidden: true, hidden: true,
compute: function(a, d) { compute: function(zone, td) {
if (a.instance > 0) { if (zone.instance > 0) {
var b = ce("span"); var sp = ce('span');
if (a.nplayers == -2) {
a.nplayers = "10/25" if (zone.nplayers == -2) {
zone.nplayers = '10/25';
} }
var c = "";
if (a.nplayers) { var buff = '';
if (a.instance == 4) { if (zone.nplayers) {
c += sprintf(LANG.lvzone_xvx, a.nplayers, a.nplayers) if (zone.instance == 4) {
} else { buff += sprintf(LANG.lvzone_xvx, zone.nplayers, zone.nplayers);
c += sprintf(LANG.lvzone_xman, a.nplayers) }
else {
buff += sprintf(LANG.lvzone_xman, zone.nplayers);
} }
} }
ae(b, ct(c));
ae(d, b) ae(sp, ct(buff));
ae(td, sp);
} }
}, },
getVisibleText: function(a) { getVisibleText: function(zone) {
if (a.instance > 0) { if (zone.instance > 0) {
if (a.nplayers == -2) { if (zone.nplayers == -2) {
a.nplayers = "10/25" zone.nplayers = '10/25';
} }
var b = "";
if (a.nplayers && ((a.instance != 2 && a.instance != 5) || a.nplayers > 5)) { var buff = '';
if (a.instance == 4) { if (zone.nplayers && ((zone.instance != 2 && zone.instance != 5) || zone.nplayers > 5)) {
b += sprintf(LANG.lvzone_xvx, a.nplayers, a.nplayers) if (zone.instance == 4) {
} else { buff += sprintf(LANG.lvzone_xvx, zone.nplayers, zone.nplayers);
b += sprintf(LANG.lvzone_xman, a.nplayers) }
else {
buff += sprintf(LANG.lvzone_xman, zone.nplayers);
} }
} }
return b return buff;
} }
}, },
sortFunc: function(d, c, e) { sortFunc: function(a, b, col) {
return strcmp(d.nplayers, c.nplayers) return strcmp(a.nplayers, b.nplayers);
} }
}, },
{ {
id: "territory", id: 'territory',
name: LANG.territory, name: LANG.territory,
type: "text", type: 'text',
width: "13%", width: '13%',
compute: function(a, c) { compute: function(zone, td) {
var b = ce("span"); var sp = ce('span');
switch (a.territory) { switch (zone.territory) {
case 0: case 0:
b.className = "alliance-icon"; sp.className = 'alliance-icon';
break; break;
case 1: case 1:
b.className = "horde-icon"; sp.className = 'horde-icon';
break; break;
case 4: case 4:
b.className = "ffapvp-icon"; sp.className = 'ffapvp-icon';
break break;
} }
ae(b, ct(g_zone_territories[a.territory]));
ae(c, b) ae(sp, ct(g_zone_territories[zone.territory]));
ae(td, sp);
}, },
getVisibleText: function(a) { getVisibleText: function(zone) {
return g_zone_territories[a.territory] return g_zone_territories[zone.territory];
}, },
sortFunc: function(d, c, e) { sortFunc: function(a, b, col) {
return strcmp(g_zone_territories[d.territory], g_zone_territories[c.territory]) return strcmp(g_zone_territories[a.territory], g_zone_territories[b.territory]);
} }
}, },
{ {
id: "instancetype", id: 'instancetype',
name: LANG.instancetype, name: LANG.instancetype,
type: "text", type: 'text',
compute: function(a, d) { compute: function(zone, td) {
if (a.instance > 0) { if (zone.instance > 0) {
var b = ce("span"); var sp = ce('span');
if ((a.instance >= 1 && a.instance <= 5) || a.instance == 7 || a.instance == 8) { if ((zone.instance >= 1 && zone.instance <= 5) || zone.instance == 7 || zone.instance == 8) {
b.className = "instance-icon" + a.instance sp.className = 'instance-icon' + zone.instance;
} }
if (a.nplayers == -2) {
a.nplayers = "10/25" var buff = g_zone_instancetypes[zone.instance];
if (zone.heroicLevel) {
var skull = ce('span');
skull.className = 'heroic-icon';
g_addTooltip(skull, LANG.tooltip_heroicmodeavailable + LANG.qty.replace('$1', zone.heroicLevel));
ae(td, skull);
} }
var c = g_zone_instancetypes[a.instance];
if (a.heroicLevel) { ae(sp, ct(buff));
var f = ce("span"); ae(td, sp);
f.className = "heroic-icon";
g_addTooltip(f, LANG.tooltip_heroicmodeavailable + LANG.qty.replace("$1", a.heroicLevel));
ae(e, f);
}
ae(b, ct(c));
ae(d, b)
} }
}, },
getVisibleText: function(a) { getVisibleText: function(zone) {
if (a.instance > 0) { if (zone.instance > 0) {
var b = g_zone_instancetypes[a.instance]; var buff = g_zone_instancetypes[zone.instance];
if (a.nplayers && ((a.instance != 2 && a.instance != 5) || a.nplayers > 5)) {
if (a.instance == 4) { if (zone.nplayers && ((zone.instance != 2 && zone.instance != 5) || zone.nplayers > 5)) {
b += " " + sprintf(LANG.lvzone_xvx, a.nplayers, a.nplayers) if (zone.instance == 4) {
} else { buff += ' ' + sprintf(LANG.lvzone_xvx, zone.nplayers, zone.nplayers);
b += " " + sprintf(LANG.lvzone_xman, a.nplayers) }
else {
buff += ' ' + sprintf(LANG.lvzone_xman, zone.nplayers);
} }
} }
if (a.instance == 5 || a.instance == 8) { if (zone.instance == 5 || zone.instance == 8) {
b += " heroic" buff += ' heroic';
} }
return b
return buff;
} }
}, },
sortFunc: function(d, c, e) { sortFunc: function(a, b, col) {
return strcmp(g_zone_instancetypes[d.instance], g_zone_instancetypes[c.instance]) || strcmp(d.instance, c.instance) || strcmp(d.nplayers, c.nplayers) return strcmp(g_zone_instancetypes[a.instance], g_zone_instancetypes[b.instance]) || strcmp(a.instance, b.instance) || strcmp(a.nplayers, b.nplayers);
} }
}, },
{ {
id: "category", id: 'category',
name: LANG.category, name: LANG.category,
type: "text", type: 'text',
width: "15%", width: '15%',
compute: function(c, d) { compute: function(zone, td) {
d.className = "small q1"; td.className = 'small q1';
var b = ce("a"); var a = ce('a');
b.href = "?zones=" + c.category; a.href = '?zones=' + zone.category;
ae(b, ct(g_zone_categories[c.category])); ae(a, ct(g_zone_categories[zone.category]));
ae(d, b) ae(td, a);
}, },
getVisibleText: function(a) { getVisibleText: function(zone) {
return g_zone_categories[a.category] return g_zone_categories[zone.category];
}, },
sortFunc: function(d, c, e) { sortFunc: function(a, b, col) {
return strcmp(g_zone_categories[d.category], g_zone_categories[c.category]) return strcmp(g_zone_categories[a.category], g_zone_categories[b.category]);
} }
}], }
getItemLink: function(a) { ],
return "?zone=" + a.id
getItemLink: function(zone) {
return '?zone=' + zone.id;
} }
}, },
@@ -16655,6 +16677,46 @@ var ContactTool = new function() {
DomContentLoaded.addEvent(this.checkPound); DomContentLoaded.addEvent(this.checkPound);
}; };
function Line(x1, y1, x2, y2, type) {
var left = Math.min(x1, x2),
right = Math.max(x1, x2),
top = Math.min(y1, y2),
bottom = Math.max(y1, y2),
width = (right - left),
height = (bottom - top),
length = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)),
radian = Math.atan2(height, width),
sinTheta = Math.sin(radian),
cosTheta = Math.cos(radian);
var $line = ce('span');
$line.className = 'line';
$line.style.top = top.toFixed(2) + 'px';
$line.style.left = left.toFixed(2) + 'px';
$line.style.width = width.toFixed(2) + 'px';
$line.style.height = height.toFixed(2) + 'px';
var v = ce('var');
v.style.width = length.toFixed(2) + 'px';
v.style.OTransform = 'rotate(' + radian + 'rad)';
v.style.MozTransform = 'rotate(' + radian + 'rad)';
v.style.webkitTransform = 'rotate(' + radian + 'rad)';
v.style.filter = "progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11=" + cosTheta + ', M12=' + (-1 * sinTheta) + ', M21=' + sinTheta + ', M22=' + cosTheta + ')';
ae($line, v);
if (!(x1 == left && y1 == top) && !(x2 == left && y2 == top)) {
$line.className += ' flipped';
}
if (type != null) {
$line.className += ' line-' + type;
}
return $line;
}
var Links = new function() { var Links = new function() {
var dialog = null; var dialog = null;
var oldHash = null; var oldHash = null;

View File

@@ -1916,33 +1916,39 @@ var g_zone_areas = {
4723: ['Kolosseum der Kreuzfahrer','Die eisigen Tiefen'], 4723: ['Kolosseum der Kreuzfahrer','Die eisigen Tiefen'],
4812: ['Die untere Zitadelle','Das Schädelbollwerk','Dom des Todbringers','Hort der Frostkönigin','Der obere Bereich','Königliche Quartiere','Der Frostthron','Frostgram'] 4812: ['Die untere Zitadelle','Das Schädelbollwerk','Dom des Todbringers','Hort der Frostkönigin','Der obere Bereich','Königliche Quartiere','Der Frostthron','Frostgram']
}; };
var g_zone_categories = { var g_zone_categories = {
0:"Östliche Königreiche", 0: "Östliche Königreiche",
1:"Kalimdor", 1: "Kalimdor",
8:"Scherbenwelt", 2: "Dungeons",
10:"Nordend", 3: "Schlachtzüge",
2:"Dungeons", 4: "Unbenutzt",
3:"Schlachtzüge", 6: "Schlachtfelder",
6:"Schlachtfelder", 8: "Scherbenwelt",
9:"Arenen" 9: "Arenen",
10: "Nordend"
}; };
var g_zone_instancetypes = { var g_zone_instancetypes = {
1:"Durchgang", 1: "Durchgang",
2:"Dungeon", 2: "Dungeon",
3:"Schlachtzug", 3: "Schlachtzug", // Classic
4:"Schlachtfeld", 4: "Schlachtfeld",
5:"Dungeon", 5: "Dungeon", // Heroic
6:"Arena", 6: "Arena",
7:"Schlachtzug", 7: "Schlachtzug", // 10-25
8:"Schlachtzug" 8: "Schlachtzug" // 10-25 Heroic
}; };
var g_zone_territories = { var g_zone_territories = {
0:"Allianz", 0: "Allianz",
1:"Horde", 1: "Horde",
2:"Umkämpft", 2: "Umkämpft",
3:"Sicheres Gebiet", 3: "Sicheres Gebiet",
4:"PvP" 4: "PvP",
5: "Welt-PvP"
}; };
var g_faction_categories = { var g_faction_categories = {
"0":"Anderes", "0":"Anderes",
"469":"Allianz", "469":"Allianz",

View File

@@ -1963,33 +1963,39 @@ var g_zone_areas = {
4723: ['Crusaders\' Coliseum','The Icy Depths'], 4723: ['Crusaders\' Coliseum','The Icy Depths'],
4812: ['The Lower Citadel','The Rampart of Skulls','Deathbringer\'s Rise','The Frost Queen\'s Lair','The Upper Reaches','Royal Quarters','The Frozen Throne','Frostmourne'] 4812: ['The Lower Citadel','The Rampart of Skulls','Deathbringer\'s Rise','The Frost Queen\'s Lair','The Upper Reaches','Royal Quarters','The Frozen Throne','Frostmourne']
}; };
var g_zone_categories = { var g_zone_categories = {
0:"Eastern Kingdoms", 0: "Eastern Kingdoms",
1:"Kalimdor", 1: "Kalimdor",
8:"Outland", 2: "Dungeons",
10:"Northrend", 3: "Raids",
2:"Dungeons", 4: "Unused",
3:"Raids", 6: "Battlegrounds",
6:"Battlegrounds", 8: "Outland",
9:"Arenas" 9: "Arenas",
10: "Northrend"
}; };
var g_zone_instancetypes = { var g_zone_instancetypes = {
1:"Transit", 1: "Transit",
2:"Dungeon", 2: "Dungeon",
3:"Raid", 3: "Raid", // Classic
4:"Battleground", 4: "Battleground",
5:"Dungeon", 5: "Dungeon", // Heroic
6:"Arena", 6: "Arena",
7:"Raid", 7: "Raid", // 10-25
8:"Raid" 8: "Raid" // 10-25 Heroic
}; };
var g_zone_territories = { var g_zone_territories = {
0:"Alliance", 0: "Alliance",
1:"Horde", 1: "Horde",
2:"Contested", 2: "Contested",
3:"Sanctuary", 3: "Sanctuary",
4:"PvP" 4: "PvP",
5: "World PvP"
}; };
var g_faction_categories = { var g_faction_categories = {
"0":"Other", "0":"Other",
"469":"Alliance", "469":"Alliance",

View File

@@ -1916,33 +1916,39 @@ var g_zone_areas = {
4723: ['El Coliseo Argenta','Las profundidades heladas'], 4723: ['El Coliseo Argenta','Las profundidades heladas'],
4812: ['La ciudadela inferior','La Muralla de las Calaveras','Ascenso del Libramorte','La guarida de la Reina de Escarcha','Los Confines superiores','Cuarteles Reales','El Trono Helado','Agonía de Escarcha'] 4812: ['La ciudadela inferior','La Muralla de las Calaveras','Ascenso del Libramorte','La guarida de la Reina de Escarcha','Los Confines superiores','Cuarteles Reales','El Trono Helado','Agonía de Escarcha']
}; };
var g_zone_categories = { var g_zone_categories = {
0:"Reinos del Este", 0: "Reinos del Este",
1:"Kalimdor", 1: "Kalimdor",
8:"Terrallende", 2: "Mazmorras",
10:"Rasganorte", 3: "Bandas",
2:"Mazmorras", 4: "No las uso",
3:"Bandas", 6: "Campos de batalla",
6:"Campos de batalla", 8: "Terrallende",
9:"Arenas" 9: "Arenas",
10: "Rasganorte"
}; };
var g_zone_instancetypes = { var g_zone_instancetypes = {
1:"Tránsito", 1: "Tránsito",
2:"Mazmorra", 2: "Mazmorra",
3:"Banda", 3: "Banda", // Classic
4:"Campo de batalla", 4: "Campo de batalla",
5:"Mazmorra", 5: "Mazmorra", // Heroic
6:"Arena", 6: "Arena",
7:"Banda", 7: "Banda", // 10-25
8:"Banda" 8: "Banda" // 10-25 Heroic
}; };
var g_zone_territories = { var g_zone_territories = {
0:"Alianza", 0: "Alianza",
1:"Horda", 1: "Horda",
2:"En disputa", 2: "En disputa",
3:"Santuario", 3: "Santuario",
4:"JcJ" 4: "JcJ",
5: "JcJ abierto"
}; };
var g_faction_categories = { var g_faction_categories = {
"0":"Otros", "0":"Otros",
"469":"Alianza", "469":"Alianza",

View File

@@ -1903,33 +1903,39 @@ var g_zone_areas = {
4723: ['L\'colisée d\'Argent','Les Profondeurs Glacées'], 4723: ['L\'colisée d\'Argent','Les Profondeurs Glacées'],
4812: ['La Citadelle Inférieure','Le Rempart des Cranes','Ascension de Porte-mort','Le repaire de la reine du Givre','Les étages supérieurs','Quartiers Royaux','Le Trône Gelé','Deuillegivre'] 4812: ['La Citadelle Inférieure','Le Rempart des Cranes','Ascension de Porte-mort','Le repaire de la reine du Givre','Les étages supérieurs','Quartiers Royaux','Le Trône Gelé','Deuillegivre']
}; };
var g_zone_categories = { var g_zone_categories = {
0:"Royaumes de l'est", 0: "Royaumes de l'est",
1:"Kalimdor", 1: "Kalimdor",
8:"Outreterre", 2: "Donjons",
10:"Norfendre", 3: "Raids",
2:"Donjons", 4: "Inutilisées",
3:"Raids", 6: "Champs de bataille",
6:"Champs de bataille", 8: "Outreterre",
9:"Arènes" 9: "Arènes",
10: "Norfendre"
}; };
var g_zone_instancetypes = { var g_zone_instancetypes = {
1:"Transit", 1: "Transit",
2:"Donjon", 2: "Donjon",
3:"Raid", 3: "Raid", // Classic
4:"Champ de bataille", 4: "Champ de bataille",
5:"Donjon", 5: "Donjon", // Heroic
6:"Arène", 6: "Arène",
7:"Raid", 7: "Raid", // 10-25
8:"Raid" 8: "Raid" // 10-25 Heroic
}; };
var g_zone_territories = { var g_zone_territories = {
0:"Alliance", 0: "Alliance",
1:"Horde", 1: "Horde",
2:"Contesté", 2: "Contesté",
3:"Sanctuaire", 3: "Sanctuaire",
4:"JcJ" 4: "JcJ",
5: "JcJ Global"
}; };
var g_faction_categories = { var g_faction_categories = {
"0":"Autre", "0":"Autre",
"469":"Alliance", "469":"Alliance",

View File

@@ -1903,33 +1903,39 @@ var g_zone_areas = {
4723: ['Колизей Серебряного Авангарда','Ледяные глубины'], 4723: ['Колизей Серебряного Авангарда','Ледяные глубины'],
4812: ['Нижний ярус','Черепной вал','Подъем Смертоносного','Логово Королевы Льда','Верхний ярус','Королевские палаты','Ледяной Трон','Ледяная Скорбь'] 4812: ['Нижний ярус','Черепной вал','Подъем Смертоносного','Логово Королевы Льда','Верхний ярус','Королевские палаты','Ледяной Трон','Ледяная Скорбь']
}; };
var g_zone_categories = { var g_zone_categories = {
0:"Восточные королевства", 0: "Восточные королевства",
1:"Калимдор", 1: "Калимдор",
8:"Запределье", 2: "Подземелья",
10:"Нордскол", 3: "Рейды",
2:"Подземелья", 4: "Неактивно",
3:"Рейды", 6: "Поля боя",
6:"Поля боя", 8: "Запределье",
9:"Арены" 9: "Арены",
10: "Нордскол"
}; };
var g_zone_instancetypes = { var g_zone_instancetypes = {
1:"Транзит", 1: "Транзит",
2:"Подземелье", 2: "Подземелье",
3:"Рейд", 3: "Рейд", // Classic
4:"Поле боя", 4: "Поле боя",
5:"Подземелье", 5: "Подземелье", // Heroic
6:"Арена", 6: "Арена",
7:"Рейд", 7: "Рейд", // 10-25
8:"Рейд" 8: "Рейд" // 10-25 Heroic
}; };
var g_zone_territories = { var g_zone_territories = {
0:"Альянс", 0: "Альянс",
1:"Орда", 1: "Орда",
2:"Оспариваемая", 2: "Оспариваемая",
3:"Святилище", 3: "Святилище",
4:"PvP" 4: "PvP",
5: "Мировое PvP"
}; };
var g_faction_categories = { var g_faction_categories = {
"0":"Другое", "0":"Другое",
"980":"The Burning Crusade", "980":"The Burning Crusade",