discourse/app/assets/javascripts/admin/models/site_customization.js.coffee
2013-02-07 16:45:24 +01:00

78 lines
1.9 KiB
CoffeeScript

window.Discourse.SiteCustomization = Discourse.Model.extend
init: ->
@_super()
@startTrackingChanges()
trackedProperties: ['enabled','name', 'stylesheet', 'header', 'override_default_style']
description: (->
"#{@name}#{if @enabled then ' (*)' else ''}"
).property('selected', 'name')
changed: (->
return false unless @originals
@trackedProperties.any (p)=>
@originals[p] != @get(p)
).property('override_default_style','enabled','name', 'stylesheet', 'header', 'originals') # TODO figure out how to call with apply
startTrackingChanges: ->
@set('originals',{})
@trackedProperties.each (p)=>
@originals[p] = @get(p)
true
previewUrl: (->
"/?preview-style=#{@get('key')}"
).property('key')
disableSave:(->
!@get('changed')
).property('changed')
save: ->
@startTrackingChanges()
data =
name: @name
enabled: @enabled
stylesheet: @stylesheet
header: @header
override_default_style: @override_default_style
$.ajax
url: "/admin/site_customizations#{if @id then '/' + @id else ''}"
data:
site_customization: data
type: if @id then 'PUT' else 'POST'
delete: ->
return unless @id
$.ajax
url: "/admin/site_customizations/#{ @id }"
type: 'DELETE'
SiteCustomizations = Ember.ArrayProxy.extend
selectedItemChanged: (->
selected = @get('selectedItem')
@get('content').each (i)->
i.set('selected', selected == i)
).observes('selectedItem')
Discourse.SiteCustomization.reopenClass
findAll: ->
content = SiteCustomizations.create
content: []
loading: true
$.ajax
url: "/admin/site_customizations"
dataType: "json"
success: (data)=>
data?.site_customizations.each (c)->
item = Discourse.SiteCustomization.create(c)
content.pushObject(item)
content.set('loading',false)
content