示例#1
0
 Promise.all(promises).then(function() {
     indexed_array.files = files_array;
     helper.callHandler(view.model.id, 'exercise_submit', indexed_array)
     .then(function (resp) {
         if(resp.is_nobody) {
             var $ex =view.$("#exercise"+resp.exercise_index);
             $ex.find(".cw-test-content").first().html('<form class="studip_form"><fieldset><legend>'+resp.title+'</legend>'+resp.solution+'</fieldset></form>');
         } else {
             return view.renderServerSide();
         }
     }).then(function () {
         $block.find('.exercise').hide();
         $block.find('#exercise' + $exercise_index).show();
         $block.find('.submitinfo').slideDown(250).delay(1500).slideUp(250);
         $(window).trigger('resize');
     })
     .catch(function () {
         console.log('failed to store the solution');
     });
 });                
示例#2
0
        'click button[name=reset-exercise]': function (event) {
            var $form = this.$(event.target).closest('form'),
            view = this,
            $exercise_index = $form.find('input[name="exercise_index"]').val(),
            $block = this.$el.parent();

            if (confirm('Soll die Antwort zurückgesetzt werden?')) {
                helper.callHandler(this.model.id, 'exercise_reset', $form.serialize())
                .then(function () {
                    return view.renderServerSide();
                }).catch(function () {
                    console.log('failed to reset the exercise');
                }).then(function () {
                    $block.find('.exercise').hide();
                    $block.find('#exercise' + $exercise_index).show();
                    $(window).trigger('resize');
                });
            }

          return false;
        },
