From e65315dd3ce31f30d18c5e8bcf141b7b41190db1 Mon Sep 17 00:00:00 2001 From: Sarjuuk Date: Sun, 20 Jan 2013 00:56:58 +0100 Subject: [PATCH] Implement Titles and while doing so... - decrypted listview.templates - achievemnts, quests, titles - removed ancient hacks for Opera from JS wich prevented capturing of some Key/Mouse-Events in Opera Pease note, that the CharTitles.dbc alone doesn't provide enough data to generate these pages. The script to generate ?_titles and ?_sourceStrings will be provided soon [TM] --- includes/class.achievement.php | 387 +++++ includes/class.community.php | 71 + includes/class.quest.php | 214 +++ includes/class.title.php | 75 + includes/class.worldevent.php | 18 + localization/locale_dede.php | 4 +- localization/locale_enus.php | 4 +- localization/locale_eses.php | 29 +- localization/locale_frfr.php | 28 +- localization/locale_ruru.php | 28 +- pages/title.php | 113 ++ pages/titles.php | 105 ++ template/bricks/achievement_table.tpl | 33 + template/bricks/allachievements_table.tpl | 6 + template/bricks/alltitles_table.tpl | 9 + template/bricks/community.tpl | 68 + template/bricks/infobox.tpl | 13 + template/bricks/quest_table.tpl | 71 + template/bricks/title_table.tpl | 33 + template/css/global.css | 19 +- template/js/Summary.js | 2 +- template/js/global.js | 1598 +++++++++++---------- template/js/locale_dede.js | 5 +- template/js/locale_enus.js | 3 +- template/title.tpl | 47 + template/titles.tpl | 20 + 26 files changed, 2214 insertions(+), 789 deletions(-) create mode 100644 includes/class.achievement.php create mode 100644 includes/class.community.php create mode 100644 includes/class.quest.php create mode 100644 includes/class.title.php create mode 100644 includes/class.worldevent.php create mode 100644 pages/title.php create mode 100644 pages/titles.php create mode 100644 template/bricks/achievement_table.tpl create mode 100644 template/bricks/allachievements_table.tpl create mode 100644 template/bricks/alltitles_table.tpl create mode 100644 template/bricks/community.tpl create mode 100644 template/bricks/infobox.tpl create mode 100644 template/bricks/quest_table.tpl create mode 100644 template/bricks/title_table.tpl create mode 100644 template/title.tpl create mode 100644 template/titles.tpl diff --git a/includes/class.achievement.php b/includes/class.achievement.php new file mode 100644 index 00000000..4ef68740 --- /dev/null +++ b/includes/class.achievement.php @@ -0,0 +1,387 @@ +template['iconString']) + $this->template['iconString'] = 'INV_Misc_QuestionMark'; + } + + public function getListviewData() + { + return array( + 'id' => $this->Id, + 'name' => Util::localizedString($this->template, 'name'), + 'description' => Util::localizedString($this->template, 'description'), + 'points' => $this->template['points'], + 'faction' => $this->template['faction'] + 1, + 'category' => $this->template['category'], + 'parentCat' => $this->template['parentCat'], + 'rewards' => empty($this->template['rewards']) ? NULL : $this->template['rewards'], + 'reward' => empty($this->template['reward_loc'.User::$localeId]) ? NULL : Util::localizedString($this->template, 'reward'), + ); + } + + // hmm, really needed? .. probably .. needs rename? .. also probably + public function getDetailedData() + { + return array( + 'id' => $this->Id, + 'name' => Util::localizedString($this->template, 'name'), + 'description' => Util::localizedString($this->template, 'description'), + 'points' => $this->template['points'], + 'iconname' => $this->template['iconString'], + 'count' => $this->template['reqCriteriaCount'], + 'reward' => empty($this->template['reward_loc'.User::$localeId]) ? NULL : Util::localizedString($this->template, 'reward'), + ); + } + + public function getCriteria($idx = -1) + { + if (empty($this->criteria)) + { + $result = DB::Aowow()->Select('SELECT * FROM ?_achievementcriteria WHERE `refAchievement` = ? ORDER BY `order` ASC', $this->Id); + if (!$result) + return array(); + + if (is_array($result[0])) + $this->criteria = $result; + else + $this->criteria[] = $result; + } + + if ($idx < 0) + return $this->criteria; + else + return $this->criteria[$idx]; + } + + public function addSelfToJScript(&$gAchievements) + { + $gAchievements[$this->Id] = array( + 'icon' => $this->template['iconString'], + 'name' => Util::localizedString($this->template, 'name'), + ); + } + + public function addRewardsToJscript(&$gItems, &$gTitles) + { + $rewards = explode(" ", $this->template['rewardIds']); + + $lookup = []; + foreach ($rewards as $reward) + { + if ($reward > 0) + $lookup['item'][] = $reward; + else if ($reward < 0) + $lookup['title'][] = -$reward; + } + + if (isset($lookup['item'])) + { + $rewItems = new ItemList(array(['i.entry', $lookup['item']])); + $rewItems->addSelfToJScript($gItems); + } + + if (isset($lookup['title'])) + { + $rewTitles = new TitleList(array(['Id', $lookup['title']])); + $rewTitles->addSelfToJScript($gTitles); + } + } + + public function createTooltip() + { + if (!empty($this->tooltip)) + return $this->tooltip; + + $criteria = $this->getCriteria(); + $tmp = array(); + $rows = array(); + $i = 0; + foreach ($criteria as $_row) + { + if($i++ % 2) + $tmp[] = $_row; + else + $rows[] = $_row; + } + if ($tmp) + $rows = array_merge($rows, $tmp); + + $description = Util::localizedString($this->template, 'description'); + $name = Util::localizedString($this->template, 'name'); + $criteria = ''; + + $i = 0; + foreach ($rows as $crt) + { + // we could show them, but the tooltips are cluttered + if (($crt['complete_flags'] & ACHIEVEMENT_CRITERIA_FLAG_HIDDEN) && User::$perms <= 0) + continue; + + $crtName = Util::jsEscape(Util::localizedString($crt, 'name')); + switch ($crt['type']) + { + case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET: + case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2: + case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL: + case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL: + case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: + if (!$crtName) + $crtName = Spell::getName($crt['value1']); + break; + case ACHIEVEMENT_CRITERIA_TYPE_OWN_ITEM: + case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM: + case ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM: + case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_ITEM: + if (!$crtName) + $crtName = Item::getName($crt['value1']); + break; + case ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION: + if (!$crtName) + $crtName = Faction::getName($crt['value1']); + $crtName .= ' ('.Lang::getReputationLevelForPoints($crt['value2']).')'; + break; + } + + if ($crt['complete_flags'] & ACHIEVEMENT_CRITERIA_FLAG_MONEY_COUNTER) + $criteria .= '- '.Util::jsEscape(htmlspecialchars($crtName)).' '.number_format($crt['value2' ] / 10000).'
'; + else + $criteria .= '- '.Util::jsEscape(htmlspecialchars($crtName)).'
'; + + if (++$i == round(count($rows)/2)) + $criteria .= ''; + } + + $x = '
'; + $x .= Util::jsEscape(htmlspecialchars($name)); + $x .= '
'; + if ($description || $criteria) + $x .= '
'; + + if ($description) + $x .= '
'.Util::jsEscape(htmlspecialchars($description)).'
'; + + if ($criteria) + { + $x .= '
'.Lang::$achievement['criteria'].':'; + $x .= '
'.$criteria.'
'; + } + if ($description || $criteria) + $x .= '
'; + + // Completed + $this->tooltip = $x; + + return $this->tooltip; + } + + public function getSourceData() + { + return array( + "n" => Util::localizedString($this->template, 'name'), + "s" => $this->template['faction'], + "t" => TYPEID_ACHIEVEMENT, + "ti" => $this->Id + ); + } +} + + + +class AchievementList extends BaseTypeList +{ + protected $setupQuery = 'SELECT *, Id AS ARRAY_KEY FROM ?_achievement WHERE [filter] [cond] GROUP BY Id ORDER BY `orderInGroup` ASC'; + + public function __construct($conditions) + { + // may be called without filtering + if (class_exists('AchievementFilter')) + { + $this->filter = new AchievementFilter(); + if (($fiData = $this->filter->init()) === false) + return; + } + + parent::__construct($conditions); + + // post processing + foreach ($this->container as $k => $acv) + { + //"rewards":[[11,137],[3,138]] [what, entry] 3:item; 11:title, 6:spell(unused) + if (!empty($acv->template['rewardIds'])) + { + $rewards = array(); + $rewIds = explode(" ", $acv->template['rewardIds']); + foreach ($rewIds as $rewId) + $rewards[] = ($rewId > 0 ? "[3,".$rewId."]" : ($rewId < 0 ? "[11,".-$rewId."]" : NULL)); + + $this->container[$k]->template['rewards'] = "[".implode(",",$rewards)."]"; + } + } + } + + public function addRewardsToJScript(&$gItems, &$gTitles) + { + // collect Ids to execute in single query + $lookup = []; + + foreach ($this->container as $id => $data) + { + $rewards = explode(" ", $data->template['rewardIds']); + + foreach ($rewards as $reward) + { + if ($reward > 0) + $lookup['item'][] = $reward; + else if ($reward < 0) + $lookup['title'][] = -$reward; + } + } + + if (isset($lookup['item'])) + { + $rewItems = new ItemList(array(['i.entry', array_unique($lookup['item'])])); + $rewItems->addSelfToJScript($gItems); + } + + if (isset($lookup['title'])) + { + $rewTitles = new TitleList(array(['Id', array_unique($lookup['title'])])); + $rewTitles->addSelfToJScript($gTitles); + } + } + + // run once + public function setupAchievements() + { + set_time_limit(120); + + // add serverside achievements + DB::Aowow()->Query( + "INSERT IGNORE INTO + ?_achievement + SELECT + ID, + requiredFaction, + mapID, + 0, + 0, + 0, + points, + 0, + 0, + '', + flags, + count, + refAchievement, + '', + 0x10, + CONCAT('SERVERSIDE (', ID, ')'), + CONCAT('SERVERSIDE (', ID, ')'), + CONCAT('SERVERSIDE (', ID, ')'), + CONCAT('SERVERSIDE (', ID, ')'), + CONCAT('SERVERSIDE (', ID, ')'), + '', + '', + '', + '', + '', + '', + '', + '', + '', + '' + FROM + world.achievement_dbc" + ); + + foreach ($this->container as $acv) + { + // set iconString + $icon = DB::Aowow()->SelectCell('SELECT iconname FROM ?_spellicons WHERE id = ?d', $acv->template['iconId']); + + // set parentCat + $parentCat = DB::Aowow()->SelectCell('SELECT parentCategory FROM ?_achievementcategory WHERE Id = ?d', $acv->template['category']); + + // series parent(16) << child(16) + $series = $acv->template['parent'] << 16; + $series |= DB::Aowow()->SelectCell('SELECT Id FROM ?_achievement WHERE parent = ?d', $acv->Id); + + // set rewards + $rewardIds = array(); + if ($rStr = $acv->template['reward_loc0']) + { + + // i can haz title? + if (stristr($rStr, 'title reward:') || stristr($rStr, 'title:')) + { + $rStr = explode(':', $rStr); // head-b-gone + $rStr = str_replace('The Grand' ,'Grand', $rStr); + $rStr = explode('.', $rStr[1]); // Crusader + Crap + $rStr = explode('/', $rStr[0]); // Matron & Patron + $rStr = explode(' or ', $rStr[0]); // Alliance & Horde + + $rewardIds[] = DB::Aowow()->SelectCell('SELECT -Id FROM ?_titles WHERE name_loc0 LIKE ?s', '%'.trim($rStr[0]).'%'); + if (isset($rStr[1])) + $rewardIds[] = DB::Aowow()->SelectCell('SELECT -Id FROM ?_titles WHERE name_loc0 LIKE ?s', '%'.trim($rStr[1]).'%'); + } + else if (stristr($rStr, 'reward:')) // i haz item + { + if (in_array($acv->Id, [3656, 3478])) // Pilgrim + { + $rewardIds[] = -168; + $rewardIds[] = 44810; + } + else if (in_array($acv->Id, [1681, 1682])) // Loremaster + { + $rewardIds[] = -125; + $rewardIds[] = 43300; + } + else + { + $rStr = explode(':', $rStr)[1]; // head-b-gone + $rewardIds[] = DB::Aowow()->SelectCell('SELECT entry FROM item_template WHERE name LIKE ?s', '%'.Util::sqlEscape(trim($rStr))); + + if ($acv->Id == 1956) // higher learning + $rewardIds[] = 44738; // pet not in description + } + } + + } + else + continue; + + DB::Aowow()->Query( + 'UPDATE + ?_achievement + SET + rewardIds = ?s, + series = ?s, + parentCat = ?d, + iconString = ?s + WHERE + Id = ?d', + $series, + isset($rewardIds) ? implode(' ', $rewardIds) : '', + $parentCat, + $icon, + $acv->Id + ); + } + } +} +?> \ No newline at end of file diff --git a/includes/class.community.php b/includes/class.community.php new file mode 100644 index 00000000..d18a1739 --- /dev/null +++ b/includes/class.community.php @@ -0,0 +1,71 @@ +Query(" + SELECT + v.Id, + a.displayName AS user, + v.date, + v.videoId, + v.caption, + IF(v.status & 0x4, 1, 0) AS 'sticky' + FROM + ?_videos v, + ?_account a + WHERE + v.type = ? AND v.typeId = ? AND v.status & 0x2", + $type, + $typeId + ); + } + + private function getScreenshots($type, $typeId) + { + return DB::Aowow()->Query(" + SELECT + s.Id, + a.displayName AS user, + s.date, + s.width, + s.height, + s.caption, + IF(s.status & 0x4, 1, 0) AS 'sticky' + FROM + ?_screenshots s, + ?_account a + WHERE + s.type = ? AND s.typeId = ? AND s.status & 0x2", + $type, + $typeId + ); + } + + public function getAll($type, $typeId) + { + return array( + 'vi' => self::getVideos($type, $typeId), + 'sc' => self::getScreenshots($type, $typeId), + 'co' => self::getComments($type, $typeId) + ); + } +} +?> diff --git a/includes/class.quest.php b/includes/class.quest.php new file mode 100644 index 00000000..04792911 --- /dev/null +++ b/includes/class.quest.php @@ -0,0 +1,214 @@ +cat1 = $this->template['ZoneOrSort']; // should probably be in a method... + foreach (Util::$questClasses as $k => $arr) + { + if (in_array($this->cat1, $arr)) + { + $this->cat2 = $k; + break; + } + } + } + + public static function getName($id) + { + $n = DB::Aowow()->SelectRow(' + SELECT + title, + title_loc2, + title_loc3, + title_loc6, + title_loc8 + FROM + quest_template q, + locales_quest l + WHERE + q.id = l.entry AND + q.id = ?d', + $id + ); + return Util::localizedString($n, 'title'); + } + + public static function RewardXP($QuestLevel, $XPId) + { + if ($xp = DB::Aowow()->SelectCell('SELECT Field?d FROM ?_questxp WHERE Id = ?d', $XPId, $QuestLevel)) { + return $xp; + } + else + return 0; + } + + public function getSourceData() + { + return array( + "n" => Util::localizedString($this->template, 'Title'), + "t" => TYPEID_QUEST, + "ti" => $this->Id, + "c" => $this->cat1, + "c2" => $this->cat2 + ); + } + + public function getListviewData() + { + $data = array( + 'category' => $this->cat1, + 'category2' => $this->cat2, + 'id' => $this->Id, + 'level' => $this->template['Level'], + 'reqlevel' => $this->template['MinLevel'], + 'name' => Util::localizedString($this->template, 'Title'), + 'side' => Util::sideByRaceMask($this->template['RequiredRaces']) + ); + + $rewards = []; + for ($i = 1; $i < 5; $i++) + if ($this->template['RewardItemId'.$i]) + $rewards[] = [$this->template['RewardItemId'.$i], $this->template['RewardItemCount'.$i]]; + + $choices = []; + for ($i = 1; $i < 7; $i++) + if ($this->template['RewardChoiceItemId'.$i]) + $choices[] = [$this->template['RewardChoiceItemId'.$i], $this->template['RewardChoiceItemCount'.$i]]; + + if (!empty($rewards)) + $data['itemrewards'] = $rewards; + + if (!empty($choices)) + $data['itemchoices'] = $choices; + + if ($this->template['RewardTitleId']) + $data['titlereward'] = $this->template['RewardTitleId']; + + // todo reprewards .. accesses QuestFactionReward.dbc + + return $data; + } + + public function addRewardsToJscript(&$gItems, &$gSpells, &$gTitles) + { + // items + $items = []; + for ($i = 1; $i < 5; $i++) + if ($this->template['RewardItemId'.$i]) + $items[] = $this->template['RewardItemId'.$i]; + + for ($i = 1; $i < 7; $i++) + if ($this->template['RewardChoiceItemId'.$i]) + $items[] = $this->template['RewardChoiceItemId'.$i]; + + if (!empty($items)) + { + $items = new ItemList(array(['entry', $items])); + $items->addSelfToJScipt($gItems); + } + + // spells + $spells = []; + if ($this->template['RewardSpell']) + $spells[] = $this->template['RewardSpell']; + + if ($this->template['RewardSpellCast']) + $spells[] = $this->template['RewardSpellCast']; + + if (!empty($spells)) + { + $spells = new SpellList(array(['id', $spells])); + $spells->addSelfToJScipt($gSpells); + } + + // titles + if ($tId = $this->template['RewardTitleId']) + { + $title = new Title($tId); + $title->addSelfToJScript($gTitles); + } + } +} + + + +class QuestList extends BaseTypeList +{ + protected $setupQuery = 'SELECT *, Id AS ARRAY_KEY FROM quest_template a LEFT JOIN locales_quest b ON a.Id = b.entry WHERE [filter] [cond] ORDER BY Id ASC'; + + public function __construct($conditions) + { + // may be called without filtering + if (class_exists('QuestFilter')) + { + $this->filter = new QuestFilter(); + if (($fiData = $this->filter->init()) === false) + return; + } + + parent::__construct($conditions); + } + + public function addRewardsToJscript(&$gItems, &$gSpells, &$gTitles) + { + $items = []; + $spells = []; + $titles = []; + + foreach ($this->container as $quest) + { + // items + for ($i = 1; $i < 5; $i++) + if ($quest->template['RewardItemId'.$i]) + $items[] = $quest->template['RewardItemId'.$i]; + + for ($i = 1; $i < 7; $i++) + if ($quest->template['RewardChoiceItemId'.$i]) + $items[] = $quest->template['RewardChoiceItemId'.$i]; + + // spells + if ($quest->template['RewardSpell']) + $spells[] = $quest->template['RewardSpell']; + + if ($quest->template['RewardSpellCast']) + $spells[] = $quest->template['RewardSpellCast']; + + // titles + if ($quest->template['RewardTitleId']) + $titles[] = $quest->template['RewardTitleId']; + } + + if (!empty($items)) + { + $items = new ItemList(array(['i.entry', $items])); + $items->addSelfToJScript($gItems); + } + + if (!empty($spells)) + { + $spells = new SpellList(array(['id', $spells])); + $spells->addSelfToJScript($gSpells); + } + + if (!empty($titles)) + { + $titles = new TitleList(array(['id', $titles])); + $titles->addSelfToJScript($gTitles); + } + } +} + +?> diff --git a/includes/class.title.php b/includes/class.title.php new file mode 100644 index 00000000..8881df0b --- /dev/null +++ b/includes/class.title.php @@ -0,0 +1,75 @@ +name[GENDER_MALE] = Util::localizedString($this->template, 'male'); + if ($this->template['female_loc0'] || $this->template['female_loc'.User::$localeId]) + $this->name[GENDER_FEMALE] = Util::localizedString($this->template, 'female'); + + // preparse sources + if (!empty($this->template['source'])) + { + $sources = explode(' ', $this->template['source']); + foreach ($sources as $src) + { + $src = explode(':', $src); + $this->source[$src[0]][] = $src[1]; + } + } + } + + public function getListviewData() + { + $data = array( + 'id' => $this->Id, + 'name' => $this->name[GENDER_MALE], + 'side' => $this->template['side'], + 'gender' => $this->template['gender'], + 'expansion' => $this->template['expansion'], + 'category' => $this->template['category'], + 'source' => $this->source + ); + + if (isset($this->name[GENDER_FEMALE])) + $data['namefemale'] = $this->name[GENDER_FEMALE]; + + return $data; + } + + public function addSelfToJScript(&$gTitles) + { + $gTitles[$this->Id] = ['name' => Util::jsEscape($this->name[GENDER_MALE])]; + + if (isset($this->name[GENDER_FEMALE])) + $gTitles[$this->Id]['namefemale'] = Util::jsEscape($this->name[GENDER_FEMALE]); + + return true; + } + + public function getHtmlizedName($gender = GENDER_MALE) + { + return str_replace('%s', '<Name>', $this->name[$gender]); + } +} + + + +class TitleList extends BaseTypeList +{ + protected $setupQuery = 'SELECT *, Id AS ARRAY_KEY FROM ?_titles WHERE [cond] ORDER BY Id ASC'; +} + +?> diff --git a/includes/class.worldevent.php b/includes/class.worldevent.php new file mode 100644 index 00000000..d9741073 --- /dev/null +++ b/includes/class.worldevent.php @@ -0,0 +1,18 @@ +SelectRow('SELECT * FROM ?_holidays WHERE Id = ?d', intVal($id)); + + return Util::localizedString($row, 'name'); + } +} + + +?> \ No newline at end of file diff --git a/localization/locale_dede.php b/localization/locale_dede.php index c6dd3da7..ccd24f9d 100644 --- a/localization/locale_dede.php +++ b/localization/locale_dede.php @@ -1,4 +1,4 @@ - array( 'link' => "Link", 'signIn' => "Anmelden", 'jsError' => "Stelle bitte sicher, dass JavaScript aktiviert ist.", 'searchButton' => "Suche", 'language' => "Sprache", 'numSQL' => "Anzahl an MySQL-Queries", 'timeSQL' => "Zeit für MySQL-Queries", 'noJScript' => "Diese Seite macht ausgiebigen Gebrauch von JavaScript.
Bitte aktiviert JavaScript in Eurem Browser.", 'profiles' => "Deine Charaktere", 'links' => "Links", 'pageNotFound' => "Diese|Dieser|Dieses %s existiert nicht.", // todo: dämliche Fälle... 'alliance' => "Allianz", 'horde' => "Horde", 'both' => "Beide", 'quickFacts' => "Kurzübersicht", 'screenshots' => "Screenshots", 'videos' => "Videos", 'side' => "Seite", 'related' => "Weiterführende Informationen", 'contribute' => "Beitragen", // 'replyingTo' => "Antwort zu einem Kommentar von", 'submit' => "Absenden", 'cancel' => "Abbrechen", 'rewards' => "Belohnungen", 'gains' => "Belohnungen", 'login' => "Login", 'class' => "Klasse", 'forum' => "Forum", 'days' => "Tage", 'hours' => "Stunden", 'minutes' => "Minuten", 'seconds' => "Sekunden", 'millisecs' => "Millisekunden", 'daysAbbr' => "T", 'hoursAbbr' => "Std.", 'minutesAbbr' => "Min.", 'secondsAbbr' => "Sek.", 'millisecsAbbr' => "Ms", 'name' => "Name", // err_title = Fehler in AoWoW // un_err = Gib bitte deinen Benutzernamen ein // pwd_err = Gib bitte dein Passwort ein // signin_msg = Gib bitte deinen Accountnamen ein // c_pwd = Passwort wiederholen // create_filter = Filter erstellen // loading = Lädt ... // soldby = Verkauft von // droppedby = Gedroppt von // containedinobject = Enthalten in // containedinitem = Enthalten in Item // contain = Enthält // objectiveof = Ziel von // rewardof = Belohnung von // facts = Übersicht // pickpocketingloot = Gestohlen von // prospectedfrom = Sondiert aus // canbeplacedin = Kann abgelegt werden in // minedfromobject = Abgebaut aus // gatheredfromobject = Gesammelt von // items = Gegenstände // objects = Objekte // quests = Quests // npcs = NPCs // drop = Drop // starts = Startet // ends = Beendet // skinning = Kürschnerei // pickpocketing = Taschendiebstahl // sells = Verkauft // reputationwith = Ruf mit der Fraktion // experience = Erfahrung // uponcompletionofthisquestyouwillgain = Bei Abschluss dieser Quest erhaltet Ihr // reagentfor = Reagenz für // skinnedfrom = Gekürschnert von // disenchanting = Entzaubern // This_Object_cant_be_found = Der Standort dieses Objekts ist nicht bekannt. // itemsets = Sets // Spells = Zauber // Items = Gegenstände // Quests = Quests // Factions = Fraktionen // Item_Sets = Sets // Compare = Gegenstandsvergleichswerkzeug // NPCs = NPCs // Objects = Objekte // My_account = Mein Account // Comments = Kommentare // Latest_Comments = Neuste Kommentare // day = Tag. // hr = Std. // min = Min. // sec = Sek. // Respawn = Respawn // Class = Klasse // class = Klasse // race = Volk // Race = Volk // Races = Völker 'disabled' => "Deaktiviert", 'disabledHint' => "Kann nicht erhalten oder abgeschlossen werden.", 'serverside' => "Serverseitig", 'serversideHint' => "Diese Informationen sind nicht im Client enthalten und wurden durch Sniffing zusammengetragen und/oder erraten.", ), 'game' => array( 'requires' => "Benötigt", 'cooldown' => "%s Cooldown", 'classes' => "Klassen", 'races' => "Völker", 'reqLevel' => "Benötigt Stufe %s", 'reqLevelHlm' => "Benötigt Stufe %s", 'valueDelim' => " - ", // " bis " 'resistances' => array(null, 'Heiligwiderstand', 'Feuerwiderstand', 'Naturwiderstand', 'Frostwiderstand', 'Schattenwiderstand', 'Arkanwiderstand'), 'sc' => array("Körperlich", "Heilig", "Feuer", "Natur", "Frost", "Schatten", "Arkan"), 'di' => array(null, "Magie", "Fluch", "Krankheit", "Gift", "Verstohlenheit", "Unsichtbarkeit", null, null, "Wut"), 'cl' => array("UNK_CL0", "Krieger", "Paladin", "Jäger", "Schurke", "Priester", "Todesritter", "Schamane", "Magier", "Hexenmeister", 'UNK_CL10', "Druide"), 'ra' => array(-2 => "Horde", -1 => "Allianz", "Beide", "Mensch", "Orc", "Zwerg", "Nachtelf", "Untoter", "Taure", "Gnom", "Troll", 'UNK_RA9', "Blutelf", "Draenei"), 'rep' => array("Hasserfüllt", "Feindselig", "Unfreundlich", "Neutral", "Freundlich", "Wohlwollend", "Respektvoll", "Ehrfürchtig"), 'st' => array( null, "Katzengestalt", "Baum des Lebens", "Reisegestalt", "Wassergestalt", "Bärengestalt", null, null, "Terrorbärengestalt", null, null, null, null, "Schattentanz", null, null, "Geisterwolf", "Kampfhaltung", "Verteidigungshaltung", "Berserkerhaltung", null, null, "Metamorphosis", null, null, null, null, "Schnelle Fluggestalt", "Schattengestalt", "Fluggestalt", "Verstohlenheit", "Mondkingestalt", "Geist der Erlösung" ), 'pvpRank' => array( null, "Gefreiter / Späher", "Fußknecht / Grunzer", "Landsknecht / Waffenträger", "Feldwebel / Schlachtrufer", "Fähnrich / Rottenmeister", "Leutnant / Steingardist", "Hauptmann / Blutgardist", "Kürassier / Zornbringer", "Ritter der Allianz / Klinge der Horde", "Feldkomandant / Feldherr", "Rittmeister / Sturmreiter", "Marschall / Kriegsherr", "Feldmarschall / Kriegsfürst", "Großmarschall / Oberster Kriegsfürst" ), ), 'filter' => array( 'extSearch' => "Erweiterte Suche", 'onlyAlliance' => "Nur für Allianz", 'onlyHorde' => "Nur für Horde", 'addFilter' => "Weiteren Filter hinzufügen", 'match' => "Verwendete Filter", 'allFilter' => "Alle Filters", 'oneFilter' => "Mindestens einer", 'applyFilter' => "Filter anwenden", 'resetForm' => "Formular zurücksetzen", 'refineSearch' => "Tipp: Präzisiere deine Suche mit Durchsuchen einer Unterkategorie.", ), 'error' => array( 'errNotFound' => "Seite nicht gefunden", 'errPage' => "Was? Wie hast du... vergesst es!\n
\n
\nAnscheinend konnte die von Euch angeforderte Seite nicht gefunden werden. Wenigstens nicht in dieser Dimension.\n
\n
\nVielleicht lassen einige Justierungen an der\n\n[WH-799 Großkonfabulierungsmaschine]\n\ndie Seite plötzlich wieder auftauchen!\n
\n
\nOder, Ihr könnt es auch \nuns melden\n- die Stabilität des WH-799 ist umstritten, und wir möchten gern noch so ein Problem vermeiden...", 'goStart' => "Zur Titelseite zurückkehren", 'goForum' => "Forum für Rückmeldungen", ), 'account' => array( 'doSignIn' => "Mit Eurem AoWoW-Konto anmelden", 'user' => "Benutzername", 'pass' => "Kennwort", 'rememberMe' => "Angemeldet bleiben", 'forgot' => "Vergessen", 'accNoneYet' => "Noch kein Konto", 'accCreateNow' => "Jetzt eins erstellen", 'userNotFound' => "Ein Konto mit diesem Namen existiert nicht", 'userBanned' => "Dieses Konto wurde geschlossen", 'passMismatch' => "Die eingegebenen Passwörter stimmen nicht überein", 'loginsExceeded' => "Die maximale Anzahl an Login-Versuchen von dieser IP wurde überschritten. Bitte versuchen Sie es in %s Minuten noch einmal.", 'nameInUse' => "Es existiert bereits ein Konto mit diesem Namen", 'email' => "E-Mail-Adresse", 'unkError' => "Unbekannter Fehler bei der Accounterstellung", 'accCreate' => "Konto erstellen", 'passConfirm' => "Passwort bestätigen", 'signup' => "Anmelden", 'requestName' => "Username Request", 'resetPass' => "Password Reset", 'emailInvalid' => "Diese E-Mail-Adresse ist ungültig.", 'emailUnknown' => "Die E-Mail-Adresse, die Ihr eingegeben habt, ist mit keinem Konto verbunden.

