http://www.mediawiki.org/wiki/Special:Code/MediaWiki/71995

Revision: 71995
Author:   adam
Date:     2010-08-31 00:11:49 +0000 (Tue, 31 Aug 2010)

Log Message:
-----------
End of the day ArticleAssessment commit. Progress was made. True story.

Modified Paths:
--------------
    trunk/extensions/ArticleAssessmentPilot/css/ArticleAssessment.css
    trunk/extensions/ArticleAssessmentPilot/js/ArticleAssessment.js

Modified: trunk/extensions/ArticleAssessmentPilot/css/ArticleAssessment.css
===================================================================
--- trunk/extensions/ArticleAssessmentPilot/css/ArticleAssessment.css   
2010-08-30 23:59:22 UTC (rev 71994)
+++ trunk/extensions/ArticleAssessmentPilot/css/ArticleAssessment.css   
2010-08-31 00:11:49 UTC (rev 71995)
@@ -116,9 +116,10 @@
 .article-assessment-wrapper .article-assessment-rating-field-name {
        float: left;
        width: 90px;
+       font-weight: bold;
+       font-size: 11px;
 }
-.article-assessment-wrapper .article-assessment-rating-field-value-wrapper,
-.article-assessment-wrapper .article-assessment-rating-field-value-disabled {
+.article-assessment-wrapper .article-assessment-rating-field-value-wrapper {
        background: url( ../images/rating_bg.gif ) 0 0 no-repeat;
        width: 120px;
        height: 13px;
@@ -126,6 +127,7 @@
        float: left;
        padding: 2px;
        text-indent: -9999px;
+       margin-top: 2px;
 }
 .article-assessment-wrapper .article-assessment-rate-instructions, 
 .article-assessment-wrapper .article-assessment-rate-feedback,
@@ -146,19 +148,37 @@
        float: right;
        display: block;
 }
-.article-assessment-wrapper .article-assessment-rating-field-value-disabled {
-       background: url( ../images/rating_disabled_bg.gif ) 0 0 no-repeat;
-}
 .article-assessment-wrapper .article-assessment-wrapper 
.article-assessment-rating-fields {
        margin: 8px 0;
 }
 .article-assessment-wrapper .article-assessment-rating-fields .field-wrapper {
        margin-bottom: 5px;
 }
+.article-assessment-rating-count {
+       font-size: 11px;
+       margin-left: 5px;
+       float: left;
+}
+.article-assessment-submit input {
+       margin: 2px 0;
+}
+.article-assessment-wrapper .article-assessment-ratings-disabled 
.article-assessment-rating-field-value-wrapper {
+       background: url( ../images/rating_disabled_bg.gif ) 0 0 no-repeat;
+}
+.article-assessment-wrapper .article-assessment-ratings-disabled 
.article-assessment-rating-field-value {
+       display: none;
+}
+.article-assessment-wrapper .article-assessment-ratings-disabled 
.article-assessment-rating-count {
+       display: none;
+}
+.article-assessment-wrapper .article-assessment-ratings-disabled 
.article-assessment-rating-field-name {
+       color: #9f9f9f;
+}
 /* Self Clearing Floats */
 .article-assessment-wrapper .article-assessment-information:after,
 .article-assessment-wrapper .field-wrapper:after,
 .article-assessment-wrapper .article-assessment-rating-fields:after,
