OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
authoryasushiito <yas@pen-chan.jp>
Mon, 11 Aug 2014 08:38:17 +0000 (17:38 +0900)
committeryasushiito <yas@pen-chan.jp>
Mon, 11 Aug 2014 08:38:17 +0000 (17:38 +0900)
117 files changed:
Gemfile
app/assets/javascripts/ap.js
app/assets/javascripts/controllers/admin.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/artist.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/author.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/balloon.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/comic.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/demander.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/ground_color.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/ground_picture.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/license.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/license_group.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/original_picture.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/original_picture_license.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/original_picture_license_group.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/panel.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/panel_picture.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/picture.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/resource_picture.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/scroll.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/scroll_panel.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/sheet.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/sheet_panel.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/speech.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/speech_balloon.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/speech_balloon_template.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/story.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/story_sheet.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/system_picture.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/user.js.coffee [new file with mode: 0644]
app/assets/javascripts/controllers/writing_format.js.coffee [new file with mode: 0644]
app/assets/javascripts/i18n/translations.js [new file with mode: 0644]
app/assets/javascripts/local_manifest/filer/caption/default/link/action.js.coffee
app/assets/javascripts/local_manifest/filer/caption/default/link/base.js.coffee
app/assets/javascripts/local_manifest/filer/symbol/default/face/base.js.coffee
app/assets/javascripts/local_manifest/filer/symbol/default/face/image.js.coffee
app/assets/javascripts/local_manifest/filer/symbol/default/link/action.js.coffee
app/assets/javascripts/local_manifest/filer/symbol/default/link/base.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.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/none.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/none.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/url_column.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/none.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/template.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/date.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/date/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/date/default.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/date/none.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/edit.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/none.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/template.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/icon.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/none.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/summary.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/base.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/face.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/action.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/none.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/url_column.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/template.js.coffee
app/assets/javascripts/locmare/filer/body/file_header.js.coffee
app/assets/javascripts/locmare/filer/body/file_header/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_header/show.js.coffee
app/assets/javascripts/main.js.coffee
app/assets/javascripts/models/admin.js.coffee [new file with mode: 0644]
app/assets/javascripts/models/artist.js.coffee
app/assets/javascripts/models/author.js.coffee
app/assets/javascripts/models/demander.js.coffee [new file with mode: 0644]
app/assets/javascripts/models/folders.js.coffee [new file with mode: 0644]
app/assets/javascripts/models/scroll.js.coffee
app/assets/javascripts/models/user.js.coffee [new file with mode: 0644]
app/assets/javascripts/pettanr.js.coffee
app/assets/javascripts/pettanr/operator.js.coffee [new file with mode: 0644]
app/assets/javascripts/routes.js.coffee [new file with mode: 0644]
app/assets/javascripts/work/controllers.js.coffee.erb
app/controllers/folders_controller.rb
app/controllers/top_controller.rb
app/views/layouts/ap.html.erb
app/views/top/ap.html.erb
app/views/top/index.html.erb
app/views/top/menu.html.erb [new file with mode: 0644]
config/i18n-js.yml [new file with mode: 0644]
config/routes.rb
public/manifest.json
spec/factories/panel.rb
spec/factories/writing_format.rb
spec/manifests/speech_balloon_spec.rb
spec/peta/leaf_spec.rb
spec/peta/root_spec.rb
spec/peta/template_spec.rb

diff --git a/Gemfile b/Gemfile
index 3e5920c..9eb0e40 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -26,7 +26,7 @@ gem 'pettanr_simple_format'
 
 # Bundle edge Rails instead:
 # gem 'rails',     :git => 'git://github.com/rails/rails.git'
-
+gem 'i18n-js'
 
 # Gems used only for assets and not required
 # in production environments by default.
index 23d3b9d..8453608 100644 (file)
@@ -11,6 +11,7 @@
 //= require textchange
 //= require underscore
 //= require backbone
+//= require i18n
 //= require ./manifest_base/manifest_base
 //= require ./manifest_base/base
 //= require ./manifest_base/factory
 //= require ./peta/leaf
 //= require ./peta/editize
 //= require ./pettanr
+//= require ./routes
+//= require ./i18n/translations
+//     require_directory ./controllers
 //= require_directory ./models
 //= require_directory ./views
+//= require_directory ./pettanr
 //= require main
