OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
authoryasushiito <yas@pen-chan.jp>
Fri, 6 Feb 2015 01:27:45 +0000 (10:27 +0900)
committeryasushiito <yas@pen-chan.jp>
Fri, 6 Feb 2015 01:27:45 +0000 (10:27 +0900)
29 files changed:
app/assets/javascripts/controllers/folders.js.coffee
app/assets/javascripts/controllers/top.js.coffee
app/assets/javascripts/controllers/user_sessions.js.coffee
app/assets/javascripts/controllers/users.js.coffee
app/assets/javascripts/locmare/filer.js.coffee
app/assets/javascripts/locmare/filer/body.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/action.js.coffee
app/assets/javascripts/locmare/profiler.js.coffee
app/assets/javascripts/main.js.coffee
app/assets/javascripts/models/user.js.coffee
app/assets/javascripts/pettanr.js.coffee
app/assets/javascripts/routes.js.coffee
app/assets/javascripts/views/balloons/show.js.coffee
app/assets/javascripts/views/comics/show.js.coffee
app/assets/javascripts/views/ground_colors/show.js.coffee
app/assets/javascripts/views/ground_pictures/show.js.coffee
app/assets/javascripts/views/layout.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/layouts/blog.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/layouts/default.js.coffee [deleted file]
app/assets/javascripts/views/layouts/sns.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/panel_pictures/show.js.coffee
app/assets/javascripts/views/panels/show.js.coffee
app/assets/javascripts/views/scrolls/show.js.coffee
app/assets/javascripts/views/user_sessions/new.js.coffee
app/assets/javascripts/views/users/account.js.coffee
app/assets/javascripts/views/users/guest.js.coffee [moved from app/assets/javascripts/views/top/index.js.coffee with 73% similarity]
app/assets/javascripts/views/users/index.js.coffee [deleted file]
app/assets/stylesheets/test.css.scss

index 5fc6bef..5edbea4 100644 (file)
@@ -17,13 +17,14 @@ class Pettanr.FoldersController extends Pettanr.AppController
     @trigger('retitle', @params, @item.get('name'))\r
     collection = new Pettanr.Folder.Children({id: @item.get('id')})\r
     collection.fetch({cache: true}).done =>\r