Falls Ihr die E-Mail-Adresse vergessen habt, mit der Ihr Euer Konto erstellt habt, kontaktiert Ihr bitte feedback@aowow.com für Hilfestellung.", 'passJustSend' => "Eine Nachricht mit einem neuen Passwort wurde soeben an %s versandt.", 'nameJustSend' => "Eine Nachricht mit Eurem Benutzernamen wurde soeben an %s versandt.", 'wrongPass' => "Falsches Passwort", 'ipAddress' => "IP-Adresse", 'lastIP' => "Letzte bekannte IP", 'joinDate' => "Mitglied seit", 'lastLogin' => "Letzter Besuch", 'userGroups' => "Role", 'myAccount' => "Mein Account", 'editAccount' => "Benutze die folgenden Formulare um deine Account-Informationen zu aktualisieren", 'publicDesc' => "Öffentliche Beschreibung", 'viewPublicDesc' => "Die Beschreibung in deinem öffetnlichen Profil ansehen", // Please_enter_your_confirm_password = Bitte das Passwort bestätigen // Please_enter_your_username = Gib bitte deinen Benutzernamen ein // Please_enter_your_password = Gib bitte dein Kennwort ein // Remember_me_on_this_computer = Auf diesem Computer merken ), 'achievement' => array( 'achievements' => "Erfolge", 'criteria' => "Kriterien", 'achievement' => "Erfolg", 'points' => "Punkte", 'series' => "Reihe", 'outOf' => "von", 'criteriaType' => "Criterium Typ-Id:", 'itemReward' => "Ihr bekommt:", 'titleReward' => "Euch wird der Titel \"%s\" verliehen", 'slain' => "getötet", ), 'compare' => array( 'compare' => "Gegenstandsvergleichswerkzeug", ), 'talent' => array( 'talentCalc' => "Talentrechner", 'petCalc' => "Begleiterrechner", 'chooseClass' => "Wählt eine Klasse", 'chooseFamily' => "Wählt eine Tierart", ), 'maps' => array( 'maps' => "Karten", 'linkToThisMap' => "Link zu dieser Karte", 'clear' => "Zurücksetzen", 'EasternKingdoms' => "Östliche Königreiche", + array( 'link' => "Link", 'signIn' => "Anmelden", 'jsError' => "Stelle bitte sicher, dass JavaScript aktiviert ist.", 'searchButton' => "Suche", 'language' => "Sprache", 'numSQL' => "Anzahl an MySQL-Queries", 'timeSQL' => "Zeit für MySQL-Queries", 'noJScript' => "Diese Seite macht ausgiebigen Gebrauch von JavaScript.
Bitte aktiviert JavaScript in Eurem Browser.", 'profiles' => "Deine Charaktere", 'links' => "Links", 'pageNotFound' => "Diese|Dieser|Dieses %s existiert nicht.", // todo: dämliche Fälle... 'both' => "Beide", 'gender' => "Geschlecht", 'sex' => [null, 'Mann', 'Frau'], 'quickFacts' => "Kurzübersicht", 'screenshots' => "Screenshots", 'videos' => "Videos", 'side' => "Seite", 'related' => "Weiterführende Informationen", 'contribute' => "Beitragen", // 'replyingTo' => "Antwort zu einem Kommentar von", 'submit' => "Absenden", 'cancel' => "Abbrechen", 'rewards' => "Belohnungen", 'gains' => "Belohnungen", 'login' => "Login", 'forum' => "Forum", 'days' => "Tage", 'hours' => "Stunden", 'minutes' => "Minuten", 'seconds' => "Sekunden", 'millisecs' => "Millisekunden", 'daysAbbr' => "T", 'hoursAbbr' => "Std.", 'minutesAbbr' => "Min.", 'secondsAbbr' => "Sek.", 'millisecsAbbr' => "Ms", 'name' => "Name", // err_title = Fehler in AoWoW // un_err = Gib bitte deinen Benutzernamen ein // pwd_err = Gib bitte dein Passwort ein // signin_msg = Gib bitte deinen Accountnamen ein // c_pwd = Passwort wiederholen // create_filter = Filter erstellen // loading = Lädt ... // soldby = Verkauft von // droppedby = Gedroppt von // containedinobject = Enthalten in // containedinitem = Enthalten in Item // contain = Enthält // objectiveof = Ziel von // rewardof = Belohnung von // facts = Übersicht // pickpocketingloot = Gestohlen von // prospectedfrom = Sondiert aus // canbeplacedin = Kann abgelegt werden in // minedfromobject = Abgebaut aus // gatheredfromobject = Gesammelt von // items = Gegenstände // objects = Objekte // quests = Quests // npcs = NPCs // drop = Drop // starts = Startet // ends = Beendet // skinning = Kürschnerei // pickpocketing = Taschendiebstahl // sells = Verkauft // reputationwith = Ruf mit der Fraktion // experience = Erfahrung // uponcompletionofthisquestyouwillgain = Bei Abschluss dieser Quest erhaltet Ihr // reagentfor = Reagenz für // skinnedfrom = Gekürschnert von // disenchanting = Entzaubern // This_Object_cant_be_found = Der Standort dieses Objekts ist nicht bekannt. // itemsets = Sets // Spells = Zauber // Items = Gegenstände // Quests = Quests // Factions = Fraktionen // Item_Sets = Sets // Compare = Gegenstandsvergleichswerkzeug // NPCs = NPCs // Objects = Objekte // My_account = Mein Account // Comments = Kommentare // Latest_Comments = Neuste Kommentare // day = Tag. // hr = Std. // min = Min. // sec = Sek. // Respawn = Respawn // Class = Klasse // class = Klasse // race = Volk // Race = Volk // Races = Völker 'disabled' => "Deaktiviert", 'disabledHint' => "Kann nicht erhalten oder abgeschlossen werden.", 'serverside' => "Serverseitig", 'serversideHint' => "Diese Informationen sind nicht im Client enthalten und wurden durch Sniffing zusammengetragen und/oder erraten.", ), 'search' => array( 'search' => "Suche", 'foundResult' => "Suchergebnisse für", 'noResult' => "Keine Ergebnisse für", 'tryAgain' => "Bitte versucht es mit anderen Suchbegriffen oder überprüft deren Schreibweise.", ), 'game' => array( 'alliance' => "Allianz", 'horde' => "Horde", 'class' => "Klasse", 'classes' => "Klassen", 'races' => "Völker", 'title' => "Titel", 'titles' => "Titel", 'eventShort' => "Ereignis", 'event' => "Weltereigniss", 'events' => "Weltereignisse", 'cooldown' => "%s Cooldown", 'requires' => "Benötigt", 'reqLevel' => "Benötigt Stufe %s", 'reqLevelHlm' => "Benötigt Stufe %s", 'valueDelim' => " - ", // " bis " 'resistances' => array(null, 'Heiligwiderstand', 'Feuerwiderstand', 'Naturwiderstand', 'Frostwiderstand', 'Schattenwiderstand', 'Arkanwiderstand'), 'sc' => array("Körperlich", "Heilig", "Feuer", "Natur", "Frost", "Schatten", "Arkan"), 'di' => array(null, "Magie", "Fluch", "Krankheit", "Gift", "Verstohlenheit", "Unsichtbarkeit", null, null, "Wut"), 'cl' => array("UNK_CL0", "Krieger", "Paladin", "Jäger", "Schurke", "Priester", "Todesritter", "Schamane", "Magier", "Hexenmeister", 'UNK_CL10', "Druide"), 'ra' => array(-2 => "Horde", -1 => "Allianz", "Beide", "Mensch", "Orc", "Zwerg", "Nachtelf", "Untoter", "Taure", "Gnom", "Troll", 'UNK_RA9', "Blutelf", "Draenei"), 'rep' => array("Hasserfüllt", "Feindselig", "Unfreundlich", "Neutral", "Freundlich", "Wohlwollend", "Respektvoll", "Ehrfürchtig"), 'st' => array( null, "Katzengestalt", "Baum des Lebens", "Reisegestalt", "Wassergestalt", "Bärengestalt", null, null, "Terrorbärengestalt", null, null, null, null, "Schattentanz", null, null, "Geisterwolf", "Kampfhaltung", "Verteidigungshaltung", "Berserkerhaltung", null, null, "Metamorphosis", null, null, null, null, "Schnelle Fluggestalt", "Schattengestalt", "Fluggestalt", "Verstohlenheit", "Mondkingestalt", "Geist der Erlösung" ), 'pvpRank' => array( null, "Gefreiter / Späher", "Fußknecht / Grunzer", "Landsknecht / Waffenträger", "Feldwebel / Schlachtrufer", "Fähnrich / Rottenmeister", "Leutnant / Steingardist", "Hauptmann / Blutgardist", "Kürassier / Zornbringer", "Ritter der Allianz / Klinge der Horde", "Feldkomandant / Feldherr", "Rittmeister / Sturmreiter", "Marschall / Kriegsherr", "Feldmarschall / Kriegsfürst", "Großmarschall / Oberster Kriegsfürst" ), ), 'filter' => array( 'extSearch' => "Erweiterte Suche", 'onlyAlliance' => "Nur für Allianz", 'onlyHorde' => "Nur für Horde", 'addFilter' => "Weiteren Filter hinzufügen", 'match' => "Verwendete Filter", 'allFilter' => "Alle Filters", 'oneFilter' => "Mindestens einer", 'applyFilter' => "Filter anwenden", 'resetForm' => "Formular zurücksetzen", 'refineSearch' => "Tipp: Präzisiere deine Suche mit Durchsuchen einer Unterkategorie.", ), 'error' => array( 'errNotFound' => "Seite nicht gefunden", 'errPage' => "Was? Wie hast du... vergesst es!\n
\n
\nAnscheinend konnte die von Euch angeforderte Seite nicht gefunden werden. Wenigstens nicht in dieser Dimension.\n
\n
\nVielleicht lassen einige Justierungen an der\n\n[WH-799 Großkonfabulierungsmaschine]\n\ndie Seite plötzlich wieder auftauchen!\n
\n
\nOder, Ihr könnt es auch \nuns melden\n- die Stabilität des WH-799 ist umstritten, und wir möchten gern noch so ein Problem vermeiden...", 'goStart' => "Zur Titelseite zurückkehren", 'goForum' => "Forum für Rückmeldungen", ), 'account' => array( 'doSignIn' => "Mit Eurem AoWoW-Konto anmelden", 'user' => "Benutzername", 'pass' => "Kennwort", 'rememberMe' => "Angemeldet bleiben", 'forgot' => "Vergessen", 'accNoneYet' => "Noch kein Konto", 'accCreateNow' => "Jetzt eins erstellen", 'userNotFound' => "Ein Konto mit diesem Namen existiert nicht", 'userBanned' => "Dieses Konto wurde geschlossen", 'passMismatch' => "Die eingegebenen Passwörter stimmen nicht überein", 'loginsExceeded' => "Die maximale Anzahl an Login-Versuchen von dieser IP wurde überschritten. Bitte versuchen Sie es in %s Minuten noch einmal.", 'nameInUse' => "Es existiert bereits ein Konto mit diesem Namen", 'email' => "E-Mail-Adresse", 'unkError' => "Unbekannter Fehler bei der Accounterstellung", 'accCreate' => "Konto erstellen", 'passConfirm' => "Passwort bestätigen", 'signup' => "Anmelden", 'requestName' => "Username Request", 'resetPass' => "Password Reset", 'emailInvalid' => "Diese E-Mail-Adresse ist ungültig.", 'emailUnknown' => "Die E-Mail-Adresse, die Ihr eingegeben habt, ist mit keinem Konto verbunden.

Falls Ihr die E-Mail-Adresse vergessen habt, mit der Ihr Euer Konto erstellt habt, kontaktiert Ihr bitte feedback@aowow.com für Hilfestellung.", 'passJustSend' => "Eine Nachricht mit einem neuen Passwort wurde soeben an %s versandt.", 'nameJustSend' => "Eine Nachricht mit Eurem Benutzernamen wurde soeben an %s versandt.", 'wrongPass' => "Falsches Passwort", 'ipAddress' => "IP-Adresse", 'lastIP' => "Letzte bekannte IP", 'joinDate' => "Mitglied seit", 'lastLogin' => "Letzter Besuch", 'userGroups' => "Role", 'myAccount' => "Mein Account", 'editAccount' => "Benutze die folgenden Formulare um deine Account-Informationen zu aktualisieren", 'publicDesc' => "Öffentliche Beschreibung", 'viewPublicDesc' => "Die Beschreibung in deinem öffetnlichen Profil ansehen", // Please_enter_your_confirm_password = Bitte das Passwort bestätigen // Please_enter_your_username = Gib bitte deinen Benutzernamen ein // Please_enter_your_password = Gib bitte dein Kennwort ein // Remember_me_on_this_computer = Auf diesem Computer merken ), 'achievement' => array( 'achievements' => "Erfolge", 'criteria' => "Kriterien", 'achievement' => "Erfolg", 'points' => "Punkte", 'series' => "Reihe", 'outOf' => "von", 'criteriaType' => "Criterium Typ-Id:", 'itemReward' => "Ihr bekommt:", 'titleReward' => "Euch wird der Titel \"%s\" verliehen", 'slain' => "getötet", ), 'compare' => array( 'compare' => "Gegenstandsvergleichswerkzeug", ), 'talent' => array( 'talentCalc' => "Talentrechner", 'petCalc' => "Begleiterrechner", 'chooseClass' => "Wählt eine Klasse", 'chooseFamily' => "Wählt eine Tierart", ), 'maps' => array( 'maps' => "Karten", 'linkToThisMap' => "Link zu dieser Karte", 'clear' => "Zurücksetzen", 'EasternKingdoms' => "Östliche Königreiche", 'Kalimdor' => "Kalimdor", 'Outland' => "Scherbenwelt", 'Northrend' => "Nordend", @@ -10,4 +10,4 @@ 'Miscellaneous' => "Diverse", 'Azeroth' => "Azeroth", 'CosmicMap' => "Kosmische Karte", - ), 'zone' => array( 'zone' => "Zone", 'zonePartOf' => "Diese Zone ist Teil der Zone", ), 'spell' => array( 'remaining' => "Noch %s", 'castIn' => "Wirken in %s Sek.", 'instantPhys' => "Sofort", 'instantMagic' => "Spontanzauber", 'channeled' => "Kanalisiert", 'range' => "%s Meter Reichweite", 'meleeRange' => "Nahkampfreichweite", 'reagents' => "Reagenzien", 'tools' => "Extras", 'pctCostOf' => "vom Grund%s", 'costPerSec' => ", plus %s pro Sekunde", 'costPerLevel' => ", plus %s pro Stufe", 'powerTypes' => array( -2 => "Gesundheit", -1 => null, "Mana", "Wut", "Fokus", "Energie", "Zufriedenheit", "Runen", "Runenmacht", 'AMMOSLOT' => "Munnition", 'STEAM' => "Dampfdruck", 'WRATH' => "Zorn", 'PYRITE' => "Pyrit", 'HEAT' => "Hitze", 'OOZE' => "Schlamm", 'BLOOD_POWER' => "Blutmacht" ) ), 'item' => array( 'armor' => "Rüstung", 'block' => "Blocken", 'charges' => "Aufladungen", 'expend' => "Verbrauchen", 'locked' => "Verschlossen", 'ratingString' => "%s @ L%s", 'heroic' => "Heroisch", 'unique' => "Einzigartig", 'uniqueEquipped'=> "Einzigartig anlegbar", 'startQuest' => "Dieser Gegenstand startet eine Quest", 'bagSlotString' => "%d Platz %s", 'dps' => "Schaden pro Sekunde", 'dps2' => "Schaden pro Sekunde", 'addsDps' => "Adds", 'fap' => "Angriffskraft in Tiergestalt", 'durability' => "Haltbarkeit", 'duration' => "Dauer", 'realTime' => "Realzeit", 'conjured' => "Herbeigezauberter Gegenstand", 'damagePhys' => "%s Schaden", 'damageMagic' => "%s %sschaden", 'speed' => "Tempo", 'sellPrice' => "Verkaufspreis", 'itemLevel' => "Gegenstandsstufe", 'randEnchant' => "<Zufällige Verzauberung>", 'readClick' => "<Zum Lesen rechtsklicken>", 'set' => "Set", 'socketBonus' => "Sockelbonus", 'socket' => array ( "Metasockel", "Roter Sockel", "Gelber Sockel", "Blauer Sockel", -1 => "Prismatischer Sockel" ), 'trigger' => array ( "Benutzen: ", "Anlegen: ", "Chance bei Treffer: ", null, null, null, null ), 'bonding' => array ( "Accountgebunden", "Wird beim Aufheben gebunden", "Wird beim Anlegen gebunden", "Wird bei Benutzung gebunden", "Seelengebunden", "Questgegenstand" ), 'bagFamily' => array( "Tasche", "Köcher", "Munitionsbeutel", "Seelentasche", "Lederertasche", "Schreibertasche", "Kräutertasche", "Verzauberertasche", "Ingenieurstasche", "Schlüssel", "Edelsteintasche", "Bergbautasche" ), 'inventoryType' => array( null, "Kopf", "Hals", "Schulter", "Hemd", "Brust", "Taille", "Beine", "Füße", "Handgelenke", "Hände", "Finger", "Schmuck", "Einhändig", "Schildhand", "Distanz", "Rücken", "Zweihändig", "Tasche", "Wappenrock", "Brust", "Waffenhand", "Schildhand", "In der Schildhand geführt", "Projektil", "Wurfwaffe", "Distanzwaffe", "Köcher", "Relikt" ), 'armorSubclass' => array( "Sonstiges", "Stoff", "Leder", "Schwere Rüstung", "Platte", null, "Schild", "Buchband", "Götze", "Totem", "Sigel" ), 'weaponSubClass' => array( "Axt", "Axt", "Bogen", "Schusswaffe", "Streitkolben", "Streitkolben", "Stangenwaffe", "Schwert", "Schwert", null, "Stab", null, null, "Faustwaffe", "Diverse", "Dolche", "Wurfwaffe", null, "Armbrust", "Zauberstab", "Angelrute" ), 'projectileSubClass' => array( null, null, "Pfeil", "Kugel", null ), 'statType' => array( "Erhöht Euer Mana um %d.", "Erhöht Eure Gesundheit um %d.", null, "Beweglichkeit", "Stärke", "Intelligenz", "Willenskraft", "Ausdauer", null, null, null, null, "Erhöht die Verteidigungswertung um %d.", "Erhöht Eure Ausweichwertung um %d.", "Erhöht Eure Parierwertung um %d.", "Erhöht Eure Blockwertung um %d.", "Erhöht Nahkampftrefferwertung um %d.", "Erhöht Fernkampftrefferwertung um %d.", "Erhöht Zaubertrefferwertung um %d.", "Erhöht kritische Nahkampftrefferwertung um %d.", "Erhöht kritische Fernkampftrefferwertung um %d.", "Erhöht kritische Zaubertrefferwertung um %d.", "Erhöht Vermeidungswertung für Nahkampftreffer um +3.", "Erhöht Vermeidungswertung für Distanztreffer um %d.", "Erhöht Vermeidungswertung für Zaubertreffer um %d.", "Erhöht Vermeidungswertung für kritische Nahkampftreffer um %d.", "Erhöht Vermeidungswertung für kritische Distanztreffer um %d.", "Erhöht Vermeidungswertung für kritische Zaubertreffer um %d.", "Erhöht Nahkampftempowertung um %d.", "Erhöht Fernkampftempowertung um %d.", "Erhöht Zaubertempowertung um %d.", "Erhöht Eure Trefferwertung um %d.", "Erhöht Eure kritische Trefferwertung um %d.", "Erhöht Vermeidungswertung um %d.", "Erhöht Vermeidungswertung für kritische Treffer um %d.", "Erhöht Eure Abhärtungswertung um %d.", "Erhöht Eure Tempowertung um %d.", "Erhöht Waffenkundewertung um %d.", "Erhöht Angriffskraft um %d.", "Erhöht Distanzangriffskraft um %d.", "Erhöht die Angriffskraft in Katzen-, Bären- oder Mondkingestalt um %d.", "Erhöht den von Zaubern und Effekten verursachten Schaden um bis zu %d.", "Erhöht die von Zaubern und Effekten verursachte Heilung um bis zu %d.", "Stellt alle 5 Sek. %d Mana wieder her.", "Erhöht Euren Rüstungsdurchschlagwert um %d.", "Erhöht die Zaubermacht um %d.", "Stellt alle 5 Sek. %d Gesundheit wieder her.", "Erhöht den Zauberdurchschlag um %d.", "Erhöht Blockwert um %d.", "Unbekannter Bonus #%d (%d)", ) ) ); ?> \ No newline at end of file + ), 'zone' => array( 'zone' => "Zone", 'zonePartOf' => "Diese Zone ist Teil der Zone", ), 'title' => array( 'cat' => array( 'Allgemein', 'Spieler gegen Spieler', 'Ruf', 'Dungeon & Schlachtzug', 'Quests', 'Berufe', 'Weltereignisse' ) ), 'spell' => array( 'remaining' => "Noch %s", 'castIn' => "Wirken in %s Sek.", 'instantPhys' => "Sofort", 'instantMagic' => "Spontanzauber", 'channeled' => "Kanalisiert", 'range' => "%s Meter Reichweite", 'meleeRange' => "Nahkampfreichweite", 'reagents' => "Reagenzien", 'tools' => "Extras", 'pctCostOf' => "vom Grund%s", 'costPerSec' => ", plus %s pro Sekunde", 'costPerLevel' => ", plus %s pro Stufe", 'powerTypes' => array( -2 => "Gesundheit", -1 => null, "Mana", "Wut", "Fokus", "Energie", "Zufriedenheit", "Runen", "Runenmacht", 'AMMOSLOT' => "Munnition", 'STEAM' => "Dampfdruck", 'WRATH' => "Zorn", 'PYRITE' => "Pyrit", 'HEAT' => "Hitze", 'OOZE' => "Schlamm", 'BLOOD_POWER' => "Blutmacht" ) ), 'item' => array( 'armor' => "Rüstung", 'block' => "Blocken", 'charges' => "Aufladungen", 'expend' => "Verbrauchen", 'locked' => "Verschlossen", 'ratingString' => "%s @ L%s", 'heroic' => "Heroisch", 'unique' => "Einzigartig", 'uniqueEquipped'=> "Einzigartig anlegbar", 'startQuest' => "Dieser Gegenstand startet eine Quest", 'bagSlotString' => "%d Platz %s", 'dps' => "Schaden pro Sekunde", 'dps2' => "Schaden pro Sekunde", 'addsDps' => "Adds", 'fap' => "Angriffskraft in Tiergestalt", 'durability' => "Haltbarkeit", 'duration' => "Dauer", 'realTime' => "Realzeit", 'conjured' => "Herbeigezauberter Gegenstand", 'damagePhys' => "%s Schaden", 'damageMagic' => "%s %sschaden", 'speed' => "Tempo", 'sellPrice' => "Verkaufspreis", 'itemLevel' => "Gegenstandsstufe", 'randEnchant' => "<Zufällige Verzauberung>", 'readClick' => "<Zum Lesen rechtsklicken>", 'set' => "Set", 'socketBonus' => "Sockelbonus", 'socket' => array ( "Metasockel", "Roter Sockel", "Gelber Sockel", "Blauer Sockel", -1 => "Prismatischer Sockel" ), 'trigger' => array ( "Benutzen: ", "Anlegen: ", "Chance bei Treffer: ", null, null, null, null ), 'bonding' => array ( "Accountgebunden", "Wird beim Aufheben gebunden", "Wird beim Anlegen gebunden", "Wird bei Benutzung gebunden", "Seelengebunden", "Questgegenstand" ), 'bagFamily' => array( "Tasche", "Köcher", "Munitionsbeutel", "Seelentasche", "Lederertasche", "Schreibertasche", "Kräutertasche", "Verzauberertasche", "Ingenieurstasche", "Schlüssel", "Edelsteintasche", "Bergbautasche" ), 'inventoryType' => array( null, "Kopf", "Hals", "Schulter", "Hemd", "Brust", "Taille", "Beine", "Füße", "Handgelenke", "Hände", "Finger", "Schmuck", "Einhändig", "Schildhand", "Distanz", "Rücken", "Zweihändig", "Tasche", "Wappenrock", "Brust", "Waffenhand", "Schildhand", "In der Schildhand geführt", "Projektil", "Wurfwaffe", "Distanzwaffe", "Köcher", "Relikt" ), 'armorSubclass' => array( "Sonstiges", "Stoff", "Leder", "Schwere Rüstung", "Platte", null, "Schild", "Buchband", "Götze", "Totem", "Sigel" ), 'weaponSubClass' => array( "Axt", "Axt", "Bogen", "Schusswaffe", "Streitkolben", "Streitkolben", "Stangenwaffe", "Schwert", "Schwert", null, "Stab", null, null, "Faustwaffe", "Diverse", "Dolche", "Wurfwaffe", null, "Armbrust", "Zauberstab", "Angelrute" ), 'projectileSubClass' => array( null, null, "Pfeil", "Kugel", null ), 'statType' => array( "Erhöht Euer Mana um %d.", "Erhöht Eure Gesundheit um %d.", null, "Beweglichkeit", "Stärke", "Intelligenz", "Willenskraft", "Ausdauer", null, null, null, null, "Erhöht die Verteidigungswertung um %d.", "Erhöht Eure Ausweichwertung um %d.", "Erhöht Eure Parierwertung um %d.", "Erhöht Eure Blockwertung um %d.", "Erhöht Nahkampftrefferwertung um %d.", "Erhöht Fernkampftrefferwertung um %d.", "Erhöht Zaubertrefferwertung um %d.", "Erhöht kritische Nahkampftrefferwertung um %d.", "Erhöht kritische Fernkampftrefferwertung um %d.", "Erhöht kritische Zaubertrefferwertung um %d.", "Erhöht Vermeidungswertung für Nahkampftreffer um +3.", "Erhöht Vermeidungswertung für Distanztreffer um %d.", "Erhöht Vermeidungswertung für Zaubertreffer um %d.", "Erhöht Vermeidungswertung für kritische Nahkampftreffer um %d.", "Erhöht Vermeidungswertung für kritische Distanztreffer um %d.", "Erhöht Vermeidungswertung für kritische Zaubertreffer um %d.", "Erhöht Nahkampftempowertung um %d.", "Erhöht Fernkampftempowertung um %d.", "Erhöht Zaubertempowertung um %d.", "Erhöht Eure Trefferwertung um %d.", "Erhöht Eure kritische Trefferwertung um %d.", "Erhöht Vermeidungswertung um %d.", "Erhöht Vermeidungswertung für kritische Treffer um %d.", "Erhöht Eure Abhärtungswertung um %d.", "Erhöht Eure Tempowertung um %d.", "Erhöht Waffenkundewertung um %d.", "Erhöht Angriffskraft um %d.", "Erhöht Distanzangriffskraft um %d.", "Erhöht die Angriffskraft in Katzen-, Bären- oder Mondkingestalt um %d.", "Erhöht den von Zaubern und Effekten verursachten Schaden um bis zu %d.", "Erhöht die von Zaubern und Effekten verursachte Heilung um bis zu %d.", "Stellt alle 5 Sek. %d Mana wieder her.", "Erhöht Euren Rüstungsdurchschlagwert um %d.", "Erhöht die Zaubermacht um %d.", "Stellt alle 5 Sek. %d Gesundheit wieder her.", "Erhöht den Zauberdurchschlag um %d.", "Erhöht Blockwert um %d.", "Unbekannter Bonus #%d (%d)", ) ) ); ?> \ No newline at end of file diff --git a/localization/locale_enus.php b/localization/locale_enus.php index c101fec3..9c25c13b 100644 --- a/localization/locale_enus.php +++ b/localization/locale_enus.php @@ -1,4 +1,4 @@ - array( 'link' => "Link", 'signIn' => "Sign in", 'jsError' => "Please make sure you have javascript enabled.", 'searchButton' => "Search", 'language' => "Language", 'numSQL' => "Number of MySQL queries", 'timeSQL' => "Time of MySQL queries", 'noJScript' => "This site makes extensive use of JavaScript.
Please enable JavaScript in your browser.", 'profiles' => "Your Characters", 'links' => "Links", 'pageNotFound' => "This %s doesn't exist.", 'alliance' => "Alliance", 'horde' => "Horde", 'both' => "Both", 'quickFacts' => "Quick Facts", 'screenshots' => "Screenshots", 'videos' => "Videos", 'side' => "Side", 'related' => "Related", 'contribute' => "Contribute", // 'replyingTo' => "The answer to a comment from", 'submit' => "Submit", 'cancel' => "Cancel", 'rewards' => "Rewards", 'gains' => "Gains", 'login' => "Login", 'class' => "class", 'forum' => "Forum", 'days' => "days", 'hours' => "hours", 'minutes' => "minutes", 'seconds' => "seconds", 'millisecs' => "milliseconds", 'daysAbbr' => "d", 'hoursAbbr' => "hr", 'minutesAbbr' => "min", 'secondsAbbr' => "sec", 'millisecsAbbr' => "ms", // err_title = An error in AoWoW // un_err = Enter your username // pwd_err = Enter your password // signin_msg = Enter your game account // c_pwd = Repeat password // create_filter = Create a filter // loading = Loading ... // soldby = Sold by // droppedby = Dropped by // containedinobject = Contained in // containedinitem = Contained in item // contain = Contains // objectiveof = Objective of // rewardof = Reward of // facts = Facts // pickpocketingloot = Pickpocketing // prospectedfrom = Prospect from // canbeplacedin = Can be placed in // minedfromobject = Mined from // gatheredfromobject = Gathered from // items = Items // objects = Objects // quests = Quests // npcs = NPCs // drop = Drop // starts = Starts // ends = Ends // skinning = Skinning // pickpocketing = Pickpocketing // sells = Sells // reputationwith = Reputation with // experience = experience // uponcompletionofthisquestyouwillgain = Upon completion of quests, get // reagentfor = Reagent for // skinnedfrom = Skinned from // disenchanting = Disenchanting // This_Object_cant_be_found = Object map not available, Object may be spawned via a script // itemsets = Item Sets // Spells = Spells // Items = Items // Quests = Quests // Factions = Factions // Item_Sets = Item sets // NPCs = NPCs // Objects = Objects // Compare = Item Comparison Tool // My_account = My account // Comments = Comments // Latest_Comments = Latest comments // day = days // hr = hr // min = min // sec = sec // Respawn = Respawn // Class = Class // class = class // race = race // Race = Race // Races = Races // name = name // Name = Name // slain = slain 'name' => "Name", 'disabled' => "Disabled", 'disabledHint' => "Cannot be attained or completed", 'serverside' => "Serverside", 'serversideHint' => "These informations are not in the Client and have been provided by sniffing and/or guessing.", ), 'game' => array( 'requires' => "Requires", 'cooldown' => "%s Cooldown", 'classes' => "Classes", 'races' => "Races", 'reqLevel' => "Requires Level %s", 'reqLevelHlm' => "Requires Level %s", 'valueDelim' => " to ", 'resistances' => array(null, 'Holy Resistance', 'Fire Resistance', 'Nature Resistance', 'Frost Resistance', 'Shadow Resistance', 'Arcane Resistance'), 'di' => array(null, "Magic", "Curse", "Disease", "Poison", "Stealth", "Invisibility", null, null, "Enrage"), 'sc' => array("Physical", "Holy", "Fire", "Nature", "Frost", "Shadow", "Arcane"), 'cl' => array("UNK_CL0", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", 'UNK_CL10', "Druid"), 'ra' => array(-2 => "Horde", -1 => "Alliance", "Both", "Human", "Orc", "Dwarf", "Night Elf", "Undead", "Tauren", "Gnome", "Troll", 'UNK_RA9', "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", "Bear From", null, null, "Dire Bear Form", null, null, null, null, "Shadowdance", null, null, "Ghostwolf", "Battle Stance", "Defensive Stance", "Berserker Stance", null, null, "Metamorphosis", null, null, null, null, "Swift Flight Form", "Shadow Form", "Flight Form", "Stealth", "Moonkin Form", "Spirit of Redemption" ), 'pvpRank' => array( null, "Private / Scout", "Corporal / Grunt", "Sergeant / Sergeant", "Master Sergeant / Senior Sergeant", "Sergeant Major / First Sergeant", "Knight / Stone Guard", "Knight-Lieutenant / Blood Guard", "Knight-Captain / Legionnare", "Knight-Champion / Centurion", "Lieutenant Commander / Champion", "Commander / Lieutenant General", "Marshal / General", "Field Marshal / Warlord", "Grand Marshal / High Warlord" ), ), 'filter' => array( 'extSearch' => "Extended search", 'onlyAlliance' => "Alliance only", 'onlyHorde' => "Horde only", 'addFilter' => "Add another Filter", 'match' => "Match", 'allFilter' => "All filters", 'oneFilter' => "At least one", 'applyFilter' => "Apply filter", 'resetForm' => "Reset Form", 'refineSearch' => "Tip: Refine your search by browsing a subcategory.", ), 'error' => array( 'errNotFound' => "Page not found", 'errPage' => "What? How did you... nevermind that!\n
\n
\nIt appears that the page you have requested cannot be found. At least, not in this dimension.\n
\n
\nPerhaps a few tweaks to the [WH-799 Major Confabulation Engine] may result in the page suddenly making an appearance!\n
\n
\nOr, you can try \ncontacting us\n- the stability of the WH-799 is debatable, and we wouldn't want another accident...", 'goStart' => "Return to the homepage", 'goForum' => "Feedback forum", ), 'account' => array( 'doSignIn' => "Log in to your AoWoW Account", 'user' => "Username", 'pass' => "Password", 'rememberMe' => "Stay logged in", 'forgot' => "Forgot", 'accNoneYet' => "Don't have an account", 'accCreateNow' => "Create one now", 'userNotFound' => "Such user does not exists", 'userBanned' => "This Account was closed", 'passMismatch' => "Entered passwords does not match", 'loginsExceeded' => "The maximum number of logins from this IP has been exceeded. Please try again in %s minutes.", 'nameInUse' => "Such user already exists", 'email' => "Email address", 'unkError' => "Unknown error on account create", 'accCreate' => "Create your account", 'passConfirm' => "Confirm password", 'signup' => "Signup", 'requestName' => "Username Request", 'resetPass' => "Password Reset", 'emailInvalid' => "This email address is invalid.", 'emailUnknown' => "The email address you entered is not associated with any account.

If you forgot the email you registered your account with email feedback@aowow.com for assistance.", 'passJustSend' => "An email containing a new password was just sent to %s", 'nameJustSend' => "An email containing your username was just sent to %s", 'wrongPass' => "Wrong Password", 'ipAddress' => "IP-Adress", 'lastIP' => "last used IP", 'joinDate' => "Joined", 'lastLogin' => "Last visit", 'userGroups' => "Rolle", 'myAccount' => "My Account", 'editAccount' => "Simply use the forms below to update your account information", 'publicDesc' => "Public Description", 'viewPublicDesc' => "View your Public Description in your Profile Page", // Please_enter_your_username = Enter your username (account) // Please_enter_your_password = Enter your password // Sign_in_to_your_Game_Account = Enter your game account: // Please_enter_your_confirm_password = Please enter your confirm password ), 'achievement' => array( 'achievements' => "achievements", 'criteria' => "Criteria", 'achievement' => "achievement", 'points' => "Points", 'series' => "Series", 'outOf' => "out of", 'criteriaType' => "Criterium Type-Id:", 'itemReward' => "You will receive:", 'titleReward' => "You shall be granted the title \"%s\"", 'slain' => "slain", ), 'compare' => array( 'compare' => "Item Comparison Tool", ), 'talent' => array( 'talentCalc' => "Talent Calculator", 'petCalc' => "Hunter Pet Calculator", 'chooseClass' => "Choose a class", 'chooseFamily' => "Choose a pet family", ), 'maps' => array( 'maps' => "Maps", 'linkToThisMap' => "Link to this map", + array( 'link' => "Link", 'signIn' => "Sign in", 'jsError' => "Please make sure you have javascript enabled.", 'searchButton' => "Search", 'language' => "Language", 'numSQL' => "Number of MySQL queries", 'timeSQL' => "Time of MySQL queries", 'noJScript' => "This site makes extensive use of JavaScript.
Please enable JavaScript in your browser.", 'profiles' => "Your Characters", 'links' => "Links", 'pageNotFound' => "This %s doesn't exist.", 'both' => "Both", 'gender' => "Gender", 'sex' => [null, 'Male', 'Female'], 'quickFacts' => "Quick Facts", 'screenshots' => "Screenshots", 'videos' => "Videos", 'side' => "Side", 'related' => "Related", 'contribute' => "Contribute", // 'replyingTo' => "The answer to a comment from", 'submit' => "Submit", 'cancel' => "Cancel", 'rewards' => "Rewards", 'gains' => "Gains", 'login' => "Login", 'forum' => "Forum", 'days' => "days", 'hours' => "hours", 'minutes' => "minutes", 'seconds' => "seconds", 'millisecs' => "milliseconds", 'daysAbbr' => "d", 'hoursAbbr' => "hr", 'minutesAbbr' => "min", 'secondsAbbr' => "sec", 'millisecsAbbr' => "ms", // err_title = An error in AoWoW // un_err = Enter your username // pwd_err = Enter your password // signin_msg = Enter your game account // c_pwd = Repeat password // create_filter = Create a filter // loading = Loading ... // soldby = Sold by // droppedby = Dropped by // containedinobject = Contained in // containedinitem = Contained in item // contain = Contains // objectiveof = Objective of // rewardof = Reward of // facts = Facts // pickpocketingloot = Pickpocketing // prospectedfrom = Prospect from // canbeplacedin = Can be placed in // minedfromobject = Mined from // gatheredfromobject = Gathered from // items = Items // objects = Objects // quests = Quests // npcs = NPCs // drop = Drop // starts = Starts // ends = Ends // skinning = Skinning // pickpocketing = Pickpocketing // sells = Sells // reputationwith = Reputation with // experience = experience // uponcompletionofthisquestyouwillgain = Upon completion of quests, get // reagentfor = Reagent for // skinnedfrom = Skinned from // disenchanting = Disenchanting // This_Object_cant_be_found = Object map not available, Object may be spawned via a script // itemsets = Item Sets // Spells = Spells // Items = Items // Quests = Quests // Factions = Factions // Item_Sets = Item sets // NPCs = NPCs // Objects = Objects // Compare = Item Comparison Tool // My_account = My account // Comments = Comments // Latest_Comments = Latest comments // day = days // hr = hr // min = min // sec = sec // Respawn = Respawn // Class = Class // class = class // race = race // Race = Race // Races = Races // name = name // Name = Name // slain = slain 'name' => "Name", 'disabled' => "Disabled", 'disabledHint' => "Cannot be attained or completed", 'serverside' => "Serverside", 'serversideHint' => "These informations are not in the Client and have been provided by sniffing and/or guessing.", ), 'search' => array( 'search' => "Search", 'foundResult' => "Search Results for", 'noResult' => "No Results for", 'tryAgain' => "Please try some different keywords or check your spelling.", ), 'game' => array( 'alliance' => "Alliance", 'horde' => "Horde", 'class' => "class", 'classes' => "Classes", 'races' => "Races", 'title' => "Title", 'titles' => "Titles", 'eventShort' => "Event", 'event' => "World Event", 'events' => "World Events", 'cooldown' => "%s cooldown", 'requires' => "Requires", 'reqLevel' => "Requires Level %s", 'reqLevelHlm' => "Requires Level %s", 'valueDelim' => " to ", 'resistances' => array(null, 'Holy Resistance', 'Fire Resistance', 'Nature Resistance', 'Frost Resistance', 'Shadow Resistance', 'Arcane Resistance'), 'di' => array(null, "Magic", "Curse", "Disease", "Poison", "Stealth", "Invisibility", null, null, "Enrage"), 'sc' => array("Physical", "Holy", "Fire", "Nature", "Frost", "Shadow", "Arcane"), 'cl' => array("UNK_CL0", "Warrior", "Paladin", "Hunter", "Rogue", "Priest", "Death Knight", "Shaman", "Mage", "Warlock", 'UNK_CL10', "Druid"), 'ra' => array(-2 => "Horde", -1 => "Alliance", "Both", "Human", "Orc", "Dwarf", "Night Elf", "Undead", "Tauren", "Gnome", "Troll", 'UNK_RA9', "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", "Bear From", null, null, "Dire Bear Form", null, null, null, null, "Shadowdance", null, null, "Ghostwolf", "Battle Stance", "Defensive Stance", "Berserker Stance", null, null, "Metamorphosis", null, null, null, null, "Swift Flight Form", "Shadow Form", "Flight Form", "Stealth", "Moonkin Form", "Spirit of Redemption" ), 'pvpRank' => array( null, "Private / Scout", "Corporal / Grunt", "Sergeant / Sergeant", "Master Sergeant / Senior Sergeant", "Sergeant Major / First Sergeant", "Knight / Stone Guard", "Knight-Lieutenant / Blood Guard", "Knight-Captain / Legionnare", "Knight-Champion / Centurion", "Lieutenant Commander / Champion", "Commander / Lieutenant General", "Marshal / General", "Field Marshal / Warlord", "Grand Marshal / High Warlord" ), ), 'filter' => array( 'extSearch' => "Extended search", 'onlyAlliance' => "Alliance only", 'onlyHorde' => "Horde only", 'addFilter' => "Add another Filter", 'match' => "Match", 'allFilter' => "All filters", 'oneFilter' => "At least one", 'applyFilter' => "Apply filter", 'resetForm' => "Reset Form", 'refineSearch' => "Tip: Refine your search by browsing a subcategory.", ), 'error' => array( 'errNotFound' => "Page not found", 'errPage' => "What? How did you... nevermind that!\n
\n
\nIt appears that the page you have requested cannot be found. At least, not in this dimension.\n
\n
\nPerhaps a few tweaks to the [WH-799 Major Confabulation Engine] may result in the page suddenly making an appearance!\n
\n
\nOr, you can try \ncontacting us\n- the stability of the WH-799 is debatable, and we wouldn't want another accident...", 'goStart' => "Return to the homepage", 'goForum' => "Feedback forum", ), 'account' => array( 'doSignIn' => "Log in to your AoWoW Account", 'user' => "Username", 'pass' => "Password", 'rememberMe' => "Stay logged in", 'forgot' => "Forgot", 'accNoneYet' => "Don't have an account", 'accCreateNow' => "Create one now", 'userNotFound' => "Such user does not exists", 'userBanned' => "This Account was closed", 'passMismatch' => "Entered passwords does not match", 'loginsExceeded' => "The maximum number of logins from this IP has been exceeded. Please try again in %s minutes.", 'nameInUse' => "Such user already exists", 'email' => "Email address", 'unkError' => "Unknown error on account create", 'accCreate' => "Create your account", 'passConfirm' => "Confirm password", 'signup' => "Signup", 'requestName' => "Username Request", 'resetPass' => "Password Reset", 'emailInvalid' => "This email address is invalid.", 'emailUnknown' => "The email address you entered is not associated with any account.

If you forgot the email you registered your account with email feedback@aowow.com for assistance.", 'passJustSend' => "An email containing a new password was just sent to %s", 'nameJustSend' => "An email containing your username was just sent to %s", 'wrongPass' => "Wrong Password", 'ipAddress' => "IP-Adress", 'lastIP' => "last used IP", 'joinDate' => "Joined", 'lastLogin' => "Last visit", 'userGroups' => "Rolle", 'myAccount' => "My Account", 'editAccount' => "Simply use the forms below to update your account information", 'publicDesc' => "Public Description", 'viewPublicDesc' => "View your Public Description in your Profile Page", // Please_enter_your_username = Enter your username (account) // Please_enter_your_password = Enter your password // Sign_in_to_your_Game_Account = Enter your game account: // Please_enter_your_confirm_password = Please enter your confirm password ), 'achievement' => array( 'achievements' => "achievements", 'criteria' => "Criteria", 'achievement' => "achievement", 'points' => "Points", 'series' => "Series", 'outOf' => "out of", 'criteriaType' => "Criterium Type-Id:", 'itemReward' => "You will receive:", 'titleReward' => "You shall be granted the title \"%s\"", 'slain' => "slain", ), 'compare' => array( 'compare' => "Item Comparison Tool", ), 'talent' => array( 'talentCalc' => "Talent Calculator", 'petCalc' => "Hunter Pet Calculator", 'chooseClass' => "Choose a class", 'chooseFamily' => "Choose a pet family", ), 'maps' => array( 'maps' => "Maps", 'linkToThisMap' => "Link to this map", 'clear' => "Clear", 'EasternKingdoms' => "Eastern Kingdoms", 'Kalimdor' => "Kalimdor", @@ -11,4 +11,4 @@ 'Miscellaneous' => "Miscellaneous", 'Azeroth' => "Azeroth", 'CosmicMap' => "Cosmic Map", - ), 'zone' => array( 'zone' => "Zone", 'zonePartOf' => "This zone is part of", ), 'spell' => array( 'remaining' => "%s remaining", 'castIn' => "%s sec cast", 'instantPhys' => "Instant", 'instantMagic' => "Instant cast", 'channeled' => "Channeled", 'range' => "%s yd range", 'meleeRange' => "Melee Range", 'reagents' => "Reagents", 'tools' => "Tools", 'pctCostOf' => "of base %s", 'costPerSec' => ", plus %s per second", 'costPerLevel' => ", plus %s per level", 'powerTypes' => array( -2 => "Health", -1 => null, "Mana", "Rage", "Focus", "Energy", "Happiness", "Rune", "Runic Power", 'AMMOSLOT' => "Ammo", 'STEAM' => "Steam Pressure", 'WRATH' => "Wrath", 'PYRITE' => "Pyrite", 'HEAT' => "Heat", 'OOZE' => "Ooze", 'BLOOD_POWER' => "Blood Power" ) ), 'item' => array( 'armor' => "Armor", 'block' => "Block", 'charges' => "Charges", 'expend' => "expendable", 'locked' => "Locked", 'ratingString' => "%s @ L%s", 'heroic' => "Heroic", 'unique' => "Unique", 'uniqueEquipped'=> "Unique-Equipped", 'startQuest' => "This Item Begins a Quest", 'bagSlotString' => "%d Slot %s", 'dps' => "damage per second", 'dps2' => "damage per second", 'addsDps' => "Adds", 'fap' => "Feral Attack Power", 'durability' => "Durability", 'duration' => "Duration", 'realTime' => "real time", 'conjured' => "Conjured Item", 'damagePhys' => "%s Damage", 'damageMagic' => "%s %s Damage", 'speed' => "Speed", 'sellPrice' => "Sell Price", 'itemLevel' => "Item Level", 'randEnchant' => "<Random enchantment>", 'readClick' => "<Right Click To Read>", 'set' => "Set", 'socketBonus' => "Socket Bonus", 'socket' => array( "Meta Socket", "Red Socket", "Yellow Socket", "Blue Socket", -1 => "Prismatic Socket" ), 'trigger' => array ( "Use: ", "Equip: ", "Chance on hit: ", null, null, null, null ), 'bonding' => array ( "Binds to account", "Binds when picked up", "Binds when equipped", "Binds when used", "Soulbound", "Quest Item" ), "bagFamily" => array( "Bag", "Quiver", "Ammo Pouch", "Soul Bag", "Leatherworking Bag", "Inscription Bag", "Herb Bag", "Enchanting Bag", "Engineering Bag", "Key", "Gem Bag", "Mining Bag" ), 'inventoryType' => array( null, "Head", "Neck", "Shoulder", "Shirt", "Chest", "Waist", "Legs", "Feet", "Wrist", "Hands", "Finger", "Trinket", "One-hand", "Off Hand", "Ranged", "Back", "Two-hand", "Bag", "Tabard", "Chest", "Main Hand", "Off Hand", "Held In Off-Hand", "Projectile", "Thrown", "Ranged", "Quiver", "Relic" ), 'armorSubclass' => array( "Miscellaneous", "Cloth", "Leather", "Mail", "Plate", null, "Shild", "Libram", "Idol", "Totem", "Sigil" ), 'weaponSubClass' => array( "Axe", "Axe", "Bow", "Gun", "Mace", "Mace", "Polearm", "Sword", "Sword", null, "Staff", null, null, "Fist Weapon", "Miscellaneous", "Dagger", "Thrown", null, "Crossbow", "Wand", "Fishing Pole" ), 'projectileSubClass' => array( null, null, "Arrow", "Bullet", null ), 'statType' => array( "Increases your Mana by %d.", "Increases your Health by %d.", null, "Agility", "Strength", "Intellect", "Spirit", "Stamina", null, null, null, null, "Improves defense rating by %d.", "Increases your dodge rating by %d.", "Increases your parry rating by %d.", "Increases your shield block rating by %d.", "Improves melee hit rating by %d.", "Improves ranged hit rating by %d.", "Improves spell hit rating by %d.", "Improves melee critical strike rating by %d.", "Improves ranged critical strike rating by %d.", "Improves spell critical strike rating by %d.", "Improves melee hit avoidance rating by %d.", "Improves ranged hit avoidance rating by %d.", "Improves spell hit avoidance rating by %d.", "Improves melee critical avoidance rating by %d.", "Improves ranged critical avoidance rating by %d.", "Improves spell critical avoidance rating by %d.", "Improves melee haste rating by %d.", "Improves ranged haste rating by %d.", "Improves spell haste rating by %d.", "Improves hit rating by %d.", "Improves critical strike rating by %d.", "Improves hit avoidance rating by %d.", "Improves critical avoidance rating by %d.", "Increases your resilience rating by %d.", "Increases your haste rating by %d.", "Improves expertise rating by %d.", "Improves attack power by %d.", "Improves ranged attack power by %d.", "Improves attack power by %d in Cat, Bear, Dire Bear, and Moonkin forms only.", "Improves damage done by magical spells and effects by up to %d.", "Improves healing done by magical spells and effects by up to %d.", "Restores %d mana per 5 sec.", "Increases your armor penetration rating by %d.", "Improves spell power by %d.", "Restores %d health per 5 sec.", "Improves spell penetration by %d.", "Increases the block value of your shield by %d.", "Unknown Bonus #%d (%d)", ) ) ); ?> \ No newline at end of file + ), 'zone' => array( 'zone' => "Zone", 'zonePartOf' => "This zone is part of", ), 'title' => array( 'cat' => array( 'General', 'Player vs. Player', 'Reputation', 'Dungeons & Raids', 'Quests', 'Professions', 'World Events' ) ), 'spell' => array( 'remaining' => "%s remaining", 'castIn' => "%s sec cast", 'instantPhys' => "Instant", 'instantMagic' => "Instant cast", 'channeled' => "Channeled", 'range' => "%s yd range", 'meleeRange' => "Melee Range", 'reagents' => "Reagents", 'tools' => "Tools", 'pctCostOf' => "of base %s", 'costPerSec' => ", plus %s per second", 'costPerLevel' => ", plus %s per level", 'powerTypes' => array( -2 => "Health", -1 => null, "Mana", "Rage", "Focus", "Energy", "Happiness", "Rune", "Runic Power", 'AMMOSLOT' => "Ammo", 'STEAM' => "Steam Pressure", 'WRATH' => "Wrath", 'PYRITE' => "Pyrite", 'HEAT' => "Heat", 'OOZE' => "Ooze", 'BLOOD_POWER' => "Blood Power" ) ), 'item' => array( 'armor' => "Armor", 'block' => "Block", 'charges' => "Charges", 'expend' => "expendable", 'locked' => "Locked", 'ratingString' => "%s @ L%s", 'heroic' => "Heroic", 'unique' => "Unique", 'uniqueEquipped'=> "Unique-Equipped", 'startQuest' => "This Item Begins a Quest", 'bagSlotString' => "%d Slot %s", 'dps' => "damage per second", 'dps2' => "damage per second", 'addsDps' => "Adds", 'fap' => "Feral Attack Power", 'durability' => "Durability", 'duration' => "Duration", 'realTime' => "real time", 'conjured' => "Conjured Item", 'damagePhys' => "%s Damage", 'damageMagic' => "%s %s Damage", 'speed' => "Speed", 'sellPrice' => "Sell Price", 'itemLevel' => "Item Level", 'randEnchant' => "<Random enchantment>", 'readClick' => "<Right Click To Read>", 'set' => "Set", 'socketBonus' => "Socket Bonus", 'socket' => array( "Meta Socket", "Red Socket", "Yellow Socket", "Blue Socket", -1 => "Prismatic Socket" ), 'trigger' => array ( "Use: ", "Equip: ", "Chance on hit: ", null, null, null, null ), 'bonding' => array ( "Binds to account", "Binds when picked up", "Binds when equipped", "Binds when used", "Soulbound", "Quest Item" ), "bagFamily" => array( "Bag", "Quiver", "Ammo Pouch", "Soul Bag", "Leatherworking Bag", "Inscription Bag", "Herb Bag", "Enchanting Bag", "Engineering Bag", "Key", "Gem Bag", "Mining Bag" ), 'inventoryType' => array( null, "Head", "Neck", "Shoulder", "Shirt", "Chest", "Waist", "Legs", "Feet", "Wrist", "Hands", "Finger", "Trinket", "One-hand", "Off Hand", "Ranged", "Back", "Two-hand", "Bag", "Tabard", "Chest", "Main Hand", "Off Hand", "Held In Off-Hand", "Projectile", "Thrown", "Ranged", "Quiver", "Relic" ), 'armorSubclass' => array( "Miscellaneous", "Cloth", "Leather", "Mail", "Plate", null, "Shild", "Libram", "Idol", "Totem", "Sigil" ), 'weaponSubClass' => array( "Axe", "Axe", "Bow", "Gun", "Mace", "Mace", "Polearm", "Sword", "Sword", null, "Staff", null, null, "Fist Weapon", "Miscellaneous", "Dagger", "Thrown", null, "Crossbow", "Wand", "Fishing Pole" ), 'projectileSubClass' => array( null, null, "Arrow", "Bullet", null ), 'statType' => array( "Increases your Mana by %d.", "Increases your Health by %d.", null, "Agility", "Strength", "Intellect", "Spirit", "Stamina", null, null, null, null, "Improves defense rating by %d.", "Increases your dodge rating by %d.", "Increases your parry rating by %d.", "Increases your shield block rating by %d.", "Improves melee hit rating by %d.", "Improves ranged hit rating by %d.", "Improves spell hit rating by %d.", "Improves melee critical strike rating by %d.", "Improves ranged critical strike rating by %d.", "Improves spell critical strike rating by %d.", "Improves melee hit avoidance rating by %d.", "Improves ranged hit avoidance rating by %d.", "Improves spell hit avoidance rating by %d.", "Improves melee critical avoidance rating by %d.", "Improves ranged critical avoidance rating by %d.", "Improves spell critical avoidance rating by %d.", "Improves melee haste rating by %d.", "Improves ranged haste rating by %d.", "Improves spell haste rating by %d.", "Improves hit rating by %d.", "Improves critical strike rating by %d.", "Improves hit avoidance rating by %d.", "Improves critical avoidance rating by %d.", "Increases your resilience rating by %d.", "Increases your haste rating by %d.", "Improves expertise rating by %d.", "Improves attack power by %d.", "Improves ranged attack power by %d.", "Improves attack power by %d in Cat, Bear, Dire Bear, and Moonkin forms only.", "Improves damage done by magical spells and effects by up to %d.", "Improves healing done by magical spells and effects by up to %d.", "Restores %d mana per 5 sec.", "Increases your armor penetration rating by %d.", "Improves spell power by %d.", "Restores %d health per 5 sec.", "Improves spell penetration by %d.", "Increases the block value of your shield by %d.", "Unknown Bonus #%d (%d)", ) ) ); ?> \ No newline at end of file diff --git a/localization/locale_eses.php b/localization/locale_eses.php index 41595580..64f66618 100644 --- a/localization/locale_eses.php +++ b/localization/locale_eses.php @@ -18,9 +18,9 @@ $lang = array( 'profiles' => "Tus personajes", // translate.google :x 'links' => "Enlaces", 'pageNotFound' => "Este %s no existe.", - 'alliance' => "Alianza", - 'horde' => "Horda", 'both' => "Ambos", + 'gender' => "Género", + 'sex' => [null, 'Hombre', 'Mujer'], 'quickFacts' => "Notas rápidas", 'screenshots' => "Capturas de pantalla", 'videos' => "Videos", @@ -33,7 +33,6 @@ $lang = array( 'rewards' => "Recompensas", 'gains' => "Ganancias", 'login' => "[Login]", - 'class' => "clase", 'forum' => "[Forum]", 'days' => "dias", 'hours' => "horas", @@ -52,11 +51,26 @@ $lang = array( 'serverside' => "[Serverside]", 'serversideHint' => "[These informations are not in the Client and have been provided by sniffing and/or guessing.]", ), + 'search' => array( + 'search' => "Búsqueda", + 'foundResult' => "Resultados de busqueda para", + 'noResult' => "Ningún resultado para", + 'tryAgain' => "Por favor, introduzca otras palabras claves o verifique el término ingresado.", + ), 'game' => array( - 'requires' => "Requiere", - 'cooldown' => "%s de reutilización", + 'alliance' => "Alianza", + 'horde' => "Horda", + 'class' => "clase", 'classes' => "Clases", 'races' => "Razas", + 'title' => "Título", + 'titles' => "Títulos", + 'eventShort' => "Evento", + 'event' => "Suceso mundial ", + 'events' => "Eventos del mundo", + 'cooldown' => "%s cooldown", + 'cooldown' => "%s de reutilización", + 'requires' => "Requiere", 'reqLevel' => "Necesitas ser de nivel %s", 'reqLevelHlm' => "Necesitas ser de nivel %s", 'valueDelim' => " - ", @@ -139,6 +153,11 @@ $lang = array( 'zone' => "Zone", 'zonePartOf' => "Cette zone fait partie de la zone", ), + 'title' => array( + 'cat' => array( + 'General', 'Jugador contra Jugador', 'Reputación', 'Mazmorras y bandas', 'Misiones', 'Profesiones', 'Eventos del mundo' + ) + ), 'spell' => array( 'remaining' => "%s restantes", 'castIn' => "Hechizo de %s seg", diff --git a/localization/locale_frfr.php b/localization/locale_frfr.php index 4c170d59..e5b7d4c2 100644 --- a/localization/locale_frfr.php +++ b/localization/locale_frfr.php @@ -18,9 +18,9 @@ $lang = array( 'profiles' => "Vos personnages", // translate.google :x 'links' => "Liens", 'pageNotFound' => "Ce %s n'existe pas.", - 'alliance' => "Alliance", - 'horde' => "Horde", 'both' => "Les deux", + 'gender' => "Genre", + 'sex' => [null, 'Homme', 'Femme'], 'quickFacts' => "En bref", 'screenshots' => "Captures d'écran", 'videos' => "Vidéos", @@ -33,7 +33,6 @@ $lang = array( 'rewards' => "Récompenses", 'gains' => "Gains", 'login' => "[Login]", - 'class' => "classe", 'forum' => "[Forum]", 'days' => "jours", 'hours' => "heures", @@ -52,11 +51,25 @@ $lang = array( 'serverside' => "[Serverside]", 'serversideHint' => "[These informations are not in the Client and have been provided by sniffing and/or guessing.]", ), + 'search' => array( + 'search' => "Recherche", + 'foundResult' => "Résultats de recherche pour", + 'noResult' => "Aucun résultat pour malordawsne", + 'tryAgain' => "Veuillez essayer d'autres mots ou vérifiez l'orthographe des termes de recherche.", + ), 'game' => array ( - 'requires' => "Requiert", - 'cooldown' => "%s de recharge", + 'alliance' => "Alliance", + 'horde' => "Horde", + 'class' => "classe", 'classes' => "Classes", 'races' => "Races", + 'title' => "Titre", + 'titles' => "Titres", + 'eventShort' => "Évènement", + 'event' => "Évènement mondial", + 'events' => "Évènements mondiaux", + 'cooldown' => "%s de recharge", + 'requires' => "Requiert", 'reqLevel' => "Niveau %s requis", 'reqLevelHlm' => "Requiert Niveau %s", 'valueDelim' => " - ", @@ -144,6 +157,11 @@ $lang = array( 'zone' => "Zone", 'zonePartOf' => "Cette zone fait partie de la zone", ), + 'title' => array( + 'cat' => array( + 'Général', 'Joueur ctr. Joueur', 'Réputation', 'Donjons & raids', 'Quêtes', 'Métiers', 'Évènements mondiaux' + ) + ), 'spell' => array( 'remaining' => "%s restantes", 'castIn' => "%s s d'incantation", diff --git a/localization/locale_ruru.php b/localization/locale_ruru.php index a68837f4..3839204a 100644 --- a/localization/locale_ruru.php +++ b/localization/locale_ruru.php @@ -18,9 +18,9 @@ $lang = array( 'profiles' => "Ваши персонажи", // translate.google :x 'links' => "Ссылки", 'pageNotFound' => "Такое %s не существует.", - 'alliance' => "Альянс", - 'horde' => "Орда", 'both' => "Обе", + 'gender' => "Пол", + 'sex' => [null, 'Мужчина', 'Женщина'], 'quickFacts' => "Краткая информация", 'screenshots' => "Изображения", 'videos' => "Видео", @@ -33,7 +33,6 @@ $lang = array( 'rewards' => "Награды", 'gains' => "Бонус", 'login' => "[Login]", - 'class' => "класс", 'forum' => "[Forum]", 'days' => "дн", 'hours' => "часы", @@ -52,11 +51,25 @@ $lang = array( 'serverside' => "[Serverside]", 'serversideHint' => "[These informations are not in the Client and have been provided by sniffing and/or guessing.]", ), + 'search' => array( + 'search' => "Поиск", + 'foundResult' => "Результаты поиска для", + 'noResult' => "Ничего не найдено для", + 'tryAgain' => "Пожалуйста, попробуйте другие ключевые слова или проверьте правильность запроса.", + ), 'game' => array( - 'requires' => "Требует:", - 'cooldown' => "Восстановление: %s", + 'alliance' => "Альянс", + 'horde' => "Орда", + 'class' => "класс", 'classes' => "Классы", 'races' => "Расы", + 'title' => "Звание", + 'titles' => "Звания", + 'eventShort' => "Игровое событие", + 'event' => "Событие", + 'events' => "Игровые события", + 'cooldown' => "Восстановление: %s", + 'requires' => "Требует:", 'reqLevel' => "Требуется уровень: %s", 'reqLevelHlm' => "Требуется уровень: %s", 'valueDelim' => " - ", @@ -144,6 +157,11 @@ $lang = array( 'zone' => "Игровая зона", 'zonePartOf' => "Эта игровая локация является частью локации", ), + 'title' => array( + 'cat' => array( + 'Общее', 'PvP', 'Репутация', 'Подземелья и рейды', 'Задания', 'Профессии', 'Игровые события' + ) + ), 'spell' => array( 'remaining' => "Осталось: %s", 'castIn' => "Применение: %s сек.", diff --git a/pages/title.php b/pages/title.php new file mode 100644 index 00000000..67d9a6dd --- /dev/null +++ b/pages/title.php @@ -0,0 +1,113 @@ +loadCache(array('achievement', $Id), $pageData)) +{ + $title = new Title($Id); + if ($title->template) + { + $title->addSelfToJscript($pageData['gTitles']); + + $infobox = []; + $colon = User::$localeId == LOCALE_FR ? ' : ' : ': '; // Je suis un prick! <_< + if ($title->template['side'] == 1) + $infobox[] = Lang::$main['side'].$colon.'[span class=alliance-icon]'.Lang::$game['alliance'].'[/span]'; + else if ($title->template['side'] == 2) + $infobox[] = Lang::$main['side'].$colon.'[span class=horde-icon]'.Lang::$game['horde'].'[/span]'; + else + $infobox[] = Lang::$main['side'].$colon.Lang::$main['both']; + + if ($title->template['gender']) + $infobox[] = Lang::$main['gender'].$colon.'[span class='.($title->template['gender'] == 2 ? 'female' : 'male').'-icon]'.Lang::$main['sex'][$title->template['gender']].'[/span]'; + + if ($title->template['eventId']) + $infobox[] = Lang::$game['eventShort'].$colon.'[url=?event='.$title->template['eventId'].']'.WorldEvent::getName($title->template['eventId']).'[/url]'; + + $pageData = array( + 'page' => array( + 'name' => $title->getHtmlizedName(), + 'id' => $title->Id, + 'expansion' => Util::$expansionString[$title->template['expansion']] + ), + 'infobox' => '[li][ul]'.implode('[/ul][ul]', $infobox).'[/ul][/li]', + ); + + foreach ($title->source as $type => $entries) + { + // todo: hidden-/visibleCols by actual use + switch ($type) + { + case 4: + $quests = new QuestList(array(['id', $entries])); + $quests->addRewardsToJscript($pageData['gItems'], $pageData['gSpells'], $pageData['gTitles']); + + $pageData['page']['questReward'] = $quests->getListviewData(); + $pageData['page']['questParams'] = array( + 'id' => 'reward-from-quest', + 'name' => '$LANG.tab_rewardfrom', + 'hiddenCols' => "$['side']", + 'visibleCols' => "$['category']" + ); + break; + case 12: + $acvs = new AchievementList(array(['id', $entries])); + $acvs->addSelfToJscript($pageData['gAchievements']); + $acvs->addRewardsToJscript($pageData['gItems'], $pageData['gTitles']); + + $pageData['page']['acvReward'] = $acvs->getListviewData(); + $pageData['page']['acvParams'] = array( + 'id' => 'reward-from-achievement', + 'name' => '$LANG.tab_rewardfrom', + 'visibleCols' => "$['category']", + 'sort' => "$['reqlevel', 'name']" + ); + break; + case 13: + // not displayed + } + } + $pageData['title'] = ucFirst(trim(str_replace('%s', '', str_replace(',', '', $title->name[0])))); + + $smarty->saveCache(array('spell', $Id), $pageData); + } + else + { + $smarty->updatePageVars(array( + 'subject' => ucfirst(Lang::$main['class']), + 'id' => $Id, + 'notFound' => sprintf(Lang::$main['pageNotFound'], Lang::$main['class']), + )); + $smarty->assign('lang', Lang::$main); + $smarty->display('404.tpl'); + exit(); + } +} + +$smarty->updatePageVars(array( + 'title' => $pageData['title']." - ".Lang::$game['title'], + 'path' => "[0, 10, ".$title->template['category']."]", + 'tab' => 0, // for g_initHeader($tab) + 'type' => TYPEID_TITLE, // 11:Titles + 'typeId' => $Id +)); + +$smarty->assign('community', CommunityContent::getAll(TYPEID_TITLE, $Id)); // comments, screenshots, videos +$smarty->assign('lang', array_merge(Lang::$main)); +$smarty->assign('data', $pageData); +$smarty->assign('mysql', DB::Aowow()->getStatistics()); +$smarty->display('title.tpl'); + +?> diff --git a/pages/titles.php b/pages/titles.php new file mode 100644 index 00000000..78431cf3 --- /dev/null +++ b/pages/titles.php @@ -0,0 +1,105 @@ +loadCache($cacheKey, $pageData)) +{ + $titles = new TitleList(isset($cat) ? array(['category', (int)$cat]) : []); + $listview = $titles->getListviewData(); + + $sources = array( + 4 => [], // Quest + 12 => [], // Achievement + 13 => [] // DB-Text + ); + + // parse sources + foreach ($listview as $lvTitle) + { + if(!isset($lvTitle['source'])) + continue; + + if (isset($lvTitle['source'][4])) + $sources[4] = array_merge($sources[4], $lvTitle['source'][4]); + + if (isset($lvTitle['source'][12])) + $sources[12] = array_merge($sources[12], $lvTitle['source'][12]); + + if (isset($lvTitle['source'][13])) + $sources[13] = array_merge($sources[13], $lvTitle['source'][13]); + } + + // replace with suitable objects + if (!empty($sources[4])) + $sources[4] = new QuestList(array(['Id', $sources[4]])); + + if (!empty($sources[12])) + $sources[12] = new AchievementList(array(['Id', $sources[12]])); + + if (!empty($sources[13])) + $sources[13] = DB::Aowow()->SELECT('SELECT *, Id AS ARRAY_KEY FROM ?_sourceStrings WHERE Id IN (?a)', $sources[13]); + + foreach ($listview as $k => $lvTitle) + { + if(!isset($lvTitle['source'])) + continue; + + // Quest-source + if (isset($lvTitle['source'][4])) + { + $ids = $lvTitle['source'][4]; + $listview[$k]['source'][4] = []; + foreach ($ids as $id) + $listview[$k]['source'][4][] = $sources[4]->container[$id]->getSourceData(); + } + + // Achievement-source + if (isset($lvTitle['source'][12])) + { + $ids = $lvTitle['source'][12]; + $listview[$k]['source'][12] = []; + foreach ($ids as $id) + $listview[$k]['source'][12][] = $sources[12]->container[$id]->getSourceData(); + } + + // other source (only one item possible, so no iteration needed) + if (isset($lvTitle['source'][13])) + $listview[$k]['source'][13] = [$sources[13][$lvTitle['source'][13][0]]]; + + $listview[$k]['source'] = json_encode($listview[$k]['source']); + } + + $pageData['page'] = $listview; + + $smarty->saveCache($cacheKey, $pageData); +} + +$page = array( + 'tab' => 0, // for g_initHeader($tab) + 'title' => implode(" - ", $title), + 'path' => "[".implode(", ", $path)."]", +); + +$smarty->updatePageVars($page); +$smarty->assign('lang', Lang::$main); +$smarty->assign('data', $pageData); +$smarty->assign('mysql', DB::Aowow()->getStatistics()); +$smarty->display('titles.tpl'); + +?> diff --git a/template/bricks/achievement_table.tpl b/template/bricks/achievement_table.tpl new file mode 100644 index 00000000..27241f73 --- /dev/null +++ b/template/bricks/achievement_table.tpl @@ -0,0 +1,33 @@ +{strip} + new Listview({ldelim} + template:'achievement', + {if !isset($params.id)}id:'achievements',{/if} + {if !isset($params.tabs)}tabs:tabsRelated,{/if} + {if !isset($params.name)}name:LANG.tab_achievements,{/if} + {if !isset($params.parent)}parent:'listview-generic',{/if} + {if isset($params.note)}_truncated: 1,{/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}, + name:'{$curr.name|escape:"javascript"}', + description:'{$curr.description|escape:"javascript"}', + side:{$curr.faction}, + points:{$curr.points}, + category:{$curr.category}, + parentcat:{$curr.parentCat} + {if isset($curr.rewards)}, rewards:{$curr.rewards}{/if} + {if isset($curr.reward)}, reward:'{$curr.reward|escape:"javascript"}'{/if} + {rdelim} + {if $smarty.foreach.i.last}{else},{/if} + {/foreach} + ] + {rdelim}); +{/strip} \ No newline at end of file diff --git a/template/bricks/allachievements_table.tpl b/template/bricks/allachievements_table.tpl new file mode 100644 index 00000000..13ac4cdb --- /dev/null +++ b/template/bricks/allachievements_table.tpl @@ -0,0 +1,6 @@ +var _ = g_achievements; +{strip} +{foreach from=$data key=id item=item} + _[{$id}]={ldelim}icon:'{$item.icon|escape:"javascript"}',name_{$user.language}:'{$item.name|escape:"javascript"}'{rdelim}; +{/foreach} +{/strip} diff --git a/template/bricks/alltitles_table.tpl b/template/bricks/alltitles_table.tpl new file mode 100644 index 00000000..dedfa444 --- /dev/null +++ b/template/bricks/alltitles_table.tpl @@ -0,0 +1,9 @@ +var _ = g_titles; +{strip} +{foreach from=$data key=id item=item} + _[{$id}]={ldelim} + name_{$user.language}:'{$item.name|escape:"javascript"}' + {if isset($item.namefemale)}, namefemale_{$user.language}:'{$item.namefemale|escape:"javascript"}'{/if} + {rdelim}; +{/foreach} +{/strip} diff --git a/template/bricks/community.tpl b/template/bricks/community.tpl new file mode 100644 index 00000000..fb16d981 --- /dev/null +++ b/template/bricks/community.tpl @@ -0,0 +1,68 @@ + {strip} +var lv_comments = [ +{foreach name=forCo from=$community.co key=number item=co} + {ldelim} + number:{$co.number}, + user:'{$co.user}', + body:'{$co.body|escape:"javascript"}', + date:'{$co.date|date_format:"%Y/%m/%d %H:%M:%S"}', + {if $co.roles!=0} + roles:{$co.roles}, + {/if} + {if $co.indent!=0} + indent:{$co.indent}, + {/if} + rating:{$co.rating}, + replyTo:{$co.replyto}, + purged:{$co.purged}, + deleted:0, + raters:[{foreach name=foo2 key=id from=$co.raters item=rater}[{$rater.userid},{$rater.rate}]{if $smarty.foreach.foo2.last}{else},{/if}{/foreach}], + id:{$co.id} + + ,sticky:{$co.sticky} + ,userRating:{$co.userRating} + {rdelim} + {if $smarty.foreach.forCo.last}{else},{/if} +{/foreach} +]; +{/strip} + {strip} +var lv_screenshots = [ +{foreach name=forSc from=$community.sc key=number item=sc} + {ldelim} + id:{$sc.Id}, + user:'{$sc.user}', + date:'{$sc.date|date_format:"%Y/%m/%d %H:%M:%S"}', + width:{$sc.width}, + height:{$sc.height}, + type:{$page.type}, + typeId:{$page.typeId}, + {if isset($sc.sticky)} + sticky:{$sc.sticky}, + {/if} + caption:'{$sc.caption|escape:"javascript"}' + {rdelim} + {if $smarty.foreach.forSc.last}{else},{/if} +{/foreach} +]; +{/strip} + {strip} +var lv_videos = [ +{foreach name=forVi from=$community.vi key=number item=vi} + {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} + caption:'{$vi.caption|escape:"javascript"}' + {rdelim} + {if $smarty.foreach.forVi.last}{else},{/if} +{/foreach} +]; +{/strip} diff --git a/template/bricks/infobox.tpl b/template/bricks/infobox.tpl new file mode 100644 index 00000000..3179eb5a --- /dev/null +++ b/template/bricks/infobox.tpl @@ -0,0 +1,13 @@ + + + + + + + +
{$lang.quickFacts}
{$lang.screenshots}
{$lang.videos}
+ + + \ No newline at end of file diff --git a/template/bricks/quest_table.tpl b/template/bricks/quest_table.tpl new file mode 100644 index 00000000..fd0b9353 --- /dev/null +++ b/template/bricks/quest_table.tpl @@ -0,0 +1,71 @@ +{strip} + new Listview({ldelim} + template:'quest', + {if !isset($params.id)}id:'quests',{/if} + {if !isset($params.tabs)}tabs:tabsRelated,{/if} + {if !isset($params.name)}name:LANG.tab_quests,{/if} + {if !isset($params.parent)}parent:'listview-generic',{/if} + {if isset($params.note)}_truncated: 1,{/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}', + name:'{$curr.name|escape:"quotes"}', + level:'{$curr.level}', + {if ($curr.reqlevel)} + reqlevel:{$curr.reqlevel}, + {/if} + side:'{$curr.side}' + {if isset($curr.itemrewards)} + ,itemrewards:[ + {section name=j loop=$curr.itemrewards} + [{$curr.itemrewards[j][0]},{$curr.itemrewards[j][1]}] + {if $smarty.section.j.last}{else},{/if} + {/section} + ] + {/if} + {if isset($curr.itemchoices)} + ,itemchoices:[ + {section name=j loop=$curr.itemchoices} + [{$curr.itemchoices[j][0]},{$curr.itemchoices[j][1]}] + {if $smarty.section.j.last}{else},{/if} + {/section} + ] + {/if} + {if isset($curr.xp)} + ,xp:{$curr.xp} + {/if} + {if isset($curr.titlereward)} + ,titlereward:{$curr.titlereward} + {/if} + {if isset($curr.money)} + ,money:{$curr.money} + {/if} + {if isset($curr.category)} + ,category:{$curr.category} + {/if} + {if isset($curr.category2)} + ,category2:{$curr.category2} + {/if} + {if isset($curr.type)} + ,type:{$curr.type} + {/if} + {if isset($curr.Daily)} + ,daily:1 + {/if} + {if isset($curr.flags)} + ,wflags:$curr.flags {* wflags: &1: disabled/historical; &32: AutoAccept; &64: Hostile(?) *} + {/if} + {rdelim} + {if $smarty.foreach.i.last}{else},{/if} + {/foreach} + ] + {rdelim}); +{/strip} diff --git a/template/bricks/title_table.tpl b/template/bricks/title_table.tpl new file mode 100644 index 00000000..49ef6795 --- /dev/null +++ b/template/bricks/title_table.tpl @@ -0,0 +1,33 @@ +{strip} + new Listview({ldelim} + template:'title', + {if !isset($params.id)}id:'titles',{/if} + {if isset($params.note)}_truncated: 1,{/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} + category:{$curr.category}, + expansion:{$curr.expansion}, + gender:{$curr.gender}, + id:{$curr.id}, + side:{$curr.side}, + name:'{$curr.name|escape:"javascript"}' + {if isset($curr.namefemale)} + , namefemale:'{$curr.namefemale|escape:"javascript"}' + {/if} + {if isset($curr.source)} + , source:{$curr.source} + {/if} + {rdelim} + {if $smarty.foreach.i.last}{else},{/if} + {/foreach} + ] + {rdelim}); +{/strip} \ No newline at end of file diff --git a/template/css/global.css b/template/css/global.css index f1c04f95..65166528 100644 --- a/template/css/global.css +++ b/template/css/global.css @@ -1291,6 +1291,12 @@ a.star-icon-right span padding-right: 34px !important; } +.bc-icon-right +{ + background: url(../../images/icons/bc_icon.gif) right center no-repeat; + padding-right: 34px !important; +} + .wotlk-icon { background: url(../../images/icons/wotlk_icon.gif) right center no-repeat; @@ -1299,7 +1305,7 @@ a.star-icon-right span .wotlk-icon-right { - background: url(../../images/icons/wotlk.gif) right center no-repeat; + background: url(../../images/icons/wotlk_icon.gif) right center no-repeat; padding-right: 41px !important; } @@ -2428,11 +2434,18 @@ div.live-search-icon div.live-search-icon div { - background-image: url(../images/border_small.png); + background-image: url(../../images/icons/border_small.png); background-position: left center; background-repeat: no-repeat; } +div.live-search-icon-boss + { + background-image: url(../../images/icons/boss.gif); + background-position: 8px center; + background-repeat: no-repeat; +} + div.live-search-icon-quest-alliance { background-image: url(../../images/icons/alliance-icon.gif); @@ -2961,10 +2974,12 @@ a:hover, a.open, .text b, .text ol li div, .text li div, .infobox li div, .minib text-decoration: underline; } +/* probably unnessecary #wrapper.nosidebar #main, #wrapper.nosidebar { min-height: 0; } +*/ #footer a, #beyondfooter a { diff --git a/template/js/Summary.js b/template/js/Summary.js index a7584d92..2889fa1f 100644 --- a/template/js/Summary.js +++ b/template/js/Summary.js @@ -1710,7 +1710,7 @@ Summary.prototype = { this.searchName = ce("input"); this.searchName.type = "text"; aE(this.searchName, "keyup", this.onSearchKeyUp.bind(this)); - aE(this.searchName, Browser.opera ? "keypress": "keydown", this.onSearchKeyDown.bind(this)); + aE(this.searchName, "keydown", this.onSearchKeyDown.bind(this)); ae(d, this.searchName); this.searchMsg = ce("span"); this.searchMsg.style.fontWeight = "bold"; diff --git a/template/js/global.js b/template/js/global.js index f952a381..29f0695d 100644 --- a/template/js/global.js +++ b/template/js/global.js @@ -7954,16 +7954,17 @@ Listview.funcBox = { break } }, - getExpansionText: function (a) { - var b = ""; - if (a.expansion == 1) { - b += " bc" - } else { - if (a.expansion == 2) { - b += " wotlk wrath" - } + getExpansionText: function (line) { + var str = ''; + + if (line.expansion == 1) { + str += ' bc'; } - return b + else if (line.expansion == 2) { + str += ' wotlk wrath'; + } + + return str; } }; Listview.templates = { @@ -9046,308 +9047,338 @@ Listview.templates = { } }, quest: { - sort: [1, 2], + sort: [1,2], nItemsPerPage: 100, searchable: 1, filtrable: 1, - columns: [{ - id: "name", - name: LANG.name, - type: "text", - align: "left", - value: "name", - compute: function (c, d) { - var m = ce("div"); - var b = ce("a"); - b.style.fontFamily = "Verdana, sans-serif"; - b.href = this.template.getItemLink(c); - ae(b, ct(c.name)); - ae(m, b) - if (c.reqclass) { - var k = ce("div"); - k.className += " small2"; - var e = Listview.funcBox.assocBinFlags(c.reqclass, g_chr_classes); - for (var g = 0, h = e.length; g < h; ++g) { - if (g > 0) { - ae(k, ct(LANG.comma)) - } - var l = ce("a"); - l.href = "?class=" + e[g]; - l.className += "c" + e[g]; - st(l, g_chr_classes[e[g]]); - ae(k, l); - } - ae(m, k); - } - if (c.wflags & 1 || (c.wflags & 32) || (c.reqrace && c.reqrace != -1)) { - m.style.position = "relative"; - var n = ce("div"); - n.className = "small"; - n.style.fontStyle = "italic"; - n.style.position = "absolute"; - n.style.right = "3px"; - n.style.bottom = "3px"; - n.style.textAlign = "right"; - if (c.wflags & 1) { - var p = ce("span"); - p.style.color = "red"; - ae(p, ct(LANG.lvdisabled)); - ae(n, p); - } - if (c.wflags & 32) { - if (c.wflags & 1) { - ae(n, ce("br")); - m.style.height = "33px"; - } - var p = ce("span"), - o = LANG.lvquest_autoaccept; - if (c.wflags & 64) { - p.style.color = "red"; - o += " " + LANG.lvquest_hostile; - } - ae(p, ct(o)); - ae(n, p) - } - if (c.reqrace && c.reqrace != -1) { - var e = Listview.funcBox.assocBinFlags(c.reqrace, g_chr_races); - if (e.length && (c.wflags & 1 || (c.wflags & 32))) { - ae(n, ce("br")); - m.style.height = "33px"; - } - for (var g = 0, h = e.length; g < h; ++g) { - if (g > 0) { - ae(n, ct(LANG.comma)) + columns: [ + { + id: 'name', + name: LANG.name, + type: 'text', + align: 'left', + value: 'name', + compute: function (quest, td) { + var wrapper = ce('div'); + var a = ce('a'); + a.style.fontFamily = 'Verdana, sans-serif'; + a.href = this.template.getItemLink(quest); + ae(a, ct(quest.name)); + ae(wrapper, a); + + if (quest.reqclass) { + var d = ce('div'); + d.className += ' small2'; + + var classes = Listview.funcBox.assocBinFlags(quest.reqclass, g_chr_classes); + + for (var i = 0, len = classes.length; i < len; ++i) { + if (i > 0) { + ae(d, ct(LANG.comma)); } - var l = ce("a"); - l.href = "?race=" + e[g]; - l.className += "q1"; - st(l, g_chr_races[e[g]]); - ae(n, l) + + var a = ce('a'); + a.href = '?class=' + classes[i]; + a.className += 'c' + classes[i]; + st(a, g_chr_classes[classes[i]]); + ae(d, a); + } + + ae(wrapper, d); + } + + if (quest.wflags & 1 || (quest.wflags & 32) || (quest.reqrace && quest.reqrace != -1)) { + wrapper.style.position = 'relative'; + var d = ce('div'); + d.className = 'small'; + d.style.fontStyle = 'italic'; + d.style.position = 'absolute'; + d.style.right = '3px'; + d.style.bottom = '3px'; + d.style.textAlign = 'right'; + if (quest.wflags & 1) { + var s = ce('span'); + s.style.color = 'red'; + ae(s, ct(LANG.lvdisabled)); + // ae(s, ct(LANG.lvquest_removed)); + ae(d, s); + } + + if (quest.wflags & 32) { + if (quest.wflags & 1) { + ae(d, ce('br')); + wrapper.style.height = '33px'; + } + + var + s = ce('span'), + o = LANG.lvquest_autoaccept; + if (quest.wflags & 64) { + s.style.color = 'red'; + o += ' ' + LANG.lvquest_hostile; + } + ae(s, ct(o)); + ae(d, s); + } + + if (quest.reqrace && quest.reqrace != -1) { + var races = Listview.funcBox.assocBinFlags(quest.reqrace, g_chr_races); + + if (races.length && (quest.wflags & 1 || (quest.wflags & 32))) { + ae(d, ce('br')); + wrapper.style.height = '33px'; + } + + for (var i = 0, len = races.length; i < len; ++i) { + if (i > 0) { + ae(d, ct(LANG.comma)); + } + + var l = ce('a'); + l.href = '?race=' + races[i]; + l.className += 'q1'; + st(l, g_chr_races[races[i]]); + ae(d, l); + } + } + + ae(wrapper, d); + } + + ae(td, wrapper); + } + }, + { + id: 'level', + name: LANG.level, + value: 'level', + compute: function (quest, td) { + if (quest.type || quest.daily || quest.weekly) { + var d = ce('div'); + d.className = 'small'; + nw(d); + + if (quest.daily) { + if (quest.type) { + ae(d, ct(sprintf(LANG.lvquest_daily, g_quest_types[quest.type]))); + } + else { + ae(d, ct(LANG.daily)); + } + } + else if (quest.weekly) { + if (quest.type) { + ae(d, ct(sprintf(LANG.lvquest_weekly, g_quest_types[quest.type]))); + } + else { + ae(d, ct(LANG.weekly)); + } + } + else if (quest.type) { + ae(d, ct(g_quest_types[quest.type])); + } + + ae(td, d); + } + + return quest.level; + }, + getVisibleText: function (quest) { + var buff = ''; + + if (quest.type) { + buff += ' ' + g_quest_types[quest.type]; + } + + if (quest.daily) { + buff += ' ' + LANG.daily; + } + else if (quest.weekly) { + buff += ' ' + LANG.weekly; + } + + if (quest.level) { + buff += ' ' + quest.level; + } + + return buff; + }, + sortFunc: function (a, b, col) { + return strcmp(a.level, b.level) || strcmp(a.type, b.type); + } + }, + { + id: 'reqlevel', + name: LANG.req, + tooltip: LANG.tooltip_reqlevel, + value: 'reqlevel' + }, + { + id: 'side', + name: LANG.side, + type: 'text', + compute: function (quest, td) { + if (quest.side && quest.side != 3) { + var sp = ce('span'); + sp.className = (quest.side == 1 ? 'alliance-icon': 'horde-icon'); + sp.onmouseover = function (e) { + Tooltip.showAtCursor(e, g_sides[quest.side], 0, 0, 'q'); + }; + sp.onmousemove = Tooltip.cursorUpdate; + sp.onmouseout = Tooltip.hide; + ae(td, sp); + } + else if (!quest.side) { + ae(td, ct('??')); + } + }, + getVisibleText: function (quest) { + if (quest.side) { + return g_sides[quest.side]; + } + }, + sortFunc: function (a, b, col) { + return strcmp(g_sides[a.side], g_sides[b.side]); + } + }, + { + id: 'rewards', + name: LANG.rewards, + compute: function (quest, td) { + var hasIcons = (quest.itemchoices != null || quest.itemrewards != null); + if (hasIcons) { + var + choiceText, + rewardText; + if (quest.itemchoices && quest.itemchoices.length > 1) { + choiceText = LANG.lvquest_pickone; + if (quest.itemrewards && quest.itemrewards.length > 0) { + rewardText = LANG.lvquest_alsoget; + } + } + + Listview.funcBox.createCenteredIcons(quest.itemchoices, td, choiceText, 2); + Listview.funcBox.createCenteredIcons(quest.itemrewards, td, rewardText, 2); + } + + if (quest.titlereward && g_titles[quest.titlereward]) { + var title = g_titles[quest.titlereward]['name_' + g_locale.name]; + title = title.replace('%s', '<' + LANG.name + '>'); + var span = ce('a'); + span.className = 'q1'; + span.href = '?title=' + quest.titlereward; + span.innerHTML = title; + ae(td, span); + ae(td, ce('br')); + } + }, + getVisibleText: function (quest) { + var buff = ''; + + if (quest.itemchoices && quest.itemchoices.length) { + buff += ' ' + LANG.lvquest_pickone; + if (quest.itemrewards && quest.itemrewards.length) { + buff += ' ' + LANG.lvquest_alsoget; } } - ae(m, n) - } - ae(d, m); - } - }, - { - id: "level", - name: LANG.level, - width: "7%", - value: "level", - compute: function (a, c) { - if (a.type || a.daily || a.weekly) { - var b = ce("div"); - b.className = "small"; - nw(b); - if (a.daily) { - if (a.type) { - ae(b, ct(sprintf(LANG.lvquest_daily, g_quest_types[a.type]))) - } else { - ae(b, ct(LANG.daily)) - } - } else { - if (a.weekly) { - if (a.type) { - ae(b, ct(sprintf(LANG.lvquest_weekly, g_quest_types[a.type]))) - } else { - ae(b, ct(LANG.weekly)) - } - } else { - if (a.type) { - ae(b, ct(g_quest_types[a.type])) - } - } - } - ae(c, b) - } - return a.level - }, - getVisibleText: function (a) { - var b = ""; - if (a.type) { - b += " " + g_quest_types[a.type] - } - if (a.daily) { - b += " " + LANG.daily - } else { - if (a.weekly) { - b += " " + LANG.weekly - } - } - if (a.level) { - b += " " + a.level - } - return b - }, - sortFunc: function (d, c, e) { - return strcmp(d.level, c.level) || strcmp(d.type, c.type) - } - }, - { - id: "reqlevel", - name: LANG.req, - tooltip: LANG.tooltip_reqlevel, - width: "7%", - value: "reqlevel" - }, - { - id: "side", - name: LANG.side, - type: "text", - compute: function (a, c) { - if (a.side && a.side != 3) { - var b = ce("span"); - b.className = (a.side == 1 ? "alliance-icon": "horde-icon"); - b.onmouseover = function (d) { - Tooltip.showAtCursor(d, g_sides[a.side], 0, 0, "q") - }; - b.onmousemove = Tooltip.cursorUpdate; - b.onmouseout = Tooltip.hide; - ae(c, b) - } else { - if (!a.side) { - ae(c, ct("??")) - } - } - }, - getVisibleText: function (a) { - if (a.side) { - return g_sides[a.side] - } - }, - sortFunc: function (d, c, e) { - return strcmp(g_sides[d.side], g_sides[c.side]) - } - }, - { - id: "rewards", - name: LANG.rewards, - width: "25%", - compute: function (b, g) { - var a = (b.itemchoices != null || b.itemrewards != null); - if (a) { - var f, e; - if (b.itemchoices && b.itemchoices.length > 1) { - f = LANG.lvquest_pickone; - if (b.itemrewards && b.itemrewards.length > 0) { - e = LANG.lvquest_alsoget - } - } - Listview.funcBox.createCenteredIcons(b.itemchoices, g, f, 2); - Listview.funcBox.createCenteredIcons(b.itemrewards, g, e, 2) - } - if (b.titlereward && g_titles[b.titlereward]) { - var d = g_titles[b.titlereward]["name_" + g_locale.name]; - d = d.replace("%s", '<' + LANG.name + ">"); - var c = ce("a"); - c.className = "q1"; - c.href = "?title=" + b.titlereward; - c.innerHTML = d; - ae(g, c); - ae(g, ce("br")) - } - }, - getVisibleText: function (a) { - var b = ""; - if (a.itemchoices && a.itemchoices.length) { - b += " " + LANG.lvquest_pickone; - if (a.itemrewards && a.itemrewards.length) { - b += " " + LANG.lvquest_alsoget - } - } - if (a.titlereward && g_titles[a.titlereward]) { - b += " " + g_titles[a.titlereward]["name_" + g_locale.name] - } - return b - }, - sortFunc: function (d, c, e) { - var g = (d.itemchoices != null ? d.itemchoices.length: 0) + (d.itemrewards != null ? d.itemrewards.length: 0); - var f = (c.itemchoices != null ? c.itemchoices.length: 0) + (c.itemrewards != null ? c.itemrewards.length: 0); - var i = (d.titlereward && g_titles[d.titlereward] ? g_titles[d.titlereward]["name_" + g_locale.name] : ""); - var h = (c.titlereward && g_titles[c.titlereward] ? g_titles[c.titlereward]["name_" + g_locale.name] : ""); - return strcmp(g, f) || strcmp(i, h) - } - }, - { - id: "experience", - name: LANG.exp, - value: "xp" - }, - { - id: "money", - name: LANG.money, - compute: function (a, b) { - if (a.money > 0 || a.currencyrewards != null) { - if (a.money > 0) { - Listview.funcBox.appendMoney(b, a.money); - if (a.currencyrewards != null) { - ae(b, ct(" + ")) - } - } - if (a.currencyrewards != null) { - Listview.funcBox.appendMoney(b, null, a.side, null, a.currencyrewards) - } - } - }, - getVisibleText: function (a) { - var c = ""; - for (var b = 0; b < a.currencyrewards.length; ++b) { - if (g_gatheredcurrencies[a.currencyrewards[b][0]]) { - c += " " + g_gatheredcurrencies[a.currencyrewards[b][0]]["name_" + g_locale.name] - } - } - return c - }, - sortFunc: function (d, c, e) { - var g = 0, - f = 0; - if (d.currencyrewards && d.currencyrewards.length) { - for (a in d.currencyrewards) { - var b = (d.currencyrewards)[a]; - g += b[1] - } - } - if (c.currencyrewards && c.currencyrewards.length) { - for (a in c.currencyrewards) { - var b = (c.currencyrewards)[a]; - f += b[1] - } - } - return strcmp(g, f) || strcmp(d.money, c.money) - } - }, - { - id: "reputation", - name: LANG.reputation, - width: "14%", - value: "id", - hidden: true - }, - { - id: "category", - name: LANG.category, - type: "text", - width: "16%", - compute: function (c, d) { - if (c.category != 0) { - d.className = "small q1"; - var b = ce("a"); - b.href = "?quests=" + c.category2 + "." + c.category; - ae(b, ct(Listview.funcBox.getQuestCategory(c.category))); - ae(d, b) - } - }, - getVisibleText: function (a) { - return Listview.funcBox.getQuestCategory(a.category) - }, - sortFunc: function (d, c, f) { - var e = Listview.funcBox.getQuestCategory; - return strcmp(e(d.category), e(c.category)) - } - }], - getItemLink: function (a) { - return "?quest=" + a.id + + if (quest.titlereward && g_titles[quest.titlereward]) { + buff += ' ' + g_titles[quest.titlereward]['name_' + g_locale.name]; + } + + return buff; + }, + sortFunc: function (a, b, col) { + var lenA = (a.itemchoices != null ? a.itemchoices.length : 0) + (a.itemrewards != null ? a.itemrewards.length : 0); + var lenB = (b.itemchoices != null ? b.itemchoices.length : 0) + (b.itemrewards != null ? b.itemrewards.length : 0); + var titleA = (a.titlereward && g_titles[a.titlereward] ? g_titles[a.titlereward]['name_' + g_locale.name] : ''); + var titleB = (b.titlereward && g_titles[b.titlereward] ? g_titles[b.titlereward]['name_' + g_locale.name] : ''); + return strcmp(lenA, lenB) || strcmp(titleA, titleB); + } + }, + { + id: 'experience', + name: LANG.exp, + value: 'xp' + }, + { + id: 'money', + name: LANG.money, + compute: function (quest, td) { + if (quest.money > 0 || quest.currencyrewards != null) { + if (quest.money > 0) { + Listview.funcBox.appendMoney(td, quest.money); + if (quest.currencyrewards != null) { + ae(td, ct(' + ')); + } + } + + if (quest.currencyrewards != null) { + Listview.funcBox.appendMoney(td, null, quest.side, null, quest.currencyrewards); + } + } + }, + getVisibleText: function (quest) { + var buff = ''; + for (var i = 0; quest.currencyrewards && i < quest.currencyrewards.length; ++i) { + if (g_gatheredcurrencies[quest.currencyrewards[i][0]]) { + buff += ' ' + g_gatheredcurrencies[quest.currencyrewards[i][0]]['name_' + g_locale.name]; + } + } + return buff; + }, + sortFunc: function (a, b, col) { + var + lenA = 0, + lenB = 0; + + if (a.currencyrewards && a.currencyrewards.length) { + for (i in a.currencyrewards) { + var c = (a.currencyrewards)[i]; + lenA += c[1]; + } + } + if (b.currencyrewards && b.currencyrewards.length) { + for (a in b.currencyrewards) { + var c = (b.currencyrewards)[i]; + lenB += c[1]; + } + } + return strcmp(lenA, lenB) || strcmp(a.money, b.money); + } + }, + { + id: 'reputation', + name: LANG.reputation, + width: '14%', + value: 'id', + hidden: true + }, + { + id: 'category', + name: LANG.category, + type: 'text', + compute: function (quest, td) { + if (quest.category != 0) { + td.className = 'small q1'; + var a = ce('a'); + a.href = '?quests=' + quest.category2 + '.' + quest.category; + ae(a, ct(Listview.funcBox.getQuestCategory(quest.category))); + ae(td, a); + } + }, + getVisibleText: function (quest) { + return Listview.funcBox.getQuestCategory(quest.category); + }, + sortFunc: function (a, b, col) { + var _ = Listview.funcBox.getQuestCategory; + return strcmp(_(a.category), _(b.category)); + } + } + ], + + getItemLink: function (quest) { + return '?quest=' + quest.id; } }, skill: { @@ -11367,256 +11398,243 @@ Listview.templates = { nItemsPerPage: 100, searchable: 1, filtrable: 1, - columns: [{ - id: "name", - name: LANG.name, - type: "text", - align: "left", - value: "name", - span: 2, - compute: function (c, j, g) { - var b = null; - if (c.who && c.completed) { - b = "who=" + c.who + "&when=" + c.completed.getTime() - } - var f = ce("td"); - f.style.width = "1px"; - f.style.padding = "0"; - f.style.borderRight = "none"; - ae(f, g_achievements.createIcon(c.id, 1)); - Icon.getLink(f.firstChild).href = this.template.getItemLink(c); - Icon.getLink(f.firstChild).rel = b; - ae(g, f); - j.style.borderLeft = "none"; - var e = ce("a"); - e.style.fontFamily = "Verdana, sans-serif"; - e.href = this.template.getItemLink(c); - e.rel = b; - ae(e, ct(c.name)); - ae(j, e); - if (c.description != null) { - var h = ce("div"); - h.className = "small"; - ae(h, ct(c.description)); - ae(j, h) - } - }, - getVisibleText: function (a) { - var b = a.name; - if (a.description) { - b += " " + a.description - } - return b - } - }, - { - id: "location", - name: LANG.location, - type: "text", - width: "15%", - compute: function (b, d) { - if (b.zone) { - var c = ce("a"); - c.className = "q1"; - c.href = "?zone=" + b.zone; - ae(c, ct(g_zones[b.zone])); - ae(d, c) - } - }, - getVisibleText: function (a) { - return Listview.funcBox.arrayText(a.zone, g_zones) - }, - sortFunc: function (d, c, e) { - return strcmp(g_zones[d.zone], g_zones[c.zone]) - }, - hidden: true - }, - { - id: "side", - name: LANG.side, - type: "text", - compute: function (a, c) { - if (a.side && a.side != 3) { - var b = ce("span"); - b.className = (a.side == 1 ? "alliance-icon": "horde-icon"); - b.onmouseover = function (d) { - Tooltip.showAtCursor(d, g_sides[a.side], 0, 0, "q") - }; - b.onmousemove = Tooltip.cursorUpdate; - b.onmouseout = Tooltip.hide; - ae(c, b) - } - }, - getVisibleText: function (a) { - if (a.side) { - return g_sides[a.side] - } - }, - sortFunc: function (d, c, e) { - return strcmp(g_sides[d.side], g_sides[c.side]) - } - }, - { - id: "points", - name: LANG.points, - type: "number", - width: "10%", - value: "points", - compute: function (a, b) { - if (a.points) { - Listview.funcBox.appendMoney(b, 0, null, 0, 0, 0, a.points) - } - } - }, - { - id: "rewards", - name: LANG.rewards, - type: "text", - width: "20%", - compute: function (h, d) { - if (h.rewards) { - var c = []; - var b = []; // spellrewards not present in 3.x - var f = []; - for (var e = 0; e < h.rewards.length; e++) { - if (h.rewards[e][0] == 11) { - f.push(h.rewards[e][1]) - } else { - if (h.rewards[e][0] == 3) { - c.push(h.rewards[e][1]) - } else { - if (h.rewards[e][0] == 6) { - b.push(h.rewards[e][1]) - } - } - } - } - if (c.length > 0) { - for (var e = 0; e < c.length; e++) { - if (!g_items[c[e]]) { - return - } - var m = g_items[c[e]]; - var k = ce("a"); - k.href = "?item=" + c[e]; - k.className = "q" + m.quality + " icontiny tinyspecial"; - k.style.backgroundImage = "url(" + g_staticUrl + "/images/icons/tiny/" + m.icon.toLowerCase() + ".gif)"; - ae(k, ct(m["name_" + g_locale.name])); - var l = ce("span"); - ae(l, k); - ae(d, l); - ae(d, ce("br")) - } - } - if (b.length > 0) { - for (var e = 0; e < b.length; e++) { - if (!g_spells[b[e]]) { - return - } - var m = g_spells[b[e]]; - var k = ce("a"); - k.href = "?spell=" + b[e]; - k.className = "q8 icontiny tinyspecial"; - k.style.backgroundImage = "url(" + g_staticUrl + "/images/icons/tiny/" + m.icon.toLowerCase() + ".gif)"; - ae(k, ct(m["name_" + g_locale.name])); - var l = ce("span"); - ae(l, k); - ae(d, l); - ae(d, ce("br")) - } - } - if (f.length > 0) { - for (var e = 0; e < f.length; e++) { - if (!g_titles[f[e]]) { - return - } - var g = g_titles[f[e]]["name_" + g_locale.name]; - g = g.replace("%s", '<' + LANG.name + ">"); - var l = ce("a"); - l.className = "q1"; - l.href = "?title=" + f[e]; - l.innerHTML = g; - ae(d, l); - ae(d, ce("br")) - } - } - } else { - if (h.reward) { - var l = ce("span"); - l.className = "q1"; - ae(l, ct(h.reward)); - ae(d, l) - } - } - }, - getVisibleText: function (b) { - var d = ""; - if (b.rewards) { - for (var c = 0; c < b.rewards.length; c++) { - if (b.rewards[c][0] == 11) { - d += " " + g_titles[b.rewards[c][1]]["name_" + g_locale.name].replace("%s", "<" + LANG.name + ">") - } else { - if (b.rewards[c][0] == 3) { - d += " " + g_items[b.rewards[c][1]]["name_" + g_locale.name] - } else { - if (b.rewards[c][0] == 6) { - d += " " + g_spells[b.rewards[c][1]]["name_" + g_locale.name] - } - } - } - } - } else { - if (b.reward) { - d += " " + b.reward - } - } - return d - }, - sortFunc: function (d, c, e) { - var f = this.getVisibleText(d); - var g = this.getVisibleText(c); - if (f != "" && g == "") { - return -1 - } - if (g != "" && f == "") { - return 1 - } - return strcmp(f, g) - } - }, - { - id: "category", - name: LANG.category, - type: "text", - width: "15%", - compute: function (b, d) { - d.className = "small"; - f = "?achievements="; - if (b.category != -1 && b.parentcat != -1) { - var c = ce("a"); - c.className = "q0"; - c.href = "?achievements=" + b.parentcat; - ae(c, ct(g_achievement_categories[b.parentcat])); - ae(d, c); - ae(d, ce("br")); - f = c.href + "." - } - var e = ce("a"); - e.className = "q1"; - e.href = f + b.category; - ae(e, ct(g_achievement_categories[b.category])); - ae(d, e) - }, - getVisibleText: function (a) { - return g_achievement_categories[a.category] - }, - sortFunc: function (d, c, e) { - return strcmp(g_achievement_categories[d.category], g_achievement_categories[c.category]) - }, - hidden: true - }], - getItemLink: function (a) { - return "?achievement=" + a.id + columns: [ + { + id: 'name', + name: LANG.name, + type: 'text', + align: 'left', + value: 'name', + span: 2, + compute: function (achievement, td, tr) { + var rel = null; + if (achievement.who && achievement.completed) { + rel = 'who=' + achievement.who + '&when=' + achievement.completed.getTime(); + } + + var i = ce('td'); + i.style.width = '1px'; + i.style.padding = '0'; + i.style.borderRight = 'none'; + + ae(i, g_achievements.createIcon(achievement.id, 1)); + + Icon.getLink(i.firstChild).href = this.template.getItemLink(achievement); + Icon.getLink(i.firstChild).rel = rel; + + ae(tr, i); + td.style.borderLeft = 'none'; + + var a = ce('a'); + a.style.fontFamily = 'Verdana, sans-serif'; + a.href = this.template.getItemLink(achievement); + a.rel = rel; + ae(a, ct(achievement.name)); + ae(td, a); + + if (achievement.description != null) { + var d = ce('div'); + d.className = 'small'; + ae(d, ct(achievement.description)); + ae(td, d); + } + }, + getVisibleText: function (achievement) { + var buff = achievement.name; + if (achievement.description) { + buff += ' ' + achievement.description; + } + return buff; + } + }, + { + id: 'side', + name: LANG.side, + type: 'text', + compute: function (achievement, td) { + if (achievement.side && achievement.side != 3) { + var sp = ce('span'); + sp.className = (achievement.side == 1 ? 'alliance-icon': 'horde-icon'); + sp.onmouseover = function (e) { + Tooltip.showAtCursor(e, g_sides[achievement.side], 0, 0, 'q'); + }; + sp.onmousemove = Tooltip.cursorUpdate; + sp.onmouseout = Tooltip.hide; + ae(td, sp); + } + }, + getVisibleText: function (achievement) { + if (achievement.side) { + return g_sides[achievement.side]; + } + }, + sortFunc: function (a, b, col) { + return strcmp(g_sides[a.side], g_sides[b.side]); + } + }, + { + id: 'points', + name: LANG.points, + type: 'number', + width: '10%', + value: 'points', + compute: function (achievement, td) { + if (achievement.points) { + Listview.funcBox.appendMoney(td, 0, null, 0, 0, 0, achievement.points); + } + } + }, + { + id: 'rewards', + name: LANG.rewards, + type: 'text', + width: '20%', + compute: function (achievement, td) { + if (achievement.rewards) { + var itemrewards = []; + var spellrewards = []; // not used in 3.3.5 + var titlerewards = []; + for (var i = 0; i < achievement.rewards.length; i++) { + if (achievement.rewards[i][0] == 11) { + titlerewards.push(achievement.rewards[i][1]); + } + else if (achievement.rewards[i][0] == 3) { + itemrewards.push(achievement.rewards[i][1]); + } + else if (achievement.rewards[i][0] == 6) { + spellrewards.push(achievement.rewards[i][1]); + } + } + if (itemrewards.length > 0) { + for (var i = 0; i < itemrewards.length; i++) { + if (!g_items[itemrewards[i]]) { + return; + } + + var item = g_items[itemrewards[i]]; + var a = ce('a'); + a.href = '?item=' + itemrewards[i]; + a.className = 'q' + item.quality + ' icontiny tinyspecial'; + a.style.backgroundImage = 'url(' + g_staticUrl + '/images/icons/tiny/' + item.icon.toLowerCase() + '.gif)'; + ae(a, ct(item['name_' + g_locale.name])); + var span = ce('span'); + ae(span, a); + ae(td, span); + ae(td, ce('br')); + } + } + if (spellrewards.length > 0) { + for (var i = 0; i < spellrewards.length; i++) { + if (!g_spells[spellrewards[i]]) { + return; + } + + var item = g_spells[spellrewards[i]]; + var a = ce('a'); + a.href = '?spell=' + spellrewards[i]; + a.className = 'q8 icontiny tinyspecial'; + a.style.backgroundImage = 'url(' + g_staticUrl + '/images/icons/tiny/' + item.icon.toLowerCase() + '.gif)'; + ae(a, ct(item['name_' + g_locale.name])); + var span = ce('span'); + ae(span, a); + ae(td, span); + ae(td, ce('br')); + } + } + if (titlerewards.length > 0) { + for (var i = 0; i < titlerewards.length; i++) { + if (!g_titles[titlerewards[i]]) { + return; + } + + var title = g_titles[titlerewards[i]]['name_' + g_locale.name]; + title = title.replace('%s', '<' + LANG.name + '>'); + var span = ce('a'); + span.className = 'q1'; + span.href = '?title=' + titlerewards[i]; + span.innerHTML = title; + ae(td, span); + ae(td, ce('br')); + } + } + } + else if (achievement.reward) { + var span = ce('span'); + span.className = 'q1'; + ae(span, ct(achievement.reward)); + ae(td, span); + } + }, + getVisibleText: function (achievement) { + var buff = ''; + if (achievement.rewards) { + for (var i = 0; i < achievement.rewards.length; i++) { + if (achievement.rewards[i][0] == 11) { + buff += ' ' + g_titles[achievement.rewards[i][1]]['name_' + g_locale.name].replace('%s', '<' + LANG.name + '>'); + } + else if (achievement.rewards[i][0] == 3) { + buff += ' ' + g_items[achievement.rewards[i][1]]['name_' + g_locale.name]; + } + else if (achievement.rewards[i][0] == 6) { + buff += ' ' + g_spells[achievement.rewards[i][1]]['name_' + g_locale.name]; + } + } + } + else if (achievement.reward) { + buff += ' ' + achievement.reward; + } + + return buff; + }, + sortFunc: function (a, b, col) { + var text1 = this.getVisibleText(a); + var text2 = this.getVisibleText(b); + + if (text1 != '' && text2 == '') { + return -1; + } + if (text2 != '' && text1 == '') { + return 1; + } + + return strcmp(text1, text2); + } + }, + { + id: 'category', + name: LANG.category, + type: 'text', + width: '15%', + compute: function (achievement, td) { + td.className = 'small'; + path = '?achievements='; + if (achievement.category != -1 && achievement.parentcat != -1) { + var a2 = ce('a'); + a2.className = 'q0'; + a2.href = '?achievements=' + achievement.parentcat; + ae(a2, ct(g_achievement_categories[achievement.parentcat])); + ae(td, a2); + ae(td, ce('br')); + path = a2.href + '.'; + } + var a = ce('a'); + a.className = 'q1'; + a.href = path + achievement.category; + ae(a, ct(g_achievement_categories[achievement.category])); + ae(td, a); + }, + getVisibleText: function (achievement) { + return g_achievement_categories[achievement.category]; + }, + sortFunc: function (a, b, col) { + return strcmp(g_achievement_categories[a.category], g_achievement_categories[b.category]); + }, + hidden: true + } + ], + + getItemLink: function (achievement) { + return '?achievement=' + achievement.id; } }, title: { @@ -11624,210 +11642,250 @@ Listview.templates = { nItemsPerPage: -1, searchable: 1, filtrable: 1, - clickable: 0, - columns: [{ - id: "name", - name: LANG.name, - type: "text", - align: "left", - value: "name", - compute: function (e, g, d) { - var c = ce("span"), - f = ce("span"), - b = ct(str_replace(e.name, "%s", "")); - g.style.fontFamily = "Verdana, sans-serif"; - nw(g) - ae(f, ct("<" + LANG.name + ">")); - f.className = "q0"; - if (e.name.indexOf("%s") > 0) { - ae(c, b); - ae(c, f) - } else { - if (e.name.indexOf("%s") == 0) { - ae(c, f); - ae(c, b) - } - } - if (e.expansion) { - var a = ce("span"); - a.className = (e.expansion == 1 ? "bc-icon": "wotlk-icon"); - ae(a, c); - ae(g, a) - } else { - ae(g, c) - } - }, - sortFunc: function (d, c, e) { - var f = trim(d.name.replace("%s", "").replace(/^[\s,]*(,|the |of the |of )/i, "")); - bName = trim(c.name.replace("%s", "").replace(/^[\s,]*(,|the |of the |of )/i, "")); - return strcmp(f, bName) - }, - getVisibleText: function (a) { - var b = a.name; - if (a.expansion == 1) { - b += " bc" - } else { - if (a.expansion == 2) { - b += "wotlk wrath" - } - } - return b - } - }, - { - id: "gender", - name: LANG.gender, - type: "text", - value: "gender", - compute: function (c, d) { - if (c.gender && c.gender != 3) { - var a = g_file_genders[c.gender - 1]; - var b = ce("span"); - b.className = a + "-icon"; - b.onmouseover = function (f) { - Tooltip.showAtCursor(f, LANG[a], 0, 0, "q") - }; - b.onmousemove = Tooltip.cursorUpdate; - b.onmouseout = Tooltip.hide; - ae(d, b) - } - }, - getVisibleText: function (a) { - if (a.gender && a.gender != 3) { - return LANG[g_file_genders[a.gender - 1]] - } - }, - sortFunc: function (d, c, e) { - return strcmp(d.gender, c.gender) - } - }, - { - id: "side", - name: LANG.side, - type: "text", - compute: function (a, c) { - if (a.side && a.side != 3) { - var b = ce("span"); - b.className = (a.side == 1 ? "alliance-icon": "horde-icon"); - b.onmouseover = function (d) { - Tooltip.showAtCursor(d, g_sides[a.side], 0, 0, "q") - }; - b.onmousemove = Tooltip.cursorUpdate; - b.onmouseout = Tooltip.hide; - ae(c, b) - } - }, - getVisibleText: function (a) { - if (a.side) { - return g_sides[a.side] - } - }, - sortFunc: function (d, c, e) { - return strcmp(g_sides[d.side], g_sides[c.side]) - } - }, - { - id: "source", - name: LANG.source, - type: "text", - compute: function (j, d) { - if (j.source) { - nw(d); - d.className = "small"; - d.style.lineHeight = "18px"; - var b = 0; - for (var k in j.source) { - j.source[k].sort(function (l, i) { - return i.s - l.s - }); - for (var e = 0, f = j.source[k].length; e < f; ++e) { - var c = j.source[k][e]; - var g = 0; - if (j.faction && typeof c != "string" && c.s !== undefined && c.s != -1 && c.s != 2 - j.faction) { - continue - } - if (b++ > 0) { - ae(d, ce("br")) - } - if (typeof c == "string") { - ae(d, ct(c)) - } else { - if (c.t) { - g = c.t; - var h = ce("a"); - o.style.fontFamily = "Verdana, sans-serif"; - h.href = "?" + g_types[c.t] + "=" + c.ti; - h.className = "q1"; - if (c.s == 1) { - h.className += " alliance-icon" - } - if (c.s == 0) { - h.className += " horde-icon" - } - if (c.t == 5) { - h.className += " icontiny"; - h.style.backgroundImage = "url(" + g_staticUrl + "/images/wow/icons/tiny/quest_start.gif)" - } - ae(h, ct(c.n)); - ae(d, h) - } + + columns: [ + { + id: 'name', + name: LANG.name, + type: 'text', + align: 'left', + value: 'name', + compute: function (title, td, tr) { + var + sp = ce('a'), + n = ce('span'), + t = ct(str_replace(title.name, '%s', '')); + + td.style.fontFamily = 'Verdana, sans-serif'; + + // nw(td) + + sp.href = this.template.getItemLink(title); + + if(title.who) { + ae(n, ct(title.who)); + } + else { + ae(n, ct('<' + LANG.name + '>')); + n.className = 'q0'; + } + + if (title.name.indexOf('%s') > 0) { // Prefix title + ae(sp, t); + ae(sp, n); + } + else if (title.name.indexOf('%s') == 0) { // Suffix title + ae(sp, n); + ae(sp, t); + } + + if (title.expansion) { + var i = ce('span'); + i.className = (title.expansion == 1 ? 'bc-icon': 'wotlk-icon'); + ae(i, sp); + ae(td, i); + } + else { + ae(td, sp); + } + }, + sortFunc: function (a, b, col) { + var + aName = trim(a.name.replace('%s', '').replace(/^[\s,]*(,|the |of the |of )/i, '')); + bName = trim(b.name.replace('%s', '').replace(/^[\s,]*(,|the |of the |of )/i, '')); + + return strcmp(aName, bName); + }, + getVisibleText: function (title) { + var buff = title.name + Listview.funcBox.getExpansionText(title); + + return buff; + } + }, + { + id: 'gender', + name: LANG.gender, + type: 'text', + value: 'gender', + compute: function (title, td) { + if (title.gender && title.gender != 3) { + var gender = g_file_genders[title.gender - 1]; + var sp = ce('span'); + sp.className = gender + '-icon'; + sp.onmouseover = function (e) { + Tooltip.showAtCursor(e, LANG[gender], 0, 0, 'q'); + }; + sp.onmousemove = Tooltip.cursorUpdate; + sp.onmouseout = Tooltip.hide; + ae(td, sp); + } + }, + getVisibleText: function (title) { + if (title.gender && title.gender != 3) { + return LANG[g_file_genders[title.gender - 1]]; + } + }, + sortFunc: function (a, b, col) { + return strcmp(a.gender, b.gender); + } + }, + { + id: 'side', + name: LANG.side, + type: 'text', + compute: function (title, td) { + if (title.side && title.side != 3) { + var sp = ce('span'); + sp.className = (title.side == 1 ? 'alliance-icon': 'horde-icon'); + sp.onmouseover = function (e) { + Tooltip.showAtCursor(e, g_sides[title.side], 0, 0, 'q'); + }; + sp.onmousemove = Tooltip.cursorUpdate; + sp.onmouseout = Tooltip.hide; + //ae(sp, ct(g_sides[title.side])); + ae(td, sp); + } + }, + getVisibleText: function (title) { + if (title.side) { + return g_sides[title.side]; + } + }, + sortFunc: function (a, b, col) { + return strcmp(g_sides[a.side], g_sides[b.side]); + } + }, + { + id: 'source', + name: LANG.source, + type: 'text', + compute: function (title, td) { + if (title.source) { + nw(td); + td.className = 'small'; + td.style.lineHeight = '18px'; + var n = 0; + + for (var s in title.source) { + title.source[s].sort(function (a, b) { + return b.s - a.s; + }); + + for (var i = 0, len = title.source[s].length; i < len; ++i) { + var sm = title.source[s][i]; + var type = 0; + + if (title.faction && typeof sm != 'string' && sm.s !== undefined && sm.s != -1 && sm.s != 2 - title.faction) { + continue; + } + + if (n++ > 0) { + ae(td, ce('br')); + } + + if (typeof sm == 'string') { + ae(td, ct(sm)); + } + else if (sm.t) { + type = sm.t; + var a = ce('a'); + // o.style.fontFamily = 'Verdana, sans-serif'; + a.href = '?' + g_types[sm.t] + '=' + sm.ti; + a.className = 'q1'; + + if (sm.s == 1) { + a.className += ' alliance-icon' + } + if (sm.s == 0) { + a.className += ' horde-icon' + } + if (sm.t == 5) { // Quests + a.className += ' icontiny tinyspecial'; + a.style.backgroundImage = 'url(' + g_staticUrl + '/images/icons/quest_start.gif)'; + } + + ae(a, ct(sm.n)); + ae(td, a); + } + } + } + } + }, + /* old: doesn't support text sent by server + getVisibleText: function (l) { + var h = { + achievements: g_achievements, + quests: g_quests + }, + m = "", + d = 0; + for (var f in h) { + var g = h[f], + a = l[f]; + if (!g || !a) { + continue + } + for (var e = 0, c = a.length; e < c; ++e) { + if (g[a[e]]) { + var b = (f == "achievements" ? "name": "name_" + g_locale.name); + if (d++>0) { + m += " " + } + m += g[a[e]][b] + } + } + } + return m + }, + */ + getVisibleText: function(title) { + var buff = ''; + + if(title.source) { + for(var s in title.source) { + for(var i = 0, len = title.source[s].length; i < len; ++i) { + var sm = title.source[s][i]; + if(typeof sm == 'string') { + buff += ' ' + sm; + } + else if(sm.t){ + buff += ' ' + sm.n; + } } } } - } - }, - getVisibleText: function (l) { - var h = { - achievements: g_achievements, - quests: g_quests + + return buff; }, - m = "", - d = 0; - for (var f in h) { - var g = h[f], - a = l[f]; - if (!g || !a) { - continue - } - for (var e = 0, c = a.length; e < c; ++e) { - if (g[a[e]]) { - var b = (f == "achievements" ? "name": "name_" + g_locale.name); - if (d++>0) { - m += " " - } - m += g[a[e]][b] - } - } - } - return m - }, - sortFunc: function (d, c, e) { - return strcmp(this.getVisibleText(d), this.getVisibleText(c)) - } - }, - { - id: "category", - name: LANG.category, - type: "text", - width: "15%", - compute: function (c, d) { - nw(d); - d.className = "small q1"; - var b = ce("a"); - b.href = "?titles=" + c.category; - ae(b, ct(g_title_categories[c.category])); - ae(d, b) - }, - getVisibleText: function (a) { - return g_title_categories[a.category] - }, - sortFunc: function (d, c, e) { - return strcmp(g_title_categories[d.category], g_title_categories[c.category]) - }, - hidden: true - }], - getItemLink: function (a) { - return "?title=" + a.id + sortFunc: function (a, b, col) { + return strcmp(this.getVisibleText(a), this.getVisibleText(b)); + } + }, + { + id: 'category', + name: LANG.category, + type: 'text', + width: '15%', + compute: function (title, td) { + nw(td); + td.className = 'small q1'; + var a = ce('a'); + a.href = '?titles=' + title.category; + ae(a, ct(g_title_categories[title.category])); + ae(td, a); + }, + getVisibleText: function (title) { + return g_title_categories[title.category]; + }, + sortFunc: function (a, b, col) { + return strcmp(g_title_categories[a.category], g_title_categories[b.category]); + }, + hidden: true + } + ], + + getItemLink: function (title) { + return '?title=' + title.id; } }, profile: { @@ -12910,22 +12968,29 @@ var LiveSearch = new function () { a.onmouseover = aOver; a.href = "?" + g_types[type] + "=" + typeId; + if (textbox._append) { a.rel += textbox._append; } + if(type == 1 && param1 != null) { + div.className += ' live-search-icon-boss'; + } if (type == 3 && param2 != null) { a.className += " q" + param2; } else if (type == 4 && param1 != null) { a.className += " q" + param1; } - - if ((type == 3 || type == 6 || type == 9 || type == 10) && param1) { - div.className += " live-search-icon"; - div.style.backgroundImage = "url(images/icons/small/" + param1.toLowerCase() + ".jpg)"; + else if (type == 13) { + a.className += ' c' + typeId; } - else if (type == 5 && param1 >= 1 && param1 <= 2) { + + if ((type == 3 || type == 6 || type == 9 || type == 10 || type == 13 || type == 14 || type == 15 || type == 17) && param1) { + div.className += " live-search-icon"; + div.style.backgroundImage = "url(" + g_staticUrl + "/images/icons/small/" + param1.toLowerCase() + ".jpg)"; + } + else if ((type == 5 || type == 11) && param1 >= 1 && param1 <= 2) { div.className += " live-search-icon-quest-" + (param1 == 1 ? "alliance" : "horde"); } @@ -12934,7 +12999,12 @@ var LiveSearch = new function () { var buffer = suggz[i]; buffer = buffer.replace(regex, highlight); - sp2.innerHTML = buffer; + + if (type == 11) { + buffer = buffer.replace('%s', '<'+ LANG.name + '>'); + } + + sp2.innerHTML = buffer; ae(a, sp2); if (type == 6 && param2) { @@ -13088,7 +13158,7 @@ var LiveSearch = new function () { aE(textbox, "focus", onFocus); aE(textbox, "keyup", onKeyUp); - aE(textbox, Browser.opera ? "keypress" : "keydown", onKeyDown); + aE(textbox, "keydown", onKeyDown); }; this.reset = function (textbox) { @@ -13109,7 +13179,7 @@ var Lightbox = new function () { i, f; function p() { aE(d, "click", e); - aE(document, Browser.opera ? "keypress": "keydown", g); + aE(document, "keydown", g); aE(window, "resize", a); if (Browser.ie6) { aE(window, "scroll", j) @@ -13117,7 +13187,7 @@ var Lightbox = new function () { } function l() { dE(d, "click", e); - dE(document, Browser.opera ? "keypress": "keydown", g); + dE(document, "keydown", g); dE(window, "resize", a); if (Browser.ie6) { dE(window, "scroll", j) diff --git a/template/js/locale_dede.js b/template/js/locale_dede.js index 452443fb..03432934 100644 --- a/template/js/locale_dede.js +++ b/template/js/locale_dede.js @@ -2083,7 +2083,7 @@ var LANG = { comma: ", ", ellipsis: "…", dash: " \u2013 ", - hyphen: "-", + hyphen: " - ", colon: ": ", qty: " ($1)", date:"Datum", @@ -2113,7 +2113,8 @@ var LANG = { exp: "Erf.", faction: "Fraktion", gains: "Belohnungen", - gems: "Edelsteine", + gender: "Geschlecht", + gems: "Edelsteine", gearscore: "Ausr\u00fcstung", glyphtype: "Glyphenart", group: "Gruppe", diff --git a/template/js/locale_enus.js b/template/js/locale_enus.js index 246b8fce..df034444 100644 --- a/template/js/locale_enus.js +++ b/template/js/locale_enus.js @@ -2128,7 +2128,7 @@ var LANG = { comma: ", ", ellipsis: "…", dash: " – ", - hyphen: "-", + hyphen: " - ", colon: ": ", qty: " ($1)", date: "Date", @@ -2158,6 +2158,7 @@ var LANG = { exp: "Exp.", faction: "Faction", gains: "Gains", + gender: "Gender", gems: "Gems", gearscore: "Gear", glyphtype: "Glyph type", diff --git a/template/title.tpl b/template/title.tpl new file mode 100644 index 00000000..94fc7e92 --- /dev/null +++ b/template/title.tpl @@ -0,0 +1,47 @@ +{include file='header.tpl'} + +
+
+
+{if !empty($announcements)} + {foreach from=$announcements item=item} + {include file='bricks/announcement.tpl' an=$item} + {/foreach} +{/if} + + + +{include file='bricks/infobox.tpl'} + +
+ + {$lang.link}{$lang.link} + + WowheadWowhead +

{if isset($data.page.expansion)}{$data.page.name}{else}{$data.page.name}{/if}

+

{$lang.related}

+
+ +
+
+ + + {include file='bricks/contribute.tpl'} + +
+
+ +{include file='footer.tpl'} \ No newline at end of file diff --git a/template/titles.tpl b/template/titles.tpl new file mode 100644 index 00000000..81d0f14b --- /dev/null +++ b/template/titles.tpl @@ -0,0 +1,20 @@ +{include file='header.tpl'} + +
+
+
+ + + +
+ + +
+
+
+ +{include file='footer.tpl'}