From aa9eca25671c772ffec8f2f65aecc8a978a2f375 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Fri, 5 Jun 2015 10:50:45 +0900 Subject: [PATCH] fix: show's destroy button --- app/assets/javascripts/controllers.js.coffee | 2 +- .../controllers/original_pictures.js.coffee | 4 + app/assets/javascripts/locmare/form.js.coffee | 1 + app/assets/javascripts/models/admin.js.coffee | 2 - app/assets/javascripts/models/artist.js.coffee | 3 - app/assets/javascripts/models/author.js.coffee | 3 - app/assets/javascripts/models/balloon.js.coffee | 3 - app/assets/javascripts/models/comic.js.coffee | 3 - .../javascripts/models/comic_story.js.coffee | 3 - app/assets/javascripts/models/folder.js.coffee | 19 ++-- .../javascripts/models/ground_color.js.coffee | 3 - .../javascripts/models/ground_picture.js.coffee | 3 - app/assets/javascripts/models/license.js.coffee | 3 - .../javascripts/models/license_group.js.coffee | 3 - .../javascripts/models/original_picture.js.coffee | 7 +- .../models/original_picture_license.js.coffee | 1 - .../original_picture_license_group.js.coffee | 2 - app/assets/javascripts/models/panel.js.coffee | 14 +-- .../javascripts/models/panel_picture.js.coffee | 3 - app/assets/javascripts/models/picture.js.coffee | 6 +- .../javascripts/models/resource_picture.js.coffee | 6 +- .../models/resource_picture_picture.js.coffee | 3 - app/assets/javascripts/models/scroll.js.coffee | 3 - .../javascripts/models/scroll_panel.js.coffee | 3 - app/assets/javascripts/models/sheet.js.coffee | 3 - .../javascripts/models/sheet_panel.js.coffee | 3 - app/assets/javascripts/models/speech.js.coffee | 3 - .../javascripts/models/speech_balloon.js.coffee | 3 - .../models/speech_balloon_template.js.coffee | 5 +- app/assets/javascripts/models/story.js.coffee | 3 - .../javascripts/models/story_sheet.js.coffee | 3 - .../javascripts/models/system_picture.js.coffee | 3 - app/assets/javascripts/models/user.js.coffee | 2 - .../javascripts/models/writing_format.js.coffee | 3 - app/assets/javascripts/peta/item.js.coffee | 9 ++ app/assets/javascripts/pettanr/proxy.js.coffee | 9 ++ app/assets/javascripts/pettanr/remover.js.coffee | 6 ++ app/assets/javascripts/routes.js.coffee | 12 +++ app/assets/javascripts/views/comics/show.js.coffee | 4 +- .../views/original_pictures/show.js.coffee | 33 ++++++- app/assets/javascripts/views/panels/show.js.coffee | 102 ++++++++++++--------- .../javascripts/views/pictures/credit.js.coffee | 8 +- .../javascripts/views/pictures/history.js.coffee | 33 +++++++ .../views/resource_pictures/img.js.coffee | 18 ++++ .../views/resource_pictures/show.js.coffee | 96 +++++++++++++++++++ .../javascripts/views/scrolls/show.js.coffee | 4 +- .../javascripts/views/users/account.js.coffee | 6 +- .../javascripts/work/controllers.js.coffee.erb | 4 +- app/views/resource_pictures/show.html.erb | 2 +- 49 files changed, 320 insertions(+), 160 deletions(-) create mode 100644 app/assets/javascripts/pettanr/remover.js.coffee create mode 100644 app/assets/javascripts/views/pictures/history.js.coffee create mode 100644 app/assets/javascripts/views/resource_pictures/img.js.coffee diff --git a/app/assets/javascripts/controllers.js.coffee b/app/assets/javascripts/controllers.js.coffee index 08f3925d..3912215f 100644 --- a/app/assets/javascripts/controllers.js.coffee +++ b/app/assets/javascripts/controllers.js.coffee @@ -111,7 +111,7 @@ class Pettanr.AppController @trigger('fail', response) destroy_success: (model, response) -> - @trigger('redirect', '/home/' + model.path_name()) + @trigger('redirect', 'home/' + model.path_name()) @trigger('success', model, response) destroy_fail: (model, response) -> diff --git a/app/assets/javascripts/controllers/original_pictures.js.coffee b/app/assets/javascripts/controllers/original_pictures.js.coffee index e63f4bf4..a7e6ace1 100644 --- a/app/assets/javascripts/controllers/original_pictures.js.coffee +++ b/app/assets/javascripts/controllers/original_pictures.js.coffee @@ -83,3 +83,7 @@ class Pettanr.OriginalPicturesController extends Pettanr.AppController @listenTo(@item, 'destroy:fail', @destroy_fail) @item.destroy() + destroy_success: (model, response) -> + @trigger('redirect', model.path_name()) + @trigger('success', model, response) + diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index 6c7c1479..4e55865a 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -189,6 +189,7 @@ class Locmare.Form extends Locmare.FormBase success: (model, response) -> if !Pettanr.cache.restore(model.cache_key()) # item is new + model.url = model.default_url() Pettanr.cache.store(model) else @item.fix() diff --git a/app/assets/javascripts/models/admin.js.coffee b/app/assets/javascripts/models/admin.js.coffee index a2c168bf..b816e2b1 100644 --- a/app/assets/javascripts/models/admin.js.coffee +++ b/app/assets/javascripts/models/admin.js.coffee @@ -6,6 +6,4 @@ class Pettanr.Admin extends Backbone.Model initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/artist.js.coffee b/app/assets/javascripts/models/artist.js.coffee index af7a2fff..c3b42980 100644 --- a/app/assets/javascripts/models/artist.js.coffee +++ b/app/assets/javascripts/models/artist.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Artist extends Peta.Owner - url: '/artists/' @singular: () -> 'Artist' @@ -19,6 +18,4 @@ class Pettanr.Artist extends Peta.Owner initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/author.js.coffee b/app/assets/javascripts/models/author.js.coffee index eab6899f..e0e3a680 100644 --- a/app/assets/javascripts/models/author.js.coffee +++ b/app/assets/javascripts/models/author.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Author extends Peta.Owner - url: '/authors/' @singular: () -> 'Author' @@ -19,6 +18,4 @@ class Pettanr.Author extends Peta.Owner initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/balloon.js.coffee b/app/assets/javascripts/models/balloon.js.coffee index acfae1f9..d4a50406 100644 --- a/app/assets/javascripts/models/balloon.js.coffee +++ b/app/assets/javascripts/models/balloon.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Balloon extends Peta.Element - url: '/balloons/' @singular: () -> 'Balloon' @@ -53,6 +52,4 @@ class Pettanr.Balloon extends Peta.Element initialize: (attr, options) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/comic.js.coffee b/app/assets/javascripts/models/comic.js.coffee index beb41f2e..70f5c577 100644 --- a/app/assets/javascripts/models/comic.js.coffee +++ b/app/assets/javascripts/models/comic.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Comic extends Peta.Binder - url: '/comics/' @singular: () -> 'Comic' @@ -34,6 +33,4 @@ class Pettanr.Comic extends Peta.Binder initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/comic_story.js.coffee b/app/assets/javascripts/models/comic_story.js.coffee index 4f65836c..e441d269 100644 --- a/app/assets/javascripts/models/comic_story.js.coffee +++ b/app/assets/javascripts/models/comic_story.js.coffee @@ -1,5 +1,4 @@ class Pettanr.ComicStory extends Peta.Leaf - url: '/comic_stories/' @singular: () -> 'ComicStory' @@ -37,6 +36,4 @@ class Pettanr.ComicStory extends Peta.Leaf initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/folder.js.coffee b/app/assets/javascripts/models/folder.js.coffee index a74d5658..f6caecca 100644 --- a/app/assets/javascripts/models/folder.js.coffee +++ b/app/assets/javascripts/models/folder.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Folder extends Peta.Owner - url: '/folders/' @singular: () -> 'Folder' @@ -45,17 +44,23 @@ class Pettanr.Folder extends Peta.Owner initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id class Pettanr.FolderWatch extends Pettanr.Folder - initialize: () -> - super() - @url = @url + '?ref=1' + + initialize: (attr = {}, options = {}) -> + super(attr, options) + @url = @default_url() + '?ref=1' + class Pettanr.Folder.Root extends Pettanr.Folder model: Pettanr.Folder - url: '/folders/root?ref=1' + + initialize: (attr = {}, options = {}) -> + super(attr, options) + @url = @default_url() + 'root?ref=1' + class Pettanr.Folder.Children extends Backbone.Collection model: Pettanr.Folder + initialize: (options) -> @url = '/folders/' + options.id.toString() + diff --git a/app/assets/javascripts/models/ground_color.js.coffee b/app/assets/javascripts/models/ground_color.js.coffee index eff28006..129c91b7 100644 --- a/app/assets/javascripts/models/ground_color.js.coffee +++ b/app/assets/javascripts/models/ground_color.js.coffee @@ -1,5 +1,4 @@ class Pettanr.GroundColor extends Peta.Element - url: '/ground_colors/' @singular: () -> 'GroundColor' @@ -37,6 +36,4 @@ class Pettanr.GroundColor extends Peta.Element initialize: (attr, options) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/ground_picture.js.coffee b/app/assets/javascripts/models/ground_picture.js.coffee index 276ffc36..77d074fe 100644 --- a/app/assets/javascripts/models/ground_picture.js.coffee +++ b/app/assets/javascripts/models/ground_picture.js.coffee @@ -1,5 +1,4 @@ class Pettanr.GroundPicture extends Peta.Element - url: '/ground_pictures/' @singular: () -> 'GroundPicture' @@ -60,8 +59,6 @@ class Pettanr.GroundPicture extends Peta.Element initialize: (attr, options) -> super(attr, options) - if @id - @url = @url + @id class Pettanr.GroundPicture.TraceFromPicture diff --git a/app/assets/javascripts/models/license.js.coffee b/app/assets/javascripts/models/license.js.coffee index 70cbff4b..e3ba76f7 100644 --- a/app/assets/javascripts/models/license.js.coffee +++ b/app/assets/javascripts/models/license.js.coffee @@ -1,5 +1,4 @@ class Pettanr.License extends Peta.SystemResource - url: '/licenses/' @singular: () -> 'License' @@ -39,6 +38,4 @@ class Pettanr.License extends Peta.SystemResource initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/license_group.js.coffee b/app/assets/javascripts/models/license_group.js.coffee index f5d5531a..af8693ae 100644 --- a/app/assets/javascripts/models/license_group.js.coffee +++ b/app/assets/javascripts/models/license_group.js.coffee @@ -1,5 +1,4 @@ class Pettanr.LicenseGroup extends Peta.Template - url: '/license_groups/' @singular: () -> 'LicenseGroup' @@ -13,6 +12,4 @@ class Pettanr.LicenseGroup extends Peta.Template initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/original_picture.js.coffee b/app/assets/javascripts/models/original_picture.js.coffee index 66e5f761..e6e457a0 100644 --- a/app/assets/javascripts/models/original_picture.js.coffee +++ b/app/assets/javascripts/models/original_picture.js.coffee @@ -1,5 +1,4 @@ class Pettanr.OriginalPicture extends Peta.Content - url: '/original_pictures/' @singular: () -> 'OriginalPicture' @@ -95,19 +94,17 @@ class Pettanr.OriginalPicture extends Peta.Content initialize: (attr = {}, options = {}) -> super(attr, options) - 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' + @url = @original_picture.default_url() + '/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')}) diff --git a/app/assets/javascripts/models/original_picture_license.js.coffee b/app/assets/javascripts/models/original_picture_license.js.coffee index 57095881..20978160 100644 --- a/app/assets/javascripts/models/original_picture_license.js.coffee +++ b/app/assets/javascripts/models/original_picture_license.js.coffee @@ -1,5 +1,4 @@ class Pettanr.OriginalPictureLicense extends Peta.Item - url: '/original_picture_licenses/' @singular: () -> 'OriginalPictureLicense' diff --git a/app/assets/javascripts/models/original_picture_license_group.js.coffee b/app/assets/javascripts/models/original_picture_license_group.js.coffee index aacc727d..531f6739 100644 --- a/app/assets/javascripts/models/original_picture_license_group.js.coffee +++ b/app/assets/javascripts/models/original_picture_license_group.js.coffee @@ -11,6 +11,4 @@ class Pettanr.OriginalPictureLicenseGroup extends Peta.Item initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/panel.js.coffee b/app/assets/javascripts/models/panel.js.coffee index 7b13d472..924c1b77 100644 --- a/app/assets/javascripts/models/panel.js.coffee +++ b/app/assets/javascripts/models/panel.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Panel extends Peta.Root - url: '/panels/' @singular: () -> 'Panel' @@ -59,27 +58,18 @@ class Pettanr.Panel extends Peta.Root r[pid] = elm.picture() if not r[pid] r - my_url: () -> - s = if @get('id') - '/' + @get('id') - else - '' - '/' + @path_name() + s - initialize: (attr = {}, options = {}) -> super(attr, options) @set(attr) - if @get('id') - @url = @my_url() class Pettanr.Panel.WithElements extends Pettanr.Panel fetch: (options) -> - @url = @my_url() + '?with_elements=true' + @url = @default_url() + '?with_elements=true' super(options) save: (attrs) -> - @url = @my_url() + @url = @default_url() method = if @isNew() 'create' else diff --git a/app/assets/javascripts/models/panel_picture.js.coffee b/app/assets/javascripts/models/panel_picture.js.coffee index d46c1ffb..12241b2a 100644 --- a/app/assets/javascripts/models/panel_picture.js.coffee +++ b/app/assets/javascripts/models/panel_picture.js.coffee @@ -1,5 +1,4 @@ class Pettanr.PanelPicture extends Peta.Element - url: '/panel_pictures/' @singular: () -> 'PanelPicture' @@ -79,8 +78,6 @@ class Pettanr.PanelPicture extends Peta.Element initialize: (attr, options) -> super(attr, options) - if @id - @url = @url + @id class Pettanr.PanelPicture.TraceFromPicture diff --git a/app/assets/javascripts/models/picture.js.coffee b/app/assets/javascripts/models/picture.js.coffee index 46e3598c..2795754c 100644 --- a/app/assets/javascripts/models/picture.js.coffee +++ b/app/assets/javascripts/models/picture.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Picture extends Peta.Content - url: '/pictures/' @singular: () -> 'Picture' @@ -78,6 +77,9 @@ class Pettanr.Picture extends Peta.Content return true if @is_own(operators) #@is_enable() and @is_head() + history_view: () -> + new Pettanr.Views.Picture.History({item: this}) + credit_icon_view: () -> new Pettanr.Views.Picture.CreditIcon({item: this}) @@ -96,6 +98,4 @@ class Pettanr.Picture extends Peta.Content initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/resource_picture.js.coffee b/app/assets/javascripts/models/resource_picture.js.coffee index f54e87cb..183ebdbb 100644 --- a/app/assets/javascripts/models/resource_picture.js.coffee +++ b/app/assets/javascripts/models/resource_picture.js.coffee @@ -1,5 +1,4 @@ class Pettanr.ResourcePicture extends Peta.Content - url: '/resource_pictures/' @singular: () -> 'ResourcePicture' @@ -11,6 +10,9 @@ class Pettanr.ResourcePicture extends Peta.Content id: null } + original_picture: () -> + new Pettanr.Cache.Retriever(Pettanr.OriginalPicture, @get('original_picture_id')) + picture: () -> new Pettanr.Cache.Retriever(Pettanr.Picture, @get('picture_id')) @@ -70,6 +72,4 @@ class Pettanr.ResourcePicture extends Peta.Content initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/resource_picture_picture.js.coffee b/app/assets/javascripts/models/resource_picture_picture.js.coffee index c04c9a4c..db522522 100644 --- a/app/assets/javascripts/models/resource_picture_picture.js.coffee +++ b/app/assets/javascripts/models/resource_picture_picture.js.coffee @@ -1,5 +1,4 @@ class Pettanr.ResourcePicturePicture extends Peta.Item - url: '/resource_picture_pictures/' @singular: () -> 'ResourcePicturePicture' @@ -24,6 +23,4 @@ class Pettanr.ResourcePicturePicture extends Peta.Item initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/scroll.js.coffee b/app/assets/javascripts/models/scroll.js.coffee index 2bfb905c..a3166070 100644 --- a/app/assets/javascripts/models/scroll.js.coffee +++ b/app/assets/javascripts/models/scroll.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Scroll extends Peta.Binder - url: '/scrolls/' @singular: () -> 'Scroll' @@ -22,6 +21,4 @@ class Pettanr.Scroll extends Peta.Binder initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/scroll_panel.js.coffee b/app/assets/javascripts/models/scroll_panel.js.coffee index 93a6a921..a1fcd701 100644 --- a/app/assets/javascripts/models/scroll_panel.js.coffee +++ b/app/assets/javascripts/models/scroll_panel.js.coffee @@ -1,5 +1,4 @@ class Pettanr.ScrollPanel extends Peta.Leaf - url: '' @singular: () -> 'ScrollPanel' @@ -34,6 +33,4 @@ class Pettanr.ScrollPanel extends Peta.Leaf initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/sheet.js.coffee b/app/assets/javascripts/models/sheet.js.coffee index 240d5d3d..a25518ac 100644 --- a/app/assets/javascripts/models/sheet.js.coffee +++ b/app/assets/javascripts/models/sheet.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Sheet extends Peta.Root - url: '/sheets/' @singular: () -> 'Sheet' @@ -32,6 +31,4 @@ class Pettanr.Sheet extends Peta.Root initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/sheet_panel.js.coffee b/app/assets/javascripts/models/sheet_panel.js.coffee index d4c660e3..5127427a 100644 --- a/app/assets/javascripts/models/sheet_panel.js.coffee +++ b/app/assets/javascripts/models/sheet_panel.js.coffee @@ -1,5 +1,4 @@ class Pettanr.SheetPanel extends Peta.Leaf - url: '/sheet_panels/' @singular: () -> 'SheetPanel' @@ -25,6 +24,4 @@ class Pettanr.SheetPanel extends Peta.Leaf initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/speech.js.coffee b/app/assets/javascripts/models/speech.js.coffee index 366cd094..c597fd42 100644 --- a/app/assets/javascripts/models/speech.js.coffee +++ b/app/assets/javascripts/models/speech.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Speech extends Peta.Element - url: '/speeches/' @singular: () -> 'Speech' @@ -63,6 +62,4 @@ class Pettanr.Speech extends Peta.Element initialize: (attr, options) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/speech_balloon.js.coffee b/app/assets/javascripts/models/speech_balloon.js.coffee index 359669ac..57fd0169 100644 --- a/app/assets/javascripts/models/speech_balloon.js.coffee +++ b/app/assets/javascripts/models/speech_balloon.js.coffee @@ -1,5 +1,4 @@ class Pettanr.SpeechBalloon extends Peta.Element - url: '/speech_balloons/' @singular: () -> 'SpeechBalloon' @@ -66,8 +65,6 @@ class Pettanr.SpeechBalloon extends Peta.Element initialize: (attr, options) -> super(attr, options) - if @id - @url = @url + @id class Pettanr.SpeechBalloon.TraceFromBalloon diff --git a/app/assets/javascripts/models/speech_balloon_template.js.coffee b/app/assets/javascripts/models/speech_balloon_template.js.coffee index 9d9d383f..8047d0b8 100644 --- a/app/assets/javascripts/models/speech_balloon_template.js.coffee +++ b/app/assets/javascripts/models/speech_balloon_template.js.coffee @@ -1,5 +1,4 @@ class Pettanr.SpeechBalloonTemplate extends Peta.Template - url: '/speech_balloon_templates/' @singular: () -> 'SpeechBalloonTemplate' @@ -27,6 +26,4 @@ class Pettanr.SpeechBalloonTemplate extends Peta.Template initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id - + diff --git a/app/assets/javascripts/models/story.js.coffee b/app/assets/javascripts/models/story.js.coffee index dc17136e..606df47c 100644 --- a/app/assets/javascripts/models/story.js.coffee +++ b/app/assets/javascripts/models/story.js.coffee @@ -1,5 +1,4 @@ class Pettanr.Story extends Peta.Binder - url: '/stories/' @singular: () -> 'Story' @@ -32,6 +31,4 @@ class Pettanr.Story extends Peta.Binder initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/story_sheet.js.coffee b/app/assets/javascripts/models/story_sheet.js.coffee index eae6b43b..6d367f0a 100644 --- a/app/assets/javascripts/models/story_sheet.js.coffee +++ b/app/assets/javascripts/models/story_sheet.js.coffee @@ -1,5 +1,4 @@ class Pettanr.StorySheet extends Peta.Leaf - url: '/story_sheets/' @singular: () -> 'StorySheet' @@ -28,6 +27,4 @@ class Pettanr.StorySheet extends Peta.Leaf initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/system_picture.js.coffee b/app/assets/javascripts/models/system_picture.js.coffee index 36bda580..20168d3b 100644 --- a/app/assets/javascripts/models/system_picture.js.coffee +++ b/app/assets/javascripts/models/system_picture.js.coffee @@ -1,5 +1,4 @@ class Pettanr.SystemPicture extends Peta.SystemResource - url: '/system_pictures/' @singular: () -> 'SystemPicture' @@ -44,6 +43,4 @@ class Pettanr.SystemPicture extends Peta.SystemResource initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/models/user.js.coffee b/app/assets/javascripts/models/user.js.coffee index ab62ce1c..2b2d1c5c 100644 --- a/app/assets/javascripts/models/user.js.coffee +++ b/app/assets/javascripts/models/user.js.coffee @@ -1,7 +1,5 @@ class Pettanr.User extends Backbone.Model - url: '/users/' - defaults: { } diff --git a/app/assets/javascripts/models/writing_format.js.coffee b/app/assets/javascripts/models/writing_format.js.coffee index 9921758c..834c18ad 100644 --- a/app/assets/javascripts/models/writing_format.js.coffee +++ b/app/assets/javascripts/models/writing_format.js.coffee @@ -1,5 +1,4 @@ class Pettanr.WritingFormat extends Peta.Template - url: '/writing_formats/' @singular: () -> 'WritingFormat' @@ -24,6 +23,4 @@ class Pettanr.WritingFormat extends Peta.Template initialize: (attr = {}, options = {}) -> super(attr, options) - if @id - @url = @url + @id diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index aac9f2d1..1c133c58 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -1,6 +1,7 @@ class Peta.Item extends Backbone.Model initialize: (attr = {}, options = {}) -> + @url = @default_url() super(attr, options) @expire_time = options.expire_time @boosters = {} @@ -14,6 +15,9 @@ class Peta.Item extends Backbone.Model # ClassMethods + @default_url: () -> + '/' + @table_name() + '/' + @my_class: () -> this @@ -82,6 +86,11 @@ class Peta.Item extends Backbone.Model #InstanceMethods + default_url: () -> + r = @my_class().default_url() + r = r.concat( @id ) if @id + r + singular: () -> @my_class().singular() diff --git a/app/assets/javascripts/pettanr/proxy.js.coffee b/app/assets/javascripts/pettanr/proxy.js.coffee index 511dc7c5..86159371 100644 --- a/app/assets/javascripts/pettanr/proxy.js.coffee +++ b/app/assets/javascripts/pettanr/proxy.js.coffee @@ -107,6 +107,15 @@ class Pettanr.Proxy sign_out: () -> @trigger('sign_out') + @destroy: (item, options = {}) -> + return if !confirm('remove?') + proxy = new Pettanr.Proxy({}) + proxy.listenTo(proxy, 'success', options['success']) + proxy.listenTo(proxy, 'redirect', options['redirect']) + proxy.listenTo(proxy, 'fail', options['fail']) + proxy.listenTo(proxy, 'deny', options['deny']) + proxy.http_post(item.destroy_url()) + class Pettanr.PickerProxy extends Pettanr.Proxy constructor: (options) -> diff --git a/app/assets/javascripts/pettanr/remover.js.coffee b/app/assets/javascripts/pettanr/remover.js.coffee new file mode 100644 index 00000000..663af134 --- /dev/null +++ b/app/assets/javascripts/pettanr/remover.js.coffee @@ -0,0 +1,6 @@ +class Pettanr.Remover + + constructor: (options) -> + _.extend(this, Backbone.Events) + @item = options.item + diff --git a/app/assets/javascripts/routes.js.coffee b/app/assets/javascripts/routes.js.coffee index 0267b639..8058b417 100644 --- a/app/assets/javascripts/routes.js.coffee +++ b/app/assets/javascripts/routes.js.coffee @@ -53,6 +53,7 @@ class Pettanr.Router extends Backbone.Router [ {route: '', callback: 'home'}, {route: 'top/:action', callback: 'top_a'}, + {route: 'home/:action', callback: 'home_a'}, {route: 'users/:action', callback: 'users_a'}, # no manifest route {route: 'user_sessions/:action', callback: 'user_sessions_a'}, # no manifest route {route: ':controller/:id/:action?*query_string', callback: 'c_i_a'}, @@ -164,6 +165,17 @@ class Pettanr.Router extends Backbone.Router params['action'] = action params + home_a: (action, query_string, form) -> + params = @home_a_params(action, query_string) + @trigger('go', params, form) + + home_a_params: (action, query_string) -> + params = @parse_query_string(query_string) + params['controller'] = 'home' + params['format'] = 'html' + params['action'] = action + params + user_sessions_a: (action, query_string, form) -> params = @user_sessions_a_params(action, query_string) @trigger('go', params, form) diff --git a/app/assets/javascripts/views/comics/show.js.coffee b/app/assets/javascripts/views/comics/show.js.coffee index 71bae951..00291758 100644 --- a/app/assets/javascripts/views/comics/show.js.coffee +++ b/app/assets/javascripts/views/comics/show.js.coffee @@ -55,7 +55,9 @@ class Pettanr.Views.Comic.Show extends Backbone.View @trigger('http_get', @item.edit_url()) click_destroy: () -> - @trigger('http_get', @item.destroy_url()) + redirect = (url) => + @trigger('http_get', url) + Pettanr.Proxy.destroy(@item, {redirect: redirect}) click_pick: () -> @trigger('pick', @item) diff --git a/app/assets/javascripts/views/original_pictures/show.js.coffee b/app/assets/javascripts/views/original_pictures/show.js.coffee index e5293d37..794bbde4 100644 --- a/app/assets/javascripts/views/original_pictures/show.js.coffee +++ b/app/assets/javascripts/views/original_pictures/show.js.coffee @@ -78,6 +78,29 @@ class Pettanr.Views.OriginalPicture.ShowModule.Owner extends Pettanr.Views.Show. footer_class: () -> Pettanr.Views.OriginalPicture.ShowModule.OwnerFooter +class Pettanr.Views.OriginalPicture.ShowModule.History extends Backbone.View + + initialize: (options) -> + super(options) + @item = options.item + @list = @item.history() + + render: () -> + this.$el.html('') + h = new Tag.H2({ + content: I18n.t('original_pictures.show.history') + }) + this.$el.append(h.render().el) + @list.fetch().done => + _.each @list.models, (picture) => + view = picture.history_view() + @listenTo(view, 'http_get', @http_get) + this.$el.append(view.render().el) + this + + http_get: (url) -> + @trigger('http_get', url) + class Pettanr.Views.OriginalPicture.Show extends Backbone.View tagName: 'div' @@ -91,12 +114,14 @@ class Pettanr.Views.OriginalPicture.Show extends Backbone.View @artist = new Pettanr.Views.Show.HeaderArtist({item: @item}) @img = new Pettanr.Views.OriginalPicture.Img({item: @item}) @owner = new Pettanr.Views.OriginalPicture.ShowModule.Owner({item: @item}) + @history = new Pettanr.Views.OriginalPicture.ShowModule.History({item: @item}) @listenTo(@header, 'click:icon', @click_show) @listenTo(@header, 'click:prof', @click_prof) @listenTo(@artist, 'click:artist', @click_artist) @listenTo(@owner, 'click:license', @click_license) @listenTo(@owner, 'click:edit', @click_edit) @listenTo(@owner, 'click:destroy', @click_destroy) + @listenTo(@history, 'http_get', @http_get) render: () -> this.$el.html('') @@ -104,6 +129,7 @@ class Pettanr.Views.OriginalPicture.Show extends Backbone.View this.$el.append(@artist.render().el) this.$el.append(@img.render().el) this.$el.append(@owner.render().el) + this.$el.append(@history.render().el) this click_show: () -> @@ -126,7 +152,12 @@ class Pettanr.Views.OriginalPicture.Show extends Backbone.View @trigger('http_get', @item.edit_url()) click_destroy: () -> - @trigger('http_get', @item.destroy_url()) + redirect = (url) => + @trigger('http_get', url) + Pettanr.Proxy.destroy(@item, {redirect: redirect}) + + http_get: (url) -> + @trigger('http_get', url) create_dialog: () -> @dialog = new Editor.PicturePublisher.Dialog({ diff --git a/app/assets/javascripts/views/panels/show.js.coffee b/app/assets/javascripts/views/panels/show.js.coffee index e527a96a..09665637 100644 --- a/app/assets/javascripts/views/panels/show.js.coffee +++ b/app/assets/javascripts/views/panels/show.js.coffee @@ -1,3 +1,52 @@ +class Pettanr.Views.Panel.ShowModule +class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header + + initialize: (options) -> + super(options) + +class Pettanr.Views.Panel.ShowModule.Owner extends Pettanr.Views.Show.Owner + + initialize: (options) -> + super(options) + +class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View + tagName: 'div' + className: 'credits' + + initialize: (options) -> + @pictures = options.pictures + @credited = {} + + render: () -> + this.$el.html('') + _.each @pictures, (picture, pid) => + @add_picture(picture) + this + + add_picture: (retriever) -> + @listenTo(retriever, 'retrieve', @retrieve_picture) + retriever.retrieve() + + retrieve_picture: (picture) -> + pid = picture.get('id') + if not @credited[pid] + @credited[pid] = picture + credit = picture.credit_view() + @listenTo(credit, 'click:icon', @click_credit_icon) + this.$el.append(credit.render().el) + + click_credit_icon: (item) -> + @trigger('click:credit:icon', item) + + click_pick: () -> + @trigger('pick', @item) + + is_pickable: () -> + true + + add_pick: (target_model) -> + @header.add_pick(target_model) + # panel: panel item # spot: no opacity element class Pettanr.Views.Panel.Show extends Backbone.View @@ -24,6 +73,7 @@ class Pettanr.Views.Panel.Show extends Backbone.View @credits = new Pettanr.Views.Panel.ShowModule.Credits({ pictures: @panel.licensed_pictures() }) + @owner = new Pettanr.Views.Panel.ShowModule.Owner({item: @panel}) @listenTo(@header, 'click:pick', @click_pick) @listenTo(@header, 'click:icon', @click_show) @listenTo(@header, 'click:caption', @click_show) @@ -33,6 +83,8 @@ class Pettanr.Views.Panel.Show extends Backbone.View @listenTo(@footer, 'click:edit', @click_edit) @listenTo(@footer, 'click:inspire', @click_inspire) @listenTo(@credits, 'click:credit:icon', @click_credit_icon) + @listenTo(@owner, 'click:edit', @click_edit) + @listenTo(@owner, 'click:destroy', @click_destroy) render: () -> this.$el.html('') @@ -42,6 +94,7 @@ class Pettanr.Views.Panel.Show extends Backbone.View this.$el.append(@credits.render().el) rb = new Tag.RowBreak() this.$el.append(rb.render().el) + this.$el.append(@owner.render().el) this click_show: () -> @@ -53,6 +106,11 @@ class Pettanr.Views.Panel.Show extends Backbone.View click_edit: () -> @trigger('http_get', @panel.edit_url()) + click_destroy: () -> + redirect = (url) => + @trigger('http_get', url) + Pettanr.Proxy.destroy(@panel, {redirect: redirect}) + click_inspire: () -> inspire = new Pettanr.Inspire({item: @panel}) @listenTo(inspire, 'inspire', @inspire) @@ -76,47 +134,3 @@ class Pettanr.Views.Panel.Show extends Backbone.View inspire: (item) -> @trigger('http_get', item.show_url()) -class Pettanr.Views.Panel.ShowModule -class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header - - initialize: (options) -> - super(options) - -class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View - tagName: 'div' - className: 'credits' - - initialize: (options) -> - @pictures = options.pictures - @credited = {} - - render: () -> - this.$el.html('') - _.each @pictures, (picture, pid) => - @add_picture(picture) - this - - add_picture: (retriever) -> - @listenTo(retriever, 'retrieve', @retrieve_picture) - retriever.retrieve() - - retrieve_picture: (picture) -> - pid = picture.get('id') - if not @credited[pid] - @credited[pid] = picture - credit = picture.credit_view() - @listenTo(credit, 'click:icon', @click_credit_icon) - this.$el.append(credit.render().el) - - click_credit_icon: (item) -> - @trigger('click:credit:icon', item) - - click_pick: () -> - @trigger('pick', @item) - - is_pickable: () -> - true - - add_pick: (target_model) -> - @header.add_pick(target_model) - diff --git a/app/assets/javascripts/views/pictures/credit.js.coffee b/app/assets/javascripts/views/pictures/credit.js.coffee index a8a9e842..1212440f 100644 --- a/app/assets/javascripts/views/pictures/credit.js.coffee +++ b/app/assets/javascripts/views/pictures/credit.js.coffee @@ -6,7 +6,6 @@ class Pettanr.Views.Picture.Credit extends Backbone.View @item = options.item @with_icon = options.with_icon @url = @item.url + '/credit' - @listenTo(@item, 'ready', @render) render: () -> this.$el.html('') @@ -14,8 +13,11 @@ class Pettanr.Views.Picture.Credit extends Backbone.View p = @item.credit_icon_view() @listenTo(p, 'click', @click) this.$el.append(p.render().el) - this.$el.append(@item.credit) - this.$el.append((new Tag.RowBreak()).render().el) + f = (data, status) => + this.$el.append(data) + rb = new Tag.RowBreak() + this.$el.append(rb.render().el) + $.get(@url, null, f, 'html') this click: () -> diff --git a/app/assets/javascripts/views/pictures/history.js.coffee b/app/assets/javascripts/views/pictures/history.js.coffee new file mode 100644 index 00000000..9546fe8c --- /dev/null +++ b/app/assets/javascripts/views/pictures/history.js.coffee @@ -0,0 +1,33 @@ +class Pettanr.Views.Picture.History extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @item = options.item + + render: () -> + this.$el.html('') + r = new Tag.A({ + attr: {href: '/' + @item.show_url()}, + content: @item.get('revision') + }) + @listenTo(r, 'click', @click_show) + h = new Tag.H3({ + content: Pettanr.AppHelper.t_m('Picture.revision') + ':' + }) + d = new Tag.Div({ + content: Pettanr.AppHelper.t_m('Picture.created_at') + ':' + @item.get('created_at') + }) + credit = @item.credit_view() + @listenTo(credit, 'click:icon', @click_icon) + this.$el.append(h.render().el) + h.$el.append(r.render().el) + this.$el.append(d.render().el) + this.$el.append(credit.render().el) + this + + click_show: () -> + @trigger('http_get', @item.show_url()) + + click_icon: () -> + @trigger('http_get', @item.show_url()) + diff --git a/app/assets/javascripts/views/resource_pictures/img.js.coffee b/app/assets/javascripts/views/resource_pictures/img.js.coffee new file mode 100644 index 00000000..1fb5ecd8 --- /dev/null +++ b/app/assets/javascripts/views/resource_pictures/img.js.coffee @@ -0,0 +1,18 @@ +class Pettanr.Views.ResourcePicture.Img extends Backbone.View + tagName: 'img' + + initialize: (options) -> + @item = options.item + + render: () -> + this.$el.html('') + this.$el.attr(@attr()) + this + + attr: () -> + { + src: @item.r_url('full'), + width: Pettanr.to_s(Math.abs(@item.get('width'))) + 'px', + height: Pettanr.to_s(Math.abs(@item.get('height'))) + 'px', + } + diff --git a/app/assets/javascripts/views/resource_pictures/show.js.coffee b/app/assets/javascripts/views/resource_pictures/show.js.coffee index 79d67bf4..075573ae 100644 --- a/app/assets/javascripts/views/resource_pictures/show.js.coffee +++ b/app/assets/javascripts/views/resource_pictures/show.js.coffee @@ -4,10 +4,84 @@ class Pettanr.Views.ResourcePicture.ShowModule.Header extends Pettanr.Views.Show initialize: (options) -> super(options) +class Pettanr.Views.ResourcePicture.ShowModule.LinkedReplaceButton extends Tag.A + + initialize: (options) -> + item = options.item + op = new Pettanr.OriginalPicture({id: item.get('original_picture_id')}) + super({ + attr: {href: '/' + op.edit_url()}, + content: I18n.t('original_pictures.show.replace') + }) + +class Pettanr.Views.ResourcePicture.ShowModule.LinkedSourceButton extends Tag.A + + initialize: (options) -> + item = options.item + op = new Pettanr.OriginalPicture({id: item.get('original_picture_id')}) + super({ + attr: {href: '/' + op.show_url()}, + content: I18n.t('original_pictures.show.title') + }) + +class Pettanr.Views.ResourcePicture.ShowModule.LinkedStopButton extends Tag.A + + initialize: (options) -> + item = options.item + super({ + attr: {href: '/' + item.destroy_url()}, + content: I18n.t('original_pictures.index.stop') + }) + +class Pettanr.Views.ResourcePicture.ShowModule.OwnerFooter extends Backbone.View + tagName: 'div' + className: 'show-owner-footer' + + initialize: (options) -> + super(options) + @item = options.item + @replace = new Pettanr.Views.ResourcePicture.ShowModule.LinkedReplaceButton({item: @item}) + @source = new Pettanr.Views.ResourcePicture.ShowModule.LinkedSourceButton({item: @item}) + @stop = new Pettanr.Views.ResourcePicture.ShowModule.LinkedStopButton({item: @item}) + @listenTo(@replace, 'click', @click_replace) + @listenTo(@source, 'click', @click_source) + @listenTo(@stop, 'click', @click_stop) + + render: () -> + super() + this.$el.append(@replace.render().el) + this.$el.append(@source.render().el) + this.$el.append(@stop.render().el) + this + + click_replace: () -> + @trigger('click:replace') + + click_source: () -> + @trigger('click:source') + + click_stop: () -> + @trigger('click:stop') + class Pettanr.Views.ResourcePicture.ShowModule.Owner extends Pettanr.Views.Show.Owner initialize: (options) -> super(options) + @listenTo(@footer, 'click:replace', @click_replace) + @listenTo(@footer, 'click:source', @click_source) + @listenTo(@footer, 'click:stop', @click_stop) + + click_replace: () -> + @trigger('click:replace') + + click_source: () -> + @trigger('click:source') + + click_stop: () -> + @trigger('click:stop') + + footer_class: () -> + Pettanr.Views.ResourcePicture.ShowModule.OwnerFooter class Pettanr.Views.ResourcePicture.Show extends Backbone.View tagName: 'div' @@ -22,15 +96,24 @@ class Pettanr.Views.ResourcePicture.Show extends Backbone.View prof_url: @item.prof_url() }) @artist = new Pettanr.Views.Show.HeaderArtist({item: @item}) + @img = new Pettanr.Views.ResourcePicture.Img({item: @item}) + @credit = @item.credit_view(false) + @owner = new Pettanr.Views.ResourcePicture.ShowModule.Owner({item: @item, original_picture: @original_picture}) @listenTo(@header, 'click:pick', @click_pick) @listenTo(@header, 'click:icon', @click_show) @listenTo(@header, 'click:prof', @click_prof) @listenTo(@artist, 'click:artist', @click_artist) + @listenTo(@owner, 'click:replace', @click_replace) + @listenTo(@owner, 'click:source', @click_source) + @listenTo(@owner, 'click:stop', @click_stop) render: () -> this.$el.html('') this.$el.append(@header.render().el) this.$el.append(@artist.render().el) + this.$el.append(@img.render().el) + this.$el.append(@credit.render().el) + this.$el.append(@owner.render().el) this click_show: () -> @@ -42,6 +125,19 @@ class Pettanr.Views.ResourcePicture.Show extends Backbone.View click_artist: () -> @trigger('http_get', @item.artist().show_url()) + click_replace: () -> + op = new Pettanr.OriginalPicture({id: @item.get('original_picture_id')}) + @trigger('http_get', op.edit_url()) + + click_source: () -> + op = new Pettanr.OriginalPicture({id: @item.get('original_picture_id')}) + @trigger('http_get', op.show_url()) + + click_stop: () -> + redirect = (url) => + @trigger('http_get', url) + Pettanr.Proxy.destroy(@item, {redirect: redirect}) + click_pick: () -> @trigger('pick', @item) diff --git a/app/assets/javascripts/views/scrolls/show.js.coffee b/app/assets/javascripts/views/scrolls/show.js.coffee index 9a7a82bb..e2880c81 100644 --- a/app/assets/javascripts/views/scrolls/show.js.coffee +++ b/app/assets/javascripts/views/scrolls/show.js.coffee @@ -55,7 +55,9 @@ class Pettanr.Views.Scroll.Show extends Backbone.View @trigger('http_get', @item.edit_url()) click_destroy: () -> - @trigger('http_get', @item.destroy_url()) + redirect = (url) => + @trigger('http_get', url) + Pettanr.Proxy.destroy(@item, {redirect: redirect}) click_pick: () -> @trigger('pick', @item) diff --git a/app/assets/javascripts/views/users/account.js.coffee b/app/assets/javascripts/views/users/account.js.coffee index 991f90f1..e18e054f 100644 --- a/app/assets/javascripts/views/users/account.js.coffee +++ b/app/assets/javascripts/views/users/account.js.coffee @@ -62,14 +62,13 @@ class Pettanr.Views.User.Account.Quick extends Backbone.View render: () -> this.$el.html('') @home() - @create() this home: () -> params = { controller: 'folders', action: 'index', - path: '/my documents/create/' + path: '/my documents/' } list = Locmare.ListGroup.list( 'folders', 'index', params @@ -78,13 +77,14 @@ class Pettanr.Views.User.Account.Quick extends Backbone.View if !_.isEmpty(list.items()) @mydoc = list.items()[0] @add_mydoc() + @create() ) create: () -> params = { controller: 'folders', action: 'index', - path: '/my documents/' + path: '/my documents/create/' } list = Locmare.ListGroup.list( 'folders', 'index', params diff --git a/app/assets/javascripts/work/controllers.js.coffee.erb b/app/assets/javascripts/work/controllers.js.coffee.erb index 72358e5e..6057f46d 100644 --- a/app/assets/javascripts/work/controllers.js.coffee.erb +++ b/app/assets/javascripts/work/controllers.js.coffee.erb @@ -698,7 +698,9 @@ type: 'show', }, history: { - type: 'show', + type: 'list', + args: { + }, }, new: { type: 'new', diff --git a/app/views/resource_pictures/show.html.erb b/app/views/resource_pictures/show.html.erb index d6720fee..2efb4063 100644 --- a/app/views/resource_pictures/show.html.erb +++ b/app/views/resource_pictures/show.html.erb @@ -39,7 +39,7 @@

<%= link_to t('original_pictures.show.replace'), edit_original_picture_path(@item.original_picture) %> - <%= link_to t('show'), original_picture_path(@item.original_picture) %> + <%= link_to t('original_pictures.show.title'), original_picture_path(@item.original_picture) %> <%= link_to t('original_pictures.index.stop'), resource_picture_path(@item), :method => :delete %>

<% end -%> -- 2.11.0