From 34e92456f7d5d77695fa9d2d18590d3c16d19453 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Tue, 23 Feb 2016 11:54:35 +0100 Subject: [PATCH] Fixed form initialisation with empty model/attributes. --- .../_application_controller_form.coffee | 26 ++++++++++--------- ...0223000002_app_version_for_new_messages.rb | 5 ++++ lib/app_version.rb | 1 + public/assets/tests/form.js | 8 ++++++ 4 files changed, 28 insertions(+), 12 deletions(-) create mode 100644 db/migrate/20160223000002_app_version_for_new_messages.rb diff --git a/app/assets/javascripts/app/controllers/_application_controller_form.coffee b/app/assets/javascripts/app/controllers/_application_controller_form.coffee index c5b64db52..f853945fc 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_form.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_form.coffee @@ -9,6 +9,11 @@ class App.ControllerForm extends App.Controller @handlers.push @showHideToggle @handlers.push @requiredMandantoryToggle + if !@model + @model = {} + if !@attributes + @attributes = [] + # set empty class attributes if needed if !@form @form = @formGen() @@ -16,14 +21,9 @@ class App.ControllerForm extends App.Controller # add alert placeholder @form.prepend('') - if !@model - @model = {} - if !@attributes - @attributes = [] - # if element is given, prepend form to it if @el - @el.prepend( @form ) + @el.prepend(@form) # trigger change to rebuild shown/hidden item and update sub selections if typeof @form is 'object' @@ -38,7 +38,7 @@ class App.ControllerForm extends App.Controller @form showAlert: (message) => - @form.find('.alert').removeClass('hide').html( App.i18n.translateContent( message ) ) + @form.find('.alert').removeClass('hide').html( App.i18n.translateContent(message) ) hideAlert: => @form.find('.alert').addClass('hide').html() @@ -46,7 +46,7 @@ class App.ControllerForm extends App.Controller html: => @form.html() - formGen: -> + formGen: => App.Log.debug 'ControllerForm', 'formGen', @model.configure_attributes # check if own fieldset should be generated @@ -55,12 +55,14 @@ class App.ControllerForm extends App.Controller else fieldset = $('
') + return fieldset if _.isEmpty(@model) + # collect form attributes @attributes = [] if @model.attributesGet attributesClean = @model.attributesGet(@screen) else - attributesClean = App.Model.attributesGet(@screen, @model.configure_attributes ) + attributesClean = App.Model.attributesGet(@screen, @model.configure_attributes) for attributeName, attribute of attributesClean @@ -81,7 +83,7 @@ class App.ControllerForm extends App.Controller attribute_count = attribute_count + 1 # add item - item = @formGenItem( attribute, className, fieldset, attribute_count ) + item = @formGenItem(attribute, className, fieldset, attribute_count) item.appendTo(fieldset) # if password, add confirm password item @@ -96,7 +98,7 @@ class App.ControllerForm extends App.Controller if !attribute.single attribute.display = attribute.display + ' (confirm)' attribute.name = attribute.name + '_confirm' - item = @formGenItem( attribute, className, fieldset, attribute_count ) + item = @formGenItem(attribute, className, fieldset, attribute_count) item.appendTo(fieldset) if @fullForm @@ -188,7 +190,7 @@ class App.ControllerForm extends App.Controller ### - formGenItem: (attribute_config, classname, form, attribute_count ) -> + formGenItem: (attribute_config, classname, form, attribute_count) -> attribute = clone( attribute_config, true ) # create item id diff --git a/db/migrate/20160223000002_app_version_for_new_messages.rb b/db/migrate/20160223000002_app_version_for_new_messages.rb new file mode 100644 index 000000000..e0b8abb98 --- /dev/null +++ b/db/migrate/20160223000002_app_version_for_new_messages.rb @@ -0,0 +1,5 @@ +class AppVersionForNewMessages < ActiveRecord::Migration + def up + AppVersion.set(true) + end +end diff --git a/lib/app_version.rb b/lib/app_version.rb index 19bc71ffb..fcb40d45a 100644 --- a/lib/app_version.rb +++ b/lib/app_version.rb @@ -27,6 +27,7 @@ set new app version and if browser reload is required =end def self.set(reload_required = false) + return false if !Setting.find_by(name: 'app_version') version = "#{Time.zone.now.strftime('%Y%m%d%H%M%S')}:#{reload_required}" Setting.set('app_version', version) diff --git a/public/assets/tests/form.js b/public/assets/tests/form.js index 6a9034a79..b92c8e357 100644 --- a/public/assets/tests/form.js +++ b/public/assets/tests/form.js @@ -1,5 +1,13 @@ // form +test( "form without @el", function() { + var form = new App.ControllerForm() + + equal($(form.html()).is('div'), true) + equal($(form.html()).hasClass('alert'), true) + equal($(form.html()).hasClass('hide'), true) + +}) test( "form elements check", function() { // deepEqual( item, test.value, 'group set/get tests' ); $('#forms').append('

form elements check

')