mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 08:43:25 +08:00
79 lines
1.9 KiB
CoffeeScript
79 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
|