diff --git a/endpoints/achievement/achievement.php b/endpoints/achievement/achievement.php
index 3d36494b..0cb6df45 100644
--- a/endpoints/achievement/achievement.php
+++ b/endpoints/achievement/achievement.php
@@ -107,13 +107,33 @@ class AchievementBaseResponse extends TemplateResponse implements ICache
default => Lang::game('si', SIDE_BOTH) // 0, 3
};
+ // id
+ $infobox[] = Lang::achievement('id') . $this->typeId;
+
// icon
if ($_ = $this->subject->getField('iconId'))
{
- $infobox[] = Util::ucFirst(lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
+ $infobox[] = Util::ucFirst(Lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
$this->extendGlobalIds(Type::ICON, $_);
}
+ // profiler relateed (note that this is part of the cache. I don't think this is important enough to calc for every view)
+ if (Cfg::get('PROFILER_ENABLE') && !($this->subject->getField('flags') & ACHIEVEMENT_FLAG_COUNTER))
+ {
+ $x = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_completion_achievements WHERE `achievementId` = ?d', $this->typeId);
+ $y = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_profiles WHERE `realm` IS NOT NULL AND `realmGUID` IS NOT NULL');
+ $infobox[] = Lang::profiler('attainedBy', [round(($x ?: 0) * 100 / ($y ?: 1))]);
+
+ // - js component missing;
+ // - can't yet assign styles to li element
+ // if (User::getPinnedCharacter())
+ // $infobox[] = Lang::profiler('completion') . '[span class="compact-completion-display"][/span]'; // [li style="display:none"]...[/li]
+ }
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/class/class.php b/endpoints/class/class.php
index 50ca4666..f983c679 100644
--- a/endpoints/class/class.php
+++ b/endpoints/class/class.php
@@ -103,6 +103,13 @@ class ClassBaseResponse extends TemplateResponse implements ICache
if ($specList)
$infobox[] = Lang::game('specs').'[ul][li]'.implode('[/li][li]', $specList).'[/li][/ul]';
+ // id
+ $infobox[] = Lang::chrClass('id') . $this->typeId;
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/currency/currency.php b/endpoints/currency/currency.php
index 31bc6823..cc65b9e8 100644
--- a/endpoints/currency/currency.php
+++ b/endpoints/currency/currency.php
@@ -72,13 +72,20 @@ class CurrencyBaseResponse extends TemplateResponse implements ICache
if ($_ = $this->subject->getField('cap'))
$infobox[] = Lang::currency('cap').Lang::nf($_);
+ // id
+ $infobox[] = Lang::currency('id') . $this->typeId;
+
// icon
if ($_ = $this->subject->getField('iconId'))
{
- $infobox[] = Util::ucFirst(lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
+ $infobox[] = Util::ucFirst(Lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
$this->extendGlobalIds(Type::ICON, $_);
}
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/emote/emote.php b/endpoints/emote/emote.php
index d5e16070..317d0130 100644
--- a/endpoints/emote/emote.php
+++ b/endpoints/emote/emote.php
@@ -94,6 +94,9 @@ class EmoteBaseResponse extends TemplateResponse implements ICache
}
}
+ // id
+ $infobox[] = Lang::emote('id') . $this->typeId;
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/enchantment/enchantment.php b/endpoints/enchantment/enchantment.php
index ab874512..b836cbd1 100644
--- a/endpoints/enchantment/enchantment.php
+++ b/endpoints/enchantment/enchantment.php
@@ -85,6 +85,13 @@ class EnchantmentBaseResponse extends TemplateResponse implements ICache
$infobox[] = $foo;
}
+ // id
+ $infobox[] = Lang::enchantment('id') . $this->typeId;
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/event/event.php b/endpoints/event/event.php
index 5e1530b8..71a722e6 100644
--- a/endpoints/event/event.php
+++ b/endpoints/event/event.php
@@ -88,9 +88,16 @@ class EventBaseResponse extends TemplateResponse implements ICache
$infobox[] = Lang::npc('rank', 3).Lang::main('colon').'[npc='.$_.']';
}
- // display internal id to staff
- if (User::isInGroup(U_GROUP_STAFF))
- $infobox[] = 'Event-Id'.Lang::main('colon').$this->typeId;
+ // id
+ $infobox[] = Lang::event('id') . $this->typeId;
+
+ // display holiday id to staff
+ if ($_holidayId && User::isInGroup(U_GROUP_STAFF))
+ $infobox[] = 'Holiday ID'.Lang::main('colon').$_holidayId;
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/faction/faction.php b/endpoints/faction/faction.php
index 1279b62b..868b9481 100644
--- a/endpoints/faction/faction.php
+++ b/endpoints/faction/faction.php
@@ -96,6 +96,26 @@ class FactionBaseResponse extends TemplateResponse implements ICache
if ($_ = $this->subject->getField('side'))
$infobox[] = Lang::main('side').'[span class=icon-'.($_ == SIDE_ALLIANCE ? 'alliance' : 'horde').']'.Lang::game('si', $_).'[/span]';
+ // id
+ $infobox[] = Lang::faction('id') . $this->typeId;
+
+ // profiler relateed (note that this is part of the cache. I don't think this is important enough to calc for every view)
+ if (Cfg::get('PROFILER_ENABLE') && !($this->subject->getField('cuFlags') & CUSTOM_EXCLUDE_FOR_LISTVIEW))
+ {
+ $x = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_completion_reputation WHERE `standing` >= ?d AND `factionId` = ?d', 42000, $this->typeId);
+ $y = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_profiles WHERE `realm` IS NOT NULL AND `realmGUID` IS NOT NULL');
+ $infobox[] = Lang::profiler('attainedBy', [round(($x ?: 0) * 100 / ($y ?: 1))]);
+
+ // - js component missing;
+ // - can't yet assign styles to li element
+ // if (User::getPinnedCharacter())
+ // $infobox[] = Lang::profiler('completion') . '[span class="compact-completion-display"][/span]'; // [li style="display:none"]...[/li]
+ }
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/guide/changelog.php b/endpoints/guide/changelog.php
index 685dfad3..614af6d6 100644
--- a/endpoints/guide/changelog.php
+++ b/endpoints/guide/changelog.php
@@ -33,7 +33,7 @@ class GuideChangelogResponse extends TemplateResponse
if (!$guide->canBeViewed() && !$guide->userCanView())
$this->forward('?guides='.$guide->getField('category'));
- $this->h1 = lang::guide('clTitle', [$this->_get['id'], $guide->getField('title')]);
+ $this->h1 = Lang::guide('clTitle', [$this->_get['id'], $guide->getField('title')]);
if (!$this->h1)
$this->h1 = $guide->getField('name');
diff --git a/endpoints/item/item.php b/endpoints/item/item.php
index f476b5b9..2e5880fe 100644
--- a/endpoints/item/item.php
+++ b/endpoints/item/item.php
@@ -103,10 +103,13 @@ class ItemBaseResponse extends TemplateResponse implements ICache
SIDE_BOTH => Lang::game('si', SIDE_BOTH)
};
+ // id
+ $infobox[] = Lang::item('id') . $this->typeId;
+
// icon
if ($_ = $this->subject->getField('iconId'))
{
- $infobox[] = Util::ucFirst(lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
+ $infobox[] = Util::ucFirst(Lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
$this->extendGlobalIds(Type::ICON, $_);
}
@@ -316,6 +319,10 @@ class ItemBaseResponse extends TemplateResponse implements ICache
if ($_bagFamily & 0x0100)
$infobox[] = Lang::item('atKeyring');
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/itemset/itemset.php b/endpoints/itemset/itemset.php
index 398fe55e..2cd46422 100644
--- a/endpoints/itemset/itemset.php
+++ b/endpoints/itemset/itemset.php
@@ -125,6 +125,13 @@ class ItemsetBaseResponse extends TemplateResponse implements ICache
if ($_ta)
$infobox[] = Lang::itemset('_tag').'[url=?itemsets&filter=ta='.$_ta.']'.Lang::itemset('notes', $_ta).'[/url]';
+ // id
+ $infobox[] = Lang::itemset('id') . $this->subject->getField('refSetId');
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/mail/mail.php b/endpoints/mail/mail.php
index 705c6aca..5179b6e8 100644
--- a/endpoints/mail/mail.php
+++ b/endpoints/mail/mail.php
@@ -108,6 +108,9 @@ class MailBaseResponse extends TemplateResponse implements ICache
}
}
+ // id
+ $infobox[] = Lang::mail('id') . $this->typeId;
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/npc/npc.php b/endpoints/npc/npc.php
index 3d4624e2..25e7cf72 100644
--- a/endpoints/npc/npc.php
+++ b/endpoints/npc/npc.php
@@ -194,6 +194,13 @@ class NpcBaseResponse extends TemplateResponse implements ICache
if ($this->subject->getField('npcflag') & (NPC_FLAG_SPIRIT_HEALER | NPC_FLAG_SPIRIT_GUIDE))
$infobox[] = Lang::npc('extraFlags', CREATURE_FLAG_EXTRA_GHOST_VISIBILITY);
+ // id
+ $infobox[] = Lang::npc('id') . $this->typeId;
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if (User::isInGroup(U_GROUP_EMPLOYEE))
{
// AI
diff --git a/endpoints/object/object.php b/endpoints/object/object.php
index 9c6a1ba2..6ebfbe6f 100644
--- a/endpoints/object/object.php
+++ b/endpoints/object/object.php
@@ -196,6 +196,13 @@ class ObjectBaseResponse extends TemplateResponse implements ICache
$infobox[] = $buff;
}
+ // id
+ $infobox[] = Lang::gameObject('id') . $this->typeId;
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
// AI
if (User::isInGroup(U_GROUP_EMPLOYEE))
if ($_ = $this->subject->getField('ScriptOrAI'))
diff --git a/endpoints/pet/pet.php b/endpoints/pet/pet.php
index f383a0f7..30d0db14 100644
--- a/endpoints/pet/pet.php
+++ b/endpoints/pet/pet.php
@@ -73,13 +73,20 @@ class PetBaseResponse extends TemplateResponse implements ICache
if ($this->subject->getField('exotic'))
$infobox[] = '[url=?spell=53270]'.Lang::pet('exotic').'[/url]';
+ // id
+ $infobox[] = Lang::pet('id') . $this->typeId;
+
// icon
if ($_ = $this->subject->getField('iconId'))
{
- $infobox[] = Util::ucFirst(lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
+ $infobox[] = Util::ucFirst(Lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
$this->extendGlobalIds(Type::ICON, $_);
}
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/quest/quest.php b/endpoints/quest/quest.php
index 305900d6..daf291f1 100644
--- a/endpoints/quest/quest.php
+++ b/endpoints/quest/quest.php
@@ -271,6 +271,26 @@ class QuestBaseResponse extends TemplateResponse implements ICache
$infobox[] = Lang::game('difficulty').implode('[small] [/small]', $_);
}
+ // id
+ $infobox[] = Lang::quest('id') . $this->typeId;
+
+ // profiler relateed (note that this is part of the cache. I don't think this is important enough to calc for every view)
+ if (Cfg::get('PROFILER_ENABLE') && !($_flags & QUEST_FLAG_UNAVAILABLE || $this->subject->getField('cuFlags') & CUSTOM_EXCLUDE_FOR_LISTVIEW))
+ {
+ $x = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_completion_quests WHERE `questId` = ?d', $this->typeId);
+ $y = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_profiles WHERE `realm` IS NOT NULL AND `realmGUID` IS NOT NULL');
+ $infobox[] = Lang::profiler('attainedBy', [round(($x ?: 0) * 100 / ($y ?: 1))]);
+
+ // - js component missing;
+ // - can't yet assign styles to li element
+ // if (User::getPinnedCharacter())
+ // $infobox[] = Lang::profiler('completion') . '[span class="compact-completion-display"][/span]'; // [li style="display:none"]...[/li]
+ }
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/race/race.php b/endpoints/race/race.php
index 1bb261c6..75c5cd47 100644
--- a/endpoints/race/race.php
+++ b/endpoints/race/race.php
@@ -99,6 +99,13 @@ class RaceBaseResponse extends TemplateResponse implements ICache
$infobox[] = Lang::race('startZone').Lang::main('colon').'[zone='.$_.']';
}
+ // id
+ $infobox[] = Lang::race('id') . $this->typeId;
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/skill/skill.php b/endpoints/skill/skill.php
index 2277c66b..18fb8d8e 100644
--- a/endpoints/skill/skill.php
+++ b/endpoints/skill/skill.php
@@ -70,6 +70,9 @@ class SkillBaseResponse extends TemplateResponse implements ICache
$infobox = Lang::getInfoBoxForFlags($this->subject->getField('cuFlags'));
+ // id
+ $infobox[] = Lang::skill('id') . $this->typeId;
+
// icon
if ($_ = $this->subject->getField('iconId'))
{
@@ -77,6 +80,10 @@ class SkillBaseResponse extends TemplateResponse implements ICache
$this->extendGlobalIds(Type::ICON, $_);
}
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/spell/spell.php b/endpoints/spell/spell.php
index 8f1e6645..ad9fd262 100644
--- a/endpoints/spell/spell.php
+++ b/endpoints/spell/spell.php
@@ -2345,13 +2345,33 @@ class SpellBaseResponse extends TemplateResponse implements ICache
if ($cost = $this->subject->getField('trainingCost'))
$infobox[] = Lang::spell('trainingCost').'[money='.$cost.']';
+ // id
+ $infobox[] = Lang::spell('id') . $this->typeId;
+
// icon
if ($_ = $this->subject->getField('iconId'))
{
+ $infobox[] = Util::ucFirst(Lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
$this->extendGlobalIds(Type::ICON, $_);
- $infobox[] = Util::ucFirst(lang::game('icon')).Lang::main('colon').'[icondb='.$_.' name=true]';
}
+ // profiler relateed (note that this is part of the cache. I don't think this is important enough to calc for every view)
+ if (Cfg::get('PROFILER_ENABLE') && in_array($this->subject->getField('typeCat'), [-5, -6]) && !($this->subject->getField('cuFlags') & CUSTOM_EXCLUDE_FOR_LISTVIEW))
+ {
+ $x = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_completion_spells WHERE `spellId` = ?d', $this->typeId);
+ $y = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_profiles WHERE `realm` IS NOT NULL AND `realmGUID` IS NOT NULL');
+ $infobox[] = Lang::profiler('attainedBy', [round(($x ?: 0) * 100 / ($y ?: 1))]);
+
+ // - js component missing;
+ // - can't yet assign styles to li element
+ // if (User::getPinnedCharacter())
+ // $infobox[] = Lang::profiler('completion') . '[span class="compact-completion-display"][/span]'; // [li style="display:none"]...[/li]
+ }
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
// used in mode
foreach ($this->difficulties as $n => $id)
if ($id == $this->typeId)
diff --git a/endpoints/title/title.php b/endpoints/title/title.php
index 84783c94..382ce66b 100644
--- a/endpoints/title/title.php
+++ b/endpoints/title/title.php
@@ -84,6 +84,26 @@ class TitleBaseResponse extends TemplateResponse implements ICache
$infobox[] = Lang::game('eventShort', ['[event='.$eId.']']);
}
+ // id
+ $infobox[] = Lang::title('id') . $this->typeId;
+
+ // profiler relateed (note that this is part of the cache. I don't think this is important enough to calc for every view)
+ if (Cfg::get('PROFILER_ENABLE'))
+ {
+ $x = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_completion_titles WHERE `titleId` = ?d', $this->typeId);
+ $y = DB::Aowow()->selectCell('SELECT COUNT(1) FROM ?_profiler_profiles WHERE `realm` IS NOT NULL AND `realmGUID` IS NOT NULL');
+ $infobox[] = Lang::profiler('attainedBy', [round(($x ?: 0) * 100 / ($y ?: 1))]);
+
+ // - js component missing;
+ // - can't yet assign styles to li element
+ // if (User::getPinnedCharacter())
+ // $infobox[] = Lang::profiler('completion') . '[span class="compact-completion-display"][/span]'; // [li style="display:none"]...[/li]
+ }
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($infobox)
$this->infobox = new InfoboxMarkup($infobox, ['allow' => Markup::CLASS_STAFF, 'dbpage' => true], 'infobox-contents0');
diff --git a/endpoints/zone/zone.php b/endpoints/zone/zone.php
index 548b4a0d..2039efc9 100644
--- a/endpoints/zone/zone.php
+++ b/endpoints/zone/zone.php
@@ -188,6 +188,13 @@ class ZoneBaseResponse extends TemplateResponse implements ICache
}
}
+ // id
+ $infobox[] = Lang::zone('id') . $this->typeId;
+
+ // original name
+ if (Lang::getLocale() != Locale::EN)
+ $infobox[] = Util::ucFirst(Lang::lang(Locale::EN->value) . Lang::main('colon')) . '[copy button=false]'.$this->subject->getField('name_loc0').'[/copy][/li]';
+
if ($botRows = array_filter($quickFactsRows, fn($x) => $x > 0, ARRAY_FILTER_USE_KEY))
$infobox = array_merge($infobox, $botRows);
diff --git a/localization/locale_dede.php b/localization/locale_dede.php
index af068ae1..1ca2f222 100644
--- a/localization/locale_dede.php
+++ b/localization/locale_dede.php
@@ -236,6 +236,8 @@ $lang = array(
'atCaptain' => "Teamkapitän",
'atSize' => "Größe: ",
'profiler' => "Charakter-Profiler",
+ 'completion' => "Vervollständigung: ",
+ 'attainedBy' => "Erlangt von %d%% der Profile",
'notFound' => array(
'guild' => "Diese Gilde existiert nicht oder wurde noch nicht in die Datenbank übernommen.",
'arenateam' => "Dieses Arena Team existiert nicht oder wurde noch nicht in die Datenbank übernommen.",
@@ -1070,6 +1072,7 @@ $lang = array(
'posts' => "Forenbeiträge: "
),
'emote' => array(
+ 'id' => "Emote-ID: ",
'notFound' => "Dieses Emote existiert nicht.",
// 'self' => "An Euch selbst",
// 'target' => "An Andere mit Ziel",
@@ -1102,9 +1105,10 @@ $lang = array(
'state' => ['Einmalig', 'Stetiger Zustand', 'Stetiges Emote']
),
'enchantment' => array(
+ 'id' => "Verzauberungs-ID: ",
+ 'notFound' => "Diese Verzauberung existiert nicht.",
'details' => "Details",
'activation' => "Aktivierung",
- 'notFound' => "Diese Verzauberung existiert nicht.",
'types' => array(
1 => "Zauber (Auslösung)", 3 => "Zauber (Anlegen)", 7 => "Zauber (Benutzen)", 8 => "Prismatischer Sockel",
5 => "Statistik", 2 => "Waffenschaden", 6 => "DPS", 4 => "Verteidigung"
@@ -1116,6 +1120,7 @@ $lang = array(
'types' => ['Unbenutzt', 'Gasthaus', 'Teleporter', 'Questziel', 'Smarter Trigger', 'Script']
),
'gameObject' => array(
+ 'id' => "Objekt-ID: ",
'notFound' => "Dieses Objekt existiert nicht.",
'cat' => [0 => "Anderes", 3 => "Behälter", 6 => "Fallen", 9 => "Bücher", 25 => "Fischschwärme", -5 => "Truhen", -3 => "Kräuter", -4 => "Erzadern", -2 => "Quest", -6 => "Werkzeuge"],
'type' => [ 3 => "Behälter", 6 => "", 9 => "Buch", 25 => "", -5 => "Truhe", -3 => "Kraut", -4 => "Erzvorkommen", -2 => "Quest", -6 => ""],
@@ -1148,6 +1153,7 @@ $lang = array(
)
),
'npc' => array(
+ 'id' => "NPC-ID: ",
'notFound' => "Dieser NPC existiert nicht.",
'classification'=> "Einstufung: %s",
'petFamily' => "Tierart: ",
@@ -1243,6 +1249,7 @@ $lang = array(
)
),
'event' => array(
+ 'id' => "Weltereignis-ID: ",
'notFound' => "Dieses Weltereignis existiert nicht.",
'start' => "Anfang: ",
'end' => "Ende: ",
@@ -1251,6 +1258,7 @@ $lang = array(
'category' => ["Nicht kategorisiert", "Feiertage", "Wiederkehrend", "Spieler vs. Spieler"]
),
'achievement' => array(
+ 'id' => "Erfolgs-ID: ",
'notFound' => "Dieser Erfolg existiert nicht.",
'criteria' => "Kriterien",
'points' => "Punkte",
@@ -1309,9 +1317,11 @@ $lang = array(
)
),
'chrClass' => array(
+ 'id' => "Klassen-ID: ",
'notFound' => "Diese Klasse existiert nicht."
),
'race' => array(
+ 'id' => "Volks-ID: ",
'notFound' => "Dieses Volk existiert nicht.",
'racialLeader' => "Volksanführer: ",
'startZone' => "Startgebiet",
@@ -1349,6 +1359,7 @@ $lang = array(
)
),
'zone' => array(
+ 'id' => "Gebiets-ID: ",
'notFound' => "Dieses Gebiet existiert nicht.",
'attunement' => ["Einstimmung: ", "Heroische Einstimmung: "],
'key' => ["Schlüssel: ", "Heroischer Schlüssel: "],
@@ -1377,6 +1388,7 @@ $lang = array(
)
),
'quest' => array(
+ 'id' => "Quest-ID: ",
'notFound' => "Diese Quest existiert nicht.",
'_transfer' => 'Dieses Quest wird mit %s vertauscht, wenn Ihr zur %s wechselt.',
'questLevel' => "Stufe %s",
@@ -1514,6 +1526,7 @@ $lang = array(
'notFound' => "Dieses Icon existiert nicht."
),
'title' => array(
+ 'id' => "Titel-ID: ",
'notFound' => "Dieser Titel existiert nicht.",
'_transfer' => 'Dieser Titel wird mit %s vertauscht, wenn Ihr zur %s wechselt.',
'cat' => array(
@@ -1521,6 +1534,7 @@ $lang = array(
)
),
'skill' => array(
+ 'id' => "Fertigkeits-ID: ",
'notFound' => "Diese Fertigkeit existiert nicht.",
'cat' => array(
-6 => "Haustiere", -5 => "Reittiere", -4 => "Völkerfertigkeiten", 5 => "Attribute", 6 => "Waffenfertigkeiten", 7 => "Klassenfertigkeiten", 8 => "Rüstungssachverstand",
@@ -1528,6 +1542,7 @@ $lang = array(
)
),
'currency' => array(
+ 'id' => "Währungs-ID: ",
'notFound' => "Diese Währung existiert nicht.",
'cap' => "Obergrenze: ",
'cat' => array(
@@ -1549,6 +1564,7 @@ $lang = array(
)
),
'mail' => array(
+ 'id' => "Brief-ID: ",
'notFound' => "Dieser Brief existiert nicht.",
'attachment' => "Anlage",
'mailDelivery' => 'Ihr werdet diesen Brief%s%s erhalten',
@@ -1559,12 +1575,14 @@ $lang = array(
'untitled' => "Unbetitelter Brief #%d"
),
'pet' => array(
+ 'id' => "Tierart-ID: ",
'notFound' => "Diese Tierart existiert nicht.",
'exotic' => "Exotisch",
'cat' => ["Wildheit", "Hartnäckigkeit", "Gerissenheit"],
'food' => ["Fleisch", "Fisch", "Käse", "Brot", "Fungus", "Obst", "Rohes Fleisch", "Roher Fisch"]
),
'faction' => array(
+ 'id' => "Fraktions-ID: ",
'notFound' => "Diese Fraktion existiert nicht.",
'spillover' => "Reputationsüberlauf",
'spilloverDesc' => "Für diese Fraktion erhaltener Ruf wird zusätzlich mit den unten aufgeführten Fraktionen anteilig verrechnet.",
@@ -1580,6 +1598,7 @@ $lang = array(
)
),
'itemset' => array(
+ 'id' => "Ausrüstungsset-ID: ",
'notFound' => "Dieses Ausrüstungsset existiert nicht.",
'_desc' => "%s ist das %s. Es enthält %s Teile.",
'_descTagless' => "%s ist ein Ausrüstungsset, das %s Teile enthält.",
@@ -1605,6 +1624,7 @@ $lang = array(
)
),
'spell' => array(
+ 'id' => "Zauber-ID: ",
'notFound' => "Dieser Zauber existiert nicht.",
'_spellDetails' => "Zauberdetails",
'_cost' => "Kosten",
@@ -2168,6 +2188,7 @@ $lang = array(
)
),
'item' => array(
+ 'id' => "Gegenstands-ID: ",
'notFound' => "Dieser Gegenstand existiert nicht .",
'armor' => "%s Rüstung",
'block' => "%s Blocken",
diff --git a/localization/locale_enus.php b/localization/locale_enus.php
index 0901c76b..6e1bc7e6 100644
--- a/localization/locale_enus.php
+++ b/localization/locale_enus.php
@@ -236,6 +236,8 @@ $lang = array(
'atCaptain' => "Arena Team Captain",
'atSize' => "Size: ",
'profiler' => "Character Profiler",
+ 'completion' => "Completion: ",
+ 'attainedBy' => "Attained by %d%% of profiles",
'notFound' => array(
'guild' => "This Guild doesn't exist or is not yet in the database.",
'arenateam' => "This Arena Team doesn't exist or is not yet in the database.",
@@ -1070,6 +1072,7 @@ $lang = array(
'posts' => "Forum posts: "
),
'emote' => array(
+ 'id' => "Emote ID: ",
'notFound' => "This Emote doesn't exist.",
// 'self' => "To Yourself",
// 'target' => "To others with a target",
@@ -1102,9 +1105,10 @@ $lang = array(
'state' => ['Oneshot', 'Continuous State', 'Continuous Emote']
),
'enchantment' => array(
+ 'id' => "Enchantment ID: ",
+ 'notFound' => "This enchantment doesn't exist.",
'details' => "Details",
'activation' => "Activation",
- 'notFound' => "This enchantment doesn't exist.",
'types' => array(
1 => "Proc Spell", 3 => "Equip Spell", 7 => "Use Spell", 8 => "Prismatic Socket",
5 => "Statistics", 2 => "Weapon Damage", 6 => "DPS", 4 => "Defense"
@@ -1116,6 +1120,7 @@ $lang = array(
'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script']
),
'gameObject' => array(
+ 'id' => "Object ID: ",
'notFound' => "This object doesn't exist.",
'cat' => [0 => "Other", 3 => "Containers", 6 => "Traps", 9 => "Books", 25 => "Fishing Pools", -5 => "Chests", -3 => "Herbs", -4 => "Mineral Veins", -2 => "Quest", -6 => "Tools"],
'type' => [ 3 => "Container", 6 => "", 9 => "Book", 25 => "", -5 => "Chest", -3 => "Herb", -4 => "Mineral Vein", -2 => "Quest", -6 => ""], // used for tooltip
@@ -1148,6 +1153,7 @@ $lang = array(
)
),
'npc' => array(
+ 'id' => "NPC ID: ",
'notFound' => "This NPC doesn't exist.",
'classification'=> "Classification: %s",
'petFamily' => "Pet familiy: ",
@@ -1243,6 +1249,7 @@ $lang = array(
)
),
'event' => array(
+ 'id' => "World Event ID: ",
'notFound' => "This world event doesn't exist.",
'start' => "Start: ",
'end' => "End: ",
@@ -1251,6 +1258,7 @@ $lang = array(
'category' => ["Uncategorized", "Holidays", "Recurring", "Player vs. Player"]
),
'achievement' => array(
+ 'id' => "Achievement ID: ",
'notFound' => "This achievement doesn't exist.",
'criteria' => "Criteria",
'points' => "Points",
@@ -1309,9 +1317,11 @@ $lang = array(
)
),
'chrClass' => array(
+ 'id' => "Class ID: ",
'notFound' => "This class doesn't exist."
),
'race' => array(
+ 'id' => "Race ID: ",
'notFound' => "This race doesn't exist.",
'racialLeader' => "Racial leader: ",
'startZone' => "Starting zone",
@@ -1349,6 +1359,7 @@ $lang = array(
)
),
'zone' => array(
+ 'id' => "Zone ID: ",
'notFound' => "This zone doesn't exist.",
'attunement' => ["Attunement: ", "Heroic attunement: "],
'key' => ["Key: ", "Heroic key: "],
@@ -1377,6 +1388,7 @@ $lang = array(
)
),
'quest' => array(
+ 'id' => "Quest ID: ",
'notFound' => "This quest doesn't exist.",
'_transfer' => 'This quest will be converted to %s if you transfer to %s.',
'questLevel' => "Level %s",
@@ -1514,6 +1526,7 @@ $lang = array(
'notFound' => "This icon doesn't exist."
),
'title' => array(
+ 'id' => "Title ID: ",
'notFound' => "This title doesn't exist.",
'_transfer' => 'This title will be converted to %s if you transfer to %s.',
'cat' => array(
@@ -1521,6 +1534,7 @@ $lang = array(
)
),
'skill' => array(
+ 'id' => "Skill ID: ",
'notFound' => "This skill doesn't exist.",
'cat' => array(
-6 => "Companions", -5 => "Mounts", -4 => "Racial Traits", 5 => "Attributes", 6 => "Weapon Skills", 7 => "Class Skills", 8 => "Armor Proficiencies",
@@ -1528,6 +1542,7 @@ $lang = array(
)
),
'currency' => array(
+ 'id' => "Currency ID: ",
'notFound' => "This currency doesn't exist.",
'cap' => "Total cap: ",
'cat' => array(
@@ -1549,6 +1564,7 @@ $lang = array(
)
),
'mail' => array(
+ 'id' => "Mail ID: ",
'notFound' => "This mail doesn't exist.",
'attachment' => "Attachment",
'mailDelivery' => 'You will receive this letter%s%s',
@@ -1559,12 +1575,14 @@ $lang = array(
'untitled' => "Untitled Mail #%d"
),
'pet' => array(
+ 'id' => "Pet family ID: ",
'notFound' => "This pet family doesn't exist.",
'exotic' => "Exotic",
'cat' => ["Ferocity", "Tenacity", "Cunning"],
'food' => ["Meat", "Fish", "Cheese", "Bread", "Fungus", "Fruit", "Raw Meat", "Raw Fish"] // ItemPetFood.dbc
),
'faction' => array(
+ 'id' => "Faction ID: ",
'notFound' => "This faction doesn't exist.",
'spillover' => "Reputation Spillover",
'spilloverDesc' => "Gaining reputation with this faction also yields a proportional gain with the factions listed below.",
@@ -1580,6 +1598,7 @@ $lang = array(
)
),
'itemset' => array(
+ 'id' => "Item Set ID: ",
'notFound' => "This item set doesn't exist.",
'_desc' => "%s is the %s. It contains %s pieces.",
'_descTagless' => "%s is an item set that contains %s pieces.",
@@ -1605,6 +1624,7 @@ $lang = array(
)
),
'spell' => array(
+ 'id' => "Spell ID: ",
'notFound' => "This spell doesn't exist.",
'_spellDetails' => "Spell Details",
'_cost' => "Cost",
@@ -2168,6 +2188,7 @@ $lang = array(
)
),
'item' => array(
+ 'id' => "Item ID: ",
'notFound' => "This item doesn't exist.",
'armor' => "%s Armor", // ARMOR_TEMPLATE
'block' => "%s Block", // SHIELD_BLOCK_TEMPLATE
diff --git a/localization/locale_eses.php b/localization/locale_eses.php
index 0f75fb34..e1f772ac 100644
--- a/localization/locale_eses.php
+++ b/localization/locale_eses.php
@@ -236,6 +236,8 @@ $lang = array(
'atCaptain' => "Capitán de equipo de arena",
'atSize' => "Tamaño: ",
'profiler' => "Gestor de Perfiles", // Perfiles de Personaje? (character profiler)
+ 'completion' => "Terminación: ",
+ 'attainedBy' => "Obtenido por %d%% de perfiles",
'notFound' => array(
'guild' => "Esta hermandad no existe o aún no está en la base de datos.",
'arenateam' => "Este equipo de arena no existe o aún no está en la base de datos.",
@@ -315,7 +317,7 @@ $lang = array(
'achievements' => "Logros",
'title' => "título",
'titles' => "Títulos",
- 'event' => "Suceso mundial ",
+ 'event' => "Suceso mundial",
'events' => "Eventos del mundo",
'class' => "clase",
'classes' => "Clases",
@@ -323,7 +325,7 @@ $lang = array(
'races' => "Razas",
'skill' => "habilidad",
'skills' => "Habilidades",
- 'currency' => "monedas",
+ 'currency' => "moneda",
'currencies' => "Monedas",
'sound' => "sonido",
'sounds' => "Sonidos",
@@ -1070,6 +1072,7 @@ $lang = array(
'posts' => "Mensajes en los foros: "
),
'emote' => array(
+ 'id' => "ID de Emoticón: ",
'notFound' => "Este emoticón no existe.",
// 'self' => "Para Usted",
// 'target' => "Para otros con un objetivo",
@@ -1102,9 +1105,10 @@ $lang = array(
'state' => ['Oneshot', 'Estado continuo', 'Emoticono continuo']
),
'enchantment' => array(
+ 'id' => "ID de Encantamiento: ",
+ 'notFound' => "Este encantamiento no existe.",
'details' => "Detalles",
'activation' => "Activación",
- 'notFound' => "Este encantamiento no existe.",
'types' => array(
1 => "Prob. Hechizo", 3 => "Equipar Hechizo", 7 => "Usar Hechizo", 8 => "Ranura prismática",
5 => "Atributos", 2 => "Daño de arma", 6 => "DPS", 4 => "Defensa"
@@ -1116,6 +1120,7 @@ $lang = array(
'types' => ['Sin usar', 'Taberna', 'Teletransportador', 'Objetivo de misión', 'Activador inteligente', 'Script']
),
'gameObject' => array(
+ 'id' => "ID de Entidad: ",
'notFound' => "Esta entidad no existe.",
'cat' => [0 => "Otros", 3 => "Contenedores", 6 => "Trampas", 9 => "Libros", 25 => "Bancos de peces", -5 => "Cofres", -3 => "Hierbas", -4 => "Venas de minerales", -2 => "Misiones", -6 => "Herramientas"],
'type' => [ 3 => "Contenedore", 6 => "", 9 => "Libro", 25 => "", -5 => "Cofre", -3 => "Hierba", -4 => "Filóne de mineral", -2 => "Misión", -6 => ""],
@@ -1148,6 +1153,7 @@ $lang = array(
)
),
'npc' => array(
+ 'id' => "ID de PNJ: ",
'notFound' => "Este PNJ no existe.",
'classification'=> "Clasificación: %s",
'petFamily' => "Familia de mascota: ",
@@ -1243,6 +1249,7 @@ $lang = array(
)
),
'event' => array(
+ 'id' => "ID de Suceso mundial: ",
'notFound' => "Este evento del mundo no existe.",
'start' => "Empieza: ",
'end' => "Termina: ",
@@ -1251,6 +1258,7 @@ $lang = array(
'category' => ["Sin categoría", "Vacacionales", "Periódicos", "Jugador contra Jugador"]
),
'achievement' => array(
+ 'id' => "ID de Logro: ",
'notFound' => "Este logro no existe.",
'criteria' => "Requisitos",
'points' => "Puntos",
@@ -1309,9 +1317,11 @@ $lang = array(
)
),
'chrClass' => array(
+ 'id' => "ID de Clase: ",
'notFound' => "Esta clase no existe."
),
'race' => array(
+ 'id' => "ID de Raza: ",
'notFound' => "Esta raza no existe.",
'racialLeader' => "Lider racial: ",
'startZone' => "Zona de inicio",
@@ -1349,6 +1359,7 @@ $lang = array(
)
),
'zone' => array(
+ 'id' => "ID de Zona: ",
'notFound' => "Esta zona no existe.",
'attunement' => ["Requisito: ", "Requisito heroica: "],
'key' => ["Llave: ", "Llave heroica: "],
@@ -1377,6 +1388,7 @@ $lang = array(
)
),
'quest' => array(
+ 'id' => "ID de Misión: ",
'notFound' => "Esta misión no existe.",
'_transfer' => 'Esta misión será convertido a %s si lo transfieres a la %s.',
'questLevel' => 'Nivel %s',
@@ -1514,6 +1526,7 @@ $lang = array(
'notFound' => "Este icono no existe."
),
'title' => array(
+ 'id' => "ID de Título: ",
'notFound' => "Este título no existe.",
'_transfer' => 'Este título será convertido a %s si lo transfieres a la %s.',
'cat' => array(
@@ -1521,6 +1534,7 @@ $lang = array(
)
),
'skill' => array(
+ 'id' => "ID de Habilidad: ",
'notFound' => "Esta habilidad no existe.",
'cat' => array(
-6 => "Compañeros", -5 => "Monturas", -4 => "Habilidades de raza", 5 => "Atributos", 6 => "Habilidades con armas", 7 => "Habilidades de clase", 8 => "Armaduras disponibles",
@@ -1528,6 +1542,7 @@ $lang = array(
)
),
'currency' => array(
+ 'id' => "ID de Moneda: ",
'notFound' => "Esta moneda no existe.",
'cap' => "Límite total: ",
'cat' => array(
@@ -1549,6 +1564,7 @@ $lang = array(
)
),
'mail' => array(
+ 'id' => "ID de Correo: ",
'notFound' => "Este correo no existe.",
'attachment' => "Adjunto",
'mailDelivery' => "Usted recibirá esta carta%s%s",
@@ -1559,12 +1575,14 @@ $lang = array(
'untitled' => "Correo sin título #%d"
),
'pet' => array(
+ 'id' => "ID de Familia de mascotas: ",
'notFound' => "Esta familia de mascotas no existe.",
'exotic' => "Exótica",
'cat' => ["Ferocidad", "Tenacidad", "Astucia"],
'food' => ["Carne", "Pescado", "Queso", "Pan", "Hongo", "Fruta", "Carne cruda", "Pescado crudo"]
),
'faction' => array(
+ 'id' => "ID de Facción: ",
'notFound' => "Esta facción no existe.",
'spillover' => "Excedente de reputación",
'spilloverDesc' => "Ganar reputación con esta facción tambien una proporción ganada con las facciones listadas a continuación.",
@@ -1580,6 +1598,7 @@ $lang = array(
)
),
'itemset' => array(
+ 'id' => "ID de Conjunto de objetos: ",
'notFound' => "Este conjunto de objetos no existe.",
'_desc' => "%s es el %s. Contiene %s piezas.",
'_descTagless' => "%s es un conjunto de objetos que tiene %s piezas.",
@@ -1605,6 +1624,7 @@ $lang = array(
)
),
'spell' => array(
+ 'id' => "ID de Hechizo: ",
'notFound' => "Este hechizo no existe.",
'_spellDetails' => "Detalles de hechizos",
'_cost' => "Costo",
@@ -2168,6 +2188,7 @@ $lang = array(
)
),
'item' => array(
+ 'id' => "ID de Objeto: ",
'notFound' => "Este objeto no existe.",
'armor' => "%s armadura",
'block' => "%s bloqueo",
diff --git a/localization/locale_frfr.php b/localization/locale_frfr.php
index 1a717c01..62f31429 100644
--- a/localization/locale_frfr.php
+++ b/localization/locale_frfr.php
@@ -236,6 +236,8 @@ $lang = array(
'atCaptain' => "Capitaine d'équipe",
'atSize' => "Type : ",
'profiler' => "Profiler de Personnage",
+ 'completion' => "Achèvement : ",
+ 'attainedBy' => "Obtenu par %d%% des profils",
'notFound' => array(
'guild' => "[This Guild doesn't exist or is not yet in the database.]",
'arenateam' => "[This Arena Team doesn't exist or is not yet in the database.]",
@@ -323,7 +325,7 @@ $lang = array(
'races' => "Races",
'skill' => "compétence",
'skills' => "Compétences",
- 'currency' => "monnaies",
+ 'currency' => "monnaie",
'currencies' => "Monnaies",
'sound' => "son",
'sounds' => "Sons",
@@ -1070,6 +1072,7 @@ $lang = array(
'posts' => "Messages sur le forum : "
),
'emote' => array(
+ 'id' => "ID Emote : ",
'notFound' => "[This Emote doesn't exist.]",
// 'self' => "Vers vous-même",
// 'target' => "Vers les autres avec une cible",
@@ -1102,9 +1105,10 @@ $lang = array(
'state' => ['[Oneshot]', '[Continuous State]', '[Continuous Emote]']
),
'enchantment' => array(
+ 'id' => "ID Enchantement : ",
+ 'notFound' => "Cet enchantement n'existe pas.",
'details' => "En détail",
'activation' => "Activation",
- 'notFound' => "Cet enchantement n'existe pas.",
'types' => array(
1 => "Sort proc", 3 => "Sort équipé", 7 => "Sort utilisé", 8 => "Châsse prismatique",
5 => "Statistiques", 2 => "Dégâts d'arme", 6 => "DPS", 4 => "Défense"
@@ -1116,6 +1120,7 @@ $lang = array(
'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script']
),
'gameObject' => array(
+ 'id' => "ID Entité: ",
'notFound' => "Cette entité n'existe pas.",
'cat' => [0 => "Autre", 3 => "Conteneurs", 6 => "Pièges", 9 => "Livres", 25 => "Bancs de poissons", -5 => "Coffres", -3 => "Herbes", -4 => "Filons de minerai", -2 => "Quêtes", -6 => "Outils"],
'type' => [ 3 => "Conteneur", 6 => "", 9 => "Livre", 25 => "", -5 => "Coffre", -3 => "Herbe", -4 => "Filon de minerai", -2 => "Quête", -6 => ""],
@@ -1148,6 +1153,7 @@ $lang = array(
)
),
'npc' => array(
+ 'id' => "ID PNJ : ",
'notFound' => "Ce PNJ n'existe pas.",
'classification'=> "Classification : %s",
'petFamily' => "Familier : ",
@@ -1243,6 +1249,7 @@ $lang = array(
)
),
'event' => array(
+ 'id' => "ID Évènement mondial : ",
'notFound' => "Cet évènement mondial n'existe pas.",
'start' => "Début : ",
'end' => "Fin : ",
@@ -1251,6 +1258,7 @@ $lang = array(
'category' => ["Non classés", "Vacances", "Récurrent", "Joueur ctr. Joueur"]
),
'achievement' => array(
+ 'id' => "ID Haut fait : ",
'notFound' => "Ce haut fait n'existe pas.",
'criteria' => "Critères",
'points' => "Points",
@@ -1309,9 +1317,11 @@ $lang = array(
)
),
'chrClass' => array(
+ 'id' => "ID Classe : ",
'notFound' => "Cette classe n'existe pas."
),
'race' => array(
+ 'id' => "ID Race : ",
'notFound' => "Cette race n'existe pas.",
'racialLeader' => "Leader racial : ",
'startZone' => "Zone initiales",
@@ -1349,6 +1359,7 @@ $lang = array(
)
),
'zone' => array(
+ 'id' => "ID Zone : ",
'notFound' => "Cette zone n'existe pas.",
'attunement' => ["Accès : ", "Accès Héroïque : "],
'key' => ["Clef : ", "Clef Héroïque : "],
@@ -1377,6 +1388,7 @@ $lang = array(
)
),
'quest' => array(
+ 'id' => "ID Quête : ",
'notFound' => "Cette quête n'existe pas.",
'_transfer' => 'Cette quête sera converti en %s si vous transférez en %s.',
'questLevel' => "Niveau %s",
@@ -1514,6 +1526,7 @@ $lang = array(
'notFound' => "Cette icône n'existe pas."
),
'title' => array(
+ 'id' => "ID Titre : ",
'notFound' => "Ce titre n'existe pas.",
'_transfer' => 'Ce titre sera converti en %s si vous transférez en %s.',
'cat' => array(
@@ -1521,6 +1534,7 @@ $lang = array(
)
),
'skill' => array(
+ 'id' => "ID Compétence : ",
'notFound' => "Cette compétence n'existe pas.",
'cat' => array(
-6 => "Compagnons", -5 => "Montures", -4 => "Traits raciaux", 5 => "Caractéristiques", 6 => "Compétences d'armes", 7 => "Compétences de classe", 8 => "Armures utilisables",
@@ -1528,6 +1542,7 @@ $lang = array(
)
),
'currency' => array(
+ 'id' => "ID Monnaie : ",
'notFound' => "Cette monnaie n'existe pas.",
'cap' => "Maximum total : ",
'cat' => array(
@@ -1549,22 +1564,25 @@ $lang = array(
)
),
'mail' => array(
- 'notFound' => "This mail doesn't exist.",
+ 'id' => "[Mail ID] : ",
+ 'notFound' => "[This mail doesn't exist.]",
'attachment' => "[Attachment]",
'mailDelivery' => "Vous recevrez cette lettre%s%s",
'mailBy' => ' de %s',
'mailIn' => " après %s",
- 'delay' => "Delay : %s",
- 'sender' => "Sender : %s",
- 'untitled' => "Untitled Mail #%d"
+ 'delay' => "[Delay] : %s",
+ 'sender' => "[Sender] : %s",
+ 'untitled' => "[Untitled Mail] #%d"
),
'pet' => array(
+ 'id' => "ID Famille de familiers : ",
'notFound' => "Cette famille de familiers n'existe pas.",
'exotic' => "Exotique",
'cat' => ["Férocité", "Tenacité", "Ruse"],
'food' => ["Viande", "Poisson", "Fromage", "Pain", "Champignon", "Fruit", "Viande crue", "Poisson cru"]
),
'faction' => array(
+ 'id' => "ID Faction : ",
'notFound' => "Cette faction n'existe pas.",
'spillover' => "Partage de réputations",
'spilloverDesc' => "Gagner de la réputation avec cette faction fourni une réputation proportionnelle avec les factions ci-dessous.",
@@ -1580,6 +1598,7 @@ $lang = array(
)
),
'itemset' => array(
+ 'id' => "ID d'ensemble d'objets : ",
'notFound' => "Cet ensemble d'objets n'existe pas.",
'_desc' => "%s est le %s. Il contient %s pièces.",
'_descTagless' => "%s est un ensemble d'objet qui contient %s pièces.",
@@ -1605,6 +1624,7 @@ $lang = array(
)
),
'spell' => array(
+ 'id' => "ID Sort: ",
'notFound' => "Ce sort n'existe pas.",
'_spellDetails' => "Détails sur le sort",
'_cost' => "Coût",
@@ -2168,6 +2188,7 @@ $lang = array(
)
),
'item' => array(
+ 'id' => "ID Objet : ",
'notFound' => "Cet objet n'existe pas.",
'armor' => "Armure : %s",
'block' => "Bloquer : %s",
diff --git a/localization/locale_ruru.php b/localization/locale_ruru.php
index 81e51b44..e9587064 100644
--- a/localization/locale_ruru.php
+++ b/localization/locale_ruru.php
@@ -236,6 +236,8 @@ $lang = array(
'atCaptain' => "Капитан команды арены",
'atSize' => "Численности: ",
'profiler' => "Профили персонажей",
+ 'completion' => "Завершено: ",
+ 'attainedBy' => "Получено %d%% пользователей с профилями",
'notFound' => array(
'profile' => "Этот персонаж не существует, либо еще не добавлен в базу данных.",
'arenateam' => "[This Arena Team doesn't exist or is not yet in the database.]",
@@ -1070,6 +1072,7 @@ $lang = array(
'posts' => "Сообщений на форумах: "
),
'emote' => array(
+ 'id' => "Эмоция ID: ",
'notFound' => "[This Emote doesn't exist.]",
// 'self' => "[To Yourself]",
// 'target' => "[To others with a target]",
@@ -1102,9 +1105,10 @@ $lang = array(
'state' => ['[Oneshot]', '[Continuous State]', '[Continuous Emote]']
),
'enchantment' => array(
+ 'id' => "Улучшение ID: ",
+ 'notFound' => "Такой улучшение не существует.",
'details' => "Подробности",
'activation' => "Активации",
- 'notFound' => "Такой улучшение не существует.",
'types' => array(
1 => "[Proc Spell]", 3 => "[Equip Spell]", 7 => "[Use Spell]", 8 => "Бесцветное гнездо",
5 => "Характеристики", 2 => "Урон оружия", 6 => "УВС", 4 => "Защита"
@@ -1116,6 +1120,7 @@ $lang = array(
'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script']
),
'gameObject' => array(
+ 'id' => "Объект ID: ",
'notFound' => "Такой объект не существует.",
'cat' => [0 => "Другое", 3 => "Контейнеры", 6 => "Ловушки", 9 => "Книги", 25 => "Рыболовные лунки", -5 => "Сундуки", -3 => "Травы", -4 => "Полезные ископаемые", -2 => "Задания", -6 => "Инструменты"],
'type' => [ 3 => "Контейнер", 6 => "", 9 => "Книга", 25 => "", -5 => "Сундук", -3 => "Растение", -4 => "Полезное ископаемое", -2 => "Задание", -6 => ""],
@@ -1148,6 +1153,7 @@ $lang = array(
)
),
'npc' => array(
+ 'id' => "НИП ID: ",
'notFound' => "Такой НИП не существует.",
'classification'=> "Классификация: %s",
'petFamily' => "Семейство питомца: ",
@@ -1243,6 +1249,7 @@ $lang = array(
)
),
'event' => array(
+ 'id' => "Игровое событие ID: ",
'notFound' => "Это игровое событие не существует.",
'start' => "Начало: ",
'end' => "Конец: ",
@@ -1251,6 +1258,7 @@ $lang = array(
'category' => array("Разное", "Праздники", "Периодические", "PvP")
),
'achievement' => array(
+ 'id' => "Достижение ID: ",
'notFound' => "Такое достижение не существует.",
'criteria' => "Критерий",
'points' => "Очки",
@@ -1309,9 +1317,11 @@ $lang = array(
)
),
'chrClass' => array(
+ 'id' => "Класс ID: ",
'notFound' => "Такой класс не существует."
),
'race' => array(
+ 'id' => "Раса ID: ",
'notFound' => "Такая раса не существует.",
'racialLeader' => "Лидер расы: ",
'startZone' => "Начальная локация",
@@ -1349,6 +1359,7 @@ $lang = array(
)
),
'zone' => array(
+ 'id' => "Игровая зона ID: ",
'notFound' => "Такая местность не существует.",
'attunement' => ["[Attunement]: ", "[Heroic attunement]: "],
'key' => ["[Key]: ", "[Heroic key]: "],
@@ -1377,6 +1388,7 @@ $lang = array(
)
),
'quest' => array(
+ 'id' => "Задание ID: ",
'notFound' => "Такое задание не существует.",
'_transfer' => 'Этот предмет превратится в %s, если вы перейдете за %s.',
'questLevel' => "%s-го уровня",
@@ -1514,6 +1526,7 @@ $lang = array(
'notFound' => "Этой иконки не существует"
),
'title' => array(
+ 'id' => "Звание ID: ",
'notFound' => "Такое звание не существует.",
'_transfer' => 'Этот предмет превратится в %s, если вы перейдете за %s.',
'cat' => array(
@@ -1521,6 +1534,7 @@ $lang = array(
)
),
'skill' => array(
+ 'id' => "Навык ID: ",
'notFound' => "Этот навык не существует.",
'cat' => array(
-6 => "Спутники", -5 => "Транспорт", -4 => "Классовые навыки", 5 => "Характеристики", 6 => "Оружейные навыки", 7 => "Классовые навыки", 8 => "Доспехи",
@@ -1528,6 +1542,7 @@ $lang = array(
)
),
'currency' => array(
+ 'id' => "Валюта ID: ",
'notFound' => "Такая валюта не существует.",
'cap' => "Максимум всего: ",
'cat' => array(
@@ -1549,6 +1564,7 @@ $lang = array(
)
),
'mail' => array(
+ 'id' => "[Mail ID]: ",
'notFound' => "[This mail doesn't exist].",
'attachment' => "[Attachment]",
'mailDelivery' => "Вы получите это письмо%s%s",
@@ -1559,12 +1575,14 @@ $lang = array(
'untitled' => "[Untitled Mail] #%d"
),
'pet' => array(
+ 'id' => "Питомец ID: ",
'notFound' => "Такой породы питомцев не существует.",
'exotic' => "Экзотический",
'cat' => ["Свирепость", "Упорство", "Хитрость"],
'food' => ["Мясо", "Рыба", "Сыр", "Хлеб", "Грибы", "Фрукты", "Сырое мясо", "Сырая рыба"]
),
'faction' => array(
+ 'id' => "Фракция ID: ",
'notFound' => "Такая фракция не существует.",
'spillover' => "Распространение репутации",
'spilloverDesc' => "Получение репутации у этой фракции также дает пропорциональный выигрыш по отношению к фракциям, перечисленным ниже.",
@@ -1580,6 +1598,7 @@ $lang = array(
)
),
'itemset' => array(
+ 'id' => "Комплект ID: ",
'notFound' => "Такой комплект не существует.",
'_desc' => "%s — %s. Он состоит из %s предметов.",
'_descTagless' => "%s — набор из %s предметов.",
@@ -1605,6 +1624,7 @@ $lang = array(
)
),
'spell' => array(
+ 'id' => "Заклинание ID: ",
'notFound' => "Такое заклинание не существует.",
'_spellDetails' => "Описание заклинания",
'_cost' => "Цена",
@@ -2168,6 +2188,7 @@ $lang = array(
)
),
'item' => array(
+ 'id' => "Предмет ID: ",
'notFound' => "Такой предмет не существует.",
'armor' => "Броня: %s",
'block' => "Блок: %s",
diff --git a/localization/locale_zhcn.php b/localization/locale_zhcn.php
index 05c1d150..7819c9ea 100644
--- a/localization/locale_zhcn.php
+++ b/localization/locale_zhcn.php
@@ -236,6 +236,8 @@ $lang = array(
'atCaptain' => "竞技场战队队长",
'atSize' => "团队规模:",
'profiler' => "角色概况",
+ 'completion' => "达成:",
+ 'attainedBy' => "%d%%角色已完成",
'notFound' => array(
'guild' => "该公会不存在或尚未被收录到数据库中。",
'arenateam' => "该竞技场战队不存在或尚未被收录到数据库中。",
@@ -1070,6 +1072,7 @@ $lang = array(
'posts' => "论坛帖子:"
),
'emote' => array(
+ 'id' => "表情ID:",
'notFound' => "这个表情不存在。",
// 'self' => "对你自己",
// 'target' => "对别人并且选择了目标",
@@ -1102,9 +1105,10 @@ $lang = array(
'state' => ['[Oneshot]', '[Continuous State]', '[Continuous Emote]']
),
'enchantment' => array(
+ 'id' => "附魔ID:",
+ 'notFound' => "这个附魔不存在。",
'details' => "细节",
'activation' => "激活",
- 'notFound' => "这个附魔不存在。",
'types' => array(
1 => "触发法术", 3 => "装备法术", 7 => "使用法术", 8 => "棱形插槽",
5 => "统计", 2 => "武器伤害", 6 => "DPS", 4 => "防御"
@@ -1116,6 +1120,7 @@ $lang = array(
'types' => ['未使用', '酒馆', '传送门', '任务目标', 'Smart Trigger', '脚本']
),
'gameObject' => array(
+ 'id' => "对象ID:",
'notFound' => "这个对象不存在。",
'cat' => [0 => "其他", 3 => "容器", 6 => "陷阱", 9 => "书籍", 25 => "钓鱼点", -5 => "宝箱", -3 => "草药", -4 => "矿脉", -2 => "任务", -6 => "工具"],
'type' => [ 3 => "容器", 6 => "", 9 => "书籍", 25 => "", -5 => "宝箱", -3 => "草药", -4 => "矿脉", -2 => "任务", -6 => ""],
@@ -1148,6 +1153,7 @@ $lang = array(
)
),
'npc' => array(
+ 'id' => "NPC ID:",
'notFound' => "这个NPC不存在。",
'classification'=> "分类:%s",
'petFamily' => "宠物家族:",
@@ -1243,6 +1249,7 @@ $lang = array(
)
),
'event' => array(
+ 'id' => "世界事件ID:",
'notFound' => "这个世界事件不存在。",
'start' => "开始:",
'end' => "结束:",
@@ -1251,6 +1258,7 @@ $lang = array(
'category' => ["未分类", "节日", "循环", "PvP"]
),
'achievement' => array(
+ 'id' => "成就ID:",
'notFound' => "这个成就不存在。",
'criteria' => "达成条件",
'points' => "点数",
@@ -1309,9 +1317,11 @@ $lang = array(
)
),
'chrClass' => array(
+ 'id' => "职业ID:",
'notFound' => "这个职业不存在。"
),
'race' => array(
+ 'id' => "种族ID:",
'notFound' => "这个种族不存在。",
'racialLeader' => "种族领袖:",
'startZone' => "起始区域"
@@ -1349,6 +1359,7 @@ $lang = array(
)
),
'zone' => array(
+ 'id' => "区域ID:",
'notFound' => "这个区域不存在。",
'attunement' => ["调整:", "英雄调整:"],
'key' => ["钥匙:", "英雄钥匙:"],
@@ -1377,6 +1388,7 @@ $lang = array(
)
),
'quest' => array(
+ 'id' => "任务ID:",
'notFound' => "这个任务不存在。",
'_transfer' => '这个任务将被转换到%s,如果你转移到%s。',
'questLevel' => "等级%s",
@@ -1514,6 +1526,7 @@ $lang = array(
'notFound' => "这个图标不存在。"
),
'title' => array(
+ 'id' => "头衔ID:",
'notFound' => "这个头衔不存在。",
'_transfer' => '这个头衔将被转换到%s,如果你转移到%s。',
'cat' => array(
@@ -1521,6 +1534,7 @@ $lang = array(
)
),
'skill' => array(
+ 'id' => "技能ID:",
'notFound' => "这个技能不存在。",
'cat' => array(
-6 => "伙伴", -5 => "坐骑", -4 => "种族特性", 5 => "属性", 6 => "武器技能", 7 => "职业技能", 8 => "护甲精通",
@@ -1528,6 +1542,7 @@ $lang = array(
)
),
'currency' => array(
+ 'id' => "货币ID:",
'notFound' => "这个货币不存在。",
'cap' => "总共上限:",
'cat' => array(
@@ -1549,6 +1564,7 @@ $lang = array(
)
),
'mail' => array(
+ 'id' => "邮件ID:",
'notFound' => "该邮件不存在。",
'attachment' => "附件",
'mailDelivery' => '你将收到 这封信%s%s', // "你会收到这封信%s%s",
@@ -1559,12 +1575,14 @@ $lang = array(
'untitled' => "无标题邮件 #%d"
),
'pet' => array(
+ 'id' => "猎人宠物ID:",
'notFound' => "这个宠物家族不存在。",
'exotic' => "异域的",
'cat' => ["狂野", "坚韧", "狡诈"],
'food' => ["肉", "鱼", "奶酪", "面包", "蘑菇", "水果", "生肉", "生鱼"]
),
'faction' => array(
+ 'id' => "阵营ID:",
'notFound' => "这个阵营不存在。",
'spillover' => "声望额外效果",
'spilloverDesc' => "获得这个阵营的声望也将按比例获得下列阵营的声望。",
@@ -1580,6 +1598,7 @@ $lang = array(
)
),
'itemset' => array(
+ 'id' => "套装ID:",
'notFound' => "这个物品套装不存在。",
'_desc' => "%s是%s。它包含%s件。",
'_descTagless' => "%s是物品套装包含%s件。",
@@ -1605,6 +1624,7 @@ $lang = array(
)
),
'spell' => array(
+ 'id' => "法术ID:",
'notFound' => "这个法术不存在。",
'_spellDetails' => "法术细节",
'_cost' => "花费",
@@ -2168,6 +2188,7 @@ $lang = array(
)
),
'item' => array(
+ 'id' => "物品ID:",
'notFound' => "这个物品不存在。",
'armor' => "%d点护甲",
'block' => "%d格挡",
diff --git a/setup/sql/01-db_structure.sql b/setup/sql/01-db_structure.sql
index d3709dca..6063d5fb 100644
--- a/setup/sql/01-db_structure.sql
+++ b/setup/sql/01-db_structure.sql
@@ -1729,6 +1729,7 @@ CREATE TABLE `aowow_profiler_completion_quests` (
`id` int(10) unsigned NOT NULL,
`questId` mediumint(8) unsigned NOT NULL,
KEY `id` (`id`),
+ KEY `typeId` (`questId`),
CONSTRAINT `FK_pr_completion_quests` FOREIGN KEY (`id`) REFERENCES `aowow_profiler_profiles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1745,6 +1746,7 @@ CREATE TABLE `aowow_profiler_completion_reputation` (
`factionId` smallint(5) unsigned NOT NULL,
`standing` mediumint(9) DEFAULT NULL,
KEY `id` (`id`),
+ KEY `typeId` (`factionId`),
CONSTRAINT `FK_pr_completion_reputation` FOREIGN KEY (`id`) REFERENCES `aowow_profiler_profiles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1778,6 +1780,7 @@ CREATE TABLE `aowow_profiler_completion_spells` (
`id` int(10) unsigned NOT NULL,
`spellId` mediumint(8) unsigned NOT NULL,
KEY `id` (`id`),
+ KEY `typeId` (`spellId`),
CONSTRAINT `FK_pr_completion_spells` FOREIGN KEY (`id`) REFERENCES `aowow_profiler_profiles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
@@ -1811,6 +1814,7 @@ CREATE TABLE `aowow_profiler_completion_titles` (
`id` int(10) unsigned NOT NULL,
`titleId` tinyint(3) unsigned NOT NULL,
KEY `id` (`id`),
+ KEY `typeId` (`titleId`),
CONSTRAINT `FK_pr_completion_titles` FOREIGN KEY (`id`) REFERENCES `aowow_profiler_profiles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
diff --git a/setup/sql/updates/1759504522_01.sql b/setup/sql/updates/1759504522_01.sql
new file mode 100644
index 00000000..12872d0e
--- /dev/null
+++ b/setup/sql/updates/1759504522_01.sql
@@ -0,0 +1,11 @@
+ALTER TABLE aowow_profiler_completion_quests
+ ADD KEY `typeId` (`questId`);
+
+ALTER TABLE aowow_profiler_completion_reputation
+ ADD KEY `typeId` (`factionId`);
+
+ALTER TABLE aowow_profiler_completion_spells
+ ADD KEY `typeId` (`spellId`);
+
+ALTER TABLE aowow_profiler_completion_titles
+ ADD KEY `typeId` (`titleId`);
diff --git a/setup/sql/updates/1759504522_02.sql b/setup/sql/updates/1759504522_02.sql
new file mode 100644
index 00000000..03adf418
--- /dev/null
+++ b/setup/sql/updates/1759504522_02.sql
@@ -0,0 +1 @@
+UPDATE `aowow_dbversion` SET `build` = CONCAT(IFNULL(`build`, ''), ' globaljs');
diff --git a/setup/tools/filegen/templates/global.js/clicktocopy.js b/setup/tools/filegen/templates/global.js/clicktocopy.js
index 9225b6f4..d8c20bfd 100644
--- a/setup/tools/filegen/templates/global.js/clicktocopy.js
+++ b/setup/tools/filegen/templates/global.js/clicktocopy.js
@@ -23,7 +23,7 @@ $WH.clickToCopy = function (el, textOrFn, opt)
$WH.clickToCopy.getTooltip.bind(null, false, opt),
undefined,
// {
- /* byCursor: */ !opt.attachToElement,
+ /* byCursor: ! */ opt.attachToElement,
// stopPropagation: opt.overrideOtherTooltips
// }
);
diff --git a/setup/tools/filegen/templates/global.js/markup.js b/setup/tools/filegen/templates/global.js/markup.js
index e72e5dd2..97f2e128 100644
--- a/setup/tools/filegen/templates/global.js/markup.js
+++ b/setup/tools/filegen/templates/global.js/markup.js
@@ -465,6 +465,90 @@ var Markup = {
return [str, ''];
}
},
+ copy:
+ {
+ empty: false,
+ attr:
+ {
+ unnamed: { req: false },
+ button: { req: false, valid: /^false$/ },
+ size: { req: false, valid: /^large$/ }
+ },
+ allowedClass: MARKUP_CLASS_STAFF,
+ allowedChildren: { '': 1 },
+ // invisibleContent: true,
+ // rawText: true,
+ toHtml: function(attr)
+ {
+ let title = attr.unnamed ? LANG.copy_format.replace('%s', attr.unnamed) : LANG.copy_clipboard;
+ // let text = attr._contents.textContent;
+ let text = attr._textContents;
+
+ // aowow - can't access dom nodes from here .. hopefully this does not become relevant
+ // while (attr._contents.hasChildNodes())
+ // attr._contents.removeChild(attr._contents.firstChild);
+
+ if (attr.button === 'false')
+ {
+ // aowow - must return string, not node
+ // let span = $WH.ce('span', { className: 'tip' }, $WH.ct(text));
+ // $WH.clickToCopy(span, text);
+ // return span;
+
+ let rand = Math.random().toString().substr(2);
+ let html = '';
+ setTimeout(() => {
+ span = $WH.ge('ctc-' + rand);
+ $WH.clickToCopy(span, span.textContent);
+ }, 500);
+
+ return [html, ''];
+ }
+
+ /* aowow - red buttons aren't yet
+ * let btn = $WH.ce('button', { className: 'btn btn-site fa fa-clipboard', type: 'button' }, $WH.ct(title));
+ *
+ * if (attr.size !== 'large')
+ * btn.classList.add('btn-small');
+ *
+ * $WH.aE(btn, 'click', () => {
+ * $WH.copyToClipboard(text);
+ * btn.classList.remove('fa-clipboard');
+ * btn.classList.add('fa-check');
+ * setTimeout(() => {
+ * btn.classList.remove('fa-check');
+ * btn.classList.add('fa-clipboard');
+ * }, 3 * 1000);
+ * });
+ *
+ * return btn;
+ */
+
+ let rand = Math.random().toString().substr(2);
+ let btn = RedButton.create(title);
+
+ btn.id = 'ctc-' + rand;
+ btn.classList.add('fa-clipboard');
+
+ btn.style.float = 'initial';
+ btn.style.display = 'inline-block';
+
+ setTimeout(() => {
+ btn = $WH.ge('ctc-' + rand);
+ $WH.aE(btn, 'click', () => {
+ $WH.copyToClipboard(text);
+ btn.classList.remove('fa-clipboard');
+ btn.classList.add('fa-check');
+ setTimeout(() => {
+ btn.classList.remove('fa-check');
+ btn.classList.add('fa-clipboard');
+ }, 3 * 1000);
+ }, 500);
+ });
+
+ return [btn.outerHTML];
+ }
+ },
currency:
{
empty: true,
diff --git a/static/css/aowow.css b/static/css/aowow.css
index 7692cdd9..64c3fa45 100644
--- a/static/css/aowow.css
+++ b/static/css/aowow.css
@@ -4232,6 +4232,17 @@ input.button-copy:hover {
background-color: #444;
}
+/* clicktocopy fa-replacement on redbutton custom */
+a.button-red.fa-check > em > span {
+ padding-left: 19px;
+ background: url(../images/icons/tick.png) no-repeat left center / 12px;
+}
+
+a.button-red.fa-clipboard > em > span {
+ padding-left: 19px;
+ background: url(../images/icons/pages.gif) no-repeat left center / 12px;
+}
+
/* favicon fa-replacement custom */
.fav-star {
cursor:pointer;
diff --git a/static/js/locale_dede.js b/static/js/locale_dede.js
index 055c8497..1f075acb 100644
--- a/static/js/locale_dede.js
+++ b/static/js/locale_dede.js
@@ -4904,6 +4904,8 @@ var LANG = {
copied: 'Kopiert',
clickToCopy: 'Klicke zum Kopieren',
nothingToCopy_tip: 'Nichts zu kopieren!',
+ copy_clipboard: 'Kopieren',
+ copy_format: 'Kopiere %s',
// TC conditions display
tab_conditions: 'Konditionen',
diff --git a/static/js/locale_enus.js b/static/js/locale_enus.js
index 417ee9ab..4f9911a4 100644
--- a/static/js/locale_enus.js
+++ b/static/js/locale_enus.js
@@ -4952,6 +4952,8 @@ var LANG = {
copied: 'Copied',
clickToCopy: 'Click to Copy',
nothingToCopy_tip: 'Nothing to copy!',
+ copy_clipboard: 'Copy',
+ copy_format: 'Copy %s',
// TC conditions display
tab_conditions: 'Conditions',
diff --git a/static/js/locale_eses.js b/static/js/locale_eses.js
index ca03d740..53edb97d 100644
--- a/static/js/locale_eses.js
+++ b/static/js/locale_eses.js
@@ -4906,6 +4906,8 @@ var LANG = {
copied: 'Copiado',
clickToCopy: 'Click para copiar',
nothingToCopy_tip: '[Nothing to copy!]',
+ copy_clipboard: 'Copiar',
+ copy_format: 'Copiar %s',
// TC conditions display
tab_conditions: 'Condiciones',
diff --git a/static/js/locale_frfr.js b/static/js/locale_frfr.js
index 04be890c..1cf62a7c 100644
--- a/static/js/locale_frfr.js
+++ b/static/js/locale_frfr.js
@@ -4906,6 +4906,8 @@ var LANG = {
copied: 'Copié',
clickToCopy: 'Cliquer pour Copier',
nothingToCopy_tip: 'Rien à copier !',
+ copy_clipboard: 'Copier',
+ copy_format: 'Copier %s',
// TC conditions display
tab_conditions: '[Conditions]',
diff --git a/static/js/locale_ruru.js b/static/js/locale_ruru.js
index 117fd9cc..7fb5aa8b 100644
--- a/static/js/locale_ruru.js
+++ b/static/js/locale_ruru.js
@@ -4908,6 +4908,8 @@ var LANG = {
copied: 'Скопировано',
clickToCopy: 'Нажмите, чтобы скопировать',
nothingToCopy_tip: 'Нет данных для копирования!',
+ copy_clipboard: 'Скопировать',
+ copy_format: 'Скопировать %s',
// TC conditions display
tab_conditions: '[Conditions]',
diff --git a/static/js/locale_zhcn.js b/static/js/locale_zhcn.js
index 7399cae5..1aee50eb 100644
--- a/static/js/locale_zhcn.js
+++ b/static/js/locale_zhcn.js
@@ -4932,6 +4932,8 @@ var LANG = {
copied: '已复制',
clickToCopy: '点击复制',
nothingToCopy_tip: '[Nothing to copy!]',
+ copy_clipboard: '复制',
+ copy_format: '[Copy %s]',
// TC conditions display
tab_conditions: '[Conditions]',