(function($) { var Alpaca = $.alpaca; Alpaca.Fields.TagField = Alpaca.Fields.LowerCaseField.extend( /** * @lends Alpaca.Fields.TagField.prototype */ { /** * @see Alpaca.Fields.TextField#getFieldType */ getFieldType: function() { return "tag"; }, /** * @see Alpaca.Fields.TextField#setup */ setup: function() { this.base(); if (!this.options.separator) { this.options.separator = ","; } }, /** * @see Alpaca.Fields.TextField#getValue */ getControlValue: function() { var val = this.base(); if (val === "") { return []; } return val.split(this.options.separator); }, /** * @see Alpaca.Fields.TextField#setValue */ setValue: function(val) { if (val === "") { return; } if (!val) { return this.base(""); } this.base(val.join(this.options.separator)); }, /** * @see Alpaca.Field#onBlur */ onBlur: function(e) { this.base(e); var vals = this.getValue(); var trimmed = []; $.each(vals, function(i, v) { if (v.trim() !== "") { trimmed.push(v.trim()); } }); this.setValue(trimmed); } /* builder_helpers */ , /** * @see Alpaca.Fields.TextField#getTitle */ getTitle: function() { return "Tag Field"; }, /** * @see Alpaca.Fields.TextField#getDescription */ getDescription: function() { return "Text field for entering list of tags separated by delimiter."; }, /** * @private * @see Alpaca.Fields.TextField#getSchemaOfOptions */ getSchemaOfOptions: function() { return Alpaca.merge(this.base(), { "properties": { "separator": { "title": "Separator", "description": "Separator used to split tags.", "type": "string", "default":"," } } }); }, /** * @private * @see Alpaca.Fields.TextField#getOptionsForOptions */ getOptionsForOptions: function() { return Alpaca.merge(this.base(), { "fields": { "separator": { "type": "text" } } }); } /* end_builder_helpers */ }); Alpaca.registerFieldClass("tag", Alpaca.Fields.TagField); })(jQuery);