diff --git a/app/assets/javascripts/controllers/admin.js.coffee b/app/assets/javascripts/controllers/admin.js.coffee
new file mode 100644 (file)
index 0000000..d511faf
--- /dev/null
@@ -0,0 +1,9 @@
+class Pettanr.Admin extends Backbone.Model\r
+  \r
+  defaults: {\r
+    id: null\r
+  } \r
+  \r
+  initialize: () ->\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/artist.js.coffee b/app/assets/javascripts/controllers/artist.js.coffee
new file mode 100644 (file)
index 0000000..fe13d2f
--- /dev/null
@@ -0,0 +1,21 @@
+class Pettanr.ArtistsController extends Pettanr.AppController\r
+  \r
+  index: () ->\r
+    filer_list\r
+  \r
+  show_html_format: (format) -> \r
+  \r
+  show: () ->\r
+  \r
+  count: () ->\r
+  \r
+  new: () ->\r
+  \r
+  edit: () ->\r
+  \r
+  create: () ->\r
+  \r
+  update: () ->\r
+  \r
+  destroy: () ->\r
+    \r
diff --git a/app/assets/javascripts/controllers/author.js.coffee b/app/assets/javascripts/controllers/author.js.coffee
new file mode 100644 (file)
index 0000000..8a6d2c3
--- /dev/null
@@ -0,0 +1,19 @@
+class Pettanr.Author extends Peta.Owner\r
+  url: '/authors/'\r
+  \r
+  @singular: () ->\r
+    'Author'\r
+  \r
+  @plural: () ->\r
+    'Authors'\r
+  \r
+  defaults: {\r
+    id: null,\r
+    name: 'no name'\r
+  } \r
+  \r
+  initialize: () ->\r
+    if @id\r
+      @url = @url + @id\r
+\r
+\r
diff --git a/app/assets/javascripts/controllers/balloon.js.coffee b/app/assets/javascripts/controllers/balloon.js.coffee
new file mode 100644 (file)
index 0000000..918997c
--- /dev/null
@@ -0,0 +1,2 @@
+class Pettanr.Balloon extends Peta.Element\r
+\r
diff --git a/app/assets/javascripts/controllers/comic.js.coffee b/app/assets/javascripts/controllers/comic.js.coffee
new file mode 100644 (file)
index 0000000..4dc49b7
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.Comic extends Peta.Binder\r
+  @single: () ->\r
+    'Comic'\r
+  \r
+  @plural: () ->\r
+    'Comics'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/demander.js.coffee b/app/assets/javascripts/controllers/demander.js.coffee
new file mode 100644 (file)
index 0000000..59d3484
--- /dev/null
@@ -0,0 +1,9 @@
+class Pettanr.Demander extends Backbone.Model\r
+  \r
+  defaults: {\r
+    id: null\r
+  } \r
+  \r
+  initialize: () ->\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/ground_color.js.coffee b/app/assets/javascripts/controllers/ground_color.js.coffee
new file mode 100644 (file)
index 0000000..74aae4e
--- /dev/null
@@ -0,0 +1,2 @@
+class Pettanr.GroundColor extends Peta.Element\r
+\r
diff --git a/app/assets/javascripts/controllers/ground_picture.js.coffee b/app/assets/javascripts/controllers/ground_picture.js.coffee
new file mode 100644 (file)
index 0000000..3e984b7
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.GroundPicture extends Peta.Element\r
+  @single: () ->\r
+    'GroundPicture'\r
+  \r
+  @plural: () ->\r
+    'GroundPictures'\r
+  \r
+  @colum_structures: ->\r
+    {}\r
+  \r
+  defaults: {\r
+    x: 11\r
+  } \r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/license.js.coffee b/app/assets/javascripts/controllers/license.js.coffee
new file mode 100644 (file)
index 0000000..214c4ac
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.License extends Peta.SystemResource\r
+  @single: () ->\r
+    'License'\r
+  \r
+  @plural: () ->\r
+    'Licenses'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/license_group.js.coffee b/app/assets/javascripts/controllers/license_group.js.coffee
new file mode 100644 (file)
index 0000000..b097b38
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.LicenseGroup extends Peta.Template\r
+  @single: () ->\r
+    'LicenseGroup'\r
+  \r
+  @plural: () ->\r
+    'LicenseGroups'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/original_picture.js.coffee b/app/assets/javascripts/controllers/original_picture.js.coffee
new file mode 100644 (file)
index 0000000..b1f95aa
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.OriginalPicture extends Peta.Content\r
+  @single: () ->\r
+    'OriginalPicture'\r
+  \r
+  @plural: () ->\r
+    'OriginalPictures'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/original_picture_license.js.coffee b/app/assets/javascripts/controllers/original_picture_license.js.coffee
new file mode 100644 (file)
index 0000000..8fc98a4
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.OriginalPictureLicense extends Peta.Item\r
+  @single: () ->\r
+    'OriginalPictureLicense'\r
+  \r
+  @plural: () ->\r
+    'OriginalPictureLicenses'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/original_picture_license_group.js.coffee b/app/assets/javascripts/controllers/original_picture_license_group.js.coffee
new file mode 100644 (file)
index 0000000..cdd907a
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.OriginalPictureLicenseGroup extends Peta.Item\r
+  @single: () ->\r
+    'OriginalPictureLicenseGroup'\r
+  \r
+  @plural: () ->\r
+    'OriginalPictureLicenseGroups'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/panel.js.coffee b/app/assets/javascripts/controllers/panel.js.coffee
new file mode 100644 (file)
index 0000000..8b5dfc6
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.Panel extends Peta.Root\r
+  @single: () ->\r
+    'Panel'\r
+  \r
+  @plural: () ->\r
+    'Panels'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/panel_picture.js.coffee b/app/assets/javascripts/controllers/panel_picture.js.coffee
new file mode 100644 (file)
index 0000000..86d9642
--- /dev/null
@@ -0,0 +1,18 @@
+class Pettanr.PanelPicture extends Peta.Element\r
+  @single: () ->\r
+    'PanelPicture'\r
+  \r
+  @plural: () ->\r
+    'PanelPictures'\r
+  \r
+  @colum_structures: ->\r
+    {}\r
+  \r
+  defaults: {\r
+    x: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to this world")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/picture.js.coffee b/app/assets/javascripts/controllers/picture.js.coffee
new file mode 100644 (file)
index 0000000..27503a8
--- /dev/null
@@ -0,0 +1,14 @@
+class Pettanr.Picture extends Peta.Content\r
+  @single: () ->\r
+    'Picture'\r
+  \r
+  @plural: () ->\r
+    'Pictures'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+\r
diff --git a/app/assets/javascripts/controllers/resource_picture.js.coffee b/app/assets/javascripts/controllers/resource_picture.js.coffee
new file mode 100644 (file)
index 0000000..0a531b3
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.ResourcePicture extends Peta.Content\r
+  @single: () ->\r
+    'ResourcePicture'\r
+  \r
+  @plural: () ->\r
+    'ResourcePictures'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/scroll.js.coffee b/app/assets/javascripts/controllers/scroll.js.coffee
new file mode 100644 (file)
index 0000000..00fd469
--- /dev/null
@@ -0,0 +1,2 @@
+class Pettanr.ScrollsController extends Pettanr.AppController\r
+\r
diff --git a/app/assets/javascripts/controllers/scroll_panel.js.coffee b/app/assets/javascripts/controllers/scroll_panel.js.coffee
new file mode 100644 (file)
index 0000000..059d2dc
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.ScrollPanel extends Peta.Leaf\r
+  @single: () ->\r
+    'ScrollPanel'\r
+  \r
+  @plural: () ->\r
+    'ScrollPanels'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/sheet.js.coffee b/app/assets/javascripts/controllers/sheet.js.coffee
new file mode 100644 (file)
index 0000000..28cc944
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.Sheet extends Peta.Root\r
+  @single: () ->\r
+    'Sheet'\r
+  \r
+  @plural: () ->\r
+    'Sheets'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/sheet_panel.js.coffee b/app/assets/javascripts/controllers/sheet_panel.js.coffee
new file mode 100644 (file)
index 0000000..4e75dd3
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.SheetPanel extends Peta.Leaf\r
+  @single: () ->\r
+    'SheetPanel'\r
+  \r
+  @plural: () ->\r
+    'SheetPanels'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/speech.js.coffee b/app/assets/javascripts/controllers/speech.js.coffee
new file mode 100644 (file)
index 0000000..4e26b4f
--- /dev/null
@@ -0,0 +1,18 @@
+class Pettanr.SpeechBalloon extends Peta.Element\r
+  @single: () ->\r
+    'Speech'\r
+  \r
+  @plural: () ->\r
+    'Speeches'\r
+  \r
+  @colum_structures: ->\r
+    {}\r
+  \r
+  defaults: {\r
+    x: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to this world")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/speech_balloon.js.coffee b/app/assets/javascripts/controllers/speech_balloon.js.coffee
new file mode 100644 (file)
index 0000000..1d0f0a5
--- /dev/null
@@ -0,0 +1,18 @@
+class Pettanr.SpeechBalloon extends Peta.Element\r
+  @single: () ->\r
+    'SpeechBalloon'\r
+  \r
+  @plural: () ->\r
+    'SpeechBalloons'\r
+  \r
+  @colum_structures: ->\r
+    {}\r
+  \r
+  defaults: {\r
+    x: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to this world")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/speech_balloon_template.js.coffee b/app/assets/javascripts/controllers/speech_balloon_template.js.coffee
new file mode 100644 (file)
index 0000000..dcf4c9f
--- /dev/null
@@ -0,0 +1,2 @@
+class Pettanr.SpeechBalloonTemplate extends Peta.Template\r
+\r
diff --git a/app/assets/javascripts/controllers/story.js.coffee b/app/assets/javascripts/controllers/story.js.coffee
new file mode 100644 (file)
index 0000000..6ab4cf1
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.Story extends Peta.Binder\r
+  @single: () ->\r
+    'Story'\r
+  \r
+  @plural: () ->\r
+    'Stories'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/story_sheet.js.coffee b/app/assets/javascripts/controllers/story_sheet.js.coffee
new file mode 100644 (file)
index 0000000..6e055f9
--- /dev/null
@@ -0,0 +1,15 @@
+class Pettanr.StorySheet extends Peta.Leaf\r
+  @single: () ->\r
+    'StorySheet'\r
+  \r
+  @plural: () ->\r
+    'StorySheets'\r
+  \r
+  defaults: {\r
+    id: 11\r
+  } \r
+  \r
+  initialize: () ->\r
+    confirm("Welcome to Panel")\r
+  \r
+\r
diff --git a/app/assets/javascripts/controllers/system_picture.js.coffee b/app/assets/javascripts/controllers/system_picture.js.coffee
new file mode 100644 (file)
index 0000000..6e08cac
--- /dev/null
@@ -0,0 +1 @@
+class Pettanr.SystemPicture extends Peta.SystemResource\r
diff --git a/app/assets/javascripts/controllers/user.js.coffee b/app/assets/javascripts/controllers/user.js.coffee
new file mode 100644 (file)
index 0000000..469fde4
--- /dev/null
@@ -0,0 +1,16 @@
+class Pettanr.User extends Backbone.Model\r
+  \r
+  url: '/users/'\r
+  \r
+  defaults: {\r
+    id: null\r
+  } \r
+  \r
+  author: () ->\r
+  \r
+  artist: () ->\r
+  \r
+  initialize: () ->\r
+    if @id\r
+      @url = @url + @id\r
+  \r
diff --git a/app/assets/javascripts/controllers/writing_format.js.coffee b/app/assets/javascripts/controllers/writing_format.js.coffee
new file mode 100644 (file)
index 0000000..bd85d8e
--- /dev/null
@@ -0,0 +1,2 @@
+class Pettanr.WritingFormat extends Peta.Template\r
+\r
diff --git a/app/assets/javascripts/i18n/translations.js b/app/assets/javascripts/i18n/translations.js
new file mode 100644 (file)
index 0000000..3a7451b
--- /dev/null
@@ -0,0 +1,2 @@
+var I18n = I18n || {};\r
+I18n.translations = {"en":{"date":{"formats":{"default":"%Y-%m-%d","short":"%b %d","long":"%B %d, %Y"},"day_names":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"abbr_day_names":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"month_names":[null,"January","February","March","April","May","June","July","August","September","October","November","December"],"abbr_month_names":[null,"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"order":["year","month","day"]},"time":{"formats":{"default":"%a, %d %b %Y %H:%M:%S %z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"},"am":"am","pm":"pm"},"support":{"array":{"words_connector":", ","two_words_connector":" and ","last_word_connector":", and "}},"errors":{"format":"%{attribute} %{message}","messages":{"inclusion":"is not included in the list","exclusion":"is reserved","invalid":"is invalid","confirmation":"doesn't match confirmation","accepted":"must be accepted","empty":"can't be empty","blank":"can't be blank","too_long":"is too long (maximum is %{count} characters)","too_short":"is too short (minimum is %{count} characters)","wrong_length":"is the wrong length (should be %{count} characters)","not_a_number":"is not a number","not_an_integer":"must be an integer","greater_than":"must be greater than %{count}","greater_than_or_equal_to":"must be greater than or equal to %{count}","equal_to":"must be equal to %{count}","less_than":"must be less than %{count}","less_than_or_equal_to":"must be less than or equal to %{count}","odd":"must be odd","even":"must be even","expired":"has expired, please request a new one","not_found":"not found","already_confirmed":"was already confirmed, please try signing in","not_locked":"was not locked","not_saved":{"one":"1 error prohibited this %{resource} from being saved:","other":"%{count} errors prohibited this %{resource} from being saved:"}}},"activerecord":{"errors":{"messages":{"taken":"has already been taken","record_invalid":"Validation failed: %{errors}"}}},"number":{"format":{"separator":".","delimiter":",","precision":3,"significant":false,"strip_insignificant_zeros":false},"currency":{"format":{"format":"%u%n","unit":"$","separator":".","delimiter":",","precision":2,"significant":false,"strip_insignificant_zeros":false}},"percentage":{"format":{"delimiter":""}},"precision":{"format":{"delimiter":""}},"human":{"format":{"delimiter":"","precision":3,"significant":true,"strip_insignificant_zeros":true},"storage_units":{"format":"%n %u","units":{"byte":{"one":"Byte","other":"Bytes"},"kb":"KB","mb":"MB","gb":"GB","tb":"TB"}},"decimal_units":{"format":"%n %u","units":{"unit":"","thousand":"Thousand","million":"Million","billion":"Billion","trillion":"Trillion","quadrillion":"Quadrillion"}}}},"datetime":{"distance_in_words":{"half_a_minute":"half a minute","less_than_x_seconds":{"one":"less than 1 second","other":"less than %{count} seconds"},"x_seconds":{"one":"1 second","other":"%{count} seconds"},"less_than_x_minutes":{"one":"less than a minute","other":"less than %{count} minutes"},"x_minutes":{"one":"1 minute","other":"%{count} minutes"},"about_x_hours":{"one":"about 1 hour","other":"about %{count} hours"},"x_days":{"one":"1 day","other":"%{count} days"},"about_x_months":{"one":"about 1 month","other":"about %{count} months"},"x_months":{"one":"1 month","other":"%{count} months"},"about_x_years":{"one":"about 1 year","other":"about %{count} years"},"over_x_years":{"one":"over 1 year","other":"over %{count} years"},"almost_x_years":{"one":"almost 1 year","other":"almost %{count} years"}},"prompts":{"year":"Year","month":"Month","day":"Day","hour":"Hour","minute":"Minute","second":"Seconds"}},"helpers":{"select":{"prompt":"Please select"},"submit":{"create":"Create %{model}","update":"Update %{model}","submit":"Save %{model}"},"button":{"create":"Create %{model}","update":"Update %{model}","submit":"Save %{model}"},"page_entries_info":{"one_page":{"display_entries":{"zero":"No %{entry_name} found","one":"Displaying <b>1</b> %{entry_name}","other":"Displaying <b>all %{count}</b> %{entry_name}"}},"more_pages":{"display_entries":"Displaying %{entry_name} <b>%{first}&nbsp;-&nbsp;%{last}</b> of <b>%{total}</b> in total"}}},"devise":{"failure":{"already_authenticated":"You are already signed in.","unauthenticated":"You need to sign in or sign up before continuing.","unconfirmed":"You have to confirm your account before continuing.","locked":"Your account is locked.","invalid":"Invalid email or password.","invalid_token":"Invalid authentication token.","timeout":"Your session expired, please sign in again to continue.","inactive":"Your account was not activated yet."},"sessions":{"signed_in":"Signed in successfully.","signed_out":"Signed out successfully."},"passwords":{"send_instructions":"You will receive an email with instructions about how to reset your password in a few minutes.","updated":"Your password was changed successfully. You are now signed in.","updated_not_active":"Your password was changed successfully.","send_paranoid_instructions":"If your e-mail exists on our database, you will receive a password recovery link on your e-mail"},"confirmations":{"send_instructions":"You will receive an email with instructions about how to confirm your account in a few minutes.","send_paranoid_instructions":"If your e-mail exists on our database, you will receive an email with instructions about how to confirm your account in a few minutes.","confirmed":"Your account was successfully confirmed. You are now signed in."},"registrations":{"signed_up":"Welcome! You have signed up successfully.","inactive_signed_up":"You have signed up successfully. However, we could not sign you in because your account is %{reason}.","updated":"You updated your account successfully.","destroyed":"Bye! Your account was successfully cancelled. We hope to see you again soon.","reasons":{"inactive":"inactive","unconfirmed":"unconfirmed","locked":"locked"}},"unlocks":{"send_instructions":"You will receive an email with instructions about how to unlock your account in a few minutes.","unlocked":"Your account was successfully unlocked. You are now signed in.","send_paranoid_instructions":"If your account exists, you will receive an email with instructions about how to unlock it in a few minutes."},"omniauth_callbacks":{"success":"Successfully authorized from %{kind} account.","failure":"Could not authorize you from %{kind} because \"%{reason}\"."},"mailer":{"confirmation_instructions":{"subject":"Confirmation instructions"},"reset_password_instructions":{"subject":"Reset password instructions"},"unlock_instructions":{"subject":"Unlock Instructions"}}},"views":{"pagination":{"first":"&laquo; First","last":"Last &raquo;","previous":"&lsaquo; Prev","next":"Next &rsaquo;","truncate":"&hellip;"}},"hello":"Hello world"},"ja":{"activerecord":{"models":{"user":"\u30e6\u30fc\u30b6","admin":"\u7ba1\u7406\u8005","demand_user":"\u501f\u624b","folder":"\u30d5\u30a9\u30eb\u30c0","scroll":"\u30b9\u30af\u30ed\u30fc\u30eb","scroll_panel":"\u30b9\u30af\u30b3\u30de","comic":"\u30b3\u30df\u30c3\u30af","comic_story":"\u30b3\u30df\u30b9\u30c8","story":"\u30b9\u30c8\u30fc\u30ea\u30fc","story_sheet":"\u30b9\u30c8\u7d19","sheet":"\u7528\u7d19","sheet_panel":"\u7d19\u30b3\u30de","panel":"\u30b3\u30de","panel_picture":"\u30b3\u30de\u7d75","speech_balloon":"\u30d5\u30ad\u30c0\u30b7","speech":"\u30bb\u30ea\u30d5","balloon":"\u30d5\u30ad\u30c0\u30b7\u67a0","ground_picture":"\u7d75\u5730","ground_color":"\u8272\u5730","original_picture":"\u539f\u753b","picture":"\u5b9f\u7d20\u6750","resource_picture":"\u7d20\u6750","original_picture_license_group":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u9078\u629e","original_picture_license":"\u30e9\u30a4\u30bb\u30f3\u30b9\u9078\u629e","speech_balloon_template":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8","writing_format":"\u8a18\u6cd5","license_group":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7","license":"\u30e9\u30a4\u30bb\u30f3\u30b9","author":"\u4f5c\u5bb6","artist":"\u7d75\u5e2b","system_picture":"\u30b7\u30b9\u30c6\u30e0\u753b\u50cf","provider":"\u8cb8\u624b","provider_status":"\u501f\u53d7\u72b6\u6cc1","demander":"\u501f\u624b","demander_status":"\u8cb8\u4e0e\u72b6\u6cc1","provider_license":"\u30e9\u30a4\u30bb\u30f3\u30b9\u5bfe\u7167\u8868","provider_artist":"\u7d75\u5e2b\u5bfe\u7167\u8868","provider_original_picture":"\u539f\u753b\u5bfe\u7167\u8868","pettanr_creative_commons_v30_licenses/attribute":"\u30af\u30ea\u30a8\u30a4\u30c6\u30a3\u30d6\u30b3\u30e2\u30f3\u30ba3.0","pettanr_pettan_commons_v01_licenses/attribute":"\u307a\u3063\u305f\u3093\u30b3\u30e2\u30f3\u30ba0.1","pettanr_pettan_protected_v01_licenses/attribute":"\u307a\u3063\u305f\u3093Protected0.1","pettanr_pettan_public_v01_licenses/attribute":"\u307a\u3063\u305f\u3093\u30d1\u30d6\u30ea\u30c3\u30af0.1","pettanr_public_domain_v01_licenses/attribute":"\u30d1\u30d6\u30ea\u30c3\u30af\u30c9\u30e1\u30a4\u30f3","pettanr_unknown_v01_licenses/attribute":"\u4e0d\u660e0.1"},"attributes":{"user":{"name":"\u30da\u30f3\u30cd\u30fc\u30e0","email":"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9","password":"\u30d1\u30b9\u30ef\u30fc\u30c9","password_confirmation":"\u78ba\u8a8d\u30d1\u30b9\u30ef\u30fc\u30c9","current_password":"\u73fe\u5728\u306e\u30d1\u30b9\u30ef\u30fc\u30c9","remember_me":"\u6b21\u56de\u304b\u3089\u81ea\u52d5\u3067\u30ed\u30b0\u30a4\u30f3","authentication_token":"\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3"},"admin":{"email":"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9","password":"\u30d1\u30b9\u30ef\u30fc\u30c9","password_confirmation":"\u78ba\u8a8d\u30d1\u30b9\u30ef\u30fc\u30c9","current_password":"\u73fe\u5728\u306e\u30d1\u30b9\u30ef\u30fc\u30c9","remember_me":"\u6b21\u56de\u304b\u3089\u81ea\u52d5\u3067\u30ed\u30b0\u30a4\u30f3","authentication_token":"\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3"},"demand_user":{"email":"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9","password":"\u30d1\u30b9\u30ef\u30fc\u30c9","password_confirmation":"\u78ba\u8a8d\u30d1\u30b9\u30ef\u30fc\u30c9","current_password":"\u73fe\u5728\u306e\u30d1\u30b9\u30ef\u30fc\u30c9","remember_me":"\u6b21\u56de\u304b\u3089\u81ea\u52d5\u3067\u30ed\u30b0\u30a4\u30f3","authentication_token":"\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3"},"folder":{"controller_name":"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u540d","action_name":"\u30a2\u30af\u30b7\u30e7\u30f3\u540d","category_id":"\u7a2e\u5225","t":"\u9806\u5e8f","parent_id":"\u89aa\u30d5\u30a9\u30eb\u30c0","lft":"\u30c4\u30ea\u30fc\u5de6","rgt":"\u30c4\u30ea\u30fc\u53f3","depth":"\u30c4\u30ea\u30fc\u6df1\u3055","created_at":"\u66f4\u65b0","updated_at":"\u4f5c\u6210"},"scroll":{"title":"\u30bf\u30a4\u30c8\u30eb","description":"\u3042\u3089\u3059\u3058","visible":"\u516c\u958b","author_id":"\u4f5c\u5bb6","created_at":"\u66f4\u65b0","updated_at":"\u4f5c\u6210"},"scroll_panel":{"scroll_id":"\u30b9\u30af\u30ed\u30fc\u30eb","panel_id":"\u30b3\u30de","t":"No.","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"comic":{"title":"\u30bf\u30a4\u30c8\u30eb","description":"\u3042\u3089\u3059\u3058","visible":"\u516c\u958b","author_id":"\u4f5c\u5bb6","created_at":"\u66f4\u65b0","updated_at":"\u4f5c\u6210"},"comic_story":{"comic_id":"\u30b3\u30df\u30c3\u30af","story_id":"\u30b9\u30c8\u30fc\u30ea\u30fc","t":"No.","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"story":{"comic_id":"\u30b3\u30df\u30c3\u30af","title":"\u30bf\u30a4\u30c8\u30eb","description":"\u3042\u3089\u3059\u3058","visible":"\u516c\u958b","author_id":"\u4f5c\u5bb6","t":"No.","created_at":"\u66f4\u65b0","updated_at":"\u4f5c\u6210"},"story_sheet":{"story_id":"\u30b9\u30c8\u30fc\u30ea\u30fc","sheet_id":"\u7528\u7d19","t":"No.","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"sheet":{"caption":"\u8981\u7d04","width":"\u5e45","height":"\u9ad8\u3055","visible":"\u516c\u958b","author_id":"\u7de8\u96c6\u8005","created_at":"\u66f4\u65b0","updated_at":"\u4f5c\u6210"},"sheet_panel":{"sheet_id":"\u7528\u7d19","panel_id":"\u30b3\u30de","x":"X","y":"Y","z":"\u91cd\u306a\u308a","t":"No.","author_id":"\u7de8\u96c6\u8005","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"panel":{"width":"\u5e45","height":"\u9ad8\u3055","border":"\u67a0","x":"X","y":"Y","z":"\u91cd\u306a\u308a","caption":"\u8981\u7d04","publish":"\u516c\u958b","author_id":"\u4f5c\u5bb6","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"panel_picture":{"panel_id":"\u30b3\u30de","picture_id":"\u5b9f\u7d20\u6750","link":"\u30ea\u30f3\u30af","x":"X","y":"Y","z":"\u91cd\u306a\u308a","t":"\u8a71\u9806","width":"\u5e45","height":"\u9ad8\u3055","caption":"\u69d8\u5b50","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"speech_balloon":{"panel_id":"\u30b3\u30de","speech_balloon_template_id":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8","speech_balloon_template_module_name":"\u30d5\u30ad\u30c0\u30b7\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","z":"\u91cd\u306a\u308a","t":"\u8a71\u9806","caption":"\u69d8\u5b50","speech_balloon_template_settings":"\u30d5\u30ad\u30c0\u30b7\u62e1\u5f35\u30c7\u30fc\u30bf","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"speech":{"speech_balloon_id":"\u30d5\u30ad\u30c0\u30b7","speech_balloon_template_id":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8","speech_balloon_template_module_name":"\u30d5\u30ad\u30c0\u30b7\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","writing_format_id":"\u8a18\u6cd5","writing_format_module_name":"\u8a18\u6cd5\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","content":"\u30bb\u30ea\u30d5","font_size":"\u57fa\u672c\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba","text_align":"\u30c6\u30ad\u30b9\u30c8\u63c3\u3048","fore_color":"\u30d5\u30a9\u30f3\u30c8\u8272","x":"X","y":"Y","width":"\u5e45","height":"\u9ad8\u3055","quotes":"\u30ab\u30ae\u30ab\u30c3\u30b3","speech_balloon_template_settings":"\u30d5\u30ad\u30c0\u30b7\u62e1\u5f35\u30c7\u30fc\u30bf","writing_format_settings":"\u8a18\u6cd5\u62e1\u5f35\u30c7\u30fc\u30bf","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"balloon":{"speech_balloon_id":"\u30d5\u30ad\u30c0\u30b7","speech_balloon_template_id":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8","speech_balloon_template_module_name":"\u30d5\u30ad\u30c0\u30b7\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","system_picture_id":"\u753b\u50cf","x":"X","y":"Y","width":"\u5e45","height":"\u9ad8\u3055","r":"\u89d2\u5ea6","speech_balloon_template_settings":"\u30d5\u30ad\u30c0\u30b7\u62e1\u5f35\u30c7\u30fc\u30bf","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"ground_picture":{"panel_id":"\u30b3\u30de","picture_id":"\u5b9f\u7d20\u6750","repeat":"\u7e70\u308a\u8fd4\u3057","x":"X","y":"Y","z":"\u91cd\u306a\u308a","t":"\u8a71\u9806","caption":"\u69d8\u5b50","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"ground_color":{"panel_id":"\u30b3\u30de","code":"\u30ab\u30e9\u30fc\u30b3\u30fc\u30c9","orientation":"\u65b9\u5411","xy":"\u30aa\u30d5\u30bb\u30c3\u30c8","wh":"\u30b5\u30a4\u30ba","z":"\u91cd\u306a\u308a","t":"\u8a71\u9806","caption":"\u69d8\u5b50","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"original_picture":{"ext":"\u753b\u50cf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8","width":"\u5e45","height":"\u9ad8\u3055","filesize":"\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba","artist_id":"\u7d75\u5e2b","md5":"MD5","published_at":"\u516c\u958b","stopped_at":"\u505c\u6b62","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"picture":{"original_picture_id":"\u539f\u753b","revision":"\u30d0\u30fc\u30b8\u30e7\u30f3","ext":"\u753b\u50cf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8","width":"\u5e45","height":"\u9ad8\u3055","filesize":"\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba","md5":"MD5","artist_id":"\u7d75\u5e2b","license_id":"\u30e9\u30a4\u30bb\u30f3\u30b9","system_picture_id":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30de\u30fc\u30af","artist_name":"\u8457\u4f5c\u8005\u540d","license_group_settings":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30d5\u30e9\u30b0","credit_picture_settings":"\u30af\u30ec\u30b8\u30c3\u30c8\u62e1\u5f35\u30c7\u30fc\u30bf","license_settings":"\u30e9\u30a4\u30bb\u30f3\u30b9\u62e1\u5f35\u30c7\u30fc\u30bf","license_group_module_name":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","created_at":"\u516c\u958b\u65e5\u6642","updated_at":"\u516c\u958b\u65e5\u6642"},"resource_picture":{"original_picture_id":"\u539f\u753b","ext":"\u753b\u50cf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8","width":"\u5e45","height":"\u9ad8\u3055","filesize":"\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba","md5":"MD5","artist_id":"\u7d75\u5e2b","license_group_id":"\u30e9\u30a4\u30bb\u30f3\u30b9","license_id":"\u30e9\u30a4\u30bb\u30f3\u30b9","system_picture_id":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30de\u30fc\u30af","artist_name":"\u8457\u4f5c\u8005\u540d","license_group_settings":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30d5\u30e9\u30b0","credit_picture_settings":"\u30af\u30ec\u30b8\u30c3\u30c8\u62e1\u5f35\u30c7\u30fc\u30bf","license_settings":"\u30e9\u30a4\u30bb\u30f3\u30b9\u62e1\u5f35\u30c7\u30fc\u30bf","license_group_module_name":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","picture_id":"\u5b9f\u7d20\u6750","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"original_picture_license_group":{"original_picture_id":"\u539f\u753b","license_group_id":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"original_picture_license":{"original_picture_id":"\u539f\u753b","license_group_id":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7","license_id":"\u30e9\u30a4\u30bb\u30f3\u30b9","license_settings":"\u30e9\u30a4\u30bb\u30f3\u30b9\u62e1\u5f35\u30c7\u30fc\u30bf","license_group_module_name":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"speech_balloon_template":{"name":"\u7ba1\u7406\u540d","module_name":"\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","caption":"\u540d\u524d","t":"\u4e26\u3073\u9806","system_picture_id":"\u30a2\u30a4\u30b3\u30f3","settings":"\u62e1\u5f35\u30c7\u30fc\u30bf","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"writing_format":{"name":"\u7ba1\u7406\u540d","module_name":"\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","caption":"\u540d\u524d","t":"\u4e26\u3073\u9806","system_picture_id":"\u30a2\u30a4\u30b3\u30f3","settings":"\u62e1\u5f35\u30c7\u30fc\u30bf","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"license_group":{"name":"\u7ba1\u7406\u540d","module_name":"\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","caption":"\u540d\u524d","url":"URL","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"license":{"license_group_id":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7","license_group_module_name":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30e2\u30b8\u30e5\u30fc\u30eb\u540d","name":"\u7ba1\u7406\u540d","caption":"\u540d\u524d","url":"URL","system_picture_id":"\u30de\u30fc\u30af","license_group_settings":"\u30e9\u30a4\u30bb\u30f3\u30b9\u62e1\u5f35\u30c7\u30fc\u30bf","credit_picture_settings":"\u30af\u30ec\u30b8\u30c3\u30c8\u5185\u753b\u50cf","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"author":{"name":"\u30da\u30f3\u30cd\u30fc\u30e0","user_id":"\u30e6\u30fc\u30b6","working_panel_id":"\u3064\u304b\u3093\u3067\u3044\u308b\u30b3\u30de","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"artist":{"name":"\u30da\u30f3\u30cd\u30fc\u30e0","author_id":"\u4f5c\u5bb6","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"system_picture":{"ext":"\u753b\u50cf\u30d5\u30a9\u30fc\u30de\u30c3\u30c8","width":"\u5e45","height":"\u9ad8\u3055","filesize":"\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba","md5":"MD5","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"provider":{"provider_status_id":"\u501f\u53d7\u72b6\u6cc1","name":"\u7ba1\u7406\u540d","caption":"\u30b5\u30a4\u30c8\u540d","url":"\u30b5\u30a4\u30c8\u30c8\u30c3\u30d7\u30da\u30fc\u30b8url","description":"\u30b5\u30a4\u30c8\u7d39\u4ecb\u6587","demander_url":"\u501f\u624b\u30da\u30fc\u30b8url","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"provider_status":{"token":"\u30c8\u30fc\u30af\u30f3","receive_hour1":"\u5de1\u56de\u66421","receive_hour2":"\u5de1\u56de\u66422","received_at":"\u524d\u56de\u5de1\u56de\u65e5\u6642","stopped_at":"\u505c\u6b62\u65e5\u6642","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"demander":{"demand_user_id":"\u501f\u624b\u30a2\u30ab\u30a6\u30f3\u30c8","name":"\u30b5\u30a4\u30c8\u7ba1\u7406\u540d","caption":"\u30b5\u30a4\u30c8\u540d","url":"\u30b5\u30a4\u30c8\u30c8\u30c3\u30d7\u30da\u30fc\u30b8url","description":"\u30b5\u30a4\u30c8\u7d39\u4ecb\u6587","demander_url":"\u501f\u624b\u30da\u30fc\u30b8url","demander_status_id":"\u8cb8\u4e0e\u72b6\u6cc1","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"demander_status":{"requested_at":"\u7533\u8acb\u65e5\u6642","rejected_at":"\u5426\u6c7a\u65e5\u6642","approved_at":"\u53ef\u6c7a\u65e5\u6642","receive_hour1":"\u5de1\u56de\u66421","receive_hour2":"\u5de1\u56de\u66422","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"provider_license":{"provider_id":"\u8cb8\u624b","providers_license_id":"\u8cb8\u624b\u5074\u30e9\u30a4\u30bb\u30f3\u30b9","demanders_license_id":"\u501f\u624b\u5074\u30e9\u30a4\u30bb\u30f3\u30b9","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"provider_artist":{"provider_id":"\u8cb8\u624b","providers_artist_id":"\u8cb8\u624b\u5074\u7d75\u5e2b","demanders_artist_id":"\u501f\u624b\u5074\u7d75\u5e2b","created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"provider_original_picture":{"created_at":"\u4f5c\u6210","updated_at":"\u66f4\u65b0"},"pettanr_creative_commons_v30_licenses_license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b"},"pettanr_creative_commons_v30_licenses_credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_creative_commons_v30_licenses_attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","artist_url":"\u4f5c\u8005\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8URL","source_url":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL","more_permission_url":"\u8ffd\u52a0\u7684\u8a31\u8afe\u306eURL"},"pettanr_pettan_commons_v01_licenses_license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b"},"pettanr_pettan_commons_v01_licenses_credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_pettan_commons_v01_licenses_attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","sources":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL"},"pettanr_pettan_protected_v01_licenses_license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b","trackback":"\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af"},"pettanr_pettan_protected_v01_licenses_credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_pettan_protected_v01_licenses_attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","sources":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL"},"pettanr_pettan_public_v01_licenses_license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b","trackback":"\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af"},"pettanr_pettan_public_v01_licenses_credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3"},"pettanr_pettan_public_v01_licenses_attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","sources":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL"},"pettanr_public_domain_v01_licenses_license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b","trackback":"\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af"},"pettanr_public_domain_v01_licenses_credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_public_domain_v01_licenses_attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","source_url":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL","note":"\u5099\u8003"},"pettanr_unknown_v01_licenses_license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b","trackback":"\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af"},"pettanr_unknown_v01_licenses_credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_unknown_v01_licenses_attribute":{"source_url":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL","note":"\u5099\u8003"},"pettanr_creative_commons_v30_licenses/license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b"},"pettanr_creative_commons_v30_licenses/credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_creative_commons_v30_licenses/attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","artist_url":"\u4f5c\u8005\u306e\u30db\u30fc\u30e0\u30da\u30fc\u30b8URL","source_url":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL","more_permission_url":"\u8ffd\u52a0\u7684\u8a31\u8afe\u306eURL"},"pettanr_pettan_commons_v01_licenses/license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b"},"pettanr_pettan_commons_v01_licenses/credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_pettan_commons_v01_licenses/attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","sources":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL"},"pettanr_pettan_protected_v01_licenses/license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b","trackback":"\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af"},"pettanr_pettan_protected_v01_licenses/credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_pettan_protected_v01_licenses/attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","sources":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL"},"pettanr_pettan_public_v01_licenses/license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b","trackback":"\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af"},"pettanr_pettan_public_v01_licenses/credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3"},"pettanr_pettan_public_v01_licenses/attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","sources":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL"},"pettanr_public_domain_v01_licenses/license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b","trackback":"\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af"},"pettanr_public_domain_v01_licenses/credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_public_domain_v01_licenses/attribute":{"artist_name":"\u8457\u4f5c\u8005\u540d","caption":"\u4f5c\u54c1\u306e\u540d\u524d","source_url":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL","note":"\u5099\u8003"},"pettanr_unknown_v01_licenses/license":{"open":"\u30af\u30ed\u30fc\u30ba\u30c9\u306a\u5229\u7528","commercial":"\u5546\u7528\u5229\u7528","official":"\u516c\u5f0f\u30e9\u30a4\u30bb\u30f3\u30b9","attribution":"\u30af\u30ec\u30b8\u30c3\u30c8\u306e\u8868\u793a","derive":"\u6539\u5909","thumbnail":"\u30b5\u30e0\u30cd\u30a4\u30eb\u306e\u4f5c\u6210","gif_convert":"GIF\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3078\u306e\u5909\u63db","reverse":"\u53cd\u8ee2","sync_vh":"\u7e26\u6a2a\u6bd4\u306e\u6539\u5909","overlap":"\u91cd\u306d\u5408\u308f\u305b","trackback":"\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af"},"pettanr_unknown_v01_licenses/credit_picture":{"source_url_btn_id":"URL\u30dc\u30bf\u30f3","source_url_off_btn_id":"URL\u306f\u306a\u3044\u30dc\u30bf\u30f3"},"pettanr_unknown_v01_licenses/attribute":{"source_url":"\u53c2\u8003\u306b\u3057\u305f\u753b\u50cf\u306eURL","note":"\u5099\u8003"}},"errors":{"format":"%{attribute}%{message}","messages":{"accepted":"\u3092\u53d7\u8afe\u3057\u3066\u304f\u3060\u3055\u3044\u3002","blank":"\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","confirmation":"\u3068\u78ba\u8a8d\u306e\u5165\u529b\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002","empty":"\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","equal_to":"\u306f%{count}\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","even":"\u306f\u5076\u6570\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","exclusion":"\u306f\u4e88\u7d04\u3055\u308c\u3066\u3044\u307e\u3059\u3002","greater_than":"\u306f%{count}\u3088\u308a\u5927\u304d\u3044\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","greater_than_or_equal_to":"\u306f%{count}\u4ee5\u4e0a\u306e\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","inclusion":"\u306f\u4e00\u89a7\u306b\u3042\u308a\u307e\u305b\u3093\u3002","invalid":"\u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002","less_than":"\u306f%{count}\u3088\u308a\u5c0f\u3055\u3044\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","less_than_or_equal_to":"\u306f%{count}\u4ee5\u4e0b\u306e\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_a_number":"\u306f\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_an_integer":"\u306f\u6574\u6570\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","odd":"\u306f\u5947\u6570\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","record_invalid":"\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 %{errors}","taken":"\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002","too_long":"\u306f%{count}\u6587\u5b57\u4ee5\u5185\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","too_short":"\u306f%{count}\u6587\u5b57\u4ee5\u4e0a\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","wrong_length":"\u306f%{count}\u6587\u5b57\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","existence":"\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002","url":"\u306furl\u306e\u66f8\u5f0f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","natural_number":"\u306f1\u4ee5\u4e0a\u306e\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_zero":"\u306f0\u4ee5\u5916\u306e\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","resize":"\u306f\u30b5\u30a4\u30ba\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002","reverse":"\u306f\u53cd\u8ee2\u3067\u304d\u307e\u305b\u3093\u3002","sync_vh":"\u306f\u7e26\u6a2a\u6bd4\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002","quotes_even":"\u306f\u30ab\u30c3\u30b3\u306e\u958b\u304d\u3068\u9589\u3058\u3092\u7a7a\u767d\u533a\u5207\u308a\u306e\u30da\u30a2\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","extend_settings":"\u62e1\u5f35\u30c7\u30fc\u30bf\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},"template":{"body":"\u6b21\u306e\u9805\u76ee\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002","header":{"one":"%{model}\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002","other":"%{model}\u306b%{count}\u3064\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}}}},"pettanr_creative_commons_v30_licenses":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u9078\u629e)","selected":"\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059","no_blank":"\u5fc5\u9808\u9805\u76ee","next":"\u6b21\u3078","digest_credit":"\u30af\u30ec\u30b8\u30c3\u30c8","full_credit":"\u30af\u30ec\u30b8\u30c3\u30c8\u5b8c\u5168\u7248"},"pettanr_pettan_commons_v01_licenses":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u9078\u629e)","selected":"\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059","no_blank":"\u5fc5\u9808\u9805\u76ee","next":"\u6b21\u3078","digest_credit":"\u30af\u30ec\u30b8\u30c3\u30c8","full_credit":"\u30af\u30ec\u30b8\u30c3\u30c8\u5b8c\u5168\u7248"},"pettanr_pettan_protected_v01_licenses":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u9078\u629e)","selected":"\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059","no_blank":"\u5fc5\u9808\u9805\u76ee","next":"\u6b21\u3078","digest_credit":"\u30af\u30ec\u30b8\u30c3\u30c8","full_credit":"\u30af\u30ec\u30b8\u30c3\u30c8\u5b8c\u5168\u7248"},"pettanr_pettan_public_v01_licenses":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u9078\u629e)","selected":"\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059","no_blank":"\u5fc5\u9808\u9805\u76ee","next":"\u6b21\u3078","digest_credit":"\u30af\u30ec\u30b8\u30c3\u30c8","full_credit":"\u30af\u30ec\u30b8\u30c3\u30c8\u5b8c\u5168\u7248"},"pettanr_public_domain_v01_licenses":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u9078\u629e)","selected":"\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059","no_blank":"\u5fc5\u9808\u9805\u76ee","next":"\u6b21\u3078","digest_credit":"\u30af\u30ec\u30b8\u30c3\u30c8","full_credit":"\u30af\u30ec\u30b8\u30c3\u30c8\u5b8c\u5168\u7248"},"pettanr_unknown_v01_licenses":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u9078\u629e)","selected":"\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u3059","no_blank":"\u5fc5\u9808\u9805\u76ee","next":"\u6b21\u3078","digest_credit":"\u30af\u30ec\u30b8\u30c3\u30c8","full_credit":"\u30af\u30ec\u30b8\u30c3\u30c8\u5b8c\u5168\u7248"},"circle_speech_balloon":{"new":null},"plain_speech_balloon":{"new":null},"square_speech_balloon":{"new":null},"pettanr_simple_format":{"new":null},"errors":{"messages":{"not_found":"\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f","already_confirmed":"\u306f\u65e2\u306b\u767b\u9332\u6e08\u307f\u3067\u3059","not_locked":"\u306f\u51cd\u7d50\u3055\u308c\u3066\u3044\u307e\u305b\u3093","accepted":"\u3092\u53d7\u8afe\u3057\u3066\u304f\u3060\u3055\u3044\u3002","blank":"\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","confirmation":"\u3068\u78ba\u8a8d\u306e\u5165\u529b\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002","empty":"\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","equal_to":"\u306f%{count}\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","even":"\u306f\u5076\u6570\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","exclusion":"\u306f\u4e88\u7d04\u3055\u308c\u3066\u3044\u307e\u3059\u3002","greater_than":"\u306f%{count}\u3088\u308a\u5927\u304d\u3044\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","greater_than_or_equal_to":"\u306f%{count}\u4ee5\u4e0a\u306e\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","inclusion":"\u306f\u4e00\u89a7\u306b\u3042\u308a\u307e\u305b\u3093\u3002","invalid":"\u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002","less_than":"\u306f%{count}\u3088\u308a\u5c0f\u3055\u3044\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","less_than_or_equal_to":"\u306f%{count}\u4ee5\u4e0b\u306e\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_a_number":"\u306f\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_an_integer":"\u306f\u6574\u6570\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","odd":"\u306f\u5947\u6570\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","record_invalid":"\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 %{errors}","taken":"\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002","too_long":"\u306f%{count}\u6587\u5b57\u4ee5\u5185\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","too_short":"\u306f%{count}\u6587\u5b57\u4ee5\u4e0a\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","wrong_length":"\u306f%{count}\u6587\u5b57\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","existence":"\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002","url":"\u306furl\u306e\u66f8\u5f0f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","natural_number":"\u306f1\u4ee5\u4e0a\u306e\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_zero":"\u306f0\u4ee5\u5916\u306e\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","resize":"\u306f\u30b5\u30a4\u30ba\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002","reverse":"\u306f\u53cd\u8ee2\u3067\u304d\u307e\u305b\u3093\u3002","sync_vh":"\u306f\u7e26\u6a2a\u6bd4\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002","quotes_even":"\u306f\u30ab\u30c3\u30b3\u306e\u958b\u304d\u3068\u9589\u3058\u3092\u7a7a\u767d\u533a\u5207\u308a\u306e\u30da\u30a2\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","extend_settings":"\u62e1\u5f35\u30c7\u30fc\u30bf\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},"format":"%{attribute}%{message}","template":{"body":"\u6b21\u306e\u9805\u76ee\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002","header":{"one":"%{model}\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002","other":"%{model}\u306b%{count}\u3064\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}},"not_create":"\u304c\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002","invalid_json":"\u4e0d\u6b63\u306ajson\u30c7\u30fc\u30bf\u3067\u3059\u3002","invalid_t":"\u30b3\u30de\u8981\u7d20\u306e\u8a71\u9806\u304c\u4e0d\u6b63\u3067\u3059\u3002","not_convert":"Gif\u753b\u50cf\u3078\u306e\u30b3\u30f3\u30d0\u30fc\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002","invalid_image":"\u753b\u50cf\u3068\u3057\u3066\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},"devise":{"failure":{"unauthenticated":"\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002","unconfirmed":"\u672c\u767b\u9332\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002","locked":"\u3042\u306a\u305f\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u51cd\u7d50\u3055\u308c\u3066\u3044\u307e\u3059\u3002","invalid":"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304b\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u9055\u3044\u307e\u3059\u3002","invalid_token":"\u8a8d\u8a3c\u30ad\u30fc\u304c\u4e0d\u6b63\u3067\u3059\u3002","timeout":"\u30bb\u30c3\u30b7\u30e7\u30f3\u304c\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\u3002\u3082\u3046\u4e00\u5ea6\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u304f\u3060\u3055\u3044\u3002","inactive":"\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},"sessions":{"signed_in":"\u30ed\u30b0\u30a4\u30f3\u3057\u307e\u3057\u305f\u3002","signed_out":"\u30ed\u30b0\u30a2\u30a6\u30c8\u3057\u307e\u3057\u305f\u3002"},"passwords":{"send_instructions":"\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u30ea\u30bb\u30c3\u30c8\u65b9\u6cd5\u3092\u6570\u5206\u4ee5\u5185\u306b\u30e1\u30fc\u30eb\u3067\u3054\u9023\u7d61\u3057\u307e\u3059\u3002","updated":"\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3057\u307e\u3057\u305f\u3002"},"confirmations":{"send_instructions":"\u767b\u9332\u65b9\u6cd5\u3092\u6570\u5206\u4ee5\u5185\u306b\u30e1\u30fc\u30eb\u3067\u3054\u9023\u7d61\u3057\u307e\u3059\u3002","confirmed":"\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u767b\u9332\u3057\u307e\u3057\u305f\u3002"},"registrations":{"signed_up":"\u30a2\u30ab\u30a6\u30f3\u30c8\u767b\u9332\u3092\u53d7\u3051\u4ed8\u3051\u307e\u3057\u305f\u3002\u78ba\u8a8d\u306e\u30e1\u30fc\u30eb\u3092\u304a\u9001\u308a\u3057\u307e\u3059\u3002","updated":"\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002","destroyed":"\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u524a\u9664\u3057\u307e\u3057\u305f\u3002\u307e\u305f\u306e\u3054\u5229\u7528\u3092\u304a\u5f85\u3061\u3057\u3066\u304a\u308a\u307e\u3059\u3002"},"unlocks":{"send_instructions":"\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u51cd\u7d50\u89e3\u9664\u65b9\u6cd5\u3092\u6570\u5206\u4ee5\u5185\u306b\u30e1\u30fc\u30eb\u3067\u3054\u9023\u7d61\u3057\u307e\u3059\u3002","unlocked":"\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u51cd\u7d50\u89e3\u9664\u3057\u307e\u3057\u305f\u3002"},"mailer":{"confirmation_instructions":{"subject":"\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u767b\u9332\u65b9\u6cd5"},"reset_password_instructions":{"subject":"\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u518d\u8a2d\u5b9a"},"unlock_instructions":{"subject":"\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u51cd\u7d50\u89e3\u9664"}}},"date":{"abbr_day_names":["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"],"abbr_month_names":[null,"1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],"day_names":["\u65e5\u66dc\u65e5","\u6708\u66dc\u65e5","\u706b\u66dc\u65e5","\u6c34\u66dc\u65e5","\u6728\u66dc\u65e5","\u91d1\u66dc\u65e5","\u571f\u66dc\u65e5"],"formats":{"default":"%Y/%m/%d","long":"%Y\u5e74%m\u6708%d\u65e5(%a)","short":"%m/%d"},"month_names":[null,"1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],"order":["year","month","day"]},"datetime":{"distance_in_words":{"about_x_hours":{"one":"\u7d041\u6642\u9593","other":"\u7d04%{count}\u6642\u9593"},"about_x_months":{"one":"\u7d041\u30f6\u6708","other":"\u7d04%{count}\u30f6\u6708"},"about_x_years":{"one":"\u7d041\u5e74","other":"\u7d04%{count}\u5e74"},"almost_x_years":{"one":"1\u5e74\u5f31","other":"%{count}\u5e74\u5f31"},"half_a_minute":"30\u79d2\u524d\u5f8c","less_than_x_minutes":{"one":"1\u5206\u4ee5\u5185","other":"%{count}\u5206\u4ee5\u5185"},"less_than_x_seconds":{"one":"1\u79d2\u4ee5\u5185","other":"%{count}\u79d2\u4ee5\u5185"},"over_x_years":{"one":"1\u5e74\u4ee5\u4e0a","other":"%{count}\u5e74\u4ee5\u4e0a"},"x_days":{"one":"1\u65e5","other":"%{count}\u65e5"},"x_minutes":{"one":"1\u5206","other":"%{count}\u5206"},"x_months":{"one":"1\u30f6\u6708","other":"%{count}\u30f6\u6708"},"x_seconds":{"one":"1\u79d2","other":"%{count}\u79d2"}},"prompts":{"day":"\u65e5","hour":"\u6642","minute":"\u5206","month":"\u6708","second":"\u79d2","year":"\u5e74"}},"helpers":{"select":{"prompt":"\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},"submit":{"create":"\u767b\u9332\u3059\u308b","submit":"\u4fdd\u5b58\u3059\u308b","update":"\u66f4\u65b0\u3059\u308b"}},"number":{"currency":{"format":{"delimiter":",","format":"%n%u","precision":0,"separator":".","significant":false,"strip_insignificant_zeros":false,"unit":"\u5186"}},"format":{"delimiter":",","precision":3,"separator":".","significant":false,"strip_insignificant_zeros":false},"human":{"decimal_units":{"format":"%n %u","units":{"billion":"\u5341\u5104","million":"\u767e\u4e07","quadrillion":"\u5343\u5146","thousand":"\u5343","trillion":"\u5146","unit":""}},"format":{"delimiter":"","precision":3,"significant":true,"strip_insignificant_zeros":true},"storage_units":{"format":"%n%u","units":{"byte":"\u30d0\u30a4\u30c8","gb":"\u30ae\u30ac\u30d0\u30a4\u30c8","kb":"\u30ad\u30ed\u30d0\u30a4\u30c8","mb":"\u30e1\u30ac\u30d0\u30a4\u30c8","tb":"\u30c6\u30e9\u30d0\u30a4\u30c8"}}},"percentage":{"format":{"delimiter":""}},"precision":{"format":{"delimiter":""}}},"support":{"array":{"last_word_connector":"\u3068","two_words_connector":"\u3068","words_connector":"\u3068"}},"time":{"am":"\u5348\u524d","formats":{"default":"%Y/%m/%d %H:%M:%S","long":"%Y\u5e74%m\u6708%d\u65e5(%a) %H\u6642%M\u5206%S\u79d2 %z","short":"%y/%m/%d %H:%M"},"pm":"\u5348\u5f8c"},"activemodel":{"errors":{"format":"%{attribute}%{message}","messages":{"accepted":"\u3092\u53d7\u8afe\u3057\u3066\u304f\u3060\u3055\u3044\u3002","blank":"\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","confirmation":"\u3068\u78ba\u8a8d\u306e\u5165\u529b\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002","empty":"\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","equal_to":"\u306f%{count}\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","even":"\u306f\u5076\u6570\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","exclusion":"\u306f\u4e88\u7d04\u3055\u308c\u3066\u3044\u307e\u3059\u3002","greater_than":"\u306f%{count}\u3088\u308a\u5927\u304d\u3044\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","greater_than_or_equal_to":"\u306f%{count}\u4ee5\u4e0a\u306e\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","inclusion":"\u306f\u4e00\u89a7\u306b\u3042\u308a\u307e\u305b\u3093\u3002","invalid":"\u306f\u4e0d\u6b63\u306a\u5024\u3067\u3059\u3002","less_than":"\u306f%{count}\u3088\u308a\u5c0f\u3055\u3044\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","less_than_or_equal_to":"\u306f%{count}\u4ee5\u4e0b\u306e\u5024\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_a_number":"\u306f\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_an_integer":"\u306f\u6574\u6570\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","odd":"\u306f\u5947\u6570\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","record_invalid":"\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 %{errors}","taken":"\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002","too_long":"\u306f%{count}\u6587\u5b57\u4ee5\u5185\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","too_short":"\u306f%{count}\u6587\u5b57\u4ee5\u4e0a\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","wrong_length":"\u306f%{count}\u6587\u5b57\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","existence":"\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002","url":"\u306furl\u306e\u66f8\u5f0f\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","natural_number":"\u306f1\u4ee5\u4e0a\u306e\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","not_zero":"\u306f0\u4ee5\u5916\u306e\u6570\u5024\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","resize":"\u306f\u30b5\u30a4\u30ba\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002","reverse":"\u306f\u53cd\u8ee2\u3067\u304d\u307e\u305b\u3093\u3002","sync_vh":"\u306f\u7e26\u6a2a\u6bd4\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\u3002","quotes_even":"\u306f\u30ab\u30c3\u30b3\u306e\u958b\u304d\u3068\u9589\u3058\u3092\u7a7a\u767d\u533a\u5207\u308a\u306e\u30da\u30a2\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","extend_settings":"\u62e1\u5f35\u30c7\u30fc\u30bf\u306e\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},"template":{"body":"\u6b21\u306e\u9805\u76ee\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002","header":{"one":"%{model}\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002","other":"%{model}\u306b%{count}\u3064\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"}}}},"flash":{"notice":{"created":"%{model}\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002","updated":"%{model}\u304c\u66f4\u65b0\u3055\u308c\u307e\u3057\u305f\u3002","destroyed":"%{model}\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002","not_created":"%{model}\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002","not_updated":"%{model}\u306e\u66f4\u65b0\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002","not_destroyed":"%{model}\u306e\u524a\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"}},"picture_io":{"error":"\u753b\u50cf\u4fdd\u7ba1\u5eab\u3068\u306e\u624b\u7d9a\u304d\u3067\u7570\u5e38\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},"select_items":{"scroll":{"visible":{"private":"\u975e\u516c\u958b","public":"\u516c\u958b"}},"comic":{"visible":{"private":"\u975e\u516c\u958b","public":"\u516c\u958b"}},"story":{"visible":{"private":"\u975e\u516c\u958b","public":"\u516c\u958b"}},"sheet":{"visible":{"private":"\u975e\u516c\u958b","public":"\u516c\u958b"}},"panel":{"visible":{"private":"\u975e\u516c\u958b","public":"\u516c\u958b"}},"ground_pictures":{"repeat":{"repeat":"\u5168\u4f53","repeat-x":"\u6a2a\u65b9\u5411","repeat-y":"\u7e26\u65b9\u5411","no-repeat":"\u306a\u3057"}},"ground_color":{"orientation":{"horizontal":"\u6a2a\u65b9\u5411","vertical":"\u7e26\u65b9\u5411"}},"speeches":{"font_size":{"ultra_small":"\u6975\u5c0f","very_small":"\u5c0f\u5c0f","small":"\u5c0f","semi_small":"\u5fae\u5c0f","normal":"\u4e26","semi_large":"\u5fae\u5927","large":"\u5927","very_large":"\u5927\u5927","ultra_large":"\u6975\u5927"},"text_align":{"none":"\u6307\u5b9a\u3057\u306a\u3044","left":"\u5de6\u5bc4\u305b","right":"\u53f3\u5bc4\u305b","center":"\u4e2d\u592e\u5bc4\u305b"}},"provider_status":{"status":{"waiting":"\u5f85\u6a5f\u4e2d","receiving":"\u7533\u8acb\u4e2d"}},"demander_status":{"status":{"waiting":"\u5f85\u6a5f\u4e2d","rejected":"\u5426\u6c7a\u30fb\u505c\u6b62\u4e2d","requesting":"\u7533\u8acb\u4e2d","approved":"\u8cb8\u4e0e\u4e2d"}}},"users":{"shared":{"signin":"\u30ed\u30b0\u30a4\u30f3","signup":"\u65b0\u898f\u5165\u4f1a","forgot":"\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5fd8\u308c\u305f"},"signup":{"title":"\u30e6\u30fc\u30b6\u767b\u9332","signup":"\u767b\u9332\u3059\u308b"},"signin":{"title":"\u30ed\u30b0\u30a4\u30f3","signin":"\u30ed\u30b0\u30a4\u30f3"},"edit":{"title":"\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8a2d\u5b9a\u5909\u66f4"},"forgot":{"title":"\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5fd8\u308c\u3066\u3057\u307e\u3063\u305f","reset":"\u65b0\u3057\u3044\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u767a\u884c\u3059\u308b"}},"admins":{"shared":{"signin":"\u7ba1\u7406\u8005\u30ed\u30b0\u30a4\u30f3","signup":"\u65b0\u898f\u5165\u4f1a","forgot":"\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5fd8\u308c\u305f"},"signup":{"title":"\u7ba1\u7406\u8005\u767b\u9332","signup":"\u767b\u9332\u3059\u308b"},"signin":{"title":"\u7ba1\u7406\u8005\u30ed\u30b0\u30a4\u30f3","signin":"\u30ed\u30b0\u30a4\u30f3"},"edit":{"title":"\u7ba1\u7406\u8005\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8a2d\u5b9a\u5909\u66f4"},"forgot":{"title":"\u7ba1\u7406\u8005\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5fd8\u308c\u3066\u3057\u307e\u3063\u305f","reset":"\u65b0\u3057\u3044\u7ba1\u7406\u8005\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u767a\u884c\u3059\u308b"}},"demand_users":{"shared":{"signin":"\u501f\u624b\u30ed\u30b0\u30a4\u30f3","signup":"\u65b0\u898f\u5165\u4f1a","forgot":"\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5fd8\u308c\u305f"},"signup":{"title":"\u501f\u624b\u767b\u9332","signup":"\u767b\u9332\u3059\u308b"},"signin":{"title":"\u501f\u624b\u30ed\u30b0\u30a4\u30f3","signin":"\u30ed\u30b0\u30a4\u30f3"},"edit":{"title":"\u501f\u624b\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8a2d\u5b9a\u5909\u66f4"},"forgot":{"title":"\u501f\u624b\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5fd8\u308c\u3066\u3057\u307e\u3063\u305f","reset":"\u65b0\u3057\u3044\u501f\u624b\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u767a\u884c\u3059\u308b"}},"home":{"index":{"title":"\u30db\u30fc\u30e0","updated_scroll":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u6f2b\u753b","catch":"\u3064\u304b\u3093\u3067\u3044\u308b\u30b3\u30de","used_element":"\u6700\u8fd1\u4f7f\u3063\u305f\u90e8\u54c1","updated_picture":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u753b\u50cf","author":"\u4f5c\u5bb6","artist":"\u7d75\u5e2b","not_author":"\u4f5c\u54c1\u3092\u516c\u958b\u3059\u308b\u306b\u306f\u4f5c\u5bb6\u767b\u9332","not_artist":"\u753b\u50cf\u3092\u516c\u958b\u3059\u308b\u306b\u306f\u7d75\u5e2b\u767b\u9332"},"scrolls":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb"},"scroll_panels":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30af\u30b3\u30de"},"comics":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b3\u30df\u30c3\u30af"},"comic_stories":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b3\u30df\u30b9\u30c8"},"stories":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30c8\u30fc\u30ea\u30fc"},"story_sheets":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30c8\u7d19"},"sheets":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u7528\u7d19"},"sheet_panels":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u7d19\u30b3\u30de"},"panels":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b3\u30de"},"resource_pictures":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u7d20\u6750"},"panel_pictures":{"title":"\u6700\u8fd1\u4f7f\u3063\u305f\u30b3\u30de\u7d75"},"speech_balloons":{"title":"\u6700\u8fd1\u4f7f\u3063\u305f\u30d5\u30ad\u30c0\u30b7"},"ground_pictures":{"title":"\u6700\u8fd1\u4f7f\u3063\u305f\u7d75\u5730"},"ground_colors":{"title":"\u6700\u8fd1\u4f7f\u3063\u305f\u8272\u5730"},"configure":{"title":"\u8a2d\u5b9a","caption":"\u30a2\u30ab\u30a6\u30f3\u30c8%{email}\u306e\u8a2d\u5b9a","password_caption":"\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u304a\u3088\u3073\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u5909\u66f4","new_password_notice":"\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5909\u66f4\u3057\u306a\u3044\u5834\u5408\u306f\u7a7a\u6b04\u306b\u3057\u3066\u304f\u3060\u3055\u3044","current_password_notice":"\u78ba\u8a8d\u306e\u305f\u3081\u306b\u73fe\u5728\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u5fc5\u8981\u3067\u3059","change_password":"\u5909\u66f4\u3059\u308b","token_caption":"\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3","your_token":"\u3042\u306a\u305f\u306e\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3\u306f%{token}\u3067\u3059","delete_token":"\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3\u3092\u524a\u9664\u3059\u308b","about_token":"\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3\u306fWebAPI\u3092\u5229\u7528\u3059\u308b\u5834\u5408\u306b\u4f7f\u3044\u307e\u3059","generate_token":"\u8a8d\u8a3c\u30c8\u30fc\u30af\u30f3\u3092\u767a\u884c\u3059\u308b","cancel_caption":"\u9000\u4f1a","cancel_account":"\u9000\u4f1a\u3059\u308b","no_author":"\u4f5c\u5bb6\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u305b\u3093","about_author":"\u4f5c\u5bb6\u306b\u306a\u308b\u3068\u6f2b\u753b\u3092\u516c\u958b\u3067\u304d\u307e\u3059","no_artist":"\u7d75\u5e2b\u767b\u9332\u3055\u308c\u3066\u3044\u307e\u305b\u3093","about_artist":"\u7d75\u5e2b\u306b\u306a\u308b\u3068\u7d20\u6750\u3092\u516c\u958b\u3067\u304d\u307e\u3059"},"sign_out":{"title":"\u30ed\u30b0\u30a2\u30a6\u30c8"},"sign_in":{"title":"\u30ed\u30b0\u30a4\u30f3"}},"top":{"index":{"title":"\u8aad\u3080\u30fb\u63a2\u3059"},"metro":{"title":"\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30a2\u30d7\u30ea\u98a8metro\u3067\u4f53\u9a13"},"user_resources":"\u767a\u8868\u4f5c\u54c1\u304b\u3089","human_resources":"\u4eba\u7269\u304b\u3089","system_resources":"\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u304b\u3089","return":"\u30b7\u30f3\u30d7\u30eb\u7248\u306b\u623b\u308b"},"folders":{"root":{"title":"\u30d5\u30a9\u30eb\u30c0"},"index":{"title":"\u30d5\u30a9\u30eb\u30c0\u4e00\u89a7"},"show":{"title":"\u30d5\u30a9\u30eb\u30c0\u8a73\u7d30"},"new":{"title":"\u30d5\u30a9\u30eb\u30c0\u4f5c\u6210"},"edit":{"title":"\u30d5\u30a9\u30eb\u30c0\u5909\u66f4"},"create":{"title":"\u30d5\u30a9\u30eb\u30c0\u4f5c\u6210"},"update":{"title":"\u30d5\u30a9\u30eb\u30c0\u5909\u66f4"},"destroy":{"title":"\u30d5\u30a9\u30eb\u30c0\u524a\u9664"},"submit":{"new":"\u30d5\u30a9\u30eb\u30c0\u4f5c\u6210","edit":"\u30d5\u30a9\u30eb\u30c0\u5909\u66f4"}},"scrolls":{"scroll_panels_count":"%{c}\u30b3\u30de","index":{"title":"\u30b9\u30af\u30ed\u30fc\u30eb\u4e00\u89a7","new":"\u65b0\u520a"},"show":{"title":"\u30b9\u30af\u30ed\u30fc\u30eb\u8a73\u7d30","leaf":"\u30b3\u30de\u306e\u8ffd\u52a0\u3068\u4e26\u3073\u66ff\u3048"},"play":{"title":"\u30b9\u30af\u30ed\u30fc\u30eb\u3092\u8aad\u3080","empty":"\u95b2\u89a7\u3067\u304d\u308b\u30b9\u30af\u30b3\u30de\u306f\u3042\u308a\u307e\u305b\u3093"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30b9\u30af\u30ed\u30fc\u30eb\u4e00\u89a7"},"by_panel":{"title":"\u30b3\u30de\u306e\u30b9\u30af\u30ed\u30fc\u30eb\u4e00\u89a7"},"new":{"title":"\u65b0\u520a\u4f5c\u6210"},"edit":{"title":"\u30b9\u30af\u30ed\u30fc\u30eb\u5909\u66f4"},"create":{"title":"\u65b0\u520a\u4f5c\u6210"},"update":{"title":"\u30b9\u30af\u30ed\u30fc\u30eb\u5909\u66f4"},"destroy":{"title":"\u30b9\u30af\u30ed\u30fc\u30eb\u524a\u9664"},"submit":{"new":"\u65b0\u520a\u4f5c\u6210","edit":"\u30b9\u30af\u30ed\u30fc\u30eb\u5909\u66f4"}},"scroll_panels":{"index":{"title":"\u30b9\u30af\u30b3\u30de\u4e00\u89a7"},"by_panel":{"title":"\u30b3\u30de\u306e\u30b9\u30af\u30b3\u30de\u4e00\u89a7"},"by_scroll":{"title":"\u30b9\u30af\u30ed\u30fc\u30eb\u306e\u30b9\u30af\u30b3\u30de\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30b9\u30af\u30b3\u30de\u4e00\u89a7"},"show":{"title":"\u30b9\u30af\u30b3\u30de\u8a73\u7d30"},"new":{"title":"\u30b9\u30af\u30b3\u30de\u8ffd\u52a0"},"edit":{"title":"\u4e26\u3073\u66ff\u3048"},"create":{"title":"\u30b9\u30af\u30b3\u30de\u8ffd\u52a0"},"update":{"title":"\u4e26\u3073\u66ff\u3048"},"destroy":{"title":"\u30b9\u30af\u30b3\u30de\u524a\u9664"},"submit":{"new":"\u30b9\u30af\u30b3\u30de\u4f5c\u6210","edit":"\u30b9\u30af\u30b3\u30de\u5909\u66f4"},"move":"\u79fb\u52d5","append":{"panel":"\u3053\u306e\u30b3\u30de\u3092\u8ffd\u52a0\u3059\u308b","scroll":"\u3053\u306e\u30b9\u30af\u30ed\u30fc\u30eb\u306b\u8ffd\u52a0\u3059\u308b","new_panels":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u30b3\u30de","fresh_panels":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u30b3\u30de","new_scrolls":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb","fresh_scrolls":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb"}},"comics":{"comic_stories_count":"%{c}\u8a71","index":{"title":"\u30b3\u30df\u30c3\u30af\u4e00\u89a7","new":"\u65b0\u520a"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30b3\u30df\u30c3\u30af\u4e00\u89a7"},"show":{"title":"\u30b3\u30df\u30c3\u30af\u8a73\u7d30","leaf":"\u30b9\u30c8\u30fc\u30ea\u30fc\u306e\u8ffd\u52a0\u3068\u4e26\u3073\u66ff\u3048"},"play":{"title":"\u30b3\u30df\u30c3\u30af\u3092\u8aad\u3080","empty":"\u95b2\u89a7\u3067\u304d\u308b\u30b9\u30c8\u30fc\u30ea\u30fc\u306f\u3042\u308a\u307e\u305b\u3093"},"new":{"title":"\u65b0\u520a\u4f5c\u6210"},"edit":{"title":"\u30b3\u30df\u30c3\u30af\u5909\u66f4"},"create":{"title":"\u65b0\u520a\u4f5c\u6210"},"update":{"title":"\u30b3\u30df\u30c3\u30af\u5909\u66f4"},"destroy":{"title":"\u30b3\u30df\u30c3\u30af\u524a\u9664"},"submit":{"new":"\u30b3\u30df\u30c3\u30af\u4f5c\u6210","edit":"\u30b3\u30df\u30c3\u30af\u5909\u66f4"}},"comic_stories":{"index":{"title":"\u30b3\u30df\u30b9\u30c8\u4e00\u89a7"},"by_comic":{"title":"\u30b3\u30df\u30c3\u30af\u306e\u30b3\u30df\u30b9\u30c8\u4e00\u89a7"},"by_story":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u306e\u30b3\u30df\u30b9\u30c8\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30b3\u30df\u30b9\u30c8\u4e00\u89a7"},"show":{"title":"\u30b3\u30df\u30b9\u30c8\u8a73\u7d30","t":"\u7b2c%{t}\u8a71"},"new":{"title":"\u30b3\u30df\u30b9\u30c8\u8ffd\u52a0"},"edit":{"title":"\u4e26\u3073\u66ff\u3048"},"create":{"title":"\u30b3\u30df\u30b9\u30c8\u8ffd\u52a0"},"update":{"title":"\u4e26\u3073\u66ff\u3048"},"destroy":{"title":"\u30b3\u30df\u30b9\u30c8\u524a\u9664"},"submit":{"new":"\u30b3\u30df\u30b9\u30c8\u4f5c\u6210","edit":"\u30b3\u30df\u30b9\u30c8\u5909\u66f4"},"move":"\u79fb\u52d5","append":{"story":"\u3053\u306e\u30b9\u30c8\u30fc\u30ea\u30fc\u3092\u8ffd\u52a0\u3059\u308b","comic":"\u3053\u306e\u30b3\u30df\u30c3\u30af\u306b\u8ffd\u52a0\u3059\u308b","new_stories":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u30b9\u30c8\u30fc\u30ea\u30fc","new_comics":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u30b3\u30df\u30c3\u30af","fresh_comics":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b3\u30df\u30c3\u30af"}},"stories":{"story_sheets_count":"%{c}P","index":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u4e00\u89a7","new":"\u65b0\u30b9\u30c8\u30fc\u30ea\u30fc"},"show":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u8a73\u7d30","leaf":"\u7528\u7d19\u306e\u8ffd\u52a0\u3068\u4e26\u3073\u66ff\u3048"},"play":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u3092\u8aad\u3080","empty":"\u95b2\u89a7\u3067\u304d\u308b\u7528\u7d19\u306f\u3042\u308a\u307e\u305b\u3093"},"by_comic":{"title":"\u30b3\u30df\u30c3\u30af\u306e\u30b9\u30c8\u30fc\u30ea\u30fc\u4e00\u89a7"},"by_sheet":{"title":"\u4f5c\u5bb6\u306e\u30b9\u30c8\u30fc\u30ea\u30fc\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30b9\u30c8\u30fc\u30ea\u30fc\u4e00\u89a7"},"new":{"title":"\u65b0\u30b9\u30c8\u30fc\u30ea\u30fc\u4f5c\u6210"},"edit":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u5909\u66f4"},"create":{"title":"\u65b0\u30b9\u30c8\u30fc\u30ea\u30fc\u4f5c\u6210"},"update":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u5909\u66f4"},"destroy":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u524a\u9664"},"submit":{"new":"\u30b9\u30c8\u30fc\u30ea\u30fc\u4f5c\u6210","edit":"\u30b9\u30c8\u30fc\u30ea\u30fc\u5909\u66f4"},"move":"\u79fb\u52d5"},"story_sheets":{"index":{"title":"\u30b9\u30c8\u7d19\u4e00\u89a7"},"by_story":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u306e\u30b9\u30c8\u7d19\u4e00\u89a7"},"by_sheet":{"title":"\u7528\u7d19\u306e\u30b9\u30c8\u7d19\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30b9\u30c8\u7d19\u4e00\u89a7"},"show":{"title":"\u30b9\u30c8\u7d19\u8a73\u7d30"},"new":{"title":"\u30b9\u30c8\u7d19\u8ffd\u52a0"},"edit":{"title":"\u4e26\u3073\u66ff\u3048"},"create":{"title":"\u30b9\u30c8\u7d19\u8ffd\u52a0"},"update":{"title":"\u4e26\u3073\u66ff\u3048"},"destroy":{"title":"\u30b9\u30c8\u7d19\u524a\u9664"},"submit":{"new":"\u30b9\u30c8\u7d19\u4f5c\u6210","edit":"\u30b9\u30c8\u7d19\u5909\u66f4"},"move":"\u79fb\u52d5","append":{"sheet":"\u3053\u306e\u7528\u7d19\u3092\u8ffd\u52a0\u3059\u308b","story":"\u3053\u306e\u30b9\u30c8\u30fc\u30ea\u30fc\u306b\u8ffd\u52a0\u3059\u308b","new_sheets":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u7528\u7d19","new_stories":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u30b9\u30c8\u30fc\u30ea\u30fc","fresh_stories":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30c8\u30fc\u30ea\u30fc"}},"sheets":{"index":{"title":"\u7528\u7d19\u4e00\u89a7","new":"\u65b0\u7d19"},"show":{"title":"\u7528\u7d19\u8a73\u7d30","copy":"\u7528\u7d19\u3092\u30b3\u30d4\u30fc\u3057\u305f\u3044","inspire":"\u30a4\u30f3\u30b9\u30d1\u30a4\u30e4"},"play":{"title":"\u7528\u7d19\u3092\u8aad\u3080","empty":"\u95b2\u89a7\u3067\u304d\u308b\u30b3\u30de\u306f\u3042\u308a\u307e\u305b\u3093"},"by_story":{"title":"\u30b9\u30c8\u30fc\u30ea\u30fc\u306e\u7528\u7d19\u4e00\u89a7"},"by_panel":{"title":"\u30b3\u30de\u306e\u7528\u7d19\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u7528\u7d19\u4e00\u89a7"},"new":{"title":"\u7528\u7d19\u4f5c\u6210"},"edit":{"title":"\u7528\u7d19\u5909\u66f4"},"create":{"title":"\u7528\u7d19\u4f5c\u6210"},"update":{"title":"\u7528\u7d19\u5909\u66f4"},"destroy":{"title":"\u7528\u7d19\u524a\u9664"},"submit":{"new":"\u7528\u7d19\u4f5c\u6210","edit":"\u7528\u7d19\u5909\u66f4"},"hidden":"\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093","create_from_json":"json\u30c7\u30fc\u30bf\u304b\u3089\u30b3\u30de\u4f5c\u6210\u3059\u308b"},"sheet_panels":{"index":{"title":"\u7d19\u30b3\u30de\u4e00\u89a7"},"by_sheet":{"title":"\u7528\u7d19\u306e\u7d19\u30b3\u30de\u4e00\u89a7"},"by_panel":{"title":"\u30b3\u30de\u306e\u7d19\u30b3\u30de\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u7d19\u30b3\u30de\u4e00\u89a7"},"show":{"title":"\u7d19\u30b3\u30de\u8a73\u7d30"},"new":{"title":"\u7d19\u30b3\u30de\u8ffd\u52a0"},"edit":{"title":"\u4e26\u3073\u66ff\u3048"},"create":{"title":"\u7d19\u30b3\u30de\u8ffd\u52a0"},"update":{"title":"\u4e26\u3073\u66ff\u3048"},"destroy":{"title":"\u7d19\u30b3\u30de\u524a\u9664"},"submit":{"new":"\u7d19\u30b3\u30de\u4f5c\u6210","edit":"\u7d19\u30b3\u30de\u5909\u66f4"},"move":"\u79fb\u52d5","append":{"panel":"\u3053\u306e\u30b3\u30de\u3092\u8ffd\u52a0\u3059\u308b","sheet":"\u3053\u306e\u7528\u7d19\u306b\u8ffd\u52a0\u3059\u308b","new_panels":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u30b3\u30de","new_sheets":"\u6700\u8fd1\u4f5c\u6210\u3057\u305f\u7528\u7d19","fresh_sheets":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u7528\u7d19"}},"panels":{"index":{"title":"\u30b3\u30de\u4e00\u89a7"},"by_scroll":{"title":"\u30b9\u30af\u30ed\u30fc\u30eb\u306e\u30b3\u30de\u4e00\u89a7"},"by_sheet":{"title":"\u7528\u7d19\u306e\u30b3\u30de\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30b3\u30de\u4e00\u89a7"},"by_speech_balloon_template":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30b3\u30de\u4e00\u89a7"},"show":{"title":"\u30b3\u30de\u8a73\u7d30","copy":"\u30b3\u30de\u3092\u30b3\u30d4\u30fc\u3057\u305f\u3044","inspire":"\u30a4\u30f3\u30b9\u30d1\u30a4\u30e4"},"new":{"title":"\u30b3\u30de\u4f5c\u6210"},"edit":{"title":"\u30b3\u30de\u7de8\u96c6"},"create":{"title":"\u30b3\u30de\u4f5c\u6210"},"update":{"title":"\u30b3\u30de\u7de8\u96c6"},"destroy":{"title":"\u30b3\u30de\u524a\u9664"},"submit":{"new":"\u30b3\u30de\u4f5c\u6210\u3059\u308b","edit":"\u30b3\u30de\u5909\u66f4\u3059\u308b"},"create_from_json":"json\u30c7\u30fc\u30bf\u304b\u3089\u30b3\u30de\u4f5c\u6210\u3059\u308b","element_copy":"\u3064\u304b\u3093\u3067\u3044\u308b\u30b3\u30de\u306b\u30b3\u30d4\u30fc\u3057\u305f\u3044","inspire":"\u30a4\u30f3\u30b9\u30d1\u30a4\u30e4","filer":"\u30d5\u30a1\u30a4\u30e9\u30fc\u3067\u8868\u793a\u3059\u308b","hidden":"\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093","empty":"\u95b2\u89a7\u3067\u304d\u308b\u30b3\u30de\u306f\u3042\u308a\u307e\u305b\u3093"},"panel_pictures":{"index":{"title":"\u30b3\u30de\u7d75\u4e00\u89a7"},"by_panel":{"title":"\u30b3\u30de\u306e\u30b3\u30de\u7d75\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30b3\u30de\u7d75\u4e00\u89a7"},"show":{"title":"\u30b3\u30de\u7d75\u8a73\u7d30"},"new":{"title":"\u30b3\u30de\u7d75\u4f5c\u6210"},"edit":{"title":"\u30b3\u30de\u7d75\u7de8\u96c6"},"create":{"title":"\u30b3\u30de\u7d75\u4f5c\u6210"},"update":{"title":"\u30b3\u30de\u7d75\u7de8\u96c6"},"destroy":{"title":"\u30b3\u30de\u7d75\u524a\u9664"},"submit":{"new":"\u30b3\u30de\u7d75\u4f5c\u6210\u3059\u308b","edit":"\u30b3\u30de\u7d75\u5909\u66f4\u3059\u308b"},"resource_picture":"\u8ffd\u52a0\u3059\u308b\u7d20\u6750","panel_picture":"\u5909\u66f4\u3059\u308b\u30b3\u30de\u7d75"},"speech_balloons":{"index":{"title":"\u30d5\u30ad\u30c0\u30b7\u4e00\u89a7"},"by_panel":{"title":"\u30b3\u30de\u306e\u30d5\u30ad\u30c0\u30b7\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30d5\u30ad\u30c0\u30b7\u4e00\u89a7"},"by_speech_balloon_template":{"title":"\u30d5\u30ad\u30c0\u30b7\u306e\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4e00\u89a7"},"show":{"title":"\u30d5\u30ad\u30c0\u30b7\u8a73\u7d30"},"new":{"title":"\u30d5\u30ad\u30c0\u30b7\u4f5c\u6210"},"edit":{"title":"\u30d5\u30ad\u30c0\u30b7\u7de8\u96c6"},"create":{"title":"\u30d5\u30ad\u30c0\u30b7\u4f5c\u6210"},"update":{"title":"\u30d5\u30ad\u30c0\u30b7\u7de8\u96c6"},"destroy":{"title":"\u30d5\u30ad\u30c0\u30b7\u524a\u9664"},"submit":{"new":"\u30d5\u30ad\u30c0\u30b7\u4f5c\u6210\u3059\u308b","edit":"\u30d5\u30ad\u30c0\u30b7\u5909\u66f4\u3059\u308b"},"create_speech_balloon":"\u8ffd\u52a0\u3059\u308b\u30d5\u30ad\u30c0\u30b7","update_speech_balloon":"\u5909\u66f4\u3059\u308b\u30d5\u30ad\u30c0\u30b7"},"speeches":{"index":{"title":"\u30bb\u30ea\u30d5\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30bb\u30ea\u30d5\u4e00\u89a7"},"show":{"title":"\u30bb\u30ea\u30d5\u8a73\u7d30"},"submit":{"new":"\u30bb\u30ea\u30d5\u4f5c\u6210\u3059\u308b","edit":"\u30bb\u30ea\u30d5\u5909\u66f4\u3059\u308b"}},"balloons":{"index":{"title":"\u30d5\u30ad\u30c0\u30b7\u67a0\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u30d5\u30ad\u30c0\u30b7\u67a0\u4e00\u89a7"},"show":{"title":"\u30d5\u30ad\u30c0\u30b7\u67a0\u8a73\u7d30"},"submit":{"new":"\u30d5\u30ad\u30c0\u30b7\u67a0\u4f5c\u6210\u3059\u308b","edit":"\u30d5\u30ad\u30c0\u30b7\u67a0\u5909\u66f4\u3059\u308b"}},"ground_pictures":{"index":{"title":"\u7d75\u5730\u4e00\u89a7"},"by_panel":{"title":"\u30b3\u30de\u306e\u7d75\u5730\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u7d75\u5730\u4e00\u89a7"},"show":{"title":"\u7d75\u5730\u8a73\u7d30"},"new":{"title":"\u7d75\u5730\u4f5c\u6210"},"edit":{"title":"\u7d75\u5730\u7de8\u96c6"},"create":{"title":"\u7d75\u5730\u4f5c\u6210"},"update":{"title":"\u7d75\u5730\u7de8\u96c6"},"destroy":{"title":"\u7d75\u5730\u524a\u9664"},"submit":"\u4f5c\u6210\u3059\u308b","create_ground_picture":"\u8ffd\u52a0\u3059\u308b\u7d75\u5730","update_ground_picture":"\u5909\u66f4\u3059\u308b\u7d75\u5730"},"ground_colors":{"index":{"title":"\u8272\u5730\u4e00\u89a7"},"by_panel":{"title":"\u30b3\u30de\u306e\u8272\u5730\u4e00\u89a7"},"by_author":{"title":"\u4f5c\u5bb6\u306e\u8272\u5730\u4e00\u89a7"},"show":{"title":"\u8272\u5730\u8a73\u7d30"},"new":{"title":"\u8272\u5730\u4f5c\u6210"},"edit":{"title":"\u8272\u5730\u7de8\u96c6"},"create":{"title":"\u8272\u5730\u4f5c\u6210"},"update":{"title":"\u8272\u5730\u7de8\u96c6"},"destroy":{"title":"\u8272\u5730\u524a\u9664"},"submit":"\u4f5c\u6210\u3059\u308b","create_color":"\u8ffd\u52a0\u3059\u308b\u8272\u5730","update_color":"\u5909\u66f4\u3059\u308b\u8272\u5730"},"original_pictures":{"index":{"title":"\u539f\u753b\u4e00\u89a7","history":"\u5c65\u6b74","status":"\u72b6\u614b","stop":"\u505c\u6b62\u3059\u308b","destroy":"\u524a\u9664\u3059\u308b"},"show":{"title":"\u539f\u753b\u8a73\u7d30","select_license":"\u753b\u50cf\u306e\u516c\u958b","select":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u9078\u629e\u30da\u30fc\u30b8\u3078","replace_picture":"\u753b\u50cf\u306e\u66f4\u65b0","replace":"\u753b\u50cf\u3092\u6539\u8a02\u3059\u308b","history":"\u516c\u958b\u5c65\u6b74"},"new":{"title":"\u539f\u753b\u6295\u7a3f"},"create":{"title":"\u539f\u753b\u6295\u7a3f"},"edit":{"title":"\u539f\u753b\u6539\u8a02"},"update":{"title":"\u539f\u753b\u6539\u8a02"},"destroy":{"title":"\u539f\u753b\u524a\u9664"},"history":{"title":"\u516c\u958b\u5c65\u6b74"},"upload":"\u6295\u7a3f\u3059\u308b","unpublished":"\u672a\u516c\u958b","stopped":"\u505c\u6b62\u4e2d","unlicensed":"\u30e9\u30a4\u30bb\u30f3\u30b9\u5f85\u3061","published":"\u516c\u958b\u4e2d","exist":{"announce":"\u3053\u306e\u753b\u50cf\u306f\u65e2\u306b\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059","status":"\u72b6\u614b","head":"\u516c\u958b\u4e2d","tail":"\u5ec3\u76e4","disable":"\u505c\u6b62\u4e2d"}},"pictures":{"index":{"title":"\u5b9f\u7d20\u6750\u4e00\u89a7"},"show":{"title":"\u5b9f\u7d20\u6750\u8a73\u7d30","announce":{"disable":"\u3053\u306e\u7d20\u6750\u306f\u914d\u5e03\u3092\u4e2d\u6b62\u3057\u3066\u3044\u307e\u3059\u3002\u7d20\u6750\u3068\u3057\u3066\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002","head":"\u7d20\u6750\u3068\u3057\u3066\u5229\u7528\u3067\u304d\u307e\u3059\u3002","tail":"\u3053\u306e\u753b\u50cf\u306f\u65e2\u306b\u6539\u8a02\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7d20\u6750\u3068\u3057\u3066\u5229\u7528\u3059\u308b\u306a\u3089\u3001\u3053\u3061\u3089(\u6700\u65b0\u7248)\u304c\u5229\u7528\u3067\u304d\u307e\u3059\u3002","owner":"\u3042\u306a\u305f\u306e\u753b\u50cf\u3067\u3059\u3002\u539f\u753b\u3092\u7ba1\u7406\u3059\u308b\u306a\u3089\u3001\u3053\u3061\u3089\u3092\u5229\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002","destroyed":"\u3053\u306e\u7d20\u6750\u306f\u524a\u9664\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u7d20\u6750\u3068\u3057\u3066\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002"}},"md5":{"title":"\u5b9f\u7d20\u6750MD5\u691c\u7d22\u4e00\u89a7"},"credit":{"title":"\u30af\u30ec\u30b8\u30c3\u30c8"}},"resource_pictures":{"index":{"title":"\u7d20\u6750\u4e00\u89a7"},"by_artist":{"title":"\u7d75\u5e2b\u306e\u7d20\u6750\u4e00\u89a7"},"by_license_group":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u7d20\u6750\u4e00\u89a7"},"by_license":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u7d20\u6750\u4e00\u89a7"},"show":{"title":"\u7d20\u6750\u8a73\u7d30"},"new":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u6700\u7d42\u78ba\u8a8d)","publish":"\u516c\u958b\u3059\u308b"},"create":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u6700\u7d42\u78ba\u8a8d)"},"destroy":{"title":"\u7d20\u6750\u524a\u9664"},"add_to_panel_for_panel_picture":"\u3053\u306e\u7d20\u6750\u3092\u3064\u304b\u3093\u3060\u30b3\u30de\u306b\u30b3\u30de\u7d75\u3068\u3057\u3066\u8ffd\u52a0\u3059\u308b","add_to_panel_for_ground_picture":"\u3053\u306e\u7d20\u6750\u3092\u3064\u304b\u3093\u3060\u30b3\u30de\u306b\u7d75\u5730\u3068\u3057\u3066\u8ffd\u52a0\u3059\u308b"},"original_picture_license_groups":{"new":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u306e\u9078\u629e)","no_blank":"\u5fc5\u9808\u9805\u76ee"},"create":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u306e\u9078\u629e)"},"submit":{"new":"\u6b21\u3078"}},"original_picture_licenses":{"new":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u9078\u629e)","no_blank":"\u5fc5\u9808\u9805\u76ee"},"create":{"title":"\u753b\u50cf\u306e\u516c\u958b(\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u9078\u629e)"},"submit":{"new":"\u6b21\u3078"}},"speech_balloon_templates":{"index":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4e00\u89a7"},"by_panel":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u30b3\u30de\u4e00\u89a7"},"by_system_picture":{"title":"\u30b7\u30b9\u30c6\u30e0\u753b\u50cf\u306e\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4e00\u89a7"},"show":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u8a73\u7d30"},"new":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4f5c\u6210"},"edit":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u7de8\u96c6"},"create":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4f5c\u6210"},"update":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u7de8\u96c6"},"destroy":{"title":"\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u524a\u9664"},"submit":{"new":"\u4f5c\u6210\u3059\u308b","edit":"\u5909\u66f4\u3059\u308b"},"add_to_panel":"\u3053\u306e\u30d5\u30ad\u30c0\u30b7\u3092\u3064\u304b\u3093\u3060\u30b3\u30de\u306b\u8ffd\u52a0\u3059\u308b"},"writing_formats":{"index":{"title":"\u8a18\u6cd5\u4e00\u89a7"},"show":{"title":"\u8a18\u6cd5\u8a73\u7d30"},"new":{"title":"\u8a18\u6cd5\u4f5c\u6210"},"edit":{"title":"\u8a18\u6cd5\u7de8\u96c6"},"create":{"title":"\u8a18\u6cd5\u4f5c\u6210"},"update":{"title":"\u8a18\u6cd5\u7de8\u96c6"},"destroy":{"title":"\u8a18\u6cd5\u524a\u9664"},"submit":{"new":"\u4f5c\u6210\u3059\u308b","edit":"\u5909\u66f4\u3059\u308b"}},"license_groups":{"index":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u4e00\u89a7"},"licenses":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u4e00\u89a7"},"show":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u8a73\u7d30"},"new":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u4f5c\u6210"},"edit":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u7de8\u96c6"},"create":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u4f5c\u6210"},"update":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u7de8\u96c6"},"destroy":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u524a\u9664"},"submit":{"new":"\u4f5c\u6210\u3059\u308b","edit":"\u5909\u66f4\u3059\u308b"}},"licenses":{"index":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u4e00\u89a7"},"resource_pictures":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u7d20\u6750\u4e00\u89a7"},"by_license_group":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30b0\u30eb\u30fc\u30d7\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u4e00\u89a7"},"by_system_picture":{"title":"\u30b7\u30b9\u30c6\u30e0\u753b\u50cf\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u4e00\u89a7"},"show":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u8a73\u7d30"},"search":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u691c\u7d22"},"new":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u4f5c\u6210"},"edit":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u7de8\u96c6"},"create":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u4f5c\u6210"},"update":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u7de8\u96c6"},"destroy":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u524a\u9664"},"submit":{"new":"\u4f5c\u6210\u3059\u308b","edit":"\u5909\u66f4\u3059\u308b"}},"authors":{"index":{"title":"\u4f5c\u5bb6\u4e00\u89a7"},"show":{"title":"\u4f5c\u5bb6\u8a73\u7d30","to_scrolls":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30af\u30ed\u30fc\u30eb","to_scroll_panels":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30af\u30b3\u30de","to_comics":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b3\u30df\u30c3\u30af","to_comic_stories":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b3\u30df\u30b9\u30c8","to_stories":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30c8\u30fc\u30ea\u30fc","to_story_sheets":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b9\u30c8\u7d19","to_sheets":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u7528\u7d19","to_sheet_panels":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u7d19\u30b3\u30de","to_panels":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30b3\u30de","to_panel_pictures":"\u6700\u8fd1\u30b3\u30de\u3067\u4f7f\u3063\u305f\u30b3\u30de\u7d75","to_speech_balloons":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u30d5\u30ad\u30c0\u30b7","to_ground_pictures":"\u6700\u8fd1\u30b3\u30de\u3067\u4f7f\u3063\u305f\u7d75\u5730","to_ground_colors":"\u6700\u8fd1\u30b3\u30de\u3067\u4f7f\u3063\u305f\u8272\u5730"},"new":{"title":"\u4f5c\u5bb6\u767b\u9332","announce":"\u4f5c\u5bb6\u767b\u9332\u3057\u3066\u304f\u3060\u3055\u3044"},"edit":{"title":"\u4f5c\u5bb6\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u7de8\u96c6"},"create":{"title":"\u4f5c\u5bb6\u767b\u9332"},"update":{"title":"\u4f5c\u5bb6\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u7de8\u96c6"},"destroy":{"title":"\u4f11\u7b46"},"submit":{"new":"\u767b\u9332","edit":"\u5909\u66f4"}},"artists":{"index":{"title":"\u7d75\u5e2b\u4e00\u89a7"},"show":{"title":"\u7d75\u5e2b\u8a73\u7d30","to_resource_pictures":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u7d20\u6750"},"resource_pictures":{"title":"\u6700\u8fd1\u66f4\u65b0\u3057\u305f\u7d20\u6750"},"new":{"title":"\u7d75\u5e2b\u767b\u9332"},"edit":{"title":"\u7d75\u5e2b\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u7de8\u96c6"},"create":{"title":"\u7d75\u5e2b\u767b\u9332"},"update":{"title":"\u7d75\u5e2b\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u7de8\u96c6"},"destroy":{"title":"\u6d3b\u52d5\u505c\u6b62"},"submit":{"new":"\u767b\u9332","edit":"\u5909\u66f4"}},"system_pictures":{"index":{"title":"\u30b7\u30b9\u30c6\u30e0\u753b\u50cf\u4e00\u89a7"},"speech_balloon_templates":{"title":"\u30b7\u30b9\u30c6\u30e0\u753b\u50cf\u306e\u30d5\u30ad\u30c0\u30b7\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u4e00\u89a7"},"licenses":{"title":"\u30b7\u30b9\u30c6\u30e0\u753b\u50cf\u306e\u30e9\u30a4\u30bb\u30f3\u30b9\u4e00\u89a7"},"show":{"title":"\u30b7\u30b9\u30c6\u30e0\u753b\u50cf\u8a73\u7d30"}},"provider_sources":{"index":{"title":"\u8cb8\u624b\u6587\u732e\u4e00\u89a7","url":"\u8cb8\u624b\u6587\u732eurl","submit":"\u30a4\u30f3\u30dd\u30fc\u30c8"},"import":{"title":"\u8cb8\u624b\u6587\u732e\u306e\u30a4\u30f3\u30dd\u30fc\u30c8","result":"\u4ef6\u306e\u8cb8\u624b\u6587\u732e\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u307e\u3057\u305f\u3002","ok":"\u3053\u306e\u8cb8\u624b\u6587\u732e\u306f\u6b63\u5e38\u306b\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f\u3002","ok_but":"\u3053\u306e\u8cb8\u624b\u6587\u732e\u3067\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u306a\u304b\u3063\u305f\u8cb8\u624b\u304c\u3042\u308a\u307e\u3059","ok_reason":"\u8cb8\u624b\u6587\u732e\u304c\u58ca\u308c\u3066\u3044\u308b\u3001\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a\u304c\u6b63\u3057\u304f\u306a\u3044\u3001\u306a\u3069\u306e\u7406\u7531\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002","ng":"\u8cb8\u624b\u6587\u732e\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002","ng_reason":"\u8cb8\u624b\u6587\u732e\u304c\u306a\u3044\u3001\u8cb8\u624b\u6587\u732e\u3092\u7ba1\u7406\u3057\u3066\u3044\u308b\u30b5\u30fc\u30d0\u304c\u5fdc\u7b54\u3057\u306a\u3044\u3001\u30cd\u30c3\u30c8\u306b\u63a5\u7d9a\u3055\u308c\u3066\u3044\u306a\u3044\u3001\u306a\u3069\u306e\u7406\u7531\u304c\u8003\u3048\u3089\u308c\u307e\u3059\u3002","to_providers":"\u8cb8\u624b\u3092\u4e00\u89a7\u3059\u308b","to_provider_sources":"\u8cb8\u624b\u6587\u732e\u4e00\u89a7\u3078\u623b\u308b"}},"providers":{"index":{"title":"\u8cb8\u624b\u4e00\u89a7","submit":"\u30a4\u30f3\u30dd\u30fc\u30c8"},"show":{"title":"\u8cb8\u624b\u8a73\u7d30","user_open":"\u30b5\u30a4\u30c8\u3092\u958b\u304f","demander_open":"\u8cb8\u624b\u3092\u958b\u304f","to_provider_status":"\u501f\u53d7\u72b6\u6cc1","destroy":"\u8cb8\u624b\u3092\u524a\u9664\u3059\u308b"},"new":{"title":"\u8cb8\u624b\u767b\u9332"},"edit":{"title":"\u8cb8\u624b\u7de8\u96c6"},"status":"\u72b6\u614b","open":"\u958b\u304f","wait":"\u5f85\u6a5f\u4e2d\u306e\u8cb8\u624b\u3060\u3051\u3092\u8868\u793a\u3059\u308b","all":"\u3059\u3079\u3066\u306e\u8cb8\u624b\u3092\u8868\u793a\u3059\u308b","to_provider_status":"\u501f\u53d7\u72b6\u6cc1\u306b\u5207\u308a\u66ff\u3048\u308b"},"provider_statuses":{"index":{"title":"\u501f\u53d7\u72b6\u6cc1\u4e00\u89a7"},"show":{"title":"\u501f\u53d7\u72b6\u6cc1\u8a73\u7d30","user_open":"\u30b5\u30a4\u30c8\u3092\u958b\u304f","demander_open":"\u30b5\u30a4\u30c8\u306e\u501f\u624b\u5411\u3051\u30da\u30fc\u30b8\u3092\u958b\u304f","to_provider":"\u8cb8\u624b","receive_announce":"\u501f\u53d7\u3059\u308b\u306b\u306f\u501f\u624b\u3068\u306a\u3063\u3066\u501f\u53d7\u7533\u8acb\u3059\u308b\u3002","receive_start":"\u3053\u306e\u8cb8\u624b\u304b\u3089\u306e\u501f\u53d7\u3092\u958b\u59cb\u3059\u308b","receive_stop":"\u501f\u53d7\u3092\u505c\u6b62\u3059\u308b","import":"\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b","licenses_import":"\u30e9\u30a4\u30bb\u30f3\u30b9\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b","artists_import":"\u7d75\u5e2b\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b","original_pictures_import":"\u7d20\u6750\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b"},"new":{"title":"\u501f\u53d7\u72b6\u6cc1\u767b\u9332"},"edit":{"title":"\u501f\u53d7\u72b6\u6cc1\u7de8\u96c6"},"create":{"title":"\u501f\u53d7\u72b6\u6cc1\u767b\u9332"},"update":{"title":"\u501f\u53d7\u72b6\u6cc1\u7de8\u96c6"},"licenses_import":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u30a4\u30f3\u30dd\u30fc\u30c8","success":"\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f","fail":"\u6b21\u306e\u30e9\u30a4\u30bb\u30f3\u30b9(%{size}\u4ef6)\u3067\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f\u3002\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u72b6\u6cc1\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002","to_show":"\u501f\u53d7\u72b6\u6cc1\u3092\u8868\u793a\u3059\u308b"},"artists_import":{"title":"\u7d75\u5e2b\u30a4\u30f3\u30dd\u30fc\u30c8","success":"\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f","fail":"\u6b21\u306e\u7d75\u5e2b(%{size}\u4ef6)\u3067\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f\u3002","to_show":"\u501f\u53d7\u72b6\u6cc1\u3092\u8868\u793a\u3059\u308b"},"original_pictures_import":{"title":"\u539f\u753b\u30a4\u30f3\u30dd\u30fc\u30c8","success":"\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f","fail":"\u6b21\u306e\u539f\u753b(%{size}\u4ef6)\u3067\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f\u3002","to_show":"\u501f\u53d7\u72b6\u6cc1\u3092\u8868\u793a\u3059\u308b"},"pictures_import":{"fail":"\u6b21\u306e\u5b9f\u7d20\u6750(%{size}\u4ef6)\u3067\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f\u3002"},"resource_pictures_import":{"fail":"\u6b21\u306e\u7d20\u6750(%{size}\u4ef6)\u3067\u30a8\u30e9\u30fc\u304c\u3042\u308a\u307e\u3057\u305f\u3002"},"import":{"title":"\u30a4\u30f3\u30dd\u30fc\u30c8","success":"\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f","to_show":"\u501f\u53d7\u72b6\u6cc1\u3092\u8868\u793a\u3059\u308b"},"status":"\u72b6\u614b","open":"\u958b\u304f","to_provider":"\u8cb8\u624b\u306b\u5207\u308a\u66ff\u3048\u308b","wait":"\u5f85\u6a5f\u4e2d\u306e\u8cb8\u624b\u306e\u501f\u53d7\u72b6\u6cc1\u3060\u3051\u3092\u8868\u793a\u3059\u308b","all":"\u3059\u3079\u3066\u306e\u8cb8\u624b\u306e\u501f\u53d7\u72b6\u6cc1\u3092\u8868\u793a\u3059\u308b","flash":{"notice":{"created":"\u501f\u53d7\u3092\u958b\u59cb\u3057\u307e\u3057\u305f\u3002","not_created":"\u501f\u53d7\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002","stopped":"\u501f\u53d7\u3092\u505c\u6b62\u3057\u307e\u3057\u305f\u3002","not_stopped":"\u501f\u53d7\u3092\u505c\u6b62\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}}},"demanders":{"index":{"title":"\u501f\u624b\u4e00\u89a7","to_show":"\u30b5\u30a4\u30c8\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u8868\u793a\u3059\u308b","request":"\u3053\u306e\u8cb8\u624b\u306b\u501f\u53d7\u7533\u8acb\u3059\u308b","stop":"\u501f\u53d7\u3092\u4e2d\u6b62\u3059\u308b"},"show":{"title":"\u501f\u624b\u8a73\u7d30"},"new":{"title":"\u501f\u624b\u767b\u9332"},"edit":{"title":"\u501f\u624b\u7de8\u96c6"},"create":{"title":"\u501f\u624b\u767b\u9332"},"update":{"title":"\u501f\u624b\u7de8\u96c6"},"destroy":{"title":"\u9000\u4f1a"},"status":"\u72b6\u614b","flash":{"notice":{"not_found":"\u30b5\u30a4\u30c8\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\u3092\u767b\u9332\u3057\u3066\u304f\u3060\u3055\u3044\u3002","requested":"\u501f\u53d7\u7533\u8acb\u3057\u307e\u3057\u305f\u3002","not_requested":"\u501f\u53d7\u7533\u8acb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002","stopped":"\u501f\u53d7\u3092\u505c\u6b62\u3057\u307e\u3057\u305f\u3002","not_stopped":"\u501f\u53d7\u3092\u505c\u6b62\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}}},"demander_statuses":{"index":{"title":"\u8cb8\u4e0e\u72b6\u6cc1\u4e00\u89a7"},"show":{"title":"\u8cb8\u4e0e\u72b6\u6cc1\u8a73\u7d30","demander_open":"\u30b5\u30a4\u30c8\u3092\u958b\u304f","approve_announce":"\u501f\u53d7\u7533\u8acb\u306b\u5bfe\u3057\u3066\u8fd4\u7b54\u3057\u3066\u304f\u3060\u3055\u3044\u3002","approve":"\u3053\u306e\u501f\u624b\u306b\u8cb8\u4e0e\u3092\u958b\u59cb\u3059\u308b","reject":"\u3053\u306e\u501f\u624b\u306b\u306f\u8cb8\u4e0e\u3057\u306a\u3044","stop":"\u3053\u306e\u501f\u624b\u306e\u8cb8\u4e0e\u3092\u505c\u6b62\u3059\u308b","reapprove":"\u3053\u306e\u501f\u624b\u306e\u5426\u6c7a\u3092\u8986\u3057\u3066\u8cb8\u4e0e\u3059\u308b"},"new":{"title":"\u8cb8\u4e0e\u72b6\u6cc1\u767b\u9332"},"edit":{"title":"\u8cb8\u4e0e\u72b6\u6cc1\u7de8\u96c6"},"create":{"title":"\u8cb8\u4e0e\u72b6\u6cc1\u767b\u9332"},"update":{"title":"\u8cb8\u4e0e\u72b6\u6cc1\u7de8\u96c6"},"status":"\u72b6\u614b","open":"\u958b\u304f","wait":"\u7533\u8acb\u4e2d\u306e\u501f\u624b\u306e\u8cb8\u4e0e\u72b6\u6cc1\u3060\u3051\u3092\u8868\u793a\u3059\u308b","all":"\u3059\u3079\u3066\u306e\u501f\u624b\u306e\u8cb8\u4e0e\u72b6\u6cc1\u3092\u8868\u793a\u3059\u308b","flash":{"notice":{"rejected":"\u8cb8\u4e0e\u3092\u5426\u6c7a\u3057\u307e\u3057\u305f\u3002","not_rejected":"\u8cb8\u4e0e\u3092\u5426\u6c7a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002","approved":"\u8cb8\u4e0e\u3092\u627f\u8a8d\u3057\u307e\u3057\u305f\u3002","not_approved":"\u8cb8\u4e0e\u3092\u627f\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"}}},"provider_licenses":{"index":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u5bfe\u7167\u8868\u4e00\u89a7"},"show":{"title":"\u30e9\u30a4\u30bb\u30f3\u30b9\u5bfe\u7167\u8868\u8a73\u7d30"}},"provider_artists":{"index":{"title":"\u7d75\u5e2b\u5bfe\u7167\u8868\u4e00\u89a7"},"show":{"title":"\u7d75\u5e2b\u5bfe\u7167\u8868\u8a73\u7d30"}},"provider_original_pictures":{"index":{"title":"\u539f\u753b\u5bfe\u7167\u8868\u4e00\u89a7"},"show":{"title":"\u539f\u753b\u5bfe\u7167\u8868\u8a73\u7d30"}},"link":{"edit":"\u7de8\u96c6","destroy":"\u524a\u9664","back":"\u623b\u308b","marker":"\u25a0","catch":"\u63b4\u3080"},"editor":"\u7de8\u96c6\u30e1\u30cb\u30e5\u30fc","credit":{"digest":"\u7c21\u6613\u30af\u30ec\u30b8\u30c3\u30c8","full":"\u30af\u30ec\u30b8\u30c3\u30c8"},"tab":{"creator":{"home":"\u4f5c\u308b\u30fb\u898b\u305b\u308b","comic":"\u30b3\u30df\u30c3\u30af","story":"\u30b9\u30c8\u30fc\u30ea\u30fc","sheet":"\u7528\u7d19","scroll":"\u30b9\u30af\u30ed\u30fc\u30eb","panel":"\u30b3\u30de","original_picture":"\u539f\u753b","resource_picture":"\u7d20\u6750","catch":"\u3064\u304b\u3093\u3067\u3044\u308b\u30b3\u30de"},"reader":{"title":"\u8aad\u3080\u30fb\u63a2\u3059"},"demander":{"title":"\u501f\u308a\u53d7\u3051\u308b"},"system":{"title":"\u7ba1\u7406\u8005\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9","browse":"\u751f\u30c7\u30fc\u30bf","approve":"\u7ba1\u7406\u8005\u627f\u8a8d","port":"\u7d20\u6750\u8cb8\u501f","token":"\u30c8\u30fc\u30af\u30f3","layout":"\u30ec\u30a4\u30a2\u30a6\u30c8","test":"\u30c6\u30b9\u30c8\u7248","production":"\u88fd\u54c1\u7248"}},"filer":{"header":{"symbol":"\u753b\u50cf","caption":"\u898b\u51fa\u3057","summary":"\u8981\u7d04","icon":"\u30d7\u30ed\u30d5","date":"\u65e5\u6642","edit":"\u7de8\u96c6"}}}};
\ No newline at end of file
index a24e6db..6633cfa 100644 (file)
@@ -9,6 +9,16 @@ class LocalManifest.FilerModule.CaptionModule.DefaultModule.LinkModule.ActionLin
     @action_name = @args['action_name']\r
   \r
   action_path: () ->\r
-    a = @action_name == 'show' ? '' : @action_name + '/'\r
-    '/' + this.filer.item_class.path_name + '/' + a\r
+    a = if @action_name == 'show'\r
+      ''\r
+    else\r
+      @action_name + '/'\r
+    '/' + this.filer().item_class.path_name() + '/' + a\r
+  \r
+  js_action_path: () ->\r
+    a = if @action_name == 'show'\r
+      ''\r
+    else\r
+      @action_name + '/'\r
+    this.filer().item_class.path_name() + '/' + a\r
   \r
index 1526ce0..09fa16a 100644 (file)
@@ -7,5 +7,5 @@ class LocalManifest.FilerModule.CaptionModule.DefaultModule.LinkModule.BaseLink
     super()\r
   \r
   filer: () ->\r
-    @parent.filer\r
+    @parent.filer()\r
 \r
index 34fd67e..57f6764 100644 (file)
@@ -9,5 +9,5 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.BaseFace e
     @item_name = @args.item_name\r
   \r
   filer: () ->\r
-    @parent.filer\r
+    @parent.filer()\r
 \r
index 0e070b3..11dd9ac 100644 (file)
@@ -2,7 +2,7 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.ImageFace
   \r
   set_default: () ->\r
     super()\r
-    @args['url'] ||= '/images/' + this.filer.item_name + '.gif'\r
+    @args['url'] ||= '/images/' + @filer().item_name() + '.gif'\r
     \r
   init: () ->\r
     super()\r
index f792415..ed0f318 100644 (file)
@@ -9,6 +9,16 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.ActionLink
     @action_name = @args['action_name']\r
   \r
   action_path: () ->\r
-    a = @action_name == 'show' ? '' : @action_name + '/'\r
-    '/' + this.filer.item_class.path_name + '/' + a\r
+    a = if @action_name == 'show'\r
+      ''\r
+    else\r
+      @action_name + '/'\r
+    '/' + this.filer().item_class.path_name() + '/' + a\r
+  \r
+  js_action_path: () ->\r
+    a = if @action_name == 'show'\r
+      ''\r
+    else\r
+      @action_name + '/'\r
+    this.filer().item_class.path_name() + '/' + a\r
   \r
index 2a96ef5..b53f82e 100644 (file)
@@ -9,5 +9,5 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.BaseLink e
     @item_name = @args.item_name\r
   \r
   filer: () ->\r
-    @parent.filer\r
+    @parent.filer()\r
 \r
index e2a8a36..3a569be 100644 (file)
@@ -2,8 +2,8 @@ class Locmare.Filer extends Backbone.View
   tagName: 'div'\r
   initialize: (options) ->\r
     @item_name = options.item_name\r
-    @collection = options.collection\r
     @list_result = options.list_result\r
+    @items = options.items\r
     @pager_type = options.pager_type\r
     @operators = options.operators\r
     @manifest = LocalManifest.manifest().filers[@item_name]\r
@@ -13,8 +13,8 @@ class Locmare.Filer extends Backbone.View
     #@init_pager\r
   \r
   render: () ->\r
-    template = _.template($("#" + @template_name()).html())\r
-    this.$el.html(template({'filer': this}))\r
+    this.$el.append(@header.render().el)\r
+    this.$el.append(@body.render().el)\r
     this\r
   \r
   init_pager: () ->\r
index c2b90cd..5266dd0 100644 (file)
@@ -7,9 +7,8 @@ class Locmare.FilerModule.Body extends Backbone.View
     @file_body = new Locmare.FilerModule.BodyModule.FileBody({'body': this})\r
   \r
   render: () ->\r
-    args = {'header': this, 'body': this}\r
-    template = _.template($("#" + @template_name()).html())\r
-    this.$el.html(template(args))\r
+    this.$el.append(@file_header.render().el)\r
+    this.$el.append(@file_body.render().el)\r
     this\r
   \r
   file_header_class: () ->\r
index e54d2fa..0e0218c 100644 (file)
@@ -3,16 +3,14 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View
   \r
   initialize: (options) ->\r
     @body = options.body\r
-    _this = this\r
-    @file_items = @collection().fetch({}).done(() -> _this.render())\r
+    @items = @filer().items\r
   \r
   render: () ->\r
     _this = this\r
-    _.each @collection(), (item) ->\r
-      file_item = new _this.file_item_class()({'file_body': _this, 'item ':item})\r
-      args = {'file_body': _this}\r
-      template = _.template($("#" + file_item.template_name()).html())\r
-      _this.$el.append(template(args))\r
+    _.each @items, (item) ->\r
+      c = _this.file_item_class()\r
+      file_item = new c({'file_body': _this, 'item': item})\r
+      _this.$el.append(file_item.render().el)\r
     this\r
   \r
   file_item_class: () ->\r
@@ -30,8 +28,8 @@ class Locmare.FilerModule.BodyModule.FileBody extends Backbone.View
   model: () ->\r
     @filer().model\r
   \r
-  collection: () ->\r
-    @filer().collection\r
+  items: () ->\r
+    @filer().items\r
   \r
   template_dir: () ->\r
     @filer().template_dir\r
index 826c0e7..a91b3b6 100644 (file)
@@ -1,22 +1,30 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Backbone.View\r
   tagName: 'li'\r
-  id: ""\r
-  class: "filer-item filer-item-<%= file_item.item_name -%>"\r
   \r
   initialize: (options) ->\r
     @file_body = options.file_body\r
     @item = options.item\r
     @symbol = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnFactory.factory this, @manifest().symbol, @item\r
     @caption = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnFactory.factory this, @manifest().caption, @item\r
-    @summary = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnFactory.factory this, @manifest().manifest.summary, @item\r
+    @summary = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnFactory.factory this, @manifest().summary, @item\r
     @icon = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnFactory.factory this, @manifest().icon, @item\r
     @date = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnFactory.factory this, @manifest().date, @item\r
     @edit = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnFactory.factory this, @manifest().edit, @item\r
+    @el.className = 'filer-item filer-item-' + @item.item_name()\r
   \r
   render: () ->\r
-    args = {'header': this}\r
-    template = _.template($("#" + @template_name()).html())\r
-    this.$el.html(template(args))\r
+    if @symbol.is_visible()\r
+      this.$el.append(@symbol.render().el)\r
+    if @caption.is_visible()\r
+      this.$el.append(@caption.render().el)\r
+    if @summary.is_visible()\r
+      this.$el.append(@summary.render().el)\r
+    if @icon.is_visible()\r
+      this.$el.append(@icon.render().el)\r
+    if @date.is_visible()\r
+      this.$el.append(@date.render().el)\r
+    if @edit.is_visible()\r
+      this.$el.append(@edit.render().el)\r
     this\r
   \r
   filer: () ->\r
index 3f8154b..7ea39dd 100644 (file)
@@ -1,17 +1,19 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule\r
     {\r
-      'default': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Default, \r
-      'template': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Template, \r
-      'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.None\r
+      'default': m.Default, \r
+      'template': m.Template, \r
+      'none': m.None\r
     }\r
   \r
   @factory: (file_item, my_manifest, item) ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnFactory\r
     type = my_manifest.type\r
     if not type\r
       alert_message "undefined type", "local view filers > #{file_item.item_name} > caption > default > face\n"\r
-    my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnFactory.types()[type]\r
+    my_class = m.types()[type]\r
     if not my_class\r
       alert_message "undefined class", "local view filers > #{file_item.item_name} > caption > default > face > #{type}\n"\r
     new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item})\r
index a4165c7..21f26fe 100644 (file)
@@ -3,9 +3,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   \r
   initialize: (options) ->\r
     @file_item = options.file_item\r
-    @date_manifest = options.my_manifest\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
     @column_name = 'caption'\r
+    @el.className = 'filer-item-' + @column_name\r
+  \r
+  render: () ->\r
+    this\r
   \r
   filer: () ->\r
     @file_item.filer()\r
@@ -16,21 +20,12 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   item_name: () ->\r
     @filer().item_name\r
   \r
-  column_template_dir: () ->\r
-    @filer().template_dir() + 'item_column-'\r
-  \r
-  column_template_file_name: () ->\r
-    raise "undefined column_template_file_name\n"\r
-  \r
-  column_template_name: () ->\r
-    @column_template_dir() + @column_template_file_name()\r
-  \r
-  item_template_dir: () ->\r
-    @filer().template_dir() + 'caption-'\r
-  \r
-  item_template_file_name: () ->\r
-    raise "undefined item_template_file_name\n"\r
+  is_visible: () ->\r
+    true\r
   \r
-  item_template_name: () ->\r
-    @item_template_dir() + @item_template_file_name()\r
+  template_dir: () ->\r
+    @filer().template_dir + @column_name + '-'\r
   \r
+  template_name: () ->\r
+    @template_dir() + @template_file_name()\r
\r
index 906c971..cee0c36 100644 (file)
@@ -1,18 +1,26 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Base\r
-  \r
+  events: {\r
+    'click .face': 'show'\r
+  }\r
   initialize: (options) ->\r
     super(options)\r
-    @face = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceFactory.factory this, @my_manifest.face, @item\r
-    @link = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkFactory.factory this, @my_manifest.link, @item\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule\r
+    @face = m.FaceFactory.factory this, @my_manifest.face, @item\r
+    @link = m.LinkFactory.factory this, @my_manifest.link, @item\r
   \r
-  column_template_file_name: () ->\r
-    'show'\r
+  render: () ->\r
+    this.$el.html(@renderer().render().el)\r
+    this\r
   \r
-  item_template_file_name: () ->\r
-    if @my_manifest.link.type() == 'none'\r
-      'default_without_link'\r
+  show: () ->\r
+    window.router.navigate(@link.url(), true);\r
+    return false\r
+    \r
+  renderer: () ->\r
+    if @my_manifest.link.type == 'none'\r
+      @face\r
     else\r
-      'default'\r
+      @link\r
   \r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule\r
   \r
index 23128cf..a48a9aa 100644 (file)
@@ -1,20 +1,22 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule\r
     {\r
-      'column': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.ColumnFace, \r
-      'method': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.MethodFace, \r
-      'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.NoneFace\r
+      'column': m.ColumnFace, \r
+      'method': m.MethodFace, \r
+      'none': m.NoneFace\r
     }\r
   \r
-  @factory: (file_item, my_manifest, item) ->\r
+  @factory: (default_caption, my_manifest, item) ->\r
     type = my_manifest.type\r
     if not type\r
-      alert_message "undefined type for local view filers > #{file_item.item_name} > caption > face\n"\r
-    my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceFactory.types()[type]\r
+      ManifestBase.alert_message 'undefined type', "local view filers > #{default_caption.item_name} > caption > face\n"\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceFactory\r
+    my_class = m.types()[type]\r
     if not my_class\r
-      alert_message "undefined class for local view filers > #{file_item.item_name} > caption > face > #{type}\n"\r
-    new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item})\r
+      ManifestBase.alert_message 'undefined class', "local view filers > #{default_caption.item_name} > caption > face > #{type}\n"\r
+    new my_class({default_caption: default_caption, my_manifest: my_manifest, item: item})\r
   \r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule\r
 \r
index 19bedfb..14d2c2b 100644 (file)
@@ -1,11 +1,15 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.BaseFace extends Backbone.View\r
   tagName: 'div'\r
+  className: 'face'\r
   \r
   initialize: (options) ->\r
-    @file_item = options.file_item\r
-    @default_caption = options.my_manifest\r
+    @default_caption = options.default_caption\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
   \r
+  render: () ->\r
+    this\r
+  \r
   filer: () ->\r
     @default_caption.filer()\r
   \r
@@ -15,13 +19,3 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   item_name: () ->\r
     @filer().item_name\r
   \r
-  template_dir: () ->\r
-    @filer().template_dir + "caption_face-"\r
-  \r
-  template_file_name: () ->\r
-    raise "undefined template_file_name\n"\r
-  \r
-  template_name: () ->\r
-    @template_dir() + @template_file_name()\r
-  \r
-\r
index 6effeae..ab73475 100644 (file)
@@ -1,11 +1,18 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.ColumnFace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.BaseFace\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    this.$el.html(@face())\r
+    this\r
+  \r
   template_file_name: () ->\r
-    if @face.is_blank()\r
+    if Pettanr.is_blank(@face())\r
       'empty'\r
     else\r
       'column'\r
   \r
   face: () ->\r
-    @item.get(@my_manifest.column_name())\r
+    @item.get(@my_manifest.column_name)\r
   \r
index 1de23d9..76b023e 100644 (file)
@@ -1,11 +1,18 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.MethodFace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.BaseFace\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    this.$el.html(@face())\r
+    this\r
+  \r
   @template_file_name: () ->\r
-    if @face.is_blank()\r
+    if @face().is_blank()\r
       'empty'\r
     else\r
       'column'\r
   \r
   face: () ->\r
-    @item[@face_manifest.method_name()]()\r
+    @item[@my_manifest.method_name]()\r
   \r
index ae72d84..bdc1d41 100644 (file)
@@ -1,5 +1,8 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.NoneFace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.FaceModule.BaseFace\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   template_file_name: () ->\r
     'none'\r
 \r
index 714b061..a04947c 100644 (file)
@@ -1,21 +1,22 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule\r
     {\r
-      'action': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.ActionLink, \r
-      'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.NoneLink, \r
-      'url_column': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.UrlColumnLink\r
+      'action': m.ActionLink, \r
+      'none': m.NoneLink, \r
+      'url_column': m.UrlColumnLink\r
     }\r
   \r
-  @factory: (file_item, my_manifest, item) ->\r
+  @factory: (default_caption, my_manifest, item) ->\r
     type = my_manifest.type\r
     if not type\r
-      alert_message "undefined type for local view filers > #{file_item.item_name} > caption > link\n"\r
-    my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkFactory.types()[type]\r
+      ManifestBase.alert_message 'undefined type', "local view filers > #{default_caption.item_name} > caption > link\n"\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkFactory\r
+    my_class = m.types()[type]\r
     if not my_class\r
-      alert_message "undefined class for local view filers > #{file_item.item_name} > caption > link > #{type}\n"\r
-    new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item})\r
+      ManifestBase.alert_message 'undefined class', "local view filers > #{default_caption.item_name} > caption > link > #{type}\n"\r
+    new my_class({default_caption: default_caption, my_manifest: my_manifest, item: item})\r
   \r
-    \r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule\r
 \r
index fc35293..ca1eaec 100644 (file)
@@ -1,5 +1,17 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.ActionLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.BaseLink\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    this.$el.attr('href', @url())\r
+    # embed face everytime\r
+    this.$el.html(@default_caption.face.render().el)\r
+    this\r
+  \r
+  js_url: () ->\r
+    "javascript:void(0)"\r
+  \r
   url: () ->\r
-    @my_manifest.action_path() + @item.get('id').toString()\r
+    @my_manifest.js_action_path() + @item.get('id').toString()\r
   \r
index a2e8e75..b462051 100644 (file)
@@ -1,9 +1,9 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.BaseLink extends Backbone.View\r
-  tagName: 'div'\r
+  tagName: 'a'\r
   \r
   initialize: (options) ->\r
-    @file_item = options.file_item\r
-    @default_caption = options.my_manifest\r
+    @default_caption = options.default_caption\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
   \r
   url: () ->\r
index 12a5a22..4c5faf1 100644 (file)
@@ -1,5 +1,8 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.NoneLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.BaseLink\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   url: () ->\r
     null\r
     \r
index 24631e5..af3fcc8 100644 (file)
@@ -1,5 +1,17 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.UrlColumnLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.DefaultModule.LinkModule.BaseLink\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    this.$el.attr('href', @url())\r
+    # embed face everytime\r
+    this.$el.html(@default_caption.face.render().el)\r
+    this\r
+  \r
+  js_url: () ->\r
+    "javascript:void(0)"\r
+  \r
   url: () ->\r
     @item.get(@my_manifest.column_name())\r
 \r
index 80340b1..1b913a4 100644 (file)
@@ -1,5 +1,8 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Base\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   column_template_file_name: () ->\r
     'none'\r
   \r
index bcda9c7..f8d6883 100644 (file)
@@ -1,4 +1,7 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Template extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemColumnModule.Base\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   template_file_name: () ->\r
     @my_manifest.template_name()\r
index 448923d..b9c00ff 100644 (file)
@@ -1,16 +1,18 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule\r
     {\r
-      'default': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.Default, \r
-      'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.None\r
+      'default': m.Default, \r
+      'none': m.None\r
     }\r
   \r
   @factory: (file_item, my_manifest, item) ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnFactory\r
     type = my_manifest.type\r
     if not type\r
       alert_message "undefined type", "local view filers > #{file_item.item_name} > date\n"\r
-    my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnFactory.types()[type]\r
+    my_class = m.types()[type]\r
     if not my_class\r
       alert_message "undefined class", "local view filers > #{file_item.item_name} > date > #{type}\n"\r
     new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item})\r