-      f = new Locmare.Filer({\r
+      filer = new Locmare.Filer({\r
         item_name: 'folder', \r
         items: collection.models, \r
         pager: null, \r
-        operators: window.operators\r
+        operators: @operators\r
       })\r
-      @trigger('ready', f)\r
+      @listenTo(filer, 'navigate', @navigate)\r
+      @trigger('ready', filer)\r
   \r
   show: () ->\r
     if @params['format'] == 'prof'\r
@@ -34,15 +35,29 @@ class Pettanr.FoldersController extends Pettanr.AppController
       @item = new Pettanr.FolderWatch({id: @params['id']})\r
       @item.fetch({cache: true}).done () =>\r
         if @item.is_remote()\r
-          c = @item.get('controller_name')\r
-          a = if Pettanr.is_blank(@item.get('action_name'))\r
+          # redirect to remote item list\r
+          params = {}\r
+          params['controller'] = @item.get('controller_name')\r
+          params['action'] = if Pettanr.is_blank(@item.get('action_name'))\r
             'index'\r
           else\r
             @item.get('action_name')\r
-          window.router['c_i'](c, a, '') # call action event in router for redirect\r
+          # self fire\r
+          c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
+          controller = new c(@operators)\r
+          controller.params = params\r
+          @listenTo(controller, 'ready', @refresh)\r
+          @listenTo(controller, 'retitle', @retitle)\r
+          controller[params['action']]()\r
         else\r
           @children_html()\r
   \r
+  refresh: (view) ->\r
+    @trigger('ready', view)\r
+  \r
+  retitle: (params, str = null) ->\r
+    @trigger('retitle', @params, str = null)\r
+  \r
   count: () ->\r
   \r
   new: () ->\r
index f06553c..4417a5d 100644 (file)
@@ -5,6 +5,7 @@ class Pettanr.TopController extends Pettanr.AppController
     view.render()\r
     @trigger('ready', view)\r
   \r
+  # use in case guest landing for blog mode\r
   demo: () ->\r
     view = new Pettanr.Views.Top.Demo({operators: @operators})\r
     view.render()\r
index 2bfc56f..d8f9b0b 100644 (file)
@@ -1,5 +1,6 @@
 class Pettanr.UserSeeeionsController extends Pettanr.AppController\r
   \r
+  # login form\r
   new: () ->\r
     view = new Pettanr.Views.UserSeeeion.New({})\r
     view.render()\r
index 6471b1e..4e00e30 100644 (file)
@@ -1,20 +1,30 @@
 class Pettanr.UsersController extends Pettanr.AppController\r
   \r
-  # login form\r
-  index: () ->\r
-    view = new Pettanr.Views.User.Index({})\r
-    view.render()\r
-    @trigger('ready', view)\r
-  \r
+  # receive user authoring form data as post\r
   sign_in: () ->\r
-    @user = new Pettanr.User.Current()\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
+  # try getting current user\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
-    # try getting current user\r
     @user.save({})\r
   \r
+  sign_out: () ->\r
+    user = new Backbone.Model({id: 0})\r
+    user.url = '/users/sign_out'\r
+    user.destroy({success: () ->\r
+      r = new Pettanr.Views.Top.Index({})\r
+      $("#header").html(r.render().el)\r
+      $("#pettanr").html('')\r
+    })\r
+  \r
   account: () ->\r
-    view = new Pettanr.Views.User.Account({})\r
+    view = new Pettanr.Views.User.Account({operators: @operators})\r
     view.render()\r
     @trigger('ready', view)\r
   \r
index c57fbd9..382f8d5 100644 (file)
@@ -1,5 +1,7 @@
 class Locmare.Filer extends Backbone.View\r
   tagName: 'div'\r
+  className: 'filer'\r
+  \r
   initialize: (options) ->\r
     @item_name = options.item_name\r
     @items = options.items\r
@@ -35,7 +37,7 @@ class Locmare.Filer extends Backbone.View
   \r
   click_header: (url) ->\r
     @trigger('click:header', url)\r
-    window.router.navigate(url, true)\r
+    @trigger('navigate', url)\r
   \r
   click_symbol: (item_view) ->\r
     @trigger('click:symbol', item_view)\r
@@ -48,7 +50,6 @@ class Locmare.Filer extends Backbone.View
   \r
   navigate: (url) ->\r
     @trigger('navigate', url)\r
-    window.router.navigate(url, true)\r
   \r
 class Locmare.FilerModule\r
 \r
index 7fb1e70..41a956c 100644 (file)
@@ -1,5 +1,6 @@
 class Locmare.FilerModule.Body extends Backbone.View\r
-  tagName: 'div'\r
+  tagName: 'ul'\r
+  className: 'filer-body'\r
   \r
   initialize: (options) ->\r
     @filer = options.filer\r
index b497124..ba2d1fe 100644 (file)
@@ -14,7 +14,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
   ready_symbol: (symbol) ->\r
     view = if @has_link()\r
       linked_symbol = new Tag.A({\r
-        attr: {href: @link.url()}, \r
+        attr: {href: '/' + @link.url()}, \r
         content: symbol.render().el\r
       })\r
       @listenTo(linked_symbol, 'click', @click)\r
index bbd6b46..fc295f3 100644 (file)
@@ -12,5 +12,5 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
       id: @item.get('id'),\r
       format: 'html'\r
     }\r
-    '/' + action.url(params)\r
+    action.url(params)\r
   \r
index e356c74..a8e4c65 100644 (file)
@@ -12,6 +12,8 @@ class Locmare.Profiler extends Backbone.View
     @header = new Locmare.ProfilerModule.Header({profiler: this})\r
     @columns = new Locmare.ProfilerModule.Column({profiler: this})\r
     @associations = new Locmare.ProfilerModule.Association({'profiler': this, association_manifest: @profiler_manifest.associations})\r
+    @listenTo(@header, 'navigate', @navigate)\r
+    @listenTo(@associations, 'navigate', @navigate)\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -29,6 +31,9 @@ class Locmare.Profiler extends Backbone.View
   image_dir: () ->\r
     '/images/'\r
   \r
+  navigate: (url) ->\r
+    @trigger('navigate', url)\r
+  \r
 class Locmare.ProfilerModule\r
 \r
  \r
index a3c51b2..612210f 100644 (file)
@@ -28,49 +28,10 @@ $ ->
     return('leave?')\r
   Backbone.history.start({silent: true, pushState: true, root: '/'})\r
   \r
-  layout = new Pettanr.Views.Layout.Default()\r
+  layout = if Manifest.manifest().magic_numbers.run_mode == 1\r
+    new Pettanr.Views.Layout.Sns()\r
+  else\r
+    new Pettanr.Views.Layout.Blog()\r
   $('#pettanr').html(layout.render().el)\r
   layout.start()\r
   \r
-  t: () ->\r
-    #i = new Pettanr.Balloon({id: 49})\r
-    #i = new Pettanr.Speech({id: 49})\r
-    #i = new Pettanr.GroundColor({id: 1})\r
-    #i = new Pettanr.PanelPicture({id: 21})\r
-    #i = new Pettanr.License({id: 4})\r
-    i = new Pettanr.SpeechBalloon({id: 49})\r
-    i.fetch().done =>\r
-      b = new Pettanr.Balloon({id: 49})\r
-      b.fetch().done =>\r
-        s = new Pettanr.Speech({id: 49})\r
-        s.fetch().done =>\r
-          i.speech = s\r
-          i.balloon= b\r
-          form = new Locmare.Bucket.factory(\r
-            i.item_name(), \r
-            i, \r
-            true, \r
-            'default', \r
-            window.operators,\r
-            '/' + i.table_name() + '/' + Pettanr.to_s(i.get('id'))\r
-          )\r
-          $("#pettanr").html(form.render().el)\r
-  \r
-  test_router: () ->\r
-    window.router.navigate('folders/98', true)\r
-    window.router.navigate('folders/99?a=b&c=d', true)\r
-    window.router.navigate('folders/100.prof', true)\r
-    window.router.navigate('folders/101.json?a=b&c=d', true)\r
-    window.router.navigate('folders/102/show', true)\r
-    window.router.navigate('folders/103/show?a=b&c=d', true)\r
-    window.router.navigate('folders/104/show.json', true)\r
-    window.router.navigate('folders/105/show.json?a=b&c=d', true)\r
-    window.router.navigate('scrolls/', true)\r
-    window.router.navigate('scrolls/?a=b&c=d', true)\r
-    window.router.navigate('scrolls', true)\r
-    window.router.navigate('scrolls.json', true)\r
-    window.router.navigate('scrolls.json?a=b&c=d', true)\r
-    window.router.navigate('scrolls/by_author/1', true)\r
-    window.router.navigate('scrolls/by_author/2?a=b&c=d', true)\r
-    window.router.navigate('scrolls/by_author/3.json', true)\r
-    window.router.navigate('scrolls/by_author/4.json?a=b&c=d', true)\r
index 69fac18..1111df5 100644 (file)
@@ -15,7 +15,7 @@ class Pettanr.User extends Backbone.Model
     if @id\r
       @url = @url + @id\r
   \r
-class Pettanr.User.Current extends Pettanr.User\r
+class Pettanr.User.Session extends Pettanr.User\r
   \r
   save: (model_attr) ->\r
     super(model_attr, {\r
index eab863b..250c3a5 100644 (file)
@@ -135,6 +135,7 @@ class Pettanr
           pager: pager, \r
           operators: @operators\r
         })\r
+        @listenTo(filer, 'navigate', @navigate)\r
         @trigger('ready', filer)\r
       )\r
       false\r
