From 65bdc3b4bcb14970651ddc9ca55148e3b0cded04 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Sun, 1 Feb 2015 15:00:15 +0900 Subject: [PATCH] fix event --- app/assets/javascripts/locmare/filer.js.coffee | 23 +++++++ .../javascripts/locmare/filer/body.js.coffee | 8 +++ .../locmare/filer/body/file_body.js.coffee | 18 ++--- .../filer/body/file_body/file_item.js.coffee | 24 +++++-- .../file_body/file_item/caption/base.js.coffee | 9 +-- .../file_body/file_item/caption/default.js.coffee | 36 ++++++---- .../file_item/caption/default/face/base.js.coffee | 12 ++-- .../caption/default/face/column.js.coffee | 11 ++-- .../caption/default/face/method.js.coffee | 10 ++- .../file_body/file_item/edit/account.js.coffee | 27 ++++---- .../body/file_body/file_item/edit/base.js.coffee | 9 --- .../file_body/file_item/edit/default.js.coffee | 16 +++-- .../file_body/file_item/edit/template.js.coffee | 22 +++---- .../body/file_body/file_item/icon/base.js.coffee | 8 ++- .../file_body/file_item/icon/default.js.coffee | 17 +---- .../file_body/file_item/summary/template.js.coffee | 6 +- .../body/file_body/file_item/symbol/base.js.coffee | 10 +-- .../file_body/file_item/symbol/default.js.coffee | 37 +++++++---- .../file_item/symbol/default/face/base.js.coffee | 14 +--- .../file_item/symbol/default/face/image.js.coffee | 12 ++-- .../symbol/default/face/picture.js.coffee | 20 +++--- .../file_item/symbol/default/link/action.js.coffee | 5 -- .../file_item/symbol/default/link/base.js.coffee | 2 - .../symbol/default/link/url_column.js.coffee | 8 --- .../file_body/file_item/symbol/template.js.coffee | 21 +++--- .../javascripts/locmare/filer/header.js.coffee | 11 +++- .../locmare/list_group/lib/pager.js.coffee | 77 ++++++++++++++-------- .../locmare/profiler/association.js.coffee | 6 ++ .../profiler/association/belongs_to.js.coffee | 4 ++ .../profiler/association/has_many.js.coffee | 4 ++ .../locmare/profiler/association/has_one.js.coffee | 4 ++ .../javascripts/locmare/profiler/header.js.coffee | 4 ++ app/assets/javascripts/models/balloon.js.coffee | 3 +- app/assets/javascripts/models/folder.js.coffee | 4 +- .../javascripts/models/ground_picture.js.coffee | 3 +- app/assets/javascripts/models/license.js.coffee | 7 +- .../javascripts/models/original_picture.js.coffee | 7 +- .../javascripts/models/panel_picture.js.coffee | 3 +- .../javascripts/models/resource_picture.js.coffee | 3 +- app/assets/javascripts/models/speech.js.coffee | 3 +- .../javascripts/models/speech_balloon.js.coffee | 7 +- .../models/speech_balloon_template.js.coffee | 3 +- .../javascripts/models/system_picture.js.coffee | 3 +- .../javascripts/models/writing_format.js.coffee | 3 +- app/assets/javascripts/peta/item.js.coffee | 8 ++- app/assets/javascripts/pettanr/picture.js.coffee | 8 +++ app/assets/javascripts/routes.js.coffee | 2 +- app/assets/javascripts/views.js.coffee | 2 + .../javascripts/views/balloons/summary.js.coffee | 8 +++ app/assets/javascripts/views/common.js.coffee | 55 +++++++++++++--- .../views/ground_colors/summary.js.coffee | 8 +++ .../views/ground_colors/symbol.js.coffee | 10 +++ .../views/ground_pictures/summary.js.coffee | 4 ++ .../views/original_pictures/publish.js.coffee | 64 ++++++++++++++++++ .../views/original_pictures/summary.js.coffee | 5 ++ .../views/panel_pictures/summary.js.coffee | 4 ++ .../javascripts/views/panels/summary.js.coffee | 4 ++ .../views/speech_balloons/summary.js.coffee | 8 +++ .../javascripts/views/speeches/summary.js.coffee | 8 +++ 59 files changed, 491 insertions(+), 251 deletions(-) create mode 100644 app/assets/javascripts/views/original_pictures/publish.js.coffee diff --git a/app/assets/javascripts/locmare/filer.js.coffee b/app/assets/javascripts/locmare/filer.js.coffee index 98411cbc..c57fbd9d 100644 --- a/app/assets/javascripts/locmare/filer.js.coffee +++ b/app/assets/javascripts/locmare/filer.js.coffee @@ -8,6 +8,12 @@ class Locmare.Filer extends Backbone.View @manifest = LocalManifest.manifest().filers[@item_name] @header = new Locmare.FilerModule.Header({'filer': this}) @body = new Locmare.FilerModule.Body({'filer': this}) + @listenTo(@header, 'click', @click_header) + @listenTo(@body, 'click:symbol', @click_symbol) + @listenTo(@body, 'click:caption', @click_caption) + @listenTo(@body, 'click:prof', @click_prof) + @listenTo(@body, 'navigate', @navigate) + @listenTo(@pager, 'navigate', @navigate) if @pager @render() render: () -> @@ -27,5 +33,22 @@ class Locmare.Filer extends Backbone.View image_dir: () -> '/images/' + click_header: (url) -> + @trigger('click:header', url) + window.router.navigate(url, true) + + click_symbol: (item_view) -> + @trigger('click:symbol', item_view) + + click_caption: (item_view) -> + @trigger('click:caption', item_view) + + click_prof: (item_view) -> + @trigger('click:prof', item_view) + + navigate: (url) -> + @trigger('navigate', url) + window.router.navigate(url, true) + class Locmare.FilerModule diff --git a/app/assets/javascripts/locmare/filer/body.js.coffee b/app/assets/javascripts/locmare/filer/body.js.coffee index b31c8fb0..7fb1e705 100644 --- a/app/assets/javascripts/locmare/filer/body.js.coffee +++ b/app/assets/javascripts/locmare/filer/body.js.coffee @@ -5,6 +5,8 @@ class Locmare.FilerModule.Body extends Backbone.View @filer = options.filer @file_header = new Locmare.FilerModule.BodyModule.FileHeader({'body': this}) @file_body = new Locmare.FilerModule.BodyModule.FileBody({'body': this}) + @listenTo(@file_body, 'click:symbol', @click_symbol) + @listenTo(@file_body, 'navigate', @navigate) render: () -> this.$el.append(@file_header.render().el) @@ -31,5 +33,11 @@ class Locmare.FilerModule.Body extends Backbone.View items: () -> @filer.items + click_symbol: (symbol_view) -> + @trigger('click:symbol', symbol_view) + + navigate: (url) -> + @trigger('navigate', url) + class Locmare.FilerModule.BodyModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body.js.coffee index 191fa484..47d6b451 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body.js.coffee @@ -6,9 +6,12 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View @file_items = [] @file_items = _.map @filer().items, (item) => fi = @file_item_class() - new fi({'file_body': this, 'item': item}) + file_item_view = new fi({'file_body': this, 'item': item}) + @listenTo(file_item_view, 'click:symbol', @click_symbol) + @listenTo(file_item_view, 'navigate', @navigate) + file_item_view @render() - + render: () -> this.$el.html('') _.each @file_items, (file_item) => @@ -33,13 +36,10 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View items: () -> @filer().items - template_dir: () -> - @filer().template_dir - - template_file_name: () -> - "file_body" + click_symbol: (symbol_view) -> + @trigger('click:symbol', symbol_view) - template_name: () -> - @template_dir() + @template_file_name() + navigate: (url) -> + @trigger('navigate', url) class Locmare.FilerModule.BodyModule.FileBodyModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee index a91b3b6e..5b68b3e3 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee @@ -11,6 +11,14 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi @date = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnFactory.factory this, @manifest().date, @item @edit = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnFactory.factory this, @manifest().edit, @item @el.className = 'filer-item filer-item-' + @item.item_name() + @listenTo(@symbol, 'click:symbol', @click_symbol) + @listenTo(@caption, 'click:caption', @click_caption) + @listenTo(@icon, 'click:prof', @click_prof) + @listenTo(@symbol, 'navigate', @navigate) + @listenTo(@caption, 'navigate', @navigate) + @listenTo(@summary, 'navigate', @navigate) + @listenTo(@icon, 'navigate', @navigate) + @listenTo(@edit, 'navigate', @navigate) render: () -> if @symbol.is_visible() @@ -42,14 +50,18 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi items: () -> @filer().items - template_dir: () -> - @filer().template_dir + click_symbol: () -> + @trigger('click:symbol', this) - template_file_name: () -> - "file_item" + click_caption: () -> + @trigger('click:caption', this) - template_name: () -> - @template_dir() + @template_file_name() + click_prof: (url) -> + @trigger('click:prof', this) + @trigger('navigate', url) + + navigate: (url) -> + @trigger('navigate', url) class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee index 21f26fee..b8deb9a1 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee @@ -11,6 +11,9 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo render: () -> this + has_link: () -> + @my_manifest.link.type != 'none' + filer: () -> @file_item.filer() @@ -23,9 +26,3 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo is_visible: () -> true - template_dir: () -> - @filer().template_dir + @column_name + '-' - - template_name: () -> - @template_dir() + @template_file_name() - diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee index 60cce29f..773f7d93 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee @@ -1,24 +1,36 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Base initialize: (options) -> super(options) - m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule - @face = m.FaceFactory.factory this, @my_manifest.face, @item - @link = m.LinkFactory.factory this, @my_manifest.link, @item + @face = @mdl().FaceFactory.factory this, @my_manifest.face, @item + @link = @mdl().LinkFactory.factory this, @my_manifest.link, @item + @listenTo(@face, 'ready:caption', @ready_caption) render: () -> - if @has_link() - this.$el.html(@link.render().el) - @delegateEvents({'click .face': 'show'}) + icon = new Pettanr.Views.Common.LoadIcon() + this.$el.html(icon.render().el) + @face.render() # raise fetch + this + + ready_caption: (caption) -> + el = if @has_link() + linked_caption = new Tag.A({ + attr: {href: @link.url()}, + content: caption + }) + @listenTo(linked_caption, 'click', @click) + linked_caption.render().el else - this.$el.html(@face.el) + caption + this.$el.html(el) this - has_link: () -> - @my_manifest.link.type != 'none' + click: () -> + @trigger('click:caption') + @trigger('navigate', @link.url()) + false - show: () -> - window.router.navigate(@link.url(), true); - return false + mdl: () -> + Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee index 7c555c96..2f825e0f 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee @@ -1,20 +1,16 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.BaseFace extends Backbone.View - tagName: 'div' - className: 'face' initialize: (options) -> @default_caption = options.default_caption @my_manifest = options.my_manifest @item = options.item - @clear() - @listenTo(@item, 'ready:caption', @render) - clear: () -> - icon = new Pettanr.Views.Common.LoadIcon() - this.$el.html(icon.render().el) + # not render + # get caption data and send message + render: () -> this - render: () -> + replace_empty: () -> if Pettanr.is_blank(@caption()) empty = new Pettanr.Views.Common.EmptyCaption() this.$el.html(empty.render().el) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee index a6f815c7..f979f8ce 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee @@ -2,11 +2,10 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo initialize: (options) -> super(options) - @render() - face: () -> - @item.escape(@my_manifest.column_name) - - caption: () -> - @face() + # not render + # get caption data and send message + render: () -> + caption = Pettanr.Views.Common.replace_empty(@item.escape(@my_manifest.column_name)) + @trigger('ready:caption', caption) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee index 6277d799..aababa43 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee @@ -2,12 +2,18 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo initialize: (options) -> super(options) + + # not render + # get caption data and send message + render: () -> if @item[@method_name()] + @listenTo(@item, 'ready:caption', @ready_caption) + # fetch caption by manifest method_name @item[@method_name()]() method_name: () -> @my_manifest.method_name - caption: () -> - @item.caption_text + ready_caption: (caption) -> + @trigger('ready:caption', Pettanr.Views.Common.replace_empty(caption)) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee index 91d03026..e50865bf 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee @@ -2,21 +2,20 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum initialize: (options) -> super(options) - @edit_icon = new Pettanr.Image.SymbolImg({ - attr: {'src': @edit_img_file_name()}, - half: true - }) - url = 'home/configure' - @edit_btn = new Tag.A({ - attr: {href: '/' + url}, - handler_name: url, - content: @edit_icon.render().el - }) render: () -> this.$el.html('') if @is_own() - this.$el.append(@edit_btn.render().el) + edit_icon = new Pettanr.Image.SymbolImg({ + attr: {'src': @edit_img_file_name()}, + half: true + }) + edit_btn = new Tag.A({ + attr: {href: '/' + @edit_url()}, + content: edit_icon.render().el + }) + @listenTo(edit_btn, 'click', @click_edit) + this.$el.append(edit_btn.render().el) this is_own: () -> @@ -28,3 +27,9 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum edit_img_file_name: () -> @image_dir() + 'edit.png' + edit_url: () -> + 'home/configure' + + click_edit: () -> + @trigger('navigate', @edit_url()) + diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee index 17d9f171..671600cd 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee @@ -26,12 +26,3 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum is_visible: () -> true - template_dir: () -> - @filer().template_dir + 'edit-' - - template_file_name: () -> - "" - - template_name: () -> - @template_dir() + @template_file_name() - diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee index bc94ccdf..e7164d5e 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee @@ -6,22 +6,20 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum attr: {'src': @edit_img_file_name()}, half: true }) - url = Pettanr.url(@item.table_name(), 'edit', {id: @item.get('id')}) @edit_btn = new Tag.A({ - attr: {href: '/' + url}, - handler_name: url, + attr: {href: '/' + @item.edit_url()}, content: @edit_icon.render().el }) @remove_icon = new Pettanr.Image.SymbolImg({ attr: {'src': @remove_img_file_name()}, half: true }) - url = Pettanr.url(@item.table_name(), 'destroy', {id: @item.get('id')}) @remove_btn = new Tag.A({ - attr: {href: '/' + url}, - handler_name: url, + attr: {href: '/' + @item.destroy_url()}, content: @remove_icon.render().el }) + @listenTo(@edit_btn, 'click', @click_edit) + @listenTo(@remove_btn, 'click', @click_remove) render: () -> this.$el.html('') @@ -42,3 +40,9 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum remove_img_file_name: () -> @image_dir() + 'remove.png' + click_edit: () -> + @trigger('navigate', @item.edit_url()) + + click_remove: () -> + @trigger('navigate', @item.destroy_url()) + diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee index 5fd84378..2cff29c0 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee @@ -2,19 +2,19 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum initialize: (options) -> super(options) + mdl = Pettanr.Views[@item.singular()] + templates = mdl.templates() + template_class = templates[@template_file_name()] + @view = new template_class(options) - column_template_file_name: () -> - 'show' - - item_template_file_name: () -> - 'template' - - template_dir: () -> - @item.path_name() + '-' + render: () -> + @listenTo(@view, 'navigate', @navigate) + this.$el.html(@view.render().el) + this template_file_name: () -> - @my_manifest.template_name() + @my_manifest.template_name - template_name: () -> - @template_dir() + @template_file_name() + navigate: (url) -> + @trigger('navigate', url) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee index b8cf6c75..70ea7cfa 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee @@ -20,7 +20,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum this.$el.html(template(args)) this - profiler: () -> + url: () -> controller = Manifest.manifest().controllers[@item.table_name()] action = controller.actions['show'] params = { @@ -29,8 +29,10 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum id: @item.get('id'), format: 'prof' } - window.router.navigate(action.url(params), true) - return false + action.url(params) + + click: () -> + @trigger('click:prof', @url()) filer: () -> @file_item.filer() diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee index bb5eb7d3..62986c57 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee @@ -11,26 +11,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum } }) a = new Tag.A({ - attr: {href: @url()}, + attr: {href: '/' + @url()}, content: icon.render().el }) this.$el.html(a.render().el) - @delegateEvents({ - 'click .face': 'profiler', - }) + @listenTo(a, 'click', @click) this - url: () -> - controller = Manifest.manifest().controllers[@item.table_name()] - action = controller.actions['show'] - params = { - controller: controller, - action: action, - id: @item.get('id'), - format: 'prof' - } - '/' + action.url(params) - icon_file_name: () -> '/images/prof.gif' diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee index 54a5347e..9148ff0b 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee @@ -6,6 +6,10 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemCo render: () -> view = Pettanr.Views[@item.singular()] summary = new view[view.summary()]({item: @item}) + @listenTo(summary, 'navigate', @navigate) this.$el.html(summary.el) this - + + navigate: (url) -> + @trigger('navigate', url) + diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.js.coffee index c47105a5..1db3f8ee 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.js.coffee @@ -11,6 +11,9 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol render: () -> this + has_link: () -> + @my_manifest.link.type != 'none' + filer: () -> @file_item.filer() @@ -23,9 +26,6 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol is_visible: () -> true - template_dir: () -> - @filer().template_dir + @column_name + '-' + click: () -> + # trigger click:symbol event with url - template_name: () -> - @template_dir() + @template_file_name() - diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee index 4e6534e2..b4971245 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee @@ -1,23 +1,34 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Base initialize: (options) -> super(options) - m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule - @face = m.FaceFactory.factory this, @my_manifest.face, @item - @link = m.LinkFactory.factory this, @my_manifest.link, @item + @face = @mdl().FaceFactory.factory this, @my_manifest.face, @item + @link = @mdl().LinkFactory.factory this, @my_manifest.link, @item + @listenTo(@face, 'ready:symbol', @ready_symbol) render: () -> - if @has_link() - this.$el.html(@link.render().el) - @delegateEvents({'click .face': 'show'}) - else - this.$el.html(@face.el) + icon = new Pettanr.Views.Common.LoadIcon() + this.$el.html(icon.render().el) + @face.render() # raise fetch this - has_link: () -> - @my_manifest.link.type != 'none' + ready_symbol: (symbol) -> + view = if @has_link() + linked_symbol = new Tag.A({ + attr: {href: @link.url()}, + content: symbol.render().el + }) + @listenTo(linked_symbol, 'click', @click) + linked_symbol + else + symbol + this.$el.html(view.render().el) + + click: () -> + @trigger('click:symbol') + @trigger('navigate', @link.url()) + false - show: () -> - window.router.navigate(@link.url(), true) - return false + mdl: () -> + Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee index a7ece41a..7361a7dc 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee @@ -1,19 +1,12 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.BaseFace extends Backbone.View - tagName: 'div' - className: 'face' initialize: (options) -> @default_symbol = options.default_symbol @my_manifest = options.my_manifest @item = options.item - @clear() - @listenTo(@item, 'ready:symbol', @render) - - clear: () -> - icon = new Pettanr.Views.Common.LoadIcon() - this.$el.html(icon.render().el) - this + # not render + # get symbol data and send message render: () -> this @@ -26,6 +19,3 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol item_name: () -> @filer().item_name - icon_size: () -> - Manifest.manifest().magic_numbers['thumbnail_width'] - diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee index a3669430..d92afcde 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee @@ -2,16 +2,16 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol initialize: (options) -> super(options) - @picture = new Pettanr.Image.SymbolImg({ + + # not render + # get symbol data and send message + render: () -> + picture = new Pettanr.Image.SymbolImg({ attr: { src: @url() } }) - @render() - - render: () -> - this.$el.html(@picture.render().el) - this + @trigger('ready:symbol', picture) url: () -> @my_manifest.url diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee index bb611dbe..e3179b04 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee @@ -2,21 +2,19 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol initialize: (options) -> super(options) - if @item[@method_name()] - @item[@method_name()]() + # not render + # get symbol data and send message render: () -> - if @item.symbol_picture - this.$el.html(@item.symbol_picture.render().el) - else - picture = new Pettanr.Image.SymbolImg({ - attr: { - src: '/images/error.png' - } - }) - this.$el.html(picture.render().el) + if @item[@method_name()] + @listenTo(@item, 'ready:symbol', @ready_symbol) + # fetch symbol by symbol_option + @item[@method_name()]() this method_name: () -> @my_manifest.method_name + ready_symbol: (symbol) -> + @trigger('ready:symbol', symbol) + diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/action.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/action.js.coffee index fa9a13ed..bbd6b46c 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/action.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/action.js.coffee @@ -3,11 +3,6 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol initialize: (options) -> super(options) - render: () -> - this.$el.attr('href', @url()) - this.$el.html(@face.el) - this - url: () -> controller = Manifest.manifest().controllers[@item.table_name()] action = controller.actions[@my_manifest.action_name] diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/base.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/base.js.coffee index 54ec7df1..0d3f96d5 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/base.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/base.js.coffee @@ -1,11 +1,9 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.BaseLink extends Backbone.View - tagName: 'a' initialize: (options) -> @default_symbol = options.default_symbol @my_manifest = options.my_manifest @item = options.item - @face = @default_symbol.face url: () -> raise "undefined url\n" diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/url_column.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/url_column.js.coffee index 8ebf3186..d5902cdb 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/url_column.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/url_column.js.coffee @@ -3,14 +3,6 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol initialize: (options) -> super(options) - render: () -> - this.$el.attr('href', @url()) - this.$el.html(@face.el) - this - - js_url: () -> - "javascript:void(0)" - url: () -> @item.get(@my_manifest.column_name) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee index 8c0110ce..46d91115 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee @@ -2,22 +2,17 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol initialize: (options) -> super(options) - @face = new Pettanr.Views[@item.singular()].Symbol({ - item: @item - }) render: () -> - this.$el.html(@face.render().el) - @delegateEvents({ - 'click .face': 'show' + view = new Pettanr.Views[@item.singular()].Symbol({ + item: @item }) + @listenTo(view, 'click', @click) + this.$el.html(view.render().el) this - show: () -> - # unique template - window.router.navigate(@url(), true) - return false - - url: () -> - Pettanr.url(@item.table_name(), 'show', {id: @item.get('id')}) + + click: () -> + @trigger('click:symbol') + @trigger('navigate', @item.show_url()) diff --git a/app/assets/javascripts/locmare/filer/header.js.coffee b/app/assets/javascripts/locmare/filer/header.js.coffee index 5e4f29fa..6b4fbec6 100644 --- a/app/assets/javascripts/locmare/filer/header.js.coffee +++ b/app/assets/javascripts/locmare/filer/header.js.coffee @@ -8,13 +8,15 @@ class Locmare.FilerModule.Header extends Backbone.View this.$el.html('') icon = new Pettanr.Image.Icon({item: @model(), half: true}) caption = Pettanr.AppHelper.t_m(@model().singular()) - url = Pettanr.url(@model().table_name(), 'index', {}) + url = @model().index_url() linked_icon = new Tag.A({ - attr: {href: '/' + url}, handler_name: url, content: icon.render().el + attr: {href: '/' + url}, content: icon.render().el }) linked_caption = new Tag.A({ - attr: {href: '/' + url}, handler_name: url, content: caption + attr: {href: '/' + url}, content: caption }) + @listenTo(linked_icon, 'click', @click) + @listenTo(linked_caption, 'click', @click) this.$el.append(linked_icon.render().el) this.$el.append(linked_caption.render().el) this @@ -25,3 +27,6 @@ class Locmare.FilerModule.Header extends Backbone.View human_name: () -> @model.model_name.human + click: () -> + @trigger('click', @model().index_url()) + diff --git a/app/assets/javascripts/locmare/list_group/lib/pager.js.coffee b/app/assets/javascripts/locmare/list_group/lib/pager.js.coffee index e055aff9..efbc3d76 100644 --- a/app/assets/javascripts/locmare/list_group/lib/pager.js.coffee +++ b/app/assets/javascripts/locmare/list_group/lib/pager.js.coffee @@ -31,43 +31,48 @@ class Locmare.ListGroupModule.LibModule.PagerModule.Default extends Backbone.Vie render: () -> this.$el.html('') if @hasPreviousPage() - this.$el.append( - (new Locmare.ListGroupModule.LibModule.PagerModule.FirstPage({ - parent: this, page: 1, class_name: 'first' - })).render().el - ) + view = new Locmare.ListGroupModule.LibModule.PagerModule.FirstPage({ + parent: this, page: 1, class_name: 'first' + }) + @listenTo(view, 'navigate', @navigate) + @listenTo(view, 'page', @click) + this.$el.append(view.render().el) if @hasPreviousPage() - this.$el.append( - (new Locmare.ListGroupModule.LibModule.PagerModule.PrevPage({ - parent: this, page: @current_page - 1, class_name: 'prev' - })).render().el - ) + view = new Locmare.ListGroupModule.LibModule.PagerModule.PrevPage({ + parent: this, page: @current_page - 1, class_name: 'prev' + }) + @listenTo(view, 'navigate', @navigate) + @listenTo(view, 'page', @click) + this.$el.append(view.render().el) if @hasPreviousPageGap() this.$el.append( (new Locmare.ListGroupModule.LibModule.PagerModule.PageGap()).render().el ) _.each @range(), (page) => - this.$el.append( - (new Locmare.ListGroupModule.LibModule.PagerModule.Page({ - parent: this, page: page, class_name: 'page' - })).render().el - ) + view = new Locmare.ListGroupModule.LibModule.PagerModule.Page({ + parent: this, page: page, class_name: 'page' + }) + @listenTo(view, 'navigate', @navigate) + @listenTo(view, 'page', @click) + this.$el.append(view.render().el) if @hasNextPageGap() this.$el.append( (new Locmare.ListGroupModule.LibModule.PagerModule.PageGap()).render().el ) if @hasNextPage() - this.$el.append( - (new Locmare.ListGroupModule.LibModule.PagerModule.NextPage({ - parent: this, page: @current_page + 1, class_name: 'next' - })).render().el - ) + view = new Locmare.ListGroupModule.LibModule.PagerModule.NextPage({ + parent: this, page: @current_page + 1, class_name: 'next' + }) + @listenTo(view, 'navigate', @navigate) + @listenTo(view, 'page', @click) + this.$el.append(view.render().el) if @hasNextPage() - this.$el.append( - (new Locmare.ListGroupModule.LibModule.PagerModule.LastPage({ - parent: this, page: @total_page, class_name: 'last' - })).render().el - ) + view = new Locmare.ListGroupModule.LibModule.PagerModule.LastPage({ + parent: this, page: @total_page, class_name: 'last' + }) + @listenTo(view, 'navigate', @navigate) + @listenTo(view, 'page', @click) + this.$el.append(view.render().el) rb = new Tag.RowBreak() this.$el.append(rb.render().el) this @@ -103,6 +108,12 @@ class Locmare.ListGroupModule.LibModule.PagerModule.Default extends Backbone.Vie params['page_size'] = @per_page @action.url params + click: (page) -> + @trigger('page', page) + + navigate: (url) -> + @trigger('navigate', url) + class Locmare.ListGroupModule.LibModule.PagerModule.Part extends Backbone.View tagName: 'li' @@ -112,26 +123,36 @@ class Locmare.ListGroupModule.LibModule.PagerModule.Part extends Backbone.View @el.className = options.class_name render: () -> - url = @parent.url(@page) if @page == @parent.current_page this.$el.html(@content()) else linked_caption = new Tag.A({ - attr: {href: '/' + url}, - handler_name: url, + attr: {href: '/' + @url()}, content: @content() }) + @listenTo(linked_caption, 'click', @click) this.$el.html(linked_caption.render().el) this content: () -> '' + url: () -> + @parent.url(@page) + + click: () -> + @trigger('page', @page) + @trigger('navigate', @url()) + class Locmare.ListGroupModule.LibModule.PagerModule.FirstPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part content: () -> '<<' + click: () -> + @trigger('page', @page) + @trigger('navigate', @url()) + class Locmare.ListGroupModule.LibModule.PagerModule.PrevPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part content: () -> diff --git a/app/assets/javascripts/locmare/profiler/association.js.coffee b/app/assets/javascripts/locmare/profiler/association.js.coffee index 2d6bb1fd..2d121740 100644 --- a/app/assets/javascripts/locmare/profiler/association.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association.js.coffee @@ -19,14 +19,17 @@ class Locmare.ProfilerModule.Association extends Backbone.View caption = new Tag.Div({class_name: 'caption', content: 'belongs_to'}) this.$el.append(caption.render().el) _.each @belongs_to, (f) => + @listenTo(f, 'navigate', @navigate) this.$el.append(f.render().el) caption = new Tag.Div({class_name: 'caption', content: 'has_many'}) this.$el.append(caption.render().el) _.each @has_many, (f) => + @listenTo(f, 'navigate', @navigate) this.$el.append(f.render().el) caption = new Tag.Div({class_name: 'caption', content: 'has_one'}) this.$el.append(caption.render().el) _.each @has_one, (f) => + @listenTo(f, 'navigate', @navigate) this.$el.append(f.render().el) this @@ -36,5 +39,8 @@ class Locmare.ProfilerModule.Association extends Backbone.View model_manifest: () -> Manifest.manifest().models[@profiler.item_name] + navigate: (url) -> + @trigger('navigate', url) + class Locmare.ProfilerModule.AssociationModule diff --git a/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee b/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee index 7ac40467..38213626 100644 --- a/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee @@ -13,6 +13,7 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View pager: null, operators: @profiler().operators }) + @listenTo(@filer, 'navigate', @navigate) @render() render: () -> @@ -38,3 +39,6 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View profiler: () -> @association.profiler + navigate: (url) -> + @trigger('navigate', url) + diff --git a/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee b/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee index d2475a14..eb3d129c 100644 --- a/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee @@ -18,6 +18,7 @@ class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View pager: @pager, operators: @profiler().operators }) + @listenTo(@filer, 'navigate', @navigate) @render() ) @@ -33,4 +34,7 @@ class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View profiler: () -> @association.profiler + + navigate: (url) -> + @trigger('navigate', url) diff --git a/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee b/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee index a07f4f88..d9b9f8c8 100644 --- a/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee @@ -18,6 +18,7 @@ class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View pager: @pager, operators: @profiler().operators }) + @listenTo(@filer, 'navigate', @navigate) @render() ) @@ -36,3 +37,6 @@ class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View profiler: () -> @association.profiler + navigate: (url) -> + @trigger('navigate', url) + diff --git a/app/assets/javascripts/locmare/profiler/header.js.coffee b/app/assets/javascripts/locmare/profiler/header.js.coffee index 2c3097ff..96388e5b 100644 --- a/app/assets/javascripts/locmare/profiler/header.js.coffee +++ b/app/assets/javascripts/locmare/profiler/header.js.coffee @@ -10,8 +10,12 @@ class Locmare.ProfilerModule.Header extends Backbone.View pager: @pager, operators: @profiler.operators }) + @listenTo(@filer, 'navigate', @navigate) render: () -> this.$el.html(@filer.el) this + navigate: (url) -> + @trigger('navigate', url) + diff --git a/app/assets/javascripts/models/balloon.js.coffee b/app/assets/javascripts/models/balloon.js.coffee index 48c95de8..0ed171f1 100644 --- a/app/assets/javascripts/models/balloon.js.coffee +++ b/app/assets/javascripts/models/balloon.js.coffee @@ -32,8 +32,7 @@ class Pettanr.Balloon extends Peta.Element sbt.fetch({cache: true}).done => sp = sbt.system_picture() sp.fetch({cache: true}).done => - @symbol_picture = sp.tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', sp.tmb_opt_img_tag()) initialize: () -> if @id diff --git a/app/assets/javascripts/models/folder.js.coffee b/app/assets/javascripts/models/folder.js.coffee index 5e8e8b3e..961396f7 100644 --- a/app/assets/javascripts/models/folder.js.coffee +++ b/app/assets/javascripts/models/folder.js.coffee @@ -16,8 +16,8 @@ class Pettanr.Folder extends Peta.Owner @get('name').replace(/\/$/, '').split('/').pop() filer_caption: () -> - @caption_text = _.escape(@caption()) - @trigger('ready:caption') + caption = _.escape(@caption()) + @trigger('ready:caption', caption) is_remote: () -> if @get('category_id') == 10 diff --git a/app/assets/javascripts/models/ground_picture.js.coffee b/app/assets/javascripts/models/ground_picture.js.coffee index 251b8ab7..a699cce2 100644 --- a/app/assets/javascripts/models/ground_picture.js.coffee +++ b/app/assets/javascripts/models/ground_picture.js.coffee @@ -38,8 +38,7 @@ class Pettanr.GroundPicture extends Peta.Element symbol_option: () -> i = @picture() i.fetch({cache: true}).done => - @symbol_picture = i.tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', i.tmb_opt_img_tag()) repeat_text: () -> Pettanr.GroundPicture.repeat_texts()[@get('repeat')] diff --git a/app/assets/javascripts/models/license.js.coffee b/app/assets/javascripts/models/license.js.coffee index 7c4799fb..d01e3b4b 100644 --- a/app/assets/javascripts/models/license.js.coffee +++ b/app/assets/javascripts/models/license.js.coffee @@ -20,14 +20,13 @@ class Pettanr.License extends Peta.SystemResource symbol_option: () -> i = @system_picture() i.fetch({cache: true}).done => - @symbol_picture = i.tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', i.tmb_opt_img_tag()) caption_with_group: () -> i = @license_group() i.fetch({cache: true}).done => - @caption_text = i.escape('caption') + '/' + @escape('caption') - @trigger('ready:caption') + caption = i.escape('caption') + '/' + @escape('caption') + @trigger('ready:caption', caption) initialize: () -> if @id diff --git a/app/assets/javascripts/models/original_picture.js.coffee b/app/assets/javascripts/models/original_picture.js.coffee index 77015a38..00cf2269 100644 --- a/app/assets/javascripts/models/original_picture.js.coffee +++ b/app/assets/javascripts/models/original_picture.js.coffee @@ -40,18 +40,17 @@ class Pettanr.OriginalPicture extends Peta.Content symbol_option: () -> @fetch({cache: true}).done => - @symbol_picture = @tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', @tmb_opt_img_tag()) filer_caption: () -> history = @history() history.fetch({cache: true}).done => - @caption_text = if _.isEmpty(history.models) + caption = if _.isEmpty(history.models) 'unpublished' else head = _.first(history.models) Pettanr.to_s(head.get('revision')) - @trigger('ready:caption') + @trigger('ready:caption', caption) revision: () -> new Pettanr.OriginalPicture.Head({original_picture: this}) diff --git a/app/assets/javascripts/models/panel_picture.js.coffee b/app/assets/javascripts/models/panel_picture.js.coffee index 7544193e..eaac8a57 100644 --- a/app/assets/javascripts/models/panel_picture.js.coffee +++ b/app/assets/javascripts/models/panel_picture.js.coffee @@ -56,8 +56,7 @@ class Pettanr.PanelPicture extends Peta.Element symbol_option: () -> i = @picture() i.fetch({cache: true}).done => - @symbol_picture = i.tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', i.tmb_opt_img_tag()) element_face: () -> new Pettanr.Views.PanelPicture.ElementFace({element: this}) diff --git a/app/assets/javascripts/models/resource_picture.js.coffee b/app/assets/javascripts/models/resource_picture.js.coffee index 141b66c2..86024e36 100644 --- a/app/assets/javascripts/models/resource_picture.js.coffee +++ b/app/assets/javascripts/models/resource_picture.js.coffee @@ -51,8 +51,7 @@ class Pettanr.ResourcePicture extends Peta.Content symbol_option: () -> @fetch({cache: true}).done => - @symbol_picture = @tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', @tmb_opt_img_tag()) credit_icon_view: () -> new Pettanr.Views.ResourcePicture.CreditIcon({item: this}) diff --git a/app/assets/javascripts/models/speech.js.coffee b/app/assets/javascripts/models/speech.js.coffee index 42e53d73..99147328 100644 --- a/app/assets/javascripts/models/speech.js.coffee +++ b/app/assets/javascripts/models/speech.js.coffee @@ -28,8 +28,7 @@ class Pettanr.Speech extends Peta.Element sbt.fetch({cache: true}).done => sp = sbt.system_picture() sp.fetch({cache: true}).done => - @symbol_picture = sp.tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', sp.tmb_opt_img_tag()) text_align_text: () -> Pettanr.Speech.text_align_texts()[@get('text_align')] diff --git a/app/assets/javascripts/models/speech_balloon.js.coffee b/app/assets/javascripts/models/speech_balloon.js.coffee index 0294f03b..d5e52802 100644 --- a/app/assets/javascripts/models/speech_balloon.js.coffee +++ b/app/assets/javascripts/models/speech_balloon.js.coffee @@ -27,13 +27,12 @@ class Pettanr.SpeechBalloon extends Peta.Element sbt.fetch({cache: true}).done => sp = sbt.system_picture() sp.fetch({cache: true}).done => - @symbol_picture = sp.tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', sp.tmb_opt_img_tag()) filer_caption: () -> @fetch({cache: true}).done => - @caption_text = @escape('caption') - @trigger('ready:caption') + caption = @escape('caption') + @trigger('ready:caption', caption) plain_scenario: () -> @get('caption') diff --git a/app/assets/javascripts/models/speech_balloon_template.js.coffee b/app/assets/javascripts/models/speech_balloon_template.js.coffee index 3698254b..0e54f784 100644 --- a/app/assets/javascripts/models/speech_balloon_template.js.coffee +++ b/app/assets/javascripts/models/speech_balloon_template.js.coffee @@ -17,8 +17,7 @@ class Pettanr.SpeechBalloonTemplate extends Peta.Template symbol_option: () -> i = @system_picture() i.fetch({cache: true}).done => - @symbol_picture = i.tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', i.tmb_opt_img_tag()) parsed_settings: () -> JSON.parse(@get('settings')) diff --git a/app/assets/javascripts/models/system_picture.js.coffee b/app/assets/javascripts/models/system_picture.js.coffee index 36db60aa..e718fda9 100644 --- a/app/assets/javascripts/models/system_picture.js.coffee +++ b/app/assets/javascripts/models/system_picture.js.coffee @@ -36,8 +36,7 @@ class Pettanr.SystemPicture extends Peta.SystemResource symbol_option: () -> @fetch({cache: true}).done => - @symbol_picture = @tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', @tmb_opt_img_tag()) initialize: () -> if @id diff --git a/app/assets/javascripts/models/writing_format.js.coffee b/app/assets/javascripts/models/writing_format.js.coffee index 61e08fcb..1c3c7b8c 100644 --- a/app/assets/javascripts/models/writing_format.js.coffee +++ b/app/assets/javascripts/models/writing_format.js.coffee @@ -17,8 +17,7 @@ class Pettanr.WritingFormat extends Peta.Template symbol_option: () -> i = @system_picture() i.fetch({cache: true}).done => - @symbol_picture = i.tmb_opt_img_tag() - @trigger('ready:symbol') + @trigger('ready:symbol', i.tmb_opt_img_tag()) initialize: () -> if @id diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index 70c2056e..477ad94c 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -145,8 +145,14 @@ class Peta.Item extends Backbone.Model icon_view: (half) -> new Pettanr.Views[@my_class().singular()].Icon({item: this, half: half}) + @index_url: () -> + Pettanr.url(@table_name(), 'index', {id: null}) + index_url: () -> - Pettanr.url(@table_name(), 'index', {id: @get('id')}) + @my_class().index_url() + + list_url: (action_name = 'index') -> + Pettanr.url(@table_name(), action_name, {id: @get('id')}) show_url: () -> Pettanr.url(@table_name(), 'show', {id: @get('id')}) diff --git a/app/assets/javascripts/pettanr/picture.js.coffee b/app/assets/javascripts/pettanr/picture.js.coffee index 7fb42b0f..6f852814 100644 --- a/app/assets/javascripts/pettanr/picture.js.coffee +++ b/app/assets/javascripts/pettanr/picture.js.coffee @@ -81,3 +81,11 @@ class Pettanr.Image.SymbolImg extends Tag.Img } super(opt) +class Pettanr.Image.SymbolImg.Error extends Pettanr.Image.SymbolImg + + initialize: (options) -> + super(options) + options ||= {} + options.attr ||= {} + options.attr.src ||= '/images/error.png' + diff --git a/app/assets/javascripts/routes.js.coffee b/app/assets/javascripts/routes.js.coffee index f1a3b420..4b77dbc3 100644 --- a/app/assets/javascripts/routes.js.coffee +++ b/app/assets/javascripts/routes.js.coffee @@ -100,7 +100,7 @@ class Pettanr.Router extends Backbone.Router # controller only case # ex) scrolls c: (controller, query_string) -> - params = @c_i_params(controller, query_string) + params = @c_params(controller, query_string) @fire(params) c_params: (controller, query_string) -> diff --git a/app/assets/javascripts/views.js.coffee b/app/assets/javascripts/views.js.coffee index 734a7eed..7f417f0d 100644 --- a/app/assets/javascripts/views.js.coffee +++ b/app/assets/javascripts/views.js.coffee @@ -19,6 +19,8 @@ class Pettanr.Views.Speech extends Pettanr.Views.Base class Pettanr.Views.GroundPicture extends Pettanr.Views.Base class Pettanr.Views.GroundColor extends Pettanr.Views.Base class Pettanr.Views.OriginalPicture extends Pettanr.Views.Base + @templates: () -> + {publish: Pettanr.Views.OriginalPicture.Publish} class Pettanr.Views.Picture extends Pettanr.Views.Base class Pettanr.Views.ResourcePicture extends Pettanr.Views.Base class Pettanr.Views.OriginalPictureLicenseGroup extends Pettanr.Views.Base diff --git a/app/assets/javascripts/views/balloons/summary.js.coffee b/app/assets/javascripts/views/balloons/summary.js.coffee index f5949755..5027f4e3 100644 --- a/app/assets/javascripts/views/balloons/summary.js.coffee +++ b/app/assets/javascripts/views/balloons/summary.js.coffee @@ -11,9 +11,11 @@ class Pettanr.Views.Balloon.Summary extends Pettanr.Views.Common.Summary panel = @speech_balloon.panel() panel.fetch({cache: true}).done => @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true}) + @listenTo(@panel_icon, 'click', @panel_click) author = panel.author() author.fetch({cache: true}).done => @author_icon_with_caption = author.icon_with_caption_view(true, 'name', 12) + @listenTo(@author_icon_with_caption, 'click', @author_click) @trigger('ready') render: () -> @@ -22,3 +24,9 @@ class Pettanr.Views.Balloon.Summary extends Pettanr.Views.Common.Summary this.$el.append(@author_icon_with_caption.render().el) this + panel_click: () -> + @trigger('navigate', @panel_icon.url()) + + author_click: () -> + @trigger('navigate', @author_icon_with_caption.url()) + diff --git a/app/assets/javascripts/views/common.js.coffee b/app/assets/javascripts/views/common.js.coffee index 9333ed77..7a003519 100644 --- a/app/assets/javascripts/views/common.js.coffee +++ b/app/assets/javascripts/views/common.js.coffee @@ -1,4 +1,11 @@ class Pettanr.Views.Common + @replace_empty: (caption) -> + if Pettanr.is_blank(caption) + empty = new Pettanr.Views.Common.EmptyCaption() + empty.render().el + else + caption + class Pettanr.Views.Common.LoadIcon extends Tag.Img initialize: () -> @@ -132,6 +139,7 @@ class Pettanr.Views.Common.Binder.Summary extends Pettanr.Views.Common.Summary @author = @item.author() @author.fetch({cache: true}).done => @author_icon_with_caption = @author.icon_with_caption_view(true, 'name', 12) + @listenTo(@author_icon_with_caption, 'click', @author_click) @trigger('ready') render: () -> @@ -140,6 +148,9 @@ class Pettanr.Views.Common.Binder.Summary extends Pettanr.Views.Common.Summary this.$el.append(@author_icon_with_caption.render().el) this + author_click: () -> + @trigger('navigate', @author_icon_with_caption.url()) + class Pettanr.Views.Common.Leaf class Pettanr.Views.Common.Leaf.Summary extends Pettanr.Views.Common.Summary @@ -148,31 +159,59 @@ class Pettanr.Views.Common.Leaf.Summary extends Pettanr.Views.Common.Summary @item = options.item @binder_item_name = options.binder_item_name @destination_item_name = options.destination_item_name + @binder_view = new Tag.Span({}) + @destination_view = new Tag.Span({}) @load() load: () -> + @listenTo(this, 'load_binder', @load_destination) + @listenTo(this, 'load_destination', @ready) + @load_binder() + + ready: () -> + @trigger('ready') + + load_binder: () -> @binder = @item[@binder_item_name]() @binder.fetch({cache: true}).done => @binder_icon = @binder.icon_view(true) + @listenTo(@binder_icon, 'click', @binder_click) @binder_author = @binder.author() @binder_author.fetch({cache: true}).done => @binder_author_icon_with_caption = @binder_author.icon_with_caption_view(true, 'name', 12) - @trigger('ready') + @listenTo(@binder_author_icon_with_caption, 'click', @binder_author_click) + @binder_view.$el.append(@binder_icon.render().el) + @binder_view.$el.append(@binder_author_icon_with_caption.render().el) + @trigger('load_binder') + + load_destination: () -> @destination = @item[@destination_item_name]() @destination.fetch({cache: true}).done => @destination_icon = @destination.icon_view(true) + @listenTo(@destination_icon, 'click', @destination_click) @destination_author = @destination.author() @destination_author.fetch({cache: true}).done => @destination_author_icon_with_caption = @destination_author.icon_with_caption_view(true, 'name', 12) - @trigger('ready') + @listenTo(@destination_author_icon_with_caption, 'click', @destination_author_click) + @destination_view.$el.append(@destination_icon.render().el) + @destination_view.$el.append(@destination_author_icon_with_caption.render().el) + @trigger('load_destination') render: () -> this.$el.html('') - if @binder_author_icon_with_caption - this.$el.append(@binder_icon.render().el) - this.$el.append(@binder_author_icon_with_caption.render().el) - if @destination_author_icon_with_caption - this.$el.append(@destination_icon.render().el) - this.$el.append(@destination_author_icon_with_caption.render().el) + this.$el.append(@binder_view.render().el) + this.$el.append(@destination_view.render().el) this + binder_click: () -> + @trigger('navigate', @binder_icon.url()) + + destination_click: () -> + @trigger('navigate', @destination_icon.url()) + + binder_author_click: () -> + @trigger('navigate', @binder_author_icon_with_caption.url()) + + destination_author_click: () -> + @trigger('navigate', @destination_author_icon_with_caption.url()) + diff --git a/app/assets/javascripts/views/ground_colors/summary.js.coffee b/app/assets/javascripts/views/ground_colors/summary.js.coffee index faee4ddf..992544cf 100644 --- a/app/assets/javascripts/views/ground_colors/summary.js.coffee +++ b/app/assets/javascripts/views/ground_colors/summary.js.coffee @@ -9,9 +9,11 @@ class Pettanr.Views.GroundColor.Summary extends Pettanr.Views.Common.Summary panel = @item.panel() panel.fetch({cache: true}).done => @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true}) + @listenTo(@panel_icon, 'click', @panel_click) author = panel.author() author.fetch({cache: true}).done => @author_icon_with_caption = author.icon_with_caption_view(true, 'name', 12) + @listenTo(@author_icon_with_caption, 'click', @author_click) @trigger('ready') render: () -> @@ -20,3 +22,9 @@ class Pettanr.Views.GroundColor.Summary extends Pettanr.Views.Common.Summary this.$el.append(@author_icon_with_caption.render().el) this + panel_click: () -> + @trigger('navigate', @panel_icon.url()) + + author_click: () -> + @trigger('navigate', @author_icon_with_caption.url()) + diff --git a/app/assets/javascripts/views/ground_colors/symbol.js.coffee b/app/assets/javascripts/views/ground_colors/symbol.js.coffee index 6aeaa69f..352ee799 100644 --- a/app/assets/javascripts/views/ground_colors/symbol.js.coffee +++ b/app/assets/javascripts/views/ground_colors/symbol.js.coffee @@ -1,10 +1,17 @@ class Pettanr.Views.GroundColor.Symbol extends Backbone.View tagName: 'div' + events: { + 'click': 'click' + } initialize: (options) -> @item = options.item @class_name = options.class_name || 'face' + clear: () -> + @trigger('ready:symbol', symbol_picture) + this + render: () -> this.$el.addClass(@class_name) this.$el.html(@fore_color()) @@ -32,3 +39,6 @@ class Pettanr.Views.GroundColor.Symbol extends Backbone.View 'background-color': '#' + @bg_color() } + click: () -> + @trigger('click') + diff --git a/app/assets/javascripts/views/ground_pictures/summary.js.coffee b/app/assets/javascripts/views/ground_pictures/summary.js.coffee index cbecb185..0844f859 100644 --- a/app/assets/javascripts/views/ground_pictures/summary.js.coffee +++ b/app/assets/javascripts/views/ground_pictures/summary.js.coffee @@ -12,6 +12,7 @@ class Pettanr.Views.GroundPicture.Summary extends Pettanr.Views.Common.Summary panel = @item.panel() panel.fetch({cache: true}).done => @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true}) + @listenTo(@panel_icon, 'click', @panel_click) @trigger('ready') render: () -> @@ -20,3 +21,6 @@ class Pettanr.Views.GroundPicture.Summary extends Pettanr.Views.Common.Summary this.$el.append(@panel_icon.render().el) this + panel_click: () -> + @trigger('navigate', @panel_icon.url()) + diff --git a/app/assets/javascripts/views/original_pictures/publish.js.coffee b/app/assets/javascripts/views/original_pictures/publish.js.coffee new file mode 100644 index 00000000..2fb8e16c --- /dev/null +++ b/app/assets/javascripts/views/original_pictures/publish.js.coffee @@ -0,0 +1,64 @@ +class Pettanr.Views.OriginalPicture.Publish extends Backbone.View + + initialize: (options) -> + super(options) + @file_item = options.file_item + @my_manifest = options.my_manifest + @item = options.item + # if item.resource_picture + # @resource_picture.destroy_url() + @stop_btn = new Tag.A({ + attr: {href: '/' + @item.destroy_url()}, + content: I18n.t('original_pictures.index.stop') + }) + @edit_icon = new Pettanr.Image.SymbolImg({ + attr: {'src': @edit_img_file_name()}, + half: true + }) + @edit_btn = new Tag.A({ + attr: {href: '/' + @item.edit_url()}, + content: @edit_icon.render().el + }) + @remove_icon = new Pettanr.Image.SymbolImg({ + attr: {'src': @remove_img_file_name()}, + half: true + }) + @remove_btn = new Tag.A({ + attr: {href: '/' + @item.destroy_url()}, + content: @remove_icon.render().el + }) + @listenTo(@edit_btn, 'click', @click_edit) + @listenTo(@remove_btn, 'click', @click_remove) + + render: () -> + this.$el.html('') + if @is_own() + this.$el.append(@stop_btn.render().el) + this.$el.append(@edit_btn.render().el) + this.$el.append(@remove_btn.render().el) + this + + is_own: () -> + if @item.is_own(@filer().operators) + true + else + false + + filer: () -> + @file_item.filer() + + manifest: () -> + @filer().manifest + + item_name: () -> + @filer().item_name + + image_dir: () -> + @filer().image_dir() + + edit_img_file_name: () -> + @image_dir() + 'edit.png' + + remove_img_file_name: () -> + @image_dir() + 'remove.png' + diff --git a/app/assets/javascripts/views/original_pictures/summary.js.coffee b/app/assets/javascripts/views/original_pictures/summary.js.coffee index 5c8cf7cc..0f35509a 100644 --- a/app/assets/javascripts/views/original_pictures/summary.js.coffee +++ b/app/assets/javascripts/views/original_pictures/summary.js.coffee @@ -16,6 +16,7 @@ class Pettanr.Views.OriginalPicture.Summary extends Pettanr.Views.Common.Summary if ra = @item.get('resource_picture') resource_picture = new Pettanr.ResourcePicture(ra) @credit = resource_picture.credit_view(true) + @listenTo(@credit, 'click:icon', @resource_picture_click) @trigger('ready') render: () -> @@ -27,3 +28,7 @@ class Pettanr.Views.OriginalPicture.Summary extends Pettanr.Views.Common.Summary this.$el.append(rb.render().el) this + # in credit + resource_picture_click: (resource_picture) -> + @trigger('navigate', resource_picture.show_url()) + diff --git a/app/assets/javascripts/views/panel_pictures/summary.js.coffee b/app/assets/javascripts/views/panel_pictures/summary.js.coffee index 89adb659..6298c366 100644 --- a/app/assets/javascripts/views/panel_pictures/summary.js.coffee +++ b/app/assets/javascripts/views/panel_pictures/summary.js.coffee @@ -12,6 +12,7 @@ class Pettanr.Views.PanelPicture.Summary extends Pettanr.Views.Common.Summary panel = @item.panel() panel.fetch({cache: true}).done => @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true}) + @listenTo(@panel_icon, 'click', @panel_click) @trigger('ready') render: () -> @@ -20,3 +21,6 @@ class Pettanr.Views.PanelPicture.Summary extends Pettanr.Views.Common.Summary this.$el.append(@panel_icon.render().el) this + panel_click: () -> + @trigger('navigate', @panel_icon.url()) + diff --git a/app/assets/javascripts/views/panels/summary.js.coffee b/app/assets/javascripts/views/panels/summary.js.coffee index f89b2420..33931f47 100644 --- a/app/assets/javascripts/views/panels/summary.js.coffee +++ b/app/assets/javascripts/views/panels/summary.js.coffee @@ -16,6 +16,7 @@ class Pettanr.Views.Panel.Summary extends Pettanr.Views.Common.Summary @author = @item.author() @author.fetch({cache: true}).done => @author_icon_with_caption = @author.icon_with_caption_view(true, 'name', 12) + @listenTo(@author_icon_with_caption, 'click', @author_click) @trigger('ready') render: () -> @@ -24,3 +25,6 @@ class Pettanr.Views.Panel.Summary extends Pettanr.Views.Common.Summary this.$el.append(@author_icon_with_caption.render().el) this + author_click: () -> + @trigger('navigate', @author_icon_with_caption.url()) + diff --git a/app/assets/javascripts/views/speech_balloons/summary.js.coffee b/app/assets/javascripts/views/speech_balloons/summary.js.coffee index f23d7632..06332e65 100644 --- a/app/assets/javascripts/views/speech_balloons/summary.js.coffee +++ b/app/assets/javascripts/views/speech_balloons/summary.js.coffee @@ -9,9 +9,11 @@ class Pettanr.Views.SpeechBalloon.Summary extends Pettanr.Views.Common.Summary panel = @item.panel() panel.fetch({cache: true}).done => @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true}) + @listenTo(@panel_icon, 'click', @panel_click) author = panel.author() author.fetch({cache: true}).done => @author_icon_with_caption = author.icon_with_caption_view(true, 'name', 12) + @listenTo(@author_icon_with_caption, 'click', @author_click) @trigger('ready') render: () -> @@ -20,3 +22,9 @@ class Pettanr.Views.SpeechBalloon.Summary extends Pettanr.Views.Common.Summary this.$el.append(@author_icon_with_caption.render().el) this + panel_click: () -> + @trigger('navigate', @panel_icon.url()) + + author_click: () -> + @trigger('navigate', @author_icon_with_caption.url()) + diff --git a/app/assets/javascripts/views/speeches/summary.js.coffee b/app/assets/javascripts/views/speeches/summary.js.coffee index d35d201c..cf106eeb 100644 --- a/app/assets/javascripts/views/speeches/summary.js.coffee +++ b/app/assets/javascripts/views/speeches/summary.js.coffee @@ -11,9 +11,11 @@ class Pettanr.Views.Speech.Summary extends Pettanr.Views.Common.Summary panel = @speech_balloon.panel() panel.fetch({cache: true}).done => @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true}) + @listenTo(@panel_icon, 'click', @panel_click) author = panel.author() author.fetch({cache: true}).done => @author_icon_with_caption = author.icon_with_caption_view(true, 'name', 12) + @listenTo(@author_icon_with_caption, 'click', @author_click) @trigger('ready') render: () -> @@ -22,3 +24,9 @@ class Pettanr.Views.Speech.Summary extends Pettanr.Views.Common.Summary this.$el.append(@author_icon_with_caption.render().el) this + panel_click: () -> + @trigger('navigate', @panel_icon.url()) + + author_click: () -> + @trigger('navigate', @author_icon_with_caption.url()) + -- 2.11.0