class Pettanr.OriginalPicture extends Peta.Content @singular: () -> 'OriginalPicture' @plural: () -> 'OriginalPictures' defaults: { id: null, artist_id: null } is_visible: (operators = Pettanr.cache.operators) -> @is_own(operators) filename: () -> @get('id') + '.' + @get('ext') mime_type: () -> 'image/' + @get('ext') r_url: () -> '/original_pictures/' + @filename() license_url: () -> '/original_picture_license_groups/new/' + @get('id') symbol_option: (context, options) -> @retrieve(this, { success: (symbol_item) => options.success.call(context, symbol_item.symbol_file()) }) filer_caption: (context, options) -> history = @history() history.fetch({cache: true}).done => caption = if _.isEmpty(history.models) 'unpublished' else head = _.first(history.models) Pettanr.to_s(head.get('revision')) options.success.call(context, caption) revision: () -> new Pettanr.OriginalPicture.Head({original_picture: this}) history: () -> new Pettanr.OriginalPicture.History({original_picture: this}) is_unpublished: () -> @get('published_at') == null and @get('stopped_at') == null is_stopped: () -> @get('stopped_at') != null is_unlicensed: () -> dt = @get('published_at') || @get('stopped_at') return false if not dt @get('uploaded_at') > dt is_published: () -> @get('published_at') != null state: () -> switch true when @is_unpublished() 'unpublished' when @is_unlicensed() 'unlicensed' when @is_stopped() 'stopped' when @is_published() 'published' initialize: (attr = {}, options = {}) -> super(attr, options) class Pettanr.OriginalPicture.History extends Backbone.Collection initialize: (options) -> @original_picture = options.original_picture @model = Pettanr.Picture @url = @original_picture.default_url() + '/history' class Pettanr.OriginalPicture.Head extends Pettanr.View tagName: 'span' initialize: (options) -> @original_picture = options.original_picture @pictures = new Pettanr.OriginalPicture.History({id: @original_picture.get('id')}) render: () -> @pictures.fetch({cache: true}).done => head = @pictures.models[0] value = if head head.get('revision') else 'unpublished' this.$el.html(value) this