/** * Build the filter form. The state of each form element is preserved * using data in $wgRequest. * @param $filterType string Value to pass in the <form>'s data-filtertype attribute * @return string HTML */ public function buildForm($filterType) { global $wgRequest, $wgMoodBarConfig, $wgSitename, $wgUser; $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(); $whatIsURL = htmlspecialchars($wgMoodBarConfig['infoUrl']); $actionURL = htmlspecialchars($this->getTitle()->getLinkURL()); $types = $wgRequest->getArray('type', array()); $happyCheckbox = Xml::check('type[]', in_array('happy', $types), array('id' => 'fbd-filters-type-praise', 'value' => 'happy')); $confusedCheckbox = Xml::check('type[]', in_array('confused', $types), array('id' => 'fbd-filters-type-confusion', 'value' => 'confused')); $sadCheckbox = Xml::check('type[]', in_array('sad', $types), array('id' => 'fbd-filters-type-issues', 'value' => 'sad')); $usernameTextbox = Html::input('username', $wgRequest->getText('username'), 'text', array('id' => 'fbd-filters-username', 'class' => 'fbd-filters-input')); $filterType = htmlspecialchars($filterType); $moodbarStat = MoodBarUtil::getMoodBarTypeStats(); $moodbarStatMsg = wfMessage('moodbar-type-stats')->numParams($moodbarStat['happy'], $moodbarStat['sad'], $moodbarStat['confused'])->escaped(); $feedbackDashboardDescription = wfMessage('moodbar-feedback-description')->params($wgSitename); // don't escape because there is html $myResponseFilter = ''; if (!$wgUser->isAnon()) { $myResponseMsg = wfMessage('moodbar-feedback-filters-my-response')->escaped(); $myResponseCheckbox = Xml::check('myresponse', $wgRequest->getCheck('myresponse'), array('id' => 'fbd-filters-my-response', 'value' => '1', 'class' => 'fbd-filters-check')); $myResponseFilter = $myResponseCheckbox . '<label for="fbd-filters-my-response" id="fbd-filters-type-my-response-label" class="fbd-filters-label">' . $myResponseMsg . '</label>'; } // Show unanswered filter $showUnansweredMsg = wfMessage('moodbar-feedback-filters-show-unanswered')->escaped(); $showUnansweredCheckbox = Xml::check('showunanswered', $wgRequest->getCheck('showunanswered'), array('id' => 'fbd-filters-show-unanswered', 'value' => '1', 'class' => 'fbd-filters-check')); $showUnansweredFilter = $showUnansweredCheckbox . '<label for="fbd-filters-show-unanswered" id="fbd-filters-type-show-unanswered-label" class="fbd-filters-label">' . $showUnansweredMsg . '</label>'; $leaderBoardElement = self::buildLeaderBoardElement(); return <<<HTML \t\t<div id="fbd-description"> \t\t\t<div id="fbd-description-text"> \t\t\t\t{$feedbackDashboardDescription} \t\t\t</div> \t\t \t<div id="fbd-stats"> \t\t \t\t{$moodbarStatMsg} \t\t \t</div> \t\t</div> \t\t<div id="fbd-filters"> \t\t\t<form action="{$actionURL}" data-filtertype="{$filterType}"> \t\t\t\t<h3 id="fbd-filters-title">{$filtersMsg}</h3> \t\t\t\t<fieldset id="fbd-filters-types"> \t\t\t\t\t<legend class="fbd-filters-label">{$typeMsg}</legend> \t\t\t\t\t<ul> \t\t\t\t\t\t<li> \t\t\t\t\t\t\t{$happyCheckbox} \t\t\t\t\t\t\t<label for="fbd-filters-type-praise" id="fbd-filters-type-praise-label">{$praiseMsg}</label> \t\t\t\t\t\t</li> \t\t\t\t\t\t<li> \t\t\t\t\t\t\t{$confusedCheckbox} \t\t\t\t\t\t\t<label for="fbd-filters-type-confusion" id="fbd-filters-type-confusion-label">{$confusionMsg}</label> \t\t\t\t\t\t</li> \t\t\t\t\t\t<li> \t\t\t\t\t\t\t{$sadCheckbox} \t\t\t\t\t\t\t<label for="fbd-filters-type-issues" id="fbd-filters-type-issues-label">{$issuesMsg}</label> \t\t\t\t\t\t</li> \t\t\t\t\t</ul> \t\t\t\t</fieldset> \t\t\t\t<label for="fbd-filters-username" class="fbd-filters-label">{$usernameMsg}</label> \t\t\t\t{$usernameTextbox} \t\t\t\t<br class="fbd-clearfix" /> \t\t\t\t{$myResponseFilter} \t\t\t\t<br class="fbd-clearfix" /> \t\t\t\t{$showUnansweredFilter} \t\t\t\t<br class="fbd-clearfix" /> \t\t\t\t<button type="submit" id="fbd-filters-set">{$setFiltersMsg}</button> \t\t\t</form> \t\t\t<a href="{$whatIsURL}" id="fbd-about">{$whatIsMsg}</a> \t\t\t{$leaderBoardElement} \t\t</div> HTML; }