# 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.
//= 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
--- /dev/null
+class Pettanr.Admin extends Backbone.Model\r
+ \r
+ defaults: {\r
+ id: null\r
+ } \r
+ \r
+ initialize: () ->\r
+ \r
+\r
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+class Pettanr.Balloon extends Peta.Element\r
+\r
--- /dev/null
+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
--- /dev/null
+class Pettanr.Demander extends Backbone.Model\r
+ \r
+ defaults: {\r
+ id: null\r
+ } \r
+ \r
+ initialize: () ->\r
+ \r
+\r
--- /dev/null
+class Pettanr.GroundColor extends Peta.Element\r
+\r
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+class Pettanr.ScrollsController extends Pettanr.AppController\r
+\r
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+class Pettanr.SpeechBalloonTemplate extends Peta.Template\r
+\r
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+class Pettanr.SystemPicture extends Peta.SystemResource\r
--- /dev/null
+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
--- /dev/null
+class Pettanr.WritingFormat extends Peta.Template\r
+\r
--- /dev/null
+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} - %{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":"« First","last":"Last »","previous":"‹ Prev","next":"Next ›","truncate":"…"}},"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
@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
super()\r
\r
filer: () ->\r
- @parent.filer\r
+ @parent.filer()\r
\r
@item_name = @args.item_name\r
\r
filer: () ->\r
- @parent.filer\r
+ @parent.filer()\r
\r
\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
@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
@item_name = @args.item_name\r
\r
filer: () ->\r
- @parent.filer\r
+ @parent.filer()\r
\r
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
#@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
@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
\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
model: () ->\r
@filer().model\r
\r
- collection: () ->\r
- @filer().collection\r
+ items: () ->\r
+ @filer().items\r
\r
template_dir: () ->\r
@filer().template_dir\r
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
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
\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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
\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
@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
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
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
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
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
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
\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
@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
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
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
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
'template'\r
\r
template_dir: () ->\r
- @item.path_name() + '/'\r
+ @item.path_name() + '-'\r
\r
template_file_name: () ->\r
@my_manifest.template_name()\r
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
\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
@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
@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
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
icon_size: () ->\r
Manifest.manifest().magic_numbers['thumbnail_width']\r
\r
+ is_visible: () ->\r
+ true\r
+ \r
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
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
\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
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
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
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
-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
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
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
-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
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
-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
-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
else\r
{'src': '/images/error.png', 'width': Manifest.manifest().magic_numbers['thumbnail_width'], 'height': Manifest.manifest().magic_numbers['thumbnail_height']}\r
\r
-\r
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
-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
-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
-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
-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
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
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
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
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
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
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
--- /dev/null
+class Pettanr.Admin extends Backbone.Model\r
+ \r
+ defaults: {\r
+ id: null\r
+ } \r
+ \r
+ initialize: () ->\r
+ \r
+\r
class Pettanr.Artist extends Peta.Owner\r
+ url: '/artists/'\r
+ \r
@singular: () ->\r
'Artist'\r
\r
} \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
class Pettanr.Author extends Peta.Owner\r
+ url: '/authors/'\r
+ \r
@singular: () ->\r
'Author'\r
\r
} \r
\r
initialize: () ->\r
- \r
+ if @id\r
+ @url = @url + @id\r
+\r
\r
--- /dev/null
+class Pettanr.Demander extends Backbone.Model\r
+ \r
+ defaults: {\r
+ id: null\r
+ } \r
+ \r
+ initialize: () ->\r
+ \r
+\r
--- /dev/null
+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
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
--- /dev/null
+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
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
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
else\r
false\r
\r
+ @to_s: (str) ->\r
+ if @is_a_string(str)\r
+ str\r
+ else\r
+ ''\r
+ \r
@Pettanr = Pettanr\r
--- /dev/null
+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
--- /dev/null
+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
show: {\r
type: 'show',\r
},\r
+ watch: {\r
+ type: 'show',\r
+ },\r
count: {\r
type: 'count',\r
args: {\r
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
end
end
+ def watch
+ set_show
+ respond_to do |format|
+ format.json { render json: @item.to_json }
+ end
+ end
+
def index
filer_list
end
def index
respond_to do |format|
- format.html
+ format.html { render layout: 'ap' }
end
end
<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
<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
-<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
--- /dev/null
+<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
--- /dev/null
+# 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"
collection do
get :root
get :index
+ get :watch
get :show
get :count
post :create
"show": {\r
"type": "show"\r
},\r
+ "watch": {\r
+ "type": "show"\r
+ },\r
"count": {\r
"type": "count",\r
"args": {\r
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
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
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'
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
# 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
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
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
@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
@item3.reload
@item3.t.should eq 3
end
- it '他の用紙に影響がない' do
+ it '他のスクロールに影響がない' do
@item4.lesser_shift @ot
@itemc2.reload
@itemc2.t.should eq 0
#負のときは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
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
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
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
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
@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
@item4.reload
@item4.t.should eq 2
end
- it '他の用紙に影響がない' do
+ it '他のスクロールに影響がない' do
@item2.higher_shift @ot
@itemc2.reload
@itemc2.t.should eq 0
#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
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
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
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
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
@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
-
@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
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
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をいじるので、すべてのケースで確実にロールバックを確認する
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
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
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
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
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
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
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
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
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
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
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
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