+.article-assessment-rating:after,
 .article-assessment-wrapper .article-assessment-submit:after,
 .article-assessment-wrapper .rating-fields:after {
        content: ".";
@@ -170,6 +190,7 @@
 .article-assessment-wrapper .field-wrapper,
 .article-assessment-wrapper .article-assessment-information,
 .article-assessment-wrapper .article-assessment-rating-fields,
+.article-assessment-rating,
 .article-assessment-wrapper .article-assessment-submit,
 .article-assessment-wrapper .rating-fields {
        display: inline-block;
@@ -177,6 +198,7 @@
 * html .article-assessment-wrapper .field-wrapper,
 * html .article-assessment-wrapper .article-assessment-information,
 * html .article-assessment-wrapper .article-assessment-rating-fields,
+* html .article-assessment-rating,
 * html .article-assessment-wrapper .article-assessment-submit,
 * html .article-assessment-wrapper .rating-fields {
        height: 1%;
@@ -184,6 +206,7 @@
 .article-assessment-wrapper .field-wrapper,
 .article-assessment-wrapper .article-assessment-information,
 .article-assessment-wrapper .article-assessment-rating-fields,
+.article-assessment-rating,
 .article-assessment-wrapper .article-assessment-submit,
 .article-assessment-wrapper .rating-fields {
        display: block;

Modified: trunk/extensions/ArticleAssessmentPilot/js/ArticleAssessment.js
===================================================================
--- trunk/extensions/ArticleAssessmentPilot/js/ArticleAssessment.js     
2010-08-30 23:59:22 UTC (rev 71994)
+++ trunk/extensions/ArticleAssessmentPilot/js/ArticleAssessment.js     
2010-08-31 00:11:49 UTC (rev 71995)
@@ -18,7 +18,7 @@
                        'fieldPrefix': 'articleassessment-rating-',
                        'fieldHTML': '<div class="field-wrapper"> \
                                <label for="rating_{FIELD}" 
original-title="{HINT}" class="rating-field-label">{LABEL}</label> \
-                               <select id="rating_{FIELD}" 
name="rating[{FIELD}]" class="rating-field"> \
+                               <select id="rating_{FIELD}" 
name="rating{FIELD}" class="rating-field"> \
                                        <option value="1">1</option> \
                                        <option value="2">2</option> \
                                        <option value="3">3</option> \
@@ -48,7 +48,7 @@
                                        </fieldset> \
                                </form> \
                        </div>',
-                       'ratingHTML': '<div class="article-assessment-rating"> \
+                       'ratingHTML': '<div class="article-assessment-rating" 
id="articleassessment-rating-{FIELD}"> \
                                        <span 
class="article-assessment-rating-field-name">{LABEL}</span> \
                                        <span 
class="article-assessment-rating-field-value-wrapper"> \
                                                <span 
class="article-assessment-rating-field-value">{VALUE}</span> \
@@ -76,24 +76,63 @@
                                        .replace( /\{FEEDBACK\}/g,  
mw.usability.getMsg('articleassessment-featurefeedback') )
                                        .replace( /\{YOURFEEDBACK\}/g,  
mw.usability.getMsg('articleassessment-yourfeedback') )
                                        .replace( /\{ARTICLERATING\}/g,  
mw.usability.getMsg('articleassessment-articlerating' ) ) 
-                                       .replace( /\{RESULTSHIDE\}/g,  
mw.usability.getMsg('articleassessment-results-hide' ) ) 
-                                       .replace( /\{RESULTSSHOW\}/g,  
mw.usability.getMsg('articleassessment-results-show' ) ) );
+                                       .replace( /\{RESULTSHIDE\}/g,  
mw.usability.getMsg('articleassessment-results-hide' )
+                                               .replace( /\[\[\|([^\]]*)\]\]/, 
'<a href="#">$1</a>' ) ) 
+                                       .replace( /\{RESULTSSHOW\}/g,  
mw.usability.getMsg('articleassessment-results-show' )
+                                               .replace( /\[\[\|([^\]]*)\]\]/, 
'<a href="#">$1</a>' ) ) );
                                for( var field in settings.fieldMessages ) { 
                                        $output.find( 
'.article-assessment-rating-fields' )
                                                .append( $( settings.fieldHTML
                                                        .replace( /\{LABEL\}/g, 
mw.usability.getMsg( settings.fieldPrefix + settings.fieldMessages[field] ) )
-                                                       .replace( /\{FIELD\}/g, 
mw.usability.getMsg( settings.fieldMessages[field] ) )
+                                                       .replace( /\{FIELD\}/g, 
"[" + settings.fieldMessages[field] + "]" )
                                                        .replace( /\{HINT\}/g, 
mw.usability.getMsg( settings.fieldPrefix + settings.fieldMessages[field] + 
settings.fieldHintSuffix ) ) ) );
                                        $output.find( 
'#article-assessment-ratings' )
                                                .append( $( settings.ratingHTML
                                                        .replace( /\{LABEL\}/g, 
mw.usability.getMsg(settings.fieldPrefix + settings.fieldMessages[field]) )
+                                                       .replace( /\{FIELD\}/g, 
settings.fieldMessages[field] )
                                                        .replace( /\{VALUE\}/g, 
'0%' ) 
                                                        .replace( /\{COUNT\}/g, 
mw.usability.getMsg( 'field-count' ) ) ) 
                                                        );
                                }
