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

Revision: 97965
Author:   catrope
Date:     2011-09-23 22:20:36 +0000 (Fri, 23 Sep 2011)
Log Message:
-----------
First stab at Special:MoodBarFeedback. Lacks functional paging, filtering, 
permalinks, and JS, but at least it displays stuff from the database in the 
correct layout. Requries the Language::formatTimePeriod() change in r97962.

Modified Paths:
--------------
    trunk/extensions/MoodBar/MoodBar.i18n.php
    trunk/extensions/MoodBar/MoodBar.php

Added Paths:
-----------
    trunk/extensions/MoodBar/SpecialMoodBarFeedback.php

Modified: trunk/extensions/MoodBar/MoodBar.i18n.php
===================================================================
--- trunk/extensions/MoodBar/MoodBar.i18n.php   2011-09-23 22:19:29 UTC (rev 
97964)
+++ trunk/extensions/MoodBar/MoodBar.i18n.php   2011-09-23 22:20:36 UTC (rev 
97965)
@@ -72,6 +72,17 @@
        'moodbar-header-user-editcount' => 'User edit count',
        'moodbar-header-namespace' => 'Namespace',
        'moodbar-header-own-talk' => 'Own talk page',
+       // Special:MoodBarFeedback
+       'moodbar-feedback-title' => 'Feedback dashboard',
+       'moodbar-feedback-filters' => 'Filters',
+       'moodbar-feedback-filters-type' => 'Type:',
+       'moodbar-feedback-filters-type-happy' => 'Praise',
+       'moodbar-feedback-filters-type-confused' => 'Confusion',
+       'moodbar-feedback-filters-type-sad' => 'Issues',
+       'moodbar-feedback-filters-username' => 'Username',
+       'moodbar-feedback-filters-button' => 'Set filters',
+       'moodbar-feedback-whatis' => 'What is this feature?',
+       'moodbar-feedback-permalink' => 'link to here',
        // Mood types
        'moodbar-type-happy' => 'Happy',
        'moodbar-type-sad' => 'Sad',

Modified: trunk/extensions/MoodBar/MoodBar.php
===================================================================
--- trunk/extensions/MoodBar/MoodBar.php        2011-09-23 22:19:29 UTC (rev 
97964)
+++ trunk/extensions/MoodBar/MoodBar.php        2011-09-23 22:20:36 UTC (rev 
97965)
@@ -30,9 +30,11 @@
 $wgHooks['MakeGlobalVariablesScript'][] = 
'MoodBarHooks::makeGlobalVariablesScript';
 $wgHooks['LoadExtensionSchemaUpdates'][] = 
'MoodBarHooks::onLoadExtensionSchemaUpdates';
 
-// Special page
+// Special pages
 $wgAutoloadClasses['SpecialMoodBar'] = dirname(__FILE__).'/SpecialMoodBar.php';
 $wgSpecialPages['MoodBar'] = 'SpecialMoodBar';
+$wgAutoloadClasses['SpecialMoodBarFeedback'] = dirname( __FILE__ ) . 
'/SpecialMoodBarFeedback.php';
+$wgSpecialPages['MoodBarFeedback'] = 'SpecialMoodBarFeedback';
 
 // User rights
 $wgAvailableRights[] = 'moodbar-view';
@@ -113,6 +115,9 @@
        'position' => 'bottom',
 );
 
