Skip to content

Commit 1a8cb3d

Browse files
committed
Migrate ModerationListPage to grid view
1 parent dbf99ec commit 1a8cb3d

File tree

3 files changed

+239
-403
lines changed

3 files changed

+239
-403
lines changed

com.woltlab.wcf/templates/moderationList.tpl

Lines changed: 5 additions & 247 deletions
Original file line numberDiff line numberDiff line change
@@ -1,265 +1,23 @@
1-
{capture assign='pageTitle'}{if $status == 2}{lang}wcf.moderation.doneItems{/lang}{else}{lang}wcf.moderation.outstandingItems{/lang}{/if}{if $pageNo > 1} - {lang}wcf.page.pageNo{/lang}{/if}{/capture}
1+
{capture assign='pageTitle'}{*{if $status == 2}{lang}wcf.moderation.doneItems{/lang}{else}{lang}wcf.moderation.outstandingItems{/lang}{/if}*}{if $gridView->getPageNo() > 1} - {lang pageNo=$gridView->getPageNo()}wcf.page.pageNo{/lang}{/if}{/capture}
22

3-
{capture assign='contentTitle'}{if $status == 2}{lang}wcf.moderation.doneItems{/lang}{else}{lang}wcf.moderation.outstandingItems{/lang}{/if} <span class="badge">{#$items}</span>{/capture}
3+
{capture assign='contentTitle'}{*{if $status == 2}{lang}wcf.moderation.doneItems{/lang}{else}{lang}wcf.moderation.outstandingItems{/lang}{/if}*} <span class="badge">{#$gridView->countRows()}</span>{/capture}
44

55
{capture assign='sidebarRight'}
66
{event name='sidebarBoxes'}
77
{/capture}
88

9-
{capture assign='contentInteractionPagination'}
10-
{pages print=true assign=pagesLinks controller='ModerationList' link="definitionID=$definitionID&assignedUserID=$assignedUserID&status=$status&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"}
11-
{/capture}
12-
139
{capture assign='contentInteractionButtons'}
1410
<button type="button" class="markAllAsReadButton contentInteractionButton button small jsOnly">{icon name='check'} <span>{lang}wcf.global.button.markAllAsRead{/lang}</span></button>
1511
<a href="{link controller='DeletedContentList'}{/link}" class="contentInteractionButton button small">{icon name='trash-can'} <span>{lang}wcf.moderation.showDeletedContent{/lang}</span></a>
1612
{/capture}
1713

1814
{include file='header'}
1915

20-
{if $objects|count}
21-
<div class="section tabularBox messageGroupList moderationList moderationQueueEntryList jsClipboardContainer" data-type="com.woltlab.wcf.moderation.queue">
22-
<ol class="tabularList">
23-
<li class="tabularListRow tabularListRowHead">
24-
<ol class="tabularListColumns">
25-
<li class="columnMark jsOnly"><label><input type="checkbox" class="jsClipboardMarkAll"></label></li>
26-
27-
<li class="columnSort">
28-
<ul class="inlineList">
29-
<li>
30-
<a
31-
class="jsTooltip"
32-
href="{link controller='ModerationList'}definitionID={@$definitionID}&assignedUserID={@$assignedUserID}&status={@$status}&pageNo={@$pageNo}&sortField={$sortField}&sortOrder={if $sortOrder == 'ASC'}DESC{else}ASC{/if}{/link}"
33-
title="{lang}wcf.search.sortBy{/lang} ({lang}wcf.global.sortOrder.{if $sortOrder === 'ASC'}ascending{else}descending{/if}{/lang})"
34-
>
35-
{if $sortOrder === 'ASC'}
36-
{icon name='arrow-down-short-wide'}
37-
{else}
38-
{icon name='arrow-down-wide-short'}
39-
{/if}
40-
</a>
41-
</li>
42-
<li>
43-
<div class="dropdown">
44-
<span class="dropdownToggle">{lang}wcf.moderation.{$sortField}{/lang}</span>
45-
46-
<ul class="dropdownMenu">
47-
{foreach from=$validSortFields item=_sortField}
48-
<li{if $_sortField === $sortField} class="active"{/if}><a href="{link controller='ModerationList'}definitionID={@$definitionID}&assignedUserID={@$assignedUserID}&status={@$status}&pageNo={@$pageNo}&sortField={$_sortField}&sortOrder={if $sortField == $_sortField && $sortOrder == 'ASC'}DESC{else}ASC{/if}{/link}">{lang}wcf.moderation.{$_sortField}{/lang}</a></li>
49-
{/foreach}
50-
</ul>
51-
</div>
52-
</li>
53-
</ul>
54-
</li>
55-
{hascontent}
56-
<li class="columnFilter">
57-
<ul class="inlineList">
58-
{content}
59-
{if $definitionID}
60-
<li class="jsTooltip" title="{lang}wcf.moderation.filterByType{/lang}">
61-
{icon name='tag'}
62-
{lang}wcf.moderation.type.{$availableDefinitions[$definitionID]}{/lang}
63-
</li>
64-
{/if}
65-
66-
{if !$assignedUserID || $assignedUserID == $__wcf->getUser()->userID}
67-
<li class="jsTooltip" title="{lang}wcf.moderation.filterByUser{/lang}">
68-
{icon name='user'}
69-
{if !$assignedUserID}
70-
{lang}wcf.moderation.filterByUser.nobody{/lang}
71-
{else}
72-
{lang}wcf.moderation.filterByUser.myself{/lang}
73-
{/if}
74-
</li>
75-
{/if}
76-
77-
{if $status == -1 || $status == 2}
78-
<li class="jsTooltip" title="{lang}wcf.moderation.status{/lang}">
79-
{if $status == -1}
80-
{icon name='circle'}
81-
{lang}wcf.moderation.status.outstanding{/lang}
82-
{else}
83-
{icon name='circle-check'}
84-
{lang}wcf.moderation.status.done{/lang}
85-
{/if}
86-
</li>
87-
{/if}
88-
{/content}
89-
</ul>
90-
</li>
91-
{/hascontent}
92-
<li class="columnApplyFilter jsOnly">
93-
<button type="button" class="button small jsStaticDialog" data-dialog-id="moderationListSortFilter">{icon name='filter'} {lang}wcf.global.filter{/lang}</button>
94-
</li>
95-
</ol>
96-
</li>
97-
98-
{foreach from=$objects item=entry}
99-
<li class="tabularListRow">
100-
<ol class="tabularListColumns messageGroup moderationQueueEntry jsClipboardObject{if $entry->isNew()} new{/if}" data-queue-id="{@$entry->queueID}">
101-
<li class="columnMark jsOnly">
102-
<label><input type="checkbox" class="jsClipboardItem" data-object-id="{@$entry->getObjectID()}"></label>
103-
</li>
104-
<li class="columnIcon columnAvatar">
105-
<div>
106-
<p{if $entry->isNew()} title="{lang}wcf.moderation.markAsRead.doubleClick{/lang}"{/if}>{@$entry->getUserProfile()->getAvatar()->getImageTag(48)}</p>
107-
108-
{if $entry->assignedUserID}
109-
<small class="myAvatar jsTooltip" title="{lang}wcf.moderation.assignedUser{/lang}">{@$entry->getAssignedUserProfile()->getAvatar()->getImageTag(24)}</small>
110-
{/if}
111-
</div>
112-
</li>
113-
<li class="columnSubject">
114-
<ul class="labelList">
115-
<li><span class="badge label">{$entry->getLabel()}</span></li>
116-
</ul>
117-
118-
<h3>
119-
<a href="{$entry->getLink()}" class="messageGroupLink">{$entry->getTitle()}</a>
120-
{if $entry->comments}
121-
<span class="badge messageGroupCounterMobile">{@$entry->comments|shortUnit}</span>
122-
{/if}
123-
</h3>
124-
125-
<ul class="inlineList dotSeparated small messageGroupInfo">
126-
<li class="messageGroupAuthor">{if $entry->getAffectedObject()->getUserID()}{user object=$entry->getUserProfile()}{else}{$entry->getAffectedObject()->getUsername()}{/if}</li>
127-
<li class="messageGroupTime">{@$entry->getAffectedObject()->getTime()|time}</li>
128-
<li>{lang}wcf.moderation.type.{@$entry->getObjectTypeName()}{/lang}</li>
129-
130-
{event name='messageGroupInfo'}
131-
</ul>
132-
133-
<ul class="messageGroupInfoMobile">
134-
<li class="messageGroupAuthorMobile">{$entry->getAffectedObject()->getUsername()}</li>
135-
<li class="messageGroupLastPostTimeMobile">{if $entry->lastChangeTime}{@$entry->lastChangeTime|time}{/if}</li>
136-
</ul>
137-
138-
{if $entry->assignedUserID}
139-
<small class="moderationQueueEntryAssignedUser">
140-
{lang}wcf.moderation.assignedUser{/lang}: <a href="{link controller='User' id=$entry->assignedUserID}{/link}" class="userLink" data-object-id="{@$entry->assignedUserID}">{$entry->assignedUsername}</a>
141-
</small>
142-
{/if}
143-
144-
{event name='moderationQueueEntryData'}
145-
</li>
146-
<li class="columnStats">
147-
<dl class="plain statsDataList">
148-
<dt>{lang}wcf.global.comments{/lang}</dt>
149-
<dd>{@$entry->comments|shortUnit}</dd>
150-
</dl>
151-
152-
<div class="messageGroupListStatsSimple">{if $entry->comments}{icon name='comment'} {@$entry->comments|shortUnit}{/if}</div>
153-
</li>
154-
<li class="columnLastPost columnDate">
155-
{if $entry->lastChangeTime}{@$entry->lastChangeTime|time}{/if}
156-
</li>
157-
158-
{event name='columns'}
159-
</ol>
160-
</li>
161-
{/foreach}
162-
</ol>
163-
</div>
164-
165-
<footer class="contentFooter">
166-
{hascontent}
167-
<div class="paginationBottom">
168-
{content}{@$pagesLinks}{/content}
169-
</div>
170-
{/hascontent}
171-
172-
{hascontent}
173-
<nav class="contentFooterNavigation">
174-
<ul>
175-
{content}{event name='contentFooterNavigation'}{/content}
176-
</ul>
177-
</nav>
178-
{/hascontent}
179-
</footer>
180-
{else}
181-
<woltlab-core-notice type="info">{lang}wcf.moderation.noEntries{/lang}</woltlab-core-notice>
182-
{/if}
183-
184-
<div id="moderationListSortFilter" class="jsStaticDialogContent" data-title="{lang}wcf.moderation.filter{/lang}">
185-
<form method="post" action="{link controller='ModerationList'}{/link}">
186-
<div class="section">
187-
<dl>
188-
<dt><label for="definitionID">{lang}wcf.moderation.filterByType{/lang}</label></dt>
189-
<dd>
190-
<select name="definitionID" id="definitionID">
191-
<option value="0">{lang}wcf.moderation.type.all{/lang}</option>
192-
{foreach from=$availableDefinitions key=__definitionID item=definitionName}
193-
<option value="{$__definitionID}"{if $__definitionID == $definitionID} selected{/if}>{lang}wcf.moderation.type.{$definitionName}{/lang}</option>
194-
{/foreach}
195-
196-
{event name='filterModerationType'}
197-
</select>
198-
</dd>
199-
</dl>
200-
201-
<dl>
202-
<dt><label for="assignedUserID">{lang}wcf.moderation.filterByUser{/lang}</label></dt>
203-
<dd>
204-
<select name="assignedUserID" id="assignedUserID">
205-
<option value="-1"{if $assignedUserID == -1} selected{/if}>{lang}wcf.moderation.filterByUser.allEntries{/lang}</option>
206-
<option value="0"{if $assignedUserID == 0} selected{/if}>{lang}wcf.moderation.filterByUser.nobody{/lang}</option>
207-
<option value="{$__wcf->getUser()->userID}"{if $assignedUserID == $__wcf->getUser()->userID} selected{/if}>{lang}wcf.moderation.filterByUser.myself{/lang}</option>
208-
209-
{event name='filterAssignedUser'}
210-
</select>
211-
</dd>
212-
</dl>
213-
214-
<dl>
215-
<dt><label for="status">{lang}wcf.moderation.status{/lang}</label></dt>
216-
<dd>
217-
<select name="status" id="status">
218-
<option value="-1"{if $status == -1} selected{/if}>{lang}wcf.moderation.status.outstanding{/lang}</option>
219-
<option value="2"{if $status == 2} selected{/if}>{lang}wcf.moderation.status.done{/lang}</option>
220-
221-
{event name='filterStatus'}
222-
</select>
223-
</dd>
224-
</dl>
225-
</div>
226-
227-
<div class="formSubmit">
228-
<input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s">
229-
<a href="{link controller='ModerationList'}{/link}" class="button">{lang}wcf.global.button.reset{/lang}</a>
230-
<input type="hidden" name="sortField" value="{$sortField}">
231-
<input type="hidden" name="sortOrder" value="{$sortOrder}">
232-
</div>
233-
</form>
16+
<div class="section">
17+
{unsafe:$gridView->render()}
23418
</div>
23519

236-
<script data-relocate="true">
237-
require([
238-
'Language',
239-
'WoltLabSuite/Core/Controller/Clipboard',
240-
'WoltLabSuite/Core/Ui/Moderation/Clipboard/AssignUser'
241-
], (
242-
Language,
243-
ControllerClipboard,
244-
UiModerationClipboardAssignUser
245-
) => {
246-
Language.addObject({
247-
'wcf.moderation.assignedUser': '{jslang}wcf.moderation.assignedUser{/jslang}',
248-
'wcf.moderation.assignedUser.change': '{jslang}wcf.moderation.assignedUser.change{/jslang}',
249-
'wcf.moderation.assignedUser.error.notAffected': '{jslang}wcf.moderation.assignedUser.error.notAffected{/jslang}',
250-
'wcf.moderation.assignedUser.nobody': '{jslang}wcf.moderation.assignedUser.nobody{/jslang}',
251-
'wcf.user.username.error.notFound': '{jslang __literal=true}wcf.user.username.error.notFound{/jslang}',
252-
});
253-
254-
ControllerClipboard.setup({
255-
hasMarkedItems: {if $hasMarkedItems}true{else}false{/if},
256-
pageClassName: 'wcf\\page\\ModerationListPage',
257-
});
258-
259-
UiModerationClipboardAssignUser.setup();
260-
});
261-
</script>
262-
20+
<!-- TODO -->
26321
<script data-relocate="true">
26422
require(['WoltLabSuite/Core/Ui/Moderation/MarkAsRead'], (MarkAsRead) => {
26523
MarkAsRead.setup();

0 commit comments

Comments
 (0)