r107803 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r107802‎ | r107803 | r107804 >
Date:07:19, 2 January 2012
Author:johnduhart
Status:ok (Comments)
Tags:aft, todo 
Comment:
Fix variable handoff using js config var
Use Xml:: functions for generating HTML. The fact that we still don't have a templating system really sucks.
Remove unused function.
Modified paths:
  • /trunk/extensions/ArticleFeedbackv5/SpecialArticleFeedbackv5.php (modified) (history)
  • /trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js (modified) (history)

Diff [purge]

Index: trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js
@@ -1,8 +1,7 @@
22 ( function ( $ ) {
33 $.articleFeedbackv5special = {};
44
5 - // TODO: Pass this in better from the PHP side.
6 - $.articleFeedbackv5special.page = hackPageId;
 5+ $.articleFeedbackv5special.page = undefined;
76 $.articleFeedbackv5special.filter = 'visible';
87 $.articleFeedbackv5special.sort = 'newest';
98 $.articleFeedbackv5special.limit = 25;
@@ -128,6 +127,7 @@
129128 // This was failing sometimes when it was in the function above.
130129 // I think it maky have been a race condition.
131130 $.articleFeedbackv5special.apiUrl = mw.util.wikiScript('api');
 131+ $.articleFeedbackv5special.page = mw.config.get( 'afPageId' );
132132
133133 // Set up event binds and do initial data fetch.
134134 $.articleFeedbackv5special.setBinds();
Index: trunk/extensions/ArticleFeedbackv5/SpecialArticleFeedbackv5.php
@@ -5,13 +5,12 @@
66 }
77
88 public function execute( $param ) {
9 - global $wgOut;
10 -
 9+ $out = $this->getOutput();
1110 $title = Title::newFromText( $param );
1211 if ( $title ) {
1312 $pageId = $title->getArticleID();
1413 } else {
15 - $wgOut->addWikiMsg( 'articlefeedbackv5-invalid-page-id' );
 14+ $out->addWikiMsg( 'articlefeedbackv5-invalid-page-id' );
1615 return;
1716 }
1817
@@ -19,72 +18,92 @@
2019 $found = isset( $ratings['found'] ) ? $ratings['found'] : null;
2120 $rating = isset( $ratings['rating'] ) ? $ratings['rating'] : null;
2221
23 - $wgOut->setPagetitle( "Feedback for $title" );
 22+ $out->setPagetitle( "Feedback for $title" );
2423
2524 if( !$pageId ) {
26 - $wgOut->addWikiMsg( 'articlefeedbackv5-invalid-page-id' );
 25+ $out->addWikiMsg( 'articlefeedbackv5-invalid-page-id' );
2726 } else {
28 - $wgOut->addHTML(
 27+ $out->addHTML(
2928 Linker::link(
3029 Title::newFromText( $param ),
31 - wfMessage( 'articlefeedbackv5-go-to-article' )->escaped()
 30+ $this->msg( 'articlefeedbackv5-go-to-article' )->escaped()
3231 )
3332 .' | '.
3433 Linker::link(
3534 Title::newFromText( $param ),
36 - wfMessage( 'articlefeedbackv5-discussion-page' )->escaped()
 35+ $this->msg( 'articlefeedbackv5-discussion-page' )->escaped()
3736 )
3837 .' | '.
3938 Linker::link(
4039 Title::newFromText( $param ),
41 - wfMessage( 'articlefeedbackv5-whats-this' )->escaped()
 40+ $this->msg( 'articlefeedbackv5-whats-this' )->escaped()
4241 )
4342 );
4443 }
4544
4645 if( $found ) {
47 - $wgOut->addWikiMsg( 'articlefeedbackv5-percent-found', $found );
 46+ $out->addWikiMsg( 'articlefeedbackv5-percent-found', $found );
4847 }
4948
5049 if( $rating ) {
51 - $wgOut->addWikiMsg( 'articlefeedbackv5-overall-rating', $rating);
 50+ $out->addWikiMsg( 'articlefeedbackv5-overall-rating', $rating);
5251 }
5352
54 - $wgOut->addWikiMsg( 'articlefeedbackv5-special-title' );
 53+ $out->addWikiMsg( 'articlefeedbackv5-special-title' );
5554
56 - $showing = wfMessage(
 55+ $showing = $this->msg(
5756 'articlefeedbackv5-special-showing',
58 - '<span id="aft5-feedback-count-shown">0</span>',
59 - '<span id="aft5-feedback-count-total">0</span>'
 57+ Html::element( 'span', array( 'id' => 'aft-feedback-count-shown' ), '0'),
 58+ Html::element( 'span', array( 'id' => 'aft-feedback-count-total' ), '0')
6059 );
6160
62 - $wgOut->addHTML('
63 -<script> var hackPageId = '.$pageId.'; </script>
64 -<script src="/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.special.js"></script>'
65 -.wfMessage('articlefeedbackv5-special-filter-label-before')->escaped()
66 -.'<select id="aft5-filter">
67 - <option value="visible">'.wfMessage( 'articlefeedbackv5-special-filter-visible' )->escaped().'</option>
68 - <option value="invisible">'.wfMessage( 'articlefeedbackv5-special-filter-invisible' )->escaped().'</option>
69 - <option value="all">'.wfMessage( 'articlefeedbackv5-special-filter-all' )->escaped().'</option>
70 -</select>'
71 -.wfMessage('articlefeedbackv5-special-filter-label-after')->escaped()
72 -.' | '
73 -.wfMessage('articlefeedbackv5-special-sort-label-before')->escaped()
74 -.'<select id="aft5-sort">
75 - <option value="newest">'.wfMessage( 'articlefeedbackv5-special-sort-newest' )->escaped().'</option>
76 - <option value="oldest">'.wfMessage( 'articlefeedbackv5-special-sort-oldest' )->escaped().'</option>
77 -</select>'
78 -.wfMessage('articlefeedbackv5-special-sort-label-after')->escaped()
79 -.'<br>
80 -<span id="aft5-showing"> '.$showing.' </span>
81 -<br>
82 -<div style="border:1px solid red;" id="aft5-show-feedback"></div>
83 -<a href="#" id="aft5-show-more">'
84 -.wfMessage( 'articlefeedbackv5-special-more' )->escaped()
85 -.'</a>
86 - ');
 61+ $out->addJsConfigVars( 'afPageId', $pageId );
 62+ $out->addModules( 'jquery.articleFeedbackv5.special' );
 63+
 64+ $filterSelect = new XmlSelect( false, 'aft5-filter' );
 65+ $filterSelect->addOptions( $this->selectMsg( array(
 66+ 'articlefeedbackv5-special-filter-visible' => 'visible',
 67+ 'articlefeedbackv5-special-filter-invisible' => 'invisible',
 68+ 'articlefeedbackv5-special-filter-all' => 'all',
 69+ ) ) );
 70+
 71+ $sortSelect = new XmlSelect( false, 'aft5-sort' );
 72+ $sortSelect->addOptions( $this->selectMsg( array(
 73+ 'articlefeedbackv5-special-sort-newest' => 'newest',
 74+ 'articlefeedbackv5-special-sort-oldest' => 'oldest',
 75+ ) ) );
 76+
 77+ $out->addHTML($this->msg('articlefeedbackv5-special-filter-label-before')->escaped()
 78+ . $filterSelect->getHTML()
 79+ . $this->msg('articlefeedbackv5-special-filter-label-after')->escaped()
 80+ . ' | '
 81+ . $this->msg('articlefeedbackv5-special-sort-label-before')->escaped()
 82+ . $sortSelect->getHTML()
 83+ . $this->msg('articlefeedbackv5-special-sort-label-after')->escaped()
 84+ . Html::element( 'span', array( 'id' => 'aft-showing' ), $showing )
 85+ . Html::element( 'div', array( 'id' => 'aft5-show-feedback',
 86+ 'style' => 'border:1px solid red;' ), '' )
 87+ . Html::element( 'a', array( 'href' => '#', 'id' => 'aft5-show-more' ),
 88+ $this->msg( 'articlefeedbackv5-special-more' )->escaped() )
 89+ );
8790 }
8891
 92+ /**
 93+ * Takes an associative array of label to value and converts the message
 94+ * names into localized strings
 95+ *
 96+ * @param array $options
 97+ * @return array
 98+ */
 99+ private function selectMsg( array $options ) {
 100+ $newOpts = array();
 101+ foreach ( $options as $label => $value ) {
 102+ $newOpts[$this->msg( $label )->escaped()] = $value;
 103+ }
 104+
 105+ return $newOpts;
 106+ }
 107+
89108 private function fetchOverallRating( $pageId ) {
90109 $rv = array();
91110 $dbr = wfGetDB( DB_SLAVE );
@@ -114,10 +133,4 @@
115134
116135 return $rv;
117136 }
118 -
119 -
120 - protected static function formatNumber( $number ) {
121 - global $wgLang;
122 - return $wgLang->formatNum( number_format( $number, 2 ) );
123 - }
124137 }

Sign-offs

UserFlagDate
Nikerabbitinspected07:48, 2 January 2012

Comments

#Comment by Catrope (talk | contribs)   11:20, 10 January 2012

Hah, so apparently addJsConfigVars() is in 1.18wmf1. I had no idea.

+			. ' | '

Should use the pipe-separator message, marking todo.

Status & tagging log