index 0db33a3..17a65d8 100644 (file)
@@ -3,9 +3,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColum
   \r
   initialize: (options) ->\r
     @file_item = options.file_item\r
-    @date_manifest = options.my_manifest\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
     @column_name = 'date'\r
+    @el.className = 'filer-item-' + @column_name\r
+  \r
+  render: () ->\r
+    this\r
   \r
   filer: () ->\r
     @file_item.filer()\r
@@ -14,23 +18,5 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColum
     @filer.manifest\r
   \r
   item_name: () ->\r
-    @filer.item_name\r
-  \r
-  column_template_dir: () ->\r
-    @filer.template_dir + 'item_column-'\r
-  \r
-  column_template_file_name: () ->\r
-    raise "undefined column_template_file_name\n"\r
-  \r
-  column_template_name: () ->\r
-    @column_template_dir() + @column_template_file_name()\r
-  \r
-  item_template_dir: () ->\r
-    @filer.template_dir + 'date-'\r
-  \r
-  item_template_file_name: () ->\r
-    raise "undefined item_template_file_name\n"\r
-  \r
-  item_template_name: () ->\r
-    @item_template_dir() + @item_template_file_name()\r
+    @filer().item_name\r
   \r
index b8972d0..5a3fc78 100644 (file)
@@ -1,8 +1,15 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.Base\r
   \r
-  column_template_file_name: () ->\r
-    'show'\r
+  initialize: (options) ->\r
+    super(options)\r
   \r
-  item_template_file_name: () ->\r
-    'default'\r
+  render: () ->\r
+    this.$el.html(@time_ago())\r
+    this\r
+  \r
+  time_ago: () ->\r
+    Pettanr.AppHelper.distance_of_time_in_words_to_now @item.get('updated_at')\r
+  \r
+  is_visible: () ->\r
+    true\r
   \r
index 15a3789..e63a7c4 100644 (file)
@@ -1,5 +1,8 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.DateItemColumnModule.Base\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   column_template_file_name: () ->\r
     'none'\r
   \r
index b39b162..96452bc 100644 (file)
@@ -1,18 +1,20 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule\r
     {\r
-      'default': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Default, \r
-      'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.None, \r
-      'account': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Account, \r
-      'template': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Template\r
+      'default': m.Default, \r
+      'none': m.None, \r
+      'account': m.Account, \r
+      'template': m.Template\r
     }\r
   \r
   @factory: (file_item, my_manifest, item) ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnFactory\r
     type = my_manifest.type\r
     if not type\r
       alert_message "undefined type","local view filers > #{file_item.item_name} > edit\n"\r
-    my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnFactory.types()[type]\r
+    my_class = m.types()[type]\r
     if not my_class\r
       alert_message "undefined class", "local view filers > #{file_item.item_name} > edit > #{type}\n"\r
     new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item})\r
index fc5e555..e5bf1d1 100644 (file)
@@ -1,9 +1,15 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Account extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Base\r
   \r
-  column_template_file_name: () ->\r
-    'show'\r
+  initialize: (options) ->\r
+    super(options)\r
   \r
-  item_template_file_name: () ->\r
+  render: () ->\r
+    args = {'item_column': this}\r
+    template = _.template($("#" + @template_name()).html())\r
+    this.$el.html(template(args))\r
+    this\r
+  \r
+  template_file_name: () ->\r
     if @item.is_own(@filer().operators)\r
       'account'\r
     else\r
@@ -12,10 +18,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum
   edit_img_file_name: () ->\r
     @image_dir() + 'edit.png'\r
    \r
+  icon_size: () ->\r
+    Manifest.manifest().magic_numbers['thumbnail_width'] / 2\r
+  \r
   img_opt: () ->\r
     {\r
-      'width': Manifest.manifest.magic_numbers['thumbnail_width'] / 2, \r
-      'height': Manifest.manifest.magic_numbers['thumbnail_height'] / 2\r
+      'width': Manifest.manifest().magic_numbers['thumbnail_width'] / 2, \r
+      'height': Manifest.manifest().magic_numbers['thumbnail_height'] / 2\r
     }\r
   \r
   edit_img_opt: () ->\r
index 43ebcd8..17d9f17 100644 (file)
@@ -3,9 +3,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum
   \r
   initialize: (options) ->\r
     @file_item = options.file_item\r
-    @date_manifest = options.my_manifest\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
     @column_name = 'edit'\r
+    @el.className = 'filer-item-' + @column_name\r
+  \r
+  render: () ->\r
+    this\r
   \r
   filer: () ->\r
     @file_item.filer()\r
@@ -17,23 +21,17 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum
     @filer().item_name\r
   \r
   image_dir: () ->\r
-    @filer().image_dir\r
-  \r
-  column_template_dir: () ->\r
-    @filer().template_dir + 'item_column/'\r
-  \r
-  column_template_file_name: () ->\r
-    raise "undefined column_template_file_name\n"\r
+    @filer().image_dir()\r
   \r
-  column_template_name: () ->\r
-    @column_template_dir() + @column_template_file_name()\r
+  is_visible: () ->\r
+    true\r
   \r
-  item_template_dir: () ->\r
-    @filer().template_dir + 'edit/'\r
+  template_dir: () ->\r
+    @filer().template_dir + 'edit-'\r
   \r
-  item_template_file_name: () ->\r
-    raise "undefined item_template_file_name\n"\r
+  template_file_name: () ->\r
+    ""\r
   \r
-  item_template_name: () ->\r
-    @item_template_dir() + @item_template_file_name()\r
+  template_name: () ->\r
+    @template_dir() + @template_file_name()\r
   \r
index b837813..3006b39 100644 (file)
@@ -1,5 +1,8 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Base\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   column_template_file_name: () ->\r
     'show'\r
   \r
index f6be2f8..bf407ca 100644 (file)
@@ -1,5 +1,8 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Base\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   column_template_file_name: () ->\r
     'none'\r
   \r
index 4764054..5fd8437 100644 (file)
@@ -1,5 +1,8 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Template extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColumnModule.Base\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   column_template_file_name: () ->\r
     'show'\r
   \r
@@ -7,7 +10,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum
     'template'\r
   \r
   template_dir: () ->\r
-    @item.path_name() + '/'\r
+    @item.path_name() + '-'\r
   \r
   template_file_name: () ->\r
     @my_manifest.template_name()\r
index 2f821f9..30cdb41 100644 (file)
@@ -1,16 +1,18 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule\r
     {\r
-      'default': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Default, \r
-      'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.None\r
+      'default': m.Default, \r
+      'none': m.None\r
     }\r
   \r
   @factory: (file_item, my_manifest, item) ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnFactory\r
     type = my_manifest.type\r
     if not type\r
       alert_message "undefined type", "local view filers > #{file_item.item_name} > icon\n"\r
-    my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnFactory.types()[type]\r
+    my_class = m.types()[type]\r
     if not my_class\r
       alert_message "undefined class", "local view filers > #{file_item.item_name} > icon > #{type}\n"\r
     new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item})\r
index e4207e5..a6244ef 100644 (file)
@@ -3,9 +3,22 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum
   \r
   initialize: (options) ->\r
     @file_item = options.file_item\r
-    @date_manifest = options.my_manifest\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
     @column_name = 'icon'\r
+    @el.className = 'filer-item-' + @column_name\r
+  \r
+  render_column: () ->\r
+    args = {'item_column': this}\r
+    template = _.template($("#" + @column_template_name()).html())\r
+    this.$el.html(template(args))\r
+    this\r
+  \r
+  render_item: () ->\r
+    args = {'item_column': this}\r
+    template = _.template($("#" + @item_template_name()).html())\r
+    this.$el.html(template(args))\r
+    this\r
   \r
   filer: () ->\r
     @file_item.filer()\r
@@ -17,7 +30,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum
     @filer().item_name\r
   \r
   column_template_dir: () ->\r
-    @filer().template_dir() + 'item_column-'\r
+    @filer().template_dir + 'item_column-'\r
   \r
   column_template_file_name: () ->\r
     raise "undefined column_template_file_name\n"\r
@@ -26,7 +39,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum
     @column_template_dir() + @column_template_file_name()\r
   \r
   item_template_dir: () ->\r
-    @filer().template_dir() + 'icon-'\r
+    @filer().template_dir + 'icon-'\r
   \r
   item_template_file_name: () ->\r
     raise "undefined item_template_file_name\n"\r
index 6a1a0bd..77113f2 100644 (file)
@@ -1,7 +1,15 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Base\r
   \r
-  column_template_file_name: () ->\r
-    'show'\r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    i = new Pettanr.AppHelperImg({src: @icon_file_name(), size: @icon_size()})\r
+    this.$el.html(i.render().el)\r
+    this\r
+  \r
+  path_name: () ->\r
+    '/' + @manifest().item_class.path_name() + '/' + @item.get('id').toString() + '.prof'\r
   \r
   item_template_file_name: () ->\r
     'default'\r
@@ -12,3 +20,6 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum
   icon_size: () ->\r
     Manifest.manifest().magic_numbers['thumbnail_width']\r
   \r
+  is_visible: () ->\r
+    true\r
+  \r
index c36869a..5144949 100644 (file)
@@ -1,5 +1,8 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.None extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColumnModule.Base\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
   column_template_file_name: () ->\r
     'none'\r
   \r
index a3b5d10..b001f3d 100644 (file)
@@ -1,16 +1,18 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnModule\r
     {\r
-      'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnModule.None, \r
-      'template': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnModule.Template\r
+      'none': m.None, \r
+      'template': m.Template\r
     }\r
   \r
   @factory: (file_item, my_manifest, item) ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnFactory\r
     type = my_manifest.type\r
     if not type\r
       alert_message "undefined type", "local view filers > #{file_item.item_name} > summary\n"\r
-    my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.types()[type]\r
+    my_class = m.types()[type]\r
     if not my_class\r
       alert_message "undefined class", "local view filers > #{file_item.item_name} > summary > #{type}\n"\r
     new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item})\r
index cf91ad9..d2fa6fb 100644 (file)
@@ -3,9 +3,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemCo
   \r
   initialize: (options) ->\r
     @file_item = options.file_item\r
-    @date_manifest = options.my_manifest\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
     @column_name = 'summary'\r
+    @el.className = 'filer-item-' + @column_name\r
+  \r
+  render: () ->\r
+    this\r
   \r
   filer: () ->\r
     @file_item.filer()\r
@@ -16,21 +20,6 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemCo
   item_name: () ->\r
     @filer().item_name\r
   \r
-  column_template_dir: () ->\r
-    @filer().template_dir() + 'item_column-'\r
-  \r
-  column_template_file_name: () ->\r
-    raise "undefined column_template_file_name\n"\r
-  \r
-  column_template_name: () ->\r
-    @column_template_dir() + @column_template_file_name()\r
-  \r
-  item_template_dir: () ->\r
-    @filer().template_dir + 'summary-'\r
-  \r
-  item_template_file_name: () ->\r
-    raise "undefined item_template_file_name\n"\r
-  \r
-  item_template_name: () ->\r
-    @item_template_dir() + @item_template_file_name()\r
+  is_visible: () ->\r
+    true\r
   \r
index cf2fede..222ccd9 100644 (file)
@@ -1,16 +1,19 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnModule.Template extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemColumnModule.Base\r
   \r
-  column_template_file_name: () ->\r
-    'show'\r
+  initialize: (options) ->\r
+    super(options)\r
   \r
-  item_template_file_name: () ->\r
-    'template'\r
+  render: () ->\r
+    args = {'file_item': @file_item}\r
+    template = _.template($("#" + @template_name()).html())\r
+    this.$el.html(template(args))\r
+    this\r
   \r
   template_dir: () ->\r
     @item.path_name() + '-'\r
   \r
   template_file_name: () ->\r
-    @my_manifest.template_name()\r
+    @my_manifest.template_name\r
   \r
   template_name: () ->\r
     @template_dir() + @template_file_name()\r
index 4643e20..5508754 100644 (file)
@@ -1,16 +1,18 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule\r
     {\r
-      'default': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Default, \r
-      'template': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Template\r
+      'default': m.Default, \r
+      'template': m.Template\r
     }\r
   \r
   @factory: (file_item, my_manifest, item) ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnFactory\r
     type = my_manifest.type\r
     if not type\r
       alert_message "undefined type", "local view filers > #{file_item.item_name} > symbol\n"\r
-    my_class = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnFactory.types()[type]\r
+    my_class = m.types()[type]\r
     if not my_class\r
       alert_message "undefined class", "local view filers > #{file_item.item_name} > symbol > #{type}\n"\r
     new my_class({'file_item': file_item, 'my_manifest': my_manifest, 'item': item})\r
index 653b863..c47105a 100644 (file)
@@ -1,17 +1,31 @@
-class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Base extends ManifestBase.TypeArgs\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Base extends Backbone.View\r
+  tagName: 'div'\r
   \r
-  set_default: () ->\r
-    super()\r
-    \r
-  init: () ->\r
-    super()\r
+  initialize: (options) ->\r
+    @file_item = options.file_item\r
+    @my_manifest = options.my_manifest\r
+    @item = options.item\r
+    @column_name = 'symbol'\r
+    @el.className = 'filer-item-' + @column_name\r
   \r
-  is_visible: () ->\r
-    raise "undefined visible?\n"\r
-  \r
-  filer_name: () ->\r
-    @parent.name\r
+  render: () ->\r
+    this\r
   \r
   filer: () ->\r
-    @parent\r
+    @file_item.filer()\r
+  \r
+  manifest: () ->\r
+    @filer().manifest\r
+  \r
+  item_name: () ->\r
+    @filer().item_name\r
+  \r
+  is_visible: () ->\r
+    true\r
+  \r
+  template_dir: () ->\r
+    @filer().template_dir + @column_name + '-'\r
   \r
+  template_name: () ->\r
+    @template_dir() + @template_file_name()\r
\r
index 4228c40..8aad184 100644 (file)
@@ -1,16 +1,25 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Default extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Base\r
+  events: {\r
+    'click .face': 'show'\r
+  }\r
+  initialize: (options) ->\r
+    super(options)\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule\r
+    @face = m.FaceFactory.factory this, @my_manifest.face, @item\r
+    @link = m.LinkFactory.factory this, @my_manifest.link, @item\r
   \r
-  set_default: () ->\r
-    super()\r
-    @args['face'] ||= {}\r
-    @args['link'] ||= {}\r
+  render: () ->\r
+    this.$el.html(@renderer().render().el)\r
+    this\r
+  \r
+  show: () ->\r
+    window.router.navigate(@link.url(), true)\r
+    return false\r
     \r
-  init: () ->\r
-    super()\r
-    @face = ManifestBase.load_type_args this, @args, 'face', Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceFactory\r
-    @link = ManifestBase.load_type_args this, @args, 'link', Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkFactory\r
+  renderer: () ->\r
+    if @my_manifest.link.type == 'none'\r
+      @face\r
+    else\r
+      @link\r
   \r
-  is_visible: () ->\r
-    true\r
-\r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule\r
index a986480..0a6de73 100644 (file)
@@ -1,13 +1,21 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule\r
     {\r
-      'image': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.ImageFace, \r
-      'picture': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.PictureFace\r
+      'image': m.ImageFace, \r
+      'picture': m.PictureFace\r
     }\r
   \r
-  @default_type: () ->\r
-    'image'\r
+  @factory: (default_symbol, my_manifest, item) ->\r
+    type = my_manifest.type\r
+    if not type\r
+      ManifestBase.alert_message 'undefined type', "local view filers > #{default_symbol.item_name} > symbol > link\n"\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceFactory\r
+    my_class = m.types()[type]\r
+    if not my_class\r
+      ManifestBase.alert_message 'undefined class', "local view filers > #{default_symbol.item_name} > symbol > face > #{type}\n"\r
+    new my_class({default_symbol: default_symbol, my_manifest: my_manifest, item: item})\r
     \r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule\r
 \r
index 72f81a0..2fd3441 100644 (file)
@@ -1,13 +1,17 @@
-class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.BaseFace extends Backbone.View\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.BaseFace extends Backbone.View\r
   tagName: 'div'\r
+  className: 'face'\r
   \r
   initialize: (options) ->\r
-    @file_item = options.file_item\r
-    @default_symbol = options.my_manifest\r
+    @default_symbol = options.default_symbol\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
   \r
+  render: () ->\r
+    this\r
+  \r
   filer: () ->\r
-    @default_symbol.filer\r
+    @default_symbol.filer()\r
   \r
   manifest: () ->\r
     @filer().manifest\r
@@ -15,12 +19,6 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.BaseFace e
   item_name: () ->\r
     @filer().item_name\r
   \r
-  template_dir: () ->\r
-    @filer().template_dir + "symbol_face-"\r
-  \r
-  template_file_name: () ->\r
-    raise "undefined template_file_name\n"\r
-  \r
-  template_name: () ->\r
-    @template_dir() + @template_file_name()\r
+  icon_size: () ->\r
+    Manifest.manifest().magic_numbers['thumbnail_width']\r
   \r
index 234dc5c..b7a20d1 100644 (file)
@@ -1,10 +1,15 @@
-class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.ImageFace extends LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.BaseFace\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.ImageFace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.BaseFace\r
   \r
-  template_file_name: () ->\r
-    'image'\r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    i = new Pettanr.AppHelperImg({src: @url(), size: @icon_size()})\r
+    this.$el.html(i.render().el)\r
+    this\r
   \r
   url: () ->\r
-    @face_manifest.url\r
+    @my_manifest.url\r
   \r
   tag_opt: () ->\r
     {'src': @url(), 'width': Manifest.manifest().magic_numbers['thumbnail_width'], 'height': Manifest.manifest().magic_numbers['thumbnail_height']}\r
index 181015f..8675b6f 100644 (file)
@@ -1,10 +1,21 @@
-class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.PictureFace extends LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.BaseFace\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.PictureFace extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.FaceModule.BaseFace\r
   \r
-  template_file_name: () ->\r
-    'picture'\r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    i = new Pettanr.AppHelperImg({src: @url(), size: @icon_size()})\r
+    this.$el.html(i.render().el)\r
+    this\r
   \r
   method_name: () ->\r
-    @face_manifest.method_name()\r
+    @my_manifest.method_name()\r
+  \r
+  url: () ->\r
+    if @item.methods(true).is_include(@method_name())\r
+      @item[@method_name()]()\r
+    else\r
+      '/images/error.png'\r
   \r
   tag_opt: () ->\r
     if @item.methods(true).is_include(@method_name())\r
@@ -12,4 +23,3 @@ class LocalManifest.FilerModule.SymbolModule.DefaultModule.FaceModule.PictureFac
     else\r
       {'src': '/images/error.png', 'width': Manifest.manifest().magic_numbers['thumbnail_width'], 'height': Manifest.manifest().magic_numbers['thumbnail_height']}\r
   \r
-\r
index df9ec75..991ecb1 100644 (file)
@@ -1,14 +1,22 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkFactory\r
   \r
   @types: () ->\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule\r
     {\r
-      'action': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.ActionLink, \r
-      'none': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.NoneLink, \r
-      'url_column': Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.UrlColumnLink\r
+      'action': m.ActionLink, \r
+      'none': m.NoneLink, \r
+      'url_column': m.UrlColumnLink\r
     }\r
   \r
-  @default_type: () ->\r
-    'action'\r
+  @factory: (default_symbol, my_manifest, item) ->\r
+    type = my_manifest.type\r
+    if not type\r
+      ManifestBase.alert_message('undefined type', "local view filers > #{default_symbol.item_name} > symbol > link\n")\r
+    m = Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkFactory\r
+    my_class = m.types()[type]\r
+    if not my_class\r
+      ManifestBase.alert_message('undefined class', "local view filers > #{default_symbol.item_name} > symbol > link > #{type}\n")\r
+    new my_class({default_symbol: default_symbol, my_manifest: my_manifest, item: item})\r
     \r
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule\r
 \r
index c6cb976..13f84c3 100644 (file)
@@ -1,6 +1,17 @@
-class LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.ActionLink extends LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.BaseLink\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.ActionLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.BaseLink\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    this.$el.attr('href', @url())\r
+    # embed face everytime\r
+    this.$el.html(@default_symbol.face.render().el)\r
+    this\r
+  \r
+  js_url: () ->\r
+    "javascript:void(0)"\r
   \r
   url: () ->\r
-    @link_manifest.action_path() + @item.get('id').toString()\r
+    @my_manifest.js_action_path() + @item.get('id').toString()\r
   \r
-\r
index c6d1fe1..6a30be1 100644 (file)
@@ -1,12 +1,11 @@
-class LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.BaseLink extends Backbone.View\r
-  tagName: 'div'\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.BaseLink extends Backbone.View\r
+  tagName: 'a'\r
   \r
   initialize: (options) ->\r
-    @file_item = options.file_item\r
-    @default_symbol = options.my_manifest\r
+    @default_symbol = options.default_symbol\r
+    @my_manifest = options.my_manifest\r
     @item = options.item\r
   \r
   url: () ->\r
     raise "undefined url\n"\r
   \r
-\r
index f403e74..516785e 100644 (file)
@@ -1,4 +1,7 @@
-class LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.NoneLink extends LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.BaseLink\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.NoneLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.BaseLink\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
   \r
   url: () ->\r
     null\r
index a014c4f..ffe31a0 100644 (file)
@@ -1,5 +1,17 @@
-class LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.UrlColumnLink extends LocalManifest.FilerModule.SymbolModule.DefaultModule.LinkModule.BaseLink\r
+class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.UrlColumnLink extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.DefaultModule.LinkModule.BaseLink\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  render: () ->\r
+    this.$el.attr('href', @url())\r
+    # embed face everytime\r
+    this.$el.html(@default_symbol.face.render().el)\r
+    this\r
+  \r
+  js_url: () ->\r
+    "javascript:void(0)"\r
   \r
   url: () ->\r
-    @item.get(@link_manifest.column_name())\r
+    @item.get(@my_manifest.column_name())\r
   \r
index 60215b9..ab02ef1 100644 (file)
@@ -1,13 +1,20 @@
 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Template extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemColumnModule.Base\r
   \r
-  set_default: () ->\r
-    super()\r
-    @args['template_name'] ||= 'symbol'\r
-    \r
-  init: () ->\r
-    super()\r
-    @template_name = @args['template_name']\r
-  \r
-  is_visible: () ->\r
-    true\r
-\r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  column_template_file_name: () ->\r
+    'show'\r
+  \r
+  item_template_file_name: () ->\r
+    'template'\r
+  \r
+  template_dir: () ->\r
+    @item.path_name() + '-'\r
+  \r
+  template_file_name: () ->\r
+    @my_manifest.template_name()\r
+  \r
+  template_name: () ->\r
+    @template_dir() + @template_file_name()\r
+  \r
index 6007bde..722a7be 100644 (file)
@@ -1,7 +1,6 @@
 class Locmare.FilerModule.BodyModule.FileHeader extends Backbone.View\r
   tagName: 'li'\r
   id: ''\r
-  class: 'filer-head filer-head- file_header.item_name'\r
   \r
   initialize: (options) ->\r
     @body = options.body\r
@@ -35,6 +34,7 @@ class Locmare.FilerModule.BodyModule.FileHeader extends Backbone.View
     else\r
       Locmare.FilerModule.BodyModule.FileHeaderModule.None\r
     @edit = new c({'file_header': this, 'column_name': 'edit'})\r
+    @el.className = 'filer-head filer-head-' + @item_name()\r
   \r
   render: () ->\r
     args = {'file_header': this}\r
index 0bf8133..d8cd7bc 100644 (file)
@@ -1,8 +1,10 @@
 class Locmare.FilerModule.BodyModule.FileHeaderModule.Base extends Backbone.View\r
+  tagName: 'div'\r
   \r
   initialize: (options) ->\r
     @file_header = options.file_header\r
     @column_name = options.column_name\r
+    @el.className = 'filer-head-' + @column_name\r
   \r
   render: () ->\r
     args = {'header_column': this}\r
index 9c9000e..bf1fd63 100644 (file)
@@ -1,7 +1,4 @@
 class Locmare.FilerModule.BodyModule.FileHeaderModule.Show extends Locmare.FilerModule.BodyModule.FileHeaderModule.Base\r
-  tagName: 'li'\r
-  id: ''\r
-  class: 'filer-head filer-head- file_header.item_name'\r
   \r
   template_file_name: () ->\r
     "show"\r
index 2539178..b77bcec 100644 (file)
@@ -16,36 +16,13 @@ $ ->
   LocalManifest.set_manifest(loaded_local_manifest)\r
   loaded_manifest.init()\r
   loaded_local_manifest.init()\r