@@ -153,7 +154,7 @@ class Pettanr
       )\r
       false\r
     \r
-    show_prof: (el) ->\r
+    show_prof: () ->\r
       @item.fetch({cache: true}).done =>\r
         @item.boosts 'post'\r
         profiler = new Locmare.Profiler({\r
@@ -161,8 +162,9 @@ class Pettanr
           item: @item, \r
           operators: @operators\r
         })\r
-        el ||= $("#pettanr")\r
-        el.html(profiler.render().el)\r
+        @listenTo(profiler, 'navigate', @navigate)\r
+        profiler.render()\r
+        @trigger('ready', profiler)\r
         @trigger('retitle', @params)\r
     \r
     set_new: () ->\r
@@ -197,6 +199,9 @@ class Pettanr
     form_edit: () ->\r
       @set_edit()\r
     \r
+    navigate: (url) ->\r
+      @trigger('navigate', url)\r
+    \r
   class Pettanr.Dialog extends Backbone.View\r
     \r
     initialize: (options) ->\r
@@ -220,7 +225,7 @@ class Pettanr
       controller[params['action']]()\r
     \r
     local_navigate: (url) ->\r
-      window.router.local_navigate(url, true)\r
+      @router.local_navigate(url, true)\r
     \r
   \r
   #>> https://gist.github.com/davidjbeveridge/3813724\r
index d97cd57..c692e92 100644 (file)
@@ -16,11 +16,6 @@ class Pettanr.Router extends Backbone.Router
         _.extend(params, o)\r
     params\r
   \r
