Ignore:
Timestamp:
04/29/13 19:35:10 (12 years ago)
Author:
hendrikvanantwerpen
Message:

Big cleanup of the question content.

  • Replaced old list implementations with a new one that behaves like a form widget.
  • All question content is now in separate widgets, not in the factory itself.
  • Added form and widget validation for question editing.
Location:
Dev/trunk/client/qed/pages
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • Dev/trunk/client/qed/pages/question.js

    r426 r441  
    4242        _refresh: function () {
    4343            this.titleNode.innerHTML = Question.DisplayTitle.get(this.question);
    44             this._toolkit.set('value',this.question);
    45             this._preview.appendItems(Question.Content.get(this.question));
     44            this._toolkit.set('value', this.question);
     45            this._preview.set('value', Question.Content.get(this.question));
    4646        },
    4747        _onSave: function(evt) {
    48             lang.mixin(this.question, this._toolkit.get('value'));
    49             Question.Content.set(this.question, this._preview.getItems());
    50             store.put(this.question)
    51             .then(function() {
    52                 Router.go('/questions');
    53             },function(err){
    54                 Content.notify(err,'error');
    55             });
     48            if ( this._preview.validate() ) {
     49                lang.mixin(this.question, this._toolkit.get('value'));
     50                Question.Content.set(this.question, this._preview.get('value'));
     51                store.put(this.question)
     52                .then(function() {
     53                    Router.go('/questions');
     54                },function(err){
     55                    Content.notify(err,'error');
     56                });
     57            }
    5658            if ( evt ) { event.stop( evt ); }
    5759            return false;
     
    6870
    6971            this._preview = new QuestionEditorPreview({
    70             },this.QuestionEditorPreviewNode);
     72                name: 'content',
     73                delay: 5,
     74                region: 'center'
     75            });
    7176            this._preview.startup();
    72             this._supportingWidgets.push(this._toolkit, this._preview);
     77            this.addChild(this._preview);
    7378        }
    7479    });
  • Dev/trunk/client/qed/pages/session.js

    r420 r441  
    5151        onSave: function(evt) {
    5252            lang.mixin(this.session,this.propertiesForm.get('value'));
    53             this.session.accounts = array.map(this._accountList.getItems(),function(item){
    54                 return store.getIdentity(item);
     53            this.session.accounts = array.map(this._accountList.get('value'),
     54                                              function(item){
     55                                                  return store.getIdentity(item);
    5556            });
    5657            store.put(this.session)
     
    7172        },
    7273        _setupAccountList: function() {
    73             this._accountList = new AccountListView().placeAt(this.accountListNode);
     74            this._accountList = new AccountListView({
     75                value: this.session.accounts
     76            }).placeAt(this.accountListNode);
    7477            this._accountList.startup();
    75             for (var account in this.session.accounts) {
    76                 this._accountList.insertItem(this.session.accounts[account]);
    77             }
    7878        },
    7979        _setupAutoComplete: function() {
  • Dev/trunk/client/qed/pages/survey.js

    r426 r441  
    5555        _setupListView: function() {
    5656            this.questionList = new QuestionListView({
    57                 region: 'center'
     57                region: 'center',
     58                name: 'questions'
    5859            },this.surveyListViewNode);
    5960            this.questionList.startup();
     
    6768                .then(lang.hitch(this,function(survey){
    6869                    this.survey = survey;
    69                     array.forEach(Survey.Questions.get(this.survey),
    70                         lang.hitch(this.questionList,'appendItem'));
     70                    this.questionList.set('value',
     71                                          Survey.Questions.get(this.survey));
    7172                    this.refresh();
    7273                }));
     
    7475        },
    7576        _includeQuestion: function(question) {
    76             this.questionList.insertItem(question);
     77            this.questionList.appendItem(question);
    7778        },
    7879        refresh: function() {
     
    9798        },
    9899        _onSave: function(evt) {
    99             this.survey.questions = this.questionList.getItems();
     100            this.survey.questions = this.questionList.get('value');
    100101            store.put(this.survey)
    101102            .then(function() {
  • Dev/trunk/client/qed/pages/templates/question.html

    r417 r441  
    1515        </div>
    1616    </div>
    17     <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
    18         <div data-dojo-attach-point="QuestionEditorPreviewNode"></div>
    19     </div>
    2017</div>
Note: See TracChangeset for help on using the changeset viewer.