+$wgResourceModules['ext.moodBar.dashboard.styles'] = $mbResourceTemplate + 
array(
+       'styles' => 'ext.moodBar.dashboard/page.css',
+);
 
 $wgResourceModules['jquery.moodBar'] = $mbResourceTemplate + array(
        'scripts' => 'jquery.moodBar/jquery.moodBar.js',

Added: trunk/extensions/MoodBar/SpecialMoodBarFeedback.php
===================================================================
--- trunk/extensions/MoodBar/SpecialMoodBarFeedback.php                         
(rev 0)
+++ trunk/extensions/MoodBar/SpecialMoodBarFeedback.php 2011-09-23 22:20:36 UTC 
(rev 97965)
@@ -0,0 +1,116 @@
+<?php
+
+class SpecialMoodBarFeedback extends SpecialPage {
+       public function __construct() {
+               parent::__construct( 'MoodBarFeedback' );
+       }
+       
+       public function getDescription() {
+               return wfMessage( 'moodbar-feedback-title' )->plain();
+       }
+
+       public function execute( $par ) {
+               global $wgOut;
+
+               $wgOut->setPageTitle( wfMsg( 'moodbar-feedback-title' ) );
+               $wgOut->addHTML( $this->buildForm() );
+               $res = $this->doQuery();
+               $wgOut->addHTML( $this->buildList( $res ) );
+               $wgOut->addModuleStyles( 'ext.moodBar.dashboard.styles' );
+       }
+       
+       public function buildForm() {
+               $filtersMsg = wfMessage( 'moodbar-feedback-filters' 
)->escaped();
+               $typeMsg = wfMessage( 'moodbar-feedback-filters-type' 
)->escaped();
+               $praiseMsg = wfMessage( 'moodbar-feedback-filters-type-happy' 
)->escaped();
+               $confusionMsg = wfMessage( 
'moodbar-feedback-filters-type-confused' )->escaped();
+               $issuesMsg = wfMessage( 'moodbar-feedback-filters-type-sad' 
)->escaped();
+               $usernameMsg = wfMessage( 'moodbar-feedback-filters-username' 
)->escaped();
+               $setFiltersMsg = wfMessage( 'moodbar-feedback-filters-button' 
)->escaped();
+               $whatIsMsg = wfMessage( 'moodbar-feedback-whatis' )->escaped();
+               
+               return <<<HTML
+               <div id="fbd-filters">
+                       <form>
+                               <h3 id="fbd-filters-title">$filtersMsg</h3>
+                               <fieldset id="fbd-filters-types">
+                                       <legend 
class="fbd-filters-label">$typeMsg</legend>
+                                       <ul>
+                                               <li>
+                                                       <input type="checkbox" 
id="fbd-filters-type-praise">
+                                                       <label 
for="fbd-filters-type-praise" 
id="fbd-filters-type-praise-label">$praiseMsg</label>
+                                               </li>
+                                               <li>
+                                                       <input type="checkbox" 
id="fbd-filters-type-confusion">
+                                                       <label 
for="fbd-filters-type-confusion" 
id="fbd-filters-type-confusion-label">$confusionMsg</label>
+                                               </li>
+                                               <li>
+                                                       <input type="checkbox" 
id="fbd-filters-type-issues">
+                                                       <label 
for="fbd-filters-type-issues" 
id="fbd-filters-type-issues-label">$issuesMsg</label>
+                                               </li>
+                                       </ul>
+                               </fieldset>
+                               <label for="fbd-filters-username" 
class="fbd-filters-label">$usernameMsg</label>
+                               <input type="text" id="fbd-filters-username" 
class="fbd-filters-input" />
+                               <button type="submit" 
id="fbd-filters-set">$setFiltersMsg</button>
+                       </form>
+                       <a href="#" id="fbd-about">$whatIsMsg</a>
+               </div>
+HTML;
+       }
+       
+       public function buildList( $rows ) {
+               global $wgLang;
+               $now = wfTimestamp( TS_UNIX );
+               $html = '<ul id="fbd-list">';
+               foreach ( $rows as $row ) {
+                       $type = $row->mbf_type;
+                       $typeMsg = wfMessage( "moodbar-type-$type" )->escaped();
+                       $time = $wgLang->formatTimePeriod( $now - wfTimestamp( 
TS_UNIX, $row->mbf_timestamp ),
+                               'avoidminutes', 'noabbrevs'
+                       );
+                       $timeMsg = wfMessage( 'ago' )->params( $time 
)->escaped();
+                       $username = htmlspecialchars( $row->user_name === null 
? $row->mbf_user_ip : $row->user_name );
+                       $links = Linker::userToolLinks( $row->mbf_user_id, 
$username );
+                       $comment = htmlspecialchars( $row->mbf_comment );
+                       $permalinkURL = $this->getTitle( $row->mbf_id 
)->getLinkURL();
+                       $permalinkText = wfMessage( 
'moodbar-feedback-permalink' )->escaped();
+                       
+                       $html .= <<<HTML
+                       <li class="fbd-item">
+                               <div class="fbd-item-emoticon 
fbd-item-emoticon-$type">
+                                       <span 
class="fbd-item-emoticon-label">$typeMsg</span>
+                               </div>
+                               <div class="fbd-item-time">$timeMsg</div>
+                               <h3 class="fbd-item-userName">
+                                       <a href="#">$username</a>
+                                       <sup class="fbd-item-userLinks">
+                                               $links
+                                       </sup>
+                               </h3>
+                               <div class="fbd-item-message">$comment</div>
+                               <div class="fbd-item-permalink">(<a 
href="$permalinkURL">$permalinkText</a>)</div>
+                               <div style="clear:both"></div>
+                       </li>
+HTML;
+               }
+               
+               $moreURL = '#'; //TODO
+               $moreText = wfMessage( 'moodbar-feedback-more' )->escaped();
+               $html .= '</ul><div id="fbd-list-more"><a 
href="#">More</a></div>';
+               return $html;
+       }
+       
+       public function doQuery() {
+               $dbr = wfGetDB( DB_SLAVE );
+               return $dbr->select( array( 'moodbar_feedback', 'user' ), array(
+                               'user_name', 'mbf_id', 'mbf_type',
+                               'mbf_timestamp', 'mbf_user_id', 'mbf_user_ip', 
'mbf_comment'
+                       ), array(
+                               '1=1', //TODO
+                       ), __METHOD__,
+                       array( 'LIMIT' => 20 /*TODO*/, 'ORDER BY' => 
'mbf_timestamp DESC' ),
+                       array( 'user' => array( 'LEFT JOIN', 
'user_id=mbf_user_id' ) )
+               );
+       }
+}


Property changes on: trunk/extensions/MoodBar/SpecialMoodBarFeedback.php
___________________________________________________________________
Added: svn:eol-style
   + native


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

Reply via email to