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