-  initialize: () ->\r
-    _.extend(this, Backbone.Events)\r
-    _.each @peta_routes(), (r) =>\r
-      @route(r.route, r.callback)\r
-  \r
   peta_routes: () ->\r
     [\r
       {route: '', callback: 'home'}, \r
@@ -109,39 +104,46 @@ class Pettanr.Router extends Backbone.Router
     params['action'] = 'index'\r
     params\r
   \r
-  top_a: (action) ->\r
-    params = @users_a_params(action)\r
+  top_a: (action, query_string) ->\r
+    params = @users_a_params(action, query_string)\r
     @trigger('fire', params)\r
   \r
-  top_a_params: (action) ->\r
+  top_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r
     params['controller'] = 'top'\r
     params['format'] = 'html'\r
     params['action'] = action\r
     params\r
   \r
-  user_sessions_a: (action) ->\r
-    params = @users_a_params(action)\r
+  user_sessions_a: (action, query_string) ->\r
+    params = @users_a_params(action, query_string)\r
     @trigger('fire', params)\r
   \r
-  user_sessions_a_params: (action) ->\r
+  user_sessions_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r
     params['controller'] = 'user_sessions'\r
     params['format'] = 'html'\r
     params['action'] = action\r
     params\r
   \r
-  users_a: (action) ->\r
-    params = @users_a_params(action)\r
+  users_a: (action, query_string) ->\r
+    params = @users_a_params(action, query_string)\r
     @trigger('fire', params)\r
   \r
-  users_a_params: (action) ->\r
+  users_a_params: (action, query_string) ->\r
     params = @parse_query_string(query_string)\r
     params['controller'] = 'users'\r
     params['format'] = 'html'\r
     params['action'] = action\r
     params\r
   \r
+class Pettanr.GlobalRouter extends Pettanr.Router\r
+  \r
+  initialize: () ->\r
+    _.extend(this, Backbone.Events)\r
+    _.each @peta_routes(), (r) =>\r
+      @route(r.route, r.callback)\r
+  \r
   navigate: (fragment, options) ->\r
     if window.editor\r
       if confirm('leave? edit data unsaved')\r
@@ -152,99 +154,17 @@ class Pettanr.Router extends Backbone.Router
     else\r
       super(fragment, options)\r
   \r
-  local_navigate: (url, el) ->\r
+class Pettanr.LocalRouter extends Pettanr.Router\r
+  \r
+  initialize: () ->\r
+    _.extend(this, Backbone.Events)\r
+  \r
+  # selfish navigate\r
+  navigate: (url) ->\r
     _.any @peta_routes(), (r) =>\r
       route = @_routeToRegExp(r.route)\r
       if route.test(url)\r
         args = @_extractParameters(route, url)\r
-        args.unshift(el)\r
-        n = 'local_' + r.callback\r
-        this[n].apply(this, args)\r
-  \r
-  # from Backbone.History.loadUrl(fragment)\r
-  local_home: (el) ->\r
-    params = @home_params()\r
-    @fire(params, el)\r
+        n = r.callback\r
+        this[n].apply(this, args)  # call to c_i_a, c_i, c\r
   \r
-  local_c_i_a: (el, controller, id, action, query_string) ->\r
-    params = @c_i_a_params(controller, id, action, query_string)\r
-    @fire(params, el)\r
-  \r
-  local_c_i: (el, controller, id, query_string) ->\r
-    params = @c_i_params(controller, id, query_string)\r
-    @fire(params, el)\r
-  \r
-  local_c: (el, controller, query_string) ->\r
-    params = @c_params(controller, query_string)\r
-    @fire(params, el)\r
-  \r
-  local_user_sign_in: (el) ->\r
-    console.log('user_sign_in');\r
-  \r
-  hoge: () ->\r
-    names = _.map Manifest.manifest().controllers, (controller_manifest, controller_name) ->\r
-      c = Pettanr[Pettanr.camelize(controller_name) + 'Controller']\r
-      controller = new c\r
-      _.map controller_manifest.actions, (action_manifest, action_name) =>\r
-        {\r
-          event_name: controller_name + '_' + action_name, \r
-          controller: controller,\r
-          controller_name: controller_name,\r
-          action_manifest: action_manifest,\r
-          action_name: action_name\r
-        }\r
-    _.each _.flatten(names), (status) =>\r
-      _status = status\r
-      switch status.action_manifest.type\r
-        when 'list'\r
-          e = status.event_name\r
-          e_f = e + '_format'\r
-          this[e] = (queryString) =>\r
-            params = @parse_query_string(query_string)\r
-            console.log(params)\r
-            _status.controller[_status.action_name](params)\r
-          c = _status.controller_name\r
-          a = _status.action_name\r
-          c_a_url = c + '/' + a\r
-          @route(c_a_url, e)\r
-          r = r + '?*queryString'\r
-          @route(r, _status.event_name)\r
-          if _status.action_name == 'index'\r
-            r = _status.controller_name + '/'\r
-            @route(r, _status.event_name)\r
-        when 'show'\r
-          e = status.event_name\r
-          e_f = e + '_format'\r
-          this[e] = (id, query_string) =>\r
-            params = @parse_query_string(query_string)\r
-            t = id.split('.')\r
-            if t.length > 1\r
-              params['format'] = t[1]\r
-              id = t[0]\r
-            console.log(id)\r
-            console.log(params)\r
-            _status.controller[_status.action_name](id, params)\r
-          this[e_f] = (id, format, query_string) =>\r
-            params = @parse_query_string(query_string)\r
-            params['format'] = format\r
-            console.log(id)\r
-            console.log(params)\r
-            _status.controller[_status.action_name](id, params)\r
-          c = _status.controller_name\r
-          a = _status.action_name\r
-          q = '?*query_string'\r
-          i = '\/([0-9]+)'\r
-          c_id_a_url = c + '/:id/' + a\r
-          c_id_a_f_url = c + '/:id/' + a + '.:format'\r
-          c_id_a_q_url = c_id_a_url + q\r
-          c_id_a_q_url = c_id_a_url + '.:format' + q\r
-          @route(c_id_a_q_url, e_f)\r
-          @route(c_id_a_q_url, e)\r
-          @route(c_id_a_f_url, e_f)\r
-          @route(c_id_a_url, e)\r
-          if a == 'show'\r
-            c_id_url = c + '/:id'\r
-            c_id_q_url = c_id_url + q\r
-            @route(c_id_q_url, e)\r
-            @route(c_id_url, e)\r
-\r
index 89989e4..197fc09 100644 (file)
@@ -57,14 +57,14 @@ class Pettanr.Views.Balloon.Show extends Backbone.View
     this.$el.append(rb.render().el)\r
   \r
   click_show: () ->\r
-    window.router.navigate(@item.show_url(), true)\r
+    @trigger('navigate', @item.show_url())\r
   \r
   click_author: () ->\r
-    window.router.navigate(@panel.author().show_url(), true)\r
+    @trigger('navigate', @panel.author().show_url())\r
   \r
   click_prof: () ->\r
-    window.router.navigate(@item.prof_url(), true)\r
+    @trigger('navigate', @item.prof_url())\r
   \r
   click_credit_icon: (item) ->\r
-    window.router.navigate(item.show_url(), true)\r
+    @trigger('navigate', item.show_url())\r
   \r
index e983de6..dad6329 100644 (file)
@@ -29,6 +29,12 @@ class Pettanr.Views.Comic.Show extends Backbone.View
     })\r
     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
     @owner = new Pettanr.Views.Comic.ShowModule.Owner({item: @item, operators: @operators})\r
+    @listenTo(@header, 'click:icon', @click_show)\r
+    @listenTo(@header, 'click:caption', @click_show)\r
+    @listenTo(@header, 'click:prof', @click_prof)\r
+    @listenTo(@author, 'click:author', @click_author)\r
+    @listenTo(@owner, 'click:edit', @click_edit)\r
+    @listenTo(@owner, 'click:destroy', @click_destroy)\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -37,3 +43,18 @@ class Pettanr.Views.Comic.Show extends Backbone.View
     this.$el.append(@owner.render().el) if @item.is_own(@operators)\r
     this\r
   \r
