//= require ./pettanr/pettan_imager
//= require ./pettanr/operator
//= require ./pettanr/action_filter
+//= require ./pettanr/proxy
//= require ./backbone.fetch-cache
//= require main
class Pettanr.AppController\r
\r
- constructor: (@params, @operators) ->\r
+ constructor: (@params, @form, @operators) ->\r
_.extend(this, Backbone.Events)\r
\r
- @new2: (params, operators) ->\r
+ @new2: (params, form, operators) ->\r
c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
- new c(params, operators)\r
- \r
- @fire: (params, operators, refresh_function) ->\r
- controller = Pettanr.AppController.new2(params, operators)\r
- @listener_function(controller, refresh_function)\r
- action_name = params['action']\r
- controller[action_name]()\r
+ new c(params, form, operators)\r
\r
set_model: () ->\r
@my_controller = Manifest.manifest().controllers[@params['controller']]\r
@listenTo(profiler, 'navigate', @navigate)\r
profiler.render()\r
@trigger('ready', profiler)\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
\r
set_new: () ->\r
@set_model()\r
# Backbone.Model has defaults property\r
#@item.supply_default()\r
\r
- set_edit: (save_func) ->\r
+ set_edit: () ->\r
@set_model()\r
@item = new @my_model_class({id: @params['id']})\r
@item.fetch({cache: true}).done =>\r
@item.boosts 'post'\r
- @render_form(save_func)\r
+ @render_form()\r
\r
render_form: () ->\r
@form = Locmare.Form.factory({\r
operators: @operators,\r
action: '/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id'))\r
})\r
- @listenTo(@form, 'post', @create)\r
- @listenTo(@form, 'put', @update)\r
@form.render()\r
@trigger('ready', @form)\r
\r
form_edit: () ->\r
@set_edit()\r
\r
+ post_success: (model, response) ->\r
+ @trigger('redirect', @form.item.show_url())\r
+ @trigger('success', model, response)\r
+ \r
+ post_fail: (model, response) ->\r
+ @trigger('fail', response)\r
+ \r
+ destroy_success: (model, response) ->\r
+ @trigger('redirect', '/home/' + model.path_name())\r
+ @trigger('success', model, response)\r
+ \r
+ destroy_fail: (model, response) ->\r
+ @trigger('fail', response)\r
+ \r
navigate: (url) ->\r
@trigger('navigate', url)\r
\r
class Pettanr.FoldersController extends Pettanr.AppController\r
\r
index: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@filer_list()\r
\r
root: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@set_model()\r
@item = new Pettanr.Folder.Root()\r
@item.fetch({cache: true}).done =>\r
show_html_format: (format) -> \r
\r
children_html: () -> \r
- @trigger('retitle', @params, @item.get('name'))\r
+ @trigger('title', @params, @item.get('name'))\r
collection = new Pettanr.Folder.Children({id: @item.get('id')})\r
collection.fetch({cache: true}).done =>\r
filer = new Locmare.Filer({\r
pager: null, \r
operators: @operators\r
})\r
- @listenTo(filer, 'navigate', @navigate)\r
@trigger('ready', filer)\r
\r
show: () ->\r
@item = new Pettanr.FolderWatch({id: @params['id']})\r
@item.fetch({cache: true}).done () =>\r
if @item.is_remote()\r
- vp = new Pettanr.ViewPicker({operators: @operators})\r
- @listenTo(vp, 'ready', @refresh)\r
- @listenTo(vp, 'retitle', @retitle)\r
- @listenTo(vp, 'redirect', @redirect_to)\r
- vp.navigate(@item.remote_url())\r
+ proxy = new Pettanr.Proxy({operators: @operators})\r
+ @listenTo(proxy, 'ready', @refresh)\r
+ @listenTo(proxy, 'title', @title)\r
+ @listenTo(proxy, 'done', @done)\r
+ proxy.http_get(@item.remote_url())\r
else\r
@children_html()\r
\r
count: () ->\r
\r
new: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@form_new()\r
\r
edit: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@form_edit()\r
\r
# for remote folder\r
refresh: (view) ->\r
@trigger('ready', view)\r
\r
- retitle: (params, str = null) ->\r
- @trigger('retitle', @params, str = null)\r
+ title: (params, str = null) ->\r
+ @trigger('title', @params, str = null)\r
\r
- redirect_to: (url) ->\r
- @trigger('redirect', url)\r
+ done: (url) ->\r
+ @trigger('done', url)\r
\r
class Pettanr.ScrollsController extends Pettanr.AppController\r
\r
index: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@filer_list()\r
\r
by_author: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@filer_list()\r
\r
by_panel: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@filer_list()\r
\r
show_html: () -> \r
@item.fetch({cache: true}).done =>\r
- @trigger('retitle', @params, @item.get('title'))\r
+ @trigger('title', @params, @item.get('title'))\r
show = new Pettanr.Views.Scroll.Show({\r
item: @item,\r
operators: @operators\r
@set_play()\r
@item.fetch({cache: true}).done =>\r
@list.open(() => \r
- @trigger('retitle', @params, @item.get('title'))\r
+ @trigger('title', @params, @item.get('title'))\r
show = new Pettanr.Views.Scroll.Play({\r
item: @item,\r
list: @list,\r
)\r
\r
new: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@form_new()\r
\r
edit: () ->\r
- @trigger('retitle', @params)\r
+ @trigger('title', @params)\r
@form_edit()\r
\r
- create: (form) ->\r
- form.item.overwrite(@operators)\r
- if form.save()\r
- @trigger('redirect', form.item.show_url())\r
- else\r
- @not_created()\r
+ create: () ->\r
+ @form.item.overwrite(@operators)\r
+ @listenTo(@form, 'success', @post_success)\r
+ @listenTo(@form, 'fail', @post_fail)\r
+ @form.save()\r
\r
- update: (form) ->\r
- form.item.overwrite(@operators)\r
- if form.save()\r
- @trigger('redirect', form.item.show_url())\r
- else\r
- @not_updated()\r
+ update: () ->\r
+ @form.item.overwrite(@operators)\r
+ @listenTo(@form, 'success', @post_success)\r
+ @listenTo(@form, 'fail', @post_fail)\r
+ @form.save()\r
\r
destroy: () ->\r
- @set_model()\r
- @item = @my_model_class.edit(params['id'], @operators)\r
- @render_destroy('/home/' + @item.path_name())\r
+ @set_show()\r
+ @item.fetch({cache: true}).done =>\r
+ @listenTo(@item, 'destroy:success', @destroy_success)\r
+ @listenTo(@item, 'destroy:fail', @destroy_fail)\r
+ @item.destroy()\r
\r
redirected: (view) ->\r
@trigger('ready', view)\r
class Pettanr.UsersController extends Pettanr.AppController\r
\r
- # receive user authoring form data as post\r
- #sign_in: (attr) ->\r
- \r
# try getting current user\r
test: () ->\r
- @user = new Pettanr.User.Session()\r
+ @user = new Pettanr.User.Session() # ignore @form\r
@listenTo(@user, 'sign_in:success', @sign_in_success)\r
@listenTo(@user, 'sign_in:fail', @sign_in_fail)\r
@user.save({})\r
\r
+ sign_in: () ->\r
+ # form is Pettanr.User.Session\r
+ @listenTo(@form, 'sign_in:success', @sign_in_success)\r
+ @listenTo(@form, 'sign_in:fail', @sign_in_fail)\r
+ @form.save({})\r
+ \r
sign_out: () ->\r
- @user = new Pettanr.User.Session()\r
+ @user = new Pettanr.User.Session() # ignore @form\r
@listenTo(@user, 'sign_out:success', @sign_out_success)\r
@listenTo(@user, 'sign_out:fail', @sign_out_fail)\r
@user.destroy()\r
view.render()\r
@trigger('ready', view)\r
\r
- guest: () ->\r
- view = new Pettanr.Views.User.Guest({})\r
- view.render()\r
- @trigger('ready', view)\r
- \r
sign_in_success: (user, response) ->\r
- @trigger('sign_in:success', user, response)\r
+ @trigger('success', user, response)\r
+ @trigger('sign_in', user)\r
+ @trigger('redirect', 'folders/root')\r
\r
sign_in_fail: (user, response) ->\r
- @trigger('sign_in:fail', user, response)\r
+ @trigger('fail', response)\r
\r
sign_out_success: (user, response) ->\r
- @trigger('sign_out:success', user, response)\r
+ @trigger('success', user, response)\r
+ @trigger('sign_out')\r
+ @trigger('redirect', 'user_sessions/new')\r
\r
sign_out_fail: (user, response) ->\r
- @trigger('sign_out:fail', user, response)\r
+ @trigger('fail', response)\r
\r
@listenTo(@body, 'click:symbol', @click_symbol)\r
@listenTo(@body, 'click:caption', @click_caption)\r
@listenTo(@body, 'click:prof', @click_prof)\r
- @listenTo(@body, 'navigate', @navigate)\r
- @listenTo(@pager, 'navigate', @navigate) if @pager\r
+ @listenTo(@body, 'http_get', @http_get)\r
+ @listenTo(@body, 'http_post', @http_post)\r
+ @listenTo(@pager, 'http_get', @http_get) if @pager\r
@render()\r
\r
render: () ->\r
\r
click_header: (url) ->\r
@trigger('click:header', url)\r
- @trigger('navigate', url)\r
+ @http_get(url)\r
\r
click_symbol: (item_view) ->\r
@trigger('click:symbol', item_view)\r
click_prof: (item_view) ->\r
@trigger('click:prof', item_view)\r
\r
- navigate: (url) ->\r
- @trigger('navigate', url)\r
+ http_get: (url) ->\r
+ @trigger('http_get', url)\r
+ \r
+ http_post: (url) ->\r
+ @trigger('http_post', url)\r
\r
class Locmare.FilerModule\r
\r
@file_header = new Locmare.FilerModule.BodyModule.FileHeader({'body': this})\r
@file_body = new Locmare.FilerModule.BodyModule.FileBody({'body': this})\r
@listenTo(@file_body, 'click:symbol', @click_symbol)\r
- @listenTo(@file_body, 'navigate', @navigate)\r
+ @listenTo(@file_body, 'http_get', @http_get)\r
+ @listenTo(@file_body, 'http_post', @http_post)\r
\r
render: () ->\r
this.$el.append(@file_header.render().el)\r
click_symbol: (symbol_view) ->\r
@trigger('click:symbol', symbol_view)\r
\r
- navigate: (url) ->\r
- @trigger('navigate', url)\r
+ http_get: (url) ->\r
+ @trigger('http_get', url)\r
+ \r
+ http_post: (url) ->\r
+ @trigger('http_post', url)\r
\r
class Locmare.FilerModule.BodyModule\r
\r
fi = @file_item_class()\r
file_item_view = new fi({'file_body': this, 'item': item})\r
@listenTo(file_item_view, 'click:symbol', @click_symbol)\r
- @listenTo(file_item_view, 'navigate', @navigate)\r
+ @listenTo(file_item_view, 'http_get', @http_get)\r
+ @listenTo(file_item_view, 'http_post', @http_post)\r
file_item_view\r
@render()\r
\r
click_symbol: (symbol_view) ->\r
@trigger('click:symbol', symbol_view)\r
\r
- navigate: (url) ->\r
- @trigger('navigate', url)\r
+ http_get: (url) ->\r
+ @trigger('http_get', url)\r
+ \r
+ http_post: (url) ->\r
+ @trigger('http_post', url)\r
\r
class Locmare.FilerModule.BodyModule.FileBodyModule\r
@listenTo(@symbol, 'click:symbol', @click_symbol)\r
@listenTo(@caption, 'click:caption', @click_caption)\r
@listenTo(@icon, 'click:prof', @click_prof)\r
- @listenTo(@symbol, 'navigate', @navigate)\r
- @listenTo(@caption, 'navigate', @navigate)\r
- @listenTo(@summary, 'navigate', @navigate)\r
- @listenTo(@icon, 'navigate', @navigate)\r
- @listenTo(@edit, 'navigate', @navigate)\r
+ @listenTo(@symbol, 'http_get', @http_get)\r
+ @listenTo(@caption, 'http_get', @http_get)\r
+ @listenTo(@summary, 'http_get', @http_get)\r
+ @listenTo(@icon, 'http_get', @http_get)\r
+ @listenTo(@edit, 'http_get', @http_get)\r
+ @listenTo(@edit, 'http_post', @http_post)\r
\r
render: () ->\r
if @symbol.is_visible()\r
\r
click_prof: (url) ->\r
@trigger('click:prof', this)\r
- @trigger('navigate', url)\r
+ @trigger('http_get', url)\r
\r
- navigate: (url) ->\r
- @trigger('navigate', url)\r
+ http_get: (url) ->\r
+ @trigger('http_get', url)\r
+ \r
+ http_post: (url) ->\r
+ @trigger('http_post', url)\r
\r
class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule\r
\r
\r
click: () ->\r
@trigger('click:caption')\r
- @trigger('navigate', @link.url())\r
+ @trigger('http_get', @link.url())\r
false\r
\r
mdl: () ->\r
'home/configure'\r
\r
click_edit: () ->\r
- @trigger('navigate', @edit_url())\r
+ @trigger('http_get', @edit_url())\r
\r
@image_dir() + 'remove.png'\r
\r
click_edit: () ->\r
- @trigger('navigate', @item.edit_url())\r
+ @trigger('http_get', @item.edit_url())\r
\r
click_remove: () ->\r
- @trigger('navigate', @item.destroy_url())\r
+ if confirm('remove?')\r
+ @trigger('http_post', @item.destroy_url())\r
\r
@view = new template_class(options)\r
\r
render: () ->\r
- @listenTo(@view, 'navigate', @navigate)\r
+ @listenTo(@view, 'http_get', @http_get)\r
this.$el.html(@view.render().el)\r
this\r
\r
template_file_name: () ->\r
@my_manifest.template_name\r
\r
- navigate: (url) ->\r
- @trigger('navigate', url)\r
+ http_get: (url) ->\r
+ @trigger('http_get', url)\r
\r
render: () ->\r
view = Pettanr.Views[@item.singular()]\r
summary = new view[view.summary()]({item: @item})\r
- @listenTo(summary, 'navigate', @navigate)\r
+ @listenTo(summary, 'http_get', @http_get)\r
this.$el.html(summary.el)\r
this\r
\r
- navigate: (url) ->\r
- @trigger('navigate', url)\r
+ http_get: (url) ->\r
+ @trigger('http_get', url)\r
\r
\r
click: () ->\r
@trigger('click:symbol')\r
- @trigger('navigate', @link.url())\r
+ @trigger('http_get', @link.url())\r
false\r
\r
mdl: () ->\r
_.each @fields, (field) =>\r
@item.set(field.field_name, field.val())\r
@item.unset('id') # isNew use flag that id attr set\r
- @trigger('post', this)\r
+ @trigger('http_post', @item.create_url(), this)\r
return false\r
\r
put: () ->\r
_.each @fields, (field) =>\r
@item.set(field.field_name, field.val())\r
- @trigger('put', this)\r
+ @trigger('http_post', @item.update_url(), this)\r
return false\r
\r
save: (attrs = null, options = null) ->\r
+ @listenTo(@item, 'save:success', @success)\r
+ @listenTo(@item, 'save:fail', @fail)\r
if attrs\r
@item.save(attrs, options)\r
else\r
@item.save()\r
\r
+ success: (model, response) ->\r
+ @trigger('success', model, response)\r
+ \r
+ fail: (model, response) ->\r
+ @trigger('fail', response)\r
+ \r
valid: () ->\r
window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true)\r
return false\r
encode_url: (action_name, params) ->\r
controller_name = @path_name()\r
c = controller_name\r
- a = if action_name == 'index' or action_name == 'show' or action_name == 'destroy'\r
+ a = if action_name == 'index' or action_name == 'show' # or action_name == 'destroy' # router does not detect delete method action\r
''\r
else\r
'/' + action_name\r
\r
class Pettanr.User.Session extends Pettanr.User\r
\r
+ sign_in: () ->\r
+ @save({})\r
+ \r
save: (model_attr) ->\r
@url = '/users/sign_in'\r
super(model_attr, {\r
prof_url: () ->\r
Pettanr.url(@table_name(), 'show', {id: @get('id'), format: 'prof'})\r
\r
+ create_url: () ->\r
+ Pettanr.url(@table_name(), 'create', {})\r
+ \r
edit_url: () ->\r
Pettanr.url(@table_name(), 'edit', {id: @get('id')})\r
\r
+ update_url: () ->\r
+ Pettanr.url(@table_name(), 'update', {id: @get('id')})\r
+ \r
destroy_url: () ->\r
Pettanr.url(@table_name(), 'destroy', {id: @get('id')})\r
\r
+ save: (model_attr) ->\r
+ super(model_attr || @attributes, {\r
+ success: (model, response, options) =>\r
+ @trigger('save:success', model, response)\r
+ error: (model, response, options) =>\r
+ @trigger('save:fail', model, response)\r
+ })\r
+ \r
+ destroy: () ->\r
+ super({\r
+ success: (model, response, options) =>\r
+ @trigger('destroy:success', model, response)\r
+ error: (model, response, options) =>\r
+ @trigger('destroy:fail', model, response)\r
+ })\r
+ \r
is_editize: () ->\r
@editor\r
\r
a.join('; ')\r
\r
@url: (controller_name, action_name, params) ->\r
- controller = Manifest.manifest().controllers[controller_name]\r
- action = controller.actions[action_name]\r
- action.url(params)\r
+ if controller = Manifest.manifest().controllers[controller_name]\r
+ # convert from manifest\r
+ action = controller.actions[action_name]\r
+ action.url(params)\r
+ else\r
+ # has no manifest\r
+ controller_name + '/' + action_name\r
\r
@params_to_url: (params) ->\r
+ return '' if params['controller'] == 'folders' and params['action'] == 'root'\r
@url(params['controller'], params['action'], params)\r
\r
@is_sns: () ->\r
class Pettanr.ActionFilter\r
\r
+ @suply_default: (reader, resource_reader, user, author) ->\r
+ {\r
+ reader: _.union(default_reader_filters, reader),\r
+ resource_reader: _.union(default_resource_reader_filters, resource_reader),\r
+ user: _.union(default_user_filters, user),\r
+ author: _.union(default_author_filters, author)\r
+ }\r
+ \r
@sns_filters: () ->\r
- default_reader_filters = ['ndex', 'show']\r
+ default_reader_filters = ['index', 'show']\r
default_resource_reader_filters = []\r
default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
user: _.union(default_user_filters, []),\r
author: _.union(default_author_filters, [])\r
},\r
+ scroll_panels: {\r
+ reader: _.union(default_reader_filters, ['by_panel', 'by_scroll', 'by_author']),\r
+ resource_reader: _.union(default_resource_reader_filters, []),\r
+ user: _.union(default_user_filters, []),\r
+ author: _.union(default_author_filters, [])\r
+ },\r
+ comics: {\r
+ },\r
+ comic_stories: {\r
+ },\r
+ stories: {\r
+ },\r
+ story_sheets: {\r
+ },\r
+ sheets: {\r
+ },\r
+ sheet_panels: {\r
+ },\r
+ panels: {\r
+ },\r
+ panel_pictures: {\r
+ },\r
+ speech_balloons: {\r
+ },\r
+ speeches: {\r
+ },\r
+ balloons: {\r
+ },\r
+ ground_pictures: {\r
+ },\r
+ ground_colors: {\r
+ },\r
+ original_pictures: {\r
+ },\r
+ pictures: {\r
+ },\r
+ resource_pictures: {\r
+ },\r
+ speech_balloon_templates: {\r
+ },\r
+ writing_formats: {\r
+ },\r
+ license_groups: {\r
+ },\r
+ licenses: {\r
+ },\r
+ authors: {\r
+ },\r
+ artists: {\r
+ },\r
+ system_pictures: {\r
+ },\r
+ home: {\r
+ },\r
}\r
\r
@blog_filters: () ->\r
--- /dev/null
+class Pettanr.Proxy\r
+ \r
+ constructor: (options) ->\r
+ @operators = options.operators\r
+ _.extend(this, Backbone.Events)\r
+ \r
+ local_router: (parsed_callback) ->\r
+ local_router = new Pettanr.LocalRouter({operators: @operators})\r
+ @listenTo(local_router, 'go', parsed_callback)\r
+ @listenTo(local_router, 'deny', @deny)\r
+ @listenTo(local_router, 'cancel', @cancel)\r
+ local_router\r
+ \r
+ http_get: (url, form) ->\r
+ @local_router(@get).navigate(url, form)\r
+ \r
+ get: (params, form, options) ->\r
+ controller = Pettanr.AppController.new2(params, form, @operators)\r
+ @listenTo(controller, 'ready', @ready)\r
+ @listenTo(controller, 'title', @title)\r
+ action_name = params['action']\r
+ controller[action_name]()\r
+ @trigger('done', params)\r
+ \r
+ ready: (view) ->\r
+ @trigger('ready', view)\r
+ \r
+ title: (params, str) ->\r
+ @trigger('title', params, str)\r
+ \r
+ deny: (params, form, safe_url) ->\r
+ @trigger('deny', params, form, safe_url)\r
+ \r
+ cancel: () ->\r
+ @trigger('cancel')\r
+ \r
+ http_post: (url, form) ->\r
+ @local_router(@post).navigate(url, form)\r
+ \r
+ post: (params, form) ->\r
+ controller = Pettanr.AppController.new2(params, form, @operators)\r
+ @listenTo(controller, 'success', @success)\r
+ @listenTo(controller, 'fail', @fail)\r
+ @listenTo(controller, 'redirect', @redirect)\r
+ @listenTo(controller, 'sign_in', @sign_in)\r
+ @listenTo(controller, 'sign_out', @sign_out)\r
+ action_name = params['action']\r
+ controller[action_name]()\r
+ \r
+ success: (model, response) ->\r
+ @trigger('success', model, response)\r
+ \r
+ fail: (response) ->\r
+ @trigger('fail', response)\r
+ \r
+ redirect: (new_url) ->\r
+ @trigger('redirect', new_url)\r
+ \r
+ sign_in: (user) ->\r
+ @trigger('sign_in', user)\r
+ \r
+ sign_out: () ->\r
+ @trigger('sign_out')\r
+ \r
\r
initialize: (options) ->\r
super()\r
+ _.extend(this, Backbone.Events)\r
@operators = options.operators\r
\r
parse_query_string: (query_string) ->\r
[\r
{route: '', callback: 'home'}, \r
{route: 'top/:action', callback: 'top_a'}, \r
- {route: 'users/:action', callback: 'users_a'}, \r
- {route: 'user_sessions/:action', callback: 'user_sessions_a'}, \r
+ {route: 'users/:action', callback: 'users_a'}, # no manifest route\r
+ {route: 'user_sessions/:action', callback: 'user_sessions_a'}, # no manifest route\r
{route: ':controller/:id/:action?*query_string', callback: 'c_i_a'}, \r
{route: ':controller/:id/:action', callback: 'c_i_a'}, \r
{route: ':controller/:id?*query_string', callback: 'c_i'}, \r
else\r
{}\r
\r
+ filters: () ->\r
+ if Pettanr.is_sns()\r
+ Pettanr.ActionFilter.sns_filters()\r
+ else\r
+ Pettanr.ActionFilter.blog_filters()\r
+ \r
+ my_filters: (role, params) ->\r
+ f = @filters()\r
+ c = f[params['controller']] || {}\r
+ r = c[role]\r
+ r\r
+ \r
+ # return false if allow\r
+ # return true if deny\r
+ authenticate: (role, params) ->\r
+ n = 'is_' + role\r
+ if not @operators[n]() # ex: operators.is_user()\r
+ filter = @my_filters(role, params)\r
+ if Pettanr.before_filter(params['action'], filter)\r
+ return true\r
+ false\r
+ \r
+ # access block\r
+ # return sign in form if invalid url\r
+ # return null if url is valid\r
+ block: (params) ->\r
+ return @guest_url() if @authenticate('reader', params) or @authenticate('resource_reader', params) or @authenticate('user', params)\r
+ return @new_author_url() if @authenticate('author', params)\r
+ return @new_artist_url() if @authenticate('artist', params)\r
+ null\r
+ \r
+ guest_url: () ->\r
+ 'user_seeeions/new'\r
+ \r
+ new_author_url: () ->\r
+ 'authors/new'\r
+ \r
+ new_artist_url: () ->\r
+ 'artists/new'\r
+ \r
# render App(render:all)\r
home: () ->\r
params = @home_params()\r
- @trigger('fire', params)\r
+ @trigger('go', params)\r
\r
home_params: () ->\r
params = {}\r
\r
# controller/id/action case\r
# ex) scrolls/3/edit\r
- c_i_a: (controller, id, action, query_string) ->\r
+ c_i_a: (controller, id, action, query_string, form) ->\r
params = @c_i_a_params(controller, id, action, query_string)\r
- @trigger('fire', params)\r
+ if safe_url = @block(params)\r
+ @trigger('deny', params, form, safe_url)\r
+ else\r
+ @trigger('go', params, form)\r
\r
c_i_a_params: (controller, id, action, query_string) ->\r
params = @parse_query_string(query_string)\r
\r
# controller and id case\r
# ex) scrolls/3\r
- c_i: (controller, id, query_string) ->\r
+ c_i: (controller, id, query_string, form) ->\r
params = @c_i_params(controller, id, query_string)\r
- @trigger('fire', params)\r
+ if safe_url = @block(params)\r
+ @trigger('deny', params, form, safe_url)\r
+ else\r
+ @trigger('go', params, form)\r
\r
c_i_params: (controller, id, query_string) ->\r
params = @parse_query_string(query_string)\r
\r
# controller only case\r
# ex) scrolls\r
- c: (controller, query_string) ->\r
+ c: (controller, query_string, form) ->\r
params = @c_params(controller, query_string)\r
- @trigger('fire', params)\r
+ if safe_url = @block(params)\r
+ @trigger('deny', params, form, safe_url)\r
+ else\r
+ @trigger('go', params, form)\r
\r
c_params: (controller, query_string) ->\r
params = @parse_query_string(query_string)\r
params['action'] = 'index'\r
params\r
\r
- top_a: (action, query_string) ->\r
+ top_a: (action, query_string, form) ->\r
params = @users_a_params(action, query_string)\r
- @trigger('fire', params)\r
+ if safe_url = @block(params)\r
+ @trigger('deny', params, safe_url)\r
+ else\r
+ @trigger('go', params, form)\r
\r
top_a_params: (action, query_string) ->\r
params = @parse_query_string(query_string)\r
params['action'] = action\r
params\r
\r
- user_sessions_a: (action, query_string) ->\r
+ user_sessions_a: (action, query_string, form) ->\r
params = @user_sessions_a_params(action, query_string)\r
- @trigger('fire', params)\r
+ if safe_url = @block(params)\r
+ @trigger('deny', params, safe_url)\r
+ else\r
+ @trigger('go', params, form)\r
\r
user_sessions_a_params: (action, query_string) ->\r
params = @parse_query_string(query_string)\r
params['action'] = action\r
params\r
\r
- users_a: (action, query_string) ->\r
+ users_a: (action, query_string, form) ->\r
params = @users_a_params(action, query_string)\r
- @trigger('fire', params)\r
+ if safe_url = @block(params)\r
+ @trigger('deny', params, safe_url)\r
+ else\r
+ @trigger('go', params, form)\r
\r
users_a_params: (action, query_string) ->\r
params = @parse_query_string(query_string)\r
params['format'] = 'html'\r
params['action'] = action\r
params\r
- \r
- \r
+\r
class Pettanr.GlobalRouter extends Pettanr.Router\r
\r
- initialize: () ->\r
- _.extend(this, Backbone.Events)\r
+ initialize: (options) ->\r
+ super(options)\r
_.each @peta_routes(), (r) =>\r
@route(r.route, r.callback)\r
\r
- navigate: (fragment, options) ->\r
- if Pettanr.History.lock_url\r
- if confirm('leave? edit data unsaved')\r
- Pettanr.History.lock_url = null\r
- else\r
- return false\r
- super(fragment, options)\r
- \r
class Pettanr.LocalRouter extends Pettanr.Router\r
\r
- initialize: () ->\r
- _.extend(this, Backbone.Events)\r
+ initialize: (options) ->\r
+ super(options)\r
\r
# selfish navigate\r
- navigate: (url) ->\r
+ navigate: (url, form) ->\r
if route = @find_route(url)\r
args = @_extractParameters(route.regex, url)\r
+ args.push(form)\r
n = route.callback # callback function name by string\r
this[n].apply(this, args) # call to c_i_a, c_i, c\r
\r
-class Pettanr.RouterFilter\r
- \r
- filters: () ->\r
- if Pettanr.is_sns()\r
- Pettanr.ActionFilter.sns_filters()\r
- else\r
- Pettanr.ActionFilter.blog_filters()\r
- \r
- my_filters: (role, params) ->\r
- f = @filters()\r
- c = f[params['controller']] || {}\r
- r = c[role]\r
- r\r
- \r
- # return false if allow\r
- # return true if deny\r
- authenticate: (role, params, operators) ->\r
- n = 'is_' + role\r
- if not operators[n]() # ex: operators.is_user()\r
- filter = @my_filters(role, params)\r
- if Pettanr.before_filter(params['action'], filter)\r
- return true\r
- false\r
- \r
-class Pettanr.HeaderRouter extends Pettanr.LocalRouter\r
- \r
- initialize: () ->\r
- super()\r
- _.extend(this, Pettanr.RouterFilter)\r
- \r
-class Pettanr.BodyRouter extends Pettanr.GlobalRouter\r
- \r
- initialize: () ->\r
- super()\r
- _.extend(this, Pettanr.RouterFilter.prototype)\r
- \r
- navigate: (url, options, operators) ->\r
- safe_url = @block(url, operators) || url\r
- super(safe_url, options)\r
- \r
- # access block\r
- # return sign in form if invalid url\r
- # return null if url is valid\r
- block: (url, operators) ->\r
- params = @url_to_params(url)\r
- return @guest_url() if @authenticate('reader', params, operators) or @authenticate('resource_reader', params, operators) or @authenticate('user', params, operators)\r
- return @new_author_url() if @authenticate('author', params, operators)\r
- return @new_artist_url() if @authenticate('artist', params, operators)\r
- null\r
- \r
- guest_url: () ->\r
- 'user_seeeions/new'\r
- \r
- new_author_url: () ->\r
- 'authors/new'\r
- \r
- new_artist_url: () ->\r
- 'artists/new'\r
- \r
this\r
\r
panel_click: () ->\r
- @trigger('navigate', @panel_icon.url())\r
+ @trigger('http_get', @panel_icon.url())\r
\r
author_click: () ->\r
- @trigger('navigate', @author_icon_with_caption.url())\r
+ @trigger('http_get', @author_icon_with_caption.url())\r
\r
this\r
\r
author_click: () ->\r
- @trigger('navigate', @author_icon_with_caption.url())\r
+ @trigger('http_get', @author_icon_with_caption.url())\r
\r
class Pettanr.Views.Common.Leaf\r
class Pettanr.Views.Common.Leaf.Summary extends Pettanr.Views.Common.Summary\r
this\r
\r
binder_click: () ->\r
- @trigger('navigate', @binder_icon.url())\r
+ @trigger('http_get', @binder_icon.url())\r
\r
destination_click: () ->\r
- @trigger('navigate', @destination_icon.url())\r
+ @trigger('http_get', @destination_icon.url())\r
\r
binder_author_click: () ->\r
- @trigger('navigate', @binder_author_icon_with_caption.url())\r
+ @trigger('http_get', @binder_author_icon_with_caption.url())\r
\r
destination_author_click: () ->\r
- @trigger('navigate', @destination_author_icon_with_caption.url())\r
+ @trigger('http_get', @destination_author_icon_with_caption.url())\r
\r
this\r
\r
panel_click: () ->\r
- @trigger('navigate', @panel_icon.url())\r
+ @trigger('http_get', @panel_icon.url())\r
\r
author_click: () ->\r
- @trigger('navigate', @author_icon_with_caption.url())\r
+ @trigger('http_get', @author_icon_with_caption.url())\r
\r
this\r
\r
panel_click: () ->\r
- @trigger('navigate', @panel_icon.url())\r
+ @trigger('http_get', @panel_icon.url())\r
\r
-class Pettanr.ViewPicker extends Backbone.View\r
- initialize: (options) ->\r
- @operators = options.operators\r
- _.extend(this, Backbone.Events)\r
- _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype)\r
- @local_router = new Pettanr.LocalRouter()\r
- @listenTo(@local_router, 'fire', @fire)\r
- \r
- navigate: (url) ->\r
- @local_router.navigate(url, true)\r
- \r
- fire: (params) ->\r
- controller = Pettanr.AppController.new2(params, @operators)\r
- @add_listener(controller, this)\r
- action_name = params['action']\r
- controller[action_name]()\r
- \r
- retitle: (params, str = null) ->\r
- @trigger('retitle', params, str = null)\r
- \r
- refresh: (view) ->\r
- @trigger('ready', view)\r
- \r
- redirect_to: (url) ->\r
- @trigger('redirect', url)\r
- \r
class Pettanr.Views.Layout\r
-class Pettanr.Views.Layout.ControllerManager\r
- \r
- add_listener: (controller, self) ->\r
- self.listenTo(controller, 'ready', self.refresh)\r
- self.listenTo(controller, 'retitle', self.retitle)\r
- self.listenTo(controller, 'block', self.block)\r
- self.listenTo(controller, 'redirect', self.redirect_to)\r
- \r
class Pettanr.Views.Layout.Base extends Backbone.View\r
- tagName: 'div'\r
- className: 'layout-base'\r
+ \r
+class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base\r
+ className: 'layout-sns'\r
\r
initialize: (options) ->\r
- _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype)\r
@operators = new Pettanr.Operator({})\r
- # router for refresh body\r
- @global_router = new Pettanr.BodyRouter()\r
- # router for refresh body. but not replace url\r
- @local_router = new Pettanr.LocalRouter()\r
- # router for refresh header\r
- @header_router = new Pettanr.LocalRouter()\r
- @listenTo(@global_router, 'fire', @fire_for_body)\r
- @listenTo(@local_router, 'fire', @fire_for_body)\r
- @listenTo(@header_router, 'fire', @fire_for_header)\r
- @header = new (@header_class())({parent: this})\r
- @body = new (@body_class())({parent: this})\r
- @footer = new (@footer_class())({parent: this})\r
+ @global_router = new Pettanr.GlobalRouter({operators: @operators})\r
+ @listenTo(@global_router, 'go', @body_get)\r
+ @header = new Pettanr.Views.Layout.Sns.Header({parent: this})\r
+ @body = new Pettanr.Views.Layout.Sns.Body({parent: this})\r
+ @footer = new Pettanr.Views.Layout.Sns.Footer({parent: this})\r
\r
render: () ->\r
this.$el.html('')\r
this.$el.append(@footer.render().el)\r
this\r
\r
- fire: (params) ->\r
- controller = Pettanr.AppController.new2(params, @operators)\r
- @add_listener(controller, this)\r
- action_name = params['action']\r
- controller[action_name]()\r
- \r
- start: () ->\r
- # check current user signed in?\r
- # callback sign_in_success from users controller if signed in\r
- @test()\r
- \r
- test: () ->\r
- @user = new Pettanr.User.Session()\r
- @listenTo(@user, 'sign_in:success', @sign_in_success)\r
- @listenTo(@user, 'sign_in:fail', @sign_in_fail)\r
- @user.save({})\r
- \r
- fire_for_header: (params) ->\r
- @fire(params, @refresh_header)\r
- \r
- fire_for_body: (params) ->\r
- @fire(params)\r
- \r
init_operators: (user) ->\r
author = new Pettanr.Author(user.get('author')) if user.get('author')\r
artist = new Pettanr.Artist(user.get('artist')) if user.get('artist')\r
author: author, \r
artist: artist\r
})\r
- \r
- sign_in: () ->\r
- false\r
- \r
- sign_in_success: (user, response) ->\r
- @init_operators(user)\r
- \r
- sign_in_fail: (user, response) ->\r
- false\r
+ @global_router.operators = @operators\r
\r
reset_operators: () ->\r
@operators.init({\r
author: null, \r
artist: null\r
})\r
+ @global_router.operators = @operators\r
\r
- sign_out: () ->\r
- false\r
+ start: () ->\r
+ # check current user signed in?\r
+ proxy = new Pettanr.Proxy({operators: @operators})\r
+ @listenTo(proxy, 'redirect', @test_redirect)\r
+ # @listenTo(proxy, 'success', @test_ok)\r
+ @listenTo(proxy, 'fail', @test_ng)\r
+ @listenTo(proxy, 'sign_in', @sign_in)\r
+ proxy.http_post('users/test')\r
+ \r
+ test_ok: (user, response) ->\r
+ \r
+ \r
+ test_ng: (response) ->\r
+ @head_http_get('users/guest')\r
+ @body_http_get('user_sessions/new')\r
+ \r
+ test_redirect: (url) ->\r
+ proxy = @getter_proxy()\r
+ @stopListening(proxy, 'done') # ignore global routing\r
+ proxy.http_get(url, null)\r
+ \r
+ sign_in: (user) ->\r
+ @init_operators(user)\r
+ @head_http_get('users/account')\r
\r
- sign_out_success: (user, response) ->\r
+ sign_out: () ->\r
@reset_operators()\r
+ @head_http_get('users/guest')\r
\r
- sign_out_fail: (user, response) ->\r
- false\r
+ head_http_get: (url) ->\r
+ proxy = new Pettanr.Proxy({operators: @operators})\r
+ @listenTo(proxy, 'ready', @head_ready)\r
+ proxy.http_get(url, null)\r
\r
- retitle: (params, str = null) ->\r
- t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title')\r
- site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption)\r
- $(document).attr('title', t + ' - ' + site_caption)\r
- \r
- refresh_header: (view) ->\r
+ head_ready: (view) ->\r
+ @listenTo(view, 'http_get', @body_http_get)\r
+ @listenTo(view, 'http_post', @body_http_post)\r
@header.refresh(view)\r
\r
- refresh_body: (view) ->\r
- @body.refresh(view)\r
- \r
- refresh: (view) ->\r
- @body.refresh(view)\r
- \r
- block: () ->\r
- true\r
+ getter_proxy: () ->\r
+ proxy = new Pettanr.Proxy({operators: @operators})\r
+ @listenTo(proxy, 'ready', @body_ready)\r
+ @listenTo(proxy, 'title', @body_title)\r
+ @listenTo(proxy, 'done', @body_done)\r
+ proxy\r
\r
- redirect_to: (url, return_params, refresh_function) ->\r
- redirect_params = Pettanr.LocalRouter.url_to_params(redirect_url)\r
- @fire(redirect_params, refresh_function)\r
+ body_http_get: (url, form) ->\r
+ @getter_proxy().http_get(url, form)\r
\r
- header_class: () ->\r
- null\r
+ body_get: (params, form) ->\r
+ @getter_proxy().get(params, form)\r
\r
- body_class: () ->\r
- null\r
+ body_ready: (view) ->\r
+ @listenTo(view, 'http_get', @body_http_get)\r
+ @listenTo(view, 'http_post', @body_http_post)\r
+ @body.refresh(view)\r
\r
- footer_class: () ->\r
- null\r
+ body_done: (params) ->\r
+ url = Pettanr.params_to_url(params)\r
+ @global_router.navigate(url, {trigger: false})\r
\r
-class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base\r
- className: 'layout-sns'\r
+ body_title: (params, str = null) ->\r
+ t = str || I18n.t(params['controller'] + '.' + params['action'] + '.title')\r
+ site_caption = _.escape(Manifest.manifest().magic_numbers.profile.users.caption)\r
+ $(document).attr('title', t + ' - ' + site_caption)\r
\r
- initialize: (options) ->\r
- super(options)\r
- @listenTo(@header, 'navigate', @header_navigate)\r
- @listenTo(@header, 'sign_in', @sign_in)\r
- @listenTo(@header, 'sign_out', @sign_out)\r
- @listenTo(@body, 'navigate', @body_navigate)\r
- @listenTo(@body, 'retitle', @retitle)\r
- @listenTo(@body, 'sign_in', @sign_in)\r
- @listenTo(@body, 'sign_out', @sign_out)\r
+ poster_proxy: () ->\r
+ proxy = new Pettanr.Proxy({operators: @operators})\r
+ @listenTo(proxy, 'success', @body_success)\r
+ @listenTo(proxy, 'fail', @body_fail)\r
+ @listenTo(proxy, 'redirect', @body_redirect)\r
+ @listenTo(proxy, 'sign_in', @sign_in)\r
+ @listenTo(proxy, 'sign_out', @sign_out)\r
+ proxy\r
\r
- start: () ->\r
- # initial page\r
- super()\r
- \r
- sign_in: (attr) ->\r
- @user = new Pettanr.User.Session(attr)\r
- @listenTo(@user, 'sign_in:success', @sign_in_success)\r
- @listenTo(@user, 'sign_in:fail', @sign_in_fail)\r
- @user.save({})\r
- \r
- sign_in_success: (user, response) ->\r
- super(user, response)\r
- # navigate users/account\r
- # callback from fire to refresh_header\r
- @header.fire({controller: 'users', action: 'account'})\r
- # navigate home\r
- # callback from fire to refresh_body\r
- @body.fire({controller: 'folders', action: 'root'})\r
+ body_http_post: (url, form) ->\r
+ @poster_proxy().http_post(url, form)\r
\r
- sign_in_fail: (user, response) ->\r
- super(user, response)\r
- @header.fire({controller: 'users', action: 'guest'})\r
- @body.fire({controller: 'user_sessions', action: 'new'})\r
- \r
- sign_out: () ->\r
- @user = new Pettanr.User.Session()\r
- @listenTo(@user, 'sign_out:success', @sign_out_success)\r
- @listenTo(@user, 'sign_out:fail', @sign_out_fail)\r
- @user.destroy()\r
- \r
- sign_out_success: (user, response) ->\r
- super(user, response)\r
- @global_router.navigate('', {trigger: false}, @operators)\r
- ## navigate users/guest\r
- ## callback from fire to refresh_header\r
- @header.fire({controller: 'users', action: 'guest'})\r
- ## navigate sign in form\r
- ## callback from fire to refresh_body\r
- @body.fire({controller: 'user_sessions', action: 'new'})\r
- \r
- sign_out_fail: (user, response) ->\r
- super(user, response)\r
- \r
- block: () ->\r
- super()\r
- @header_router.navigate('users/guest')\r
- @body.fire({controller: 'user_sessions', action: 'new'})\r
- \r
- header_navigate: (url) ->\r
- @global_router.navigate(url, {trigger: true}, @operators)\r
- \r
- body_navigate: (url) ->\r
- @global_router.navigate(url, {trigger: false}, @operators)\r
+ body_post: (params, form) ->\r
+ @poster_proxy().post(params, form)\r
\r
- header_class: () ->\r
- Pettanr.Views.Layout.Sns.Header\r
+ body_success: (url) ->\r
+ \r
\r
- body_class: () ->\r
- Pettanr.Views.Layout.Sns.Body\r
+ body_fail: (url) ->\r
+ \r
\r
- footer_class: () ->\r
- Pettanr.Views.Layout.Sns.Footer\r
+ body_redirect: (url) ->\r
+ @global_router.navigate(url)\r
+ @getter_proxy().http_get(url)\r
\r
class Pettanr.Views.Layout.Blog extends Pettanr.Views.Layout.Base\r
className: 'layout-blog'\r
id: 'header'\r
\r
initialize: (options) ->\r
- _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype)\r
@parent = options.parent\r
- @local_router = new Pettanr.LocalRouter()\r
- @listenTo(@local_router, 'fire', @fire)\r
\r
render: () ->\r
this.$el.html('')\r
this\r
\r
- fire: (params) ->\r
- controller = Pettanr.AppController.new2(params, @operators())\r
- @add_listener(controller, this)\r
- action_name = params['action']\r
- controller[action_name]()\r
- \r
- sign_in: (attr) ->\r
- @trigger('sign_in', attr)\r
- \r
- sign_out: () ->\r
- @trigger('sign_out')\r
- \r
- retitle: (params, str = null) ->\r
- @trigger('retitle', params, str = null)\r
- \r
refresh: (view) ->\r
- @listenTo(view, 'navigate', @navigate)\r
- @listenTo(view, 'sign_in', @sign_in)\r
- @listenTo(view, 'sign_out', @sign_out)\r
- this.$el.html(view.render().el)\r
- \r
- navigate: (url) ->\r
- # header's message replace body\r
- # @local_router.navigate(url, true)\r
- @trigger('navigate', url)\r
- \r
- operators: () ->\r
- @parent.operators\r
+ this.$el.html(view.el)\r
\r
class Pettanr.Views.Layout.Sns.Body extends Backbone.View\r
tagName: 'div'\r
id: 'body'\r
\r
initialize: (options) ->\r
- _.extend(this, Pettanr.Views.Layout.ControllerManager.prototype)\r
@parent = options.parent\r
- @local_router = new Pettanr.LocalRouter()\r
- @listenTo(@local_router, 'fire', @fire)\r
\r
render: () ->\r
this.$el.html('')\r
this\r
\r
- fire: (params) ->\r
- controller = Pettanr.AppController.new2(params, @operators())\r
- @add_listener(controller, this)\r
- action_name = params['action']\r
- controller[action_name]()\r
- \r
- sign_in: (attr) ->\r
- @trigger('sign_in', attr)\r
- \r
- sign_out: () ->\r
- @trigger('sign_out')\r
- \r
- retitle: (params, str = null) ->\r
- @trigger('retitle', params, str = null)\r
- \r
refresh: (view) ->\r
- @listenTo(view, 'navigate', @navigate)\r
- @listenTo(view, 'post', @post)\r
- @listenTo(view, 'put', @put)\r
- @listenTo(view, 'sign_in', @sign_in)\r
- this.$el.html(view.render().el)\r
- \r
- navigate: (url) ->\r
- @local_router.navigate(url, true)\r
- @trigger('navigate', url)\r
- \r
- redirect_to: (url) ->\r
- @navigate(url)\r
- \r
- operators: () ->\r
- @parent.operators\r
+ this.$el.html(view.el)\r
\r
class Pettanr.Views.Layout.Sns.Footer extends Backbone.View\r
tagName: 'div'\r
\r
# in credit\r
resource_picture_click: (resource_picture) ->\r
- @trigger('navigate', resource_picture.show_url())\r
+ @trigger('http_get', resource_picture.show_url())\r
\r
this\r
\r
panel_click: () ->\r
- @trigger('navigate', @panel_icon.url())\r
+ @trigger('http_get', @panel_icon.url())\r
\r
this\r
\r
author_click: () ->\r
- @trigger('navigate', @author_icon_with_caption.url())\r
+ @trigger('http_get', @author_icon_with_caption.url())\r
\r
this\r
\r
panel_click: () ->\r
- @trigger('navigate', @panel_icon.url())\r
+ @trigger('http_get', @panel_icon.url())\r
\r
author_click: () ->\r
- @trigger('navigate', @author_icon_with_caption.url())\r
+ @trigger('http_get', @author_icon_with_caption.url())\r
\r
this\r
\r
panel_click: () ->\r
- @trigger('navigate', @panel_icon.url())\r
+ @trigger('http_get', @panel_icon.url())\r
\r
author_click: () ->\r
- @trigger('navigate', @author_icon_with_caption.url())\r
+ @trigger('http_get', @author_icon_with_caption.url())\r
\r
sign_in: () ->\r
m = $('#user_email').val()\r
p = $('#user_password').val()\r
- @trigger('sign_in', {user: {email: m, password: p}})\r
+ @user = new Pettanr.User.Session({user: {email: m, password: p}})\r
+ @trigger('http_post', 'users/sign_in', @user)\r
return false\r
\r
this\r
\r
logo_click: () ->\r
- @trigger('navigate', '')\r
+ @trigger('http_get', '')\r
\r
author_click: () ->\r
- @trigger('navigate', @author_view.url())\r
+ @trigger('http_get', @author_view.url())\r
\r
artist_click: () ->\r
- @trigger('navigate', @artist_view.url())\r
+ @trigger('http_get', @artist_view.url())\r
\r
sign_out_click: () ->\r
- @trigger('sign_out')\r
+ @trigger('http_post', 'users/sign_out')\r
return false\r
\r
this\r
\r
logo_click: () ->\r
- @trigger('navigate', '')\r
+ @trigger('http_get', '')\r
return false\r
\r
sign_in_click: () ->\r
- @trigger('navigate', 'user_sessions/new')\r
+ @trigger('http_get', 'user_sessions/new')\r
return false\r
\r