-  class FilerButton extends Backbone.View \r
-    events: {\r
-        "click .btn":"on_open"\r
-    } \r
-    initialize: ->\r
-    on_open: () ->\r
-      @render()\r
-    render: () ->\r
-      class ArCol extends Backbone.Collection\r
-        model: Pettanr.Artist\r
-        url: '/artists'\r
-      cc = new ArCol({})\r
-      cc.fetch({})\r
-  class ArtistCollection extends Backbone.Collection\r
-    model: Pettanr.Artist\r
-    url: '/artists'\r
-  cc = new ArtistCollection({})\r
-  cc.fetch({})\r
-  list_result = null\r
-  operators = null\r
-  v = new Locmare.Filer({\r
-    item_name: 'artist', \r
-    collection: cc, \r
-    list_result: list_result, \r
-    pager_type: 'default', \r
-    operators: operators\r
-  })\r
-  a=v.render()\r
-  b=a.el\r
-  c=v.header.render()\r
-  d=c.el\r
-  $("#pettanr").html(v.render().el)\r
+  author = new Pettanr.Author({id: author_id})\r
+  author.fetch({})\r
+  artist = new Pettanr.Artist({id: artist_id})\r
+  artist.fetch({})\r
+  window.operators = new Pettanr.Operator([author, artist])\r
   \r
+  list_result = new Pettanr.Folder.Root({})\r
+  new Pettanr.FilerRender('folder', list_result, 'default', window.operators)\r
+  window.router = new Pettanr.Router();\r
+  Backbone.history.start({pushState: true});\r
diff --git a/app/assets/javascripts/models/admin.js.coffee b/app/assets/javascripts/models/admin.js.coffee
new file mode 100644 (file)
index 0000000..d511faf
--- /dev/null
@@ -0,0 +1,9 @@
+class Pettanr.Admin extends Backbone.Model\r
+  \r
+  defaults: {\r
+    id: null\r
+  } \r
+  \r
+  initialize: () ->\r
+  \r
+\r
index 051e898..aea6ade 100644 (file)
@@ -1,4 +1,6 @@
 class Pettanr.Artist extends Peta.Owner\r
+  url: '/artists/'\r
+  \r
   @singular: () ->\r
     'Artist'\r
   \r
@@ -11,5 +13,9 @@ class Pettanr.Artist extends Peta.Owner
   } \r
   \r
   initialize: () ->\r
+    if @id\r
+      @url = @url + @id\r
   \r
-\r
+class Pettanr.Artist.Collection extends Backbone.Collection\r
+  model: Pettanr.Artist\r
+  url: '/artists'\r
index 2db7564..8a6d2c3 100644 (file)
@@ -1,4 +1,6 @@
 class Pettanr.Author extends Peta.Owner\r
+  url: '/authors/'\r
+  \r
   @singular: () ->\r
     'Author'\r
   \r
@@ -11,5 +13,7 @@ class Pettanr.Author extends Peta.Owner
   } \r
   \r
   initialize: () ->\r
-  \r
+    if @id\r
+      @url = @url + @id\r
+\r
 \r
diff --git a/app/assets/javascripts/models/demander.js.coffee b/app/assets/javascripts/models/demander.js.coffee
new file mode 100644 (file)
index 0000000..59d3484
--- /dev/null
@@ -0,0 +1,9 @@
+class Pettanr.Demander extends Backbone.Model\r
+  \r
+  defaults: {\r
+    id: null\r
+  } \r
+  \r
+  initialize: () ->\r
+  \r
+\r
diff --git a/app/assets/javascripts/models/folders.js.coffee b/app/assets/javascripts/models/folders.js.coffee
new file mode 100644 (file)
index 0000000..a1fe0f9
--- /dev/null
@@ -0,0 +1,45 @@
+class Pettanr.Folder extends Peta.Owner\r
+  url: ''\r
+  \r
+  @singular: () ->\r
+    'Folder'\r
+  \r
+  @plural: () ->\r
+    'Folders'\r
+  \r
+  defaults: {\r
+    id: null,\r
+    name: 'no name'\r
+  } \r
+  \r
+  caption: () ->\r
+    @get('name').replace(/\/$/, '').split('/').pop()\r
+  \r
+  is_remote: () ->\r
+    if @get('category_id') == 10\r
+      true\r
+    else\r
+      false\r
+  \r
+  remote_name: () ->\r
+    Pettanr.to_s(@get('controller_name')) + '/' + Pettanr.to_s(@get('action_name'))\r
+  \r
+  initialize: () ->\r
+    if @id\r
+      @url = @url + @id\r
+  \r
+class Pettanr.FolderWatch extends Pettanr.Folder\r
+  url: 'watch/'\r
+  initialize: () ->\r
+    if @id\r
+      @url = @url + @id\r
+class Pettanr.Folder.Collection extends Backbone.Collection\r
+  model: Pettanr.Folder\r
+  url: 'folders'\r
+class Pettanr.Folder.Root extends Backbone.Collection\r
+  model: Pettanr.Folder\r
+  url: '/folders/root'\r
+class Pettanr.Folder.Children extends Backbone.Collection\r
+  model: Pettanr.Folder\r
+  initialize: (options) ->\r
+    @url = '/folders/' + options.id.toString()\r
index f26e2d8..880932a 100644 (file)
@@ -1,2 +1,20 @@
 class Pettanr.Scroll extends Peta.Binder\r
-\r
+  url: ''\r
+  \r
+  @singular: () ->\r
+    'Scroll'\r
+  \r
+  @plural: () ->\r
+    'Scrolls'\r
+  \r
+  defaults: {\r
+    id: null,\r
+  } \r
+  \r
+  initialize: () ->\r
+    if @id\r
+      @url = @url + @id\r
+  \r
+class Pettanr.Scroll.Collection extends Backbone.Collection\r
+  model: Pettanr.Scroll\r
+  url: '/scrolls'\r
diff --git a/app/assets/javascripts/models/user.js.coffee b/app/assets/javascripts/models/user.js.coffee
new file mode 100644 (file)
index 0000000..469fde4
--- /dev/null
@@ -0,0 +1,16 @@
+class Pettanr.User extends Backbone.Model\r
+  \r
+  url: '/users/'\r
+  \r
+  defaults: {\r
+    id: null\r
+  } \r
+  \r
+  author: () ->\r
+  \r
+  artist: () ->\r
+  \r
+  initialize: () ->\r
+    if @id\r
+      @url = @url + @id\r
+  \r
index 82d1128..67c3c27 100644 (file)
@@ -1,5 +1,72 @@
 class Pettanr\r
+  @is_blank: (str) ->\r
+    !str?.trim()\r
+  \r
   class Pettanr.AppHelper\r
+    @manifest: () ->\r
+      Manifest.manifest\r
+    \r
+    @full_url: (filename) ->\r
+      request.protocol + request.host_with_port + filename\r
+    \r
+    @t_m: (label) ->\r
+      l = label.split('.')\r
+      if l.length > 2\r
+        label\r
+      else\r
+        if l.length == 1\r
+          I18n.t('activerecord.models.' + Pettanr[label].item_name())\r
+        else\r
+          I18n.t('activerecord.models.attribtes.' + Pettanr[l.first].item_name() + '.' + l.last)\r
+    \r
+    @t_select_items: (items) ->\r
+      _.map items, (i) ->\r
+        [t(i[0]), i[1]]\r
+    \r
+    @t_selected_item: (name, index) ->\r
+      I18n.t(Manifest.manifest().system_resources.select_items[name][index][0])\r
+    \r
+    class Pettanr.AppHelperImg extends Backbone.View\r
+      tagName: 'img'\r
+      \r
+      initialize: (options) ->\r
+        @src = options.src\r
+        @size = options.size\r
+      \r
+      render: () ->\r
+        this.$el.attr('src', @src)\r
+        this.$el.attr('width', @size)\r
+        this.$el.attr('height', @size)\r
+        this\r
+    \r
+    @image_tag: (src, opt = {}) ->\r
+      size = if opt['size']\r
+        parseInt(opt['size'])\r
+      else\r
+        35\r
+      i = new Pettanr.AppHelperImg({src: src, size: size})\r
+      i.render().el.outerHTML\r
+    \r
+    class Pettanr.AppHelperIcon extends Backbone.View\r
+      tagName: 'img'\r
+      \r
+      initialize: (options) ->\r
+        @name = options.name\r
+        @opt = options.opt\r
+        title = if @opt['object']\r
+          name + ' ID:' + @opt['object'].get(id).toString()\r
+        else\r
+          name\r
+        size = if @opt['size']\r
+          parseInt(@opt['size'])\r
+        else\r
+          35\r
+      \r
+      render: () ->\r
+        this.$el.attr('src', '/images/' + Pettanr.underscore(@name) + '.gif')\r
+        this.$el.attr('width', @size)\r
+        this.$el.attr('height', @size)\r
+        this\r
     \r
     @icon_tag: (name, opt = {}) ->\r
       title = if opt['object']\r
@@ -11,8 +78,32 @@ class Pettanr
       else\r
         35\r
       "<img src=\"" + '/images/' + Pettanr.underscore(name) + '.gif' + "\" width=" + size.toString() + " height=" + size.toString() + " alt=\"" + name + ' Icon' + "title=\"" + title + ">"\r
+    \r
+    @distance_of_time_in_words_to_now: (datetime) ->\r
+      datetime\r
 \r
   class Pettanr.AppController\r
+  \r
+  class Pettanr.FilerRender\r
+    constructor: (item_name, list_result, pager_type, operators) ->\r
+      @item_name = item_name\r
+      @list_result = list_result\r
+      @pager_type = pager_type\r
+      @operators = operators\r
+      _this = this\r
+      @list_result.fetch({}).done () ->\r
+        _this.render()\r
+    \r
+    render: () ->\r
+      items = @list_result.models\r
+      f = new Locmare.Filer({\r
+        item_name: @item_name, \r
+        items: items, \r
+        list_result: @list_result, \r
+        pager_type: @pager_type, \r
+        operators: @operators\r
+      })\r
+      $("#pettanr").html(f.render().el)\r
 \r
   #>> https://gist.github.com/davidjbeveridge/3813724\r
   @xeach: (arr, func, index=0) ->\r
@@ -38,4 +129,10 @@ class Pettanr
     else\r
       false\r
   \r
+  @to_s: (str) ->\r
+    if @is_a_string(str)\r
+      str\r
+    else\r
+      ''\r
+  \r
 @Pettanr = Pettanr\r
diff --git a/app/assets/javascripts/pettanr/operator.js.coffee b/app/assets/javascripts/pettanr/operator.js.coffee
new file mode 100644 (file)
index 0000000..e0d8ee8
--- /dev/null
@@ -0,0 +1,71 @@
+class Pettanr.Operator\r
+  \r
+  initialize: (operators) ->\r
+    @operators = operators\r
+  \r
+  #InstanceMethods\r
+  find_user: () ->\r
+    _.each @operators, (operator) ->\r
+      return operator if operator instanceof Pettanr.User\r
+      return operator.user if operator instanceof Pettanr.Author\r
+      return operator.user if operator instanceof Pettanr.Artist\r
+    nil\r
+  \r
+  find_author: () ->\r
+    _.each @operators, (operator) ->\r
+      return operator if operator instanceof Pettanr.Author\r
+      return operator.author if operator instanceof Pettanr.User\r
+      return operator.user.author if (operator instanceof Pettanr.Artist) and operator.user.author\r
+    nil\r
+  \r
+  find_artist: () ->\r
+    _.each @operators, (operator) ->\r
+      return operator.user.artist if (operator instanceof Pettanr.Author) and operator.user.artist\r
+      return operator.artist if operator instanceof Pettanr.User\r
+      return operator if operator instanceof Pettanr.Artist\r
+    nil\r
+  \r
+  find_admin: () ->\r
+    _.each @operators, (operator) ->\r
+      return operator if operator instanceof Pettanr.Admin\r
+    nil\r
+  \r
+  user: () ->\r
+    return @user if @user\r
+    @user = @find_user()\r
+  \r
+  author: () ->\r
+    return @author if @author\r
+    @author = @find_author()\r
+  \r
+  artist: () ->\r
+    return @artist if @artist\r
+    @artist = @find_artist()\r
+  \r
+  admin: () ->\r
+    return @admin if @admin\r
+    @admin = @find_admin()\r
+  \r
+  is_guest: () ->\r
+    true\r
+  \r
+  is_reader: () ->\r
+    _.each @operators, (operator) ->\r
+      return true if (operator instanceof Pettanr.Author) or (operator instanceof Pettanr.Artist) or (operator instanceof Pettanr.Admin) or (operator instanceof Pettanr.User)\r
+    false\r
+  \r
+  is_user: () ->\r
+    _.each @operators, (operator) ->\r
+      return true if (operator instanceof Pettanr.Author) or (operator instanceof Pettanr.Artist) or (operator instanceof Pettanr.User)\r
+    false\r
+  \r
+  is_resource_reader: () ->\r
+    _.each @operators, (operator) ->\r
+      return true if (operator instanceof Pettanr.Author) or (operator instanceof Artist) or (operator instanceof Pettanr.Admin) or (operator instanceof Pettanr.User) or (operator instanceof Pettanr.DemandUser)\r
+    false\r
+  \r
+  is_admin: () ->\r
+    _.each @operators, (operator) ->\r
+      return true if operator instanceof Pettanr.Admin\r
+    false\r
+  \r
diff --git a/app/assets/javascripts/routes.js.coffee b/app/assets/javascripts/routes.js.coffee
new file mode 100644 (file)
index 0000000..60033f0
--- /dev/null
@@ -0,0 +1,54 @@
+class Pettanr.Router extends Backbone.Router\r
+  routes: {\r
+    'folders/:id': 'folders_show'\r
+    'scrolls/': 'scrolls_index'\r
+    'aa': 'folders_show'\r
+  }\r
+  \r
+  index: (r, a) ->\r
+  \r
+  show_html_format: (format) -> \r
+  \r
+  show: (id) ->\r
+  \r
+  count: () ->\r
+  \r
+  new: () ->\r
+  \r
+  edit: () ->\r
+  \r
+  create: () ->\r
+  \r
+  update: () ->\r
+  \r
+  destroy: () ->\r
+    \r
+  folders_index: () ->\r
+  \r
+  folders_root: () ->\r
+  \r
+  folders_show_html_format: (format) -> \r
+  \r
+  folders_show: (id) ->\r
+    @item = new Pettanr.FolderWatch({id: id})\r
+    _this = this\r
+    @item.fetch({}).done () ->\r
+      _this.render()\r
+    \r
+  render: () ->\r
+    if @item.is_remote()\r
+      window.router.navigate(@item.remote_name(), true)\r
+    else\r
+      list_result = new Pettanr.Folder.Children({id: @item.id})\r
+      new Pettanr.FilerRender('folder', list_result, 'default', window.operators)\r
+  \r
+  folders_count: () ->\r
+  \r
+  folders_new: () ->\r
+  \r
+  folders_edit: () ->\r
+  \r
+  scrolls_index: () ->\r
+    list_result = new Pettanr.Scroll.Collection({})\r
+    new Pettanr.FilerRender('scroll', list_result, 'default', window.operators)\r
+  \r
index dcf1674..0e35335 100644 (file)
@@ -14,6 +14,9 @@
       show: {\r
         type: 'show',\r
       },\r
+      watch: {\r
+        type: 'show',\r
+      },\r
       count: {\r
         type: 'count',\r
         args: {\r
index fd8411e..76d017b 100644 (file)
@@ -2,7 +2,7 @@ class FoldersController < ApplicationController
   if Manifest.manifest.magic_numbers['run_mode'] == 0
     before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy]
   else
-    before_filter :authenticate_reader, :only => [:root, :index, :show]
+    before_filter :authenticate_reader, :only => [:root, :index, :show, :watch]
     before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy]
   end
   
@@ -19,6 +19,13 @@ class FoldersController < ApplicationController
     end
   end
   
+  def watch
+    set_show
+    respond_to do |format|
+      format.json { render json: @item.to_json }
+    end
+  end
+  
   def index
     filer_list
   end
index 554d839..37b4ada 100644 (file)
@@ -10,7 +10,7 @@ class TopController < ApplicationController
   
   def index
     respond_to do |format|
-      format.html 
+      format.html { render layout: 'ap' }
     end
   end
   
index 91ebec4..25f961c 100644 (file)
@@ -4,11 +4,16 @@
   <title>\r
     ap - <%= h(manifest.magic_numbers['profile']['users']['caption']) %>\r
   </title>\r
-  <%# stylesheet_link_tag "application" %>\r
+  <%= stylesheet_link_tag "test" %>\r
   <%= javascript_include_tag "application" %>\r
   <%= javascript_include_tag "ap" %>\r
   <%# raw panel_editor_javascript_include_tags %>\r
   <%= csrf_meta_tags %>\r
+  <script type="text/javascript">\r
+    I18n.defaultLocale = "<%= I18n.default_locale %>";\r
+    I18n.locale = "<%= I18n.locale %>";\r
+    I18n.fallbacks = true;\r
+  </script>\r
 </head>\r
 <body>\r
 \r
index d1a4cf8..26ad54c 100644 (file)
@@ -4,6 +4,10 @@
   <a href="#" class="btn">filer</a>\r
 </div>\r
 <script type="text/javascript" id="manifest">\r
+  author_id = <%= @operators.author.id -%>;\r
+  artist_id = <%= @operators.artist.id -%>;\r
+</script>\r
+<script type="text/javascript" id="manifest">\r
 </script>\r
 <script type="text/javascript" id="local-manifest">\r
 </script>\r
 <script type="text/template" id="templates-filer-header">\r
   <&= Pettanr.AppHelper.icon_tag(header.icon_name(), {'size': header.icon_size()}) &>\r
   <a href="#" class="model_name_human">\r
-    <&= header.model().model_name() &>\r
+    <&= Pettanr.AppHelper.t_m(header.model().singular()) &>\r
   </a>\r
 </script>\r
 <script type="text/template" id="templates-filer-body">\r
   <ul class="filer-body">\r
-    <&= body.file_header.render().el.innerHTML &>\r
-    <&= body.file_body.render().el.innerHTML &>\r
+    <&= body.file_header.render().el.outerHTML &>\r
+    <&= body.file_body.render().el.outerHTML &>\r
   </ul>\r
   <div class="row_break">\r
   </div>\r
 </script>\r
 <script type="text/template" id="templates-filer-file_header">\r
-  <&= file_header.symbol.render().el.innerHTML &>\r
-  <&= file_header.caption.render().el.innerHTML &>\r
-  <&= file_header.summary.render().el.innerHTML &>\r
-  <&= file_header.icon.render().el.innerHTML &>\r
-  <&= file_header.date.render().el.innerHTML &>\r
-  <&= file_header.edit.render().el.innerHTML &>\r
+  <&= file_header.symbol.render().el.outerHTML &>\r
+  <&= file_header.caption.render().el.outerHTML &>\r
+  <&= file_header.summary.render().el.outerHTML &>\r
+  <&= file_header.icon.render().el.outerHTML &>\r
+  <&= file_header.date.render().el.outerHTML &>\r
+  <&= file_header.edit.render().el.outerHTML &>\r
 </script>\r
 <script type="text/template" id="templates-filer-file_body">\r
-  <&= file_body.file_item.render().el.innerHTML &>\r
+  <&= file_body.file_item.render().el.outerHTML &>\r
 </script>\r
 <script type="text/template" id="templates-filer-header_column-show">\r
-  <&= 'filer.header.' + header_column.column_name &>\r
+  <&= I18n.t('filer.header.' + header_column.column_name) &>\r
 </script>\r
 <script type="text/template" id="templates-filer-header_column-none">\r
 </script>\r
-<script type="text/template" id="templates-filer-file_item">\r
-  <&= file_item.symbol.render_column().el.innerHTML &>\r
-  <&= file_item.caption.render_column().el.innerHTML &>\r
-  <&= file_item.summary.render_column().el.innerHTML &>\r
-  <&= file_item.icon.render_column().el.innerHTML &>\r
-  <&= file_item.date.render_column().el.innerHTML &>\r
-  <&= file_item.edit.render_column().el.innerHTML &>\r
-</script>\r
 <script type="text/template" id="templates-filer-item_column-show">\r
-  <&= render item_column.item_template_name, :item_column => item_column &>\r
+  <&= item_column.render_item().el.innerHTML &>\r
 </script>\r
 <script type="text/template" id="templates-filer-item_column-none">\r
 </script>\r
+\r
+<script type="text/template" id="templates-filer-symbol-default">\r
+  <a href="javascript:void(0)">\r
+    <&= item_column.face.render().el &>\r
+  </a>\r
+</script>\r
+<script type="text/template" id="templates-filer-symbol-default_without_link">\r
+  <&= item_column.face.render().el &>\r
+</script>\r
+<script type="text/template" id="templates-filer-symbol-template">\r
+  <&= item_column.template_name &>\r
+</script>\r
+<script type="text/template" id="templates-filer-symbol_face-image">\r
+  <&= Pettanr.AppHelper.image_tag(item_column.url(), {'size': item_column.icon_size()}) &>\r
+</script>\r
+<script type="text/template" id="templates-filer-symbol_face-picture">\r
+  <&= Pettanr.AppHelper.image_tag(item_column.url(), {'size': item_column.icon_size()}) &>\r
+</script>\r
+\r
+<script type="text/template" id="templates-filer-caption-default">\r
+    <&= item_column.face.render().el.outerHTML &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption-default_without_link">\r
+  <&= item_column.face.render() &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption-template">\r
+  <&= item_column.template_name &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption_face-column">\r
+    <&= item_column.face() &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption_face-method">\r
+  <&= item_column.face() &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption_face-empty">\r
+  <&= 'empty' &>\r
+</script>\r
+\r
+<script type="text/template" id="templates-filer-summary-template">\r
+  <&= item_column.template_name &>\r
+</script>\r
+<script type="text/template" id="templates-filer-summary-none">\r
+</script>\r
+\r
+<script type="text/template" id="templates-filer-icon-default">\r
+  <a href="<&= item_column.path_name() &>">\r
+    <&= Pettanr.AppHelper.image_tag(item_column.icon_file_name(), {'size': item_column.icon_size()}) &>\r
+  </a>\r
+</script>\r
+<script type="text/template" id="templates-filer-date-default">\r
+  <&= item_column.time_ago() &>\r
+</script>\r
+<script type="text/template" id="templates-filer-date-none">\r
+</script>\r
+<script type="text/template" id="templates-filer-edit-default">\r
+  <&= item_column.template_name &>\r
+  # link_to tag(:img, item_column.edit_img_opt), polymorphic_path(item_column.item, :action => :edit)\r
+  # link_to tag(:img, item_column.remove_img_opt), item_column.item, confirm: 'Are you sure?', :method => :delete \r
+</script>\r
+<script type="text/template" id="templates-filer-edit-account">\r
+  <a href="<&= '/home/configure' &>">\r
+    <&= Pettanr.AppHelper.image_tag(item_column.edit_img_file_name(), {'size': item_column.icon_size()}) &>\r
+  </a>\r
+</script>\r
+<script type="text/template" id="templates-filer-edit-template">\r
+  <&= item_column.template_name &>\r
+  # render item_column.template_name, :item => item_column.item\r
+</script>\r
+<script type="text/template" id="templates-filer-edit-none">\r
+</script>\r
+\r
+\r
+<script type="text/template" id="folders-summary">\r
+</script>\r
+<script type="text/template" id="scrolls-summary">\r
+</script>\r
+<script type="text/template" id="scroll_panels-summary">\r
+</script>\r
+<script type="text/template" id="comics-summary">\r
+</script>\r
+<script type="text/template" id="comic_stories-summary">\r
+  P.\r
+</script>\r
+<script type="text/template" id="stories-summary">\r
+  P.\r
+</script>\r
+<script type="text/template" id="story_sheets-summary">\r
+</script>\r
+<script type="text/template" id="sheets-summary">\r
+</script>\r
+<script type="text/template" id="sheet_panels-summary">\r
+</script>\r
+<script type="text/template" id="panels-summary">\r
+</script>\r
+<script type="text/template" id="panel_pictures-summary">\r
+</script>\r
+<script type="text/template" id="speech_balloons-summary">\r
+</script>\r
+<script type="text/template" id="speeches-summary">\r
+</script>\r
+<script type="text/template" id="balloons-summary">\r
+</script>\r
+<script type="text/template" id="ground_pictures-summary">\r
+</script>\r
+<script type="text/template" id="ground_colors-summary">\r
+</script>\r
+<script type="text/template" id="original_pictures-summary">\r
+</script>\r
+<script type="text/template" id="pictures-summary">\r
+</script>\r
+<script type="text/template" id="resource_pictures-summary">\r
+</script>\r
+<script type="text/template" id="speech_balloon_templates-summary">\r
+</script>\r
+<script type="text/template" id="writing_formats-summary">\r
+</script>\r
+<script type="text/template" id="license_groups-summary">\r
+</script>\r
+<script type="text/template" id="licenses-summary">\r
+</script>\r
+<script type="text/template" id="authors-summary">\r
+</script>\r
+<script type="text/template" id="artists-summary">\r
+  P.\r
+</script>\r
index 365f350..26ad54c 100644 (file)
-<h1><%= t '.title' -%></h1>\r
-<p id="notice"><%= notice %></p>\r
+<div id="pettanr">\r
+</div>\r
+<div id="f1">\r
+  <a href="#" class="btn">filer</a>\r
+</div>\r
+<script type="text/javascript" id="manifest">\r
+  author_id = <%= @operators.author.id -%>;\r
+  artist_id = <%= @operators.artist.id -%>;\r
+</script>\r
+<script type="text/javascript" id="manifest">\r
+</script>\r
+<script type="text/javascript" id="local-manifest">\r
+</script>\r
+<script type="text/template" id="templates-filer-filer">\r
+  <&= filer.header.render().el.innerHTML &>\r
+  <&= filer.body.render().el.innerHTML &>\r
+</script>\r
+<script type="text/template" id="templates-filer-header">\r
+  <&= Pettanr.AppHelper.icon_tag(header.icon_name(), {'size': header.icon_size()}) &>\r
+  <a href="#" class="model_name_human">\r
+    <&= Pettanr.AppHelper.t_m(header.model().singular()) &>\r
+  </a>\r
+</script>\r
+<script type="text/template" id="templates-filer-body">\r
+  <ul class="filer-body">\r
+    <&= body.file_header.render().el.outerHTML &>\r
+    <&= body.file_body.render().el.outerHTML &>\r
+  </ul>\r
+  <div class="row_break">\r
+  </div>\r
+</script>\r
+<script type="text/template" id="templates-filer-file_header">\r
+  <&= file_header.symbol.render().el.outerHTML &>\r
+  <&= file_header.caption.render().el.outerHTML &>\r
+  <&= file_header.summary.render().el.outerHTML &>\r
+  <&= file_header.icon.render().el.outerHTML &>\r
+  <&= file_header.date.render().el.outerHTML &>\r
+  <&= file_header.edit.render().el.outerHTML &>\r
+</script>\r
+<script type="text/template" id="templates-filer-file_body">\r
+  <&= file_body.file_item.render().el.outerHTML &>\r
+</script>\r
+<script type="text/template" id="templates-filer-header_column-show">\r
+  <&= I18n.t('filer.header.' + header_column.column_name) &>\r
+</script>\r
+<script type="text/template" id="templates-filer-header_column-none">\r
+</script>\r
+<script type="text/template" id="templates-filer-item_column-show">\r
+  <&= item_column.render_item().el.innerHTML &>\r
+</script>\r
+<script type="text/template" id="templates-filer-item_column-none">\r
+</script>\r
 \r
