http://www.mediawiki.org/wiki/Special:Code/MediaWiki/95695
Revision: 95695
Author: jeroendedauw
Date: 2011-08-29 20:34:56 +0000 (Mon, 29 Aug 2011)
Log Message:
-----------
work on survey admin
Modified Paths:
--------------
trunk/extensions/Survey/Survey.i18n.php
trunk/extensions/Survey/Survey.php
trunk/extensions/Survey/includes/SurveyQuestion.php
trunk/extensions/Survey/resources/ext.survey.js
trunk/extensions/Survey/resources/ext.survey.special.survey.js
trunk/extensions/Survey/specials/SpecialSurvey.php
Modified: trunk/extensions/Survey/Survey.i18n.php
===================================================================
--- trunk/extensions/Survey/Survey.i18n.php 2011-08-29 20:32:44 UTC (rev
95694)
+++ trunk/extensions/Survey/Survey.i18n.php 2011-08-29 20:34:56 UTC (rev
95695)
@@ -61,4 +61,9 @@
'survey-special-label-question' => 'Question text',
'survey-special-label-button' => 'Add question',
'survey-special-label-add' => 'New question name',
+ 'survey-question-type-text' => 'Free text',
+ 'survey-question-type-number' => 'Number',
+ 'survey-question-type-select' => 'Dropdown menu',
+ 'survey-question-type-radio' => 'Radio boxes',
+ 'survey-question-label-nr' => 'Question #$1',
);
Modified: trunk/extensions/Survey/Survey.php
===================================================================
--- trunk/extensions/Survey/Survey.php 2011-08-29 20:32:44 UTC (rev 95694)
+++ trunk/extensions/Survey/Survey.php 2011-08-29 20:34:56 UTC (rev 95695)
@@ -104,21 +104,10 @@
$wgGroupPermissions['bot' ]['surveysubmit'] = false;
$wgGroupPermissions['sysop' ]['surveysubmit'] = true;
-$egSurveyScriptPath = $wgExtensionAssetsPath === false ? $wgScriptPath .
'/extensions' : $wgExtensionAssetsPath;
-$egSurveyScriptPath .= '/Survey/resources';
-
-$egSurveyMessages = array(
- 'ext.survey.special.surveys' => array(
- 'surveys-special-confirm-delete'
- ),
- 'jquery.survey' => array(
-
- )
-);
-
$moduleTemplate = array(
'localBasePath' => dirname( __FILE__ ),
- 'remoteBasePath' => $egSurveyScriptPath
+ 'remoteBasePath' => ( $wgExtensionAssetsPath === false ? $wgScriptPath
. '/extensions' : $wgExtensionAssetsPath )
+ . '/Survey/resources'
);
$wgResourceModules['ext.survey'] = $moduleTemplate + array(
@@ -132,9 +121,25 @@
'ext.survey.special.surveys.js'
),
'dependencies' => array( 'ext.survey' ),
- 'messages' => $egSurveyMessages['ext.survey.special.surveys']
+ 'messages' => array(
+ 'surveys-special-confirm-delete'
+ )
);
+$wgResourceModules['ext.survey.special.survey'] = $moduleTemplate + array(
+ 'scripts' => array(
+ 'ext.survey.special.survey.js'
+ ),
+ 'dependencies' => array( 'ext.survey' ),
+ 'messages' => array(
+ 'survey-question-type-text',
+ 'survey-question-type-number',
+ 'survey-question-type-select',
+ 'survey-question-type-radio',
+ 'survey-question-label-nr'
+ )
+);
+
$wgResourceModules['ext.survey.jquery'] = $moduleTemplate + array(
'scripts' => array(
'fancybox/jquery.fancybox-1.3.4.js',
@@ -144,7 +149,11 @@
'fancybox/jquery.fancybox-1.3.4.css',
),
'dependencies' => array( 'ext.survey' ),
- 'messages' => $egSurveyMessages['jquery.survey']
+ 'messages' => array(
+
+ )
);
+unset( $moduleTemplate );
+
$egSurveySettings = array();
Modified: trunk/extensions/Survey/includes/SurveyQuestion.php
===================================================================
--- trunk/extensions/Survey/includes/SurveyQuestion.php 2011-08-29 20:32:44 UTC
(rev 95694)
+++ trunk/extensions/Survey/includes/SurveyQuestion.php 2011-08-29 20:34:56 UTC
(rev 95695)
@@ -273,7 +273,7 @@
*
* @since 0.1
*
- * @return string
+ * @return integer
*/
public function getType() {
return $this->type;
Modified: trunk/extensions/Survey/resources/ext.survey.js
===================================================================
--- trunk/extensions/Survey/resources/ext.survey.js 2011-08-29 20:32:44 UTC
(rev 95694)
+++ trunk/extensions/Survey/resources/ext.survey.js 2011-08-29 20:34:56 UTC
(rev 95695)
@@ -19,7 +19,7 @@
return mediaWiki.log.call( mediaWiki.log,
'Survey: ' + message );
}
}
- }
+ };
this.msg = function() {
if ( typeof mediaWiki === 'undefined' ) {
@@ -34,8 +34,24 @@
else {
return mediaWiki.msg.apply( mediaWiki.msg, arguments );
}
- }
+ };
+ this.htmlSelect = function( options, value ) {
+ $select = $( '<select />' );
+
+ for ( message in options ) {
+ var attribs = { 'value': options[message] };
+
+ if ( value === options[message] ) {
+ attribs.selected = 'selected';
+ }
+
+ $select.append( $( '<option />' ).text( message ).attr(
attribs ) );
+ }
+
+ return $select;
+ };
+
} )();
Modified: trunk/extensions/Survey/resources/ext.survey.special.survey.js
===================================================================
--- trunk/extensions/Survey/resources/ext.survey.special.survey.js
2011-08-29 20:32:44 UTC (rev 95694)
+++ trunk/extensions/Survey/resources/ext.survey.special.survey.js
2011-08-29 20:34:56 UTC (rev 95695)
@@ -5,9 +5,99 @@
* @licence GNU GPL v3 or later
* @author Jeroen De Dauw <jeroendedauw at gmail dot com>
*/
-
(function( $ ) { $( document ).ready( function() {
+ var _this = this;
+ var questionTypes = {};
+ var $table = null;
+ var newQuestionNr = 0;
+ var questionNr = 0;
+
+ function addQuestion( question ) {
+ var $tr = $( '<tr />' ).attr( {
+ 'class': 'mw-htmlform-field-SurveyQuestionField'
+ } );
+
+ // TODO: defaulting
+
+ var id = 'foo';
+
+ $tr.append( $( '<td />' ).attr( { 'class': 'mw-label' } ).html(
+ $( '<label />' ).attr( { 'for': id } ).text(
survey.msg( 'survey-question-label-nr', ++questionNr ) )
+ ) );
+
+ $tr.append( $( '<td />' ).attr( { 'class': 'mw-input' } ).html(
+ getQuestionInput( question )
+ ) );
+
+ $table.append( $tr );
+ };
+
+ function getQuestionInput( question ) {
+ var $input = $( '<div />' ).attr( { 'border': '1px' } );
+
+ var $text = $( '<input />' ).attr( {
+ 'type': 'text',
+ 'id': 'survey-question-' + question.id
+ } );
+
+ var $type = survey.htmlSelect( questionTypes, question.type );
+
+ // TODO
+
+ $input.append( $text, $type );
+
+ return $input;
+ };
+
+ function removeQuestion( question ) {
+
+ };
+
+ function onAddQuestionRequest() {
+ addQuestion( {
+ 'text': $( '#survey-add-question-text' ).text(),
+ 'id': 'new-' + newQuestionNr++
+ } );
+ $( '#survey-add-question-text' ).text( '' );
+ };
+
+ function initTypes() {
+ var types = [ 'text', 'number', 'select', 'radio' ];
+ for ( type in types ) {
+ questionTypes[survey.msg( 'survey-question-type-' +
types[type] )] = type;
+ }
+ };
+
+ function setup() {
+ initTypes();
+
+ $table = $( '#survey-add-question-text' ).closest( 'tbody' );
+
+ $( '#survey-add-question-text' ).keypress( function( event ) {
+ if ( event.which == '13' ) {
+ event.preventDefault();
+ _this.onAddQuestionRequest();
+ }
+ } );
+
+ $( '#survey-add-question-button' ).click(
_this.onAddQuestionRequest );
+
+ $( '.survey-question-data' ).each( function( index, domElement
) {
+ $this = $( domElement );
+
+ addQuestion( {
+ 'text': $this.attr( 'data-text' ),
+ 'default': $this.attr( 'data-default' ),
+ 'required': $this.attr( 'data-required' ),
+ 'id': $this.attr( 'data-id' ),
+ 'type': $this.attr( 'data-type' ),
+ } );
+ } );
+ };
+
+ setup();
+
} ); })( jQuery );
\ No newline at end of file
Modified: trunk/extensions/Survey/specials/SpecialSurvey.php
===================================================================
--- trunk/extensions/Survey/specials/SpecialSurvey.php 2011-08-29 20:32:44 UTC
(rev 95694)
+++ trunk/extensions/Survey/specials/SpecialSurvey.php 2011-08-29 20:34:56 UTC
(rev 95695)
@@ -39,6 +39,7 @@
}
else {
$this->showSurvey( $survey );
+ $this->addModules( 'ext.survey.special.survey' );
}
}
@@ -79,13 +80,15 @@
'required' => true
);
- foreach ( $survey->getQuestions() as $question ) {
+ foreach ( $survey->getQuestions() as /* SurveyQuestion */
$question ) {
$fields[] = array(
'class' => 'SurveyQuestionField',
'options' => array(
'required' => $question->isRequired(),
'text' => $question->getText(),
- 'type' => $question->getType()
+ 'type' => $question->getType(),
+ 'id' => $question->getId(),
+ 'type' => $question->getType(),
)
);
}
@@ -145,7 +148,7 @@
public function getInputHTML( $value ) {
return parent::getInputHTML( $value ) . ' ' .
Html::element(
'button',
- array(),
+ array( 'id' => 'survey-add-question-button' ),
wfMsg( 'survey-special-label-button' )
);
}
@@ -155,7 +158,9 @@
class SurveyQuestionField extends HTMLFormField {
public function getInputHTML( $value ) {
- $attribs = array();
+ $attribs = array(
+ 'class' => 'survey-question-data'
+ );
foreach ( $this->mParams['options'] as $name => $value ) {
if ( is_bool( $value ) ) {
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs