block.coffee 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. Spine = require('spine/core')
  2. utils = require('lib/utils')
  3. BaseModel = require('models/base')
  4. class Block extends BaseModel
  5. @configure "Block", "site", "code", "name", "content", "photo", "enabled", "_attachments"
  6. @extend @CouchAjax
  7. @extend @CouchChanges
  8. handler: @CouchChanges.PrivateChanges
  9. @queryOn: ['name','code']
  10. validate: ->
  11. @code = utils.cleanCode @code
  12. return 'Site is required' unless @site
  13. return 'Code is required' unless @code
  14. return 'Name is required' unless @name
  15. return 'Content is required' unless @content
  16. # Validate the `code` to be unique within site
  17. found = Block.select (block) =>
  18. matched = block.site is @site and block.code is @code
  19. if @isNew()
  20. matched
  21. else
  22. block.id isnt @id and matched
  23. return 'Code has been already used for this site.' if found.length
  24. # Convert some boolean properties
  25. @enabled = Boolean(@enabled)
  26. # Some content transformation
  27. @content = utils.cleanContent @content
  28. return false
  29. module.exports = Block