5158bc86ebe73ef6607e5601b87ec9a62cb9f6e5
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / acp / templates / menuItemList.tpl
1 {include file='header' pageTitle='wcf.acp.menu.item.list'}
2
3 <script data-relocate="true">
4 require(['WoltLabSuite/Core/Ui/Sortable/List'], function (UiSortableList) {
5 new UiSortableList({
6 containerId: 'menuItemList',
7 className: 'wcf\\data\\menu\\item\\MenuItemAction',
8 options: {
9 protectRoot: true
10 },
11 additionalParameters: {
12 menuID: '{@$menuID}'
13 }
14 });
15 });
16
17 $(function() {
18 new WCF.Action.Toggle('wcf\\data\\menu\\item\\MenuItemAction', '.sortableNode', '> .sortableNodeLabel .jsToggleButton');
19
20 var deleteAction = new WCF.Action.Delete('wcf\\data\\menu\\item\\MenuItemAction', '.sortableNode', '> .sortableNodeLabel .jsDeleteButton');
21 var mpTriggerEffect = deleteAction.triggerEffect;
22 deleteAction.triggerEffect = function (objectIDs) {
23 // move children up by one
24 objectIDs.forEach(function (objectId) {
25 var item = elBySel('#menuItemList li[data-object-id="' + objectId + '"]');
26 elBySelAll('.sortableList[data-object-id="' + objectId + '"] > li', item, function(childItem) {
27 item.parentNode.insertBefore(childItem, item);
28 });
29 });
30
31 mpTriggerEffect.call(deleteAction, objectIDs);
32 };
33 });
34 </script>
35
36 <header class="contentHeader">
37 <div class="contentHeaderTitle">
38 <h1 class="contentTitle">{lang}wcf.acp.menu.item.list{/lang}</h1>
39 <p class="contentHeaderDescription">{$menu->getTitle()}</p>
40 </div>
41
42 <nav class="contentHeaderNavigation">
43 <ul>
44 <li><a href="{link controller='MenuEdit' id=$menuID}{/link}" class="button"><span class="icon icon16 fa-pencil"></span> <span>{lang}wcf.acp.menu.edit{/lang}</span></a></li>
45 <li><a href="{link controller='MenuItemAdd'}menuID={@$menuID}{/link}" class="button"><span class="icon icon16 fa-plus"></span> <span>{lang}wcf.acp.menu.item.add{/lang}</span></a></li>
46
47 {event name='contentHeaderNavigation'}
48 </ul>
49 </nav>
50 </header>
51
52 {hascontent}
53 <div id="menuItemList" class="section sortableListContainer">
54 <ol class="sortableList jsReloadPageWhenEmpty" data-object-id="0">
55 {content}
56 {foreach from=$menuItemNodeList item=menuItemNode}
57 <li class="sortableNode" data-object-id="{@$menuItemNode->itemID}">
58 <span class="sortableNodeLabel">
59 <a href="{link controller='MenuItemEdit' id=$menuItemNode->itemID}{/link}">{$menuItemNode->getTitle()}</a>
60 <span class="statusDisplay sortableButtonContainer">
61 <span class="icon icon16 fa-arrows sortableNodeHandle"></span>
62 {if $menuItemNode->canDisable()}
63 <span class="icon icon16 fa-{if !$menuItemNode->isDisabled}check-{/if}square-o jsToggleButton jsTooltip pointer" title="{lang}wcf.global.button.{if $menuItemNode->isDisabled}enable{else}disable{/if}{/lang}" data-object-id="{@$menuItemNode->itemID}"></span>
64 {else}
65 <span class="icon icon16 fa-{if !$menuItemNode->isDisabled}check-{/if}square-o disabled" title="{lang}wcf.global.button.{if $menuItemNode->isDisabled}enable{else}disable{/if}{/lang}"></span>
66 {/if}
67 <a href="{link controller='MenuItemEdit' id=$menuItemNode->itemID}{/link}" class="jsTooltip" title="{lang}wcf.global.button.edit{/lang}"><span class="icon icon16 fa-pencil"></span></a>
68 {if $menuItemNode->canDelete()}
69 <span class="icon icon16 fa-times jsDeleteButton jsTooltip pointer" title="{lang}wcf.global.button.delete{/lang}" data-object-id="{@$menuItemNode->itemID}" data-confirm-message-html="{lang __encode=true}wcf.acp.menu.item.delete.confirmMessage{/lang}"></span>
70 {else}
71 <span class="icon icon16 fa-times disabled" title="{lang}wcf.global.button.delete{/lang}"></span>
72 {/if}
73
74 {event name='itemButtons'}
75 </span>
76 </span>
77
78 <ol class="sortableList" data-object-id="{@$menuItemNode->itemID}">{if !$menuItemNode->hasChildren()}</ol></li>{/if}
79
80 {if !$menuItemNode->hasChildren() && $menuItemNode->isLastSibling()}
81 {@"</ol></li>"|str_repeat:$menuItemNode->getOpenParentNodes()}
82 {/if}
83 {/foreach}
84 {/content}
85 </ol>
86 </div>
87
88 <div class="formSubmit">
89 <button class="button buttonPrimary" data-type="submit">{lang}wcf.global.button.saveSorting{/lang}</button>
90 </div>
91 {hascontentelse}
92 <p class="info">{lang}wcf.global.noItems{/lang}</p>
93 {/hascontent}
94
95 {include file='footer'}