示例#3
0
        var $code_lang = this.$(".code_lang").val();
        var $preview_block = this.$('.code-content-preview > pre > code');
        $preview_block.html($code_content);
        $preview_block.removeAttr('class');
        $preview_block.addClass("hljs");
        if ($code_lang !== "") {
            $preview_block.addClass($code_lang);
        }
        hljs.highlightBlock($preview_block[0]);
    },

    onSave(event) {
        var view = this;
        var $code_content = this.$('textarea').val();
        var $code_lang = this.$(".code_lang").val();
        helper
          .callHandler(this.model.id, 'save', { code_content: $code_content, code_lang: $code_lang })
          .then(function () {
            jQuery(event.target).addClass('accept');
            view.switchBack();
          }).catch(function (error) {
            var errorMessage = 'Could not update the block: ' + jQuery.parseJSON(error.responseText).reason;
            alert(errorMessage);
            console.log(errorMessage, arguments);
          });
    },

    escapeHtml(text) {
      var map = {
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;',
示例#4
0
  onNavigate(event){
    if (!$('section .block-content button[name=save]').length) {
      return;
    }
    if (event.isUserInputHandled) {
      return;
    }
    event.isUserInputHandled = true;
    Backbone.trigger('preventnavigateto', !confirm('Es gibt nicht gespeicherte Änderungen. Möchten Sie die Seite trotzdem verlassen?'));
  },

  onSave(event) {
    var area = this.$('select[name=area]').val(),
        view = this;

    helper
      .callHandler(this.model.id, 'save', { area_id: area })
      .then(function () {
        $(event.target).addClass('accept');
        view.switchBack();
      }).catch(function (error) {
        var errorMessage = 'Could not update the block: ' + $.parseJSON(error.responseText).reason;
        alert(errorMessage);
        console.log(errorMessage, arguments);
      });
  },

  onModeSwitch(toView, event) {
    if (toView != 'student') {
      return;
    }
示例#5
0
      return;
    }
    // another listener already handled the user's feedback
    if (event.isUserInputHandled) {
      return;
    }
    event.isUserInputHandled = true;
    Backbone.trigger('preventviewswitch', !confirm('Es gibt nicht gespeicherte Änderungen. Möchten Sie trotzdem fortfahren?'));
  },

  onSave(event) {
    var $view = this;
    var $audio_gallery_content = '';
    
    helper
      .callHandler(this.model.id, 'save', {
        audio_gallery_content: $audio_gallery_content
      })
      .then(
        // success
        function () {
          $(event.target).addClass('accept');
          $view.switchBack();
        },
        // error
        function (error) {
          var errorMessage = 'Could not update the block: '+$.parseJSON(error.responseText).reason;
          alert(errorMessage);
          console.log(errorMessage, arguments);
        });
  }
示例#6
0
          var errorMessage = 'Could not add the section: ' + jQuery.parseJSON(error.responseText).reason;
          alert(errorMessage);
          console.log(errorMessage, arguments);
        }
        li_wrapper.remove();
        $controls.show();
      });
  },

  _addStructure(parent_id, model) {
    var data = {
      parent: parent_id,
      title:  model.get('title')
    };

    return helper.callHandler(this.model.id, 'add_structure', data);
  },

  _sortable: null,

  _original_positions: null,

  _get_positions() {
    return this.$el.sortable('toArray', { attribute: 'data-blockid' });
  },

  initSorting() {
    if (this._sortable) {
      throw 'Already sorting!';
    }
    this._sortable = this.$el;
示例#7
0
  _addStructure(parent_id, model) {
      
    if (model.attributes.type !='section') {
        var data = {
          parent: parent_id,
          title:  model.get('title'),
          publication_date: model.get('publication_date')
        };
    } else if (model.attributes.type =='section') {
        var data = {
          parent: parent_id,
          title:  model.get('title'),
        };
    } 
    return helper.callHandler(this.model.id, 'add_structure', data);
  },

  editStructure(event) {
    var $parent = jQuery(event.target).closest('[data-blockid]'),
        model = this._modelFromElement($parent),
        $title_el, orig_model, view, updateListItem;

    if (model.isNew()) {
      return;
    }

    if (!model.get('type')) {
      throw 'ERROR';
    }
示例#8
0
            $view.$el.find('input[name="gallery-autoplay"]').prop( "checked", true)
        }
        if ($stored_hidenav == 1) {
            $view.$el.find('input[name="gallery-hidenav"]').prop( "checked", true)
        }
    },

    onSave(event) {
        var view = this;
        var $folder = this.$el.find('.gallery-folder');
        var $autoplay = this.$el.find('input[name="gallery-autoplay"]').prop( "checked") ? 1 : 0;
        var $autoplaytimer = this.$el.find('input[name="gallery-autoplay-timer"]').val();
        var $height = this.$el.find('input[name="gallery-height"]').val();
        var $hidenav = this.$el.find('input[name="gallery-hidenav"]').prop( "checked") ? 1 : 0;
        var $gallery_folder_id = $folder.find('option:selected').attr('folder_id');
        helper
          .callHandler(this.model.id, 'save', {gallery_folder_id: $gallery_folder_id, gallery_height: $height, gallery_autoplay: $autoplay, gallery_autoplay_timer: $autoplaytimer, gallery_hidenav: $hidenav})
          .then(function () {
            jQuery(event.target).addClass('accept');
            view.switchBack();
          }).catch(function (error) {
            var errorMessage = 'Could not update the block: ' + jQuery.parseJSON(error.responseText).reason;
            alert(errorMessage);
            console.log(errorMessage, arguments);
          });
    },

    onModeSwitch(toView, event) {
        if (toView != 'student') {
          return;
        }
示例#9
0
    onSave(event) {
        var view = this;
        var $assorttype = this.$('input[name="assorttype"]:checked').val();
        var $assortblocksarray = new Array();

        this.$('input[name="assortblocks"]:checked').each(function(){
            var $id = $(this).val();
            var $name = $("#blockname-"+$id)
                        .val()
                        .replace(/[\u00A0-\u9999<>\&]/gim, function(i){
                            return '&#'+i.charCodeAt(0)+';';
                        });
            $assortblocksarray.push({id : $id , name : $name, hash: ''});
        });
        helper
            .callHandler(this.model.id, "save", {assortblocks: $assortblocksarray, assorttype: $assorttype})
            .then(
                // success
                function () {
                    jQuery(event.target).addClass("accept");
                    view.switchBack();
                },
                // error
                function (error) {
                    var errorMessage = 'Could not update the block: '+jQuery.parseJSON(error.responseText).reason;
                    alert(errorMessage);
                    console.log(errorMessage, arguments);
                })
            .done();
    },
示例#10
0
                    card_content.back_img_file_id = $(this).find('.cw-dialogcards-back-img-file option:selected').attr('file_id');
                    card_content.back_img_file_name = $(this).find('.cw-dialogcards-back-img-file option:selected').attr('file_name');
                    card_content.back_img = true;
                    card_content.back_external_file = false;
                    break;
                case 'none':
                    card_content.back_external_file = false;
                    card_content.back_img = false;
            }
            card_content.back_text = $(this).find('.cw-dialogcards-back-text').val();
            card_content.index = index;
            dialogcards_content.push(card_content);
        });
        dialogcards_content = JSON.stringify(dialogcards_content);
        helper
        .callHandler(this.model.id, 'save', {
              dialogcards_content : dialogcards_content
        })
        .then(
            // success
            function () {
                $(event.target).addClass('accept');
                $view.switchBack();
            },

            // error
            function (error) {
                console.log(error);
            }
        );
    },
