class Pettanr.OriginalPicture extends Peta.Content url: '/original_pictures/' @singular: () -> 'OriginalPicture' @plural: () -> 'OriginalPictures' defaults: { id: null, artist_id: null } picture: () -> new Pettanr.Cache.Retriever(Pettanr.Picture, @get('picture_id')) is_visible: (operators) -> @is_own(operators) filename: () -> @get('id') + '.' + @get('ext') mime_type: () -> 'image/' + @get('ext') r_url: () -> '/original_pictures/' + @filename() opt_img_tag: () -> {src: @r_url(), width: @get('width'), height: @get('height')} tmb_opt_img_tag: () -> new Pettanr.Image.SymbolPicture({ attr: { src: @r_url() }, picture: this }) symbol_option: () -> retriever = @retriever() @listenTo(retriever, 'retrieve', @retrieve_symbol) retriever.retrieve() retrieve_symbol: (item) -> @trigger('ready:symbol', item.tmb_opt_img_tag()) filer_caption: () -> history = @history() history.fetch({cache: true}).done => caption = if _.isEmpty(history.models) 'unpublished' else head = _.first(history.models) Pettanr.to_s(head.get('revision')) @trigger('ready:caption', 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: () -> if @id @url = @url + @id class Pettanr.OriginalPicture.History extends Backbone.Collection url: '/original_pictures/' initialize: (options) -> @original_picture = options.original_picture @model = Pettanr.Picture @url = @url + @original_picture.get('id') + '/history' class Pettanr.OriginalPicture.Head extends Backbone.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