Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 35 additions & 35 deletions com.woltlab.wcf/clipboardAction.xml
Original file line number Diff line number Diff line change
Expand Up @@ -121,41 +121,6 @@
</pages>
</action>
<!-- /com.woltlab.wcf.media -->
<action name="assignUserByClipboard">
<actionclassname>wcf\system\clipboard\action\ModerationQueueClipboardAction</actionclassname>
<showorder>1</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
<action name="enableContent">
<actionclassname>wcf\system\clipboard\action\ModerationQueueActivationClipboardAction</actionclassname>
<showorder>2</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
<action name="removeActivationContent">
<actionclassname>wcf\system\clipboard\action\ModerationQueueActivationClipboardAction</actionclassname>
<showorder>3</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
<action name="removeReport">
<actionclassname>wcf\system\clipboard\action\ModerationQueueReportClipboardAction</actionclassname>
<showorder>4</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
<action name="removeReportContent">
<actionclassname>wcf\system\clipboard\action\ModerationQueueReportClipboardAction</actionclassname>
<showorder>5</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
</import>
<delete>
<!-- com.woltlab.wcf.article -->
Expand Down Expand Up @@ -217,5 +182,40 @@
</pages>
</action>
<!-- com.woltlab.wcf.tag -->
<action name="assignUserByClipboard">
<actionclassname>wcf\system\clipboard\action\ModerationQueueClipboardAction</actionclassname>
<showorder>1</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
<action name="enableContent">
<actionclassname>wcf\system\clipboard\action\ModerationQueueActivationClipboardAction</actionclassname>
<showorder>2</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
<action name="removeActivationContent">
<actionclassname>wcf\system\clipboard\action\ModerationQueueActivationClipboardAction</actionclassname>
<showorder>3</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
<action name="removeReport">
<actionclassname>wcf\system\clipboard\action\ModerationQueueReportClipboardAction</actionclassname>
<showorder>4</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
<action name="removeReportContent">
<actionclassname>wcf\system\clipboard\action\ModerationQueueReportClipboardAction</actionclassname>
<showorder>5</showorder>
<pages>
<page>wcf\page\ModerationListPage</page>
</pages>
</action>
</delete>
</data>
3 changes: 3 additions & 0 deletions com.woltlab.wcf/fileDelete.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2723,6 +2723,9 @@
<file>lib/system/clipboard/action/UserExtendedClipboardAction.class.php</file>
<file>lib/system/clipboard/action/ArticleClipboardAction.class.php</file>
<file>lib/system/clipboard/action/TagClipboardAction.class.php</file>
<file>lib/system/clipboard/action/ModerationQueueReportClipboardAction.class.php</file>
<file>lib/system/clipboard/action/ModerationQueueClipboardAction.class.php</file>
<file>lib/system/clipboard/action/ModerationQueueActivationClipboardAction.class.php</file>
<file>lib/system/condition/INoticeCondition.class.php</file>
<file>lib/system/condition/UserReputationCondition.class.php</file>
<file>lib/system/cronjob/CleanUpCronjobLogCronjob.class.php</file>
Expand Down
8 changes: 3 additions & 5 deletions com.woltlab.wcf/objectType.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,6 @@
<definitionname>com.woltlab.wcf.clipboardItem</definitionname>
<listclassname>wcf\data\article\ArticleList</listclassname>
</type>
<type>
<name>com.woltlab.wcf.moderation.queue</name>
<definitionname>com.woltlab.wcf.clipboardItem</definitionname>
<listclassname>wcf\data\moderation\queue\ViewableModerationQueueList</listclassname>
</type>
<!-- /clipboard items -->
<!-- articles -->
<type>
Expand Down Expand Up @@ -1814,5 +1809,8 @@
<type name="com.woltlab.wcf.sitemap">
<definitionname>com.woltlab.wcf.rebuildData</definitionname>
</type>
<type name="com.woltlab.wcf.moderation.queue">
<definitionname>com.woltlab.wcf.clipboardItem</definitionname>
</type>
</delete>
</data>
254 changes: 4 additions & 250 deletions com.woltlab.wcf/templates/moderationList.tpl
Original file line number Diff line number Diff line change
@@ -1,269 +1,23 @@
{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}
{capture assign='pageTitle'}{lang}wcf.moderation.items{/lang}{if $gridView->getPageNo() > 1} - {lang pageNo=$gridView->getPageNo()}wcf.page.pageNo{/lang}{/if}{/capture}

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