-                               
+                               $output.find( '#article-assessment' ).data( 
'articleAssessment-context', { 'settings': settings });
+                               // hook up the ratings show/hide
+                               $output
+                                       .find( 
'.article-assessment-show-ratings a' )
+                                       .click( function() {
+                                               $( this )
+                                                       .parent()
+                                                       .hide();
+                                               $output
+                                                       .find( 
'#article-assessment-ratings' )
+                                                       .removeClass( 
'article-assessment-ratings-disabled' )
+                                                       .end()
+                                                       .find( 
'.article-assessment-hide-ratings' )
+                                                       .show();
+                                                       return false;
+                                       } )
+                                       .end()
+                                       .find( 
'.article-assessment-hide-ratings a' )
+                                       .click( function() {
+                                               $( this )
+                                                       .parent()
+                                                       .hide();
+                                               $output
+                                                       .find( 
'#article-assessment-ratings' )
+                                                       .addClass( 
'article-assessment-ratings-disabled' )
+                                                       .end()
+                                                       .find( 
'.article-assessment-show-ratings' )
+                                                       .show();
+                                                       return false;
+                                       } )
+                                       .click();
                                $( '#catlinks' ).before( $output );
                                
+                               // set the height of our smaller fieldset to 
match the taller
+                               if( $( '#article-assessment-rate' ).height() > 
$( '#article-assessment-ratings' ).height() ) {
+                                       $( '#article-assessment-ratings' ).css( 
'minHeight',  $( '#article-assessment-rate' ).height() );
+                               } else {
+                                       $( '#article-assessment-rate' ).css( 
'minHeight',  $( '#article-assessment-ratings' ).height() );
+                               }
                                // attempt to fetch the ratings 
                                $.ArticleAssessment.fn.getRatingData();
                                
@@ -115,15 +154,6 @@
                                                        }
                                                 } );
                                });
-                               // if the rating is stale, add the stale class
-                               if( true /* replace with conditional based on 
returned results of past user ratings */ ) {
-                                       // add the stale star class to each on 
star
-                                       $( '.ui-stars-star-on' )
-                                               .addClass( 
'ui-stars-star-stale' );
-                                       // add the stale message
-                                       $( '.article-assessment-submit' )
-                                               .append( 
settings.staleMSG.replace( /\{MSG\}/g, mw.usability.getMsg( 
'articleassessment-stalemessage-revisioncount' ) ) );
-                               }
                                // intialize the tooltips
                                $( '.field-wrapper label[original-title]' 
).each(function() {
                                        $( this )
@@ -131,38 +161,63 @@
                                                        .attr( 
'original-title', $( this ).attr( 'original-title' ) )
                                                        .tipsy( { gravity : 
'se', opacity: '0.9',  } ) );
                                } );
-                               // initialize the ratings 
-                               $( '.article-assessment-rating-field-value' 
).each( function() {
-                                       $( this )
-                                               .css( {
-                                                       'width': 120 - ( 120 * 
( parseInt( $( this ).text() ) / 100 ) ) + "px"
-                                               } )
-                               } );
                                // bind submit event to the form
-                               
+                               $( '#article-assessment' ).submit( function() { 
$.ArticleAssessment.fn.submitRating(); return false; } );
                                // prevent the submit button for being active 