+  click_show: () ->\r
+    @trigger('navigate', @item.show_url())\r
+  \r
+  click_author: () ->\r
+    @trigger('navigate', @panel.author().show_url())\r
+  \r
+  click_prof: () ->\r
+    @trigger('navigate', @item.prof_url())\r
+  \r
+  click_edit: () ->\r
+    @trigger('navigate', @item.edit_url())\r
+  \r
+  click_destroy: () ->\r
+    @trigger('navigate', @item.destroy_url())\r
+  \r
index c0cc3ca..90eaeb8 100644 (file)
@@ -55,14 +55,14 @@ class Pettanr.Views.GroundColor.Show extends Backbone.View
     this.$el.append(rb.render().el)\r
   \r
   click_show: () ->\r
-    window.router.navigate(@item.show_url(), true)\r
+    @trigger('navigate', @item.show_url())\r
   \r
   click_author: () ->\r
-    window.router.navigate(@panel.author().show_url(), true)\r
+    @trigger('navigate', @panel.author().show_url())\r
   \r
   click_prof: () ->\r
-    window.router.navigate(@item.prof_url(), true)\r
+    @trigger('navigate', @item.prof_url())\r
   \r
   click_credit_icon: (item) ->\r
-    window.router.navigate(item.show_url(), true)\r
+    @trigger('navigate', item.show_url())\r
   \r
index 833dcb0..d3e62e5 100644 (file)
@@ -55,14 +55,14 @@ class Pettanr.Views.GroundPicture.Show extends Backbone.View
     this.$el.append(rb.render().el)\r
   \r
   click_show: () ->\r
-    window.router.navigate(@item.show_url(), true)\r
+    @trigger('navigate', @item.show_url())\r
   \r
   click_author: () ->\r
-    window.router.navigate(@panel.author().show_url(), true)\r
+    @trigger('navigate', @panel.author().show_url())\r
   \r
   click_prof: () ->\r
-    window.router.navigate(@item.prof_url(), true)\r
+    @trigger('navigate', @item.prof_url())\r
   \r
   click_credit_icon: (item) ->\r
-    window.router.navigate(item.show_url(), true)\r
+    @trigger('navigate', item.show_url())\r
   \r