{capture assign='sidebarRight'}
{event name='sidebarBoxes'}
{/capture}

{capture assign='contentInteractionPagination'}
{pages print=true assign=pagesLinks controller='ModerationList' link="definitionID=$definitionID&assignedUserID=$assignedUserID&status=$status&pageNo=%d&sortField=$sortField&sortOrder=$sortOrder"}
{/capture}

{capture assign='contentInteractionButtons'}
<button type="button" class="markAllAsReadButton contentInteractionButton button small jsOnly">{icon name='check'} <span>{lang}wcf.global.button.markAllAsRead{/lang}</span></button>
<a href="{link controller='DeletedContentList'}{/link}" class="contentInteractionButton button small">{icon name='trash-can'} <span>{lang}wcf.moderation.showDeletedContent{/lang}</span></a>
{/capture}

{include file='header'}

{if $objects|count}
<div class="section tabularBox messageGroupList moderationList moderationQueueEntryList jsClipboardContainer" data-type="com.woltlab.wcf.moderation.queue">
<ol class="tabularList">
<li class="tabularListRow tabularListRowHead">
<ol class="tabularListColumns">
<li class="columnMark jsOnly"><label><input type="checkbox" class="jsClipboardMarkAll"></label></li>

<li class="columnSort">
<ul class="inlineList">
<li>
<a
class="jsTooltip"
href="{link controller='ModerationList'}definitionID={@$definitionID}&assignedUserID={@$assignedUserID}&status={@$status}&pageNo={@$pageNo}&sortField={$sortField}&sortOrder={if $sortOrder == 'ASC'}DESC{else}ASC{/if}{/link}"
title="{lang}wcf.search.sortBy{/lang} ({lang}wcf.global.sortOrder.{if $sortOrder === 'ASC'}ascending{else}descending{/if}{/lang})"
>
{if $sortOrder === 'ASC'}
{icon name='arrow-down-short-wide'}
{else}
{icon name='arrow-down-wide-short'}
{/if}
</a>
</li>
<li>
<div class="dropdown">
<span class="dropdownToggle">{lang}wcf.moderation.{$sortField}{/lang}</span>

<ul class="dropdownMenu">
{foreach from=$validSortFields item=_sortField}
<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>
{/foreach}
</ul>
</div>
</li>
</ul>
</li>
{hascontent}
<li class="columnFilter">
<ul class="inlineList">
{content}
{if $definitionID}
<li class="jsTooltip" title="{lang}wcf.moderation.filterByType{/lang}">
{icon name='tag'}
{lang}wcf.moderation.type.{$availableDefinitions[$definitionID]}{/lang}
</li>
{/if}

{if !$assignedUserID || $assignedUserID == $__wcf->getUser()->userID}
<li class="jsTooltip" title="{lang}wcf.moderation.filterByUser{/lang}">
{icon name='user'}
{if !$assignedUserID}
{lang}wcf.moderation.filterByUser.nobody{/lang}
{else}
{lang}wcf.moderation.filterByUser.myself{/lang}
{/if}
</li>
{/if}

{if $status == -1 || $status == 2}
<li class="jsTooltip" title="{lang}wcf.moderation.status{/lang}">
{if $status == -1}
{icon name='circle'}
{lang}wcf.moderation.status.outstanding{/lang}
{else}
{icon name='circle-check'}
{lang}wcf.moderation.status.done{/lang}
{/if}
</li>
{/if}
{/content}
</ul>
</li>
{/hascontent}
<li class="columnApplyFilter jsOnly">
<button type="button" class="button small jsStaticDialog" data-dialog-id="moderationListSortFilter">{icon name='filter'} {lang}wcf.global.filter{/lang}</button>
</li>
</ol>
</li>

