https://www.mediawiki.org/wiki/Special:Code/MediaWiki/103527
Revision: 103527
Author: neilk
Date: 2011-11-17 23:49:35 +0000 (Thu, 17 Nov 2011)
Log Message:
-----------
phase 1 of Moodbar changes from bsitu & rmoen
Modified Paths:
--------------
branches/wmf/1.18wmf1/extensions/MoodBar/ApiFeedbackDashboard.php
branches/wmf/1.18wmf1/extensions/MoodBar/FeedbackItem.php
branches/wmf/1.18wmf1/extensions/MoodBar/MoodBar.i18n.php
branches/wmf/1.18wmf1/extensions/MoodBar/MoodBar.php
branches/wmf/1.18wmf1/extensions/MoodBar/SpecialFeedbackDashboard.php
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar/ext.moodBar.core.js
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.css
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.js
Modified: branches/wmf/1.18wmf1/extensions/MoodBar/ApiFeedbackDashboard.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/MoodBar/ApiFeedbackDashboard.php
2011-11-17 23:43:53 UTC (rev 103526)
+++ branches/wmf/1.18wmf1/extensions/MoodBar/ApiFeedbackDashboard.php
2011-11-17 23:49:35 UTC (rev 103527)
@@ -57,7 +57,10 @@
ApiBase::PARAM_TYPE => 'integer',
),
- 'reason' => null,
+ 'reason' => array(
+ ApiBase::PARAM_REQUIRED => true,
+ ApiBase::PARAM_TYPE => 'string'
+ ),
'token' => array(
ApiBase::PARAM_REQUIRED => true,
),
Modified: branches/wmf/1.18wmf1/extensions/MoodBar/FeedbackItem.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/MoodBar/FeedbackItem.php 2011-11-17
23:43:53 UTC (rev 103526)
+++ branches/wmf/1.18wmf1/extensions/MoodBar/FeedbackItem.php 2011-11-17
23:49:35 UTC (rev 103527)
@@ -193,7 +193,8 @@
} elseif ( $key == 'type' ) {
return in_array( $value, self::$validTypes );
} elseif ( $key == 'comment' ) {
- return mb_strlen( $value ) <= 140;
+ $comment_len = mb_strlen( $value );
+ return $comment_len > 0 && $comment_len <= 140;
}
return true;
Modified: branches/wmf/1.18wmf1/extensions/MoodBar/MoodBar.i18n.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/MoodBar/MoodBar.i18n.php 2011-11-17
23:43:53 UTC (rev 103526)
+++ branches/wmf/1.18wmf1/extensions/MoodBar/MoodBar.i18n.php 2011-11-17
23:49:35 UTC (rev 103527)
@@ -94,9 +94,12 @@
'moodbar-comment-hidden' => '(Feedback hidden by administrative
action)',
'moodbar-feedback-show' => 'show hidden feedback',
'moodbar-feedback-hide' => 'hide feedback',
- 'moodbar-hidden-footer' => 'Hidden Feedback $1',
+ 'moodbar-hidden-footer' => 'Hidden Feedback by $1 on $2 $3, reason: $4
$5',
+ 'moodbar-hidden-footer-without-log' => 'Hidden Feedback $1',
'moodbar-feedback-restore' => 'restore hidden feedback',
'moodbar-action-item' => 'Feedback item:',
+ 'moodbar-action-reason' => 'Reason:',
+ 'moodbar-action-reason-required' => 'Please provide a reason.',
'moodbar-hide-header' => 'Hide this item from view',
'moodbar-hide-intro' => '',
'moodbar-restore-header' => "Restore this item's visibility",
@@ -271,7 +274,8 @@
{{Identical|More}}',
'moodbar-feedback-newer' => 'Text of the link that the user can click
to go back to more recent results. Only visible if JavaScript is not enabled.',
'moodbar-feedback-older' => 'Text of the link that the user can click
to see less recent results. Only visible if JavaScript is not enabled.',
- 'moodbar-hidden-footer' => '* $1 is a link to restore the item
displaying {{msg-mw|moodbar-feedback-restore}}',
+ 'moodbar-hidden-footer' => '* $1 is the username, $2 is the date, $3 is
the time, $4 is the reason for hiding the feedback,$5 is a link to restore the
item displaying {{msg-mw|moodbar-feedback-restore}}',
+ 'moodbar-hidden-footer-without-log' => '* $1 is a link to restore the
item displaying {{msg-mw|moodbar-feedback-restore}}',
'moodbar-type-happy' => 'No gender support ([[bugzilla:30071|bug
30071]])',
'moodbar-type-sad' => 'No gender support ([[bugzilla:30071|bug
30071]])',
'moodbar-type-confused' => 'No gender support ([[bugzilla:30071|bug
30071]])',
Modified: branches/wmf/1.18wmf1/extensions/MoodBar/MoodBar.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/MoodBar/MoodBar.php 2011-11-17
23:43:53 UTC (rev 103526)
+++ branches/wmf/1.18wmf1/extensions/MoodBar/MoodBar.php 2011-11-17
23:49:35 UTC (rev 103527)
@@ -149,6 +149,8 @@
'moodbar-feedback-noresults',
'moodbar-feedback-ajaxerror',
'moodbar-feedback-action-error',
+ 'moodbar-action-reason',
+ 'moodbar-action-reason-required'
),
);
Modified: branches/wmf/1.18wmf1/extensions/MoodBar/SpecialFeedbackDashboard.php
===================================================================
--- branches/wmf/1.18wmf1/extensions/MoodBar/SpecialFeedbackDashboard.php
2011-11-17 23:43:53 UTC (rev 103526)
+++ branches/wmf/1.18wmf1/extensions/MoodBar/SpecialFeedbackDashboard.php
2011-11-17 23:49:35 UTC (rev 103527)
@@ -218,12 +218,14 @@
$userPageUrl =
htmlspecialchars($user->getUserPage()->getLocalURL());
+ $userLink = Linker::userLink( $user->getId(), $username );
+
return <<<HTML
<div class="fbd-item-userName">
- <a href="$userPageUrl"
class="fbd-item-userLink">$username</a>
- <sup class="fbd-item-userLinks">
+ $userLink
+ <span class="fbd-item-userLinks">
$links
- </sup>
+ </span>
</div>
HTML;
}
@@ -248,6 +250,8 @@
* @return string HTML
*/
protected static function getHiddenFooter( $feedbackItem, $mode ) {
+ global $wgLang;
+
$id = $feedbackItem->getProperty('id');
$permalinkTitle = SpecialPage::getTitleFor(
'FeedbackDashboard', $id );
if ( $mode === 'shown' ) {
@@ -257,7 +261,21 @@
->link( $permalinkTitle, $linkText,
array(), $query );
$link = Xml::tags( 'span', array( 'class' =>
'fbd-item-restore' ), "($link)" );
- $footer =
wfMessage('moodbar-hidden-footer')->rawParams($link)->escaped();
+ $feedback_hidden_detail =
self::getFeedbackHiddenDetail($id);
+
+ if($feedback_hidden_detail === false) {
+ $footer =
wfMessage('moodbar-hidden-footer-without-log')->
+ rawParams( $link )->escaped();
+ }
+ else {
+ $footer = wfMessage('moodbar-hidden-footer')->
+ rawParams( htmlspecialchars(
$feedback_hidden_detail->log_user_text ),
+
$wgLang->date($feedback_hidden_detail->log_timestamp),
+
$wgLang->time($feedback_hidden_detail->log_timestamp),
+ htmlspecialchars(
$feedback_hidden_detail->log_comment ),
+ $link )->escaped();
+ }
+
return Xml::tags( 'div', array( 'class' => 'error' ),
$footer );
} elseif ( $mode === 'hidden' ) {
$linkText =
wfMessage('moodbar-feedback-show')->escaped();
@@ -487,4 +505,24 @@
}
return $query;
}
+
+ /**
+ * Get admin's username/timestamp/reason for hiding a feedback
+ * @param $mbf_id primary key for moodbar_feedback
+ * @return ResultWrapper|bool
+ */
+ protected static function getFeedbackHiddenDetail( $mbf_id ) {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ return $dbr->selectRow( array( 'logging' ),
+ array( 'log_user_text', 'log_timestamp',
'log_comment' ),
+ array( 'log_namespace' => NS_SPECIAL,
+ 'log_title' => 'FeedbackDashboard/'
. intval( $mbf_id ),
+ 'log_action' => 'hide',
+ 'log_type' => 'moodbar' ),
+ __METHOD__,
+ array( 'LIMIT' => 1, 'ORDER BY' =>
"log_timestamp DESC" )
+ );
+ }
+
}
Modified:
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar/ext.moodBar.core.js
===================================================================
---
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar/ext.moodBar.core.js
2011-11-17 23:43:53 UTC (rev 103526)
+++
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar/ext.moodBar.core.js
2011-11-17 23:49:35 UTC (rev 103527)
@@ -111,7 +111,6 @@
.localize()
.click(
function( e ) {
var $el = $( this );
-
mb.ui.overlay.find( '.mw-moodBar-formSubmit').removeAttr('disabled');
mb.ui.overlay.find( '.mw-moodBar-formInput' ).focus();
$mwMoodBarTypes.addClass( 'mw-moodBar-types-select' );
mb.feedbackItem.type = $el.attr( 'rel' );
@@ -120,6 +119,7 @@
.find( '.mw-moodBar-selected' )
.not( $el )
.removeClass( 'mw-moodBar-selected' );
+
mb.validate();
} )
.get( 0
)
);
@@ -214,7 +214,7 @@
var message,
counterElement;
message = mw.msg(
'moodbar-form-note-dynamic' );
counterElement =
mw.html.element( 'span', {
- 'id':
'mw-moodBar-charCount',
+ 'id':
'mw-moodBar-charCount'
} );
return mw.html.escape(
message )
.replace(
/\$1/, counterElement );
@@ -228,9 +228,18 @@
.val( mw.msg( 'moodbar-form-submit' ) )
.click( function() {
mb.feedbackItem.comment =
mb.ui.overlay.find( '.mw-moodBar-formInput' ).val();
- mb.swapContent( mb.tpl.loading
);
- $.moodBar.submit(
mb.feedbackItem );
+ if(mb.feedbackItem.comment){
+ mb.swapContent(
mb.tpl.loading );
+ $.moodBar.submit(
mb.feedbackItem );
+ }
} )
+ .end()
+
+ // Keypress
+ .find( '#mw-moodBar-feedbackInput' )
+ .keyup( function(event) {
+ mb.validate();
+ })
.end();
// Set up character counter
@@ -298,6 +307,14 @@
mb.prepareUserinputContent( mb.ui.overlay );
}
return true;
+ },
+
+ validate: function() {
+ if( $( '#mw-moodBar-feedbackInput' ).val() !== "" && $(
'.mw-moodBar-selected').length ) {
+ mb.ui.overlay.find(
'.mw-moodBar-formSubmit').removeAttr('disabled');
+ } else {
+ mb.ui.overlay.find(
'.mw-moodBar-formSubmit').attr({'disabled':'true'});
+ }
}
} );
Modified:
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.css
===================================================================
---
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.css
2011-11-17 23:43:53 UTC (rev 103526)
+++
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.css
2011-11-17 23:49:35 UTC (rev 103527)
@@ -2,7 +2,8 @@
#fbd-filters {
position: absolute;
- width: 12em;
+ width: 14em;
+ left:0px;
}
#fbd-filters form {
@@ -82,7 +83,7 @@
/* List */
#fbd-list {
- margin: 0 0 0 13em;
+ margin: 0px 20px 0px 15em;
padding: 0;
min-height: 20em;
list-style: none;
@@ -173,6 +174,7 @@
.fbd-item {
border-bottom: solid 1px silver;
position: relative;
+ margin-bottom:1em;
}
.fbd-item-emoticon {
@@ -210,7 +212,7 @@
}
.fbd-item-userLinks {
- font-size: 0.5em;
+ font-size: 1em;
}
.fbd-item-time {
@@ -225,7 +227,8 @@
.fbd-item-permalink,
.fbd-item-show,
-.fbd-item-hide {
+.fbd-item-hide,
+.fbd-item-reason{
float: right;
font-size: 0.8em;
margin-left: 0.2em;
Modified:
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.js
===================================================================
---
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.js
2011-11-17 23:43:53 UTC (rev 103526)
+++
branches/wmf/1.18wmf1/extensions/MoodBar/modules/ext.moodBar.dashboard/ext.moodBar.dashboard.js
2011-11-17 23:49:35 UTC (rev 103527)
@@ -1,7 +1,7 @@
/**
* AJAX code for Special:MoodBarFeedback
*/
-jQuery( function( $ ) {
+jQuery( function( $ ) {
/**
* Saved form state
*/
@@ -249,6 +249,44 @@
}
/**
+ * Do this before administrative action to provide reason
+ */
+ function beforeAction(params, $item){
+ var inlineForm = '<span class="fbd-item-reason">\
+ $1\
+ <input class="fbd-action-reason"
name="fb-action-reason" />\
+ <button
class="fbd-action-confirm">Confirm</button>\
+ <button
class="fbd-action-cancel">Cancel</button>\
+ </span>'
+ .replace( /\$1/g, mw.msg(
'moodbar-action-reason' ));
+
+ var storedParams = params;
+ var $storedItem = $item;
+
+ $item.find('.fbd-item-hide, .fbd-item-restore,
.fbd-item-permalink')
+ .empty();
+
+ $item.find('.fbd-item-message')
+ .append(inlineForm)
+ .end();
+
+ $('.fbd-action-confirm').click( function() {
+ storedParams.reason =
$item.find('.fbd-action-reason').val();
+
+ if( storedParams.reason ) {
+ doAction(storedParams, $storedItem);
+ } else {
+ alert( mw.msg( 'moodbar-action-reason-required'
) );
+ }
+
+ });
+ $('.fbd-action-cancel').click( function() {
+ reloadItem( $storedItem, true );
+ });
+
+ }
+
+ /**
* Execute an action on an item
*/
function doAction( params, $item ) {
@@ -258,6 +296,9 @@
showItemError( $item, error_str );
};
+ var $spinner = $('<span class="mw-ajax-loader"> </span>');
+ $item.find('.fbd-item-hide').empty().append( $spinner );
+
$.post( mw.util.wikiScript('api'),
$.extend( {
'action' : 'feedbackdashboard',
@@ -287,11 +328,7 @@
function restoreItem(e) {
var $item = $(this).closest('.fbd-item');
- var $spinner = $('<span class="mw-ajax-loader"> </span>');
- $item.find('.fbd-item-restore').empty().append( $spinner );
-
- doAction( { 'mbaction' : 'restore' }, $item );
-
+ beforeAction( { 'mbaction' : 'restore' }, $item );
e.preventDefault();
}
@@ -300,12 +337,8 @@
*/
function hideItem(e) {
var $item = $(this).closest('.fbd-item');
-
- var $spinner = $('<span class="mw-ajax-loader"> </span>');
- $item.find('.fbd-item-hide').empty().append( $spinner );
-
- doAction( { 'mbaction' : 'hide' }, $item );
-
+
+ beforeAction( { 'mbaction' : 'hide' }, $item );
e.preventDefault();
}
@@ -342,4 +375,5 @@
loadComments( 'filter' );
}
}
+
} );
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs