create_custom_menu_with_items.html
1 <link rel="stylesheet" href="css/admin/plugins/menus/scrollable-lists.css">
2 <#include "/admin/plugins/menus/macro/custom_menu_macro.html">
3
4 <@pageContainer>
5 <@pageColumn>
6 <@pageHeader title='#i18n{menus.create_custom_menu_with_items.pageTitle}' />
7
8 <@row>
9 <@columns md=12>
10 <@tform method='post' action='jsp/admin/plugins/menus/ManageCustomMenus.jsp?action=searchItems' boxed=true>
11
12 <@input type='hidden' name='id' value=id_current_custom_menu!'' />
13 <br>
14 <@formGroup labelKey='#i18n{menus.create_custom_menu_with_items.labelSearch}' labelFor='search'>
15 <@row>
16 <@columns md=8>
17 <@div class="search-input-container">
18 <@input type='text' class="form-control" id="searchInput" name='search' value=search_criteria!'' placeHolder='#i18n{menus.create_custom_menu_with_items.placeholderSearch}' />
19 </@div>
20 </@columns>
21 <@columns md=4>
22 <@button type='submit' name='searchItemsButton' value="search" buttonIcon='search' title='#i18n{menus.create_custom_menu_with_items.labelSearch}' color='primary' />
23 <@button type='submit' name='searchItemsButton' value="clean" buttonIcon='times' title='#i18n{menus.create_custom_menu_with_items.buttonCleanSearch}' color='secondary' />
24 </@columns>
25 </@row>
26 <@formHelp>#i18n{menus.create_custom_menu_with_items.helpSearch}</@formHelp>
27 </@formGroup>
28 <br>
29 <!-- List of Page, Xpage and SubMenu -->
30 <@row class='mt-3'>
31 <@columns md=4>
32 <@box>
33 <@boxHeader class='text-center'>
34 <h5>#i18n{menus.create_custom_menu_with_items.labelListPages}</h5>
35 </@boxHeader>
36 <@boxBody>
37 <div class="scrollable-list" style="max-height: 200px !important; overflow-y: auto !important; border: 1px solid #dee2e6; border-radius: 0.375rem;">
38 <@listGroup>
39 <#if available_pages_list?? && available_pages_list?size > 0>
40 <#list available_pages_list as page>
41 <@listGroupItem id=page.code!'' class='hoverable-item' params='data-type="page"'>
42 ${page.name}
43 </@listGroupItem>
44 </#list>
45 </#if>
46 </@listGroup>
47 </div>
48 </@boxBody>
49 </@box>
50 </@columns>
51 <@columns md=4>
52 <@box>
53 <@boxHeader class='text-center'>
54 <h5>#i18n{menus.create_custom_menu_with_items.labelListXPages}</h5>
55 </@boxHeader>
56 <@boxBody>
57 <div class="scrollable-list" style="max-height: 200px !important; overflow-y: auto !important; border: 1px solid #dee2e6; border-radius: 0.375rem;">
58 <@listGroup>
59 <#if available_xpages_list?? && available_xpages_list?size > 0>
60 <#list available_xpages_list as xpage>
61 <@listGroupItem id=xpage.code!'' class='hoverable-item' params='data-type="xpage"'>
62 ${xpage.name}
63 </@listGroupItem>
64 </#list>
65 </#if>
66 </@listGroup>
67 </div>
68 </@boxBody>
69 </@box>
70 </@columns>
71 <@columns md=4>
72 <@box>
73 <@boxHeader class='text-center'>
74 <h5>#i18n{menus.create_custom_menu_with_items.labelListMenus}</h5>
75 </@boxHeader>
76 <@boxBody>
77 <div class="scrollable-list" style="max-height: 200px !important; overflow-y: auto !important; border: 1px solid #dee2e6; border-radius: 0.375rem;">
78 <@listGroup>
79 <#if available_menus_list?? && available_menus_list?size > 0>
80 <#list available_menus_list as menu>
81 <@listGroupItem id=menu.code!'' class='hoverable-item' params='data-type="menu"'>
82 ${menu.name}
83 </@listGroupItem>
84 </#list>
85 </#if>
86 </@listGroup>
87 </div>
88 </@boxBody>
89 </@box>
90 </@columns>
91 </@row>
92 </@tform>
93 </@columns>
94 </@row>
95
96 <@row class='mt-5'>
97 <@messages errors=errors/>
98 <@columns md=4>
99 <@box>
100 <@boxHeader class='text-center'>
101 <h4>#i18n{menus.create_custom_menu_with_items.formPreviewItemTitle}</h4>
102 </@boxHeader>
103 <@boxBody>
104
105 <@tform method='post' action='jsp/admin/plugins/menus/ManageCustomMenus.jsp?action=createCustomMenuItems' id='add-item-form'>
106
107 <@messages errors=create_items_errors_list/>
108 <@input type='hidden' name='parent_menu_id' value=id_current_custom_menu!'' />
109 <@input type='hidden' id='source_id_item' name='source_item_id' value='' />
110
111 <@formGroup id='type-group' labelKey='#i18n{menus.create_custom_menu_with_items.labelPreviewItemType}' labelFor='item_type' mandatory=true>
112 <@select name='type' id='item_type' items=item_types_list />
113 </@formGroup>
114
115 <@formGroup id='dynamic-group' params="hidden=true">
116 <@checkBox name='is_label_dynamic' id='item_dynamic' labelKey='#i18n{menus.create_custom_menu_with_items.labelPreviewItemIsLabelDynamic}' value='1' />
117 <@formHelp>#i18n{menus.create_custom_menu_with_items.helpPreviewItemIsLabelDynamic}</@formHelp>
118 </@formGroup>
119
120 <@formGroup id='blank-group' params="hidden=true">
121 <@checkBox name='is_blank' id='item_blank' labelKey='#i18n{menus.create_custom_menu_with_items.labelPreviewItemIsBlank}' value='1'/>
122 <@formHelp>#i18n{menus.create_custom_menu_with_items.helpPreviewItemIsBlank}</@formHelp>
123 </@formGroup>
124
125 <@formGroup id='label-group' labelKey='#i18n{menus.create_custom_menu_with_items.labelPreviewItemLabel}' labelFor='item_label' mandatory=true params="hidden=true">
126 <@input type='text' name='label' id='item_label' maxlength=50/>
127 <@formHelp>#i18n{menus.create_custom_menu_with_items.helpPreviewItemLabel}</@formHelp>
128 </@formGroup>
129
130 <@formGroup id='url-group' labelKey='#i18n{menus.create_custom_menu_with_items.labelPreviewItemUrl}' labelFor='item_url' mandatory=true params="hidden=true">
131 <@input type='text' name='url' id='item_url' />
132 <@formHelp>#i18n{menus.create_custom_menu_with_items.helpPreviewItemUrlPage}</@formHelp>
133 </@formGroup>
134
135 <@formGroup id='menu-group' labelKey='#i18n{menus.create_custom_menu_with_items.labelPreviewItemSubMenu} *' labelFor='item_target_menu' params="hidden=true">
136 <@select name="select_menu" id='item_target_menu' items=available_menus_list />
137 <@formHelp>#i18n{menus.create_custom_menu_with_items.helpPreviewItemSubMenu}</@formHelp>
138 </@formGroup>
139
140 <@formGroup>
141 <@button type='submit' buttonIcon='plus' title='#i18n{menus.create_custom_menu_with_items.buttonAddItem}' color='success' />
142 </@formGroup>
143 </@tform>
144 </@boxBody>
145 </@box>
146 </@columns>
147 <@columns class="col-md-1 d-flex justify-content-center align-items-center">
148 <i class="ti ti-arrow-right" style="font-size: 3rem; color: #007bff;"></i>
149 </@columns>
150 <@columns md=7>
151 <@box>
152 <@boxHeader class='text-center'>
153 <h4>#i18n{menus.create_custom_menu_with_items.previewMenuTitle}</h4>
154 </@boxHeader>
155 <@boxBody>
156 <@table>
157 <@tr>
158 <@th>#i18n{menus.create_custom_menu_with_items.labelColumnItemType}</@th>
159 <@th>#i18n{menus.create_custom_menu_with_items.labelColumnItemIdOrName}</@th>
160 <@th>#i18n{menus.create_custom_menu_with_items.labelColumnItemIsLabelDynamic}</@th>
161 <@th>#i18n{menus.create_custom_menu_with_items.labelColumnItemLabel}</@th>
162 <@th>#i18n{menus.create_custom_menu_with_items.labelColumnItemOrder}</@th>
163 <@th>#i18n{menus.create_custom_menu_with_items.labelColumnItemActions}</@th>
164 </@tr>
165 <#if custom_menu_items_list?? && custom_menu_items_list?size > 0>
166 <#if max_order_size??>
167 <#assign size_list = max_order_size />
168 <#else>
169 <#assign size_list = custom_menu_items_list?size />
170 </#if>
171 <#list custom_menu_items_list as item>
172 <@tr>
173 <@td>${item.type!''}</@td>
174 <@td>
175 <#if item.type!='menu'>
176 <#if item.sourceItemId?? && item.sourceItemId?trim?length > 0>
177 ${item.sourceItemId!''}
178 <#else>
179 <div class='text-muted'>#i18n{menus.create_custom_menu_with_items.labelCustomItem}</div>
180 </#if>
181 <#else>
182 <#assign matched_menu = ''>
183 <#list available_menus_list as menu>
184 <#if menu.code = item.sourceItemId>
185 <#assign matched_menu = menu.name>
186 <#break>
187 </#if>
188 </#list>
189 ${matched_menu}
190 </#if>
191 </@td>
192 <@td>
193 <#if item.isLabelDynamic( )?? && item.isLabelDynamic( )>
194 <span class="badge bg-success"><i class="ti ti-check"></i></span>
195 <#else>
196 <span class="badge bg-warning"><i class="ti ti-x"></i></span>
197 </#if>
198 </@td>
199 <@td>
200 <#if item.type='page' && item.isLabelDynamic( )?? && item.isLabelDynamic( )>
201 <#if available_pages_list?? && available_pages_list?size > 0 && item.sourceItemId??>
202 <#list available_pages_list as page>
203 <#if page.code=item.sourceItemId>
204 ${(page.name?? && page.name?has_content)?then(page.name?split("-")[0], "")}
205 </#if>
206 </#list>
207 </#if>
208 <#else>
209 ${item.label!''}
210 </#if>
211 </@td>
212 <@td>
213 <!-- SELECT LIST FOR ORDER CHANGE -->
214 <@tform type='inline' action='jsp/admin/plugins/menus/ManageCustomMenus.jsp?action=changeMenuItemsOrder&id=${item.id}'>
215 <@input type='hidden' name='id_item' value=item.id />
216 <@inputGroup>
217 <@comboOrders name='order_id' default_value=item.order!'' max=size_list />
218 <@inputGroupItem type='btn'>
219 <@button type='submit' buttonIcon='check' color='default' title='#i18n{menus.create_custom_menu_with_items.buttonChangeItemOrder}' hideTitle=['all'] size='sm'/>
220 </@inputGroupItem>
221 </@inputGroup>
222 </@tform>
223 </@td>
224 <@td>
225 <@offcanvas btnClass="btn-sm btnAddCanvas" size='25' targetUrl='jsp/admin/plugins/menus/ManageCustomMenus.jsp?view=modifyCustomMenuItem&id=${item.id}' targetElement='#modify-item-form' redirectForm=false id='custom-menu-item-modify-${item.id}' title='#i18n{menus.create_custom_menu_with_items.buttonModifyItem}' position='end' hideTitle=['all'] btnIcon='edit' />
226 <@aButton href='jsp/admin/plugins/menus/ManageCustomMenus.jsp?view=removeCustomMenuItem&id=${item.id}' title='#i18n{menus.create_custom_menu_with_items.buttonRemoveItem}' buttonIcon='trash' color='danger' hideTitle=['all'] size='sm' />
227 </@td>
228 </@tr>
229 </#list>
230 <#else>
231 <@tr>
232 <@td colspan=3 class='text-center text-muted'>#i18n{menus.create_custom_menu_with_items.labelNoItem}</@td>
233 </@tr>
234 </#if>
235 </@table>
236 <@paginationAdmin paginator=paginator combo=1 />
237 </@boxBody>
238 </@box>
239 </@columns>
240 </@row>
241
242 <!-- Bouton retour en bas de page -->
243 <@row class='mt-4'>
244 <@columns md=12 class='text-center'>
245 <@aButton href='jsp/admin/plugins/menus/ManageCustomMenus.jsp' buttonIcon='times' title='#i18n{portal.util.labelBack}' color='secondary' />
246 </@columns>
247 </@row>
248 </@pageColumn>
249 </@pageContainer>
250
251 <script src='js/plugins/menus/menus-searchbar.js'></script>