示例#11
0
    store(){
      var $view = this;
      var draw = {};

      draw.clickX = JSON.stringify(this.clickX);
      draw.clickY = JSON.stringify(this.clickY);
      draw.clickDrag = JSON.stringify(this.clickDrag);
      draw.clickColor = JSON.stringify(this.clickColor);
      draw.clickSize = JSON.stringify(this.clickSize);
      draw.clickTool = JSON.stringify(this.clickTool);
      draw.Text = JSON.stringify(this.Text);

      draw = JSON.stringify(draw);

      helper
      .callHandler(this.model.id, 'store_draw', {
          canvas_draw: draw
      })
      .then(
        // success
        function () {
        },

        // error
        function (error) {
          var errorMessage = 'Could not store drawing: '+$.parseJSON(error.responseText).reason;
          alert(errorMessage);
          console.log(errorMessage, arguments);
        });
    },

    reset() {
示例#12
0
    var view = this;
    var $file = this.$el.find('.download-file');
    var $folder = this.$el.find('.download-folder');
    var $file_val = $file.val();
    var $file_id = $file.find('option:selected').attr('file_id');
    var $file_name = $file.find('option:selected').attr('file_name');
    var $folder_id = $folder.find('option:selected').attr('folder_id');
    var $download_title = this.$('input[name="download-title"]').val();
    var $download_info = this.$('input[name="download-info"]').val();
    var $download_success = this.$('input[name="download-success"]').val();

    helper
      .callHandler(this.model.id, 'save', {
        file: $file_val,
        file_id: $file_id,
        file_name: $file_name,
        folder_id: $folder_id,
        download_title: $download_title,
        download_info: $download_info,
        download_success: $download_success
      })
      .then(function () {
        $(event.target).addClass('accept');
        view.switchBack();
      }).catch(function (error) {
        var errorMessage = 'Could not update the block: ' + $.parseJSON(error.responseText).reason;
        alert(errorMessage);
        console.log(errorMessage, arguments);
      });
  },

  selectFolder() {
示例#13
0
        if ($linktype == 'internal') {
            var $linktarget = $view.$('select.cw-link-target option:selected').val();
        }
        if ($linktype == 'external') {
            var $linkprotocol = $view.$('select.cw-link-protocol option:selected').val();
            var $linktarget = $view.$('input.cw-link-target').val().replace('http://','').replace('https://','');
            $linktarget = $linkprotocol+$linktarget;
        }
        var $linktitle = $view.$('.cw-link-title').val();
        if ($linktitle == '') {
            $linktitle = $linktarget;
        }

        helper
        .callHandler(this.model.id, 'save', {
              link_type : $linktype,
              link_target: $linktarget,
              link_title:  $linktitle
        })
        .then(
            // success
            function () {
                $(event.target).addClass('accept');
                $view.switchBack();
            },

            // error
            function (error) {
                console.log(error);
            }
        );
    },
示例#14
0
        }
        $view.$('.cw-iav-stop-content').hide('fade', 800);
        $view.$('.cw-iav-test-content').hide('fade', 800);
    },

    submitExercise(event) {
        var $form = this.$(event.target).closest('form'),
        view = this,
        top = document.body.scrollTop,
        $player = view.$('.cw-iav-player'),
        $current = $player.prop('currentTime'),
        $test_json = view.$('.test-json').val(),
        $stop_json = view.$('.stop-json').val(),
        $block = this.$el.parent();

        helper.callHandler(this.model.id, 'exercise_submit', $form.serialize())
        .then(function (resp) {
            return view.renderServerSide();
        }).then(function () {
            view.$('.test-json').val($test_json);
            view.$('.stop-json').val($stop_json);
            $player.prop('currentTime', $current);
            
            document.body.scrollTop = top;
        })
        .catch(function () {
            console.log('failed to store the solution');
        });

        return false;
    },
示例#15
0
            tests_json.push(json);
        });
        tests_json = JSON.stringify(tests_json);

        let iav_source = {};
        if (this.$('.cw-iav-source').val() == 'url') {
            iav_source.url = this.$(".cw-iav-url").val();
            iav_source.external = true;
        } else {
            iav_source.file_id = this.$('.cw-iav-video-file option:selected').attr('file_id');
            iav_source.file_name = this.$('.cw-iav-video-file option:selected').attr('file_name');
            iav_source.external = false;
        }
        iav_source = JSON.stringify(iav_source);

        helper
            .callHandler(this.model.id, "save", {iav_source: iav_source, iav_overlays: overlay_json, iav_stops: stop_json, iav_tests: tests_json, assignment_id: $assignment_id}) 
            .then(
                // success
                function () {
                    jQuery(event.target).addClass("accept");
                    $view.switchBack();
                },

                // error
                function (error) {
                    var errorMessage = 'Could not update the block: '+jQuery.parseJSON(error.responseText).reason;
                    alert(errorMessage);
                    console.log(errorMessage, arguments);
                });
    },