-<h2><%= t('top.user_resources') -%></h2>\r
-<table>\r
-  <tr height="100px">\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Scroll'), main_app.scrolls_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('ScrollPanel'), main_app.scroll_panels_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Comic'), main_app.comics_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Story'), main_app.stories_path %>\r
-    </td>\r
-  </tr>\r
-  <tr height="100px">\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('StorySheet'), main_app.story_sheets_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Sheet'), main_app.sheets_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('SheetPanel'), main_app.sheet_panels_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-  </tr>\r
-  <tr height="100px">\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Panel'), main_app.panels_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('ResourcePicture'), main_app.resource_pictures_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-  </tr>\r
-  <tr height="100px">\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('PanelPicture'), main_app.panel_pictures_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('SpeechBalloon'), main_app.speech_balloons_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Balloon'), main_app.balloons_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Speech'), main_app.speeches_path %>\r
-    </td>\r
-  </tr>\r
-  <tr height="100px">\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('GroundPicture'), main_app.ground_pictures_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('GroundColor'), main_app.ground_colors_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-  </tr>\r
-</table>\r
-<h2><%= t('top.human_resources') -%></h2>\r
-<table>\r
-  <tr height="100px">\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Author'), main_app.authors_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('Artist'), main_app.artists_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-  </tr>\r
-</table>\r
-<h2><%= t('top.system_resources') -%></h2>\r
-<table>\r
-  <tr height="100px">\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('SpeechBalloonTemplate'), main_app.speech_balloon_templates_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('LicenseGroup'), main_app.license_groups_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('License'), main_app.licenses_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('SystemPicture'), main_app.system_pictures_path %>\r
-    </td>\r
-  </tr>\r
-  <tr height="100px">\r
-    <td width="200px" align="center" valign="middle">\r
-      <%= link_to t_m('WritingFormat'), main_app.writing_formats_path %>\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-    <td width="200px" align="center" valign="middle">\r
-    </td>\r
-  </tr>\r
-</table>\r
+<script type="text/template" id="templates-filer-symbol-default">\r
+  <a href="javascript:void(0)">\r
+    <&= item_column.face.render().el &>\r
+  </a>\r
+</script>\r
+<script type="text/template" id="templates-filer-symbol-default_without_link">\r
+  <&= item_column.face.render().el &>\r
+</script>\r
+<script type="text/template" id="templates-filer-symbol-template">\r
+  <&= item_column.template_name &>\r
+</script>\r
+<script type="text/template" id="templates-filer-symbol_face-image">\r
+  <&= Pettanr.AppHelper.image_tag(item_column.url(), {'size': item_column.icon_size()}) &>\r
+</script>\r
+<script type="text/template" id="templates-filer-symbol_face-picture">\r
+  <&= Pettanr.AppHelper.image_tag(item_column.url(), {'size': item_column.icon_size()}) &>\r
+</script>\r
+\r
+<script type="text/template" id="templates-filer-caption-default">\r
+    <&= item_column.face.render().el.outerHTML &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption-default_without_link">\r
+  <&= item_column.face.render() &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption-template">\r
+  <&= item_column.template_name &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption_face-column">\r
+    <&= item_column.face() &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption_face-method">\r
+  <&= item_column.face() &>\r
+</script>\r
+<script type="text/template" id="templates-filer-caption_face-empty">\r
+  <&= 'empty' &>\r
+</script>\r
+\r
+<script type="text/template" id="templates-filer-summary-template">\r
+  <&= item_column.template_name &>\r
+</script>\r
+<script type="text/template" id="templates-filer-summary-none">\r
+</script>\r
+\r
+<script type="text/template" id="templates-filer-icon-default">\r
+  <a href="<&= item_column.path_name() &>">\r
+    <&= Pettanr.AppHelper.image_tag(item_column.icon_file_name(), {'size': item_column.icon_size()}) &>\r
+  </a>\r
+</script>\r
+<script type="text/template" id="templates-filer-date-default">\r
+  <&= item_column.time_ago() &>\r
+</script>\r
+<script type="text/template" id="templates-filer-date-none">\r
+</script>\r
+<script type="text/template" id="templates-filer-edit-default">\r
+  <&= item_column.template_name &>\r
+  # link_to tag(:img, item_column.edit_img_opt), polymorphic_path(item_column.item, :action => :edit)\r
+  # link_to tag(:img, item_column.remove_img_opt), item_column.item, confirm: 'Are you sure?', :method => :delete \r
+</script>\r
+<script type="text/template" id="templates-filer-edit-account">\r
+  <a href="<&= '/home/configure' &>">\r
+    <&= Pettanr.AppHelper.image_tag(item_column.edit_img_file_name(), {'size': item_column.icon_size()}) &>\r
+  </a>\r
+</script>\r
+<script type="text/template" id="templates-filer-edit-template">\r
+  <&= item_column.template_name &>\r
+  # render item_column.template_name, :item => item_column.item\r
+</script>\r
+<script type="text/template" id="templates-filer-edit-none">\r
+</script>\r
+\r
+\r
+<script type="text/template" id="folders-summary">\r
+</script>\r
+<script type="text/template" id="scrolls-summary">\r
+</script>\r
+<script type="text/template" id="scroll_panels-summary">\r
+</script>\r
+<script type="text/template" id="comics-summary">\r
+</script>\r
+<script type="text/template" id="comic_stories-summary">\r
+  P.\r
+</script>\r
+<script type="text/template" id="stories-summary">\r
+  P.\r
+</script>\r
+<script type="text/template" id="story_sheets-summary">\r
+</script>\r
+<script type="text/template" id="sheets-summary">\r
+</script>\r
+<script type="text/template" id="sheet_panels-summary">\r
+</script>\r
+<script type="text/template" id="panels-summary">\r
+</script>\r
+<script type="text/template" id="panel_pictures-summary">\r
+</script>\r
+<script type="text/template" id="speech_balloons-summary">\r
+</script>\r
+<script type="text/template" id="speeches-summary">\r
+</script>\r
+<script type="text/template" id="balloons-summary">\r
+</script>\r
+<script type="text/template" id="ground_pictures-summary">\r
+</script>\r
+<script type="text/template" id="ground_colors-summary">\r
+</script>\r
+<script type="text/template" id="original_pictures-summary">\r
+</script>\r
+<script type="text/template" id="pictures-summary">\r
+</script>\r
+<script type="text/template" id="resource_pictures-summary">\r
+</script>\r
+<script type="text/template" id="speech_balloon_templates-summary">\r
+</script>\r
+<script type="text/template" id="writing_formats-summary">\r
+</script>\r
+<script type="text/template" id="license_groups-summary">\r
+</script>\r
+<script type="text/template" id="licenses-summary">\r
+</script>\r
+<script type="text/template" id="authors-summary">\r
+</script>\r
+<script type="text/template" id="artists-summary">\r
+  P.\r
+</script>\r
diff --git a/app/views/top/menu.html.erb b/app/views/top/menu.html.erb
new file mode 100644 (file)
index 0000000..365f350
--- /dev/null
@@ -0,0 +1,114 @@
+<h1><%= t '.title' -%></h1>\r
+<p id="notice"><%= notice %></p>\r
+\r
+<h2><%= t('top.user_resources') -%></h2>\r
+<table>\r
+  <tr height="100px">\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Scroll'), main_app.scrolls_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('ScrollPanel'), main_app.scroll_panels_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Comic'), main_app.comics_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Story'), main_app.stories_path %>\r
+    </td>\r
+  </tr>\r
+  <tr height="100px">\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('StorySheet'), main_app.story_sheets_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Sheet'), main_app.sheets_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('SheetPanel'), main_app.sheet_panels_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+  </tr>\r
+  <tr height="100px">\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Panel'), main_app.panels_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('ResourcePicture'), main_app.resource_pictures_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+  </tr>\r
+  <tr height="100px">\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('PanelPicture'), main_app.panel_pictures_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('SpeechBalloon'), main_app.speech_balloons_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Balloon'), main_app.balloons_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Speech'), main_app.speeches_path %>\r
+    </td>\r
+  </tr>\r
+  <tr height="100px">\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('GroundPicture'), main_app.ground_pictures_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('GroundColor'), main_app.ground_colors_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+  </tr>\r
+</table>\r
+<h2><%= t('top.human_resources') -%></h2>\r
+<table>\r
+  <tr height="100px">\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Author'), main_app.authors_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('Artist'), main_app.artists_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+  </tr>\r
+</table>\r
+<h2><%= t('top.system_resources') -%></h2>\r
+<table>\r
+  <tr height="100px">\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('SpeechBalloonTemplate'), main_app.speech_balloon_templates_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('LicenseGroup'), main_app.license_groups_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('License'), main_app.licenses_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('SystemPicture'), main_app.system_pictures_path %>\r
+    </td>\r
+  </tr>\r
+  <tr height="100px">\r
+    <td width="200px" align="center" valign="middle">\r
+      <%= link_to t_m('WritingFormat'), main_app.writing_formats_path %>\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+    <td width="200px" align="center" valign="middle">\r
+    </td>\r
+  </tr>\r
+</table>\r
diff --git a/config/i18n-js.yml b/config/i18n-js.yml
new file mode 100644 (file)
index 0000000..991cdf0
--- /dev/null
@@ -0,0 +1,14 @@
+# Split context in several files.
+# By default only one file with all translations is exported and
+# no configuration is required. Your settings for asset pipeline
+# are automatically recognized.
+#
+# If you want to split translations into several files or specify
+# locale contexts that will be exported, just use this file to do
+# so.
+#
+# If you're going to use the Rails 3.1 asset pipeline, change
+# the following configuration to something like this:
+#
+translations:
+- file: "app/assets/javascripts/i18n/translations.js"
index 46e8531..4391547 100644 (file)
@@ -19,6 +19,7 @@ Pettanr::Application.routes.draw do
     collection do
       get :root
       get :index
+      get :watch
       get :show
       get :count
       post :create
index 2aefe11..555e8dd 100644 (file)
         "show": {\r
           "type": "show"\r
         },\r
