Index: trunk/extensions/ArticleAssessmentPilot/js/ArticleAssessment.js |
— | — | @@ -88,11 +88,11 @@ |
89 | 89 | .replace( /\{INSTRUCTIONS\}/g, $.ArticleAssessment.fn.getMsg( 'articleassessment-pleaserate' ) ) |
90 | 90 | .replace( /\{FEEDBACK\}/g, $.ArticleAssessment.fn.getMsg( 'articleassessment-featurefeedback' ) |
91 | 91 | .replace( /\[\[([^\|\]]*)\|([^\|\]]*)\]\]/, '<a href="' + wgArticlePath + '">$2</a>' ) ) |
92 | | - .replace( /\{YOURFEEDBACK\}/g, $.ArticleAssessment.fn.getMsg('articleassessment-yourfeedback') ) |
93 | | - .replace( /\{ARTICLERATING\}/g, $.ArticleAssessment.fn.getMsg('articleassessment-articlerating' ) ) |
94 | | - .replace( /\{RESULTSHIDE\}/g, $.ArticleAssessment.fn.getMsg('articleassessment-results-hide' ) |
| 92 | + .replace( /\{YOURFEEDBACK\}/g, $.ArticleAssessment.fn.getMsg( 'articleassessment-yourfeedback') ) |
| 93 | + .replace( /\{ARTICLERATING\}/g, $.ArticleAssessment.fn.getMsg( 'articleassessment-articlerating' ) ) |
| 94 | + .replace( /\{RESULTSHIDE\}/g, $.ArticleAssessment.fn.getMsg( 'articleassessment-results-hide' ) |
95 | 95 | .replace( /\[\[\|([^\]]*)\]\]/, '<a href="#">$1</a>' ) ) |
96 | | - .replace( /\{RESULTSSHOW\}/g, $.ArticleAssessment.fn.getMsg('articleassessment-results-show' ) |
| 96 | + .replace( /\{RESULTSSHOW\}/g, $.ArticleAssessment.fn.getMsg( 'articleassessment-results-show' ) |
97 | 97 | .replace( /\[\[\|([^\]]*)\]\]/, '<a href="#">$1</a>' ) ) ); |
98 | 98 | for ( var field in settings.fieldMessages ) { |
99 | 99 | $output.find( '.article-assessment-rating-fields' ) |
— | — | @@ -102,7 +102,7 @@ |
103 | 103 | .replace( /\{HINT\}/g, $.ArticleAssessment.fn.getMsg( settings.fieldPrefix + settings.fieldMessages[field] + settings.fieldHintSuffix ) ) ) ); |
104 | 104 | $output.find( '#article-assessment-ratings' ) |
105 | 105 | .append( $( settings.ratingHTML |
106 | | - .replace( /\{LABEL\}/g, $.ArticleAssessment.fn.getMsg(settings.fieldPrefix + settings.fieldMessages[field]) ) |
| 106 | + .replace( /\{LABEL\}/g, $.ArticleAssessment.fn.getMsg( settings.fieldPrefix + settings.fieldMessages[field] ) ) |
107 | 107 | .replace( /\{FIELD\}/g, settings.fieldMessages[field] ) |
108 | 108 | .replace( /\{VALUE\}/g, '0%' ) |
109 | 109 | .replace( /\{COUNT\}/g, $.ArticleAssessment.fn.getMsg( 'articleassessment-noratings', [0, 0] ) ) ) |
— | — | @@ -202,9 +202,7 @@ |
203 | 203 | url: wgScriptPath + '/api.php', |
204 | 204 | data: requestData, |
205 | 205 | dataType: 'json', |
206 | | - success: function( data ) { |
207 | | - $.ArticleAssessment.fn.afterGetRatingData( data ); |
208 | | - }, |
| 206 | + success: $.ArticleAssessment.fn.afterGetRatingData, |
209 | 207 | error: function( XMLHttpRequest, textStatus, errorThrown ) { |
210 | 208 | $.ArticleAssessment.fn.flashNotice( $.ArticleAssessment.fn.getMsg( 'articleassessment-error' ), |
211 | 209 | { 'class': 'article-assessment-error-msg' } ); |
— | — | @@ -215,8 +213,8 @@ |
216 | 214 | var settings = $( '#article-assessment' ).data( 'articleAssessment-context' ).settings; |
217 | 215 | // add the correct data to the markup |
218 | 216 | if ( data.query.articleassessment && data.query.articleassessment.length > 0 ) { |
219 | | - for ( rating in data.query.articleassessment[0].ratings) { |
220 | | - var rating = data.query.articleassessment[0].ratings[rating], |
| 217 | + for ( var r in data.query.articleassessment[0].ratings) { |
| 218 | + var rating = data.query.articleassessment[0].ratings[r], |
221 | 219 | $rating = $( '#' + rating.ratingdesc ), |
222 | 220 | count = rating.count, |
223 | 221 | total = ( rating.total / count ).toFixed( 1 ), |
— | — | @@ -336,6 +334,7 @@ |
337 | 335 | }, |
338 | 336 | /** |
339 | 337 | * Get a message |
| 338 | + * FIXME: Parameter expansion is broken in all sorts of edge cases |
340 | 339 | */ |
341 | 340 | 'getMsg': function( key, args ) { |
342 | 341 | if ( !( key in $.ArticleAssessment.messages ) ) { |
— | — | @@ -343,11 +342,11 @@ |
344 | 343 | } |
345 | 344 | var msg = $.ArticleAssessment.messages[key]; |
346 | 345 | if ( typeof args == 'object' || typeof args == 'array' ) { |
347 | | - for ( var argKey in args ) { |
348 | | - msg = msg.replace( '\$' + ( parseInt( argKey ) + 1 ), args[argKey] ); |
| 346 | + for ( var i = 0; i < args.length; i++ ) { |
| 347 | + msg = msg.replace( new RegExp( '\$' + ( parseInt( i ) + 1 ), 'g' ), args[i] ); |
349 | 348 | } |
350 | 349 | } else if ( typeof args == 'string' || typeof args == 'number' ) { |
351 | | - msg = msg.replace( '$1', args ); |
| 350 | + msg = msg.replace( /\$1/g, args ); |
352 | 351 | } |
353 | 352 | return msg; |
354 | 353 | } |