Sha256: efabe9b37ab057c89d8408ccbe748881c4eac4066a1e45e0da6fc06d098f617d

Contents?: true

Size: 1.91 KB

Versions: 46

Compression:

Stored size: 1.91 KB

Contents

(function ($){
  SirTrevor.BlockMixins.Formable = {
    mixinName: "Formable",
    preload: true,

    initializeFormable: function() {
      
      if (_.isUndefined(this['afterLoadData'])) {
        this['afterLoadData'] = function(data) { };
      }
    },
    
    formId: function(id) {
      return this.blockID + "_" + id;
    },

    _serializeData: function() {
      
      var data = $(":input,textarea,select", this.inner).not(':input:radio').serializeJSON();

      $(':input:radio:checked', this.inner).each(function(index, input) {
        var key = $(input).data('key') || input.getAttribute('name');

        if (!key.match("\\[")) {
          data[key] = $(input).val();
        }
      });

      /* Simple to start. Add conditions later */
      if (this.hasTextBlock()) {
        data.text = this.getTextBlockHTML();
        if (data.text.length > 0 && this.options.convertToMarkdown) {
          data.text = stToMarkdown(data.text, this.type);
        }
      }

      return data;
    },
    
    loadData: function(data){
      if (this.hasTextBlock()) {
        $(this.getTextBlock()).html(SirTrevor.toHTML(data.text, this.type));
      }
      this.loadFormDataByKey(data);
      this.afterLoadData(data);
    },
    
    loadFormDataByKey: function(data) {
      $(':input', this.inner).not('button,:input[type=hidden]').each(function(index, input) {
        var key = $(input).data('key') || input.getAttribute('name');

        if (key) {
        
          if (key.match("\\[\\]$")) {
            key = key.replace("[]", "");
          }
          
          // by wrapping it in an array, this'll "just work" for radio and checkbox fields too
          var input_data = data[key];

          if (!(input_data instanceof Array)) {
            input_data = [input_data];
          }
          $(this).val(input_data);
        }
      });
    },
  },
  

  SirTrevor.Block.prototype.availableMixins.push("formable");
})(jQuery);

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
blacklight-spotlight-2.4.1 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.4.0 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.3.3 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.3.2 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.3.1 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.3.0 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.2.1 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.2.0 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.1.0 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.2 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.1 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.0 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.0.rc6 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.0.rc5 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.0.rc4 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.0.rc3 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.0.rc2 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-2.0.0.rc1 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-1.5.1 app/assets/javascripts/spotlight/block_mixins/formable.js
blacklight-spotlight-1.4.1 app/assets/javascripts/spotlight/block_mixins/formable.js