https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112137

Revision: 112137
Author:   yonishostak
Date:     2012-02-22 19:34:08 +0000 (Wed, 22 Feb 2012)
Log Message:
-----------
AFTv5: added toggle option for (un)helpful flag api calls - client side

Modified Paths:
--------------
    trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.hooks.php
    trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.i18n.php
    
trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.css
    
trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js

Modified: trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.hooks.php
===================================================================
--- trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.hooks.php      
2012-02-22 19:12:18 UTC (rev 112136)
+++ trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.hooks.php      
2012-02-22 19:34:08 UTC (rev 112137)
@@ -229,7 +229,10 @@
                                
'articlefeedbackv5-noteflyover-declineoversight-placeholder',
                                
'articlefeedbackv5-noteflyover-declineoversight-submit',
                                
'articlefeedbackv5-noteflyover-declineoversight-help',
-                               
'articlefeedbackv5-noteflyover-declineoversight-help-link'
+                               
'articlefeedbackv5-noteflyover-declineoversight-help-link',
+                               
+                               'articlefeedbackv5-mask-text',
+                               'articlefeedbackv5-mask-postnumber'
                        ),
                        'dependencies' => array(
                                'mediawiki.util',

Modified: trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.i18n.php
===================================================================
--- trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.i18n.php       
2012-02-22 19:12:18 UTC (rev 112136)
+++ trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.i18n.php       
2012-02-22 19:34:08 UTC (rev 112137)
@@ -142,8 +142,9 @@
        'articlefeedbackv5-timestamp-months' => '{{PLURAL:$1|$1 month|$1 
months}}',
        'articlefeedbackv5-timestamp-weeks' => '{{PLURAL:$1|$1 week|$1 weeks}}',
        'articlefeedbackv5-timestamp-seconds' => 'less than 1 minute',
-       
-       
+       'articlefeedbackv5-mask-text' => 'Feedback hidden by administrative 
action. Click to view contents.',
+       'articlefeedbackv5-mask-postnumber' => 'Post #$1',
+               
        /* Special page flyover panels */
        /* Hide this post panel */
        'articlefeedbackv5-noteflyover-hide-caption' => 'Hide this post',
@@ -598,6 +599,9 @@
 * <code>$1</code> – URL of the confirmation link
 * <code>$2</code> – URL to type in the confirmation code manually.
 * <code>$3</code> – Confirmation code for the user to type in',
+       'articlefeedbackv5-mask-text' => 'Text to be displayed on the hidden 
post mask',
+       'articlefeedbackv5-mask-postnumber' => 'Template for post number, to be 
displayed on the hidden post mask',
+
 );
 
 /** Afrikaans (Afrikaans)

Modified: 
trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.css
===================================================================
--- 
trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.css
    2012-02-22 19:12:18 UTC (rev 112136)
+++ 
trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.css
    2012-02-22 19:34:08 UTC (rev 112137)
@@ -567,4 +567,21 @@
        width: 100%;
        height: 100%;
        background-color: #dae2eb;
+       padding: 10px;
 }
+.articleFeedbackv5-post-screen .articleFeedbackv5-mask-text-wrapper {
+       position: absolute;
+       width: 100%;
+       color: #777;
+       font-size: 1.4em;
+       vertical-align: middle;
+}
+.articleFeedbackv5-post-screen .articleFeedbackv5-mask-text {
+       display: inline-block;
+       float: left;
+}
+.articleFeedbackv5-post-screen .articleFeedbackv5-mask-postid {
+       display: inline-block;
+       float: right;
+       margin-right: 50px;
+}

Modified: 
trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js
===================================================================
--- 
trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js
     2012-02-22 19:12:18 UTC (rev 112136)
+++ 
trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js
     2012-02-22 19:34:08 UTC (rev 112137)
@@ -98,6 +98,17 @@
                        </div>\
                </form>';
        
+       /**
+        * Mask HMTL template
+        */
+       $.articleFeedbackv5special.maskHtmlTemplate = '\
+               <div class="articleFeedbackv5-post-screen">\
+                       <div class="articleFeedbackv5-mask-text-wrapper">\
+                               <span 
class="articleFeedbackv5-mask-text"></span>\
+                               <span 
class="articleFeedbackv5-mask-postid"></span>\
+                       </div>\
+               </div>';
+       
        // }}}
        // {{{ Init methods
 
