app/assets/javascripts/locomotive/views/shared/form_view.js.coffee in locomotivecms-3.0.0.pre.alpha.2 vs app/assets/javascripts/locomotive/views/shared/form_view.js.coffee in locomotivecms-3.0.0.pre.alpha.3

- old
+ new

@@ -12,52 +12,51 @@ 'submit form': 'save' render: -> @display_active_nav() + @enable_hover() + @enable_file_inputs() @enable_array_inputs() @enable_toggle_inputs() @enable_date_inputs() @enable_datetime_inputs() @enable_rte_inputs() @enable_tags_inputs() @enable_document_picker_inputs() + @enable_select_inputs() - # make title editable (if possible) - # @make_title_editable() - - # @_hide_last_separator() - - # make inputs foldable (if specified) - # @make_inputs_foldable() - - # TODO: allow users to save with CTRL+S or CMD+s - # @enable_save_with_keys_combination() - - # enable form notifications - # @enable_form_notifications() - return @ display_active_nav: -> url = document.location.toString() if url.match('#') name = url.split('#')[1] @$(".nav-tabs a[href='##{name}']").tab('show') record_active_tab: -> - tab_name = $('form .nav-tabs li.active a').attr('href').replace('#', '') - @$('#active_tab').val(tab_name) + if $('form .nav-tabs li.active a').size() > 0 + tab_name = $('form .nav-tabs li.active a').attr('href').replace('#', '') + @$('#active_tab').val(tab_name) change_state: -> @$('form button[type=submit]').button('loading') + reset_state: -> + @$('form button[type=submit]').button('reset') + save: (event) -> @change_state() @record_active_tab() + enable_hover: -> + $('.form-group.input').hover -> + $(this).addClass('hovered') + , -> + $(this).removeClass('hovered') + enable_file_inputs: -> self = @ @$('.input.file').each -> view = new Locomotive.Views.Inputs.FileView(el: $(@)) view.render() @@ -104,148 +103,22 @@ self.inputs.push(view) enable_tags_inputs: -> @$('.input.tags input[type=text]').tagsinput() + enable_select_inputs: -> + @$('.input.select select:not(.disable-select2)').select2() + enable_document_picker_inputs: -> self = @ @$('.input.document_picker').each -> view = new Locomotive.Views.Inputs.DocumentPickerView(el: $(@)) view.render() self.inputs.push(view) remove: -> - self.inputs.each (view) -> view.remove() - @$('.input.tags input[type=text').tagsinput('destroy') + _.each @inputs.each, (view) -> view.remove() + @$('.input.tags input[type=text]').tagsinput('destroy') + @$('.input.select select').select2('destroy') _stop_event: (event) -> event.stopPropagation() & event.preventDefault() - - - # =============================== - - # save: (event) -> - # alert('foo') - # by default, follow the default behaviour - - # save_in_ajax: (event, options) -> - # event.stopPropagation() & event.preventDefault() - - # @trigger_change_event_on_focused_inputs() - - # form = $(event.target).trigger('ajax:beforeSend') - - # @clear_errors() - - # options ||= { headers: {}, on_success: null, on_error: null } - - # previous_attributes = _.clone @model.attributes - - # xhr = @model.save {}, - # headers: options.headers - # silent: true # since we pass an empty hash above, no need to trigger the callbacks - - # xhr.success (model, response, _options) => - # form.trigger('ajax:complete') - - # @model.set(previous_attributes) - # model.attributes = previous_attributes - - # options.on_success(model, xhr) if options.on_success - - # xhr.error (model, xhr) => - # form.trigger('ajax:complete') - - # errors = JSON.parse(model.responseText) - - # @show_errors errors - - # options.on_error() if options.on_error - - # make_title_editable: -> - # title = @$('h2 a.editable') - - # if title.size() > 0 - # target = @$("##{title.attr('rel')}") - # target.parent().hide() - - # title.click (event) => - # event.stopPropagation() & event.preventDefault() - # newValue = prompt(title.attr('title'), title.html()); - # if newValue && newValue != '' - # title.html(newValue) - # target.val(newValue).trigger('change') - - # make_inputs_foldable: -> - # self = @ - # @$('.formtastic fieldset.foldable.folded ol').hide() - # @$('.formtastic fieldset.foldable legend').click -> - # parent = $(@).parent() - # content = $(@).next() - - # if parent.hasClass 'folded' - # parent.removeClass 'folded' - # content.slideDown 100, -> self.after_inputs_fold(parent) - # else - # content.slideUp 100, -> parent.addClass('folded') - - # trigger_change_event_on_focused_inputs: -> - # # make sure that the current text field gets saved too - # input = @$('form input[type=text]:focus, form input[type=password]:focus, form input[type=number]:focus, form textarea:focus') - # input.trigger('change') if input.size() > 0 - - # enable_save_with_keys_combination: -> - # $.cmd 'S', (() => - # @$('form input[type=submit]').trigger('click') - # ), [], ignoreCase: true - - # enable_form_notifications: -> - # @$('form').formSubmitNotification() - - # after_inputs_fold: -> - # # overide this method if necessary - - # clear_errors: -> - # @$('.inline-errors').remove() - - # show_errors: (errors) -> - # for attribute, message of errors - # if _.isString(message[0]) - # html = $("<div class=\"inline-errors\"><p>#{message[0]}</p></div>") - # @show_error attribute, message[0], html - # else - # @show_error attribute, message - - # show_error: (attribute, message, html) -> - # prefix = if @namespace? then "#{@namespace}_" else '' - - # input = @$("##{prefix}#{@model.paramRoot}_#{attribute}") - # input = @$("##{prefix}#{@model.paramRoot}_#{attribute}_id") if input.size() == 0 - # input = @$("##{prefix}#{@model.paramRoot}_#{attribute}_ids") if input.size() == 0 - - # return unless input.size() > 0 - - # anchor = input.parent().find('.error-anchor') - # anchor = input if anchor.size() == 0 - # anchor.after(html) - - # _enable_checkbox: (name, options) -> - # options ||= {} - # model_name = options.model_name || @model.paramRoot - - # @$("li##{model_name}_#{name}_input input[type=checkbox]").checkToggle - # on_callback: => - # _.each options.features, (exp) -> @$("li##{model_name}_#{exp}_input").hide() - # options.on_callback() if options.on_callback? - # @_hide_last_separator() - # off_callback: => - # _.each options.features, (exp) -> @$("li##{model_name}_#{exp}_input").show() - # options.off_callback() if options.off_callback? - # @_hide_last_separator() - - # _hide_last_separator: -> - # _.each @$('fieldset'), (fieldset) => - # $(fieldset).find('li.last').removeClass('last') - # $(_.last($(fieldset).find('li.input:visible'))).addClass('last') - - # enable_form_notifications: -> - # @$('form').formSubmitNotification()