diff --git a/app/assets/javascripts/views/layout.js.coffee b/app/assets/javascripts/views/layout.js.coffee
new file mode 100644 (file)
index 0000000..ae2903c
--- /dev/null
@@ -0,0 +1,148 @@
+class Pettanr.Views.Layout\r
+class Pettanr.Views.Layout.Base extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'layout-base'\r
+  \r
+  initialize: (options) ->\r
+    @operators = new Pettanr.Operator({})\r
+    # router for refresh body\r
+    @global_router = new Pettanr.GlobalRouter()\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
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(@header.render().el)\r
+    this.$el.append(@body.render().el)\r
+    this.$el.append(@footer.render().el)\r
+    this\r
+  \r
+  start: () ->\r
+    # check current user signed in?\r
+    # callback sign_in_success from users controller if signed in\r
+    @local_router.navigate('users/test')\r
+  \r
+  fire: (refresh_function, params) ->\r
+    c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
+    controller = new c(@operators)\r
+    controller.params = params\r
+    @listenTo(controller, 'ready', refresh_function)\r
+    @listenTo(controller, 'retitle', @retitle)\r
+    @listenTo(controller, 'sign_in:success', @sign_in_success)\r
+    @listenTo(controller, 'sign_in:fail', @sign_in_fail)\r
+    controller[params['action']]()\r
+  \r
+  fire_for_header: (params) ->\r
+    @fire(@refresh_header, params)\r
+  \r
+  fire_for_body: (params) ->\r
+    @fire(@refresh_body, 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
+    @operators.init({\r
+      user: user, \r
+      author: author, \r
+      artist: artist\r
+    })\r
+  \r
+  sign_in_success: (user, response) ->\r
+    @init_operators(user)\r
+  \r
+  sign_in_fail: (user, response) ->\r
+    false\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
+    @header.refresh(view)\r
+  \r
+  refresh_body: (view) ->\r
+    @body.refresh(view)\r
+  \r
+  header_class: () ->\r
+    null\r
+  \r
+  body_class: () ->\r
+    null\r
+  \r
+  footer_class: () ->\r
+    null\r
+  \r
+class Pettanr.Views.Layout.Sns extends Pettanr.Views.Layout.Base\r
+  className: 'layout-sns'\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @listenTo(@header, 'navigate', @header_navigate)\r
+    @listenTo(@body, 'navigate', @body_navigate)\r
+  \r
+  start: () ->\r
+    # initial page\r
+    super()\r
+  \r
+  sign_in_success: (user, response) ->\r
+    super(user, response)\r
+    # navigate users/account\r
+    # callback from fire to refresh_header\r
+    @header_router.navigate('users/account')\r
+    # navigate home\r
+    # callback from fire to refresh_body\r
+    @local_router.navigate('')\r
+  \r
+  sign_in_fail: (user, response) ->\r
+    @header.navigate('users/guest')\r
+    @body.navigate('user_seeeions/new')\r
+  \r
+  header_navigate: (url) ->\r
+    @global_router.navigate(url, true)\r
+  \r
+  body_navigate: (url) ->\r
+    @global_router.navigate(url, true)\r
+  \r
+  header_class: () ->\r
+    Pettanr.Views.Layout.Sns.Header\r
+  \r
+  body_class: () ->\r
+    Pettanr.Views.Layout.Sns.Body\r
+  \r
+  footer_class: () ->\r
+    Pettanr.Views.Layout.Sns.Footer\r
+  \r
+class Pettanr.Views.Layout.Blog extends Pettanr.Views.Layout.Base\r
+  className: 'layout-blog'\r
+  \r
+  start: () ->\r
+    # initial page\r
+    @router.navigate('users/sign_in')\r
+    @header.navigate('users/guest')\r
+    @body.navigate('top/demo')\r
+  \r
+  sign_in_fail: (user, response) ->\r
+    view = new Pettanr.Views.UserSeeeion.New({\r
+      operators: @operators\r
+    })\r
+    view.render()\r
+    @body.navigate('top/demo')\r
+  \r
+  header_class: () ->\r
+    Pettanr.Views.Layout.Blog.Header\r
+  \r
+  body_class: () ->\r
+    Pettanr.Views.Layout.Blog.Body\r
+  \r
+  footer_class: () ->\r
+    Pettanr.Views.Layout.Blog.Footer\r
+  \r
diff --git a/app/assets/javascripts/views/layouts/blog.js.coffee b/app/assets/javascripts/views/layouts/blog.js.coffee
new file mode 100644 (file)
index 0000000..d521ab3
--- /dev/null
@@ -0,0 +1,82 @@
+class Pettanr.Views.Layout.Blog.Header extends Backbone.View\r
+  tagName: 'div'\r
+  id: 'header'\r
+  \r
+  initialize: (options) ->\r
+    @operators = options.operators\r
+    @router = new Pettanr.Router()\r
+    @listenTo(@router, 'fire', @fire)\r
+  \r
+  render: () ->\r
+    this.$el.html('xx')\r
+    this\r
+  \r
+  fire: (params) ->\r
+    c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
+    controller = new c(@operators)\r
+    controller.params = params\r
+    @listenTo(controller, 'ready', @refresh)\r
+    @listenTo(controller, 'retitle', @retitle)\r
+    controller[params['action']]()\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: (view) ->\r
+    @listenTo(view, 'navigate', @navigate)\r
+    this.$el.html(view.el)\r
+  \r
+  refresh: () ->\r
+  \r
+  sign_out: () ->\r
+  \r
+  navigate: (url) ->\r
+    @router.navigate(url, {trigger: true, replace: false})\r
+    @trigger('navigate', url)\r
+  \r
+class Pettanr.Views.Layout.Blog.Body extends Backbone.View\r
+  tagName: 'div'\r
+  id: 'body'\r
+  \r
+  initialize: (options) ->\r
+    @operators = options.operators\r
+    @router = new Pettanr.Router()\r
+    @listenTo(@router, 'fire', @fire)\r
+  \r
+  render: () ->\r
+    this.$el.html('cc')\r
+    this\r
+  \r
+  fire: (params) ->\r
+    c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
+    controller = new c(@operators)\r
+    controller.params = params\r
+    @listenTo(controller, 'ready', @refresh)\r
+    @listenTo(controller, 'retitle', @retitle)\r
+    controller[params['action']]()\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: (view) ->\r
+    @listenTo(view, 'navigate', @navigate)\r
+    this.$el.html(view.el)\r
+  \r
+  navigate: (url) ->\r
+    @router.navigate(url, {trigger: true, replace: false})\r
+    @trigger('navigate', url)\r
+  \r
+class Pettanr.Views.Layout.Blog.Footer extends Backbone.View\r
+  tagName: 'div'\r
+  id: 'footer'\r
+  \r
+  initialize: (options) ->\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/views/layouts/default.js.coffee b/app/assets/javascripts/views/layouts/default.js.coffee
deleted file mode 100644 (file)
index fbaab18..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-class Pettanr.Views.Layout\r
-class Pettanr.Views.Layout.Default extends Backbone.View\r
-  tagName: 'div'\r
-  \r
-  initialize: (options) ->\r
-    @operators = new Pettanr.Operator({})\r
-    @router = new Pettanr.Router()\r
-    @listenTo(@router, 'fire', @fire)\r
-    @header = new Pettanr.Views.Layout.Default.Header({operators: @operators})\r
-    @body = new Pettanr.Views.Layout.Default.Body({operators: @operators})\r
-    @footer = new Pettanr.Views.Layout.Default.Footer()\r
-    @listenTo(@body, 'refresh', @refresh)\r
-    @listenTo(@body, 'refresh:top', @refresh_top)\r
-  \r
-  render: () ->\r
-    this.$el.html('zz')\r
-    this.$el.append(@header.render().el)\r
-    this.$el.append(@body.render().el)\r
-    this.$el.append(@footer.render().el)\r
-    this\r
-  \r
-  start: () ->\r
-    # initial page\r
-    @router.navigate('users/sign_in')\r
-    @header.navigate('users/sign_in')\r
-    @body.navigate('top/demo')\r
-  \r
-  fire: (params) ->\r
-    c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
-    controller = new c(@operators)\r
-    controller.params = params\r
-    @listenTo(controller, 'ready', @refresh)\r
-    @listenTo(controller, 'retitle', @retitle)\r
-    @listenTo(controller, 'sign_in:success', @sign_in_success)\r
-    @listenTo(controller, 'sign_in:fail', @sign_in_fail)\r
-    controller[params['action']]()\r
-  \r
-  sign_in_success: (user, response) ->\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
-    @operators.init({\r
-      user: user, \r
-      author: author, \r
-      artist: artist\r
-    })\r
-    view = new Pettanr.Views.User.Account({\r
-      item: @item,\r
-      operators: @operators\r
-    })\r
-    @header.navigate('users/account')\r
-    @body.navigate('')\r
-  \r
-  sign_in_fail: (user, response) ->\r
-    view = new Pettanr.Views.UserSeeeion.New({\r
-      operators: @operators\r
-    })\r
-    view.render()\r
-    @body.navigate('users/index')\r
-  \r
-class Pettanr.Views.Layout.Default.Header extends Backbone.View\r
-  tagName: 'div'\r
-  id: 'header'\r
-  \r
-  initialize: (options) ->\r
-    @operators = options.operators\r
-    @router = new Pettanr.Router()\r
-    @listenTo(@router, 'fire', @fire)\r
-  \r
-  render: () ->\r
-    this.$el.html('xx')\r
-    this\r
-  \r
-  fire: (params) ->\r
-    c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
-    controller = new c(@operators)\r
-    controller.params = params\r
-    @listenTo(controller, 'ready', @refresh)\r
-    @listenTo(controller, 'retitle', @retitle)\r
-    controller[params['action']]()\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: (view) ->\r
-    @listenTo(view, 'navigate', @navigate)\r
-    this.$el.html(view.el)\r
-  \r
-  refresh: () ->\r
-  \r
-  sign_out: () ->\r
-  \r
-  navigate: (url) ->\r
-    @router.navigate(url, {trigger: true, replace: false})\r
-    @trigger('navigate', url)\r
-  \r
-class Pettanr.Views.Layout.Default.Body extends Backbone.View\r
-  tagName: 'div'\r
-  id: 'body'\r
-  \r
-  initialize: (options) ->\r
-    @operators = options.operators\r
-    @router = new Pettanr.Router()\r
-    @listenTo(@router, 'fire', @fire)\r
-  \r
-  render: () ->\r
-    this.$el.html('cc')\r
-    this\r
-  \r
-  fire: (params) ->\r
-    c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
-    controller = new c(@operators)\r
-    controller.params = params\r
-    @listenTo(controller, 'ready', @refresh)\r
-    @listenTo(controller, 'retitle', @retitle)\r
-    controller[params['action']]()\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: (view) ->\r
-    @listenTo(view, 'navigate', @navigate)\r
-    this.$el.html(view.el)\r
-  \r
-  navigate: (url) ->\r
-    @router.navigate(url)\r
-    @trigger('navigate', url)\r
-  \r
-class Pettanr.Views.Layout.Default.Footer extends Backbone.View\r
-  tagName: 'div'\r
-  id: 'footer'\r
-  \r
-  initialize: (options) ->\r
-  \r
-  render: () ->\r
-    this.$el.html('')\r
-    this\r
-  \r
diff --git a/app/assets/javascripts/views/layouts/sns.js.coffee b/app/assets/javascripts/views/layouts/sns.js.coffee
new file mode 100644 (file)
index 0000000..69ef296
--- /dev/null
@@ -0,0 +1,54 @@
+class Pettanr.Views.Layout.Sns.Header extends Backbone.View\r
+  tagName: 'div'\r
+  id: 'header'\r
+  \r
+  initialize: (options) ->\r
+    @parent = options.parent\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
+  refresh: (view) ->\r
+    @listenTo(view, 'navigate', @navigate)\r
+    this.$el.html(view.el)\r
+  \r
+  sign_out: () ->\r
+  \r
+  navigate: (url) ->\r
+    @trigger('navigate', url)\r
+  \r
+  operators: () ->\r
+    @parent.operators\r
+  \r
+class Pettanr.Views.Layout.Sns.Body extends Backbone.View\r
+  tagName: 'div'\r
+  id: 'body'\r
+  \r
+  initialize: (options) ->\r
+    @parent = options.parent\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
+  refresh: (view) ->\r
+    @listenTo(view, 'navigate', @navigate)\r
+    this.$el.html(view.el)\r
+  \r
+  navigate: (url) ->\r
+    @trigger('navigate', url)\r
+  \r
+  operators: () ->\r
+    @parent.operators\r
+  \r
+class Pettanr.Views.Layout.Sns.Footer extends Backbone.View\r
+  tagName: 'div'\r
+  id: 'footer'\r
+  \r
+  initialize: (options) ->\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
index 4882564..e2e2b66 100644 (file)
@@ -55,14 +55,14 @@ class Pettanr.Views.PanelPicture.Show extends Backbone.View
     this.$el.append(rb.render().el)\r
   \r
   click_show: () ->\r
-    window.router.navigate(@item.show_url(), true)\r
+    @trigger('navigate', @item.show_url())\r
   \r
   click_author: () ->\r
-    window.router.navigate(@panel.author().show_url(), true)\r
+    @trigger('navigate', @panel.author().show_url())\r
   \r
   click_prof: () ->\r
-    window.router.navigate(@item.prof_url(), true)\r
+    @trigger('navigate', @item.prof_url())\r
   \r
   click_credit_icon: (item) ->\r
-    window.router.navigate(item.show_url(), true)\r
+    @trigger('navigate', item.show_url())\r
   \r
index bbfb829..bd90eb3 100644 (file)
@@ -48,19 +48,19 @@ class Pettanr.Views.Panel.Show extends Backbone.View
     this\r
   \r
   click_show: () ->\r
-    window.router.navigate(@panel.show_url(), true)\r
+    @trigger('navigate', @item.show_url())\r
   \r
   click_author: () ->\r
-    window.router.navigate(@panel.author().show_url(), true)\r
+    @trigger('navigate', @panel.author().show_url())\r
   \r
   click_edit: () ->\r
-    window.router.navigate(@panel.edit_url(), true)\r
+    @trigger('navigate', @panel.edit_url())\r
   \r
   click_prof: () ->\r
-    window.router.navigate(@panel.prof_url(), true)\r
+    @trigger('navigate', @item.prof_url())\r
   \r
   click_credit_icon: (item) ->\r
-    window.router.navigate(item.show_url(), true)\r
+    @trigger('navigate', item.show_url())\r
   \r
 class Pettanr.Views.Panel.ShowModule\r
 class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header\r
index 5de1866..7be4a15 100644 (file)
@@ -41,20 +41,20 @@ class Pettanr.Views.Scroll.Show extends Backbone.View
     this\r
   \r
   click_show: () ->\r
-    window.router.navigate(@item.show_url(), true)\r
+    @trigger('navigate', @item.show_url())\r
   \r
   click_play: () ->\r
-    window.router.navigate(@item.play_url(), true)\r
+    @trigger('navigate', @item.play_url())\r
   \r
   click_prof: () ->\r
-    window.router.navigate(@item.prof_url(), true)\r
+    @trigger('navigate', @item.prof_url())\r
   \r
   click_author: () ->\r
-    window.router.navigate(@item.author().show_url(), true)\r
+    @trigger('navigate', @item.author().show_url())\r
   \r
   click_edit: () ->\r
-    window.router.navigate(@item.edit_url(), true)\r
+    @trigger('navigate', @item.edit_url())\r
   \r
   click_destroy: () ->\r
-    window.router.navigate(@item.destroy_url(), true)\r
+    @trigger('navigate', @item.destroy_url())\r
   \r
index 59dd265..ffb880d 100644 (file)
@@ -1,3 +1,4 @@
+# form for user sign in\r
 class Pettanr.Views.UserSeeeion.New extends Backbone.View\r
   tagName: 'div'\r
   \r
index 4003fa8..77d05e9 100644 (file)
@@ -1,3 +1,4 @@
+# page header for signed in user\r
 class Pettanr.Views.User.Account extends Backbone.View\r
   tagName: 'div'\r
   \r
@@ -34,12 +35,6 @@ class Pettanr.Views.User.Account extends Backbone.View
     @trigger('navigate', @artist_view.url())\r
   \r
   sign_out: () ->\r
-    user = new Backbone.Model({id: 0})\r
-    user.url = '/users/sign_out'\r
-    user.destroy({success: () ->\r
-      r = new Pettanr.Views.Top.Index({})\r
-      $("#header").html(r.render().el)\r
-      $("#pettanr").html('')\r
-    })\r
+    @trigger('navigate', 'users/sign_out')\r
     return false\r
   \r
@@ -1,4 +1,5 @@
-class Pettanr.Views.Top.Index extends Backbone.View\r
+# page header for guest\r
+class Pettanr.Views.User.Guest extends Backbone.View\r
   tagName: 'div'\r
   className: 'account'\r
   \r
@@ -17,10 +18,10 @@ class Pettanr.Views.Top.Index extends Backbone.View
     this\r
   \r
   click_logo: () ->\r
-    window.router.navigate('', true)\r
+    @trigger('navigate', '')\r
     return false\r
   \r
   click_sign_in: () ->\r
-    window.router.navigate('users/sign_in', true)\r
+    @trigger('navigate', 'user_sessions/new')\r
     return false\r
   \r
diff --git a/app/assets/javascripts/views/users/index.js.coffee b/app/assets/javascripts/views/users/index.js.coffee
deleted file mode 100644 (file)
index 878b4f4..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-class Pettanr.Views.User.Index extends Backbone.View\r
-  tagName: 'div'\r
-  \r
-  initialize: (options) ->\r
-    @operators = options.operators\r
-  \r
-  render: () ->\r
-    this.$el.html('')\r
-    t = _.template($("#sign_in").html())\r
-    this.$el.append(t())\r
-    @delegateEvents({'submit': 'sign_in'})\r
-    this\r
-  \r
-  sign_in: () ->\r
-    m = $('#user_email').val()\r
-    p = $('#user_password').val()\r
-    user = new Pettanr.User.Current()\r
-    user.save({user: {email: m, password: p}}, (current_user) ->\r
-      r = new Pettanr.Views.Top.Account({operators: window.operators})\r
-      $('#account').html(r.render().el)\r
-      window.router.home()\r
-    )\r
-    return false\r
-  \r
index 90d8ea3..3b2499c 100644 (file)
@@ -413,9 +413,9 @@ font-family : monospace;
 }
 
 .filer {
-    list-style-type: none;
-    margin: 0;
-    padding: 0;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
 }
 
 .filer-head {
@@ -430,6 +430,9 @@ font-family : monospace;
   float: left;
 }
 
+.filer-body {
+  padding-left: 0;
+}
 .filer-item {
   clear: both;
   margin: 0;