-class Panel extends Item\r
- @single: () ->\r
+class Pettanr.Panel extends Peta.Root\r
+ \r
+ @singular: () ->\r
'Panel'\r
\r
@plural: () ->\r
'Panels'\r
\r
defaults: {\r
- id: 11\r
+ id: null,\r
+ width: 500,\r
+ height: 300,\r
+ border: 2,\r
+ publish: 0\r
} \r
\r
- initialize: () ->\r
- confirm("Welcome to Panel")\r
+ with_elements: () ->\r
+ new Pettanr.Panel.WithElements({id: @get('id')})\r
+ \r
+ overwrite: (options) ->\r
+ operators = Pettanr.cache.operators\r
+ return false if not operators.author\r
+ @set('author_id', operators.author.id)\r
+ \r
+ is_visible: (operators = Pettanr.cache.operators) ->\r
+ switch super(operators)\r
+ when null # super return\r
+ return true\r
+ when false\r
+ return false\r
+ else\r
+ return true if @isNew()\r
+ @is_publish()\r
+ \r
+ overwrite: (options) ->\r
+ @set('author_id', Pettanr.cache.operators.author.id)\r
+ \r
+ is_usable: (operators = Pettanr.cache.operators) ->\r
+ @is_visible(operators)\r
+ \r
+ is_publish: () ->\r
+ @get('publish') > 0\r
+ \r
+ @licensed_pictures: (panels) ->\r
+ r = {}\r
+ _.each panels, (panel) ->\r
+ _.extend r, panel.licensed_pictures()\r
+ r\r
+ \r
+ licensed_pictures: () ->\r
+ r = {}\r
+ _.each @scenario_elements(), (elm) ->\r
+ return if not elm.my_class().has_picture()\r
+ pid = elm.get('picture_id')\r
+ r[pid] = true if not r[pid]\r
+ r\r
+ \r
+ label: (shorten_length) ->\r
+ @_label('caption', shorten_length)\r
+ \r
+ initialize: (attr = {}, options = {}) ->\r
+ super(attr, options)\r
+ @set(attr)\r
+ \r
+class Pettanr.Panel.WithElements extends Pettanr.Panel\r
+ \r
+ fetch: (options) ->\r
+ @url = @default_url() + '?with_elements=true'\r
+ super(options)\r
+ \r
+ save: (attrs) ->\r
+ @url = @default_url()\r
+ method = if @isNew()\r
+ 'create'\r
+ else\r
+ 'update'\r
+ _this = this\r
+ xhr = @sync(method, this, {\r
+ attrs: {panel: attrs},\r
+ success: (model, response, options) =>\r
+ _this.set(model, {silent: true})\r
+ _this.trigger('save:success', _this, response)\r
+ error: (model, response, options) =>\r
+ _this.trigger('save:fail', _this, response)\r
+ })\r
+ xhr\r
\r
- @test: () ->\r
- confirm( @single())\r
- confirm( @plural() )\r
- confirm( @class_name() )\r
- confirm( @element_name() )\r
- confirm( @table_name() )\r
- \r
+ destroy: (options) ->\r
+ @url = @my_url()\r
+ super(options)\r
\r
- test: () ->\r
-\r
-@Panel = Panel\r