{foreach from=$objects item=entry}
<li class="tabularListRow">
<ol class="tabularListColumns messageGroup moderationQueueEntry jsClipboardObject{if $entry->isNew()} new{/if}" data-queue-id="{@$entry->queueID}">
<li class="columnMark jsOnly">
<label><input type="checkbox" class="jsClipboardItem" data-object-id="{@$entry->getObjectID()}"></label>
</li>
<li class="columnIcon columnAvatar">
<div>
<p{if $entry->isNew()} title="{lang}wcf.moderation.markAsRead.doubleClick{/lang}"{/if}>{@$entry->getUserProfile()->getAvatar()->getImageTag(48)}</p>

{if $entry->assignedUserID}
<small class="myAvatar jsTooltip" title="{lang}wcf.moderation.assignedUser{/lang}">{@$entry->getAssignedUserProfile()->getAvatar()->getImageTag(24)}</small>
{/if}
</div>
</li>
<li class="columnSubject">
<ul class="labelList">
<li><span class="badge label">{$entry->getLabel()}</span></li>
</ul>

<h3>
<a href="{$entry->getLink()}" class="messageGroupLink">{$entry->getTitle()}</a>
{if $entry->comments}
<span class="badge messageGroupCounterMobile">{@$entry->comments|shortUnit}</span>
{/if}
</h3>

<ul class="inlineList dotSeparated small messageGroupInfo">
<li class="messageGroupAuthor">{if $entry->getAffectedObject()->getUserID()}{user object=$entry->getUserProfile()}{else}{$entry->getAffectedObject()->getUsername()}{/if}</li>
<li class="messageGroupTime">{@$entry->getAffectedObject()->getTime()|time}</li>
<li>{lang}wcf.moderation.type.{@$entry->getObjectTypeName()}{/lang}</li>

{event name='messageGroupInfo'}
</ul>

<ul class="messageGroupInfoMobile">
<li class="messageGroupAuthorMobile">{$entry->getAffectedObject()->getUsername()}</li>
<li class="messageGroupLastPostTimeMobile">{if $entry->lastChangeTime}{@$entry->lastChangeTime|time}{/if}</li>
</ul>

{if $entry->assignedUserID}
<small class="moderationQueueEntryAssignedUser">
{lang}wcf.moderation.assignedUser{/lang}: <a href="{link controller='User' id=$entry->assignedUserID}{/link}" class="userLink" data-object-id="{@$entry->assignedUserID}">{$entry->assignedUsername}</a>
</small>
{/if}

{event name='moderationQueueEntryData'}
</li>
<li class="columnStats">
<dl class="plain statsDataList">
<dt>{lang}wcf.global.comments{/lang}</dt>
<dd>{@$entry->comments|shortUnit}</dd>
</dl>

<div class="messageGroupListStatsSimple">{if $entry->comments}{icon name='comment'} {@$entry->comments|shortUnit}{/if}</div>
</li>
<li class="columnLastPost columnDate">
{if $entry->lastChangeTime}{@$entry->lastChangeTime|time}{/if}
</li>

{event name='columns'}
</ol>
</li>
{/foreach}
</ol>
</div>

<footer class="contentFooter">
{hascontent}
<div class="paginationBottom">
{content}{@$pagesLinks}{/content}
</div>
{/hascontent}

{hascontent}
<nav class="contentFooterNavigation">
<ul>
{content}{event name='contentFooterNavigation'}{/content}
</ul>
</nav>
{/hascontent}
</footer>
{else}
<woltlab-core-notice type="info">{lang}wcf.moderation.noEntries{/lang}</woltlab-core-notice>
{/if}