@@ -231,7 +242,8 @@
                        $.articleFeedbackv5special.flagFeedback(
                                $( '#' + 
$.articleFeedbackv5special.currentPanelHostId ).closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ),
                                $( e.target ).attr( 'action' ),
-                               $( '#articlefeedbackv5-noteflyover-note' 
).attr( 'value' ) );
+                               $( '#articlefeedbackv5-noteflyover-note' 
).attr( 'value' ),
+                               { } );
                        
                        // hide tipsy
                        $( '#' + $.articleFeedbackv5special.currentPanelHostId 
).tipsy( 'hide' );
@@ -488,12 +500,18 @@
        // }}}
        // {{{ maskPost
        $.articleFeedbackv5special.maskPost = function( $row ) {
-               var $screen = $( '<div></div>' )
+               var $screen = $( $.articleFeedbackv5special.maskHtmlTemplate )
                        .addClass( 'articleFeedbackv5-post-screen' )
                        .height( $row.innerHeight() )
                        .click( function( e ) {
-                               $( e.target ).remove();
-                       });
+                               $( e.target ).closest( 
'.articleFeedbackv5-post-screen' ).remove();
+                       } );
+               $screen.find( '.articleFeedbackv5-mask-text-wrapper')
+                       .css( 'top', $screen.innerHeight() / 2 - 12 );
+               $screen.find( '.articleFeedbackv5-mask-text' )
+                       .text( mw.msg( 'articlefeedbackv5-mask-text' ) );
+               $screen.find( '.articleFeedbackv5-mask-postid' )
+                       .text( mw.msg( 'articlefeedbackv5-mask-postnumber', 
$row.attr( 'rel' ) ) );
                $row.prepend( $screen );
        }
        // }}}
@@ -551,8 +569,9 @@
         * @param id            int                     the feedback id
         * @param action        string          action to execute
         * @param note          string          note for action (default empty)
+        * @param options       object          key => value pairs of additonal 
API action-specific parameters
         */
-       $.articleFeedbackv5special.flagFeedback = function ( id, action, note ) 
{
+       $.articleFeedbackv5special.flagFeedback = function ( id, action, note, 
options ) {
                // default parameters
                note = typeof note !== undefined ? note : '';
                
@@ -571,20 +590,24 @@
                        // messing up the counts, and generally seems like a 
good idea.
                        $.articleFeedbackv5special.listControls.disabled = true;
                }
+               
+               // Merge request data and options objects (flat)
+               var requestData = {
+                       'pageid'    : $.articleFeedbackv5special.page,
+                       'feedbackid': id,
+                       'flagtype'  : 
$.articleFeedbackv5special.actions[action].apiFlagType,
+                       'direction' : 
$.articleFeedbackv5special.actions[action].apiFlagDir > 0 ? 'increase' : 
'decrease',
+                       'note'          : note,
+                       'format'    : 'json',
+                       'action'    : 'articlefeedbackv5-flag-feedback'
+               };
+               $.extend( requestData, options );
 
                $.ajax( {
                        'url'     : $.articleFeedbackv5special.apiUrl,
                        'type'    : 'POST',
                        'dataType': 'json',
-                       'data'    : {
-                               'pageid'    : $.articleFeedbackv5special.page,
-                               'feedbackid': id,
-                               'flagtype'  : 
$.articleFeedbackv5special.actions[action].apiFlagType,
-                               'direction' : 
$.articleFeedbackv5special.actions[action].apiFlagDir > 0 ? 'increase' : 
'decrease',
-                               'note'          : note,
-                               'format'    : 'json',
-                               'action'    : 'articlefeedbackv5-flag-feedback'
-                       },
+                       'data'    : requestData,
                        'success': function ( data ) {
                                var msg = 'articlefeedbackv5-error-flagging';
                                if ( 'articlefeedbackv5-flag-feedback' in data 
) {
@@ -802,12 +825,7 @@
                                if( $.articleFeedbackv5special.canBeFlagged( 
$link.closest( '.articleFeedbackv5-feedback' ) ) ) {
                                        var id = $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' );
                                        var activity = 
$.articleFeedbackv5special.getActivity( id );
-                                       
$.articleFeedbackv5special.listControls.allowMultiple = true;
-                                       if( activity['unhelpful'] ) {
-                                               
$.articleFeedbackv5special.flagFeedback( id, 'reverseunhelpful', '' );
-                                       }
-                                       
$.articleFeedbackv5special.flagFeedback( id, 'helpful', '' );
-                                       
$.articleFeedbackv5special.listControls.allowMultiple = false;
+                                       
$.articleFeedbackv5special.flagFeedback( id, 'helpful', '', 
activity['unhelpful'] ? { toggle: true } : { } );
                                }
                        },
                        'apiFlagType': 'helpful',
@@ -819,6 +837,10 @@
                                        .removeClass( 
'articleFeedbackv5-helpful-link' )
                                        .addClass( 
'articleFeedbackv5-reversehelpful-link' )
                                        .attr( 'id', 
'articleFeedbackv5-reversehelpful-link-' + id );
+                               if( data['toggle'] ) {
+                                       $( '#articleFeedbackv5-unhelpful-link-' 
+ id ).removeClass( 'helpful-active' );
+                                       setActivityFlag( id, 'unhelpful', false 
)
+                               }
                                $.articleFeedbackv5special.setActivityFlag( id, 
'helpful', true );
                        }
                },
@@ -831,7 +853,7 @@
                                var $link = $( e.target );
                                if( $.articleFeedbackv5special.canBeFlagged( 
$link.closest( '.articleFeedbackv5-feedback' ) ) ) {
                                        $.articleFeedbackv5special.flagFeedback(
-                                               $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ), 'reversehelpful', '' );
+                                               $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ), 'reversehelpful', '', { } );
                                }
                        },
                        'apiFlagType': 'helpful',
