Commit c81e4414
Changed files (7)
app
assets
javascripts
views
passwords
views
passwords
sessions
spec
javascripts
initializers
app/assets/javascripts/views/passwords/reset_form.js.coffee
@@ -4,6 +4,3 @@ class csx.Views.PasswordResetForm extends csx.FormView
events:
'input #user_email': 'onInput'
'submit form': 'onSubmit'
-
- initialize: () ->
- @model = new csx.Models.PasswordReset()
app/assets/javascripts/views/sessions/login_form.js.coffee
@@ -7,6 +7,3 @@ class csx.Views.LoginForm extends csx.FormView
'input #session_email': 'onInput'
'input #session_password': 'onInput'
'submit form': 'onSubmit'
-
- initialize: () ->
- @model = new csx.Models.Session()
app/assets/javascripts/views/sessions/registration-form.js.coffee
@@ -9,6 +9,3 @@ class csx.Views.RegistrationForm extends csx.FormView
'input #user_password': 'onInput'
'change #user_accepted': 'onInput'
'submit form': 'onSubmit'
-
- initialize: () ->
- @model = new csx.Models.Registration()
app/assets/javascripts/views/auto_view.js.coffee
@@ -19,9 +19,15 @@ class csx.AutoView extends Backbone.View
view = new constructor
el: element
$el: $(element)
+ model: @discoverModel($(element))
view.render()
key = name.replace(".", '-')
@views[key] ?= []
@views[key].push(view)
+ @discoverModel: (element) ->
+ modelName = element.data('automodel')
+ return if _.isUndefined(modelName)
+ new csx.Models[modelName]()
+
render: -> @
app/views/passwords/new.html.erb
@@ -1,5 +1,5 @@
<div class="row">
- <div class="col" data-autoview="password-reset-form">
+ <div class="col" data-autoview="password-reset-form" data-automodel="PasswordReset">
<h1>Forgot your password?</h1>
<%= form_for(@user, url: passwords_path, html: { class: "form-horizontal needs-validation", novalidate: :novalidate }) do |f| %>
<div class="form-group">
app/views/sessions/new.html.erb
@@ -10,7 +10,7 @@
</div>
<div class="col">
- <div data-autoview="login-form">
+ <div data-autoview="login-form" data-automodel="Session">
<%= form_for(@session, url: sessions_path(@session), html: { class: "form-horizontal needs-validation", novalidate: :novalidate }) do |f| %>
<legend>Got an account? Login!</legend>
<div class="form-group">
@@ -26,7 +26,7 @@
<% end %>
</div>
- <div data-autoview="registration-form">
+ <div data-autoview="registration-form" data-automodel="Registration">
<%= form_for(User.new, as: :user, url: registration_path, html: { class: 'form-horizontal', novalidate: :novalidate }) do |f| %>
<fieldset>
<legend>New to CakeSide? Join Us!</legend>
spec/javascripts/initializers/auto_view_setup_spec.js.coffee
@@ -7,6 +7,7 @@ describe "csx.AutoViewSetup", ->
subject = new csx.AutoViewSetup()
describe "#execute", ->
+
beforeEach ->
csx.AutoView.views = {}
@@ -23,3 +24,17 @@ describe "csx.AutoViewSetup", ->
expect(_.isEmpty(csx.AutoView.views)).toEqual(true)
expect(console.error).toHaveBeenCalled()
+
+ it "attaches the auto model to the auto view", ->
+ class csx.TestView extends csx.AutoView
+ @viewName 'test-view'
+
+ class csx.Models.Test extends Backbone.Model
+ defaults:
+ test: null
+
+ fixture.set '<div id="item" data-autoview="test-view" data-automodel="Test"></div>'
+ subject.execute()
+ result = csx.AutoView.views['test-view'][0]
+ expect(result instanceof csx.TestView).toEqual(true)
+ expect(result.model instanceof csx.Models.Test).toEqual(true)