Compare commits

...

10 commits

Author SHA1 Message Date
Sarjuuk
1491db51e3 Template/Cleanup
* \n to PHP_EOL
 * add phpdoc for autocomplete
 * try to unify indentations
 * stop mixing quotation marks if possible
2026-04-11 20:48:18 +02:00
Sarjuuk
9fc6f7896e Profiler/Fixup
* fix achievementpoint total being the sum of both factions
2026-04-09 20:17:51 +02:00
Sarjuuk
725686d1cd Setup/Help
* be more clear that connecting to auth and characters db is conditional
 * updated some lost references to renamed databases and config options
2026-04-08 15:47:17 +02:00
emv33
20f38e1c2b
Readme/Fixup (#503)
* fix link to badge images in README.md
2026-04-03 01:13:02 +02:00
Sarjuuk
8ded8e8e97 Filter/Fixup
* sanitize input before trying to construct filter and redirect
2026-03-30 18:17:45 +02:00
Sarjuuk
681d29e5f3 Search/Indexing
* add reversed words and update token processing to allow
   fulltext search to match end of word (e.g. searching 'wind -storm'
   will now find 'whisperwind' or 'windrunner' and ignore 'stormwind')
 * fix search token duplication for spells
2026-03-28 21:13:59 +01:00
Sarjuuk
764ea1c7fa Setup/Spells
* manually set several trade skills and related items as unavailable
 * don't use unavailable trade skills to resolve reagent dependencies
   on Spell Detail Page
 * closes #499
2026-03-27 00:13:00 +01:00
Sarjuuk
7906b6c942 Localization/Fixup
* localize "unnamed" text for gameobjects and areatrigger
 * fix empty links in Quest Detail Page for quests with
   external completion event but empty AreaDescription
 * closes #501
2026-03-26 15:22:11 +01:00
Sarjuuk
38dc0e834e Search/Fixup
* fix creature indices only including creatures with name AND subname
 * closes #500
2026-03-25 20:56:01 +01:00
Sarjuuk
c93417301a Quests/Fixup
* fix showing "Gains:" header on detail page if there is nothing
   to be gained
2026-03-22 16:34:42 +01:00
125 changed files with 1455 additions and 334 deletions

View file

@ -2,7 +2,7 @@
## Build Status
![fuck it ship it](http://forthebadge.com/images/badges/fuck-it-ship-it.svg)
![fuck it ship it](https://forthebadge.com/badges/fuck-it-ship-it.svg)
## Introduction
@ -51,7 +51,7 @@ audio processing may require [lame](https://sourceforge.net/projects/lame/files/
`git clone git@github.com:Sarjuuk/MPQExtractor.git MPQExtractor`
#### 2. Prepare the database
Ensure that the account you are going to use has **full** access on the database AoWoW is going to occupy and ideally only **read** access on the world database you are going to reference.
Ensure that the account you are going to use has **full** access on the database AoWoW is going to occupy and ideally only **read** access on the world and optionally auth and characters databases you are going to reference.
Import files 01 - 03 from `setup/sql/` in order into the AoWoW database `mysql --default-character-set=utf8 -p {your-db-here} < setup/sql/01-db_structure.sql`, etc.
**Optional**: If you are using MySQL ≥ 8.4.0 and want to support fulltext search for locale zhCN, additionally import `setup/sql/04-db_optional_mysql_only.sql`. Enables this in settings after AoWoW has been set up.
@ -104,7 +104,7 @@ When you've created your admin account you are done.
## Troubleshooting
Q: The Page appears white, without any styles.
A: The static content is not being displayed. You are either using SSL and AoWoW is unable to detect it or STATIC_HOST is not defined properly. Either way this can be fixed via config `php aowow --siteconfig`
A: The static content is not being displayed. You are either using SSL and AoWoW is unable to detect it or STATIC_HOST is not defined properly. Either way this can be fixed via config `php aowow --configure`
Q: Fatal error: Can't inherit abstract function \<functionName> (previously declared abstract in \<className>) in \<path>
A: You are using multiple cache optimization modules for php that are in conflict with each other. (Zend OPcache, XCache, ..) Disable all but one.
@ -141,4 +141,4 @@ A: A search is only conducted against the currently used locale. You may have on
Said website with the red smiling rocket, for providing this beautiful website!
Please do not regard this project as blatant rip-off, rather as "We do really liked your presentation, but since time and content progresses, you are sadly no longer supplying the data we need".
![uses badges](http://forthebadge.com/images/badges/uses-badges.svg)
![uses badges](https://forthebadge.com/badges/uses-badges.svg)

View file

@ -19,14 +19,28 @@ class FilterBaseResponse extends TextResponse
parent::__construct($rawParam);
$catg = null;
$catg = $page = null;
if (strstr($rawParam, '='))
[$this->page, $catg] = explode('=', $rawParam);
[$page, $catg] = explode('=', $rawParam);
else
$this->page = $rawParam;
$page = $rawParam;
if (!$page || preg_match('/[^a-z\-]/i', $page))
return;
$this->page = strtolower($page);
if ($catg !== null)
$this->catg = explode('.', $catg);
{
// category is a string for profiler (region.realm) but not passed through here
foreach (explode('.', $catg) as $c)
{
if (preg_match('/\D/', $c))
break;
$this->catg[] = intval($c);
}
}
$opts = ['parentCats' => $this->catg];
@ -38,14 +52,22 @@ class FilterBaseResponse extends TextResponse
};
// yes, the whole _POST! .. should the input fields be exposed and static so they can be evaluated via BaseResponse::initRequestData() ?
$this->filter = Type::newFilter($fileStr, $_POST, $opts);
if (!$this->filter = Type::newFilter($fileStr, $_POST, $opts))
trigger_error('Filter::__construct - tried to init filter from bogus GET data', E_USER_WARNING);
}
protected function generate() : void
{
// could not build filter from $this->page > go to front page
if (!$this->filter)
{
$this->redirectTo = '.';
return;
}
$url = '?'.$this->page;
$this->filter?->mergeCat($this->catg);
$this->filter->mergeCat($this->catg);
if ($this->catg)
$url .= '='.implode('.', $this->catg);
@ -53,7 +75,7 @@ class FilterBaseResponse extends TextResponse
if ($x = $this->filter?->buildGETParam())
$url .= '&filter='.$x;
if ($this->filter?->error)
if ($this->filter->error)
$_SESSION['error']['fi'] = $this->filter::class;
// do get request

View file

@ -634,7 +634,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache
// PSA: 'redundant' data is on purpose (e.g. creature required for kill, also dropps item required to collect)
// external events
$endTextWrapper = '%s';
$endText = $this->subject->parseText('end', false);
if ($_specialFlags & QUEST_FLAG_SPECIAL_EXT_COMPLETE)
{
// areatrigger
@ -643,7 +643,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache
if ($atSpawns = DB::AoWoW()->selectAssoc('SELECT `typeId` AS ARRAY_KEY, `posX`, `posY`, `floor`, `areaId` FROM ::spawns WHERE `type` = %i AND `typeId` IN %in', Type::AREATRIGGER, $atir))
{
if (User::isInGroup(U_GROUP_STAFF))
$endTextWrapper = '<a href="?areatrigger='.$atir[0].'">%s</a>';
$endText = '<a href="?areatrigger='.$atir[0].'">'.($endText ?: Lang::areatrigger('unnamed', [$atir[0]])).'</a>';
foreach ($atSpawns as $atId => $atsp)
{
@ -651,7 +651,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache
'type' => User::isInGroup(U_GROUP_STAFF) ? Type::AREATRIGGER : -1,
'id' => $atId,
'point' => 'requirement',
'name' => $this->subject->parseText('end', false),
'name' => $this->subject->parseText('end', false) ?: Lang::areatrigger('unnamed', [$atir[0]]),
'coord' => [$atsp['posX'], $atsp['posY']],
'coords' => [[$atsp['posX'], $atsp['posY']]],
'objective' => $objectiveIdx++
@ -674,7 +674,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache
// complete-spell
else if ($endSpell = new SpellList(array(DB::OR, [DB::AND, ['effect1Id', SPELL_EFFECT_QUEST_COMPLETE], ['effect1MiscValue', $this->typeId]], [DB::AND, ['effect2Id', SPELL_EFFECT_QUEST_COMPLETE], ['effect2MiscValue', $this->typeId]], [DB::AND, ['effect3Id', SPELL_EFFECT_QUEST_COMPLETE], ['effect3MiscValue', $this->typeId]])))
if (!$endSpell->error)
$endTextWrapper = '<a href="?spell='.$endSpell->id.'">%s</a>';
$endText = '<a href="?spell='.$endSpell->id.'">'.($endText ?: $endSpell->getField('name', true)).'</a>';
}
// ..adding creature kill requirements
@ -898,7 +898,7 @@ class QuestBaseResponse extends TemplateResponse implements ICache
$this->offerReward = $this->subject->parseText('offerReward', false);
$this->requestItems = $this->subject->parseText('requestItems', false);
$this->completed = $this->subject->parseText('completed', false);
$this->end = sprintf($endTextWrapper, $this->subject->parseText('end', false));
$this->end = $endText;
$this->suggestedPl = $this->subject->getField('suggestedPlayers');
$this->unavailable = $_flags & QUEST_FLAG_UNAVAILABLE || $this->subject->getField('cuFlags') & CUSTOM_EXCLUDE_FOR_LISTVIEW;
$this->redButtons = array(
@ -1216,7 +1216,10 @@ class QuestBaseResponse extends TemplateResponse implements ICache
$gains[5] = $this->subject->getField('rewardArenaPoints');
// honor points
$gains[4] = [$this->subject->getField('rewardHonorPoints'), $side];
if ($_ = $this->subject->getField('rewardHonorPoints'))
$gains[4] = [$_, $side];
else
$gains[4] = null;
// talent points
$gains[3] = $this->subject->getField('rewardTalents');

View file

@ -1344,10 +1344,11 @@ class SpellBaseResponse extends TemplateResponse implements ICache
s.`id` AS ARRAY_KEY, ic.`name` AS `iconString`
FROM ::spell s
JOIN ::icons ic ON s.`iconId` = ic.`id`
WHERE (`effect1CreateItemId` = %i AND `effect1Id` = %i)',// OR
WHERE (s.`cuFlags` & %i) = 0 AND
(`effect1CreateItemId` = %i AND `effect1Id` = %i)',// OR
// (`effect2CreateItemId` = %i AND `effect2Id` = %i) OR
// (`effect3CreateItemId` = %i AND `effect3Id` = %i)',
$itemId, SPELL_EFFECT_CREATE_ITEM //, $itemId, SPELL_EFFECT_CREATE_ITEM, $itemId, SPELL_EFFECT_CREATE_ITEM
CUSTOM_UNAVAILABLE, $itemId, SPELL_EFFECT_CREATE_ITEM //, $itemId, SPELL_EFFECT_CREATE_ITEM, $itemId, SPELL_EFFECT_CREATE_ITEM
);
if (!$spells)

View file

@ -635,7 +635,7 @@ abstract class Filter
// note: a fulltext search purely from exclude tokens will return no result
foreach ($fulltext as $ft)
$this->ftTokens[$field][] = ($ex ? '-' : '+') . $ft . '*';
$this->ftTokens[$field][] = ($ex ? '-' : '+') . '(' . $ft . '* ' . Util::strrev($ft) . '*)';
}
}

View file

@ -257,7 +257,7 @@ class Profiler
{
self::getRealms();
// sort depends on encountered order in `logon`.`realmlist`. Is that a problem?
// sort depends on encountered order in `auth`.`realmlist`. Is that a problem?
return array_unique(array_column(self::$realms, 'region'));
}

View file

@ -118,7 +118,7 @@ class Search
// note: a fulltext search purely from exclude tokens will return no result
foreach ($fulltext as $ft)
$this->fulltext[] = ($ex ? '-' : '+') . $ft . '*';
$this->fulltext[] = ($ex ? '-' : '+') . '(' . $ft . '* ' . Util::strrev($ft) . '*)';
}
else
$this->invalid[] = $raw;

View file

@ -27,13 +27,13 @@ class AreaTriggerList extends DBTypeList
foreach ($this->iterate() as $id => &$_curTpl)
if (!$_curTpl['name'])
$_curTpl['name'] = 'Unnamed Areatrigger #' . $id;
$_curTpl['name'] = Lang::areatrigger('unnamed', [$id]);
}
public static function getName(int $id) : ?LocString
{
if ($n = DB::Aowow()->SelectRow('SELECT IF(`name`, `name`, CONCAT("Unnamed Areatrigger #", `id`) AS "name_loc0" FROM %n WHERE `id` = %i', self::$dataTable, $id))
return new LocString($n);
if ($n = DB::Aowow()->SelectRow('SELECT `name` AS "name_loc0" FROM %n WHERE `id` = %i', self::$dataTable, $id))
return new LocString($n, callback: fn($x) => $x ?: Lang::areatrigger('unnamed', [$id]));
return null;
}

View file

@ -34,8 +34,8 @@ class GameObjectList extends DBTypeList
// post processing
foreach ($this->iterate() as $_id => &$curTpl)
{
if (!$curTpl['name_loc0'])
$curTpl['name_loc0'] = 'Unnamed Object #' . $_id;
if (!$curTpl['name_loc'.Lang::getLocale()->value])
$curTpl['name_loc'.Lang::getLocale()->value] = Lang::gameObject('unnamed', [$_id]);
// unpack miscInfo
$curTpl['mStone'] =

View file

@ -360,6 +360,15 @@ abstract class Util
return mb_strtolower($str);
}
public static function strrev(string $str) : string
{
$out = '';
for ($i = 1, $len = mb_strlen($str); $i <= $len; $i++)
$out .= mb_substr($str, -$i, 1);
return $out;
}
// doesn't handle scientific notation .. why would you input 3e3 for 3000..?
public static function checkNumeric(mixed &$data, int $typeCast = NUM_ANY) : bool
{

View file

@ -1143,11 +1143,13 @@ $lang = array(
'areatrigger' => array(
'notFound' => "Dieser Areatrigger existiert nicht.",
'foundIn' => "Dieser Areatrigger befindet sich in",
'unnamed' => "Unbenannter Areatrigger #%d",
'types' => ['Unbenutzt', 'Gasthaus', 'Teleporter', 'Questziel', 'Smarter Trigger', 'Script']
),
'gameObject' => array(
'id' => "Objekt-ID: ",
'notFound' => "Dieses Objekt existiert nicht.",
'unnamed' => "Unbenanntes Objekt #%d",
'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 => ""],
'unkPosition' => "Der Standort dieses Objekts ist nicht bekannt.",

View file

@ -1143,11 +1143,13 @@ $lang = array(
'areatrigger' => array(
'notFound' => "This areatrigger doesn't exist.",
'foundIn' => "This areatrigger can be found in",
'unnamed' => "Unnamed areatrigger #%d",
'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script']
),
'gameObject' => array(
'id' => "Object ID: ",
'notFound' => "This object doesn't exist.",
'unnamed' => "Unnamed object #%d",
'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
'unkPosition' => "The location of this object is unknown.",

View file

@ -1143,11 +1143,13 @@ $lang = array(
'areatrigger' => array(
'notFound' => "Este activador de área no existe.",
'foundIn' => "Este activador de área se puede encontrar en",
'unnamed' => "[Unnamed areatrigger] #%d",
'types' => ['Sin usar', 'Taberna', 'Teletransportador', 'Objetivo de misión', 'Activador inteligente', 'Script']
),
'gameObject' => array(
'id' => "ID de Entidad: ",
'notFound' => "Esta entidad no existe.",
'unnamed' => "[Unnamed object] #%d",
'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 => ""],
'unkPosition' => "No se conoce la ubicación de esta entidad.",

View file

@ -1143,11 +1143,13 @@ $lang = array(
'areatrigger' => array(
'notFound' => "This areatrigger doesn't exist.",
'foundIn' => "This areatrigger can be found in",
'unnamed' => "[Unnamed areatrigger] #%d",
'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script']
),
'gameObject' => array(
'id' => "ID Entité: ",
'notFound' => "Cette entité n'existe pas.",
'unnamed' => "[Unnamed object] #%d",
'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 => ""],
'unkPosition' => "L'emplacement de cette entité est inconnu.",

View file

@ -1143,11 +1143,13 @@ $lang = array(
'areatrigger' => array(
'notFound' => "This areatrigger doesn't exist.",
'foundIn' => "This areatrigger can be found in",
'unnamed' => "[Unnamed areatrigger] #%d",
'types' => ['Unused', 'Tavern', 'Teleporter', 'Quest Objective', 'Smart Trigger', 'Script']
),
'gameObject' => array(
'id' => "Объект ID: ",
'notFound' => "Такой объект не существует.",
'unnamed' => "[Unnamed object] #%d",
'cat' => [0 => "Другое", 3 => "Контейнеры", 6 => "Ловушки", 9 => "Книги", 25 => "Рыболовные лунки", -5 => "Сундуки", -3 => "Травы", -4 => "Полезные ископаемые", -2 => "Задания", -6 => "Инструменты"],
'type' => [ 3 => "Контейнер", 6 => "", 9 => "Книга", 25 => "", -5 => "Сундук", -3 => "Растение", -4 => "Полезное ископаемое", -2 => "Задание", -6 => ""],
'unkPosition' => "Местонахождение этого объекта неизвестно.",

View file

@ -1143,11 +1143,13 @@ $lang = array(
'areatrigger' => array(
'notFound' => "这个区域触发器不存在。",
'foundIn' => "这个区域触发器可以在以下地区找到:",
'unnamed' => "[Unnamed areatrigger] #%d",
'types' => ['未使用', '酒馆', '传送门', '任务目标', 'Smart Trigger', '脚本']
),
'gameObject' => array(
'id' => "对象ID",
'notFound' => "这个对象不存在。",
'unnamed' => "[Unnamed object] #%d",
'cat' => [0 => "其他", 3 => "容器", 6 => "陷阱", 9 => "书籍", 25 => "钓鱼点", -5 => "宝箱", -3 => "草药", -4 => "矿脉", -2 => "任务", -6 => "工具"],
'type' => [ 3 => "容器", 6 => "", 9 => "书籍", 25 => "", -5 => "宝箱", -3 => "草药", -4 => "矿脉", -2 => "任务", -6 => ""],
'unkPosition' => "这个对象的位置未知。",

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
UPDATE `aowow_dbversion` SET `sql` = CONCAT(IFNULL(`sql`, ''), ' search');

View file

@ -0,0 +1,135 @@
INSERT INTO `aowow_setup_custom_data` (`command`, `entry`, `field`, `value`, `comment`) VALUES
('spell', 17579, 'cuFlags', 1610612736, 'Alchemy: Greater Holy Protection Potion - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 54020, 'cuFlags', 1610612736, 'Alchemy: Transmute: Eternal Might - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 2336, 'cuFlags', 1610612736, 'Alchemy: Elixir of Tongues - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 13460, 'cuFlags', 1610612736, 'Greater Holy Protection Potion - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 40248, 'cuFlags', 1610612736, 'Eternal Might - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 2460, 'cuFlags', 1610612736, 'Elixir of Tongues - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 8366, 'cuFlags', 1610612736, 'Blacksmithing: Ironforge Chain - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 2671, 'cuFlags', 1610612736, 'Blacksmithing: Rough Bronze Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 8368, 'cuFlags', 1610612736, 'Blacksmithing: Ironforge Gauntlets - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 9942, 'cuFlags', 1610612736, 'Blacksmithing: Mithril Scale Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 16960, 'cuFlags', 1610612736, 'Blacksmithing: Thorium Greatsword - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 16965, 'cuFlags', 1610612736, 'Blacksmithing: Bleakwood Hew - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 16967, 'cuFlags', 1610612736, 'Blacksmithing: Inlaid Thorium Hammer - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 16980, 'cuFlags', 1610612736, 'Blacksmithing: Rune Edge - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 28244, 'cuFlags', 536870912, 'Blacksmithing: Icebane Bracers - set: CUSTOM_UNAVAILABLE'),
('spell', 28242, 'cuFlags', 536870912, 'Blacksmithing: Icebane Breastplate - set: CUSTOM_UNAVAILABLE'),
('spell', 28243, 'cuFlags', 536870912, 'Blacksmithing: Icebane Gauntlets - set: CUSTOM_UNAVAILABLE'),
('spell', 16986, 'cuFlags', 1610612736, 'Blacksmithing: Blood Talon - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 16987, 'cuFlags', 1610612736, 'Blacksmithing: Darkspear - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 2867, 'cuFlags', 1610612736, 'Rough Bronze Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 6730, 'cuFlags', 1610612736, 'Ironforge Chain - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 6733, 'cuFlags', 1610612736, 'Ironforge Gauntlets - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 7925, 'cuFlags', 1610612736, 'Mithril Scale Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 12764, 'cuFlags', 1610612736, 'Thorium Greatsword - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 12769, 'cuFlags', 1610612736, 'Bleakwood Hew - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 12772, 'cuFlags', 1610612736, 'Inlaid Thorium Hammer - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 12779, 'cuFlags', 1610612736, 'Rune Edge - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 12795, 'cuFlags', 1610612736, 'Blood Talon - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 12802, 'cuFlags', 1610612736, 'Darkspear - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 22671, 'cuFlags', 536870912, 'Icebane Bracers - set: CUSTOM_UNAVAILABLE'),
('items', 22669, 'cuFlags', 536870912, 'Icebane Breastplate - set: CUSTOM_UNAVAILABLE'),
('items', 22670, 'cuFlags', 536870912, 'Icebane Gauntlets - set: CUSTOM_UNAVAILABLE'),
('spell', 28021, 'cuFlags', 1610612736, 'Enchanting: Arcane Dust - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 44612, 'cuFlags', 1610612736, 'Enchanting: Enchant Gloves - Greater Blasting - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 62257, 'cuFlags', 1610612736, 'Enchanting: Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 38985, 'cuFlags', 1610612736, 'Scroll of Enchant Gloves - Greater Blasting - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 44946, 'cuFlags', 1610612736, 'Scroll of Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 44945, 'cuFlags', 1610612736, 'Formula: Enchant Weapon - Titanguard - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 30549, 'cuFlags', 1610612736, 'Engineering: Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 67790, 'cuFlags', 1610612736, 'Engineering: Dimensional Folder: K3 - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 30343, 'cuFlags', 1610612736, 'Engineering: Blue Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 30342, 'cuFlags', 1610612736, 'Engineering: Red Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 30561, 'cuFlags', 1610612736, 'Engineering: Goblin Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 30573, 'cuFlags', 1610612736, 'Engineering: Gnomish Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12722, 'cuFlags', 1610612736, 'Engineering: Goblin Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12904, 'cuFlags', 1610612736, 'Engineering: Gnomish Ham Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12720, 'cuFlags', 1610612736, 'Engineering: Goblin "Boom" Box - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12900, 'cuFlags', 1610612736, 'Engineering: Mobile Alarm- set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 23882, 'cuFlags', 1610612736, 'Schematic: Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 23820, 'cuFlags', 1610612736, 'Critter Enlarger - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 48933, 'cuFlags', 1610612736, 'Dimensional Folder: K3 - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 23770, 'cuFlags', 1610612736, 'Blue Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 23769, 'cuFlags', 1610612736, 'Red Smoke Flare - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 23831, 'cuFlags', 1610612736, 'Goblin Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 23832, 'cuFlags', 1610612736, 'Gnomish Tonk Controller - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10585, 'cuFlags', 1610612736, 'Goblin Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10723, 'cuFlags', 1610612736, 'Gnomish Ham Radio - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10580, 'cuFlags', 1610612736, 'Goblin "Boom" Box - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10719, 'cuFlags', 1610612736, 'Mobile Alarm - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 8387, 'cuFlags', 1610612736, 'Herbalism: Find Herbs - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 2369, 'cuFlags', 1610612736, 'Herbalism: Herb Gathering - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 2371, 'cuFlags', 1610612736, 'Herbalism: Herb Gathering - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 52175, 'cuFlags', 1610612736, 'Inscription: Decipher - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 25614, 'cuFlags', 1610612736, 'Jewelcrafting: Silver Rose Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 32810, 'cuFlags', 1610612736, 'Jewelcrafting: Primal Stone Statue - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 26918, 'cuFlags', 1610612736, 'Jewelcrafting: Arcanite Sword Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 26920, 'cuFlags', 1610612736, 'Jewelcrafting: Blood Crown - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 20956, 'cuFlags', 1610612736, 'Silver Rose Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 25884, 'cuFlags', 1610612736, 'Primal Stone Statue - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 21793, 'cuFlags', 1610612736, 'Arcanite Sword Pendant - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 21780, 'cuFlags', 1610612736, 'Blood Crown - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 10550, 'cuFlags', 1610612736, 'Leatherworking: Nightscape Cloak - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 28224, 'cuFlags', 536870912, 'Leatherworking: Icy Scale Bracers - set: CUSTOM_UNAVAILABLE'),
('spell', 28222, 'cuFlags', 536870912, 'Leatherworking: Icy Scale Breastplate - set: CUSTOM_UNAVAILABLE'),
('spell', 28223, 'cuFlags', 536870912, 'Leatherworking: Icy Scale Gauntlets - set: CUSTOM_UNAVAILABLE'),
('spell', 28221, 'cuFlags', 536870912, 'Leatherworking: Polar Bracers - set: CUSTOM_UNAVAILABLE'),
('spell', 28220, 'cuFlags', 536870912, 'Leatherworking: Polar Gloves - set: CUSTOM_UNAVAILABLE'),
('spell', 28219, 'cuFlags', 536870912, 'Leatherworking: Polar Tunic - set: CUSTOM_UNAVAILABLE'),
('spell', 55243, 'cuFlags', 1610612736, 'Leatherworking: Bracers of Deflection - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 19106, 'cuFlags', 536870912, 'Leatherworking: Onyxia Scale Breastplate - set: CUSTOM_UNAVAILABLE'),
('items', 8195, 'cuFlags', 1610612736, 'Nightscape Cloak - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 22665, 'cuFlags', 536870912, 'Icy Scale Bracers - set: CUSTOM_UNAVAILABLE'),
('items', 22664, 'cuFlags', 536870912, 'Icy Scale Breastplate - set: CUSTOM_UNAVAILABLE'),
('items', 22666, 'cuFlags', 536870912, 'Icy Scale Gauntlets - set: CUSTOM_UNAVAILABLE'),
('items', 22663, 'cuFlags', 536870912, 'Polar Bracers - set: CUSTOM_UNAVAILABLE'),
('items', 22662, 'cuFlags', 536870912, 'Polar Gloves - set: CUSTOM_UNAVAILABLE'),
('items', 22661, 'cuFlags', 536870912, 'Polar Tunic - set: CUSTOM_UNAVAILABLE'),
('items', 41264, 'cuFlags', 1610612736, 'Bracers of Deflection - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 15141, 'cuFlags', 536870912, 'Onyxia Scale Breastplate - set: CUSTOM_UNAVAILABLE'),
('spell', 8388, 'cuFlags', 1610612736, 'Mining: Find Minerals - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 7636, 'cuFlags', 1610612736, 'Tailoring: Green Woolen Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 8778, 'cuFlags', 1610612736, 'Tailoring: Boots of Darkness - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12063, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12062, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Pants - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12068, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Vest - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12083, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Headband - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12087, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Shoulders - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 12090, 'cuFlags', 1610612736, 'Tailoring: Stormcloth Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 28208, 'cuFlags', 536870912, 'Tailoring: Glacial Cloak - set: CUSTOM_UNAVAILABLE'),
('spell', 28205, 'cuFlags', 536870912, 'Tailoring: Glacial Gloves - set: CUSTOM_UNAVAILABLE'),
('spell', 28207, 'cuFlags', 536870912, 'Tailoring: Glacial Vest - set: CUSTOM_UNAVAILABLE'),
('spell', 28209, 'cuFlags', 536870912, 'Tailoring: Glacial Wrists - set: CUSTOM_UNAVAILABLE'),
('spell', 36670, 'cuFlags', 1610612736, 'Tailoring: Lifeblood Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 36672, 'cuFlags', 1610612736, 'Tailoring: Lifeblood Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 36669, 'cuFlags', 1610612736, 'Tailoring: Lifeblood Leggings - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 36667, 'cuFlags', 1610612736, 'Tailoring: Netherflame Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 36668, 'cuFlags', 1610612736, 'Tailoring: Netherflame Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 36665, 'cuFlags', 1610612736, 'Tailoring: Netherflame Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 56048, 'cuFlags', 1610612736, 'Tailoring: Duskweave Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('spell', 31461, 'cuFlags', 1610612736, 'Tailoring: Heavy Netherweave Net - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 6243, 'cuFlags', 1610612736, 'Green Woolen Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 7027, 'cuFlags', 1610612736, 'Boots of Darkness - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10011, 'cuFlags', 1610612736, 'Stormcloth Gloves - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10010, 'cuFlags', 1610612736, 'Stormcloth Pants - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10020, 'cuFlags', 1610612736, 'Stormcloth Vest - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10032, 'cuFlags', 1610612736, 'Stormcloth Headband - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10038, 'cuFlags', 1610612736, 'Stormcloth Shoulders - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 10039, 'cuFlags', 1610612736, 'Stormcloth Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 22658, 'cuFlags', 536870912, 'Glacial Cloak - set: CUSTOM_UNAVAILABLE'),
('items', 22654, 'cuFlags', 536870912, 'Glacial Gloves - set: CUSTOM_UNAVAILABLE'),
('items', 22652, 'cuFlags', 536870912, 'Glacial Vest - set: CUSTOM_UNAVAILABLE'),
('items', 22655, 'cuFlags', 536870912, 'Glacial Wrists - set: CUSTOM_UNAVAILABLE'),
('items', 30463, 'cuFlags', 1610612736, 'Lifeblood Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 30464, 'cuFlags', 1610612736, 'Lifeblood Bracers - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 30465, 'cuFlags', 1610612736, 'Lifeblood Leggings - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 30460, 'cuFlags', 1610612736, 'Netherflame Belt - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 30461, 'cuFlags', 1610612736, 'Netherflame Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 30459, 'cuFlags', 1610612736, 'Netherflame Robe - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 41544, 'cuFlags', 1610612736, 'Duskweave Boots - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW'),
('items', 24269, 'cuFlags', 1610612736, 'Heavy Netherweave Net - set: CUSTOM_UNAVAILABLE | CUSTOM_EXCLUDE_FOR_LISTVIEW');
UPDATE `aowow_dbversion` SET
`sql` = CONCAT(IFNULL(`sql`, ''), ' spell items'),
`build` = CONCAT(IFNULL(`build`, ''), ' profiler');

View file

@ -0,0 +1 @@
UPDATE `aowow_dbversion` SET `sql` = CONCAT(IFNULL(`sql`, ''), ' search');

View file

@ -0,0 +1 @@
UPDATE `aowow_dbversion` SET `build` = CONCAT(IFNULL(`build`, ''), ' profiler');

View file

@ -85,7 +85,7 @@ CLISetup::registerUtility(new class extends UtilityScript
{
CLI::write();
if (!DB::isConnectable(DB_AUTH) || !$this->test())
CLI::write('[db] auth server not yet set up.', CLI::LOG_ERROR);
CLI::write('[db] auth db not yet set up.', CLI::LOG_ERROR);
else if ($realms = DB::Auth()->selectAssoc('SELECT `id` AS "0", `name` AS "1", `icon` AS "2", `timezone` AS "3", `allowedSecurityLevel` AS "4" FROM realmlist'))
{
$tbl = [['Realm Id', 'Name', 'Type', 'Region', 'GMLevel', 'Status']];
@ -309,15 +309,21 @@ CLISetup::registerUtility(new class extends UtilityScript
$buff[] = $dbInfo['prefix'] ? 'pre.: '.$dbInfo['prefix'] : '';
$buff[] = $note;
}
else if ($idx == DB_AUTH)
$buff[] = CLI::bold('<optional>');
else
$buff[] = CLI::bold('<empty>');
$buff[] = CLI::bold('<required>');
return $buff;
}
public function writeCLIHelp() : bool
{
CLI::write(' Remember to use the correct Realm Id from '.CLI::bold('`logon`.`realmlist`').' when connecting to your characters DB.', -1, false);
CLI::write(' Connecting to '.CLI::bold('`auth`').' is optional and only required when using the character profiler tool or using the game accounts for login.', -1, false);
CLI::write();
CLI::write(' Connecting to '.CLI::bold('`characters`').' is optional and only required when using the character profiler tool.', -1, false);
CLI::write(' Remember to use the correct Realm Id from '.CLI::bold('`auth`.`realmlist`').' when connecting to your characters DB.', -1, false);
CLI::write();
CLI::write(' To remove a db entry edit it and leave all fields empty.', -1, false);
CLI::write();
CLI::write();

View file

@ -170,8 +170,10 @@ CLISetup::registerUtility(new class extends UtilityScript
CLI::write(' usage: php aowow --setup [--locales: --datasrc:] [--step=<step>]', -1, false);
CLI::write();
CLI::write(' Initially essential connection information are set up and basic connectivity tests run afterwards.', -1, false);
CLI::write();
CLI::write(' In the main stage dbc and world data is compiled into the database and required sound, image and data files are generated.', -1, false);
CLI::write(' This should not require further input and will take about 15-20 minutes, plus 10 minutes per additional locale.', -1, false);
CLI::write();
CLI::write(' Lastly pending updates are applied and you are prompted to create an administrator account.', -1, false);
if (($startStep = $this->getSavedStartStep()) !== 0)

View file

@ -111,8 +111,13 @@ CLISetup::registerUtility(new class extends UtilityScript
CLI::write();
CLI::write(' Checks /setup/sql/updates for new *.sql files and applies them. If required by an applied update, the --sql and --build command are triggered afterwards.', -1, false);
CLI::write(' Use this after fetching the latest rev. from Github.', -1, false);
CLI::write();
CLI::write(' Last Update: '.date(Util::$dateFormatInternal, $this->date).' (Part #'.$this->part.')', -1, false);
if ($this->date)
{
CLI::write();
CLI::write(' Last Update: '.date(Util::$dateFormatInternal, $this->date).' (Part #'.$this->part.')', -1, false);
}
CLI::write();
CLI::write();

View file

@ -329,7 +329,7 @@ CLISetup::registerSetup("build", new class extends SetupScript
{
$condition = array(
[['cuFlags', CUSTOM_EXCLUDE_FOR_LISTVIEW, '&'], 0],
[['flags', 1, '&'], 0], // no statistics
[['flags', 1, '&'], 0], // no statistics
);
$achievez = new AchievementList($condition);
@ -343,8 +343,10 @@ CLISetup::registerSetup("build", new class extends SetupScript
$buff = "var _ = g_achievements;\n";
foreach ($achievez->getListviewData(ACHIEVEMENTINFO_PROFILE) as $id => $data)
{
$sumPoints += $data['points'];
$buff .= '_['.$id.'] = '.Util::toJSON($data).";\n";
if ($data['side'] & SIDE_ALLIANCE) // both sides have the same point total
$sumPoints += $data['points'];
$buff .= '_['.$id.'] = '.Util::toJSON($data).";\n";
}
// categories to sort by

View file

@ -133,13 +133,18 @@ CLISetup::registerSetup("sql", new class extends SetupScript
$rows = array_filter($rows, fn($x) => $x['name'] !== null);
CLI::write(' * inserting', tmpRow: true);
DB::Aowow()->qry('INSERT INTO ::objects_search %m', array(
$result = array(
'id' => array_column($rows, 'id'),
'locale' => array_column($rows, 'locale'),
'nName' => array_column($rows, 'name')
));
);
$n = ceil(count(current($result)) / CLISetup::SQL_BATCH);
for ($i = 0; $i < $n; $i++)
{
CLI::write(' * inserting batch '.($i + 1).' / '.$n, tmpRow: true);
DB::Aowow()->qry('INSERT INTO ::objects_search %m', array_map(fn($x) => array_slice($x, $i * CLISetup::SQL_BATCH, CLISetup::SQL_BATCH), $result));
}
}
private function normalizeCreatures() : void
@ -162,16 +167,21 @@ CLISetup::registerSetup("sql", new class extends SetupScript
array_walk($rows, self::normalizeRow(...), ['name', 'subname']);
$rows = array_filter($rows, fn($x) => $x['name'] !== null && $x['subname'] !== null);
$rows = array_filter($rows, fn($x) => $x['name'] !== null || $x['subname'] !== null);
CLI::write(' * inserting', tmpRow: true);
DB::Aowow()->qry('INSERT INTO ::creature_search %m', array(
$result = array(
'id' => array_column($rows, 'id'),
'locale' => array_column($rows, 'locale'),
'nName' => array_column($rows, 'name'),
'nSubname' => array_column($rows, 'subname')
));
);
$n = ceil(count(current($result)) / CLISetup::SQL_BATCH);
for ($i = 0; $i < $n; $i++)
{
CLI::write(' * inserting batch '.($i + 1).' / '.$n, tmpRow: true);
DB::Aowow()->qry('INSERT INTO ::creature_search %m', array_map(fn($x) => array_slice($x, $i * CLISetup::SQL_BATCH, CLISetup::SQL_BATCH), $result));
}
}
private function normalizeItems() : void
@ -279,9 +289,9 @@ CLISetup::registerSetup("sql", new class extends SetupScript
$buff = self::normalize(str_replace('<br />', ' ', $_));
}
if ($_ = $desc ?: Util::localizedString($spell, 'description', true))
if (!$desc && ($_ = Util::localizedString($spell, 'description', true)))
$desc = self::normalize($_);
if ($_ = $buff ?: Util::localizedString($spell, 'buff', true))
if (!$buff && ($_ = Util::localizedString($spell, 'buff', true)))
$buff = self::normalize($_);
if ($_ = Util::localizedString($spell, 'name', true))
$name = self::normalize($_);
@ -311,7 +321,7 @@ CLISetup::registerSetup("sql", new class extends SetupScript
$row[$key] = self::normalize($row[$key] ?? '');
}
// e.g. "Zul'Aman O'Reilly" => "Zul Aman ZulAman OReilly Reilly"
// e.g. "Zul'Aman O'Reilly" => "Zul Aman ZulAman OReilly Reilly luZ namA luZnamA yllieRO yllieR"
private static function normalize(?string $words) : ?string
{
if (!$words)
@ -341,7 +351,13 @@ CLISetup::registerSetup("sql", new class extends SetupScript
$result[] = $word;
}
return $result ? implode(' ', array_unique($result)) : null;
if (!$result)
return null;
$result = array_unique($result);
$reversed = array_map(Util::strrev(...), $result);
return implode(' ', array_merge($result, $reversed));
}
});

View file

@ -1,9 +1,13 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
foreach ($this->announcements as $a): ?>
<div id="announcement-<?=$a->id;?>"></div>
<script type="text/javascript">
<?=$a;?>
</script>
<?php endforeach; ?>

View file

@ -3,7 +3,10 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
if ($this->book): ?>
<div class="clear"></div>
<h3><?=Lang::item('content'); ?></h3>
@ -11,4 +14,5 @@ if ($this->book): ?>
<script>//<![CDATA[
<?=$this->book; ?>
//]]></script>
<?php endif; ?>

View file

@ -1,8 +1,15 @@
<?php namespace Aowow; ?>
<?php
namespace Aowow\Template;
use \Aowow\Lang;
/** @var \PageTemplate $this */
?>
<?php
if ($this->contribute):
?>
<div class="clear"></div>
<div class="text">
<h2><?=Lang::main('contribute'); ?></h2>
@ -10,25 +17,30 @@ if ($this->contribute):
<div id="tabs-contribute-generic" style="width: 50%"></div>
<div class="text" style="margin-right: 310px">
<div class="tabbed-contents" style="clear: none">
<?php
$this->localizedBrick('contrib', ['coError' => $this->community['coError'], 'ssError' => $this->community['ssError'], 'viError' => $this->community['viError']]);
?>
</div>
</div>
<script type="text/javascript">
var tabsContribute = new Tabs({parent: $WH.ge('tabs-contribute-generic')});
<?php
if ($this->contribute & CONTRIBUTE_CO):
echo " tabsContribute.add(LANG.tab_addyourcomment, {id: 'add-your-comment'});\n";
echo " tabsContribute.add(LANG.tab_addyourcomment, {id: 'add-your-comment'});".PHP_EOL;
endif;
if ($this->contribute & CONTRIBUTE_SS):
echo " tabsContribute.add(LANG.tab_submitascreenshot, {id: 'submit-a-screenshot'});\n";
echo " tabsContribute.add(LANG.tab_submitascreenshot, {id: 'submit-a-screenshot'});".PHP_EOL;
endif;
if ($this->contribute & CONTRIBUTE_VI):
echo " if (g_user && g_user.roles & (U_GROUP_ADMIN | U_GROUP_BUREAU | U_GROUP_VIDEO))\n";
echo " tabsContribute.add(LANG.tab_suggestavideo, {id: 'suggest-a-video'});\n";
echo " if (g_user && g_user.roles & (U_GROUP_ADMIN | U_GROUP_BUREAU | U_GROUP_VIDEO))".PHP_EOL;
echo " tabsContribute.add(LANG.tab_suggestavideo, {id: 'suggest-a-video'});".PHP_EOL;
endif;
?>
tabsContribute.flush();
</script>
<?php endif; ?>

View file

@ -2,31 +2,35 @@
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<div class="footer">
<?php
if ($this->pageStats):
echo " <table style=\"margin:auto;\">\n";
echo ' <table style="margin:auto;">'.PHP_EOL;
if ($x = $this->pageStats['sql']):
echo ' <tr><td style="text-align:left;">'.Lang::main('numSQL') .'</td><td>'.$x['count']."</td></tr>\n";
echo ' <tr><td style="text-align:left;">'.Lang::main('timeSQL').'</td><td>'.$x['time']."</td></tr>\n";
echo ' <tr><td style="text-align:left;">'.Lang::main('numSQL') .'</td><td>'.$x['count']."</td></tr>".PHP_EOL;
echo ' <tr><td style="text-align:left;">'.Lang::main('timeSQL').'</td><td>'.$x['time']."</td></tr>".PHP_EOL;
endif;
if ($x = $this->pageStats['time']):
echo ' <tr><td style="text-align:left;">Page generated in</td><td>'.$x."</td></tr>\n";
echo ' <tr><td style="text-align:left;">Page generated in</td><td>'.$x."</td></tr>".PHP_EOL;
endif;
if ($this->pageStats['cache'] && $this->pageStats['cache'][0] == CACHE_MODE_FILECACHE):
echo " <tr><td style=\"text-align:left;\">Stored in filecache</td><td>".$this->pageStats['cache'][1]."</td></tr>\n";
echo ' <tr><td style="text-align:left;">Stored in filecache</td><td>'.$this->pageStats['cache'][1].'</td></tr>'.PHP_EOL;
elseif ($this->pageStats['cache'] && $this->pageStats['cache'][0] == CACHE_MODE_MEMCACHED):
echo " <tr><td style=\"text-align:left;\">Stored in Memcached</td><td>".$this->pageStats['cache'][1]."</td></tr>\n";
echo ' <tr><td style="text-align:left;">Stored in Memcached</td><td>'.$this->pageStats['cache'][1].'</td></tr>'.PHP_EOL;
endif;
echo " </table>\n";
echo ' </table>'.PHP_EOL;
endif;
?>
</div>
</div><!-- #wrapper .nosidebar -->
</div><!-- #layout-inner -->
@ -44,6 +48,8 @@ endif;
<script type="text/javascript">
window.open("/", "SqlLog", "width=1800,height=200,top=100,left=100,status=no,location=no,toolbar=no,menubar=no")?.document?.write('<?=$this->dbProfiles;?>');
</script>
<?php endif; ?>
</body>
</html>

View file

@ -2,6 +2,8 @@
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<title><?=$this->concat('title', ' - '); ?></title>
@ -14,32 +16,39 @@
var g_serverTime = <?=$this->gServerTime; ?>;
var g_staticUrl = "<?=$this->gStaticUrl; ?>";
var g_host = "<?=$this->gHost; ?>";
<?php
if ($this->gDataKey):
echo " var g_dataKey = '".$_SESSION['dataKey']."'\n";
echo " var g_dataKey = '".$_SESSION['dataKey']."'".PHP_EOL;
endif;
?>
</script>
<?=$this->renderArray('js', 4); ?>
<script type="text/javascript">
var g_user = <?=$this->gUser; ?>;
<?php
if ($this->gFavorites):
echo " g_favorites = ".$this->gFavorites.";\n";
echo ' g_favorites = '.$this->gFavorites.';'.PHP_EOL;
endif;
?>
</script>
<?php if ($this->hasAnalytics): ?>
<script>
$WH.Track.gaInit();
</script>
<?php
endif;
if ($this->rss):
?>
<link rel="alternate" type="application/rss+xml" title="<?=$this->concat('title', ' - '); ?>" href="<?=$this->rss; ?>"/>
<?php
endif;
?>

View file

@ -1,18 +1,24 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<?php
if ($this->headIcons):
foreach ($this->headIcons as $k => $v):
echo '<div id="h1-icon-'.$k."\" class=\"h1-icon\"></div>\n";
echo '<div id="h1-icon-'.$k.'" class="h1-icon"></div>'.PHP_EOL;
endforeach;
?>
<script type="text/javascript">//<![CDATA[
<?php
foreach ($this->headIcons as $k => $v):
echo "\$WH.ge('h1-icon-".$k."').appendChild(Icon.create('".$this->escJS($v)."', 1));\n";
echo "\$WH.ge('h1-icon-".$k."').appendChild(Icon.create('".$this->escJS($v)."', 1));".PHP_EOL;
endforeach;
?>
//]]></script>
<?php endif; ?>

View file

@ -1,14 +1,19 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<!DOCTYPE html>
<html>
<head>
<?php $this->brick('head'); ?>
</head>
<body<?=($this->user::isPremium() ? ' class="premium-logo"' : ''); ?>>
<div id="layers"></div>
<?php if ($this->headerLogo): ?>
<style type="text/css">
.header-logo {
@ -16,7 +21,9 @@
margin-bottom: 1px !important;
}
</style>
<?php endif; ?>
<div class="layout nosidebar" id="layout">
<div class="layout-inner" id="layout-inner">
<div class="header" id="header">

View file

@ -2,6 +2,8 @@
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<?php
@ -13,4 +15,5 @@ else:
echo '<a href="?account=signin">'.Lang::main('signIn').'</a>';
endif;
?>
|<a href="#" id="toplinks-feedback" class="icon-email"><?=Lang::main('feedback'); ?></a>|<a href="javascript:;" id="toplinks-language"><?=Lang::main('language'); ?></a>

View file

@ -2,14 +2,17 @@
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<?php
if ($this->infobox || $this->contributions || $this->series || $this->contribute & (CONTRIBUTE_SS | CONTRIBUTE_VI)):
echo " <table class=\"infobox\">\n";
echo ' <table class="infobox">'.PHP_EOL;
if ($this->infobox):
?>
<tr><th id="infobox-quick-facts"><?=Lang::main('quickFacts'); ?></th></tr>
<tr><td>
<div class="infobox-spacer"></div>
@ -18,11 +21,13 @@ echo " <table class=\"infobox\">\n";
<?=$this->infobox; ?>
</script>
</td></tr>
<?php
endif;
if ($this->contributions):
?>
<tr><th id="infobox-contributions"><?=Lang::user('contributions'); ?></th></tr>
<tr><td>
<div class="infobox-spacer"></div>
@ -31,6 +36,7 @@ echo " <table class=\"infobox\">\n";
<?=$this->contributions; ?>
</script>
</td></tr>
<?php
endif;
@ -42,31 +48,39 @@ echo " <table class=\"infobox\">\n";
if ($this->contribute & CONTRIBUTE_SS):
?>
<tr><th id="infobox-screenshots"><?=Lang::main('screenshots'); ?></th></tr>
<tr><td><div class="infobox-spacer"></div><div id="infobox-sticky-ss"></div></td></tr>
<?php
endif;
if ($this->contribute & CONTRIBUTE_VI && ($this->user::isInGroup(U_GROUP_ADMIN | U_GROUP_BUREAU | U_GROUP_VIDEO) || !empty($this->community['vi']))):
?>
<tr><th id="infobox-videos"><?=Lang::main('videos'); ?></th></tr>
<tr><td><div class="infobox-spacer"></div><div id="infobox-sticky-vi"></div></td></tr>
<script type="text/javascript">$WH.prepInfobox()</script>
<?php
endif;
if ($this->contribute & CONTRIBUTE_SS):
?>
<script type="text/javascript">ss_appendSticky()</script>
<?php
endif;
if ($this->contribute & CONTRIBUTE_VI && ($this->user::isInGroup(U_GROUP_ADMIN | U_GROUP_BUREAU | U_GROUP_VIDEO) || !empty($this->community['vi']))):
?>
<script type="text/javascript">vi_appendSticky()</script>
<?php
endif;
echo " </table>\n";
echo ' </table>'.PHP_EOL;
endif;
?>

View file

@ -3,6 +3,7 @@
use \Aowow\Lang;
?>
<div class="pad3"></div>
<script type="text/javascript">//<![CDATA[
@ -30,10 +31,13 @@
<div class="inputbox">
<h1><?=$head ?? ''; ?></h1>
<div id="inputbox-error"><?=$error ?? ''; ?></div>
<?php if ($message ?? ''): ?>
<?=$message; ?>
<div class="pad2"></div>
<?php endif; ?>
<div style="text-align: center">
<?=Lang::account('email').Lang::main('colon'); ?><input type="text" name="email" value="" id="email-generic" style="width: 12em" />
<div class="pad2"></div>

View file

@ -3,6 +3,7 @@
use \Aowow\Lang;
?>
<div class="pad3"></div>
<script type="text/javascript">

View file

@ -2,7 +2,10 @@
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<div class="pad3"></div>
<script type="text/javascript">
@ -53,13 +56,17 @@
<?php if ($hasRecovery): ?>
<br />
<div style="position: absolute; right: 5px; bottom: 5px; white-space: nowrap;"><?=Lang::account('forgot').Lang::main('colon'); ?><a href="?account=forgot-username"><?=Lang::account('forgotUser'); ?></a> | <a href="?account=forgot-password"><?=Lang::account('forgotPass'); ?></a> | <a href="?account=resend"><?=Lang::account('inputbox', 'head', 'resendMail'); ?></a></div>
<?php endif; ?>
</div>
</form>
<div class="pad3"></div>
<?php if ($this->cfg('ACC_ALLOW_REGISTER')): ?>
<div style="text-align: center; line-height: 1.5em; font-size: 125%"><?=Lang::account('accCreate'); ?></div>
<?php endif; ?>
<script type="text/javascript">$WH.ge('username-generic').focus()</script>

View file

@ -3,6 +3,7 @@
use \Aowow\Lang;
?>
<div class="pad3"></div>
<script type="text/javascript">

View file

@ -1,16 +1,17 @@
<?php
namespace Aowow\Template;
use \Aowow\Lang;
?>
<div class="pad3"></div>
<div class="inputbox">
<h1><?=$head ?? ''; ?></h1>
<div id="inputbox-error"><?=$error ?? ''; ?></div>
<?php if ($message ?? ''): ?>
<div style="text-align: center; font-size: 110%"><?=$message; ?></div>
<?php else: ?>
<div class="clear"></div>
<?php endif; ?>
</div>

View file

@ -1,24 +1,30 @@
<?php
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<?php
if (($this->lvTabs && count($this->lvTabs)) || $this->charactersLvData || $this->profilesLvData || $this->contribute):
if ($this->lvTabs?->isTabbed()):
?>
<div class="clear"></div>
<div id="tabs-generic"></div>
<?php endif; ?>
<div id="lv-generic" class="listview">
<?php
foreach ($this->lvTabs?->getDataContainer() ?? [] as $container):
echo ' '.$container.PHP_EOL;
endforeach;
?>
</div>
<script type="text/javascript">//<![CDATA[
<?php
// seems like WH keeps their modules separated, as fi_gemScores should be with the other fi_ items but are here instead and originally the dbtype globals used by the listviews were also here)
// May 2025: WH no longer calculates gems into item scores. Dude .. why?
@ -47,10 +53,12 @@ if (($this->lvTabs && count($this->lvTabs)) || $this->charactersLvData || $this-
endif;
if ($flushTabs = $this->lvTabs?->getFlush()):
echo " ".$flushTabs.PHP_EOL;
echo ' '.$flushTabs.PHP_EOL;
endif;
?>
//]]></script>
<?php
endif;
?>

View file

@ -3,36 +3,44 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
if (['header' => $header, 'subject' => $subject, 'text' => $text, 'attachments' => $attachments] = $this->mail):
$offset ??= 0; // in case we have multiple icons on the page (prominently quest-rewards)
echo ' <h3>'.Lang::mail('mailDelivery', $header)."</h3>\n";
echo ' <h3>'.Lang::mail('mailDelivery', $header).'</h3>'.PHP_EOL;
if ($subject):
echo ' <div class="book"><div class="page">'.$subject."</div></div>\n";
echo ' <div class="book"><div class="page">'.$subject.'</div></div>'.PHP_EOL;
endif;
if ($text):
echo ' <div class="book" style="float:left; margin-bottom:26px;"><div class="page">'.$text."</div></div>\n";
echo ' <div class="book" style="float:left; margin-bottom:26px;"><div class="page">'.$text.'</div></div>'.PHP_EOL;
endif;
if ($attachments):
?>
<table class="icontab icontab-box" style="padding-left:10px;">
<?php
foreach ($attachments as $icon):
echo $icon->renderContainer(20, $offset, true);
endforeach;
?>
</table>
<script type="text/javascript">//<![CDATA[
<?php
foreach ($attachments as $icon):
echo $icon->renderJS(20);
endforeach;
?>
//]]></script>
<?php
endif;
endif;

View file

@ -3,63 +3,86 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
if ([$mapper, $mapperData, $som, $foundIn] = $this->map):
if ($foundIn):
echo ' <div>'.$foundIn[0].' <span id="mapper-zone-generic">';
echo Lang::concat($mapperData, true, function ($areaData, $areaId) use ($foundIn) {
return '<a href="javascript:;" onclick="myMapper.update({zone: '.$areaId.'}); g_setSelectedLink(this, \'mapper\'); return false" onmousedown="return false">'.$foundIn[$areaId].'</a>&nbsp;('.array_sum(array_column($areaData, 'count')).')';
});
echo ".</span></div>\n";
echo '.</span></div>'.PHP_EOL;
else:
echo " <div id=\"mapper-zone-generic\"></div>\n";
echo ' <div id="mapper-zone-generic"></div>'.PHP_EOL;
endif;
if (isset($mapper['zone']) && $mapper['zone'] < 0):
?>
<div id="mapper" style="width: 778px; margin: 0 auto">
<?php
if ($som):
?>
<div id="som-generic"></div>
<?php
endif;
?>
<div id="mapper-generic"></div>
<div class="pad clear"></div>
</div>
<?php
elseif ($mapper):
if ($som):
?>
<div class="pad"></div>
<div id="som-generic"></div>
<?php
endif;
?>
<div id="mapper-generic"></div>
<div style="clear: left"></div>
<?php
else:
?>
<?=Lang::zone('noMap');?>
<div class="pad"></div>
<?php
endif;
?>
<script type="text/javascript">//<![CDATA[
<?php if (isset($mapper['zone']) && $this->gPageInfo): ?>
$.extend(g_pageInfo, {id: <?=$mapper['zone'];?>});
<?php elseif (isset($mapper['zone'])): ?>
var g_pageInfo = {id: <?=$mapper['zone'];?>};
<?php elseif ($mapperData): ?>
var g_mapperData = <?=$this->json($mapperData);?>;
<?php endif; ?>
var myMapper = new Mapper(<?=$this->json($mapper);?>);
<?php if ($som): ?>
new ShowOnMap(<?=$this->json($som);?>);
<?php endif;
if ($foundIn): ?>
$WH.gE($WH.ge('mapper-zone-generic'), 'a')[0].onclick();
<?php endif;
if ($this->user::isInGroup(U_GROUP_MODERATOR)): ?>
@ -78,6 +101,9 @@ if ([$mapper, $mapperData, $som, $foundIn] = $this->map):
},
});
}
<?php endif; ?>
//]]></script>
<?php endif; ?>

View file

@ -5,4 +5,5 @@
<?=$markup;?>
//]]></script>
<div class="pad2"></div>
<?php endif; ?>

View file

@ -1,40 +1,44 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<script type="text/javascript">//<![CDATA[
<?php
if ($this->contribute & CONTRIBUTE_CO):
echo " var lv_comments = ".$this->community['co'].";\n";
echo ' var lv_comments = '.$this->community['co'].';'.PHP_EOL;
endif;
if ($this->contribute & CONTRIBUTE_SS):
echo " var lv_screenshots = ".$this->community['ss'].";\n";
echo ' var lv_screenshots = '.$this->community['ss'].';'.PHP_EOL;
endif;
if ($this->contribute & CONTRIBUTE_VI):
echo " var lv_videos = ".$this->community['vi'].";\n";
echo ' var lv_videos = '.$this->community['vi'].';'.PHP_EOL;
endif;
if ($this->gPageInfo):
echo " var g_pageInfo = ".$this->json('gPageInfo', varRef: true).";\n";
echo ' var g_pageInfo = '.$this->json('gPageInfo', varRef: true).';'.PHP_EOL;
// set by ItemBaseEndpoint
if ($this->user::isLoggedIn() && !empty($this->redButtons[BUTTON_EQUIP])):
echo " \$(document).ready(function() { pr_addEquipButton('equip-pinned-button', ".$this->typeId."); });\n";
echo " \$(document).ready(function() { pr_addEquipButton('equip-pinned-button', ".$this->typeId."); });".PHP_EOL;
endif;
endif;
if ($this->pageTemplate):
if ($this->locale->value && $this->pageTemplate['pageName'] != 'home'):
echo " Locale.set(".$this->locale->value.");\n";
echo ' Locale.set('.$this->locale->value.');'.PHP_EOL;
endif;
echo " PageTemplate.set(".$this->json('pageTemplate', varRef: true).");\n";
echo ' PageTemplate.set('.$this->json('pageTemplate', varRef: true).');'.PHP_EOL;
endif;
echo " PageTemplate.init();\n";
echo ' PageTemplate.init();'.PHP_EOL;
if (isset($fiQuery) && count($fiMenuItem) > 1 && array_slice($fiMenuItem, 0, 2) == [1, 5]):
echo " \$(document).ready(function(){ Menu.modifyUrl(Menu.findItem(mn_path, ".$this->json($fiMenuItem)."), { filter: '".$this->escJS($fiQuery)."'}, { onAppendCollision: fi_mergeFilterParams }) });\n";
echo " \$(document).ready(function(){ Menu.modifyUrl(Menu.findItem(mn_path, ".$this->json($fiMenuItem)."), { filter: '".$this->escJS($fiQuery)."'}, { onAppendCollision: fi_mergeFilterParams }) });".PHP_EOL;
elseif (isset($fiQuery)):
echo " Menu.modifyUrl(Menu.findItem(mn_database, ".$this->json($fiMenuItem)."), { filter: '+=".$this->escJS($fiQuery)."' }, { onAppendCollision: fi_mergeFilterParams, onAppendEmpty: fi_setFilterParams, menuUrl: Menu.getItemUrl(Menu.findItem(mn_database, ".$this->json($fiMenuItem).")) });\n";
echo " Menu.modifyUrl(Menu.findItem(mn_database, ".$this->json($fiMenuItem)."), { filter: '+=".$this->escJS($fiQuery)."' }, { onAppendCollision: fi_mergeFilterParams, onAppendEmpty: fi_setFilterParams, menuUrl: Menu.getItemUrl(Menu.findItem(mn_database, ".$this->json($fiMenuItem).")) });".PHP_EOL;
endif;
?>
//]]></script>

View file

@ -9,6 +9,7 @@
<?php
if ($enhanced):
?>
<style type="text/css">
.iconlist-col { float: left; width: 31%; margin-right: 2%; }
.iconlist { border-collapse: collapse; margin-top: 4px; }
@ -165,14 +166,17 @@ function iconlist_expandall(tableid,doexpand) {
}
}
//]]></script>
<?php
endif;
?>
<table class="iconlist" id="reagent-list-generic">
<?php
if ($enhanced):
?>
<tr>
<th></th>
<th align="left">
@ -180,6 +184,7 @@ if ($enhanced):
<input type="button" style="font-size: 11px; margin-right: 0.5em" onclick="iconlist_expandall('reagent-list-generic', false);" value="<?=Lang::spell('_collapseAll'); ?>">
</th>
</tr>
<?php
endif;
@ -198,17 +203,20 @@ foreach ($reagents as $k => ['path' => $path, 'level' => $level, 'final' => $fin
echo '<div class="iconlist-tree disclosure-off" onclick="iconlist_showhide(this);" style="padding-left: 0; cursor: pointer; width: 15px; float: left" id="spn.reagent-list-generic.'.$path.'">&nbsp;</div>';
endif;
echo '<span class="'.$icon->quality.'">'.($icon->href ? '<a href="?'.$typeStr.'='.$icon->typeId.'">'.$icon->text.'</a>' : $icon->text).'</span>'.($icon->num > 1 ? '&nbsp;('.$icon->num.')' : '')."</td></tr>\n";
echo '<span class="'.$icon->quality.'">'.($icon->href ? '<a href="?'.$typeStr.'='.$icon->typeId.'">'.$icon->text.'</a>' : $icon->text).'</span>'.($icon->num > 1 ? '&nbsp;('.$icon->num.')' : '').'</td></tr>'.PHP_EOL;
endforeach;
?>
</table>
<script type="text/javascript">//<![CDATA[
<?php
foreach ($reagents as ['icon' => $icon]):
echo $icon->renderJS(4);
endforeach;
?>
//]]></script>
<div class="clear"></div>

View file

@ -2,6 +2,8 @@
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<?php

View file

@ -4,35 +4,41 @@
$offset ??= 0; // in case we have multiple icons on the page (prominently quest-rewards)
if ($rewTitle):
echo $rewTitle.' '.($extra ?? '')."\n";
echo $rewTitle.' '.($extra ?? '').PHP_EOL;
endif;
if ($rewards):
?>
<div class="pad"></div>
<table class="icontab icontab-box">
<tr>
<?php
$last = array_key_last($rewards);
foreach ($rewards as $k => $icon):
echo $icon->renderContainer(24, $offset);
echo $k % 2 && $k != $last ? str_repeat(' ', 24) . "</tr><tr>" : '';
echo $k % 2 && $k != $last ? str_repeat(' ', 24) . '</tr><tr>' : '';
endforeach;
if (count($rewards) % 2):
echo '<th style="display: none"></th><td style="display: none"></td>';
endif;
?>
</tr>
</table>
<script type="text/javascript">//<![CDATA[
<?php
foreach ($rewards as $icon):
echo $icon->renderJS(20);
endforeach;
?>
//]]></script>
<?php
endif;
?>

View file

@ -2,16 +2,20 @@
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<tr><th id="infobox-series"><?=$listTitle ?: Lang::achievement('series'); ?></th></tr>
<tr><td>
<div class="infobox-spacer"></div>
<table class="series">
<?php
foreach ($list as $idx => $itr):
echo $this->renderSeriesItem($idx, $itr, 12);
endforeach;
?>
</table>
</td></tr>

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
[$icName, $icStack, $hasBuff] = $this->tooltip;
?>
<div id="ic<?=$this->typeId; ?>" style="float: left"></div>
<div id="tt<?=$this->typeId; ?>" class="wowhead-tooltip" style="float: left; padding-top: 1px"></div>
<div style="clear: left"></div>
@ -14,8 +17,10 @@
<?php
if ($hasBuff):
?>
<h3><?=Lang::spell('_aura'); ?></h3>
<div id="btt<?=$this->typeId; ?>" class="wowhead-tooltip"></div>
<?php
endif;
@ -31,19 +36,27 @@ endif;
$WH.ge('ic<?=$this->typeId; ?>').appendChild(Icon.create('<?=$icName; ?>', 2, null, 0, <?=$icStack; ?>));
var
tt = $WH.ge('tt<?=$this->typeId; ?>'),
<?php if ($hasBuff): ?>
btt = $WH.ge('btt<?=$this->typeId; ?>'),
<?php endif; ?>
sl = $WH.ge('sl<?=$this->typeId; ?>'),
ks = $WH.ge('ks<?=$this->typeId; ?>');
tt.innerHTML = '<table><tr><td>' + ($WH.g_enhanceTooltip.bind(tt))(<?=$this->typeId; ?>, true, true, sl, null, [<?=$this->typeId; ?>], ks) + '</td><th style="background-position: top right"></th></tr><tr><th style="background-position: bottom left"></th><th style="background-position: bottom right"></th></tr></table>';
<?php if ($hasBuff): ?>
btt.innerHTML = '<table><tr><td>' + ($WH.g_enhanceTooltip.bind(btt))(<?=$this->typeId; ?>, true, true, sl, tt, [<?=$this->typeId; ?>], ks) + '</td><th style="background-position: top right"></th></tr><tr><th style="background-position: bottom left"></th><th style="background-position: bottom right"></th></tr></table>';
<?php endif; ?>
$WH.Tooltip.fixSafe(tt, 1, 1);
<?php if ($hasBuff): ?>
$WH.Tooltip.fixSafe(btt, 1, 1);
<?php endif; ?>
//]]></script>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1 class="heading-size-1">Please Confirm Account Deletion</h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1 class="heading-size-1">Veuillez confirmer la suppression du compte</h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1 class="heading-size-1">Bitte Kontolöschung bestätigen</h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1 class="heading-size-1">请确认删除账户</h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1 class="heading-size-1">Confirmar la eliminación de la cuenta</h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1 class="heading-size-1">Подтвердите удаление аккаунта</h1>

View file

@ -1,5 +1,7 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div id="tab-add-your-comment" style="display: none">
@ -10,29 +12,40 @@
<li><div>Please post questions on our <a href="?forums">forums</a> for quicker reply.</div></li>
<li><div>You might want to proof-read your comments before posting them.</div></li>
</ul>
<?php
echo $coError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$coError."</div>\n" : '';
if ($coError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$coError.'</div>'.PHP_EOL;
endif;
if ($this->user::canComment()):
?>
<form name="addcomment" action="?comment=add&amp;type=<?=$this->type.'&amp;typeid='.$this->typeId; ?>" method="post" onsubmit="return co_validateForm(this)">
<div id="funcbox-generic"></div>
<script type="text/javascript">Listview.funcBox.coEditAppend($('#funcbox-generic'), {body: ''}, 1)</script>
<div class="pad"></div>
<input type="submit" value="Submit"></input>
<?php
else:
?>
<form action="/" method="post">
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>You are not logged in. Please <a href="?account=signin">log in</a> or <a href="?account=signup">register an account</a> to add your comment.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-submit-a-screenshot" style="display: none">
@ -42,39 +55,55 @@
<li><div>The higher the quality the better!</div></li>
<li><div>Be sure to read the <a href="?help=screenshots-tips-tricks" target="_blank">tips &amp; tricks</a> if you haven't before.</div></li>
</ul>
<?php
echo $ssError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$ssError."</div>\n" : '';
if ($ssError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$ssError.'</div>'.PHP_EOL;
endif;
if ($this->user::canUploadScreenshot()):
?>
<form action="?screenshot=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
<input type="file" name="screenshotfile" style="width: 35%"/><br />
<div class="pad2"></div>
<input type="submit" value="Submit" />
<div class="pad3"></div>
<small class="q0">Note: Your Screenshot will need to be approved before appearing on the site.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="file" name="screenshotfile" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>You are not signed in. Please <a href="?account=signin">sign in</a> to submit a screenshot.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-suggest-a-video" style="display: none">
Simply type the URL of the video in the form below.
<?php
echo $viError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$viError."</div>\n" : '';
if ($viError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$viError.'</div>'.PHP_EOL;
endif;
if ($this->user::canSuggestVideo()):
?>
<div class="pad2"></div>
<form action="?video=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
<input type="text" name="videourl" style="width: 35%" /> <small>Supported: YouTube only</small>
@ -82,18 +111,24 @@
<input type="submit" value="Submit" />
<div class="pad3"></div>
<small class="q0">Note: Your video will need to be approved before appearing on the site.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="text" name="videourl" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>You are not signed in. Please <a href="?account=signin">sign in</a> to submit a video.</small>
<?php
endif;
?>
</form>
</div>

View file

@ -1,5 +1,7 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div id="tab-add-your-comment" style="display: none">
@ -10,29 +12,40 @@
<li><div>Posez vos questions sur le <a href="?forums">forum</a> afin d'avoir une réponse plus rapide.</div></li>
<li><div>Il serait avisé de corriger vos fautes avant de soumettre vos commentaires.</div></li>
</ul>
<?php
echo $coError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$coError."</div>\n" : '';
if ($coError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$coError.'</div>'.PHP_EOL;
endif;
if ($this->user::canComment()):
?>
<form name="addcomment" action="?comment=add&amp;type=<?=$this->type.'&amp;typeid='.$this->typeId; ?>" method="post" onsubmit="return co_validateForm(this)">
<div id="funcbox-generic"></div>
<script type="text/javascript">Listview.funcBox.coEditAppend($('#funcbox-generic'), {body: ''}, 1)</script>
<div class="pad"></div>
<input type="submit" value="Soumettre"></input>
<?php
else:
?>
<form action="/" method="post">
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Vous n'êtes pas connecté(e). Veuillez vous <a href="?account=signin">connecter</a> ou vous <a href="?account=signup">inscrire</a> pour ajouter votre commentaire.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-submit-a-screenshot" style="display: none">
@ -42,39 +55,55 @@
<li><div>Plus la qualité est haute, mieux c'est !</div></li>
<li><div>Assurez-vous de lire les <a href="?help=screenshots-tips-tricks" target="_blank">trucs et astuces</a> si ce n'est pas déjà fait.</div></li>
</ul>
<?php
echo $ssError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$ssError."</div>\n" : '';
if ($ssError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$ssError.'</div>'.PHP_EOL;
endif;
if ($this->user::canUploadScreenshot()):
?>
<form action="?screenshot=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
<input type="file" name="screenshotfile" style="width: 35%"/><br />
<div class="pad2"></div>
<input type="submit" value="Soumettre" />
<div class="pad3"></div>
<small class="q0">Note: Votre capture d'écran devra être approuvé avant d'apparaitre sur le site.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="file" name="screenshotfile" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Vous n'êtes pas connecté(e). Veuillez vous <a href="?account=signin">connecter</a> pour envoyer une capture d'écran.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-suggest-a-video" style="display: none">
Entrez simplement l'URL du vidéo dans le formulaire ci-dessous.
<?php
echo $viError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$viError."</div>\n" : '';
if ($viError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$viError.'</div>'.PHP_EOL;
endif;
if ($this->user::canSuggestVideo()):
?>
<div class="pad2"></div>
<form action="?video=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
<input type="text" name="videourl" style="width: 35%" /> <small>Supporté : Youtube seulement</small>
@ -82,18 +111,24 @@
<input type="submit" value="Soumettre" />
<div class="pad3"></div>
<small class="q0">Note: Votre vidéo devra être approuvé avant d'apparaitre sur le site.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="text" name="videourl" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Vous n'êtes pas connecté(e). Veuillez vous <a href="?account=signin">connecter</a> pour envoyer une vidéo.</small>
<?php
endif;
?>
</form>
</div>

View file

@ -1,5 +1,7 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div id="tab-add-your-comment" style="display: none">
@ -10,29 +12,40 @@
<li><div>Es ist ratsam, den Kommentar vor dem Einsenden noch einmal auf Richtigkeit zu überprüfen.</div></li>
<li><div>Stellt Eure Fragen bitte in unseren <a href="?forums">Foren</a>, wenn Ihr eine schnellere Antwort wünscht.</div></li>
</ul>
<?php
echo $coError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$coError."</div>\n" : '';
if ($coError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$coError.'</div>'.PHP_EOL;
endif;
if ($this->user::canComment()):
?>
<form name="addcomment" action="?comment=add&amp;type=<?=$this->type.'&amp;typeid='.$this->typeId; ?>" method="post" onsubmit="return co_validateForm(this)">
<div id="funcbox-generic"></div>
<script type="text/javascript">Listview.funcBox.coEditAppend($('#funcbox-generic'), {body: ''}, 1)</script>
<div class="pad"></div>
<input type="submit" value="Absenden"></input>
<?php
else:
?>
<form action="/" method="post">
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Ihr seid nicht angemeldet. Bitte <a href="?account=signin">meldet Euch an</a>, oder <a href="?account=signup">registriert Euch</a>, um einen Kommentar einzusenden.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-submit-a-screenshot" style="display: none">
@ -42,39 +55,55 @@
<li><div>Je höher die Qualität, desto besser!</div></li>
<li><div>Lest Euch unbedingt die <a href="?help=screenshots-tips-tricks" target="_blank">Tipps &amp; Tricks</a> durch, wenn nicht bereits geschehen.</div></li>
</ul>
<?php
echo $ssError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$ssError."</div>\n" : '';
if ($ssError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$ssError.'</div>'.PHP_EOL;
endif;
if ($this->user::canUploadScreenshot()):
?>
<form action="?screenshot=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
<input type="file" name="screenshotfile" style="width: 35%"/><br />
<div class="pad2"></div>
<input type="submit" value="Senden" />
<div class="pad3"></div>
<small class="q0">Hinweis: Euer Screenshot muss zunächst zugelassen werden, bevor er auf der Seite erscheint.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="file" name="screenshotfile" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Ihr seid nicht angemeldet. Bitte <a href="?account=signin">meldet Euch an</a>, um einen Screenshot einzusenden.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-suggest-a-video" style="display: none">
Gebt einfach die URL des Videos im folgenden Formular ein.
<?php
echo $viError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$viError."</div>\n" : '';
if ($viError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$viError.'</div>'.PHP_EOL;
endif;
if ($this->user::canSuggestVideo()):
?>
<div class="pad2"></div>
<form action="?video=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
<input type="text" name="videourl" style="width: 35%" /> <small>Unterstützt: nur YouTube</small>
@ -82,18 +111,24 @@
<input type="submit" value="Senden" />
<div class="pad3"></div>
<small class="q0">Hinweis: Euer Video muss zunächst zugelassen werden, bevor es auf der Seite erscheint.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="text" name="videourl" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Ihr seid nicht angemeldet. Bitte <a href="?account=signin">meldet Euch an</a>, um ein Video vorzuschlagen.</small>
<?php
endif;
?>
</form>
</div>

View file

@ -1,5 +1,7 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div id="tab-add-your-comment" style="display: none">
@ -10,29 +12,40 @@
<li><div>请发表你的疑问在我们的<a href="?forums">论坛</a> 以获得更快的答复。</div></li>
<li><div>你在发表前最好先预览下你的评论。</div></li>
</ul>
<?php
echo $coError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$coError."</div>\n" : '';
if ($coError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$coError.'</div>'.PHP_EOL;
endif;
if ($this->user::canComment()):
?>
<form name="addcomment" action="?comment=add&amp;type=<?=$this->type.'&amp;typeid='.$this->typeId; ?>" method="post" onsubmit="return co_validateForm(this)">
<div id="funcbox-generic"></div>
<script type="text/javascript">Listview.funcBox.coEditAppend($('#funcbox-generic'), {body: ''}, 1)</script>
<div class="pad"></div>
<input type="submit" value="提交"></input>
<?php
else:
?>
<form action="/" method="post">
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>你尚未登录,请先<a href="?account=signin">登录</a><a href="?account=signup">注册一个账号</a> 以发表你的评论。</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-submit-a-screenshot" style="display: none">
@ -42,39 +55,54 @@
<li><div>越高的质量越好!</div></li>
<li><div>请阅读我们的<a href="?help=screenshots-tips-tricks" target="_blank">提示和技巧</a>假如你还没看过的话。</div></li>
</ul>
<?php
echo $ssError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$ssError."</div>\n" : '';
if ($ssError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$ssError.'</div>'.PHP_EOL;
endif;
if ($this->user::canUploadScreenshot()):
?>
<form action="?screenshot=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
<input type="file" name="screenshotfile" style="width: 35%"/><br />
<div class="pad2"></div>
<input type="submit" value="提交" />
<div class="pad3"></div>
<small class="q0">注意:你的截图将在审查后才会出现在站点上。</small>
<?php
else:
?>
<form action="/" method="post">
<input type="file" name="screenshotfile" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>你尚未登录,请先<a href="?account=signin">登录</a>以提交截图。</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-suggest-a-video" style="display: none">
将视频URL输入下列表格即可。
<?php
echo $viError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$viError."</div>\n" : '';
if ($viError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$viError.'</div>'.PHP_EOL;
endif;
if ($this->user::canSuggestVideo()):
?>
<div class="pad2"></div>
<form action="?video=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
<input type="text" name="videourl" style="width: 35%" /> <small>支持:仅限 YouTube</small>
@ -82,18 +110,24 @@
<input type="submit" value="提交" />
<div class="pad3"></div>
<small class="q0">说明:您的视频需通过审核才能在站点上显示。</small>
<?php
else:
?>
<form action="/" method="post">
<input type="text" name="videourl" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>你尚未登录,请先<a href="?account=signin">登录</a>以提交视频。</small>
<?php
endif;
?>
</form>
</div>

View file

@ -1,5 +1,7 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div id="tab-add-your-comment" style="display: none">
@ -10,29 +12,40 @@
<li><div>Por favor, pon tus preguntas en nuestro <a href="?forums">foro</a> para obtener una respuesta más rápida.</div></li>
<li><div>Deberías corregir tus comentarios antes de enviarlos.</div></li>
</ul>
<?php
echo $coError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$coError."</div>\n" : '';
if ($coError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$coError.'</div>'.PHP_EOL;
endif;
if ($this->user::canComment()):
?>
<form name="addcomment" action="?comment=add&amp;type=<?=$this->type.'&amp;typeid='.$this->typeId; ?>" method="post" onsubmit="return co_validateForm(this)">
<div id="funcbox-generic"></div>
<script type="text/javascript">Listview.funcBox.coEditAppend($('#funcbox-generic'), {body: ''}, 1)</script>
<div class="pad"></div>
<input type="submit" value="Enviar"></input>
<?php
else:
?>
<form action="/" method="post">
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>No has iniciado sesión. Por favor <a href="?account=signin">entra a tu cuenta</a> o <a href="?account=signup">registra una cuenta</a> para añadir tu comentario.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-submit-a-screenshot" style="display: none">
@ -42,39 +55,55 @@
<li><div>¡Mientras más calidad mejor!</div></li>
<li><div>Asegurate de leer las <a href="?help=screenshots-tips-tricks" target="_blank">sugerencias y trucos</a> si no lo has hecho antes.</div></li>
</ul>
<?php
echo $ssError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$ssError."</div>\n" : '';
if ($ssError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$ssError.'</div>'.PHP_EOL;
endif;
if ($this->user::canUploadScreenshot()):
?>
<form action="?screenshot=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
<input type="file" name="screenshotfile" style="width: 35%"/><br />
<div class="pad2"></div>
<input type="submit" value="Enviar" />
<div class="pad3"></div>
<small class="q0">Nota: Su captura de imagen deberá ser aprobado antes de aparecer en el sitio.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="file" name="screenshotfile" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>No has iniciado sesión. <a href="?account=signin">Inicia sesión</a> para enviar una captura de pantalla.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-suggest-a-video" style="display: none">
Símplemente, escribe la URL del vídeo en el formulario.
<?php
echo $viError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$viError."</div>\n" : '';
if ($viError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$viError.'</div>'.PHP_EOL;
endif;
if ($this->user::canSuggestVideo()):
?>
<div class="pad2"></div>
<form action="?video=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
<input type="text" name="videourl" style="width: 35%" /> <small>Soportado: Sólo YouTube</small>
@ -82,18 +111,24 @@
<input type="submit" value="Enviar" />
<div class="pad3"></div>
<small class="q0">Nota: Tu vídeo deberá ser aprobado antes de aparecer en el sitio.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="text" name="videourl" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>No has iniciado sesión. <a href="?account=signin">Inicia sesión</a> para enviar un video.</small>
<?php
endif;
?>
</form>
</div>

View file

@ -1,5 +1,7 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div id="tab-add-your-comment" style="display: none">
@ -10,29 +12,40 @@
<li><div>Задавайте вопросы на наших <a href="?forums">форумах</a>, чтобы получить гарантированный ответ.</div></li>
<li><div>У вас может возникнуть желание проверить написание своего комментария перед тем, как поместить его на сайт.</div></li>
</ul>
<?php
echo $coError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$coError."</div>\n" : '';
if ($coError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$coError.'</div>'.PHP_EOL;
endif;
if ($this->user::canComment()):
?>
<form name="addcomment" action="?comment=add&amp;type=<?=$this->type.'&amp;typeid='.$this->typeId; ?>" method="post" onsubmit="return co_validateForm(this)">
<div id="funcbox-generic"></div>
<script type="text/javascript">Listview.funcBox.coEditAppend($('#funcbox-generic'), {body: ''}, 1)</script>
<div class="pad"></div>
<input type="submit" value="Отправить"></input>
<?php
else:
?>
<form action="/" method="post">
<div class="comment-edit-body"><textarea class="comment-editbox" rows="10" cols="40" name="commentbody" disabled="disabled"></textarea></div>
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Вы не вошли на сайт. Пожалуйста <a href="?account=signin">войдите</a> или <a href="?account=signup">зарегистрируйтесь</a>, чтобы добавлять комментарии.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-submit-a-screenshot" style="display: none">
@ -42,39 +55,55 @@
<li><div>Чем выше качество, тем лучше!</div></li>
<li><div>Если вы ещё не читали, то настоятельно рекомендуем вам прочесть <a href="?help=screenshots-tips-tricks" target="_blank">советы и особенности</a> получения изображений при помощи снимков экрана.</div></li>
</ul>
<?php
echo $ssError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$ssError."</div>\n" : '';
if ($ssError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$ssError.'</div>'.PHP_EOL;
endif;
if ($this->user::canUploadScreenshot()):
?>
<form action="?screenshot=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return ss_validateForm(this)">
<input type="file" name="screenshotfile" style="width: 35%"/><br />
<div class="pad2"></div>
<input type="submit" value="Отправить" />
<div class="pad3"></div>
<small class="q0">Примечание: перед тем как появиться на сайте, ваше Скриншот должны быть утверждены.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="file" name="screenshotfile" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Вы не вошли на сайт. Пожалуйста <a href="?account=signin">войдите</a>, чтобы отправить скриншот.</small>
<?php
endif;
?>
</form>
</div>
<div id="tab-suggest-a-video" style="display: none">
Введите URL видео на YouTube в форму ниже.
<?php
echo $viError ? " <div class=\"pad\"></div>\n <div class=\"msg-failure\">".$viError."</div>\n" : '';
if ($viError):
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' <div class="msg-failure">'.$viError.'</div>'.PHP_EOL;
endif;
if ($this->user::canSuggestVideo()):
?>
<div class="pad2"></div>
<form action="?video=add&<?=$this->type.'.'.$this->typeId; ?>" method="post" enctype="multipart/form-data" onsubmit="return vi_validateForm(this)">
<input type="text" name="videourl" style="width: 35%" /> <small>Поддерживается: только YouTube</small>
@ -82,18 +111,24 @@
<input type="submit" value="Отправить" />
<div class="pad3"></div>
<small class="q0">Примечание: перед тем как появиться на сайте, ваше видео должно быть одобрено.</small>
<?php
else:
?>
<form action="/" method="post">
<input type="text" name="videourl" disabled="disabled" /><br />
<?php
endif;
if (!$this->user::isLoggedIn()):
?>
<small>Вы не вошли на сайт. Пожалуйста <a href="?account=signin">войдите</a>, чтобы отправить видео.</small>
<?php
endif;
?>
</form>
</div>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1 class="heading-size-1">Delete Account: <?=$this->username;?></h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1>Supprimer le compte : <?=$this->username;?></h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1>Konto löschen: <?=$this->username;?></h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1>删除账户:<?=$this->username;?></h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1>Eliminar Cuenta: <?=$this->username;?></h1>

View file

@ -1,3 +1,9 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<div class="account-delete-box text">
<form action="<?=$this->deleteFormTarget;?>" method="POST">
<h1>Удалить учетную запись: <?=$this->username;?></h1>

View file

@ -1,4 +1,8 @@
<?php namespace Aowow\Template; ?>
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<h2><img src="<?=$this->gStaticUrl; ?>/images/icons/bubble-big.gif" width="32" height="29" alt="" style="vertical-align:middle;margin-right:8px">Reminder</h2>
Your screenshot will <b class="q10">not</b> be approved if it doesn't correspond to the following guidelines.

View file

@ -1,4 +1,8 @@
<?php namespace Aowow\Template; ?>
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<h2><img src="<?=$this->gStaticUrl; ?>/images/icons/bubble-big.gif" width="32" height="29" alt="" style="vertical-align:middle;margin-right:8px">Rappel</h2>
Votre capture d'écran <b class="q10">ne</b> sera pas approuvée si elle ne respecte pas les directives suivantes.

View file

@ -1,4 +1,8 @@
<?php namespace Aowow\Template; ?>
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<h2><img src="<?=$this->gStaticUrl; ?>/images/icons/bubble-big.gif" width="32" height="29" alt="" style="vertical-align:middle;margin-right:8px">Hinweis</h2>
Euer Screenshot wird <b class="q10">nicht</b> zugelassen werden, wenn er nicht unseren Richtlinien entspricht.

View file

@ -1,4 +1,8 @@
<?php namespace Aowow\Template; ?>
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<h2><img src="<?=$this->gStaticUrl; ?>/images/icons/bubble-big.gif" width="32" height="29" alt="" style="vertical-align:middle;margin-right:8px">提醒</h2>
如果您的截图不符合以下指南,将<b class="q10">不会</b>被通过审核。

View file

@ -1,4 +1,8 @@
<?php namespace Aowow\Template; ?>
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<h2><img src="<?=$this->gStaticUrl; ?>/images/icons/bubble-big.gif" width="32" height="29" alt="" style="vertical-align:middle;margin-right:8px">Recordatorio</h2>
Su captura de pantalla <b class="q10">no</b> será aprobada si no cumple con las siguientes directrices.

View file

@ -1,4 +1,8 @@
<?php namespace Aowow\Template; ?>
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
?>
<h2><img src="<?=$this->gStaticUrl; ?>/images/icons/bubble-big.gif" width="32" height="29" alt="" style="vertical-align:middle;margin-right:8px">Напоминание</h2>
Ваш скриншот <b class="q10">не</b> будет одобрен, если он не соответствует следующим рекомендациям.

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -17,12 +20,14 @@
<div class="text">
<h1><?=Lang::account('settings');?></h1>
<?php
// Banned-Minibox
if ($this->bans):
foreach ($this->bans as $b):
[$end, $reason, $name] = $b;
?>
<div style="max-width:300px;" class="minibox minibox-left">
<h1 class="q10"><?=Lang::account('accBanned'); ?></h1>
<ul style="text-align:left">
@ -31,7 +36,9 @@ if ($this->bans):
<li><div><?='<b>'.Lang::account('reason').'</b>'.'<span class="msg-failure">'.($reason ?: Lang::account('noReason')).'</span>';?></div></li>
</ul>
</div>
<?php endforeach; ?>
</div>
<?php else: ?>
@ -51,6 +58,7 @@ if ($this->bans):
<?php if ([$type, $msg] = $this->generalMessage): ?>
<div class="box"><div class="msg-<?=($type ? 'success' : 'failure');?>"><?=$msg;?></div></div>
<?php endif; ?>
<div style="text-align: left">
@ -88,11 +96,13 @@ if ($this->bans):
<?php
if ($this->cfg('ACC_AUTH_MODE') == AUTH_MODE_SELF):
?>
<div id="tab-personal" style="display: none">
<h2 class="first" id="change-email-address"><?=Lang::account('email');?></h2>
<?php if ([$type, $msg] = $this->emailMessage): ?>
<div class="box"><div class="msg-<?=($type ? 'success' : 'failure');?>"><?=$msg;?></div></div>
<?php endif; ?>
<form action="?account=update-email" name="ce" method="post" id="change-email">
@ -108,12 +118,16 @@ if ($this->bans):
<?php if ([$type, $msg] = $this->usernameMessage): ?>
<div class="box"><div class="msg-<?=($type ? 'success' : 'failure');?>"><?=$msg;?></div></div>
<?php endif; ?>
<div><?=Lang::account('usernameNote', [$this->renameCD]);?></div>
<?php if ($this->activeCD): ?>
<div class="msg-failure pad3"><br /><?=Lang::account('activeCD', [$this->activeCD]);?></div>
<?php endif; ?>
<form action="?account=update-username" name="ce" method="post" id="change-username">
<table cellspacing="5" cellpadding="0" border="0">
<tr><td nowrap="nowrap"><?=Lang::account('curName');?></td><td><input disabled="disabled" name="current-username" style="width: 15em" value="<?=$this->curName;?>" readonly="readonly" /></td></tr>
@ -127,6 +141,7 @@ if ($this->bans):
<?php if ([$type, $msg] = $this->passwordMessage): ?>
<div class="box"><div class="msg-<?=($type ? 'success' : 'failure');?>"><?=$msg;?></div></div>
<?php endif; ?>
<form action="?account=update-password" name="cp" method="post" id="change-password">
@ -147,6 +162,7 @@ if ($this->bans):
</div>
<?php endif; ?>
<div id="tab-community" style="display: none">
<h2 class="first"><?=Lang::account('userPage');?></h2>
@ -154,7 +170,9 @@ if ($this->bans):
<?php if ([$type, $msg] = $this->communityMessage): ?>
<div class="box"><div class="msg-<?=($type ? 'success' : 'failure');?>"><?=$msg;?></div></div>
<?php endif; ?>
<form action="?account=update-community-settings" name="community-settings" method="post" onsubmit="return spd(this)/* && sfs(this) */">
<?=Lang::account('publicDescNote', [urlencode($this->user::$username)]);?>
@ -168,6 +186,7 @@ if ($this->bans):
<div class="pad"></div>
<input type="submit" value="<?=Lang::main('save');?>" name="do-community-settings-update" />
</div>
<?php
/* signature not used
<h2><?=Lang::account('forums');?></h2>
@ -186,12 +205,14 @@ if ($this->bans):
</div>
*/
?>
</form>
<h3 id="forum-avatar"><?=Lang::account('avatar');?></h3>
<?php if ([$type, $msg] = $this->avatarMessage): ?>
<div class="box"><div class="msg-<?=($type ? 'success' : 'failure');?>"><?=$msg;?></div></div>
<?php endif; ?>
<form action="?account=forum-avatar" name="fa" method="post" enctype="multipart/form-data" onsubmit="return fa_validateForm(this)">
@ -228,9 +249,12 @@ if ($this->bans):
</div>
</td></tr>
</table>
<?php else: ?>
<input type="radio" name="avatar" value="2" id="avaOpt2" onclick="faChange(2)" disabled="disabled" /> <label for="avaOpt2" class="q0"><?=Lang::account('custom'); ?></label>&nbsp;&nbsp;<span class="premium-feature-icon-small"></span><table id="avaSel2" style="display:none"></table>
<?php endif; ?>
<div class="clear"></div>
<script type="text/javascript">
@ -249,8 +273,10 @@ if ($this->bans):
<div id="tab-premium" style="display: none; min-height: 70px;">
<h3 class="first"><?=Lang::account('premiumStatus');?></h3>
<?php if (!$this->user::isPremium()): ?>
<ul><li><div><?=Lang::account('status').Lang::main('colon').'<b class="q10">'.Lang::account('inactive'); ?></b></div></li></ul>
<?php else: ?>
<ul><li><div><?=Lang::account('status').Lang::main('colon').'<b class="q2">'.Lang::account('active'); ?></b></div></li></ul>
<h2><?=Lang::account('manageAvatars');?></h2>
@ -263,6 +289,7 @@ if ($this->bans):
<?php if ([$type, $msg] = $this->premiumborderMessage): ?>
<div class="box"><div class="msg-<?=($type ? 'success' : 'failure');?>"><?=$msg;?></div></div>
<?php endif; ?>
<form action="?account=premium-border" method="POST">
<div style="width:500px; padding-left:25px;" class="pad2">
<div style="display:flex; justify-content: space-between;" id="ipb-container"></div>
@ -292,20 +319,26 @@ if ($this->bans):
});
</script>
</div>
<?php endif; ?>
</div>
</div>
<script type="text/javascript">
var _ = new Tabs({parent: $WH.ge('tabs-generic')});
_.add('<?=Lang::account('tabGeneral');?>', {id: 'general'});
<?php if ($this->cfg('ACC_AUTH_MODE') == AUTH_MODE_SELF): ?>
_.add('<?=Lang::account('tabPersonal');?>', {id: 'personal'});
<?php endif; ?>
_.add('<?=Lang::account('tabCommunity');?>', {id: 'community'});
_.add('<?=Lang::account('tabPremium');?>', {id: 'premium'});
_.flush();
</script>
<?php endif; ?>
<div class="clear"></div>

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -18,15 +21,17 @@
?>
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
<?=$this->description.PHP_EOL; ?>
<h3><?=Lang::achievement('criteria').($this->reqCrtQty ? ' &ndash; <small><b>'.Lang::achievement('reqNumCrt', [$this->reqCrtQty, count($this->criteria)]).'</b></small>' : ''); ?></h3>
<?php
$rows0 = $rows1 = '';
foreach ($this->criteria as $i => $icon):
@ -35,19 +40,25 @@ foreach ($this->criteria as $i => $icon):
endforeach;
if ($rows0):
echo " <div style=\"float: left; margin-right: 25px\"><table class=\"iconlist\">\n".$rows0." </table></div>\n";
echo ' <div style="float: left; margin-right: 25px"><table class="iconlist">'.PHP_EOL;
echo $rows0;
echo ' </table></div>'.PHP_EOL;
endif;
if ($rows1):
echo " <div style=\"float: left;\"><table class=\"iconlist\">\n".$rows1." </table></div>\n";
echo ' <div style="float: left;"><table class="iconlist">'.PHP_EOL;
echo $rows1;
echo ' </table></div>'.PHP_EOL;
endif;
?>
<script type="text/javascript">//<![CDATA[
<?php
foreach ($this->criteria as $crt):
echo $crt->renderJS(24);
endforeach;
?>
//]]></script>
<div style="clear: left"></div>
@ -55,28 +66,30 @@ endforeach;
<?php
if ([$rewItems, $rewTitle, $rewText] = $this->rewards):
if ($rewItems):
echo '<h3>'.Lang::main('rewards')."</h3>\n";
echo '<h3>'.Lang::main('rewards').'</h3>'.PHP_EOL;
$this->brick('rewards', ['rewards' => $rewItems, 'rewTitle' => null]);
endif;
if ($rewTitle):
echo '<h3>'.Lang::main('gains')."</h3>\n<ul>";
foreach ($rewTitle as $i):
echo ' <li><div>'.$i."</div></li>\n";
echo ' <li><div>'.$i.'</div></li>'.PHP_EOL;
endforeach;
echo "</ul>\n";
echo '</ul>'.PHP_EOL;
endif;
if (!$rewTitle && !$rewItems && $rewText):
echo '<h3>'.Lang::main('rewards')."</h3>\n<ul><li><div>".$rewText."</div></li></ul>\n";
echo '<h3>'.Lang::main('rewards').'</h3>'.PHP_EOL;
echo '<ul><li><div>'.$rewText.'</div></li></ul>'.PHP_EOL;
endif;
endif;
$this->brickIf($this->mail, 'mail');
if ($this->transfer):
echo " <div style=\"clear: left\"></div>";
echo " <div class=\"pad\"></div>\n ".$this->transfer."\n";
echo ' <div style="clear: left"></div>'.PHP_EOL;
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' '.$this->transfer.PHP_EOL;
endif;
?>

View file

@ -3,26 +3,32 @@
use \Aowow\Lang;
$this->brick('header');
$f = $this->filter->values; // shorthand
/** @var PageTemplate $this */
$this->brick('header');
$f = $this->filter->values; // shorthand
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [9]]);
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [9]]);
?>
<div id="fi" style="display: <?=$this->filter->query ? 'block' : 'none'; ?>;">
<form action="?filter=achievements<?=$this->subCat; ?>" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
</div>
<table>

View file

@ -1,6 +1,8 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
$this->brick('header');
?>
@ -12,10 +14,11 @@
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate');
$this->brick('pageTemplate');
?>
<div class="text">
<h1><?=$this->h1;?></h1>
@ -26,6 +29,7 @@ $this->brick('pageTemplate');
echo $this->extraHTML ?? '';
?>
</div>
</div><!-- main-contents -->
</div><!-- main -->

View file

@ -1,17 +1,21 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate');
$this->brick('pageTemplate');
?>
<div class="text">
<h1><?=$this->h1; ?></h1>
@ -114,18 +118,20 @@ $this->brick('pageTemplate');
return true;
}
<?php
if ($this->getAll):
echo " var ss_getAll = true;\n";
echo ' var ss_getAll = true;'.PHP_EOL;
endif;
if ($this->ssPages):
echo " var ssm_screenshotPages = ".$this->json($this->ssPages).";\n";
echo " ssm_UpdatePages();\n";
echo ' var ssm_screenshotPages = ".$this->json($this->ssPages).";'.PHP_EOL;
echo ' ssm_UpdatePages();'.PHP_EOL;
elseif ($this->ssData):
echo " var ssm_screenshotData = ".$this->json($this->ssData).";\n";
echo " ssm_UpdateList();\n";
echo ' var ssm_screenshotData = ".$this->json($this->ssData).";'.PHP_EOL;
echo ' ssm_UpdateList();'.PHP_EOL;
endif;
?>
ss_OnResize();
</script>
</div>

View file

@ -1,6 +1,8 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
$this->brick('header');
?>
@ -281,6 +283,7 @@
$this->brick('lvTabs');
?>
<div class="clear"></div>
</div><!-- main-contents -->
</div><!-- main -->

View file

@ -1,17 +1,21 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate');
$this->brick('pageTemplate');
?>
<div class="text">
<h1><?=$this->h1; ?></h1>
@ -114,18 +118,20 @@ $this->brick('pageTemplate');
return true;
}
<?php
if ($this->getAll):
echo " var vi_getAll = true;\n";
echo ' var vi_getAll = true;'.PHP_EOL;
endif;
if ($this->viPages):
echo " var vim_videoPages = ".$this->json($this->viPages).";\n";
echo " vim_UpdatePages();\n";
echo ' var vim_videoPages = ".$this->json($this->viPages).";'.PHP_EOL;
echo ' vim_UpdatePages();'.PHP_EOL;
elseif ($this->viData):
echo " var vim_videoData = ".$this->json($this->viData).";\n";
echo " vim_UpdateList();\n";
echo ' var vim_videoData = ".$this->json($this->viData).";'.PHP_EOL;
echo ' vim_UpdateList();'.PHP_EOL;
endif;
?>
vi_OnResize();
</script>
</div>

View file

@ -1,6 +1,8 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
$this->brick('header');
?>
@ -554,6 +556,7 @@ $this->brick('announcement');
$this->brick('pageTemplate');
?>
<div class="text">
<h1><?=$this->h1;?></h1>
@ -564,6 +567,7 @@ $this->brick('pageTemplate');
echo $this->extraHTML ?? '';
?>
<h2>Edit<span id="wt-name"></span><span id="status-ic" style="float:right;"></span></h2>
<div class="wt-edit">
<div style="display:inline-block; vertical-align:top;"><div class="pad2" style="color: white; font-size: 15px; font-weight: bold;">Icon</div><input type="text" id="wt-icon" size="30" /></div>

View file

@ -3,26 +3,32 @@
use \Aowow\Lang;
$this->brick('header');
$f = $this->filter->values; // shorthand
/** @var PageTemplate $this */
$this->brick('header');
$f = $this->filter->values; // shorthand
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [102]]);
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [102]]);
?>
<div id="fi" style="display: <?=($this->filter->query ? 'block' : 'none'); ?>;">
<form action="?filter=areatriggers" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
</div>
<div class="rightpanel">

View file

@ -3,28 +3,34 @@
use \Aowow\Lang;
$this->brick('header');
$f = $this->filter->values; // shorthand
/** @var PageTemplate $this */
$this->brick('header');
$f = $this->filter->values; // shorthand
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => array_slice($this->pageTemplate['breadcrumb'], 0, 3)]);
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => array_slice($this->pageTemplate['breadcrumb'], 0, 3)]);
# pr_setRegionRealm($WH.ge('fi').firstChild, realm, region) - never have \n\s before <form>, it will become firstChild (a text node)
?>
<div id="fi" style="display: <?=($this->filter->query ? 'block' : 'none'); ?>;"><form
action="?filter=arena-teams&<?=$this->subCat; ?>" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
</div>
<table>

View file

@ -1,8 +1,11 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -16,11 +19,13 @@
<div class="text">
<div id="compare-generic"></div>
<script type="text/javascript">//<![CDATA[
<?php
foreach ($this->cmpItems as $iId => $iData):
echo ' g_items.add('.$iId.', '.$this->json($iData).");\n";
echo ' g_items.add('.$iId.', '.$this->json($iData).');'.PHP_EOL;
endforeach;
?>
<?=$this->summary; ?>
//]]></script>
</div>

View file

@ -1,11 +1,15 @@
<?php
namespace Aowow\Template;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
@ -19,6 +23,7 @@ else:
$this->localizedBrick('delete-account');
endif;
?>
</div>
</div><!-- main-contents -->
</div><!-- main -->

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -18,15 +21,16 @@
?>
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
if ($this->expansion && $this->h1):
echo ' <h1 class="h1-icon"><span class="icon-'.$this->expansion.'-right">'.$this->h1."</span></h1>\n";
echo ' <h1 class="h1-icon"><span class="icon-'.$this->expansion.'-right">'.$this->h1.'</span></h1>'.PHP_EOL;
elseif ($this->h1):
echo ' <h1>'.$this->h1."</h1>\n";
echo ' <h1>'.$this->h1.'</h1>'.PHP_EOL;
endif;
$this->brick('markup', ['markup' => $this->article]);
@ -36,32 +40,41 @@
$this->brick('mapper');
if ($this->transfer):
echo " <div class=\"pad\"></div>\n ".$this->transfer."\n";
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' '.$this->transfer.PHP_EOL;
endif;
$this->brick('markup', ['markup' => $this->smartAI]);
if ($this->zoneMusic):
?>
<div class="clear">
<?php
foreach ($this->zoneMusic as [$h3, $data, $divId, $opts]):
?>
<div id="zonemusicdiv-<?=$divId; ?>" style="float: left">
<h3><?=$h3; ?></h3>
</div>
<script type="text/javascript">//<![CDATA[
(new AudioControls()).init(<?=$this->json($data); ?>, $WH.ge('zonemusicdiv-<?=$divId; ?>'), <?=$this->json($opts); ?>);
//]]></script>
<?php
endforeach;
?>
<br clear="all"/></div>
<?php
endif;
?>
<h2 class="clear"><?=Lang::main('related'); ?></h2>
</div>
<?php
$this->brick('lvTabs');

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -36,21 +39,26 @@
<col width="42%" />
<col width="50%" />
</colgroup>
<?php
if ($this->activation):
?>
<tr>
<th><?=Lang::enchantment('activation'); ?></th>
<td colspan="2"><?=$this->activation; ?></td>
</tr>
<?php
endif;
foreach ($this->effects as $i => $e):
?>
<tr>
<th><?=Lang::spell('_effect').' #'.$i; ?></th>
<td colspan="3" style="line-height: 17px">
<?php
echo ' '.$e['name'].($e['tip'] ? Lang::main('colon').'(<span '.($e['tip'][0] ? 'class="tip" ' : '').'id="efftip-'.$i.'"></span>)' : '').'<small>';
@ -68,24 +76,29 @@ foreach ($this->effects as $i => $e):
endif;
endif;
echo "</small>\n";
echo '</small>'.PHP_EOL;
if ($e['tip']):
?>
<script type="text/javascript">
<?php
echo " \$WH.ae(\$WH.ge('efftip-".$i."'), \$WH.ct(LANG.traits['".$e['tip'][1]."'][0]));\n";
echo " \$WH.ae(\$WH.ge('efftip-".$i."'), \$WH.ct(LANG.traits['".$e['tip'][1]."'][0]));".PHP_EOL;
if ($e['tip'][0]):
echo " g_addTooltip(\$WH.ge('efftip-".$i."'), 'Object: ".$e['tip'][0]."', 'q');\n";
echo " g_addTooltip(\$WH.ge('efftip-".$i."'), 'Object: ".$e['tip'][0]."', 'q');".PHP_EOL;
endif;
?>
</script>
<?php
endif;
if ($e['icon']):
?>
<table class="icontab">
<tr>
<?=$e['icon']->renderContainer(0, $i); ?>
@ -95,14 +108,18 @@ foreach ($this->effects as $i => $e):
<script type="text/javascript">
<?=$e['icon']->renderJS(); ?>
</script>
<?php
endif;
?>
</td>
</tr>
<?php
endforeach;
?>
</table>
<h2 class="clear"><?=Lang::main('related'); ?></h2>
@ -113,6 +130,7 @@ $this->brick('lvTabs');
$this->brick('contribute');
?>
<div class="clear"></div>
</div><!-- main-contents -->
</div><!-- main -->

View file

@ -3,26 +3,32 @@
use \Aowow\Lang;
$this->brick('header');
$f = $this->filter->values; // shorthand
/** @var PageTemplate $this */
$this->brick('header');
$f = $this->filter->values; // shorthand
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [101]]);
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [101]]);
?>
<div id="fi" style="display: <?=($this->filter->query ? 'block' : 'none'); ?>;">
<form action="?filter=enchantments" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
</div>
<div class="rightpanel">

View file

@ -3,22 +3,28 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate');
$this->brick('pageTemplate');
?>
<div class="text">
<h1><?=$this->h1; ?></h1>
<?php
$this->brick('markup', ['markup' => $this->article]);
?>
</div>
<div class="pad"></div>
<!-- start insert -->
@ -204,6 +210,7 @@ $this->brick('pageTemplate');
<td></td>
<td colspan="3"><span id="desc-info"></span></td>
</tr>
<?php
/*
<tr>
@ -217,14 +224,17 @@ $this->brick('pageTemplate');
</tr>
*/
?>
<tr>
<th><?=Lang::main('status');?></th>
<td colspan="3"><dfn title="<?=Lang::guide('editor', 'statusTip', $this->editStatus);?>" style="color:<?=$this->editStatusColor;?>"><?=Lang::guide('status', $this->editStatus);?></dfn>
<?php
if ($this->isDraft && $this->typeId):
echo ' <small>(<a href="?guide='.$this->typeId.'&rev='.$this->editRev.'" target="_blank" class="q1">'.Lang::guide('editor', 'testGuide')."</a>)</small>\n";
echo ' <small>(<a href="?guide='.$this->typeId.'&rev='.$this->editRev.'" target="_blank" class="q1">'.Lang::guide('editor', 'testGuide').'</a>)</small>'.PHP_EOL;
endif;
?>
</td>
</tr>
@ -269,6 +279,7 @@ endif;
</div>
<?php endif; ?>
<div class="guide-submission">
<div class="guide-submission-options">
<button type="button" class="btn btn-site" data-type="save" onclick="$('.guide-submission').attr('data-type', 'save'); $('#changelog').focus();"><?=Lang::guide('editor', 'save');?></button>

View file

@ -3,28 +3,34 @@
use \Aowow\Lang;
$this->brick('header');
$f = $this->filter->values; // shorthand
/** @var PageTemplate $this */
$this->brick('header');
$f = $this->filter->values; // shorthand
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => array_slice($this->pageTemplate['breadcrumb'], 0, 3)]);
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => array_slice($this->pageTemplate['breadcrumb'], 0, 3)]);
# pr_setRegionRealm($WH.ge('fi').firstChild, realm, region) - never have \n\s before <form>, it will become firstChild (a text node)
# pr_setRegionRealm($WH.ge('fi').firstChild, realm, region) - never have \n\s before <form>, it will become firstChild (a text node)
?>
<div id="fi" style="display: <?=($this->filter->query ? 'block' : 'none'); ?>;"><form
action="?filter=guilds&<?=$this->subCat; ?>" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
</div>
<table>

View file

@ -2,29 +2,37 @@
namespace Aowow\Template;
use \Aowow\Lang;
/** @var PageTemplate $this */
?>
<!DOCTYPE html>
<html>
<head>
<?php $this->brick('head'); ?>
</head>
<body class="home<?=($this->user::isPremium() ? ' premium-logo' : ''); ?>">
<div id="layers"></div>
<?php
if ($this->homeTitle):
echo " <script>document.title = '".$this->homeTitle."';</script>\n";
echo " <script>document.title = '".$this->homeTitle."';</script>".PHP_EOL;
endif;
if ($this->altHomeLogo):
?>
<style type="text/css">
.home-logo {
background: url(<?=$this->altHomeLogo; ?>) no-repeat center 0 !important;
margin-bottom: 1px !important;
}
</style>
<?php endif; ?>
<div class="home-wrapper">
<h1><?=$this->concat('title'); ?></h1>
<div class="home-logo" id="home-logo"></div>
@ -47,39 +55,49 @@ if ($this->altHomeLogo):
<?php elseif ($this->featuredBox): ?>
<div class="pad"></div>
<?php
endif;
if ($this->featuredBox):
?>
<div class="home-featuredbox<?=$this->featuredBox['extended'] ? ' home-featuredbox-extended' : ''; ?>" style="background-image: url(<?=$this->featuredBox['boxBG']; ?>);" id="home-featuredbox">
<?php if ($this->featuredBox['overlays']): ?>
<div class="home-featuredbox-links">
<?php
foreach ($this->featuredBox['overlays'] as ['url' => $u, 'title' => $t, 'left' => $l, 'width' => $w]):
echo ' <a href="'.$u.'" title="'.$t.'" style="left: '.$l.'px; top: 18px; width:'.$w.'px; height: 160px"></a>'."\n";
echo ' <var style="left: '.$l.'px; top: 18px; width:'.$w.'px; height: 160px"></var>'."\n";
echo ' <a href="'.$u.'" title="'.$t.'" style="left: '.$l.'px; top: 18px; width:'.$w.'px; height: 160px"></a>'.PHP_EOL;
echo ' <var style="left: '.$l.'px; top: 18px; width:'.$w.'px; height: 160px"></var>'.PHP_EOL;
endforeach;
?>
</div>
<?php endif; ?>
<div class="home-featuredbox-inner text" id="news-generic"></div>
</div>
<?php
endif;
?>
<script type="text/javascript">//<![CDATA[
<?php
if ($this->locale->value):
echo " Locale.set(".$this->locale->value.");\n";
echo ' Locale.set('.$this->locale->value.');'.PHP_EOL;
endif;
echo $this->renderGlobalVars(12);
if ($this->featuredBox):
echo " ".$this->featuredBox['markup'];
echo ' '.$this->featuredBox['markup'];
endif;
?>
//]]></script>
</div>

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -18,6 +21,7 @@
?>
<div class="text">
<?php
$this->brick('redButtons');
?>
@ -27,9 +31,11 @@
<script type="text/javascript">//<![CDATA[
$WH.ge('h1-icon-0').appendChild(Icon.create("<?=$this->icon;?>", 2));
//]]></script>
<?php
$this->brick('markup', ['markup' => $this->article]);
?>
<div class="clear"></div>
<h2 class="clear"><?=Lang::main('related'); ?></h2>
</div>

View file

@ -3,26 +3,32 @@
use \Aowow\Lang;
$this->brick('header');
$f = $this->filter->values; // shorthand
/** @var PageTemplate $this */
$this->brick('header');
$f = $this->filter->values; // shorthand
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [31]]);
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [31]]);
?>
<div id="fi" style="display: <?=($this->filter->query ? 'block' : 'none'); ?>;">
<form action="?filter=icons" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
</div>
<table>

View file

@ -3,17 +3,21 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate');
$this->brick('pageTemplate');
?>
<div class="text">
<h1><?=$this->h1; ?></h1>

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -18,15 +21,19 @@
?>
<div class="text">
<?php $this->brick('redButtons'); ?>
<h1><?=$this->h1; ?></h1>
<?php
if ($this->unavailable):
?>
<div class="pad"></div>
<b style="color: red"><?=Lang::item('_unavailable'); ?></b>
<div class="pad"></div>
<?php
endif;
@ -35,31 +42,38 @@ endif;
$this->brick('markup', ['markup' => $this->article]);
if ($this->map):
echo " <h3>".$this->map[4]."</h3>\n";
echo ' <h3>'.$this->map[4].'</h3>'.PHP_EOL;
$this->brick('mapper');
endif;
if ($this->transfer):
echo " <div class=\"pad\"></div>\n ".$this->transfer."\n";
echo ' <div class="pad"></div>'.PHP_EOL;
echo ' '.$this->transfer.PHP_EOL;
endif;
if ($this->subItems):
?>
<div class="clear"></div>
<h3><?=Lang::item('_rndEnchants'); ?></h3>
<?php
foreach (array_chunk($this->subItems['data'], ceil(count($this->subItems['data']) / 2)) as $columns):
?>
<div class="random-enchantments" style="margin-right: 25px">
<ul>
<?php
foreach ($columns as $k => ['name' => $name, 'enchantment' => $enchantment, 'chance' => $chance]):
echo ' <li><div><span title="ID'.Lang::main('colon').$this->subItems['randIds'][$k].'" class="tip q'.$this->subItems['quality'].'">...'.$name.'</span> <small class="q0">'.Lang::item('_chance', [$chance]).'</small><br />';
echo Lang::concat($enchantment, Lang::CONCAT_NONE, fn($txt, $eId) => '<a style="text-decoration:none; color:#CCCCCC;" href="?enchantment='.$eId.'">'.$txt.'</a>')."</div></li>\n";
echo Lang::concat($enchantment, Lang::CONCAT_NONE, fn($txt, $eId) => '<a style="text-decoration:none; color:#CCCCCC;" href="?enchantment='.$eId.'">'.$txt.'</a>').'</div></li>'.PHP_EOL;
endforeach;
?>
</ul>
</div>
<?php
endforeach;
endif;

View file

@ -1,28 +1,34 @@
<?php
namespace Aowow\Template;
use Aowow\Lang;
use \Aowow\Lang;
$this->brick('header');
$f = $this->filter->values; // shorthand
/** @var PageTemplate $this */
$this->brick('header');
$f = $this->filter->values; // shorthand
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [0]]);
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [0]]);
?>
<div id="fi" style="display: <?=($this->filter->query ? 'block' : 'none'); ?>;">
<form action="?filter=items<?=$this->subCat; ?>" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
</div>
<div class="rightpanel">
@ -37,6 +43,7 @@ $this->brick('redButtons');
<?php
if ($this->slotList):
?>
<div class="rightpanel2">
<div style="float: left"><?=Lang::item('slot'); ?></div>
<small><a href="javascript:;" onclick="document.forms['fi'].elements['sl[]'].selectedIndex = -1; return false" onmousedown="return false"><?=Lang::main('clear'); ?></a></small>
@ -45,11 +52,13 @@ if ($this->slotList):
<?=$this->makeOptionsList($this->slotList, $f['sl'], 28); ?>
</select>
</div>
<?php
endif;
if ($this->typeList):
?>
<div class="rightpanel2">
<div style="float: left"><?=Lang::game('type'); ?></div>
<small><a href="javascript:;" onclick="document.forms['fi'].elements['ty[]'].selectedIndex = -1; return false" onmousedown="return false"><?=Lang::main('clear'); ?></a></small>
@ -62,6 +71,7 @@ if ($this->typeList):
}); ?>
</select>
</div>
<?php endif; ?>
<table>
@ -141,7 +151,7 @@ if ($this->typeList):
<div class="clear"></div>
<div class="padded">
<?=Lang::main('groupBy')."\n"; ?>
<?=Lang::main('groupBy').PHP_EOL; ?>
<?=$this->makeRadiosList('gb', Lang::main('gb'), $f['gb'] ?? '', 24, fn($v, &$k) => ($k = $k ?: '') || 1); ?>
</div>

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -18,60 +21,73 @@
?>
<div class="text">
<?php
$this->brick('redButtons');
$this->brick('redButtons');
if ($this->expansion):
echo ' <h1 class="h1-icon"><span class="icon-'.$this->expansion.'-right">'.$this->h1."</span></h1>\n";
echo ' <h1 class="h1-icon"><span class="icon-'.$this->expansion.'-right">'.$this->h1.'</span></h1>'.PHP_EOL;
else:
echo ' <h1>'.$this->h1."</h1>\n";
echo ' <h1>'.$this->h1.'</h1>'.PHP_EOL;
endif;
if ($this->unavailable):
?>
<div class="pad"></div>
<b style="color: red"><?=Lang::itemset('_unavailable'); ?></b>
<div class="pad"></div>
<?php
endif;
$this->brick('markup', ['markup' => $this->article]);
echo $this->description;
?>
<script type="text/javascript">//<![CDATA[
<?php
foreach ($this->pieces as $iId => [$piece, ]):
echo " g_items.add(".$iId.", ".$this->json($piece).");\n";
echo ' g_items.add('.$iId.', '.$this->json($piece).');'.PHP_EOL;
endforeach;
?>
//]]></script>
<table class="iconlist">
<?php
$iconIdx = 0;
foreach ($this->pieces as [, $icon]):
echo $icon->renderContainer(20, $iconIdx, true);
endforeach;
?>
</table>
<script type="text/javascript">//<![CDATA[
<?php
foreach ($this->pieces as [, $icon]):
echo $icon->renderJS(20);
endforeach;
?>
//]]></script>
<h3><?=Lang::itemset('_setBonuses').$this->bonusExt; ?></h3>
<?=" ".Lang::itemset('_conveyBonus')."\n"; ?>
<?=' '.Lang::itemset('_conveyBonus').PHP_EOL; ?>
<ul>
<?php
foreach ($this->spells as [$nItems, $spellId, $text]):
echo ' <li><div>'.Lang::itemset('_pieces', [$nItems]).'<a href="?spell='.$spellId.'">'.$text."</a></div></li>\n";
echo ' <li><div>'.Lang::itemset('_pieces', [$nItems]).'<a href="?spell='.$spellId.'">'.$text.'</a></div></li>'.PHP_EOL;
endforeach;
?>
</ul>
<?php
if ($this->summary):
?>
@ -82,6 +98,7 @@ if ($this->summary):
<script type="text/javascript">//<![CDATA[
<?=$this->summary; ?>
//]]></script>
<?php
endif;
?>

View file

@ -3,26 +3,32 @@
use \Aowow\Lang;
$this->brick('header');
$f = $this->filter->values; // shorthand
/** @var PageTemplate $this */
$this->brick('header');
$f = $this->filter->values; // shorthand
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
<?php
$this->brick('announcement');
$this->brick('announcement');
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [2]]);
$this->brick('pageTemplate', ['fiQuery' => $this->filter->query, 'fiMenuItem' => [2]]);
?>
<div id="fi" style="display: <?=($this->filter->query ? 'block' : 'none'); ?>;">
<form action="?filter=itemsets<?=$this->subCat; ?>" method="post" name="fi" onsubmit="return fi_submit(this)" onreset="return fi_reset(this)">
<div class="text">
<?php
$this->brick('headIcons');
$this->brick('redButtons');
<?php
$this->brick('headIcons');
$this->brick('redButtons');
?>
<h1><?=$this->h1; ?></h1>
</div>
<div class="rightpanel">

View file

@ -3,8 +3,11 @@
use \Aowow\Lang;
/** @var PageTemplate $this */
$this->brick('header');
?>
<div class="main" id="main">
<div class="main-precontents" id="main-precontents"></div>
<div class="main-contents" id="main-contents">
@ -14,7 +17,9 @@
$this->brick('pageTemplate');
?>
<div class="text">
<?php
$this->brick('redButtons');
@ -38,15 +43,20 @@
echo ' <h2 class="clear">'.$this->tabsTitle.'</h2>';
endif;
?>
</div>
<?php
if ($this->lvTabs):
$this->brick('lvTabs');
?>
<div class="clear"></div>
<?php
endif;
?>
</div><!-- main-contents -->
</div><!-- main -->

Some files were not shown because too many files have changed in this diff Show more