@@ -856,12 +878,7 @@
                                if( $.articleFeedbackv5special.canBeFlagged( 
$link.closest( '.articleFeedbackv5-feedback' ) ) ) {
                                        var id = $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' );
                                        var activity = 
$.articleFeedbackv5special.getActivity( id );
-                                       
$.articleFeedbackv5special.listControls.allowMultiple = true;
-                                       if( activity['helpful'] ) {
-                                               
$.articleFeedbackv5special.flagFeedback( id, 'reversehelpful', '' );
-                                       }
-                                       
$.articleFeedbackv5special.flagFeedback( id, 'unhelpful', '' );
-                                       
$.articleFeedbackv5special.listControls.allowMultiple = false;
+                                       
$.articleFeedbackv5special.flagFeedback( id, 'unhelpful', '', 
activity['helpful'] ? { toggle: true } : { } );
                                }
                        },
                        'apiFlagType': 'unhelpful',
@@ -873,6 +890,10 @@
                                        .removeClass( 
'articleFeedbackv5-unhelpful-link')
                                        .addClass( 
'articleFeedbackv5-reverseunhelpful-link' )
                                        .attr( 'id', 
'articleFeedbackv5-reverseunhelpful-link-' + id );
+                               if( data['toggle'] ) {
+                                       $( '#articleFeedbackv5-helpful-link-' + 
id ).removeClass( 'helpful-active' );
+                                       setActivityFlag( id, 'helpful', false )
+                               }
                                $.articleFeedbackv5special.setActivityFlag( id, 
'unhelpful', true );
                        }
                },
@@ -885,7 +906,7 @@
                                var $link = $( e.target );
                                if( $.articleFeedbackv5special.canBeFlagged( 
$link.closest( '.articleFeedbackv5-feedback' ) ) ) {
                                        $.articleFeedbackv5special.flagFeedback(
-                                               $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ), 'reverseunhelpful', '' );
+                                               $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ), 'reverseunhelpful', '', { } );
                                }
                        },
                        'apiFlagType': 'unhelpful',
@@ -909,7 +930,7 @@
                                var $link = $( e.target );
                                if( $.articleFeedbackv5special.canBeFlagged( 
$link.closest( '.articleFeedbackv5-feedback' ) ) ) {
                                        var id = $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' );
-                                       
$.articleFeedbackv5special.flagFeedback( $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ), 'abuse', '' );
+                                       
$.articleFeedbackv5special.flagFeedback( $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ), 'abuse', '', { } );
                                }
                        },
                        'apiFlagType': 'abuse',
@@ -945,7 +966,7 @@
                                var $link = $( e.target );
                                if( $.articleFeedbackv5special.canBeFlagged( 
$link.closest( '.articleFeedbackv5-feedback' ) ) ) {
                                        var id = $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' );
-                                       
$.articleFeedbackv5special.flagFeedback( $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ), 'unabuse', '' );
+                                       
$.articleFeedbackv5special.flagFeedback( $link.closest( 
'.articleFeedbackv5-feedback' ).attr( 'rel' ), 'unabuse', '', { } );
                                }
                        },
                        'apiFlagType': 'abuse',


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to