From: yasushiito Date: Mon, 2 Mar 2015 04:57:51 +0000 (+0900) Subject: Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06 X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=29abaf3989363cb51d0bb64e1560a80114920782;hp=6dcbb35feb41e47ccdf37876c3d2e39eea30b285 Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06 --- diff --git a/app/assets/javascripts/ap.js b/app/assets/javascripts/ap.js index e1e8eecb..3050d910 100644 --- a/app/assets/javascripts/ap.js +++ b/app/assets/javascripts/ap.js @@ -330,5 +330,6 @@ //= require ./pettanr/pettan_imager //= require ./pettanr/operator //= require ./pettanr/action_filter +//= require ./pettanr/proxy //= require ./backbone.fetch-cache //= require main diff --git a/app/assets/javascripts/controllers.js.coffee b/app/assets/javascripts/controllers.js.coffee index b59e757e..c1be8b74 100644 --- a/app/assets/javascripts/controllers.js.coffee +++ b/app/assets/javascripts/controllers.js.coffee @@ -1,17 +1,11 @@ class Pettanr.AppController - constructor: (@params, @operators) -> + constructor: (@params, @form, @operators) -> _.extend(this, Backbone.Events) - @new2: (params, operators) -> + @new2: (params, form, operators) -> c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller'] - new c(params, operators) - - @fire: (params, operators, refresh_function) -> - controller = Pettanr.AppController.new2(params, operators) - @listener_function(controller, refresh_function) - action_name = params['action'] - controller[action_name]() + new c(params, form, operators) set_model: () -> @my_controller = Manifest.manifest().controllers[@params['controller']] @@ -71,7 +65,7 @@ class Pettanr.AppController @listenTo(profiler, 'navigate', @navigate) profiler.render() @trigger('ready', profiler) - @trigger('retitle', @params) + @trigger('title', @params) set_new: () -> @set_model() @@ -80,12 +74,12 @@ class Pettanr.AppController # Backbone.Model has defaults property #@item.supply_default() - set_edit: (save_func) -> + set_edit: () -> @set_model() @item = new @my_model_class({id: @params['id']}) @item.fetch({cache: true}).done => @item.boosts 'post' - @render_form(save_func) + @render_form() render_form: () -> @form = Locmare.Form.factory({ @@ -97,8 +91,6 @@ class Pettanr.AppController operators: @operators, action: '/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')) }) - @listenTo(@form, 'post', @create) - @listenTo(@form, 'put', @update) @form.render() @trigger('ready', @form) @@ -109,6 +101,20 @@ class Pettanr.AppController form_edit: () -> @set_edit() + post_success: (model, response) -> + @trigger('redirect', @form.item.show_url()) + @trigger('success', model, response) + + post_fail: (model, response) -> + @trigger('fail', response) + + destroy_success: (model, response) -> + @trigger('redirect', '/home/' + model.path_name()) + @trigger('success', model, response) + + destroy_fail: (model, response) -> + @trigger('fail', response) + navigate: (url) -> @trigger('navigate', url) diff --git a/app/assets/javascripts/controllers/folders.js.coffee b/app/assets/javascripts/controllers/folders.js.coffee index 266a1c0e..de37cbaf 100644 --- a/app/assets/javascripts/controllers/folders.js.coffee +++ b/app/assets/javascripts/controllers/folders.js.coffee @@ -1,11 +1,11 @@ class Pettanr.FoldersController extends Pettanr.AppController index: () -> - @trigger('retitle', @params) + @trigger('title', @params) @filer_list() root: () -> - @trigger('retitle', @params) + @trigger('title', @params) @set_model() @item = new Pettanr.Folder.Root() @item.fetch({cache: true}).done => @@ -14,7 +14,7 @@ class Pettanr.FoldersController extends Pettanr.AppController show_html_format: (format) -> children_html: () -> - @trigger('retitle', @params, @item.get('name')) + @trigger('title', @params, @item.get('name')) collection = new Pettanr.Folder.Children({id: @item.get('id')}) collection.fetch({cache: true}).done => filer = new Locmare.Filer({ @@ -23,7 +23,6 @@ class Pettanr.FoldersController extends Pettanr.AppController pager: null, operators: @operators }) - @listenTo(filer, 'navigate', @navigate) @trigger('ready', filer) show: () -> @@ -35,31 +34,31 @@ class Pettanr.FoldersController extends Pettanr.AppController @item = new Pettanr.FolderWatch({id: @params['id']}) @item.fetch({cache: true}).done () => if @item.is_remote() - vp = new Pettanr.ViewPicker({operators: @operators}) - @listenTo(vp, 'ready', @refresh) - @listenTo(vp, 'retitle', @retitle) - @listenTo(vp, 'redirect', @redirect_to) - vp.navigate(@item.remote_url()) + proxy = new Pettanr.Proxy({operators: @operators}) + @listenTo(proxy, 'ready', @refresh) + @listenTo(proxy, 'title', @title) + @listenTo(proxy, 'done', @done) + proxy.http_get(@item.remote_url()) else @children_html() count: () -> new: () -> - @trigger('retitle', @params) + @trigger('title', @params) @form_new() edit: () -> - @trigger('retitle', @params) + @trigger('title', @params) @form_edit() # for remote folder refresh: (view) -> @trigger('ready', view) - retitle: (params, str = null) -> - @trigger('retitle', @params, str = null) + title: (params, str = null) -> + @trigger('title', @params, str = null) - redirect_to: (url) -> - @trigger('redirect', url) + done: (url) -> + @trigger('done', url) diff --git a/app/assets/javascripts/controllers/scrolls.js.coffee b/app/assets/javascripts/controllers/scrolls.js.coffee index cf85332e..cd05924a 100644 --- a/app/assets/javascripts/controllers/scrolls.js.coffee +++ b/app/assets/javascripts/controllers/scrolls.js.coffee @@ -1,20 +1,20 @@ class Pettanr.ScrollsController extends Pettanr.AppController index: () -> - @trigger('retitle', @params) + @trigger('title', @params) @filer_list() by_author: () -> - @trigger('retitle', @params) + @trigger('title', @params) @filer_list() by_panel: () -> - @trigger('retitle', @params) + @trigger('title', @params) @filer_list() show_html: () -> @item.fetch({cache: true}).done => - @trigger('retitle', @params, @item.get('title')) + @trigger('title', @params, @item.get('title')) show = new Pettanr.Views.Scroll.Show({ item: @item, operators: @operators @@ -34,7 +34,7 @@ class Pettanr.ScrollsController extends Pettanr.AppController @set_play() @item.fetch({cache: true}).done => @list.open(() => - @trigger('retitle', @params, @item.get('title')) + @trigger('title', @params, @item.get('title')) show = new Pettanr.Views.Scroll.Play({ item: @item, list: @list, @@ -45,31 +45,31 @@ class Pettanr.ScrollsController extends Pettanr.AppController ) new: () -> - @trigger('retitle', @params) + @trigger('title', @params) @form_new() edit: () -> - @trigger('retitle', @params) + @trigger('title', @params) @form_edit() - create: (form) -> - form.item.overwrite(@operators) - if form.save() - @trigger('redirect', form.item.show_url()) - else - @not_created() + create: () -> + @form.item.overwrite(@operators) + @listenTo(@form, 'success', @post_success) + @listenTo(@form, 'fail', @post_fail) + @form.save() - update: (form) -> - form.item.overwrite(@operators) - if form.save() - @trigger('redirect', form.item.show_url()) - else - @not_updated() + update: () -> + @form.item.overwrite(@operators) + @listenTo(@form, 'success', @post_success) + @listenTo(@form, 'fail', @post_fail) + @form.save() destroy: () -> - @set_model() - @item = @my_model_class.edit(params['id'], @operators) - @render_destroy('/home/' + @item.path_name()) + @set_show() + @item.fetch({cache: true}).done => + @listenTo(@item, 'destroy:success', @destroy_success) + @listenTo(@item, 'destroy:fail', @destroy_fail) + @item.destroy() redirected: (view) -> @trigger('ready', view) diff --git a/app/assets/javascripts/controllers/users.js.coffee b/app/assets/javascripts/controllers/users.js.coffee index 6f3369a6..5f288d1f 100644 --- a/app/assets/javascripts/controllers/users.js.coffee +++ b/app/assets/javascripts/controllers/users.js.coffee @@ -1,17 +1,20 @@ class Pettanr.UsersController extends Pettanr.AppController - # receive user authoring form data as post - #sign_in: (attr) -> - # try getting current user test: () -> - @user = new Pettanr.User.Session() + @user = new Pettanr.User.Session() # ignore @form @listenTo(@user, 'sign_in:success', @sign_in_success) @listenTo(@user, 'sign_in:fail', @sign_in_fail) @user.save({}) + sign_in: () -> + # form is Pettanr.User.Session + @listenTo(@form, 'sign_in:success', @sign_in_success) + @listenTo(@form, 'sign_in:fail', @sign_in_fail) + @form.save({}) + sign_out: () -> - @user = new Pettanr.User.Session() + @user = new Pettanr.User.Session() # ignore @form @listenTo(@user, 'sign_out:success', @sign_out_success) @listenTo(@user, 'sign_out:fail', @sign_out_fail) @user.destroy() @@ -28,20 +31,19 @@ class Pettanr.UsersController extends Pettanr.AppController view.render() @trigger('ready', view) - guest: () -> - view = new Pettanr.Views.User.Guest({}) - view.render() - @trigger('ready', view) - sign_in_success: (user, response) -> - @trigger('sign_in:success', user, response) + @trigger('success', user, response) + @trigger('sign_in', user) + @trigger('redirect', 'folders/root') sign_in_fail: (user, response) -> - @trigger('sign_in:fail', user, response) + @trigger('fail', response) sign_out_success: (user, response) -> - @trigger('sign_out:success', user, response) + @trigger('success', user, response) + @trigger('sign_out') + @trigger('redirect', 'user_sessions/new') sign_out_fail: (user, response) -> - @trigger('sign_out:fail', user, response) + @trigger('fail', response) diff --git a/app/assets/javascripts/locmare/filer.js.coffee b/app/assets/javascripts/locmare/filer.js.coffee index 382f8d50..eb65acda 100644 --- a/app/assets/javascripts/locmare/filer.js.coffee +++ b/app/assets/javascripts/locmare/filer.js.coffee @@ -14,8 +14,9 @@ class Locmare.Filer extends Backbone.View @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 + @listenTo(@body, 'http_get', @http_get) + @listenTo(@body, 'http_post', @http_post) + @listenTo(@pager, 'http_get', @http_get) if @pager @render() render: () -> @@ -37,7 +38,7 @@ class Locmare.Filer extends Backbone.View click_header: (url) -> @trigger('click:header', url) - @trigger('navigate', url) + @http_get(url) click_symbol: (item_view) -> @trigger('click:symbol', item_view) @@ -48,8 +49,11 @@ class Locmare.Filer extends Backbone.View click_prof: (item_view) -> @trigger('click:prof', item_view) - navigate: (url) -> - @trigger('navigate', url) + http_get: (url) -> + @trigger('http_get', url) + + http_post: (url) -> + @trigger('http_post', url) class Locmare.FilerModule diff --git a/app/assets/javascripts/locmare/filer/body.js.coffee b/app/assets/javascripts/locmare/filer/body.js.coffee index 41a956cd..b293fcbb 100644 --- a/app/assets/javascripts/locmare/filer/body.js.coffee +++ b/app/assets/javascripts/locmare/filer/body.js.coffee @@ -7,7 +7,8 @@ class Locmare.FilerModule.Body extends Backbone.View @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) + @listenTo(@file_body, 'http_get', @http_get) + @listenTo(@file_body, 'http_post', @http_post) render: () -> this.$el.append(@file_header.render().el) @@ -37,8 +38,11 @@ class Locmare.FilerModule.Body extends Backbone.View click_symbol: (symbol_view) -> @trigger('click:symbol', symbol_view) - navigate: (url) -> - @trigger('navigate', url) + http_get: (url) -> + @trigger('http_get', url) + + http_post: (url) -> + @trigger('http_post', 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 47d6b451..5f5643c3 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body.js.coffee @@ -8,7 +8,8 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View fi = @file_item_class() file_item_view = new fi({'file_body': this, 'item': item}) @listenTo(file_item_view, 'click:symbol', @click_symbol) - @listenTo(file_item_view, 'navigate', @navigate) + @listenTo(file_item_view, 'http_get', @http_get) + @listenTo(file_item_view, 'http_post', @http_post) file_item_view @render() @@ -39,7 +40,10 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View click_symbol: (symbol_view) -> @trigger('click:symbol', symbol_view) - navigate: (url) -> - @trigger('navigate', url) + http_get: (url) -> + @trigger('http_get', url) + + http_post: (url) -> + @trigger('http_post', 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 5b68b3e3..9fd97eaa 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 @@ -14,11 +14,12 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi @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) + @listenTo(@symbol, 'http_get', @http_get) + @listenTo(@caption, 'http_get', @http_get) + @listenTo(@summary, 'http_get', @http_get) + @listenTo(@icon, 'http_get', @http_get) + @listenTo(@edit, 'http_get', @http_get) + @listenTo(@edit, 'http_post', @http_post) render: () -> if @symbol.is_visible() @@ -58,10 +59,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.Vi click_prof: (url) -> @trigger('click:prof', this) - @trigger('navigate', url) + @trigger('http_get', url) - navigate: (url) -> - @trigger('navigate', url) + http_get: (url) -> + @trigger('http_get', url) + + http_post: (url) -> + @trigger('http_post', url) class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule 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 5b1f9207..6b65a8cd 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 @@ -26,7 +26,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo click: () -> @trigger('click:caption') - @trigger('navigate', @link.url()) + @trigger('http_get', @link.url()) false mdl: () -> 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 e50865bf..492becaf 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 @@ -31,5 +31,5 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum 'home/configure' click_edit: () -> - @trigger('navigate', @edit_url()) + @trigger('http_get', @edit_url()) 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 e7164d5e..b770ffcb 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 @@ -41,8 +41,9 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum @image_dir() + 'remove.png' click_edit: () -> - @trigger('navigate', @item.edit_url()) + @trigger('http_get', @item.edit_url()) click_remove: () -> - @trigger('navigate', @item.destroy_url()) + if confirm('remove?') + @trigger('http_post', @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 2cff29c0..9cbfb340 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 @@ -8,13 +8,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum @view = new template_class(options) render: () -> - @listenTo(@view, 'navigate', @navigate) + @listenTo(@view, 'http_get', @http_get) this.$el.html(@view.render().el) this template_file_name: () -> @my_manifest.template_name - navigate: (url) -> - @trigger('navigate', url) + http_get: (url) -> + @trigger('http_get', url) 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 9148ff0b..4f1ed3f3 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,10 +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) + @listenTo(summary, 'http_get', @http_get) this.$el.html(summary.el) this - navigate: (url) -> - @trigger('navigate', url) + http_get: (url) -> + @trigger('http_get', url) 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 ba2d1fe0..0c700e75 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 @@ -25,7 +25,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol click: () -> @trigger('click:symbol') - @trigger('navigate', @link.url()) + @trigger('http_get', @link.url()) false mdl: () -> diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index 66c03519..33bc7c21 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -148,21 +148,29 @@ class Locmare.Form extends Locmare.FormBase _.each @fields, (field) => @item.set(field.field_name, field.val()) @item.unset('id') # isNew use flag that id attr set - @trigger('post', this) + @trigger('http_post', @item.create_url(), this) return false put: () -> _.each @fields, (field) => @item.set(field.field_name, field.val()) - @trigger('put', this) + @trigger('http_post', @item.update_url(), this) return false save: (attrs = null, options = null) -> + @listenTo(@item, 'save:success', @success) + @listenTo(@item, 'save:fail', @fail) if attrs @item.save(attrs, options) else @item.save() + success: (model, response) -> + @trigger('success', model, response) + + fail: (model, response) -> + @trigger('fail', response) + valid: () -> window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true) return false diff --git a/app/assets/javascripts/manifest/controller/action/base.js.coffee b/app/assets/javascripts/manifest/controller/action/base.js.coffee index f5d74b7d..5179037e 100644 --- a/app/assets/javascripts/manifest/controller/action/base.js.coffee +++ b/app/assets/javascripts/manifest/controller/action/base.js.coffee @@ -44,7 +44,7 @@ class Manifest.ControllerModule.ActionModule.Base extends ManifestBase.TypeNameA encode_url: (action_name, params) -> controller_name = @path_name() c = controller_name - a = if action_name == 'index' or action_name == 'show' or action_name == 'destroy' + a = if action_name == 'index' or action_name == 'show' # or action_name == 'destroy' # router does not detect delete method action '' else '/' + action_name diff --git a/app/assets/javascripts/models/user.js.coffee b/app/assets/javascripts/models/user.js.coffee index 7d955186..78b27ccb 100644 --- a/app/assets/javascripts/models/user.js.coffee +++ b/app/assets/javascripts/models/user.js.coffee @@ -16,6 +16,9 @@ class Pettanr.User extends Backbone.Model class Pettanr.User.Session extends Pettanr.User + sign_in: () -> + @save({}) + save: (model_attr) -> @url = '/users/sign_in' super(model_attr, { diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index 477ad94c..bce93d94 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -160,12 +160,34 @@ class Peta.Item extends Backbone.Model prof_url: () -> Pettanr.url(@table_name(), 'show', {id: @get('id'), format: 'prof'}) + create_url: () -> + Pettanr.url(@table_name(), 'create', {}) + edit_url: () -> Pettanr.url(@table_name(), 'edit', {id: @get('id')}) + update_url: () -> + Pettanr.url(@table_name(), 'update', {id: @get('id')}) + destroy_url: () -> Pettanr.url(@table_name(), 'destroy', {id: @get('id')}) + save: (model_attr) -> + super(model_attr || @attributes, { + success: (model, response, options) => + @trigger('save:success', model, response) + error: (model, response, options) => + @trigger('save:fail', model, response) + }) + + destroy: () -> + super({ + success: (model, response, options) => + @trigger('destroy:success', model, response) + error: (model, response, options) => + @trigger('destroy:fail', model, response) + }) + is_editize: () -> @editor diff --git a/app/assets/javascripts/pettanr.js.coffee b/app/assets/javascripts/pettanr.js.coffee index df7d50dd..93d72de9 100644 --- a/app/assets/javascripts/pettanr.js.coffee +++ b/app/assets/javascripts/pettanr.js.coffee @@ -62,11 +62,16 @@ class Pettanr a.join('; ') @url: (controller_name, action_name, params) -> - controller = Manifest.manifest().controllers[controller_name] - action = controller.actions[action_name] - action.url(params) + if controller = Manifest.manifest().controllers[controller_name] + # convert from manifest + action = controller.actions[action_name] + action.url(params) + else + # has no manifest + controller_name + '/' + action_name @params_to_url: (params) -> + return '' if params['controller'] == 'folders' and params['action'] == 'root' @url(params['controller'], params['action'], params) @is_sns: () -> diff --git a/app/assets/javascripts/pettanr/action_filter.js.coffee b/app/assets/javascripts/pettanr/action_filter.js.coffee index 5326adb1..1b2cac42 100644 --- a/app/assets/javascripts/pettanr/action_filter.js.coffee +++ b/app/assets/javascripts/pettanr/action_filter.js.coffee @@ -1,7 +1,15 @@ class Pettanr.ActionFilter + @suply_default: (reader, resource_reader, user, author) -> + { + reader: _.union(default_reader_filters, reader), + resource_reader: _.union(default_resource_reader_filters, resource_reader), + user: _.union(default_user_filters, user), + author: _.union(default_author_filters, author) + } + @sns_filters: () -> - default_reader_filters = ['ndex', 'show'] + default_reader_filters = ['index', 'show'] default_resource_reader_filters = [] default_user_filters = ['new', 'create', 'edit', 'update', 'destroy'] default_author_filters = ['new', 'create', 'edit', 'update', 'destroy'] @@ -18,6 +26,60 @@ class Pettanr.ActionFilter user: _.union(default_user_filters, []), author: _.union(default_author_filters, []) }, + scroll_panels: { + reader: _.union(default_reader_filters, ['by_panel', 'by_scroll', 'by_author']), + resource_reader: _.union(default_resource_reader_filters, []), + user: _.union(default_user_filters, []), + author: _.union(default_author_filters, []) + }, + comics: { + }, + comic_stories: { + }, + stories: { + }, + story_sheets: { + }, + sheets: { + }, + sheet_panels: { + }, + panels: { + }, + panel_pictures: { + }, + speech_balloons: { + }, + speeches: { + }, + balloons: { + }, + ground_pictures: { + }, + ground_colors: { + }, + original_pictures: { + }, + pictures: { + }, + resource_pictures: { + }, + speech_balloon_templates: { + }, + writing_formats: { + }, + license_groups: { + }, + licenses: { + }, + authors: { + }, + artists: { + }, + system_pictures: { + }, + home: { + }, } @blog_filters: () -> diff --git a/app/assets/javascripts/pettanr/proxy.js.coffee b/app/assets/javascripts/pettanr/proxy.js.coffee new file mode 100644 index 00000000..f9f64659 --- /dev/null +++ b/app/assets/javascripts/pettanr/proxy.js.coffee @@ -0,0 +1,64 @@ +class Pettanr.Proxy + + constructor: (options) -> + @operators = options.operators + _.extend(this, Backbone.Events) + + local_router: (parsed_callback) -> + local_router = new Pettanr.LocalRouter({operators: @operators}) + @listenTo(local_router, 'go', parsed_callback) + @listenTo(local_router, 'deny', @deny) + @listenTo(local_router, 'cancel', @cancel) + local_router + + http_get: (url, form) -> + @local_router(@get).navigate(url, form) + + get: (params, form, options) -> + controller = Pettanr.AppController.new2(params, form, @operators) + @listenTo(controller, 'ready', @ready) + @listenTo(controller, 'title', @title) + action_name = params['action'] + controller[action_name]() + @trigger('done', params) + + ready: (view) -> + @trigger('ready', view) + + title: (params, str) -> + @trigger('title', params, str) + + deny: (params, form, safe_url) -> + @trigger('deny', params, form, safe_url) + + cancel: () -> + @trigger('cancel') + + http_post: (url, form) -> + @local_router(@post).navigate(url, form) + + post: (params, form) -> + controller = Pettanr.AppController.new2(params, form, @operators) + @listenTo(controller, 'success', @success) + @listenTo(controller, 'fail', @fail) + @listenTo(controller, 'redirect', @redirect) + @listenTo(controller, 'sign_in', @sign_in) + @listenTo(controller, 'sign_out', @sign_out) + action_name = params['action'] + controller[action_name]() + + success: (model, response) -> + @trigger('success', model, response) + + fail: (response) -> + @trigger('fail', response) + + redirect: (new_url) -> + @trigger('redirect', new_url) + + sign_in: (user) -> + @trigger('sign_in', user) + + sign_out: () -> + @trigger('sign_out') + diff --git a/app/assets/javascripts/routes.js.coffee b/app/assets/javascripts/routes.js.coffee index b4e270db..22f251ac 100644 --- a/app/assets/javascripts/routes.js.coffee +++ b/app/assets/javascripts/routes.js.coffee @@ -14,6 +14,7 @@ class Pettanr.Router extends Backbone.Router initialize: (options) -> super() + _.extend(this, Backbone.Events) @operators = options.operators parse_query_string: (query_string) -> @@ -36,8 +37,8 @@ class Pettanr.Router extends Backbone.Router [ {route: '', callback: 'home'}, {route: 'top/:action', callback: 'top_a'}, - {route: 'users/:action', callback: 'users_a'}, - {route: 'user_sessions/:action', callback: 'user_sessions_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'}, {route: ':controller/:id/:action', callback: 'c_i_a'}, {route: ':controller/:id?*query_string', callback: 'c_i'}, @@ -62,10 +63,50 @@ class Pettanr.Router extends Backbone.Router else {} + filters: () -> + if Pettanr.is_sns() + Pettanr.ActionFilter.sns_filters() + else + Pettanr.ActionFilter.blog_filters() + + my_filters: (role, params) -> + f = @filters() + c = f[params['controller']] || {} + r = c[role] + r + + # return false if allow + # return true if deny + authenticate: (role, params) -> + n = 'is_' + role + if not @operators[n]() # ex: operators.is_user() + filter = @my_filters(role, params) + if Pettanr.before_filter(params['action'], filter) + return true + false + + # access block + # return sign in form if invalid url + # return null if url is valid + block: (params) -> + return @guest_url() if @authenticate('reader', params) or @authenticate('resource_reader', params) or @authenticate('user', params) + return @new_author_url() if @authenticate('author', params) + return @new_artist_url() if @authenticate('artist', params) + null + + guest_url: () -> + 'user_seeeions/new' + + new_author_url: () -> + 'authors/new' + + new_artist_url: () -> + 'artists/new' + # render App(render:all) home: () -> params = @home_params() - @trigger('fire', params) + @trigger('go', params) home_params: () -> params = {} @@ -75,9 +116,12 @@ class Pettanr.Router extends Backbone.Router # controller/id/action case # ex) scrolls/3/edit - c_i_a: (controller, id, action, query_string) -> + c_i_a: (controller, id, action, query_string, form) -> params = @c_i_a_params(controller, id, action, query_string) - @trigger('fire', params) + if safe_url = @block(params) + @trigger('deny', params, form, safe_url) + else + @trigger('go', params, form) c_i_a_params: (controller, id, action, query_string) -> params = @parse_query_string(query_string) @@ -101,9 +145,12 @@ class Pettanr.Router extends Backbone.Router # controller and id case # ex) scrolls/3 - c_i: (controller, id, query_string) -> + c_i: (controller, id, query_string, form) -> params = @c_i_params(controller, id, query_string) - @trigger('fire', params) + if safe_url = @block(params) + @trigger('deny', params, form, safe_url) + else + @trigger('go', params, form) c_i_params: (controller, id, query_string) -> params = @parse_query_string(query_string) @@ -125,9 +172,12 @@ class Pettanr.Router extends Backbone.Router # controller only case # ex) scrolls - c: (controller, query_string) -> + c: (controller, query_string, form) -> params = @c_params(controller, query_string) - @trigger('fire', params) + if safe_url = @block(params) + @trigger('deny', params, form, safe_url) + else + @trigger('go', params, form) c_params: (controller, query_string) -> params = @parse_query_string(query_string) @@ -136,9 +186,12 @@ class Pettanr.Router extends Backbone.Router params['action'] = 'index' params - top_a: (action, query_string) -> + top_a: (action, query_string, form) -> params = @users_a_params(action, query_string) - @trigger('fire', params) + if safe_url = @block(params) + @trigger('deny', params, safe_url) + else + @trigger('go', params, form) top_a_params: (action, query_string) -> params = @parse_query_string(query_string) @@ -147,9 +200,12 @@ class Pettanr.Router extends Backbone.Router params['action'] = action params - user_sessions_a: (action, query_string) -> + user_sessions_a: (action, query_string, form) -> params = @user_sessions_a_params(action, query_string) - @trigger('fire', params) + if safe_url = @block(params) + @trigger('deny', params, safe_url) + else + @trigger('go', params, form) user_sessions_a_params: (action, query_string) -> params = @parse_query_string(query_string) @@ -158,9 +214,12 @@ class Pettanr.Router extends Backbone.Router params['action'] = action params - users_a: (action, query_string) -> + users_a: (action, query_string, form) -> params = @users_a_params(action, query_string) - @trigger('fire', params) + if safe_url = @block(params) + @trigger('deny', params, safe_url) + else + @trigger('go', params, form) users_a_params: (action, query_string) -> params = @parse_query_string(query_string) @@ -168,91 +227,24 @@ class Pettanr.Router extends Backbone.Router params['format'] = 'html' params['action'] = action params - - + class Pettanr.GlobalRouter extends Pettanr.Router - initialize: () -> - _.extend(this, Backbone.Events) + initialize: (options) -> + super(options) _.each @peta_routes(), (r) => @route(r.route, r.callback) - navigate: (fragment, options) -> - if Pettanr.History.lock_url - if confirm('leave? edit data unsaved') - Pettanr.History.lock_url = null - else - return false - super(fragment, options) - class Pettanr.LocalRouter extends Pettanr.Router - initialize: () -> - _.extend(this, Backbone.Events) + initialize: (options) -> + super(options) # selfish navigate - navigate: (url) -> + navigate: (url, form) -> if route = @find_route(url) args = @_extractParameters(route.regex, url) + args.push(form) n = route.callback # callback function name by string this[n].apply(this, args) # call to c_i_a, c_i, c -class Pettanr.RouterFilter - - filters: () -> - if Pettanr.is_sns() - Pettanr.ActionFilter.sns_filters() - else - Pettanr.ActionFilter.blog_filters() - - my_filters: (role, params) -> - f = @filters() - c = f[params['controller']] || {} - r = c[role] - r - - # return false if allow - # return true if deny - authenticate: (role, params, operators) -> - n = 'is_' + role - if not operators[n]() # ex: operators.is_user() - filter = @my_filters(role, params) - if Pettanr.before_filter(params['action'], filter) - return true - false - -class Pettanr.HeaderRouter extends Pettanr.LocalRouter - - initialize: () -> - super() - _.extend(this, Pettanr.RouterFilter) - -class Pettanr.BodyRouter extends Pettanr.GlobalRouter - - initialize: () -> - super() - _.extend(this, Pettanr.RouterFilter.prototype) - - navigate: (url, options, operators) -> - safe_url = @block(url, operators) || url - super(safe_url, options) - - # access block - # return sign in form if invalid url - # return null if url is valid - block: (url, operators) -> - params = @url_to_params(url) - return @guest_url() if @authenticate('reader', params, operators) or @authenticate('resource_reader', params, operators) or @authenticate('user', params, operators) - return @new_author_url() if @authenticate('author', params, operators) - return @new_artist_url() if @authenticate('artist', params, operators) - null - - guest_url: () -> - 'user_seeeions/new' - - new_author_url: () -> - 'authors/new' - - new_artist_url: () -> - 'artists/new' - diff --git a/app/assets/javascripts/views/balloons/summary.js.coffee b/app/assets/javascripts/views/balloons/summary.js.coffee index 5027f4e3..7df707cd 100644 --- a/app/assets/javascripts/views/balloons/summary.js.coffee +++ b/app/assets/javascripts/views/balloons/summary.js.coffee @@ -25,8 +25,8 @@ class Pettanr.Views.Balloon.Summary extends Pettanr.Views.Common.Summary this panel_click: () -> - @trigger('navigate', @panel_icon.url()) + @trigger('http_get', @panel_icon.url()) author_click: () -> - @trigger('navigate', @author_icon_with_caption.url()) + @trigger('http_get', @author_icon_with_caption.url()) diff --git a/app/assets/javascripts/views/common.js.coffee b/app/assets/javascripts/views/common.js.coffee index 41bc2f68..ca22d5e7 100644 --- a/app/assets/javascripts/views/common.js.coffee +++ b/app/assets/javascripts/views/common.js.coffee @@ -169,7 +169,7 @@ class Pettanr.Views.Common.Binder.Summary extends Pettanr.Views.Common.Summary this author_click: () -> - @trigger('navigate', @author_icon_with_caption.url()) + @trigger('http_get', @author_icon_with_caption.url()) class Pettanr.Views.Common.Leaf class Pettanr.Views.Common.Leaf.Summary extends Pettanr.Views.Common.Summary @@ -224,14 +224,14 @@ class Pettanr.Views.Common.Leaf.Summary extends Pettanr.Views.Common.Summary this binder_click: () -> - @trigger('navigate', @binder_icon.url()) + @trigger('http_get', @binder_icon.url()) destination_click: () -> - @trigger('navigate', @destination_icon.url()) + @trigger('http_get', @destination_icon.url()) binder_author_click: () -> - @trigger('navigate', @binder_author_icon_with_caption.url()) + @trigger('http_get', @binder_author_icon_with_caption.url()) destination_author_click: () -> - @trigger('navigate', @destination_author_icon_with_caption.url()) + @trigger('http_get', @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 992544cf..5fe3ea10 100644 --- a/app/assets/javascripts/views/ground_colors/summary.js.coffee +++ b/app/assets/javascripts/views/ground_colors/summary.js.coffee @@ -23,8 +23,8 @@ class Pettanr.Views.GroundColor.Summary extends Pettanr.Views.Common.Summary this panel_click: () -> - @trigger('navigate', @panel_icon.url()) + @trigger('http_get', @panel_icon.url()) author_click: () -> - @trigger('navigate', @author_icon_with_caption.url()) + @trigger('http_get', @author_icon_with_caption.url()) diff --git a/app/assets/javascripts/views/ground_pictures/summary.js.coffee b/app/assets/javascripts/views/ground_pictures/summary.js.coffee index 0844f859..a952a7b2 100644 --- a/app/assets/javascripts/views/ground_pictures/summary.js.coffee +++ b/app/assets/javascripts/views/ground_pictures/summary.js.coffee @@ -22,5 +22,5 @@ class Pettanr.Views.GroundPicture.Summary extends Pettanr.Views.Common.Summary this panel_click: () -> - @trigger('navigate', @panel_icon.url()) + @trigger('http_get', @panel_icon.url()) diff --git a/app/assets/javascripts/views/layout.js.coffee b/app/assets/javascripts/views/layout.js.coffee index 288b135b..8de257c2 100644 --- a/app/assets/javascripts/views/layout.js.coffee +++ b/app/assets/javascripts/views/layout.js.coffee @@ -1,57 +1,16 @@ -class Pettanr.ViewPicker extends Backbone.View - initialize: (options) -> - @operators = options.operators - _.extend(this, Backbone.Events) - _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype) - @local_router = new Pettanr.LocalRouter() - @listenTo(@local_router, 'fire', @fire) - - navigate: (url) -> - @local_router.navigate(url, true) - - fire: (params) -> - controller = Pettanr.AppController.new2(params, @operators) - @add_listener(controller, this) - action_name = params['action'] - controller[action_name]() - - retitle: (params, str = null) -> - @trigger('retitle', params, str = null) - - refresh: (view) -> - @trigger('ready', view) - - redirect_to: (url) -> - @trigger('redirect', url) - class Pettanr.Views.Layout -class Pettanr.Views.Layout.ControllerManager - - add_listener: (controller, self) -> - self.listenTo(controller, 'ready', self.refresh) - self.listenTo(controller, 'retitle', self.retitle) - self.listenTo(controller, 'block', self.block) - self.listenTo(controller, 'redirect', self.redirect_to) - class Pettanr.Views.Layout.Base extends Backbone.View - tagName: 'div' - className: 'layout-base' + +class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base + className: 'layout-sns' initialize: (options) -> - _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype) @operators = new Pettanr.Operator({}) - # router for refresh body - @global_router = new Pettanr.BodyRouter() - # router for refresh body. but not replace url - @local_router = new Pettanr.LocalRouter() - # router for refresh header - @header_router = new Pettanr.LocalRouter() - @listenTo(@global_router, 'fire', @fire_for_body) - @listenTo(@local_router, 'fire', @fire_for_body) - @listenTo(@header_router, 'fire', @fire_for_header) - @header = new (@header_class())({parent: this}) - @body = new (@body_class())({parent: this}) - @footer = new (@footer_class())({parent: this}) + @global_router = new Pettanr.GlobalRouter({operators: @operators}) + @listenTo(@global_router, 'go', @body_get) + @header = new Pettanr.Views.Layout.Sns.Header({parent: this}) + @body = new Pettanr.Views.Layout.Sns.Body({parent: this}) + @footer = new Pettanr.Views.Layout.Sns.Footer({parent: this}) render: () -> this.$el.html('') @@ -60,29 +19,6 @@ class Pettanr.Views.Layout.Base extends Backbone.View this.$el.append(@footer.render().el) this - fire: (params) -> - controller = Pettanr.AppController.new2(params, @operators) - @add_listener(controller, this) - action_name = params['action'] - controller[action_name]() - - start: () -> - # check current user signed in? - # callback sign_in_success from users controller if signed in - @test() - - test: () -> - @user = new Pettanr.User.Session() - @listenTo(@user, 'sign_in:success', @sign_in_success) - @listenTo(@user, 'sign_in:fail', @sign_in_fail) - @user.save({}) - - fire_for_header: (params) -> - @fire(params, @refresh_header) - - fire_for_body: (params) -> - @fire(params) - init_operators: (user) -> author = new Pettanr.Author(user.get('author')) if user.get('author') artist = new Pettanr.Artist(user.get('artist')) if user.get('artist') @@ -91,15 +27,7 @@ class Pettanr.Views.Layout.Base extends Backbone.View author: author, artist: artist }) - - sign_in: () -> - false - - sign_in_success: (user, response) -> - @init_operators(user) - - sign_in_fail: (user, response) -> - false + @global_router.operators = @operators reset_operators: () -> @operators.init({ @@ -107,121 +35,98 @@ class Pettanr.Views.Layout.Base extends Backbone.View author: null, artist: null }) + @global_router.operators = @operators - sign_out: () -> - false + start: () -> + # check current user signed in? + proxy = new Pettanr.Proxy({operators: @operators}) + @listenTo(proxy, 'redirect', @test_redirect) + # @listenTo(proxy, 'success', @test_ok) + @listenTo(proxy, 'fail', @test_ng) + @listenTo(proxy, 'sign_in', @sign_in) + proxy.http_post('users/test') + + test_ok: (user, response) -> + + + test_ng: (response) -> + @head_http_get('users/guest') + @body_http_get('user_sessions/new') + + test_redirect: (url) -> + proxy = @getter_proxy() + @stopListening(proxy, 'done') # ignore global routing + proxy.http_get(url, null) + + sign_in: (user) -> + @init_operators(user) + @head_http_get('users/account') - sign_out_success: (user, response) -> + sign_out: () -> @reset_operators() + @head_http_get('users/guest') - sign_out_fail: (user, response) -> - false + head_http_get: (url) -> + proxy = new Pettanr.Proxy({operators: @operators}) + @listenTo(proxy, 'ready', @head_ready) + proxy.http_get(url, null) - retitle: (params, str = null) -> - t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title') - site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption) - $(document).attr('title', t + ' - ' + site_caption) - - refresh_header: (view) -> + head_ready: (view) -> + @listenTo(view, 'http_get', @body_http_get) + @listenTo(view, 'http_post', @body_http_post) @header.refresh(view) - refresh_body: (view) -> - @body.refresh(view) - - refresh: (view) -> - @body.refresh(view) - - block: () -> - true + getter_proxy: () -> + proxy = new Pettanr.Proxy({operators: @operators}) + @listenTo(proxy, 'ready', @body_ready) + @listenTo(proxy, 'title', @body_title) + @listenTo(proxy, 'done', @body_done) + proxy - redirect_to: (url, return_params, refresh_function) -> - redirect_params = Pettanr.LocalRouter.url_to_params(redirect_url) - @fire(redirect_params, refresh_function) + body_http_get: (url, form) -> + @getter_proxy().http_get(url, form) - header_class: () -> - null + body_get: (params, form) -> + @getter_proxy().get(params, form) - body_class: () -> - null + body_ready: (view) -> + @listenTo(view, 'http_get', @body_http_get) + @listenTo(view, 'http_post', @body_http_post) + @body.refresh(view) - footer_class: () -> - null + body_done: (params) -> + url = Pettanr.params_to_url(params) + @global_router.navigate(url, {trigger: false}) -class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base - className: 'layout-sns' + body_title: (params, str = null) -> + t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title') + site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption) + $(document).attr('title', t + ' - ' + site_caption) - initialize: (options) -> - super(options) - @listenTo(@header, 'navigate', @header_navigate) - @listenTo(@header, 'sign_in', @sign_in) - @listenTo(@header, 'sign_out', @sign_out) - @listenTo(@body, 'navigate', @body_navigate) - @listenTo(@body, 'retitle', @retitle) - @listenTo(@body, 'sign_in', @sign_in) - @listenTo(@body, 'sign_out', @sign_out) + poster_proxy: () -> + proxy = new Pettanr.Proxy({operators: @operators}) + @listenTo(proxy, 'success', @body_success) + @listenTo(proxy, 'fail', @body_fail) + @listenTo(proxy, 'redirect', @body_redirect) + @listenTo(proxy, 'sign_in', @sign_in) + @listenTo(proxy, 'sign_out', @sign_out) + proxy - start: () -> - # initial page - super() - - sign_in: (attr) -> - @user = new Pettanr.User.Session(attr) - @listenTo(@user, 'sign_in:success', @sign_in_success) - @listenTo(@user, 'sign_in:fail', @sign_in_fail) - @user.save({}) - - sign_in_success: (user, response) -> - super(user, response) - # navigate users/account - # callback from fire to refresh_header - @header.fire({controller: 'users', action: 'account'}) - # navigate home - # callback from fire to refresh_body - @body.fire({controller: 'folders', action: 'root'}) + body_http_post: (url, form) -> + @poster_proxy().http_post(url, form) - sign_in_fail: (user, response) -> - super(user, response) - @header.fire({controller: 'users', action: 'guest'}) - @body.fire({controller: 'user_sessions', action: 'new'}) - - sign_out: () -> - @user = new Pettanr.User.Session() - @listenTo(@user, 'sign_out:success', @sign_out_success) - @listenTo(@user, 'sign_out:fail', @sign_out_fail) - @user.destroy() - - sign_out_success: (user, response) -> - super(user, response) - @global_router.navigate('', {trigger: false}, @operators) - ## navigate users/guest - ## callback from fire to refresh_header - @header.fire({controller: 'users', action: 'guest'}) - ## navigate sign in form - ## callback from fire to refresh_body - @body.fire({controller: 'user_sessions', action: 'new'}) - - sign_out_fail: (user, response) -> - super(user, response) - - block: () -> - super() - @header_router.navigate('users/guest') - @body.fire({controller: 'user_sessions', action: 'new'}) - - header_navigate: (url) -> - @global_router.navigate(url, {trigger: true}, @operators) - - body_navigate: (url) -> - @global_router.navigate(url, {trigger: false}, @operators) + body_post: (params, form) -> + @poster_proxy().post(params, form) - header_class: () -> - Pettanr.Views.Layout.Sns.Header + body_success: (url) -> + - body_class: () -> - Pettanr.Views.Layout.Sns.Body + body_fail: (url) -> + - footer_class: () -> - Pettanr.Views.Layout.Sns.Footer + body_redirect: (url) -> + @global_router.navigate(url) + @getter_proxy().http_get(url) class Pettanr.Views.Layout.Blog extends Pettanr.Views.Layout.Base className: 'layout-blog' diff --git a/app/assets/javascripts/views/layouts/sns.js.coffee b/app/assets/javascripts/views/layouts/sns.js.coffee index 2c85923e..7ef2b094 100644 --- a/app/assets/javascripts/views/layouts/sns.js.coffee +++ b/app/assets/javascripts/views/layouts/sns.js.coffee @@ -3,89 +3,28 @@ class Pettanr.Views.Layout.Sns.Header extends Backbone.View id: 'header' initialize: (options) -> - _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype) @parent = options.parent - @local_router = new Pettanr.LocalRouter() - @listenTo(@local_router, 'fire', @fire) render: () -> this.$el.html('') this - fire: (params) -> - controller = Pettanr.AppController.new2(params, @operators()) - @add_listener(controller, this) - action_name = params['action'] - controller[action_name]() - - sign_in: (attr) -> - @trigger('sign_in', attr) - - sign_out: () -> - @trigger('sign_out') - - retitle: (params, str = null) -> - @trigger('retitle', params, str = null) - refresh: (view) -> - @listenTo(view, 'navigate', @navigate) - @listenTo(view, 'sign_in', @sign_in) - @listenTo(view, 'sign_out', @sign_out) - this.$el.html(view.render().el) - - navigate: (url) -> - # header's message replace body - # @local_router.navigate(url, true) - @trigger('navigate', url) - - operators: () -> - @parent.operators + this.$el.html(view.el) class Pettanr.Views.Layout.Sns.Body extends Backbone.View tagName: 'div' id: 'body' initialize: (options) -> - _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype) @parent = options.parent - @local_router = new Pettanr.LocalRouter() - @listenTo(@local_router, 'fire', @fire) render: () -> this.$el.html('') this - fire: (params) -> - controller = Pettanr.AppController.new2(params, @operators()) - @add_listener(controller, this) - action_name = params['action'] - controller[action_name]() - - sign_in: (attr) -> - @trigger('sign_in', attr) - - sign_out: () -> - @trigger('sign_out') - - retitle: (params, str = null) -> - @trigger('retitle', params, str = null) - refresh: (view) -> - @listenTo(view, 'navigate', @navigate) - @listenTo(view, 'post', @post) - @listenTo(view, 'put', @put) - @listenTo(view, 'sign_in', @sign_in) - this.$el.html(view.render().el) - - navigate: (url) -> - @local_router.navigate(url, true) - @trigger('navigate', url) - - redirect_to: (url) -> - @navigate(url) - - operators: () -> - @parent.operators + this.$el.html(view.el) class Pettanr.Views.Layout.Sns.Footer extends Backbone.View tagName: 'div' diff --git a/app/assets/javascripts/views/original_pictures/summary.js.coffee b/app/assets/javascripts/views/original_pictures/summary.js.coffee index 0f35509a..ec165c01 100644 --- a/app/assets/javascripts/views/original_pictures/summary.js.coffee +++ b/app/assets/javascripts/views/original_pictures/summary.js.coffee @@ -30,5 +30,5 @@ class Pettanr.Views.OriginalPicture.Summary extends Pettanr.Views.Common.Summary # in credit resource_picture_click: (resource_picture) -> - @trigger('navigate', resource_picture.show_url()) + @trigger('http_get', 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 6298c366..6a3ebabd 100644 --- a/app/assets/javascripts/views/panel_pictures/summary.js.coffee +++ b/app/assets/javascripts/views/panel_pictures/summary.js.coffee @@ -22,5 +22,5 @@ class Pettanr.Views.PanelPicture.Summary extends Pettanr.Views.Common.Summary this panel_click: () -> - @trigger('navigate', @panel_icon.url()) + @trigger('http_get', @panel_icon.url()) diff --git a/app/assets/javascripts/views/panels/summary.js.coffee b/app/assets/javascripts/views/panels/summary.js.coffee index 33931f47..bcce3bf9 100644 --- a/app/assets/javascripts/views/panels/summary.js.coffee +++ b/app/assets/javascripts/views/panels/summary.js.coffee @@ -26,5 +26,5 @@ class Pettanr.Views.Panel.Summary extends Pettanr.Views.Common.Summary this author_click: () -> - @trigger('navigate', @author_icon_with_caption.url()) + @trigger('http_get', @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 06332e65..f39000aa 100644 --- a/app/assets/javascripts/views/speech_balloons/summary.js.coffee +++ b/app/assets/javascripts/views/speech_balloons/summary.js.coffee @@ -23,8 +23,8 @@ class Pettanr.Views.SpeechBalloon.Summary extends Pettanr.Views.Common.Summary this panel_click: () -> - @trigger('navigate', @panel_icon.url()) + @trigger('http_get', @panel_icon.url()) author_click: () -> - @trigger('navigate', @author_icon_with_caption.url()) + @trigger('http_get', @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 cf106eeb..82f8f5e0 100644 --- a/app/assets/javascripts/views/speeches/summary.js.coffee +++ b/app/assets/javascripts/views/speeches/summary.js.coffee @@ -25,8 +25,8 @@ class Pettanr.Views.Speech.Summary extends Pettanr.Views.Common.Summary this panel_click: () -> - @trigger('navigate', @panel_icon.url()) + @trigger('http_get', @panel_icon.url()) author_click: () -> - @trigger('navigate', @author_icon_with_caption.url()) + @trigger('http_get', @author_icon_with_caption.url()) diff --git a/app/assets/javascripts/views/user_sessions/new.js.coffee b/app/assets/javascripts/views/user_sessions/new.js.coffee index 4a500f02..a765f966 100644 --- a/app/assets/javascripts/views/user_sessions/new.js.coffee +++ b/app/assets/javascripts/views/user_sessions/new.js.coffee @@ -15,6 +15,7 @@ class Pettanr.Views.UserSeeeion.New extends Backbone.View sign_in: () -> m = $('#user_email').val() p = $('#user_password').val() - @trigger('sign_in', {user: {email: m, password: p}}) + @user = new Pettanr.User.Session({user: {email: m, password: p}}) + @trigger('http_post', 'users/sign_in', @user) return false diff --git a/app/assets/javascripts/views/users/account.js.coffee b/app/assets/javascripts/views/users/account.js.coffee index 7502bd5b..419293ab 100644 --- a/app/assets/javascripts/views/users/account.js.coffee +++ b/app/assets/javascripts/views/users/account.js.coffee @@ -30,15 +30,15 @@ class Pettanr.Views.User.Account extends Backbone.View this logo_click: () -> - @trigger('navigate', '') + @trigger('http_get', '') author_click: () -> - @trigger('navigate', @author_view.url()) + @trigger('http_get', @author_view.url()) artist_click: () -> - @trigger('navigate', @artist_view.url()) + @trigger('http_get', @artist_view.url()) sign_out_click: () -> - @trigger('sign_out') + @trigger('http_post', 'users/sign_out') return false diff --git a/app/assets/javascripts/views/users/guest.js.coffee b/app/assets/javascripts/views/users/guest.js.coffee index ca24f799..9c58277b 100644 --- a/app/assets/javascripts/views/users/guest.js.coffee +++ b/app/assets/javascripts/views/users/guest.js.coffee @@ -20,10 +20,10 @@ class Pettanr.Views.User.Guest extends Backbone.View this logo_click: () -> - @trigger('navigate', '') + @trigger('http_get', '') return false sign_in_click: () -> - @trigger('navigate', 'user_sessions/new') + @trigger('http_get', 'user_sessions/new') return false