+        "watch": {\r
+          "type": "show"\r
+        },\r
         "count": {\r
           "type": "count",\r
           "args": {\r
index 0eceba5..4741a1b 100644 (file)
@@ -56,6 +56,7 @@ FactoryGirl.define do
     i.height 80\r
     i.border 2\r
     i.caption ''\r
+    i.publish 1\r
   end\r
   factory :panel_awesome, :class => Panel do |i|\r
     i.width 333\r
index 5a66f77..521b2d2 100644 (file)
@@ -15,7 +15,7 @@ FactoryGirl.define do
   end\r
   factory :writing_format_test, :class => WritingFormat do |i|\r
     i.name 'test@pettan.com'\r
-    i.module_name 'PettanrSimpleFormat'\r
+    i.module_name 'PettanrTestFormat'\r
     i.caption 'test'\r
     i.settings '{}'\r
     trait :with_system_picture do\r
index 149767d..730c6cd 100644 (file)
@@ -27,14 +27,14 @@ describe SpeechBalloon do
         before do
           @mani = @boosts['speech_balloon_template']
         end
-        it 'ã\83\95ã\82­ã\83\80ã\82·ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88' do
+        it 'ã\82·ã\82¹ã\83\86ã\83 èµ·å\8b\95å\89\8dã\81«å\88\9dæ\9c\9få\8c\96å\8f¯è\83½ã\81ªã\82µã\83\9dã\83¼ã\83\88æ©\9fè\83½ã\81\8cå\8b\95ä½\9cã\81\97ã\81¦ã\81\84ã\82\8b' do
           expect(@mani.level).to eq 'post'
           expect(@mani.template_name).to eq 'speech_balloon_template'
           expect(@mani.column_name_for_template_module).to eq 'speech_balloon_template_module_name'
           expect(@mani.settings_column_name).to eq 'speech_balloon_template_settings'
           expect(@mani.foreign_key).to eq 'speech_balloon_template_id'
         end
-        it 'ã\83\95ã\82­ã\83\80ã\82·ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88' do
+        it 'ã\82·ã\82¹ã\83\86ã\83 èµ·å\8b\95å¾\8cã\81«ã\81\97ã\81\8bå\88\9dæ\9c\9få\8c\96ã\81§ã\81\8dã\81ªã\81\84ã\82µã\83\9dã\83¼ã\83\88æ©\9fè\83½ã\81\8cå\8b\95ä½\9cã\81\97ã\81¦ã\81\84ã\82\8b' do
           expect(@mani.item_name_for_extend_model).to eq 'speech_balloon'
           expect(@mani.setter_method_name).to eq 'speech_balloon_extend='
           expect(@mani.getter_method_name).to eq 'speech_balloon_extend'
index ebaee0f..86b3796 100644 (file)
@@ -20,49 +20,49 @@ describe ScrollPanel do
     before do
     end
     
-    it 'ぶら下がるそれぞれのリーフを取得できる' do
+    it '親モデルであるバインダーを取得している' do
       expect(@model.parent_model).to eq Scroll
     end
-    it 'すべてのリーフを取得できる' do
+    it '差し込むコンテンツのモデルを取得している' do
       expect(@model.destination_model).to eq Panel
     end
     
-    it 'ã\81¶ã\82\89ä¸\8bã\81\8cã\82\8bã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83ªã\83¼ã\83\95ã\82\92å\8f\96å¾\97ã\81§ã\81\8dる' do
+    it 'ã\83\90ã\82¤ã\83³ã\83\80ã\83¼ã\82\92å\8f\96å¾\97ã\81\99ã\82\8bã\81\9fã\82\81ã\81®IDã\81®ã\82«ã\83©ã\83 ã\82\92è¿\94ã\81\97ã\81¦ã\81\84る' do
       expect(@model.binder_key).to eq 'scroll_id'
     end
     
-    it 'ぶら下がるそれぞれのリーフを取得できる' do
+    it '差し込むコンテンツを取得するためのIDのカラムを返している' do
       expect(@model.destination_key).to eq 'panel_id'
     end
     
   end
   
-  describe 'myに於いて' do
+  describe '便利機能に於いて' do
     before do
     end
     
-    it '名前の活用に於いて' do
+    it 'バインダーのIDを返している' do
       expect(@item.binder_id).to eq @scroll.id
     end
     
-    it 'å\90\8då\89\8dã\81®æ´»ç\94¨ã\81«æ\96¼ã\81\84ã\81¦' do
+    it 'å·®ã\81\97è¾¼ã\82\80ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81®IDã\82\92è¿\94ã\81\97ã\81¦ã\81\84ã\82\8b' do
       expect(@item.destination_id).to eq @panel.id
     end
   end
   
-  describe 'cutに於いて' do
-    it 'cut' do
+  describe 'クラスメソッドへのショートカットに於いて' do
+    it 'binder_keyメソッドを呼び出せる' do
       expect(@item.binder_key).to eq @model.binder_key
     end
     
-    it 'cut' do
+    it 'destination_keyメソッドを呼び出せる' do
       expect(@item.destination_key).to eq @model.destination_key
     end
     
   end
   
   describe 'playに於いて' do
-    it 'cut' do
+    it '時系列でソートできるようなSQLを返している' do
       expect(@model.play_list_order).to eq 'scroll_panels.t'
     end
     
@@ -318,40 +318,42 @@ describe StorySheet do
     # insert_shift, lesser_shift, higher_shift, update_shift, rotate
 end
 
-# 
+# I/O処理については、マニフェストで動作が変わることがないのでスクロールとスクコマでのみテストしておく
 describe ScrollPanel do
   include LeafMacros
   before do
-    @admin =FactoryGirl.create :admin
+    @admin = FactoryGirl.create :admin
     @user_yas = FactoryGirl.create :user_yas_with_owner
     @user_rom = FactoryGirl.create :user_rom
-    @author_yas =  @user_yas.author
+    @author_yas = @user_yas.author
     
     @model = ScrollPanel
   end
   
-  describe 'new_tに於いて' do
+  describe 't補充値new_tに於いて' do
     before do
-      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @dummy =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
+      @scroll = FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
     end
     
-    context 'ã\82ªã\83¼ã\82½ã\83\89ã\83\83ã\82¯ã\82¹ã\81ªã\83\87ã\83¼ã\82¿ã\81®ã\81¨ã\81\8d' do
-      it 'cut' do
+    context 'ã\82¹ã\82¯ã\83­ã\83¼ã\83«å\88\9dã\81®ã\82³ã\83\9eã\81ªã\82\89' do
+      it '0を補充値とする' do
         expect(@model.new_t(@scroll.id)).to eq 0
       end
       
     end
     
-    context 'ã\82ªã\83¼ã\82½ã\83\89ã\83\83ã\82¯ã\82¹ã\81ªã\83\87ã\83¼ã\82¿ã\81®とき' do
-      it 'cut' do
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel
+    context 'ã\82¹ã\82¯ã\83­ã\83¼ã\83«ã\81«ã\82³ã\83\9eã\81\8cã\81\82ã\82\8bとき' do
+      it '一個なら1を補充値とする' do
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
         expect(@model.new_t(@scroll.id)).to eq 1
       end
       
-      it 'cut' do
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 2, t: 1, scroll: @scroll, panel: @panel
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 3, t: 2, scroll: @scroll, panel: @panel
+      it '3個なら3を補充値とする' do
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
         expect(@model.new_t(@scroll.id)).to eq 3
       end
       
@@ -359,29 +361,30 @@ describe ScrollPanel do
     
   end
   
-  describe 'collect_tに於いて' do
+  describe 't収集collect_tに於いて' do
     before do
       @dummy =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
       @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
     end
     
-    context 'オーソドックスなデータのとき' do
-      it 'cut' do
+    context '空っぽのスクロールのとき' do
+      it '当然リストは空っぽになっている' do
         expect(@model.collect_t(@scroll.id)).to be_empty
       end
       
     end
     
     context 'オーソドックスなデータのとき' do
-      it 'cut' do
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel
+      it 'スクコマから同一スクロールのtだけを収集している' do
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
         expect(@model.collect_t(@scroll.id)).to eq [0]
       end
       
-      it 'cut' do
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 2, t: 1, scroll: @scroll, panel: @panel
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 3, t: 2, scroll: @scroll, panel: @panel
+      it 'スクコマから同一スクロールのtだけを収集している' do
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
         expect(@model.collect_t(@scroll.id)).to eq [0, 1, 2]
       end
       
@@ -391,192 +394,151 @@ describe ScrollPanel do
   
   describe 'tチェックに於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
-      @item = FactoryGirl.build :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-    end
-    context 'つつがなく終わるとき' do
-      it 't収集を依頼している' do
-        SheetPanel.should_receive(:collect_t).with(any_args).exactly(1)
-        SheetPanel.stub(:collect_t).with(any_args).and_return([])
-        SheetPanel.stub(:serial?).with(any_args).and_return(true)
-        r = SheetPanel.validate_t @item
-      end
-      it '収集したtをシリアライズチェック依頼している' do
-        SheetPanel.stub(:collect_t).with(any_args).and_return([])
-        SheetPanel.should_receive(:serial?).with(any_args).exactly(1)
-        SheetPanel.stub(:serial?).with(any_args).and_return(true)
-        r = SheetPanel.validate_t @item
-      end
+      @dummy =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
     end
-    #実データでチェック
-    #依頼チェックだけでは不安なので最低限のチェックを
+    #実データで最低限のチェックを
     context '新規のとき' do
       it '一件だけで正常通過している' do
-        @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0
-        r = SheetPanel.validate_t @item
-        r.should be_true 
+        @item =  FactoryGirl.build :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        r = ScrollPanel.validate_t @item
+        expect(r).to be_true 
       end
     end
     context '既存のとき' do
       it '2件目を作っても正常通過している' do
-        @item = FactoryGirl.create :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0
-        @item2 = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 1
-        r = SheetPanel.validate_t @item2
-        r.should be_true 
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.build :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        r = ScrollPanel.validate_t @item2
+        expect(r).to be_true 
       end
     end
   end
   describe '挿入シフトに於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
-    end
-    context '依頼チェック' do
-      #テーブルが空で0に挿入
-      it 'Updateを依頼している' do
-        SheetPanel.stub(:update_all).with(any_args)
-        SheetPanel.should_receive(:update_all).with(any_args).exactly(1)
-        @item = FactoryGirl.build :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item.insert_shift
-      end
+      @dummy_scroll =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
     end
     context 'テーブルに1件(t:0)で0に挿入したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.build :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.build :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
       end
       it '既存の行を1にシフトしている' do
         @item2.insert_shift
-        l = SheetPanel.find :all
-        l.first.t.should eq 1
+        @item.reload
+        expect(@item.t).to eq 1
       end
       it 'これから挿入するt(0)が欠番になっている' do
         @item2.insert_shift
-        l = SheetPanel.find(:all).map {|s| s.t }
-        l.include?(0).should_not be_true
+        @item.reload
+        expect(@item2.t).to eq 0
       end
     end
     context 'テーブルに2件(t:0,1)で1に挿入したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.build :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.build :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
       end
       it '既存のt1を2にシフトしてこれから挿入するt(1)が欠番になっている' do
         @item3.insert_shift
-        l = SheetPanel.find(:all).map {|s| s.t }
-        l.sort.should eq [0, 2]
+        @item.reload
+        @item2.reload
+        expect(@item.t).to eq 0
+        expect(@item2.t).to eq 2
       end
     end
     context 'テーブルに5件(t:0,1,2,3,4)で2に挿入したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item6 = FactoryGirl.build :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-      end
-      it '既存のt1を2にシフトしてこれから挿入するt(1)が欠番になっている' do
-        @item6.insert_shift
-        l = SheetPanel.find(:all).map {|s| s.t }
-        l.sort.should eq [0, 1, 3, 4, 5]
-      end
-    end
-    context '先ほどのケース+他の用紙1件で挿入したとき' do
-      before do
-        @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id
-        @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item6 = FactoryGirl.build :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
+        @item6 =  FactoryGirl.build :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
       end
       it '既存のt1を2にシフトしてこれから挿入するt(1)が欠番になっている' do
         @item6.insert_shift
-        l = SheetPanel.find(:all, :conditions => ['sheet_id = ?', @sheet.id]).map {|s| s.t }
-        l.sort.should eq [0, 1, 3, 4, 5]
-      end
-      it '他の用紙に影響がない' do
-        ot = @itemc2.t
-        @item6.insert_shift
-        @itemc2.reload
-        @itemc2.t.should eq ot
+        @item.reload
+        @item2.reload
+        @item3.reload
+        @item4.reload
+        @item5.reload
+        expect(@item.t).to eq 0
+        expect(@item2.t).to eq 1
+        expect(@item3.t).to eq 3
+        expect(@item4.t).to eq 4
+        expect(@item5.t).to eq 5
       end
     end
   end
   describe '少ない方に移動に於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
-    end
-    context '依頼チェック' do
-      it 'Updateを依頼している' do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        SheetPanel.stub(:update_all).with(any_args)
-        SheetPanel.should_receive(:update_all).with(any_args).exactly(1)
-        ot = @item2.t
-        @item2.t = 0
-        @item2.lesser_shift ot
-      end
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
     end
     context 'テーブルに2件(t:0,1)で1を0に移動したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
         @ot = @item2.t
         @item2.t = 0
       end
       it '既存のt0を1にシフトしてこれから挿入するt(0)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item2.lesser_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
-        l.sort.should eq [1, 1]
+        @item.reload
+        @item2.reload
+        expect(@item.t).to eq 1
+        expect(@item2.t).to eq 1
       end
       it '既存のt0を1にシフトしている' do
         @item2.lesser_shift @ot
         @item.reload
-        @item.t.should eq 1
+        expect(@item.t).to eq 1
       end
     end
     context 'テーブルに3件(t:0,1,2)で2を1に移動したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
         @ot = @item3.t
         @item3.t = 1
       end
       it '既存のt1を2にシフトしてこれから挿入するt(1)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item3.lesser_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
-        l.sort.should eq [0, 2, 2]
+        @item.reload
+        @item2.reload
+        @item3.reload
+        expect(@item.t).to eq 0
+        expect(@item2.t).to eq 2
+        expect(@item3.t).to eq 2
       end
       it '既存のt1を2にシフトしている' do
         @item3.lesser_shift @ot
         @item2.reload
-        @item2.t.should eq 2
+        expect(@item2.t).to eq 2
       end
     end
     context 'テーブルに5件(t:0,1,2,3,4)で3を1に移動したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
         @ot = @item4.t
         @item4.t = 1
       end
       it 'これから挿入するt(1)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item4.lesser_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
+        l = ScrollPanel.find(:all).map {|s| s.t }
         l.sort.should eq [0, 2, 3, 3, 4]
       end
       it '既存のt0には変化がない' do
@@ -600,21 +562,19 @@ describe ScrollPanel do
         @item3.t.should eq 3
       end
     end
-    context '先ほどのケース+他の用紙1件で挿入したとき' do
+    context '先ほどのケース+他のスクロール1件で挿入したとき' do
       before do
-        @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id
-        @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
         @ot = @item4.t
         @item4.t = 1
       end
       it 'これから挿入するt(1)が欠番になっている' do
         @item4.lesser_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
+        l = ScrollPanel.find(:all).map {|s| s.t }
         l.sort.should eq [0, 0, 2, 3, 3, 4]
       end
       it '既存のt0には変化がない' do
@@ -637,7 +597,7 @@ describe ScrollPanel do
         @item3.reload
         @item3.t.should eq 3
       end
-      it '他の用紙に影響がない' do
+      it '他のスクロールに影響がない' do
         @item4.lesser_shift @ot
         @itemc2.reload
         @itemc2.t.should eq 0
@@ -647,15 +607,16 @@ describe ScrollPanel do
     #負のときは0として正常扱い
     context 'テーブルに2件(t:0,1)で1を-1に移動したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
         @ot = @item2.t
         @item2.t = -1
       end
       it '既存のt0を1にシフトしてこれから挿入するt(0)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item2.lesser_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
+        l = ScrollPanel.find(:all).map {|s| s.t }
         l.sort.should eq [1, 1]
       end
       it '既存のt0を1にシフトしている' do
@@ -671,15 +632,16 @@ describe ScrollPanel do
   end
   describe '大きい方に移動に於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
     end
     context '依頼チェック' do
       it 'Updateを依頼している' do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        SheetPanel.stub(:update_all).with(any_args)
-        SheetPanel.should_receive(:update_all).with(any_args).exactly(1)
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        ScrollPanel.stub(:update_all).with(any_args)
+        ScrollPanel.should_receive(:update_all).with(any_args).exactly(1)
         ot = @item.t
         @item.t = 1
         @item.higher_shift ot
@@ -687,15 +649,16 @@ describe ScrollPanel do
     end
     context 'テーブルに2件(t:0,1)で0を1に移動したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
         @ot = @item.t
         @item.t = 1
       end
       it '既存のt1を0にシフトしてこれから挿入するt(1)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item.higher_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
+        l = ScrollPanel.find(:all).map {|s| s.t }
         l.sort.should eq [0, 0]
       end
       it '既存のt1を0にシフトしている' do
@@ -706,16 +669,16 @@ describe ScrollPanel do
     end
     context 'テーブルに3件(t:0,1,2)で0を1に移動したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
         @ot = @item.t
         @item.t = 1
       end
       it '既存のt1を0にシフトしてこれから挿入するt(1)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item.higher_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
+        l = ScrollPanel.find(:all).map {|s| s.t }
         l.sort.should eq [0, 0, 2]
       end
       it '既存のt1を0にシフトしている' do
@@ -726,18 +689,18 @@ describe ScrollPanel do
     end
     context 'テーブルに5件(t:0,1,2,3,4)で1を3に移動したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
         @ot = @item2.t
         @item2.t = 3
       end
       it 'これから挿入するt(3)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item2.higher_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
+        l = ScrollPanel.find(:all).map {|s| s.t }
         l.sort.should eq [0, 1, 1, 2, 4]
       end
       it '既存のt0には変化がない' do
@@ -761,22 +724,22 @@ describe ScrollPanel do
         @item4.t.should eq 2
       end
     end
-    context '先ほどのケース+他の用紙1件で挿入したとき' do
+    context '先ほどのケース+他のスクロール1件で挿入したとき' do
       before do
-        @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id
-        @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @scroll2 = FactoryGirl.create :scroll, :author_id => @author.id
+        @itemc2 = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll2.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
         @ot = @item2.t
         @item2.t = 3
       end
       it 'これから挿入するt(3)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item2.higher_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
+        l = ScrollPanel.find(:all).map {|s| s.t }
         l.sort.should eq [0, 0, 1, 1, 2, 4]
       end
       it '既存のt0には変化がない' do
@@ -799,7 +762,7 @@ describe ScrollPanel do
         @item4.reload
         @item4.t.should eq 2
       end
-      it '他の用紙に影響がない' do
+      it '他のスクロールに影響がない' do
         @item2.higher_shift @ot
         @itemc2.reload
         @itemc2.t.should eq 0
@@ -809,15 +772,16 @@ describe ScrollPanel do
     #max超えたときはmaxとして正常扱い
     context 'テーブルに2件(t:0,1)で0を2に移動したとき' do
       before do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
         @ot = @item.t
         @item.t = 2
       end
       it '既存のt1を0にシフトしてこれから挿入するt(1)が欠番になっている' do
         #移動させたい行はそのまま残る
         @item.higher_shift @ot
-        l = SheetPanel.find(:all).map {|s| s.t }
+        l = ScrollPanel.find(:all).map {|s| s.t }
         l.sort.should eq [0, 0]
       end
       it '既存のt1を0にシフトしている' do
@@ -833,15 +797,16 @@ describe ScrollPanel do
   end
   describe '入れ替えに於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
-      @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-      @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+      @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+      @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
     end
     context '新tが旧tより小さいとき' do
       it '少ない方に移動を依頼している' do
-        SheetPanel.any_instance.stub(:lesser_shift).with(any_args)
-        SheetPanel.any_instance.should_receive(:lesser_shift).with(any_args).exactly(1)
+        ScrollPanel.any_instance.stub(:lesser_shift).with(any_args)
+        ScrollPanel.any_instance.should_receive(:lesser_shift).with(any_args).exactly(1)
         ot = @item2.t
         @item2.t = 0
         @item2.update_shift ot
@@ -849,8 +814,8 @@ describe ScrollPanel do
     end
     context '新tが旧tより大きいとき' do
       it '大きい方に移動を依頼している' do
-        SheetPanel.any_instance.stub(:higher_shift).with(any_args)
-        SheetPanel.any_instance.should_receive(:higher_shift).with(any_args).exactly(1)
+        ScrollPanel.any_instance.stub(:higher_shift).with(any_args)
+        ScrollPanel.any_instance.should_receive(:higher_shift).with(any_args).exactly(1)
         ot = @item.t
         @item.t = 1
         @item.update_shift ot
@@ -859,33 +824,36 @@ describe ScrollPanel do
   end
   describe '順序入れ替えに於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
     end
     context 'オブジェクトが新規でtが空のとき' do
       it '末尾追加としてtを補充依頼している' do
-        @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        SheetPanel.stub(:new_t).with(any_args).and_return(0)
-        SheetPanel.should_receive(:new_t).with(any_args).exactly(1)
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item = FactoryGirl.build :scroll_panel, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        ScrollPanel.stub(:new_t).with(any_args).and_return(0)
+        ScrollPanel.should_receive(:new_t).with(any_args).exactly(1)
         @item.t = nil
         r = @item.rotate
       end
     end
     context 'オブジェクトが新規でtが設定されているとき' do
       it '挿入追加として挿入シフトを依頼している' do
-        @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        SheetPanel.any_instance.stub(:insert_shift).with(any_args)
-        SheetPanel.any_instance.should_receive(:insert_shift).with(any_args).exactly(1)
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item = FactoryGirl.build :scroll_panel, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        ScrollPanel.any_instance.stub(:insert_shift).with(any_args)
+        ScrollPanel.any_instance.should_receive(:insert_shift).with(any_args).exactly(1)
         @item.t = 0
         r = @item.rotate
       end
     end
     context 'オブジェクトが新規でなくtが設定されているとき' do
       it 'コマ移動として入れ替えを依頼している' do
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        SheetPanel.any_instance.stub(:update_shift).with(any_args)
-        SheetPanel.any_instance.should_receive(:update_shift).with(1).exactly(1)
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item = FactoryGirl.create :scroll_panel, :t => 0, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 = FactoryGirl.create :scroll_panel, :t => 1, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
+        ScrollPanel.any_instance.stub(:update_shift).with(any_args)
+        ScrollPanel.any_instance.should_receive(:update_shift).with(1).exactly(1)
         @item2.t = 0
         r = @item.rotate 1
       end
@@ -898,216 +866,182 @@ describe ScrollPanel do
   end
   describe '保存に於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
-      @item = FactoryGirl.build :sheet_panel, :t => nil, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-    end
-    context 'つつがなく終わるとき' do
-      it '編集許可チェックを依頼している' do
-        SheetPanel.any_instance.stub(:allow?).with(any_args).and_return(true)
-        SheetPanel.any_instance.should_receive(:allow?).with(any_args).exactly(1)
-        r = @item.store
-      end
-      it '順序入れ替えを依頼している' do
-        SheetPanel.any_instance.stub(:rotate).with(any_args).and_return(0)
-        SheetPanel.any_instance.should_receive(:rotate).with(any_args).exactly(1)
-        SheetPanel.any_instance.stub(:save).with(any_args).and_return(true)
-        SheetPanel.stub(:validate_t).with(any_args).and_return(true)
-        r = @item.store 
-      end
-      it '保存を依頼している' do
-        SheetPanel.stub(:new_t).with(any_args).and_return(0)
-        SheetPanel.any_instance.stub(:save).with(any_args).and_return(true)
-        SheetPanel.any_instance.should_receive(:save).with(any_args).exactly(1)
-        SheetPanel.stub(:validate_t).with(any_args).and_return(true)
-        r = @item.store
-      end
-      it 'tのシリアライズチェックを依頼している' do
-        SheetPanel.stub(:new_t).with(any_args).and_return(0)
-        SheetPanel.any_instance.stub(:save).with(any_args).and_return(true)
-        SheetPanel.stub(:validate_t).with(any_args).and_return(true)
-        SheetPanel.should_receive(:validate_t).with(any_args).exactly(1)
-        r = @item.store
-      end
+      @dummy_scroll =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
+      @dummy_scroll_panels = @dummy_scroll.scroll_panels
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
     end
     #入れ替えテストと同じテストを実施。こちらはシフトだけでなく本尊も更新されている
-    context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で2に挿入したとき' do
+    context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で2に挿入したとき' do
       before do
-        @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id
-        @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item6 = FactoryGirl.build :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
+        @item6 =  FactoryGirl.build :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
       end
       it '既存のt0には変化がない' do
         @item6.store
         @item.reload
-        @item.t.should eq 0
+        expect(@item.t).to eq 0
       end
       it '既存のt1には変化がない' do
         @item6.store
         @item2.reload
-        @item2.t.should eq 1
+        expect(@item2.t).to eq 1
       end
       it '既存のt2を3にシフトしている' do
         @item6.store
         @item3.reload
-        @item3.t.should eq 3
+        expect(@item3.t).to eq 3
       end
       it '既存のt3を4にシフトしている' do
         @item6.store
         @item4.reload
-        @item4.t.should eq 4
+        expect(@item4.t).to eq 4
       end
       it '既存のt5を5にシフトしている' do
         @item6.store
         @item5.reload
-        @item5.t.should eq 5
+        expect(@item5.t).to eq 5
       end
       it '新規のt2が作成されている' do
         @item6.store
         @item6.reload
-        @item6.t.should eq 2
+        expect(@item6.t).to eq 2
       end
-      it '他の用紙に影響がない' do
-        @ot = @itemc2.t
+      it '他のスクロールに影響がない' do
+        @before_status = @dummy_scroll_panels.map {|sp| [sp.id, sp.t]}
         @item6.store
-        @itemc2.reload
-        @itemc2.t.should eq @ot
+        @after_status = @dummy_scroll_panels.map {|sp| sp.reload ; [sp.id, sp.t]}
+        expect(@after_status).to eq @ot
       end
     end
-    context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で3を1に移動したとき' do
+    context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で3を1に移動したとき' do
       before do
-        @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id
-        @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
         @ot = @item4.t
         @item4.t = 1
       end
       it '既存のt0には変化がない' do
         @item4.store @ot
         @item.reload
-        @item.t.should eq 0
+        expect(@item.t).to eq 0
       end
       it '既存のt4には変化がない' do
         @item4.store @ot
         @item5.reload
-        @item5.t.should eq 4
+        expect(@item5.t).to eq 4
       end
       it '既存のt1を2にシフトしている' do
         @item4.store @ot
         @item2.reload
-        @item2.t.should eq 2
+        expect(@item2.t).to eq 2
       end
       it '既存のt2を3にシフトしている' do
         @item4.store @ot
         @item3.reload
-        @item3.t.should eq 3
+        expect(@item3.t).to eq 3
       end
       it '既存のt3を1にシフトしている' do
         @item4.store @ot
         @item4.reload
-        @item4.t.should eq 1
+        expect(@item4.t).to eq 1
       end
-      it '他の用紙に影響がない' do
+      it '他のスクロールに影響がない' do
+        @before_status = @dummy_scroll_panels.map {|sp| [sp.id, sp.t]}
         @item4.store @ot
-        @itemc2.reload
-        @itemc2.t.should eq 0
+        @after_status = @dummy_scroll_panels.map {|sp| sp.reload ; [sp.id, sp.t]}
+        expect(@after_status).to eq @ot
       end
     end
-    context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で1を3に移動したとき' do
+    context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で1を3に移動したとき' do
       before do
-        @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id
-        @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
         @ot = @item2.t
         @item2.t = 3
       end
       it '既存のt0には変化がない' do
         @item2.store @ot
         @item.reload
-        @item.t.should eq 0
+        expect(@item.t).to eq 0
       end
       it '既存のt4には変化がない' do
         @item2.store @ot
         @item5.reload
-        @item5.t.should eq 4
+        expect(@item5.t).to eq 4
       end
       it '既存のt1を3にシフトしている' do
         @item2.store @ot
         @item2.reload
-        @item2.t.should eq 3
+        expect(@item2.t).to eq 3
       end
       it '既存のt2を1にシフトしている' do
         @item2.store @ot
         @item3.reload
-        @item3.t.should eq 1
+        expect(@item3.t).to eq 1
       end
       it '既存のt3を2にシフトしている' do
         @item2.store @ot
         @item4.reload
-        @item4.t.should eq 2
+        expect(@item4.t).to eq 2
       end
-      it '他の用紙に影響がない' do
+      it '他のスクロールに影響がない' do
+        @before_status = @dummy_scroll_panels.map {|sp| [sp.id, sp.t]}
         @item2.store @ot
-        @itemc2.reload
-        @itemc2.t.should eq 0
+        @after_status = @dummy_scroll_panels.map {|sp| sp.reload ; [sp.id, sp.t]}
+        expect(@after_status).to eq @ot
       end
     end
     #ロールバックテスト。入れ替えが直接DBをいじるので、すべてのケースで確実にロールバックを確認する
-    context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で2に挿入したが保存に失敗したとき' do
+    context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で2に挿入したが保存に失敗したとき' do
       before do
-        SheetPanel.any_instance.stub(:save).with(any_args).and_return(false)
-        @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id
-        @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item6 = FactoryGirl.build :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        ScrollPanel.any_instance.stub(:save).with(any_args).and_return(false)
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
+        @item6 = FactoryGirl.build :scroll_panel, :t => 2, :scroll_id => @scroll.id, :panel_id => @panel.id, :author_id => @author.id
       end
       it '既存のtに変化がない' do
         @item6.store
         @item.reload
-        @item.t.should eq 0
         @item2.reload
-        @item2.t.should eq 1
         @item3.reload
-        @item3.t.should eq 2
         @item4.reload
-        @item4.t.should eq 3
         @item5.reload
-        @item5.t.should eq 4
+        expect(@item.t).to eq 0
+        expect(@item2.t).to eq 1
+        expect(@item3.t).to eq 2
+        expect(@item4.t).to eq 3
+        expect(@item5.t).to eq 4
+        expect(@item.t).to eq 5
         @itemc2.reload
         @itemc2.t.should eq 0
       end
       it 'falseを返す' do
         r = @item6.store
-        r.should be_false
+        expect(r).to be_false
       end
     end
-    context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で3を1に移動したがシリアルチェックに失敗したとき' do
+    context 'テーブルに5件(t:0,1,2,3,4)+他のスクロール1件で3を1に移動したがシリアルチェックに失敗したとき' do
       before do
-        SheetPanel.stub(:validate_t).with(any_args).and_return(false)
-        @sheet2 = FactoryGirl.create :sheet, :author_id => @author.id
-        @itemc2 = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet2.id, :panel_id => @panel.id, :author_id => @author.id
-        @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        ScrollPanel.stub(:validate_t).with(any_args).and_return(false)
+        @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
         @ot = @item4.t
         @item4.t = 1
       end
@@ -1125,149 +1059,144 @@ describe ScrollPanel do
         @item5.t.should eq 4
         @itemc2.reload
         @itemc2.t.should eq 0
+        expect(@item.t).to eq 0
+        expect(@item.t).to eq 0
+        expect(@item.t).to eq 0
+        expect(@item.t).to eq 0
+        expect(@item.t).to eq 0
+        expect(@item.t).to eq 0
       end
       it 'falseを返す' do
         r = @item4.store @ot
-        r.should be_false
+        expect(r).to be_false
       end
       it 'tにエラーメッセージが入っている' do
         @item4.store @ot
-        @item4.errors[:t].should_not be_empty
-        @item4.valid?.should be_true
-      end
-    end
-    context '編集不可だったとき' do
-      before do
-        @item = FactoryGirl.build :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        SheetPanel.any_instance.stub(:allow?).and_return(false)
-      end
-      it '403Forbidden例外を返す' do
-        lambda{
-          @item.store
-        }.should raise_error(ActiveRecord::Forbidden)
+        expect(@item4.errors[:t]).to be_empty
+        expect(@item4.valid?).to be_true
       end
     end
   end
   describe '切り詰め処理つき削除に於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
-      @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+      @dummy =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
+      @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
     end
     context 'つつがなく終わるとき' do
       it '削除される' do
-        lambda{
+        expect {
           @item.destroy_and_shorten
-        }.should change(SheetPanel, :count ).by(-1)
+        }.to change(ScrollPanel, :count ).by(-1)
       end
       it 'Trueを返す' do
         r = @item.destroy_and_shorten
-        r.should be_true 
+        expect(r).to be_true 
       end
     end
     context '削除に失敗したとき' do
       before do
-        SheetPanel.any_instance.stub(:destroy).and_return(false)
+        ScrollPanel.any_instance.stub(:destroy).and_return(false)
       end
       it 'ロールバックされる' do
-        lambda{
+        expect {
           @item.destroy_and_shorten
-        }.should_not change(SheetPanel, :count )
+        }.to change(ScrollPanel, :count )
       end
       it 'Falseを返す' do
         r = @item.destroy_and_shorten
-        r.should be_false
+        expect(r).to be_false
       end
     end
     #連携テスト。切り詰めが直接DBをいじる
     context '2件で先頭を削除したとき' do
       before do
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
       end
       it '行が削除される' do
-        lambda{
+        expect {
           @item.destroy_and_shorten
-        }.should change(SheetPanel, :count ).by(-1)
+        }.to change(ScrollPanel, :count ).by(-1)
       end
       it '先頭は削除される' do
         @item.destroy_and_shorten
-        lambda{
-          SheetPanel.find @item.id
-        }.should raise_error(ActiveRecord::RecordNotFound)
+        expect {
+          ScrollPanel.find @item.id
+        }.to raise_error(ActiveRecord::RecordNotFound)
       end
       it '2件目は前に詰められる' do
         @item.destroy_and_shorten
         @item2.reload
-        @item2.t.should eq 0
+        expect(@item2.t).to eq 0
       end
     end
     context '3件で先頭を削除したとき' do
       before do
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
       end
       it '行が削除される' do
-        lambda{
+        expect {
           @item.destroy_and_shorten
-        }.should change(SheetPanel, :count ).by(-1)
+        }.to change(ScrollPanel, :count ).by(-1)
       end
       it '先頭は削除される' do
         @item.destroy_and_shorten
-        lambda{
-          SheetPanel.find @item.id
-        }.should raise_error(ActiveRecord::RecordNotFound)
+        expect {
+          ScrollPanel.find @item.id
+        }.to raise_error(ActiveRecord::RecordNotFound)
       end
       it '2件目は前に詰められる' do
         @item.destroy_and_shorten
         @item2.reload
-        @item2.t.should eq 0
+        expect(@item2.t).to eq 0
       end
       it '3件目は前に詰められる' do
         @item.destroy_and_shorten
         @item3.reload
-        @item3.t.should eq 1
+        expect(@item3.t).to eq 1
       end
     end
     context '5件で3件目を削除したとき' do
       before do
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
       end
       it '行が削除される' do
-        lambda{
+        expect {
           @item3.destroy_and_shorten
-        }.should change(SheetPanel, :count ).by(-1)
+        }.to change(ScrollPanel, :count ).by(-1)
       end
       it '1件目は変化がない' do
         @item3.destroy_and_shorten
         @item.reload
-        @item.t.should eq 0
+        expect(@item.t).to eq 0
       end
       it '2件目は変化がない' do
         @item3.destroy_and_shorten
         @item2.reload
-        @item2.t.should eq 1
+        expect(@item2.t).to eq 1
       end
       it '3件目は削除される' do
         @item3.destroy_and_shorten
-        lambda{
-          SheetPanel.find @item3.id
-        }.should raise_error(ActiveRecord::RecordNotFound)
+        expect {
+          ScrollPanel.find @item3.id
+        }.to raise_error(ActiveRecord::RecordNotFound)
       end
       it '4件目は前に詰められる' do
         @item3.destroy_and_shorten
         @item4.reload
-        @item4.t.should eq 2
+        expect(@item4.t).to eq 2
       end
       it '5件目は前に詰められる' do
         @item3.destroy_and_shorten
         @item5.reload
-        @item5.t.should eq 3
+        expect(@item5.t).to eq 3
       end
     end
     #ロールバックテスト。切り詰めが直接DBをいじるので、すべてのケースで確実にロールバックを確認する
   end
 end
-
index 6a974b6..54b68bd 100644 (file)
@@ -23,7 +23,7 @@ describe Sheet do
       @item =  FactoryGirl.create :sheet_install_a_with_sheet_panels, author: @author_yas
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\82³ã\83\94ã\83¼ã\81\97ã\81¦ã\81»ã\81\97ã\81\8fã\81ªã\81\84ã\82«ã\83©ã\83 ã\82\92å\8f\96ã\82\8aé\99¤ã\81\84ã\81¦ã\81\84る' do
     end
   end
   
@@ -46,149 +46,101 @@ describe Panel do
   end
   
 end
-# 
-describe ScrollPanel do
-  include LeafMacros
+# I/O処理については、マニフェストで動作が変わることがないのでコマでのみテストしておく
+describe Panel do
+  include RootMacros
   before do
     @admin =FactoryGirl.create :admin
     @user_yas = FactoryGirl.create :user_yas_with_owner
     @user_rom = FactoryGirl.create :user_rom
     @author_yas =  @user_yas.author
     
-    @model = ScrollPanel
+    @model = Panel
   end
   
-  describe 'new_tに於いて' do
+  describe 'エレメント取得parts_elementに於いて' do
     before do
-      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @item =  FactoryGirl.create :sheet_install_a_with_sheet_panels, author: @author_yas
     end
     
-    context 'オーソドックスなデータのとき' do
-      it 'cut' do
-        expect(@model.new_t(@scroll.id)).to eq 0
-      end
-      
+    it '順番にかかわらずぶら下がるエレメントすべてをリストで取得してくる' do
+    end
+  end
+  
+  describe '重ね合わせ順のエレメント取得zorderd_elementsに於いて' do
+    before do
+      @item =  FactoryGirl.create :sheet_install_a_with_sheet_panels, author: @author_yas
     end
     
-    context 'オーソドックスなデータのとき' do
-      it 'cut' do
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel
-        expect(@model.new_t(@scroll.id)).to eq 1
-      end
-      
-      it 'cut' do
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 2, t: 1, scroll: @scroll, panel: @panel
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 3, t: 2, scroll: @scroll, panel: @panel
-        expect(@model.new_t(@scroll.id)).to eq 3
-      end
-      
+    it 'エレメントをすべてリストで取得してくる' do
+    end
+  end
+  
+  describe '重ね合わせ順のエレメント取得scenario_elementsに於いて' do
+    before do
+      @item =  FactoryGirl.create :sheet_install_a_with_sheet_panels, author: @author_yas
     end
     
+    it 'エレメントをすべてリストで取得してくる' do
+    end
   end
   
-  describe 'collect_tに於いて' do
+  describe 'new_tに於いて' do
     before do
-      @dummy =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
       @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
     end
     
-    context 'オーソドックスなデータのとき' do
-      it 'cut' do
-        expect(@model.collect_t(@scroll.id)).to be_empty
-      end
-      
+    it 'オフセットはゼロなのでエレメントの総数と一致する' do
+      expect(@model.new_t(@scroll.id)).to eq 0
     end
     
-    context 'オーソドックスなデータのとき' do
-      it 'cut' do
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel
-        expect(@model.collect_t(@scroll.id)).to eq [0]
-      end
-      
-      it 'cut' do
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 1, t: 0, scroll: @scroll, panel: @panel
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 2, t: 1, scroll: @scroll, panel: @panel
-        @item =  FactoryGirl.create :scroll_panel_plain, z: 3, t: 2, scroll: @scroll, panel: @panel
-        expect(@model.collect_t(@scroll.id)).to eq [0, 1, 2]
-      end
-      
+  end
+  
+  describe 'collect_tに於いて' do
+    before do
+      @dummy =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
     end
     
+    it 'オフセットは1なのでエレメントの総数+1と一致する' do
+      expect(@model.collect_t(@scroll.id)).to be_empty
+    end
   end
   
-  describe 'tチェックに於いて' do
+  describe 'validate_childに於いて' do
     before do
       @sheet = FactoryGirl.create :sheet, :author_id => @author.id
       @panel = FactoryGirl.create :panel, :author_id => @author.id
       @item = FactoryGirl.build :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
     end
-    context 'つつがなく終わるとき' do
-      it 't収集を依頼している' do
-        SheetPanel.should_receive(:collect_t).with(any_args).exactly(1)
-        SheetPanel.stub(:collect_t).with(any_args).and_return([])
-        SheetPanel.stub(:serial?).with(any_args).and_return(true)
-        r = SheetPanel.validate_t @item
-      end
-      it '収集したtをシリアライズチェック依頼している' do
-        SheetPanel.stub(:collect_t).with(any_args).and_return([])
-        SheetPanel.should_receive(:serial?).with(any_args).exactly(1)
-        SheetPanel.stub(:serial?).with(any_args).and_return(true)
+    #実データで最低限のチェックを
+    context '正常のとき' do
+      it '真を返している' do
+        @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0
         r = SheetPanel.validate_t @item
+        r.should be_true 
       end
     end
-    #実データでチェック
-    #依頼チェックだけでは不安なので最低限のチェックを
-    context '新規のとき' do
-      it '一件だけで正常通過している' do
-        @item = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0
-        r = SheetPanel.validate_t @item
+    context '重ね合わせ順が壊れているとき' do
+      it '偽を返している' do
+        r = SheetPanel.validate_t @item2
         r.should be_true 
       end
     end
-    context '既存のとき' do
-      it '2件目を作っても正常通過している' do
-        @item = FactoryGirl.create :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 0
-        @item2 = FactoryGirl.build :sheet_panel, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id, :t => 1
+    context 'シナリオ順が壊れているとき' do
+      it '偽を返している' do
         r = SheetPanel.validate_t @item2
         r.should be_true 
       end
     end
   end
+  
   describe '保存に於いて' do
     before do
       @sheet = FactoryGirl.create :sheet, :author_id => @author.id
       @panel = FactoryGirl.create :panel, :author_id => @author.id
       @item = FactoryGirl.build :sheet_panel, :t => nil, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
     end
-    context 'つつがなく終わるとき' do
-      it '編集許可チェックを依頼している' do
-        SheetPanel.any_instance.stub(:allow?).with(any_args).and_return(true)
-        SheetPanel.any_instance.should_receive(:allow?).with(any_args).exactly(1)
-        r = @item.store
-      end
-      it '順序入れ替えを依頼している' do
-        SheetPanel.any_instance.stub(:rotate).with(any_args).and_return(0)
-        SheetPanel.any_instance.should_receive(:rotate).with(any_args).exactly(1)
-        SheetPanel.any_instance.stub(:save).with(any_args).and_return(true)
-        SheetPanel.stub(:validate_t).with(any_args).and_return(true)
-        r = @item.store 
-      end
-      it '保存を依頼している' do
-        SheetPanel.stub(:new_t).with(any_args).and_return(0)
-        SheetPanel.any_instance.stub(:save).with(any_args).and_return(true)
-        SheetPanel.any_instance.should_receive(:save).with(any_args).exactly(1)
-        SheetPanel.stub(:validate_t).with(any_args).and_return(true)
-        r = @item.store
-      end
-      it 'tのシリアライズチェックを依頼している' do
-        SheetPanel.stub(:new_t).with(any_args).and_return(0)
-        SheetPanel.any_instance.stub(:save).with(any_args).and_return(true)
-        SheetPanel.stub(:validate_t).with(any_args).and_return(true)
-        SheetPanel.should_receive(:validate_t).with(any_args).exactly(1)
-        r = @item.store
-      end
-    end
     #入れ替えテストと同じテストを実施。こちらはシフトだけでなく本尊も更新されている
     context 'テーブルに5件(t:0,1,2,3,4)+他の用紙1件で2に挿入したとき' do
       before do
@@ -409,121 +361,122 @@ describe ScrollPanel do
   end
   describe '切り詰め処理つき削除に於いて' do
     before do
-      @sheet = FactoryGirl.create :sheet, :author_id => @author.id
-      @panel = FactoryGirl.create :panel, :author_id => @author.id
-      @item = FactoryGirl.create :sheet_panel, :t => 0, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+      @dummy =  FactoryGirl.create :scroll_great_with_scroll_panels, author: @author_yas
+      @scroll =  FactoryGirl.create :scroll_hello, author: @author_yas
+      @panel = FactoryGirl.create :panel_hello, author: @author_yas
+      @item =  FactoryGirl.create :scroll_panel_plain, t: 0, scroll: @scroll, panel: @panel
     end
     context 'つつがなく終わるとき' do
       it '削除される' do
-        lambda{
+        expect {
           @item.destroy_and_shorten
-        }.should change(SheetPanel, :count ).by(-1)
+        }.to change(ScrollPanel, :count ).by(-1)
       end
       it 'Trueを返す' do
         r = @item.destroy_and_shorten
-        r.should be_true 
+        expect(r).to be_true 
       end
     end
     context '削除に失敗したとき' do
       before do
-        SheetPanel.any_instance.stub(:destroy).and_return(false)
+        ScrollPanel.any_instance.stub(:destroy).and_return(false)
       end
       it 'ロールバックされる' do
-        lambda{
+        expect {
           @item.destroy_and_shorten
-        }.should_not change(SheetPanel, :count )
+        }.to change(ScrollPanel, :count )
       end
       it 'Falseを返す' do
         r = @item.destroy_and_shorten
-        r.should be_false
+        expect(r).to be_false
       end
     end
     #連携テスト。切り詰めが直接DBをいじる
     context '2件で先頭を削除したとき' do
       before do
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
       end
       it '行が削除される' do
-        lambda{
+        expect {
           @item.destroy_and_shorten
-        }.should change(SheetPanel, :count ).by(-1)
+        }.to change(ScrollPanel, :count ).by(-1)
       end
       it '先頭は削除される' do
         @item.destroy_and_shorten
-        lambda{
-          SheetPanel.find @item.id
-        }.should raise_error(ActiveRecord::RecordNotFound)
+        expect {
+          ScrollPanel.find @item.id
+        }.to raise_error(ActiveRecord::RecordNotFound)
       end
       it '2件目は前に詰められる' do
         @item.destroy_and_shorten
         @item2.reload
-        @item2.t.should eq 0
+        expect(@item2.t).to eq 0
       end
     end
     context '3件で先頭を削除したとき' do
       before do
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
       end
       it '行が削除される' do
-        lambda{
+        expect {
           @item.destroy_and_shorten
-        }.should change(SheetPanel, :count ).by(-1)
+        }.to change(ScrollPanel, :count ).by(-1)
       end
       it '先頭は削除される' do
         @item.destroy_and_shorten
-        lambda{
-          SheetPanel.find @item.id
-        }.should raise_error(ActiveRecord::RecordNotFound)
+        expect {
+          ScrollPanel.find @item.id
+        }.to raise_error(ActiveRecord::RecordNotFound)
       end
       it '2件目は前に詰められる' do
         @item.destroy_and_shorten
         @item2.reload
-        @item2.t.should eq 0
+        expect(@item2.t).to eq 0
       end
       it '3件目は前に詰められる' do
         @item.destroy_and_shorten
         @item3.reload
-        @item3.t.should eq 1
+        expect(@item3.t).to eq 1
       end
     end
     context '5件で3件目を削除したとき' do
       before do
-        @item2 = FactoryGirl.create :sheet_panel, :t => 1, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item3 = FactoryGirl.create :sheet_panel, :t => 2, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item4 = FactoryGirl.create :sheet_panel, :t => 3, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
-        @item5 = FactoryGirl.create :sheet_panel, :t => 4, :sheet_id => @sheet.id, :panel_id => @panel.id, :author_id => @author.id
+        @item2 =  FactoryGirl.create :scroll_panel_plain, t: 1, scroll: @scroll, panel: @panel
+        @item3 =  FactoryGirl.create :scroll_panel_plain, t: 2, scroll: @scroll, panel: @panel
+        @item4 =  FactoryGirl.create :scroll_panel_plain, t: 3, scroll: @scroll, panel: @panel
+        @item5 =  FactoryGirl.create :scroll_panel_plain, t: 4, scroll: @scroll, panel: @panel
       end
       it '行が削除される' do
-        lambda{
+        expect {
           @item3.destroy_and_shorten
-        }.should change(SheetPanel, :count ).by(-1)
+        }.to change(ScrollPanel, :count ).by(-1)
       end
       it '1件目は変化がない' do
         @item3.destroy_and_shorten
         @item.reload
-        @item.t.should eq 0
+        expect(@item.t).to eq 0
       end
       it '2件目は変化がない' do
         @item3.destroy_and_shorten
         @item2.reload
-        @item2.t.should eq 1
+        expect(@item2.t).to eq 1
       end
       it '3件目は削除される' do
         @item3.destroy_and_shorten
-        lambda{
-          SheetPanel.find @item3.id
-        }.should raise_error(ActiveRecord::RecordNotFound)
+        expect {
+          ScrollPanel.find @item3.id
+        }.to raise_error(ActiveRecord::RecordNotFound)
       end
       it '4件目は前に詰められる' do
         @item3.destroy_and_shorten
         @item4.reload
-        @item4.t.should eq 2
+        expect(@item4.t).to eq 2
       end
       it '5件目は前に詰められる' do
         @item3.destroy_and_shorten
         @item5.reload
-        @item5.t.should eq 3
+        expect(@item5.t).to eq 3
       end
     end
     #ロールバックテスト。切り詰めが直接DBをいじるので、すべてのケースで確実にロールバックを確認する
index 9ec76e4..b0be393 100644 (file)
@@ -26,16 +26,16 @@ describe SpeechBalloonTemplate do
     before do
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '有効なテンプレートをリストで返している' do
       expect(SpeechBalloonTemplate.enable_list).to_not be_empty
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\81\8cç\84¡å\8a¹ã\81ªã\82\89ã\83ªã\82¹ã\83\88ã\81¯ç©ºã\81«ã\81ªã\81£ã\81¦ã\81\84る' do
       allow_any_instance_of(SpeechBalloonTemplate).to receive(:enable?).and_return(false)
       expect(SpeechBalloonTemplate.enable_list).to be_empty
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '実データでテストしてみる' do
       allow(@circle).to receive(:enable?).and_return(false)
       expect(SpeechBalloonTemplate.enable_list.size).to eq 3
     end
@@ -46,16 +46,16 @@ describe SpeechBalloonTemplate do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99ã\82\8b' do
+    it 'ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\81®ã\83\9eã\83\8bã\83\95ã\82§ã\82¹ã\83\88ã\81\8c設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84ã\81¨ã\81\8dã\81¯å\81½ã\82\92è¿\94ã\81\99' do
       allow(SpeechBalloonTemplate).to receive(:template_manifest).and_return(nil)
       expect(@circle.enable?).to be false
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '有効なテンプレートであれば真を返す' do
       expect(@circle.enable?).to be true
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '無効なテンプレートの時は偽を返す' do
       expect(@test.enable?).to be false
     end
   end
@@ -64,7 +64,7 @@ describe SpeechBalloonTemplate do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83¢ã\82¸ã\83¥ã\83¼ã\83«ã\82\92è¿\94ã\81\97ã\81¦ã\81\84る' do
       expect(@circle.template_module).to eq CircleSpeechBalloon
       expect(@square.template_module).to eq SquareSpeechBalloon
     end
@@ -74,7 +74,7 @@ describe SpeechBalloonTemplate do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83\91ã\82¹ã\83\8dã\83¼ã\83 ã\82\92è¿\94ã\81\97ã\81¦ã\81\84る' do
       expect(@circle.template_path_name).to eq 'circle_speech_balloon'
       expect(@square.template_path_name).to eq 'square_speech_balloon'
     end
@@ -105,16 +105,16 @@ describe LicenseGroup do
     before do
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '有効なテンプレートをリストで返している' do
       expect(LicenseGroup.enable_list).to_not be_empty
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\81\8cç\84¡å\8a¹ã\81ªã\82\89ã\83ªã\82¹ã\83\88ã\81¯ç©ºã\81«ã\81ªã\81£ã\81¦ã\81\84る' do
       allow_any_instance_of(LicenseGroup).to receive(:enable?).and_return(false)
       expect(LicenseGroup.enable_list).to be_empty
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '実データでテストしてみる' do
       expect(LicenseGroup.enable_list.size).to eq 2
     end
     
@@ -124,16 +124,16 @@ describe LicenseGroup do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99ã\82\8b' do
+    it 'ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\81®ã\83\9eã\83\8bã\83\95ã\82§ã\82¹ã\83\88ã\81\8c設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84ã\81¨ã\81\8dã\81¯å\81½ã\82\92è¿\94ã\81\99' do
       allow(LicenseGroup).to receive(:template_manifest).and_return(nil)
       expect(@cc.enable?).to be false
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '有効なテンプレートであれば真を返す' do
       expect(@cc.enable?).to be true
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '無効なテンプレートの時は偽を返す' do
       expect(@test.enable?).to be false
     end
   end
@@ -142,7 +142,7 @@ describe LicenseGroup do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83¢ã\82¸ã\83¥ã\83¼ã\83«ã\82\92è¿\94ã\81\97ã\81¦ã\81\84る' do
       expect(@cc.template_module).to eq PettanrCreativeCommonsV30Licenses
       expect(@pc.template_module).to eq PettanrPettanCommonsV01Licenses
     end
@@ -152,7 +152,7 @@ describe LicenseGroup do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83\91ã\82¹ã\83\8dã\83¼ã\83 ã\82\92è¿\94ã\81\97ã\81¦ã\81\84る' do
       expect(@cc.template_path_name).to eq 'pettanr_creative_commons_v30_licenses'
       expect(@pc.template_path_name).to eq 'pettanr_pettan_commons_v01_licenses'
     end
@@ -182,18 +182,18 @@ describe WritingFormat do
     before do
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '有効なテンプレートをリストで返している' do
       expect(WritingFormat.enable_list).to_not be_empty
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\81\8cç\84¡å\8a¹ã\81ªã\82\89ã\83ªã\82¹ã\83\88ã\81¯ç©ºã\81«ã\81ªã\81£ã\81¦ã\81\84る' do
       allow_any_instance_of(WritingFormat).to receive(:enable?).and_return(false)
       expect(SpeechBalloonTemplate.enable_list).to be_empty
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '実データでテストしてみる' do
       allow(@simple).to receive(:enable?).and_return(false)
-      expect(WritingFormat.enable_list.size).to eq 2
+      expect(WritingFormat.enable_list.size).to eq 1
     end
     
   end
@@ -202,17 +202,16 @@ describe WritingFormat do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99ã\82\8b' do
+    it 'ã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\81®ã\83\9eã\83\8bã\83\95ã\82§ã\82¹ã\83\88ã\81\8c設å®\9aã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84ã\81¨ã\81\8dã\81¯å\81½ã\82\92è¿\94ã\81\99' do
       allow(WritingFormat).to receive(:template_manifest).and_return(nil)
       expect(@simple.enable?).to be false
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
+    it '有効なテンプレートであれば真を返す' do
       expect(@simple.enable?).to be true
     end
     
-    it 'ブーストメッセージをリーフに伝搬する' do
-      allow_any_instance_of(WritingFormat).to receive(:module_name).and_return('excluded')
+    it '無効なテンプレートの時は偽を返す' do
       expect(@test.enable?).to be false
     end
   end
@@ -221,7 +220,7 @@ describe WritingFormat do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83¢ã\82¸ã\83¥ã\83¼ã\83«ã\82\92è¿\94ã\81\97ã\81¦ã\81\84る' do
       expect(@simple.template_module).to eq PettanrSimpleFormat
     end
   end
@@ -230,7 +229,7 @@ describe WritingFormat do
     before do
     end
     
-    it 'ã\83\96ã\83¼ã\82¹ã\83\88ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\82\92ã\83ªã\83¼ã\83\95ã\81«ä¼\9dæ\90¬ã\81\99る' do
+    it 'ã\81\9dã\82\8cã\81\9eã\82\8cã\81®ã\83\91ã\82¹ã\83\8dã\83¼ã\83 ã\82\92è¿\94ã\81\97ã\81¦ã\81\84る' do
       expect(@simple.template_path_name).to eq 'pettanr_simple_format'
     end
   end