Skip to content

Commit

Permalink
Move around flagging a bit.
Browse files Browse the repository at this point in the history
* Moderators can now see the reason why something is flagged. This is absolutely necessary to evaluate if a pardon occurs. Moderators may currently additionally flag with their requested intentions/summary. This has been idle on response for several years and really has to be implemented this way.
* Moderators will only see Rank so that there isn't a flame war since @sizzlemctwizzle defined it as ~"dime a dozen".
* Moved flagger *(renamed to match)* to mod panel and put a danger class on it for those that can remove to prevent accidental removal *(hasn't happened yet but good idea)*
* Some twiddling with class usage in *bootstrap* UI

Applies to OpenUserJS#642

Note(s):
* This version of mustache generates a lot of extra UI code due to `{{#isAdmin}}` not being in scope in certain circumstances.
  • Loading branch information
Martii committed Jun 3, 2021
1 parent ff1ccce commit cf20fa6
Show file tree
Hide file tree
Showing 10 changed files with 242 additions and 116 deletions.
2 changes: 2 additions & 0 deletions controllers/flag.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ var flagLib = require('../libs/flag');
var statusCodePage = require('../libs/templateHelpers').statusCodePage;

//--- Configuration inclusions
var userRoles = require('../models/userRoles.json');

//---

Expand Down Expand Up @@ -184,6 +185,7 @@ exports.getFlaggedListForContent = function (aModelName, aOptions, aCallback) {

contentList[aContentKey].flaggedList.push({
name: aUser.name,
rank: userRoles[aUser.role],
reason: aFlagList[aFlagKey].reason,
since: aFlagList[aFlagKey].created
});
Expand Down
2 changes: 1 addition & 1 deletion controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ exports.home = function (aReq, aRes) {

async.parallel([
function (aCallback) {
if (!!!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
if (!!!options.isFlagged || !options.isMod) { // NOTE: Watchpoint
aCallback();
return;
}
Expand Down
2 changes: 1 addition & 1 deletion controllers/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ exports.view = function (aReq, aRes, aNext) {

async.parallel([
function (aCallback) {
if (!options.isAdmin) { // NOTE: Watchpoint
if (!options.isMod) { // NOTE: Watchpoint
aCallback();
return;
}
Expand Down
6 changes: 3 additions & 3 deletions controllers/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ exports.userListPage = function (aReq, aRes, aNext) {

async.parallel([
function (aCallback) {
if (!!!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
if (!!!options.isFlagged || !options.isMod) { // NOTE: Watchpoint
aCallback();
return;
}
Expand Down Expand Up @@ -471,7 +471,7 @@ exports.view = function (aReq, aRes, aNext) {

async.parallel([
function (aCallback) {
if (!options.isAdmin) { // NOTE: Watchpoint
if (!options.isMod) { // NOTE: Watchpoint
aCallback();
return;
}
Expand Down Expand Up @@ -703,7 +703,7 @@ exports.userScriptListPage = function (aReq, aRes, aNext) {

async.parallel([
function (aCallback) {
if (!!!options.isFlagged || !options.isAdmin) { // NOTE: Watchpoint
if (!!!options.isFlagged || !options.isMod) { // NOTE: Watchpoint
aCallback();
return;
}
Expand Down
17 changes: 0 additions & 17 deletions views/includes/scriptAdminToolsPanel.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,6 @@
</div>
</div>
<div class="panel-body">
{{#hasFlagged}}
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-4 control-label">Flagged</label>
<div class="col-sm-8">
<ul class="flaggedList">
{{#script.flaggedList}}
<li>
{{#name}}<span class="label label-info"><a href="/users/{{name}}">{{name}}</a></span>{{/name}}
<span title="{{since}}">{{#reason}}{{reason}}{{/reason}}{{^reason}}&hellip;{{/reason}}</span>
</li>
{{/script.flaggedList}}
</ul>
</div>
</div>
</div>
{{/hasFlagged}}
<div class="form-group">
<div class="input-group col-xs-12">
<span class="input-group-btn">
Expand Down
139 changes: 94 additions & 45 deletions views/includes/scriptList.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,51 +11,100 @@
</tr>
</thead>
<tbody>
{{#scriptList}}
<tr class="tr-link">
<td>
{{#showSourceNotices}}<span class="pull-right"><i class="fa fa-fw fa-exclamation-triangle" title="Source Code notices"></i></span>{{/showSourceNotices}}
{{#showSourceNoticesCritical}}<span class="pull-right"><i class="fa fa-fw fa-exclamation-circle" title="Critical Source Code notices"></i></span>{{/showSourceNoticesCritical}}
{{#_issueCount}}<span class="pull-right"><a href="{{{scriptIssuesPageUri}}}/open" title="Open issue discussions"><i class="fa fa-fw fa-commenting"></i>{{_issueCount}}</a></span>{{/_issueCount}}
<span class="script-icon hidden-xs" {{#icon16Url}}data-icon-src="{{{icon16Url}}}" data-icon-size="16"{{/icon16Url}}>
{{#isLib}}<i class="fa fa-fw fa-file-excel-o"></i>{{/isLib}}{{^isLib}}<i class="fa fa-fw fa-file-code-o"></i>{{/isLib}}
</span>
<a href="{{{scriptPageUrl}}}" class="tr-link-a"><b>{{name}}</b></a>
{{#meta.UserScript.version}}
<span class="script-version label label-default">{{value}}</span>
{{/meta.UserScript.version}}
<span class="inline-block">by <a href="{{{author.userPageUrl}}}">{{author.name}}</a></span>
{{#_description}}<p>{{_description}}{{#hasLongDescription}}<strong>&hellip;</strong>{{/hasLongDescription}}</p>{{/_description}}
</td>
{{^librariesOnly}}
<td class="text-center td-fit">
<p>{{#isLib}}&ndash;{{/isLib}}{{^isLib}}{{installs}}{{/isLib}}</p>
</td>
{{/librariesOnly}}
<td class="rating text-center td-fit">
<p>{{rating}}</p>
<div class="progress">
<div style="width: {{votesPercent}}%" class="progress-bar progress-bar-good"></div>
<div style="width: {{flagsPercent}}%" class="progress-bar progress-bar-danger"></div>
</div>
</td>
<td class="text-center td-fit">
<time datetime="{{updatedISOFormat}}" title="{{updated}}" class="iconic">{{{updatedHumanizedIconic}}}</time>
</td>
{{#hasFlagged}}
<td>
<ul class="flaggedList">
{{#flaggedList}}
<li>
{{#name}}<span class="label label-info"><a href="/users/{{name}}">{{name}}</a></span>{{/name}}
<span title="{{since}}">{{#reason}}{{reason}}{{/reason}}{{^reason}}&hellip;{{/reason}}</span>
</li>
{{/flaggedList}}
</ul>
</td>
{{/hasFlagged}}
</tr>
{{/scriptList}}
{{#isAdmin}}
{{#scriptList}}
<tr class="tr-link">
<td>
{{#showSourceNotices}}<span class="pull-right"><i class="fa fa-fw fa-exclamation-triangle" title="Source Code notices"></i></span>{{/showSourceNotices}}
{{#showSourceNoticesCritical}}<span class="pull-right"><i class="fa fa-fw fa-exclamation-circle" title="Critical Source Code notices"></i></span>{{/showSourceNoticesCritical}}
{{#_issueCount}}<span class="pull-right"><a href="{{{scriptIssuesPageUri}}}/open" title="Open issue discussions"><i class="fa fa-fw fa-commenting"></i>{{_issueCount}}</a></span>{{/_issueCount}}
<span class="script-icon hidden-xs" {{#icon16Url}}data-icon-src="{{{icon16Url}}}" data-icon-size="16"{{/icon16Url}}>
{{#isLib}}<i class="fa fa-fw fa-file-excel-o"></i>{{/isLib}}{{^isLib}}<i class="fa fa-fw fa-file-code-o"></i>{{/isLib}}
</span>
<a href="{{{scriptPageUrl}}}" class="tr-link-a"><b>{{name}}</b></a>
{{#meta.UserScript.version}}
<span class="script-version label label-default">{{value}}</span>
{{/meta.UserScript.version}}
<span class="inline-block">by <a href="{{{author.userPageUrl}}}">{{author.name}}</a></span>
{{#_description}}<p>{{_description}}{{#hasLongDescription}}<strong>&hellip;</strong>{{/hasLongDescription}}</p>{{/_description}}
</td>
{{^librariesOnly}}
<td class="text-center td-fit">
<p>{{#isLib}}&ndash;{{/isLib}}{{^isLib}}{{installs}}{{/isLib}}</p>
</td>
{{/librariesOnly}}
<td class="rating text-center td-fit">
<p>{{rating}}</p>
<div class="progress">
<div style="width: {{votesPercent}}%" class="progress-bar progress-bar-good"></div>
<div style="width: {{flagsPercent}}%" class="progress-bar progress-bar-danger"></div>
</div>
</td>
<td class="text-center td-fit">
<time datetime="{{updatedISOFormat}}" title="{{updated}}" class="iconic">{{{updatedHumanizedIconic}}}</time>
</td>
{{#hasFlagged}}
<td>
<ul class="flaggedList">
{{#flaggedList}}
<li>
{{#name}}<span class="label label-info"><a href="/users/{{name}}">{{name}}</a></span>{{/name}}
<span title="{{since}}">{{#reason}}{{reason}}{{/reason}}{{^reason}}&hellip;{{/reason}}</span>
</li>
{{/flaggedList}}
</ul>
</td>
{{/hasFlagged}}
</tr>
{{/scriptList}}
{{/isAdmin}}
{{^isAdmin}}
{{#scriptList}}
<tr class="tr-link">
<td>
{{#showSourceNotices}}<span class="pull-right"><i class="fa fa-fw fa-exclamation-triangle" title="Source Code notices"></i></span>{{/showSourceNotices}}
{{#showSourceNoticesCritical}}<span class="pull-right"><i class="fa fa-fw fa-exclamation-circle" title="Critical Source Code notices"></i></span>{{/showSourceNoticesCritical}}
{{#_issueCount}}<span class="pull-right"><a href="{{{scriptIssuesPageUri}}}/open" title="Open issue discussions"><i class="fa fa-fw fa-commenting"></i>{{_issueCount}}</a></span>{{/_issueCount}}
<span class="script-icon hidden-xs" {{#icon16Url}}data-icon-src="{{{icon16Url}}}" data-icon-size="16"{{/icon16Url}}>
{{#isLib}}<i class="fa fa-fw fa-file-excel-o"></i>{{/isLib}}{{^isLib}}<i class="fa fa-fw fa-file-code-o"></i>{{/isLib}}
</span>
<a href="{{{scriptPageUrl}}}" class="tr-link-a"><b>{{name}}</b></a>
{{#meta.UserScript.version}}
<span class="script-version label label-default">{{value}}</span>
{{/meta.UserScript.version}}
<span class="inline-block">by <a href="{{{author.userPageUrl}}}">{{author.name}}</a></span>
{{#_description}}<p>{{_description}}{{#hasLongDescription}}<strong>&hellip;</strong>{{/hasLongDescription}}</p>{{/_description}}
</td>
{{^librariesOnly}}
<td class="text-center td-fit">
<p>{{#isLib}}&ndash;{{/isLib}}{{^isLib}}{{installs}}{{/isLib}}</p>
</td>
{{/librariesOnly}}
<td class="rating text-center td-fit">
<p>{{rating}}</p>
<div class="progress">
<div style="width: {{votesPercent}}%" class="progress-bar progress-bar-good"></div>
<div style="width: {{flagsPercent}}%" class="progress-bar progress-bar-danger"></div>
</div>
</td>
<td class="text-center td-fit">
<time datetime="{{updatedISOFormat}}" title="{{updated}}" class="iconic">{{{updatedHumanizedIconic}}}</time>
</td>
{{#hasFlagged}}
<td>
<ul class="flaggedList">
{{#flaggedList}}
<li>
{{#name}}<span class="label label-default">{{rank}}</a></span>{{/name}}
<span title="{{since}}">{{#reason}}{{reason}}{{/reason}}{{^reason}}&hellip;{{/reason}}</span>
</li>
{{/flaggedList}}
</ul>
</td>
{{/hasFlagged}}
</tr>
{{/scriptList}}
{{/isAdmin}}
{{^scriptList}}
<tr class="tr-link">
<td colspan="4">
Expand Down
40 changes: 39 additions & 1 deletion views/includes/scriptModToolsPanel.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{{#modTools}}
<div class="panel panel-default">
<div class="panel {{#canRemove}}panel-danger{{/canRemove}}{{^canRemove}}panel-default{{/canRemove}}">
<div class="panel-heading">
<div class="panel-title">
<i class="fa fa-fw fa-eye"></i>
Expand All @@ -10,6 +10,44 @@
{{#script}}
{{> includes/flagModelSnippet.html }}
{{/script}}
{{#isAdmin}}
{{#hasFlagged}}
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-4 control-label">Flagger</label>
<div class="col-sm-8">
<ul class="flaggedList">
{{#script.flaggedList}}
<li>
{{#name}}<span class="label label-info"><a href="/users/{{name}}">{{name}}</a></span>{{/name}}
<span title="{{since}}">{{#reason}}{{reason}}{{/reason}}{{^reason}}&hellip;{{/reason}}</span>
</li>
{{/script.flaggedList}}
</ul>
</div>
</div>
</div>
{{/hasFlagged}}
{{/isAdmin}}
{{^isAdmin}}
{{#hasFlagged}}
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-4 control-label">Flagger</label>
<div class="col-sm-8">
<ul class="flaggedList">
{{#script.flaggedList}}
<li>
{{#name}}<span class="label label-default">{{rank}}</span>{{/name}}
<span title="{{since}}">{{#reason}}{{reason}}{{/reason}}{{^reason}}&hellip;{{/reason}}</span>
</li>
{{/script.flaggedList}}
</ul>
</div>
</div>
</div>
{{/hasFlagged}}
{{/isAdmin}}
{{#canRemove}}
<ul class="nav nav-pills nav-justified">
<li><a rel="nofollow" href="#" data-toggle="modal" data-target="#removeScriptModal"><i class="fa fa-ban"></i> Remove Script</a></li>
Expand Down
17 changes: 0 additions & 17 deletions views/includes/userAdminToolsPanel.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,6 @@
</div>
</div>
<div class="panel-body">
{{#hasFlagged}}
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-4 control-label">Flagged</label>
<div class="col-sm-8">
<ul class="flaggedList">
{{#user.flaggedList}}
<li>
{{#name}}<span class="label label-info"><a href="/users/{{name}}">{{name}}</a></span>{{/name}}
<span title="{{since}}">{{#reason}}{{reason}}{{/reason}}{{^reason}}&hellip;{{/reason}}</span>
</li>
{{/user.flaggedList}}
</ul>
</div>
</div>
</div>
{{/hasFlagged}}
<form class="form-horizontal" role="form" method="post" action="{{{user.userUpdatePageUrl}}}">
<div class="form-group container-fluid">
<label class="col-sm-2 control-label">Role</label>
Expand Down
Loading

0 comments on commit cf20fa6

Please sign in to comment.