master
 1class csx.Views.My.Profiles.ShowView extends Marionette.ItemView
 2  template: JST["templates/my/profiles/show"]
 3  ui:
 4    name: '#user_name'
 5    email: '#user_email'
 6    city: '#user_city'
 7    website: '#user_website'
 8    facebook: '#user_facebook'
 9    twitter: '#user_twitter'
10    save_button: '#save-button'
11    cancel_button: '#cancel-button'
12    status: '#status-message'
13
14  modelEvents:
15    'invalid': 'displayError'
16
17  events:
18    "submit #profile-form": "save"
19    "keyup input": "refreshStatus"
20    'click #cancel-button': 'cancel'
21
22  save: (event) ->
23    event.preventDefault()
24    event.stopPropagation()
25    @disableSaveButton()
26    @model.save(null,
27      success: @savedSuccessfully
28      error: @couldNotSave
29    )
30
31  savedSuccessfully: (profile) =>
32    @disableSaveButton()
33    @ui.status.removeClass('hide')
34    @ui.status.removeClass('alert-danger')
35    @ui.status.html("Saved!")
36
37  couldNotSave: =>
38    console.log('fudge')
39
40  enableSaveButton: ->
41    @ui.save_button.removeAttr('disabled')
42
43  disableSaveButton: ->
44    @ui.save_button.attr('disabled', 'disabled')
45
46  displayError: ->
47    @disableSaveButton()
48    @ui.status.addClass('alert-danger')
49    @ui.status.removeClass('hide')
50    @ui.status.html(@model.validationError)
51
52  refreshStatus: ->
53    @ui.status.addClass('hide')
54    @enableSaveButton()
55    @model.set('name', @ui.name.val())
56    @model.set('email', @ui.email.val())
57    @model.set('city', @ui.city.val())
58    @model.set('website', @ui.website.val())
59    @model.set('facebook', @ui.facebook.val())
60    @model.set('twitter', @ui.twitter.val())
61    @model.isValid()
62
63  cancel: ->
64    @enableSaveButton()