Skip to content

Commit b123b4e

Browse files
committed
Use page identifier for the label
1 parent 16c22fb commit b123b4e

File tree

4 files changed

+55
-29
lines changed

4 files changed

+55
-29
lines changed

ts/WoltLabSuite/Core/Acp/Ui/Menu/Item/Handler.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,21 @@ import * as UiPageSearchHandler from "../../../../Ui/Page/Search/Handler";
1010
import { getPhrase } from "WoltLabSuite/Core/Language";
1111

1212
export class AcpUiMenuItemHandler {
13-
private readonly handlers: Map<number, boolean>;
14-
private readonly pageId: HTMLSelectElement;
15-
private readonly pageObjectId: HTMLInputElement;
13+
readonly #handlers: Map<number, boolean>;
14+
readonly #identifiers: Map<number, string>;
15+
readonly #pageId: HTMLSelectElement;
16+
readonly #pageObjectId: HTMLInputElement;
1617

1718
/**
1819
* Initializes the interface logic.
1920
*/
20-
constructor(fieldPrefix: string, handlers: Map<number, boolean>) {
21-
this.handlers = handlers;
21+
constructor(fieldPrefix: string, handlers: Map<number, boolean>, identifiers: Map<number, string>) {
22+
this.#handlers = handlers;
23+
this.#identifiers = identifiers;
2224

23-
if (this.handlers.size) {
24-
this.pageId = document.getElementById("pageID") as HTMLSelectElement;
25-
this.pageObjectId = document.getElementById(fieldPrefix) as HTMLInputElement;
25+
if (this.#handlers.size) {
26+
this.#pageId = document.getElementById("pageID") as HTMLSelectElement;
27+
this.#pageObjectId = document.getElementById(fieldPrefix) as HTMLInputElement;
2628

2729
const searchButton = document.getElementById(fieldPrefix + "Search")!;
2830
searchButton.addEventListener("click", () => this.openSearch());
@@ -33,8 +35,8 @@ export class AcpUiMenuItemHandler {
3335
* Opens the handler lookup dialog.
3436
*/
3537
private openSearch(): void {
36-
const selectedOption = this.pageId.options[this.pageId.selectedIndex];
37-
const pageIdentifier = selectedOption.dataset.identifier!;
38+
const selectedOption = this.#pageId.options[this.#pageId.selectedIndex];
39+
const pageIdentifier = this.#identifiers.get(parseInt(selectedOption.value));
3840
const languageItem = `wcf.page.pageObjectID.search.${pageIdentifier}`;
3941

4042
let labelLanguageItem;
@@ -46,7 +48,7 @@ export class AcpUiMenuItemHandler {
4648
parseInt(selectedOption.value),
4749
selectedOption.textContent!.trim(),
4850
(objectId) => {
49-
this.pageObjectId.value = objectId.toString();
51+
this.#pageObjectId.value = objectId.toString();
5052
},
5153
labelLanguageItem,
5254
);

wcfsetup/install/files/acp/templates/__pageObjectIDFormField.tpl

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,26 @@
2727
{jsphrase name='wcf.page.pageObjectID.search.results'}
2828
{jsphrase name='wcf.page.pageObjectID.search.terms'}
2929
30-
require(['WoltLabSuite/Core/Acp/Ui/Menu/Item/Handler'], ({ AcpUiMenuItemHandler }) => {
30+
require(['Language', 'WoltLabSuite/Core/Acp/Ui/Menu/Item/Handler'], (Language, { AcpUiMenuItemHandler }) => {
31+
Language.addObject({
32+
{foreach from=$pageNodeList item=pageNode}
33+
{capture assign='pageObjectIDLanguageItem'}{lang __optional=true}wcf.page.pageObjectID.{@$pageNode->identifier}{/lang}{/capture}
34+
{if $pageObjectIDLanguageItem}
35+
'wcf.page.pageObjectID.{@$pageNode->identifier}': '{@$pageObjectIDLanguageItem|encodeJS}',
36+
{/if}
37+
{capture assign='pageObjectIDLanguageItem'}{lang __optional=true}wcf.page.pageObjectID.search.{@$pageNode->identifier}{/lang}{/capture}
38+
{if $pageObjectIDLanguageItem}
39+
'wcf.page.pageObjectID.search.{@$pageNode->identifier}': '{@$pageObjectIDLanguageItem|encodeJS}',
40+
{/if}
41+
{/foreach}
42+
});
43+
3144
new AcpUiMenuItemHandler('{unsafe:$field->getPrefixedId()|encodeJS}', new Map([
3245
{implode from=$pageHandlers key=handlerPageID item=requireObjectID glue=', '}[{$handlerPageID}, {if $requireObjectID}true{else}false{/if}]{/implode}
46+
]), new Map([
47+
{foreach from=$pageNodeList item=pageNode}
48+
[{$pageNode->pageID}, '{unsafe:$pageNode->identifier|encodeJS}'],
49+
{/foreach}
3350
]));
3451
});
3552
</script>

wcfsetup/install/files/js/WoltLabSuite/Core/Acp/Ui/Menu/Item/Handler.js

Lines changed: 13 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wcfsetup/install/files/lib/acp/form/MenuItemAddForm.class.php

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ protected function createForm()
153153
->fieldId('isInternalLink')
154154
->values([1])
155155
),
156-
$this->getPageObjectIDFormField($pageHandlers)
156+
$this->getPageObjectIDFormField($pageNodeList, $pageHandlers)
157157
->id('pageObjectID')
158158
->label('wcf.page.pageObjectID')
159159
->addFieldClass('short')
@@ -292,23 +292,28 @@ protected function setFormAction()
292292
);
293293
}
294294

295-
protected function getPageObjectIDFormField(array $pageHandlers): IntegerFormField
296-
{
297-
return new class($pageHandlers) extends IntegerFormField {
295+
protected function getPageObjectIDFormField(
296+
\RecursiveIteratorIterator $pageNodeList,
297+
array $pageHandlers
298+
): IntegerFormField {
299+
return new class($pageNodeList, $pageHandlers) extends IntegerFormField {
298300
protected $templateName = '__pageObjectIDFormField';
299301
protected array $pageHandlers;
302+
protected \RecursiveIteratorIterator $pageNodeList;
300303

301-
public function __construct(array $pageHandlers)
304+
public function __construct(\RecursiveIteratorIterator $pageNodeList, array $pageHandlers)
302305
{
303306
parent::__construct();
304307
$this->pageHandlers = $pageHandlers;
308+
$this->pageNodeList = $pageNodeList;
305309
}
306310

307311
#[\Override]
308312
public function getHtmlVariables()
309313
{
310314
return array_merge(parent::getHtmlVariables(), [
311-
'pageHandlers' => $this->pageHandlers
315+
'pageHandlers' => $this->pageHandlers,
316+
'pageNodeList' => $this->pageNodeList,
312317
]);
313318
}
314319
};

0 commit comments

Comments
 (0)