until all ratings are filled out
                                
                        },
                        'getRatingData': function() {
-                               var request = $j.ajax( {
+                               var request = $.ajax( {
                                        url: wgScriptPath + '/api.php',
                                        data: {
-                                               'action': 'articleassessment',
-                                               'getCumulativeResults': 1, 
-                                               'pageId': wgArticleId,
-                                               'revId': wgCurRevisionId
+                                               'action': 'query',
+                                               'list': 'articleassessment',
+                                               'aarevid': wgCurRevisionId,
+                                               'aapageid': wgArticleId,
+                                               'format': 'json'
                                        },
                                        dataType: 'json',
                                        success: function( data ) {
-                                               console.log(data);
+                                               
$.ArticleAssessment.fn.afterGetRatingData( data );
                                        },
                                        error: function(XMLHttpRequest, 
textStatus, errorThrown) {
-                                               console.log(XMLHttpRequest, 
textStatus, errorThrown);
+                                               // console.log(XMLHttpRequest, 
textStatus, errorThrown);
                                        }
                                } );
                        },
+                       'afterGetRatingData' : function( data ) {
+                               var settings = $( '#article-assessment' ).data( 
'articleAssessment-context' ).settings;
+                               // add the correct data to the markup
+                               for( rating in 
data.query.articleassessment[0].ratings) {
+                                       var rating = 
data.query.articleassessment[0].ratings[rating],
+                                               $rating = $( '#' + 
rating.ratingdesc ),
+                                               label = mw.usability.getMsg( 
'articleassessment-noratings', [rating.total, rating.count] );
+                                       $rating
+                                               .find( 
'.article-assessment-rating-field-value' )
+                                               .text( rating.total )
+                                               .end()
+                                               .find( 
'.article-assessment-rating-count' )
+                                               .text( label );
+                               }
+                               // if the rating is stale, add the stale class
+                               if( true /* replace with conditional based on 
returned results of past user ratings */ ) {
+                                       // add the stale star class to each on 
star
+                                       $( '.ui-stars-star-on' )
+                                               .addClass( 
'ui-stars-star-stale' );
+                                       // add the stale message
+                                       $( '.article-assessment-submit' )
+                                               .append( 
settings.staleMSG.replace( /\{MSG\}/g, mw.usability.getMsg( 
'articleassessment-stalemessage-revisioncount' ) ) );
+                               }
+                               // initialize the ratings 
+                               $( '.article-assessment-rating-field-value' 
).each( function() {
+                                       $( this )
+                                               .css( {
+                                                       'width': 120 - ( 120 * 
( parseFloat( $( this ).text() ) / 5 ) ) + "px"
+                                               } )
+                               } );
+                       },
                        'getUserRatingData': function() {
-                               var request = $j.ajax( {
+                               var request = $.ajax( {
                                        url: wgScriptPath + '/api.php',
                                        data: {
                                                'action': 'articleassessment',
@@ -176,21 +231,34 @@
                                                console.log(data);
                                        },
                                        error: function(XMLHttpRequest, 
textStatus, errorThrown) {
-                                               console.log(XMLHttpRequest, 
textStatus, errorThrown);
+                                               // console.log( XMLHttpRequest, 
textStatus, errorThrown );
                                        }
                                } );
                        },
-                       'submit': function() {
+                       'submitRating': function() {
                                // clear out the stale message
-                               var request = $j.ajax( {
+                               var results = {};
+                               $( '.rating-field input' ).each( function() {
+                                       // expects the hidden inputs to have 
names like 'rating[field-name]' which we use to
+                                       // be transparent about what values 
we're sending to the server
+                                       var fieldName = $( this 
).attr('name').match(/\[([a-zA-Z0-9\-]*)\]/)[1];
+                                       results[ fieldName ] = $( this ).val();
+                               } );
+                               var request = $.ajax( {
                                        url: wgScriptPath + '/api.php',
                                        data: {
-                                               'action': 'ratearticle',
-                                               'data': ratingsData
+                                               'action': 'articleassessment',
+                                               'aarevid': wgCurRevisionId,
+                                               'aapageid': wgArticleId,
+                                               'aar1' : results['wellsourced'],
+                                               'aar2' : results['neutrality'],
+                                               'aar3' : 
results['completeness'],
+                                               'aar4' : results['readability'],
+                                               'format': 'json'
                                        },
                                        dataType: 'json',
                                        success: function( data ) {
-                                               $this.suggestions( 
'suggestions', data[1] );
+                                               console.log(data);
                                        }
                                } );
                        }
@@ -198,7 +266,6 @@
        };
        // FIXME - this should be moved out of here
        $( document ).ready( function () {
-               console.log(this);
-               $.ArticleAssessment.fn.init( { 'endpoint': wgScriptPath + 
"/api.php" } );
+               $.ArticleAssessment.fn.init( );
        } ); //document ready
 } )( jQuery );
\ No newline at end of file



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

Reply via email to