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 ) . '&#160;' . 
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

Reply via email to