mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
ItemDetailPage/Misc
* fix "vendor in" mapper * add "fished in" mapper * move 'see-also' and 'same-model-as' tabs to the back of the tabs list
This commit is contained in:
@@ -474,6 +474,28 @@ class ItemBaseResponse extends TemplateResponse implements ICache
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($idx == 15 && !$this->map)
|
||||||
|
{
|
||||||
|
$nodeIds = array_map(fn($x) => $x['id'], $tabData['data']);
|
||||||
|
$fishedIn = new GameObjectList(array(['id', $nodeIds]));
|
||||||
|
if (!$fishedIn->error)
|
||||||
|
{
|
||||||
|
// show mapper for fishing locations
|
||||||
|
if ($nodeSpawns = $fishedIn->getSpawns(SPAWNINFO_FULL, true, true, true, true))
|
||||||
|
{
|
||||||
|
$this->map = array(
|
||||||
|
['parent' => 'mapper-generic'], // Mapper
|
||||||
|
$nodeSpawns, // mapperData
|
||||||
|
null, // ShowOnMap
|
||||||
|
[Lang::item('fishedIn')], // foundIn
|
||||||
|
Lang::item('fishingLoc') // title
|
||||||
|
);
|
||||||
|
foreach ($nodeSpawns as $areaId => $_)
|
||||||
|
$this->map[3][$areaId] = ZoneList::getName($areaId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($template == 'npc' || $template == 'object')
|
if ($template == 'npc' || $template == 'object')
|
||||||
$this->addDataLoader('zones');
|
$this->addDataLoader('zones');
|
||||||
|
|
||||||
@@ -633,40 +655,6 @@ class ItemBaseResponse extends TemplateResponse implements ICache
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// tab: see also
|
|
||||||
$conditions = array(
|
|
||||||
['id', $this->typeId, '!'],
|
|
||||||
[
|
|
||||||
'OR',
|
|
||||||
['name_loc'.Lang::getLocale()->value, $this->subject->getField('name', true)],
|
|
||||||
[
|
|
||||||
'AND',
|
|
||||||
['class', $_class],
|
|
||||||
['subClass', $_subClass],
|
|
||||||
['slot', $_slot],
|
|
||||||
['itemLevel', $_ilvl - 15, '>'],
|
|
||||||
['itemLevel', $_ilvl + 15, '<'],
|
|
||||||
['quality', $this->subject->getField('quality')],
|
|
||||||
['requiredClass', $this->subject->getField('requiredClass') ?: -1] // todo: fix db data in setup and not on fetch
|
|
||||||
]
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($_ = $this->subject->getField('itemset'))
|
|
||||||
$conditions[1][] = ['AND', ['slot', $_slot], ['itemset', $_]];
|
|
||||||
|
|
||||||
$saItems = new ItemList($conditions);
|
|
||||||
if (!$saItems->error)
|
|
||||||
{
|
|
||||||
$this->extendGlobalData($saItems->getJSGlobals(GLOBALINFO_SELF));
|
|
||||||
|
|
||||||
$this->lvTabs->addListviewTab(new Listview(array(
|
|
||||||
'data' => $saItems->getListviewData(),
|
|
||||||
'name' => '$LANG.tab_seealso',
|
|
||||||
'id' => 'see-also'
|
|
||||||
), ItemList::$brickFile));
|
|
||||||
}
|
|
||||||
|
|
||||||
// tab: starts (quest)
|
// tab: starts (quest)
|
||||||
if ($qId = $this->subject->getField('startQuest'))
|
if ($qId = $this->subject->getField('startQuest'))
|
||||||
{
|
{
|
||||||
@@ -719,24 +707,6 @@ class ItemBaseResponse extends TemplateResponse implements ICache
|
|||||||
), QuestList::$brickFile));
|
), QuestList::$brickFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
// tab: same model as
|
|
||||||
// todo (low): should also work for creatures summoned by item
|
|
||||||
if (($model = $this->subject->getField('model')) && $_slot)
|
|
||||||
{
|
|
||||||
$sameModel = new ItemList(array(['model', $model], ['id', $this->typeId, '!'], ['slot', $_slot]));
|
|
||||||
if (!$sameModel->error)
|
|
||||||
{
|
|
||||||
$this->extendGlobalData($sameModel->getJSGlobals(GLOBALINFO_SELF));
|
|
||||||
|
|
||||||
$this->lvTabs->addListviewTab(new Listview(array(
|
|
||||||
'data' => $sameModel->getListviewData(ITEMINFO_MODEL),
|
|
||||||
'name' => '$LANG.tab_samemodelas',
|
|
||||||
'id' => 'same-model-as',
|
|
||||||
'genericlinktype' => 'item'
|
|
||||||
), 'genericmodel'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// tab: sold by
|
// tab: sold by
|
||||||
if (!empty($this->subject->getExtendedCost()[$this->typeId]))
|
if (!empty($this->subject->getExtendedCost()[$this->typeId]))
|
||||||
{
|
{
|
||||||
@@ -751,10 +721,11 @@ class ItemBaseResponse extends TemplateResponse implements ICache
|
|||||||
['parent' => 'mapper-generic'], // Mapper
|
['parent' => 'mapper-generic'], // Mapper
|
||||||
$vendorSpawns, // mapperData
|
$vendorSpawns, // mapperData
|
||||||
null, // ShowOnMap
|
null, // ShowOnMap
|
||||||
[Lang::item('purchasedIn')] // foundIn
|
[Lang::item('purchasedIn')], // foundIn
|
||||||
|
Lang::item('vendorLoc') // title
|
||||||
);
|
);
|
||||||
foreach ($vendorSpawns as $areaId => $_)
|
foreach ($vendorSpawns as $areaId => $_)
|
||||||
$this->map['extra'][$areaId] = ZoneList::getName($areaId);
|
$this->map[3][$areaId] = ZoneList::getName($areaId);
|
||||||
}
|
}
|
||||||
|
|
||||||
$sbData = $soldBy->getListviewData();
|
$sbData = $soldBy->getListviewData();
|
||||||
@@ -904,6 +875,58 @@ class ItemBaseResponse extends TemplateResponse implements ICache
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tab: see also
|
||||||
|
$conditions = array(
|
||||||
|
['id', $this->typeId, '!'],
|
||||||
|
[
|
||||||
|
'OR',
|
||||||
|
['name_loc'.Lang::getLocale()->value, $this->subject->getField('name', true)],
|
||||||
|
[
|
||||||
|
'AND',
|
||||||
|
['class', $_class],
|
||||||
|
['subClass', $_subClass],
|
||||||
|
['slot', $_slot],
|
||||||
|
['itemLevel', $_ilvl - 15, '>'],
|
||||||
|
['itemLevel', $_ilvl + 15, '<'],
|
||||||
|
['quality', $this->subject->getField('quality')],
|
||||||
|
['requiredClass', $this->subject->getField('requiredClass') ?: -1] // todo: fix db data in setup and not on fetch
|
||||||
|
]
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($_ = $this->subject->getField('itemset'))
|
||||||
|
$conditions[1][] = ['AND', ['slot', $_slot], ['itemset', $_]];
|
||||||
|
|
||||||
|
$saItems = new ItemList($conditions);
|
||||||
|
if (!$saItems->error)
|
||||||
|
{
|
||||||
|
$this->extendGlobalData($saItems->getJSGlobals(GLOBALINFO_SELF));
|
||||||
|
|
||||||
|
$this->lvTabs->addListviewTab(new Listview(array(
|
||||||
|
'data' => $saItems->getListviewData(),
|
||||||
|
'name' => '$LANG.tab_seealso',
|
||||||
|
'id' => 'see-also'
|
||||||
|
), ItemList::$brickFile));
|
||||||
|
}
|
||||||
|
|
||||||
|
// tab: same model as
|
||||||
|
// todo (low): should also work for creatures summoned by item
|
||||||
|
if (($model = $this->subject->getField('model')) && $_slot)
|
||||||
|
{
|
||||||
|
$sameModel = new ItemList(array(['model', $model], ['id', $this->typeId, '!'], ['slot', $_slot]));
|
||||||
|
if (!$sameModel->error)
|
||||||
|
{
|
||||||
|
$this->extendGlobalData($sameModel->getJSGlobals(GLOBALINFO_SELF));
|
||||||
|
|
||||||
|
$this->lvTabs->addListviewTab(new Listview(array(
|
||||||
|
'data' => $sameModel->getListviewData(ITEMINFO_MODEL),
|
||||||
|
'name' => '$LANG.tab_samemodelas',
|
||||||
|
'id' => 'same-model-as',
|
||||||
|
'genericlinktype' => 'item'
|
||||||
|
), 'genericmodel'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// tab: Shared cooldown
|
// tab: Shared cooldown
|
||||||
$cdCats = [];
|
$cdCats = [];
|
||||||
$useSpells = [];
|
$useSpells = [];
|
||||||
|
|||||||
@@ -2265,8 +2265,10 @@ $lang = array(
|
|||||||
'uniqueEquipped'=> ["Einzigartig anlegbar", null, "Einzigartig angelegt: %s (%d)"],
|
'uniqueEquipped'=> ["Einzigartig anlegbar", null, "Einzigartig angelegt: %s (%d)"],
|
||||||
'speed' => "Tempo",
|
'speed' => "Tempo",
|
||||||
'dps' => "(%.1f Schaden pro Sekunde)",
|
'dps' => "(%.1f Schaden pro Sekunde)",
|
||||||
'vendorIn' => "Händlerstandpunkte",
|
'vendorLoc' => "Händlerstandpunkte",
|
||||||
'purchasedIn' => "Dieser Gegenstand kann gekauft werden in",
|
'purchasedIn' => "Dieser Gegenstand kann gekauft werden in",
|
||||||
|
'fishingLoc' => "Angelplätze",
|
||||||
|
'fishedIn' => "Dieser Gegenstand kann geangelt werden in",
|
||||||
'duration' => array( // ITEM_DURATION_*
|
'duration' => array( // ITEM_DURATION_*
|
||||||
'',
|
'',
|
||||||
"Dauer: %d Sek.",
|
"Dauer: %d Sek.",
|
||||||
|
|||||||
@@ -2265,8 +2265,10 @@ $lang = array(
|
|||||||
'uniqueEquipped'=> ["Unique-Equipped", null, "Unique-Equipped: %s (%d)"], // ITEM_UNIQUE_EQUIPPABLE, null, ITEM_LIMIT_CATEGORY_MULTIPLE
|
'uniqueEquipped'=> ["Unique-Equipped", null, "Unique-Equipped: %s (%d)"], // ITEM_UNIQUE_EQUIPPABLE, null, ITEM_LIMIT_CATEGORY_MULTIPLE
|
||||||
'speed' => "Speed", // SPEED
|
'speed' => "Speed", // SPEED
|
||||||
'dps' => "(%.1f damage per second)", // DPS_TEMPLATE
|
'dps' => "(%.1f damage per second)", // DPS_TEMPLATE
|
||||||
'vendorIn' => "Vendor Locations",
|
'vendorLoc' => "Vendor Locations",
|
||||||
'purchasedIn' => "This item can be purchased in",
|
'purchasedIn' => "This item can be purchased in",
|
||||||
|
'fishingLoc' => "Fishing Locations",
|
||||||
|
'fishedIn' => "This item can be fished in",
|
||||||
'duration' => array( // ITEM_DURATION_*
|
'duration' => array( // ITEM_DURATION_*
|
||||||
'',
|
'',
|
||||||
"Duration: %d sec",
|
"Duration: %d sec",
|
||||||
|
|||||||
@@ -2265,8 +2265,10 @@ $lang = array(
|
|||||||
'uniqueEquipped'=> ["Único-Equipado", null, "Único-Equipado: %s (%d)"],
|
'uniqueEquipped'=> ["Único-Equipado", null, "Único-Equipado: %s (%d)"],
|
||||||
'speed' => "Veloc.",
|
'speed' => "Veloc.",
|
||||||
'dps' => "(%.1f daño por segundo)",
|
'dps' => "(%.1f daño por segundo)",
|
||||||
'vendorIn' => "Ubicación de Vendedores",
|
'vendorLoc' => "Ubicación de Vendedores",
|
||||||
'purchasedIn' => "[This item can be purchased in]",
|
'purchasedIn' => "Este objeto se puede comprar en",
|
||||||
|
'fishingLoc' => "Lugares de pesca",
|
||||||
|
'fishedIn' => "Este objeto se puede pescar en",
|
||||||
'duration' => array(
|
'duration' => array(
|
||||||
'',
|
'',
|
||||||
"Duración: %d s",
|
"Duración: %d s",
|
||||||
|
|||||||
@@ -2265,8 +2265,10 @@ $lang = array(
|
|||||||
'uniqueEquipped'=> ["Unique - Equipé", null, "Unique - Equipé: %s (%d)"], // ITEM_UNIQUE_EQUIPPABLE, null, ITEM_LIMIT_CATEGORY_MULTIPLE
|
'uniqueEquipped'=> ["Unique - Equipé", null, "Unique - Equipé: %s (%d)"], // ITEM_UNIQUE_EQUIPPABLE, null, ITEM_LIMIT_CATEGORY_MULTIPLE
|
||||||
'speed' => "Vitesse",
|
'speed' => "Vitesse",
|
||||||
'dps' => "(%.1f dégâts par seconde)",
|
'dps' => "(%.1f dégâts par seconde)",
|
||||||
'vendorIn' => "Lieux de vente",
|
'vendorLoc' => "Lieux de vente",
|
||||||
'purchasedIn' => "Cet objet peut être acheté dans",
|
'purchasedIn' => "Cet objet peut être acheté dans",
|
||||||
|
'fishingLoc' => "Lieux de pêche",
|
||||||
|
'fishedIn' => "Cet objet peut être pêché dans",
|
||||||
'duration' => array(
|
'duration' => array(
|
||||||
'',
|
'',
|
||||||
"Durée : %d sec",
|
"Durée : %d sec",
|
||||||
|
|||||||
@@ -2265,8 +2265,10 @@ $lang = array(
|
|||||||
'uniqueEquipped'=> ["Уникальный использующийся", null, "Уникальный использующийся предмет: %s (%d)"],
|
'uniqueEquipped'=> ["Уникальный использующийся", null, "Уникальный использующийся предмет: %s (%d)"],
|
||||||
'speed' => "Скорость",
|
'speed' => "Скорость",
|
||||||
'dps' => "(%.1f ед. урона в секунду)",
|
'dps' => "(%.1f ед. урона в секунду)",
|
||||||
'vendorIn' => "Расположение торговца",
|
'vendorLoc' => "Расположение торговца",
|
||||||
'purchasedIn' => "Этот предмет приобретается в",
|
'purchasedIn' => "Этот предмет приобретается в",
|
||||||
|
'fishingLoc' => "Места рыбной ловли",
|
||||||
|
'fishedIn' => "Этот предмет вылавливается в",
|
||||||
'duration' => array(
|
'duration' => array(
|
||||||
'',
|
'',
|
||||||
"Срок действия: %d |4секунда:секунды:секунд;",
|
"Срок действия: %d |4секунда:секунды:секунд;",
|
||||||
|
|||||||
@@ -2265,8 +2265,10 @@ $lang = array(
|
|||||||
'uniqueEquipped'=> ["装备唯一", null, "装备唯一:%s (%d)"],
|
'uniqueEquipped'=> ["装备唯一", null, "装备唯一:%s (%d)"],
|
||||||
'speed' => "速度",
|
'speed' => "速度",
|
||||||
'dps' => "(每秒伤害%.1f)",
|
'dps' => "(每秒伤害%.1f)",
|
||||||
'vendorIn' => "[Vendor Locations]",
|
'vendorLoc' => "[Vendor Locations]",
|
||||||
'purchasedIn' => "[This item can be purchased in]",
|
'purchasedIn' => "[This item can be purchased in]",
|
||||||
|
'fishingLoc' => "钓鱼地点",
|
||||||
|
'fishedIn' => "此物品位于",
|
||||||
'duration' => array(
|
'duration' => array(
|
||||||
'',
|
'',
|
||||||
"持续时间:%d秒",
|
"持续时间:%d秒",
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ endif;
|
|||||||
|
|
||||||
$this->brick('markup', ['markup' => $this->article]);
|
$this->brick('markup', ['markup' => $this->article]);
|
||||||
|
|
||||||
if (isset($this->map)):
|
if ($this->map):
|
||||||
echo " <h3>".Lang::item('vendorIn')."</h3>\n";
|
echo " <h3>".$this->map[4]."</h3>\n";
|
||||||
$this->brick('mapper');
|
$this->brick('mapper');
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user