<div id="moderationListSortFilter" class="jsStaticDialogContent" data-title="{lang}wcf.moderation.filter{/lang}">
<form method="post" action="{link controller='ModerationList'}{/link}">
<div class="section">
<dl>
<dt><label for="definitionID">{lang}wcf.moderation.filterByType{/lang}</label></dt>
<dd>
<select name="definitionID" id="definitionID">
<option value="0">{lang}wcf.moderation.type.all{/lang}</option>
{foreach from=$availableDefinitions key=__definitionID item=definitionName}
<option value="{$__definitionID}"{if $__definitionID == $definitionID} selected{/if}>{lang}wcf.moderation.type.{$definitionName}{/lang}</option>
{/foreach}

{event name='filterModerationType'}
</select>
</dd>
</dl>

<dl>
<dt><label for="assignedUserID">{lang}wcf.moderation.filterByUser{/lang}</label></dt>
<dd>
<select name="assignedUserID" id="assignedUserID">
<option value="-1"{if $assignedUserID == -1} selected{/if}>{lang}wcf.moderation.filterByUser.allEntries{/lang}</option>
<option value="0"{if $assignedUserID == 0} selected{/if}>{lang}wcf.moderation.filterByUser.nobody{/lang}</option>
<option value="{$__wcf->getUser()->userID}"{if $assignedUserID == $__wcf->getUser()->userID} selected{/if}>{lang}wcf.moderation.filterByUser.myself{/lang}</option>

{event name='filterAssignedUser'}
</select>
</dd>
</dl>

<dl>
<dt><label for="status">{lang}wcf.moderation.status{/lang}</label></dt>
<dd>
<select name="status" id="status">
<option value="-1"{if $status == -1} selected{/if}>{lang}wcf.moderation.status.outstanding{/lang}</option>
<option value="2"{if $status == 2} selected{/if}>{lang}wcf.moderation.status.done{/lang}</option>

{event name='filterStatus'}
</select>
</dd>
</dl>
</div>

<div class="formSubmit">
<input type="submit" value="{lang}wcf.global.button.submit{/lang}" accesskey="s">
<a href="{link controller='ModerationList'}{/link}" class="button">{lang}wcf.global.button.reset{/lang}</a>
<input type="hidden" name="sortField" value="{$sortField}">
<input type="hidden" name="sortOrder" value="{$sortOrder}">
</div>
</form>
<div class="section">
{unsafe:$gridView->render()}
</div>

<script data-relocate="true">
require([
'Language',
'WoltLabSuite/Core/Controller/Clipboard',
'WoltLabSuite/Core/Ui/Moderation/Clipboard/AssignUser'
], (
Language,
ControllerClipboard,
UiModerationClipboardAssignUser
) => {
Language.addObject({
'wcf.moderation.assignedUser': '{jslang}wcf.moderation.assignedUser{/jslang}',
'wcf.moderation.assignedUser.change': '{jslang}wcf.moderation.assignedUser.change{/jslang}',
'wcf.moderation.assignedUser.error.notAffected': '{jslang}wcf.moderation.assignedUser.error.notAffected{/jslang}',
'wcf.moderation.assignedUser.nobody': '{jslang}wcf.moderation.assignedUser.nobody{/jslang}',
'wcf.user.username.error.notFound': '{jslang __literal=true}wcf.user.username.error.notFound{/jslang}',
});

ControllerClipboard.setup({
hasMarkedItems: {if $hasMarkedItems}true{else}false{/if},
pageClassName: 'wcf\\page\\ModerationListPage',
});

UiModerationClipboardAssignUser.setup();
});
</script>

<script data-relocate="true">
require(['WoltLabSuite/Core/Ui/Moderation/MarkAsRead'], (MarkAsRead) => {
MarkAsRead.setup();
});
require(['WoltLabSuite/Core/Ui/Moderation/MarkAllAsRead'], (MarkAllAsRead) => {
MarkAllAsRead.setup();
});
Expand Down
Loading