OSDN Git Service

temp
[pettanr/pettanr.git] / app / helpers / application_helper.rb
index a63fee4..15e6292 100644 (file)
@@ -1,4 +1,8 @@
 module ApplicationHelper
+  def manifest
+    Pettanr::Application.manifest
+  end
+  
   def full_url filename
     request.protocol + request.host_with_port + filename
   end
@@ -24,10 +28,14 @@ module ApplicationHelper
     t(MagicNumber[name][index][0])
   end
   
+  def item_tag 
+    tag :img, :src => asset_path('item.png'), :width => 35, :height => 35
+  end
+  
   def icon_tag name, opt = {}
     title = opt[:object] ? (name.to_s + ' ID:' + opt[:object].id.to_s) : name
     size = opt[:size] ? opt[:size].to_i : 35
-    tag :img, :src => asset_path(name.to_s.downcase + '.gif'), :width => size, :height => size, :alt => name.to_s + ' Icon', :title => title
+    tag :img, :src => asset_path(name.to_s.underscore + '.gif'), :width => size, :height => size, :alt => name.to_s + ' Icon', :title => title
   end
   
   def author_icon opt = {}
@@ -38,6 +46,14 @@ module ApplicationHelper
     icon_tag :Artist, opt
   end
   
+  def scroll_icon opt = {}
+    icon_tag :Scroll, opt
+  end
+  
+  def scroll_panel_icon opt = {}
+    icon_tag :ScrollPanel, opt
+  end
+  
   def comic_icon opt = {}
     icon_tag :Comic, opt
   end
@@ -46,6 +62,18 @@ module ApplicationHelper
     icon_tag :Story, opt
   end
   
+  def story_sheet_icon opt = {}
+    icon_tag :StorySheet, opt
+  end
+  
+  def sheet_icon opt = {}
+    icon_tag :Sheet, opt
+  end
+  
+  def sheet_panel_icon opt = {}
+    icon_tag :Sheet, opt
+  end
+  
   def panel_icon opt = {}
     icon_tag :Panel, opt
   end
@@ -67,10 +95,28 @@ module ApplicationHelper
     JSON.parse(<<HD
 {
     "models": {
-        "Panel": "panel",
-        "panel": {
-            "class_name": "Panel",
-            "table_name": "panels",
+        "Scroll": "scroll",
+        "scroll": {
+            "class_name": "Scroll",
+            "table_name": "scrolls",
+            "associations": {
+                "belongs_to": {
+                    "author": {
+                        "id_column": "author_id"
+                    }
+                },
+                "has_many": {
+                    "scroll_panels": {
+                        "foreign_key": "scroll_id",
+                        "list_method": "list_by_scroll"
+                    },
+                    "panels": {
+                        "through": "scroll_panels",
+                        "foreign_key": "scroll_id",
+                        "list_method": "list_by_scroll"
+                    }
+                }
+            },
             "attributes": {
                 "id": {
                     "type": "number",
@@ -79,40 +125,25 @@ module ApplicationHelper
                         "number": true
                     }
                 },
-                "width": {
-                    "type": "number",
-                    "rules": {
-                        "required": true,
-                        "number": true,
-                        "min": 1
-                    }
-                },
-                "height": {
-                    "type": "number",
-                    "rules": {
-                        "required": true,
-                        "number": true,
-                        "min": 1
-                    }
-                },
-                "border": {
-                    "type": "number",
+                "title": {
+                    "type": "text",
                     "rules": {
-                        "required": true,
-                        "number": true,
-                        "min": 0
+                        "required": true
                     }
                 },
-                "caption": {
+                "description": {
                     "type": "text",
-                    "rules": {
-                    }
+                    "rules": {}
                 },
-                "publish": {
+                "visible": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "scroll_visible_items"
                     }
                 },
                 "author_id": {
@@ -128,12 +159,30 @@ module ApplicationHelper
                 "updated_at": {
                     "type": "datetime"
                 }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "column",
+                    "name": "title"
+                }
             }
         },
-        "PanelPicture": "panel_picture",
-        "panel_picture": {
-            "class_name": "PanelPicture",
-            "table_name": "panel_pictures",
+        "ScrollPanel": "scroll_panel",
+        "scroll_panel": {
+            "class_name": "ScrollPanel",
+            "table_name": "scroll_panels",
+            "associations": {
+                "belongs_to": {
+                    "panel": {
+                        "id_column": "panel_id"
+                    },
+                    "scroll": {
+                        "id_column": "scroll_id"
+                    }
+                },
+                "has_many": {}
+            },
             "attributes": {
                 "id": {
                     "type": "number",
@@ -142,71 +191,95 @@ module ApplicationHelper
                         "number": true
                     }
                 },
-                "panel_id": {
+                "scroll_id": {
                     "type": "number",
                     "rules": {
+                        "required": true,
                         "number": true
                     }
                 },
-                "picture_id": {
+                "panel_id": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true
                     }
                 },
-                "caption": {
-                    "type": "text",
-                    "rules": {}
-                },
-                "x": {
+                "t": {
                     "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true
+                        "number": true,
+                        "min": 0
                     }
                 },
-                "y": {
+                "author_id": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true
                     }
                 },
-                "width": {
-                    "type": "number",
-                    "rules": {
-                        "required": true,
-                        "number": true
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "Comic": "comic",
+        "comic": {
+            "class_name": "Comic",
+            "table_name": "comics",
+            "associations": {
+                "belongs_to": {
+                    "author": {
+                        "id_column": "author_id"
                     }
                 },
-                "height": {
+                "has_many": {
+                    "stories": {
+                        "foreign_key": "comic_id",
+                        "list_method": "list_by_comic"
+                    }
+                },
+                "has_many_through": {}
+            },
+            "attributes": {
+                "id": {
                     "type": "number",
+                    "primary_key": 1,
                     "rules": {
-                        "required": true,
                         "number": true
                     }
                 },
-                "link": {
+                "title": {
                     "type": "text",
                     "rules": {
-                        "url": true
+                        "required": true
                     }
                 },
-                "z": {
+                "description": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "visible": {
                     "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true,
-                        "min": 1
+                        "number": true
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "comic_visible_items"
                     }
                 },
-                "t": {
+                "author_id": {
                     "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true,
-                        "min": 0
+                        "number": true
                     }
                 },
                 "created_at": {
@@ -215,13 +288,37 @@ module ApplicationHelper
                 "updated_at": {
                     "type": "datetime"
                 }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "column",
+                    "name": "title"
+                }
             }
         },
-        "SpeechBalloon": "speech_balloon",
-        "speech_balloon": {
-            "class_name": "SpeechBalloon",
-            "table_name": "speech_balloons",
-            "extend": "classname",
+        "Story": "story",
+        "story": {
+            "class_name": "Story",
+            "table_name": "stories",
+            "associations": {
+                "belongs_to": {
+                    "comic": {
+                        "id_column": "comic_id"
+                    }
+                },
+                "has_many": {
+                    "story_sheets": {
+                        "foreign_key": "story_id",
+                        "list_method": "list_by_story"
+                    },
+                    "sheets": {
+                        "through": "story_sheets",
+                        "foreign_key": "story_id",
+                        "list_method": "list_by_story"
+                    }
+                }
+            },
             "attributes": {
                 "id": {
                     "type": "number",
@@ -230,61 +327,69 @@ module ApplicationHelper
                         "number": true
                     }
                 },
-                "panel_id": {
+                "comic_id": {
                     "type": "number",
                     "rules": {
                         "number": true
                     }
                 },
-                "speech_balloon_template_id": {
-                    "type": "number",
-                    "rules": {
-                        "required": true,
-                        "number": true
-                    }
+                "title": {
+                    "type": "text",
+                    "rules": {}
                 },
-                "classname": {
+                "description": {
                     "type": "text",
-                    "rules": {
-                        "required": true
-                    }
+                    "rules": {}
                 },
-                "z": {
+                "t": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true,
-                        "min": 1
+                        "min": 0
                     }
                 },
-                "t": {
+                "visible": {
                     "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true,
-                        "min": 0
+                        "number": true
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "story_visible_items"
                     }
                 },
-                "settings": {
-                    "type": "text",
-                    "rules": {}
-                },
-                "caption": {
-                    "type": "text",
-                    "rules": {}
-                },
                 "created_at": {
                     "type": "datetime"
                 },
                 "updated_at": {
                     "type": "datetime"
                 }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "method",
+                    "name": "title_with_t"
+                }
             }
         },
-        "Balloon": "balloon",
-        "balloon": {
-            "class_name": "Balloon",
-            "table_name": "balloons",
+        "StorySheet": "story_sheet",
+        "story_sheet": {
+            "class_name": "StorySheet",
+            "table_name": "story_sheets",
+            "associations": {
+                "belongs_to": {
+                    "story": {
+                        "id_column": "story_id"
+                    },
+                    "sheet": {
+                        "id_column": "sheet_id"
+                    }
+                },
+                "has_many": {}
+            },
             "attributes": {
                 "id": {
                     "type": "number",
@@ -293,59 +398,115 @@ module ApplicationHelper
                         "number": true
                     }
                 },
-                "speech_balloon_id": {
+                "story_id": {
                     "type": "number",
                     "rules": {
                         "number": true
                     }
                 },
-                "system_picture_id": {
+                "sheet_id": {
                     "type": "number",
                     "rules": {
-                        "required": true,
                         "number": true
                     }
                 },
-                "x": {
+                "t": {
                     "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true
+                        "number": true,
+                        "min": 0
                     }
                 },
-                "y": {
+                "author_id": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true
                     }
                 },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "Sheet": "sheet",
+        "sheet": {
+            "class_name": "Sheet",
+            "table_name": "sheets",
+            "associations": {
+                "belongs_to": {
+                    "author": {
+                        "id_column": "author_id"
+                    }
+                },
+                "has_many": {
+                    "story_sheets": {
+                        "foreign_key": "story_id",
+                        "list_method": "list_by_sheet"
+                    },
+                    "stories": {
+                        "through": "story_sheets",
+                        "foreign_key": "sheet_id",
+                        "list_method": "list_by_sheet"
+                    },
+                    "sheet_panels": {
+                        "foreign_key": "sheet_id",
+                        "list_method": "list_by_sheet"
+                    },
+                    "panels": {
+                        "through": "sheet_panels",
+                        "foreign_key": "sheet_id",
+                        "list_method": "list_by_sheet"
+                    }
+                }
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "caption": {
+                    "type": "text",
+                    "rules": {}
+                },
                 "width": {
                     "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true,
-                        "min": 1
+                        "number": true
                     }
                 },
                 "height": {
                     "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true,
-                        "min": 1
+                        "number": true
                     }
                 },
-                "r": {
+                "visible": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "sheet_visible_items"
                     }
                 },
-                "settings": {
-                    "type": "text",
-                    "rules": {}
+                "author_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
                 },
                 "created_at": {
                     "type": "datetime"
@@ -353,12 +514,30 @@ module ApplicationHelper
                 "updated_at": {
                     "type": "datetime"
                 }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "column",
+                    "name": "caption"
+                }
             }
         },
-        "Speech": "speech",
-        "speech": {
-            "class_name": "Speech",
-            "table_name": "speeches",
+        "SheetPanel": "sheet_panel",
+        "sheet_panel": {
+            "class_name": "SheetPanel",
+            "table_name": "sheet_panels",
+            "associations": {
+                "belongs_to": {
+                    "sheet": {
+                        "id_column": "sheet_id"
+                    },
+                    "panel": {
+                        "id_column": "panel_id"
+                    }
+                },
+                "has_many": {}
+            },
             "attributes": {
                 "id": {
                     "type": "number",
@@ -367,64 +546,114 @@ module ApplicationHelper
                         "number": true
                     }
                 },
-                "speech_balloon_id": {
+                "sheet_id": {
                     "type": "number",
                     "rules": {
                         "number": true
                     }
                 },
-                "writing_format_id": {
+                "panel_id": {
                     "type": "number",
                     "rules": {
-                        "required": true,
                         "number": true
                     }
                 },
-                "content": {
-                    "type": "text",
-                    "rules": {}
-                },
-                "font_size": {
-                    "type": "float",
+                "x": {
+                    "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true,
-                        "min": 0
+                        "number": true
                     }
                 },
-                "text_align": {
+                "y": {
                     "type": "number",
                     "rules": {
                         "required": true,
-                        "number": true,
-                        "range": [
-                            0,
-                            3
-                        ]
+                        "number": true
                     }
                 },
-                "fore_color": {
+                "z": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true,
-                        "range": [
-                            0,
-                            16777215
-                        ]
+                        "min": 1
                     }
                 },
-                "x": {
+                "t": {
                     "type": "number",
                     "rules": {
                         "required": true,
+                        "number": true,
+                        "min": 0
+                    }
+                },
+                "author_id": {
+                    "type": "number",
+                    "rules": {
                         "number": true
                     }
                 },
-                "y": {
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "Panel": "panel",
+        "panel": {
+            "class_name": "Panel",
+            "table_name": "panels",
+            "associations": {
+                "belongs_to": {
+                    "author": {
+                        "id_column": "author_id"
+                    }
+                },
+                "has_many": {
+                    "scroll_panels": {
+                        "foreign_key": "panel_id",
+                        "list_method": "list_by_panel"
+                    },
+                    "scrolls": {
+                        "through": "scroll_panels",
+                        "foreign_key": "panel_id",
+                        "list_method": "list_by_panel"
+                    },
+                    "sheet_panels": {
+                        "foreign_key": "panel_id",
+                        "list_method": "list_by_panel"
+                    },
+                    "sheets": {
+                        "through": "sheet_panels",
+                        "foreign_key": "panel_id",
+                        "list_method": "list_by_panel"
+                    },
+                    "panel_pictures": {
+                        "foreign_key": "panel_id",
+                        "list_method": "list_by_panel"
+                    },
+                    "speech_balloons": {
+                        "foreign_key": "panel_id",
+                        "list_method": "list_by_panel"
+                    },
+                    "ground_pictures": {
+                        "foreign_key": "panel_id",
+                        "list_method": "list_by_panel"
+                    },
+                    "ground_colors": {
+                        "foreign_key": "panel_id",
+                        "list_method": "list_by_panel"
+                    }
+                }
+            },
+            "attributes": {
+                "id": {
                     "type": "number",
+                    "primary_key": 1,
                     "rules": {
-                        "required": true,
                         "number": true
                     }
                 },
@@ -444,26 +673,63 @@ module ApplicationHelper
                         "min": 1
                     }
                 },
-                "quotes": {
-                    "type": "text",
-                    "rules": {}
+                "border": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 0
+                    }
                 },
-                "settings": {
+                "caption": {
                     "type": "text",
                     "rules": {}
                 },
+                "publish": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "panel_visible_items"
+                    }
+                },
+                "author_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
                 "created_at": {
                     "type": "datetime"
                 },
                 "updated_at": {
                     "type": "datetime"
                 }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "method",
+                    "name": "plain_scenario"
+                }
             }
         },
-        "GroundPicture": "ground_picture",
-        "ground_picture": {
-            "class_name": "GroundPicture",
-            "table_name": "ground_pictures",
+        "PanelPicture": "panel_picture",
+        "panel_picture": {
+            "class_name": "PanelPicture",
+            "table_name": "panel_pictures",
+            "associations": {
+                "belongs_to": {
+                    "panel": {
+                        "id_column": "panel_id"
+                    }
+                },
+                "has_many": {}
+            },
             "attributes": {
                 "id": {
                     "type": "number",
@@ -489,31 +755,114 @@ module ApplicationHelper
                     "type": "text",
                     "rules": {}
                 },
-                "repeat": {
+                "x": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "y": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "width": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "height": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "link": {
+                    "type": "text",
+                    "rules": {
+                        "url": true
+                    }
+                },
+                "z": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true,
-                        "range": [
-                            0,
-                            3
-                        ]
+                        "min": 1
                     }
                 },
-                "x": {
+                "t": {
                     "type": "number",
                     "rules": {
                         "required": true,
+                        "number": true,
+                        "min": 0
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "SpeechBalloon": "speech_balloon",
+        "speech_balloon": {
+            "class_name": "SpeechBalloon",
+            "table_name": "speech_balloons",
+            "extend": "classname",
+            "associations": {
+                "belongs_to": {
+                    "panel": {
+                        "id_column": "panel_id"
+                    }
+                },
+                "has_many": {},
+                "has_one": {
+                    "balloon": {
+                        "foreign_key": "speech_balloon_id",
+                        "list_method": "list_by_speech_balloon"
+                    },
+                    "speech": {
+                        "foreign_key": "speech_balloon_id",
+                        "list_method": "list_by_speech_balloon"
+                    }
+                }
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
                         "number": true
                     }
                 },
-                "y": {
+                "panel_id": {
+                    "type": "number",
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "speech_balloon_template_id": {
                     "type": "number",
                     "rules": {
                         "required": true,
                         "number": true
                     }
                 },
+                "classname": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
                 "z": {
                     "type": "number",
                     "rules": {
@@ -530,120 +879,2186 @@ module ApplicationHelper
                         "min": 0
                     }
                 },
+                "settings": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "caption": {
+                    "type": "text",
+                    "rules": {}
+                },
                 "created_at": {
                     "type": "datetime"
                 },
                 "updated_at": {
                     "type": "datetime"
                 }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "method",
+                    "name": "plain_scenario"
+                }
+            }
+        },
+        "Balloon": "balloon",
+        "balloon": {
+            "class_name": "Balloon",
+            "table_name": "balloons",
+            "associations": {
+                "belongs_to": {
+                    "speech_balloon": {
+                        "id_column": "speech_balloon_id"
+                    },
+                    "system_picture": {
+                        "id_column": "system_picture_id"
+                    }
+                },
+                "has_many": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "speech_balloon_id": {
+                    "type": "number",
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "system_picture_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "x": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "y": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "width": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 1
+                    }
+                },
+                "height": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 1
+                    }
+                },
+                "r": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "settings": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "Speech": "speech",
+        "speech": {
+            "class_name": "Speech",
+            "table_name": "speeches",
+            "associations": {
+                "belongs_to": {
+                    "speech_balloon": {
+                        "id_column": "speech_balloon_id"
+                    },
+                    "writing_format": {
+                        "id_column": "writing_format_id"
+                    }
+                },
+                "has_many": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "speech_balloon_id": {
+                    "type": "number",
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "writing_format_id": {
+                    "type": "number",
+                    "source": {
+                        "type": "model",
+                        "model": "writing_format",
+                        "method": "enable_list",
+                        "caption": "caption"
+                    },
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "content": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "font_size": {
+                    "type": "float",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 0
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "speech_font_size_items"
+                    }
+                },
+                "text_align": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "range": [
+                            0,
+                            3
+                        ]
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "speech_text_align_items"
+                    }
+                },
+                "fore_color": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "range": [
+                            0,
+                            16777215
+                        ]
+                    }
+                },
+                "x": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "y": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "width": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 1
+                    }
+                },
+                "height": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 1
+                    }
+                },
+                "quotes": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "settings": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "GroundPicture": "ground_picture",
+        "ground_picture": {
+            "class_name": "GroundPicture",
+            "table_name": "ground_pictures",
+            "associations": {
+                "belongs_to": {
+                    "panel": {
+                        "id_column": "panel_id"
+                    }
+                },
+                "has_many": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "panel_id": {
+                    "type": "number",
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "picture_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "caption": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "repeat": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "range": [
+                            0,
+                            3
+                        ]
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "ground_picture_repeat_items"
+                    }
+                },
+                "x": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "y": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "z": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 1
+                    }
+                },
+                "t": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 0
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "GroundColor": "ground_color",
+        "ground_color": {
+            "class_name": "GroundColor",
+            "table_name": "ground_colors",
+            "associations": {
+                "belongs_to": {
+                    "panel": {
+                        "id_column": "panel_id"
+                    }
+                },
+                "has_many": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "panel_id": {
+                    "type": "number",
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "caption": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "code": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "range": [
+                            0,
+                            16777215
+                        ]
+                    }
+                },
+                "orientation": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "range": [
+                            0,
+                            1
+                        ]
+                    },
+                    "source": {
+                        "type": "magic_number",
+                        "key": "ground_color_orientation_items"
+                    }
+                },
+                "xy": {
+                    "type": "number",
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "wh": {
+                    "type": "number",
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "z": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 1
+                    }
+                },
+                "t": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 0
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "OriginalPicture": "original_picture",
+        "original_picture": {
+            "class_name": "OriginalPicture",
+            "table_name": "original_pictures",
+            "associations": {
+                "belongs_to": {
+                    "artist": {
+                        "id_column": "artist_id"
+                    }
+                },
+                "has_many": {
+                    "pictures": {
+                        "foreign_key": "original_picture_id",
+                        "list_method": "list_by_original_picture"
+                    }
+                },
+                "has_one": {
+                    "resource_picture": {
+                        "foreign_key": "original_picture_id",
+                        "list_method": "list_by_original_picture"
+                    }
+                }
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "ext": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "width": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "height": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "filesize": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "artist_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "md5": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "uploaded_at": {
+                    "type": "datetime"
+                },
+                "published_at": {
+                    "type": "datetime"
+                },
+                "stopped_at": {
+                    "type": "datetime"
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "Picture": "picture",
+        "picture": {
+            "class_name": "Picture",
+            "table_name": "pictures",
+            "associations": {
+                "belongs_to": {
+                    "license": {
+                        "id_column": "license_id"
+                    },
+                    "artist": {
+                        "id_column": "artist_id"
+                    }
+                },
+                "has_many": {},
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "original_picture_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "revision": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "ext": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "width": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "height": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "filesize": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "artist_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "license_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "md5": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "artist_name": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "credit": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "settings": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "classname": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "ResourcePicture": "resource_picture",
+        "resource_picture": {
+            "class_name": "ResourcePicture",
+            "table_name": "resource_pictures",
+            "associations": {
+                "belongs_to": {
+                    "license": {
+                        "id_column": "license_id"
+                    },
+                    "artist": {
+                        "id_column": "artist_id"
+                    }
+                },
+                "has_many": {},
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "original_picture_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "revision": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "ext": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "width": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "height": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "filesize": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "artist_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "license_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "md5": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "artist_name": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "credit": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "settings": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "picture_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "classname": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "SpeechBalloonTemplate": "speech_balloon_template",
+        "speech_balloon_template": {
+            "class_name": "SpeechBalloonTemplate",
+            "table_name": "speech_balloon_templates",
+            "associations": {
+                "belongs_to": {
+                    "system_picture": {
+                        "id_column": "system_picture_id"
+                    }
+                },
+                "has_many": {
+                    "speech_balloons": {
+                        "foreign_key": "speech_balloon_template_id",
+                        "list_method": "list_by_speech_balloon_template"
+                    },
+                    "panels": {
+                        "through": "speech_balloons",
+                        "foreign_key": "speech_balloon_template_id",
+                        "list_method": "list_by_speech_balloon_template"
+                    }
+                },
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "name": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "classname": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "caption": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "t": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true,
+                        "min": 0
+                    }
+                },
+                "system_picture_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "settings": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            },
+            "select": {
+                "method": "enable_list",
+                "caption": {
+                    "type": "column",
+                    "name": "caption"
+                }
+            }
+        },
+        "WritingFormat": "writing_format",
+        "writing_format": {
+            "class_name": "WritingFormat",
+            "table_name": "writing_formats",
+            "associations": {
+                "belongs_to": {
+                    "system_picture": {
+                        "id_column": "system_picture_id"
+                    }
+                },
+                "has_many": {
+                    "speeches": {
+                        "foreign_key": "writing_format_id",
+                        "list_method": "list_by_writing_format"
+                    }
+                },
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "name": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "classname": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "caption": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "system_picture_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "settings": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            },
+            "select": {
+                "method": "enable_list",
+                "caption": {
+                    "type": "column",
+                    "name": "caption"
+                }
+            }
+        },
+        "LicenseGroup": "license_group",
+        "license_group": {
+            "class_name": "LicenseGroup",
+            "table_name": "license_groups",
+            "associations": {
+                "belongs_to": {},
+                "has_many": {
+                    "licenses": {
+                        "foreign_key": "license_group_id",
+                        "list_method": "list_by_license_group"
+                    }
+                },
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "name": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "classname": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "caption": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "url": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "column",
+                    "name": "caption"
+                }
+            }
+        },
+        "License": "license",
+        "license": {
+            "class_name": "License",
+            "table_name": "licenses",
+            "associations": {
+                "belongs_to": {
+                    "license_group": {
+                        "id_column": "license_group_id"
+                    },
+                    "system_picture": {
+                        "id_column": "system_picture_id"
+                    }
+                },
+                "has_many": {
+                    "resource_pictures": {
+                        "foreign_key": "license_id",
+                        "list_method": "list_by_license"
+                    }
+                },
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "license_group_id": {
+                    "type": "number",
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "name": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "caption": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "system_picture_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "url": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "settings": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "credit_pictures": {
+                    "type": "text",
+                    "rules": {}
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        },
+        "Author": "author",
+        "author": {
+            "class_name": "Author",
+            "table_name": "authors",
+            "associations": {
+                "belongs_to": {},
+                "has_many": {
+                    "scrolls": {
+                        "foreign_key": "author_id",
+                        "list_method": "list_by_author"
+                    },
+                    "comics": {
+                        "foreign_key": "author_id",
+                        "list_method": "list_by_author"
+                    },
+                    "stories": {
+                        "foreign_key": "author_id",
+                        "list_method": "list_by_author"
+                    },
+                    "sheets": {
+                        "foreign_key": "author_id",
+                        "list_method": "list_by_author"
+                    },
+                    "panels": {
+                        "foreign_key": "author_id",
+                        "list_method": "list_by_author"
+                    }
+                },
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "name": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "user_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "column",
+                    "name": "name"
+                }
+            }
+        },
+        "Artist": "artist",
+        "artist": {
+            "class_name": "Artist",
+            "table_name": "artists",
+            "associations": {
+                "belongs_to": {},
+                "has_many": {
+                    "resource_pictures": {
+                        "foreign_key": "artist_id",
+                        "list_method": "list_by_artist"
+                    }
+                },
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "name": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "author_id": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            },
+            "select": {
+                "method": "list",
+                "caption": {
+                    "type": "column",
+                    "name": "name"
+                }
+            }
+        },
+        "SystemPicture": "system_picture",
+        "system_picture": {
+            "class_name": "SystemPicture",
+            "table_name": "system_pictures",
+            "associations": {
+                "belongs_to": {},
+                "has_many": {},
+                "has_one": {}
+            },
+            "attributes": {
+                "id": {
+                    "type": "number",
+                    "primary_key": 1,
+                    "rules": {
+                        "number": true
+                    }
+                },
+                "ext": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "width": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "height": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "filesize": {
+                    "type": "number",
+                    "rules": {
+                        "required": true,
+                        "number": true
+                    }
+                },
+                "md5": {
+                    "type": "text",
+                    "rules": {
+                        "required": true
+                    }
+                },
+                "created_at": {
+                    "type": "datetime"
+                },
+                "updated_at": {
+                    "type": "datetime"
+                }
+            }
+        }
+    },
+    "profiles": {
+        "scroll": {
+            "fields": [
+                "id",
+                "title",
+                "description",
+                "visible",
+                "author_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "author"
+                ],
+                "has_many": [
+                    "scroll_panels",
+                    "panels"
+                ]
+            }
+        },
+        "scroll_panel": {
+            "fields": [
+                "id",
+                "scroll_id",
+                "panel_id",
+                "t",
+                "author_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "scroll",
+                    "panel"
+                ],
+                "has_many": []
+            }
+        },
+        "comic": {
+            "fields": [
+                "id",
+                "title",
+                "description",
+                "visible",
+                "author_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "author"
+                ],
+                "has_many": [
+                    "stories"
+                ]
+            }
+        },
+        "story": {
+            "fields": [
+                "id",
+                "comic_id",
+                "title",
+                "description",
+                "t",
+                "visible",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "comic"
+                ],
+                "has_many": [
+                    "story_sheets",
+                    "sheets"
+                ]
+            }
+        },
+        "story_sheet": {
+            "fields": [
+                "id",
+                "story_id",
+                "sheet_id",
+                "t",
+                "author_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "story",
+                    "sheet"
+                ],
+                "has_many": []
+            }
+        },
+        "sheet": {
+            "fields": [
+                "id",
+                "caption",
+                "width",
+                "height",
+                "visible",
+                "author_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "author"
+                ],
+                "has_many": [
+                    "story_sheets",
+                    "stories",
+                    "sheet_panels",
+                    "panels"
+                ]
+            }
+        },
+        "sheet_panel": {
+            "fields": [
+                "id",
+                "sheet_id",
+                "panel_id",
+                "x",
+                "y",
+                "z",
+                "t",
+                "author_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "sheet",
+                    "panel"
+                ],
+                "has_many": []
+            }
+        },
+        "panel": {
+            "fields": [
+                "id",
+                "width",
+                "height",
+                "border",
+                "caption",
+                "publish",
+                "author_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "author"
+                ],
+                "has_many": [
+                    "scroll_panels",
+                    "scrolls",
+                    "sheet_panels",
+                    "sheets",
+                    "panel_pictures",
+                    "speech_balloons",
+                    "ground_pictures",
+                    "ground_colors"
+                ]
+            }
+        },
+        "panel_picture": {
+            "fields": [
+                "id",
+                "panel_id",
+                "picture_id",
+                "caption",
+                "x",
+                "y",
+                "width",
+                "height",
+                "link",
+                "z",
+                "t",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "panel"
+                ],
+                "has_many": []
+            }
+        },
+        "speech_balloon": {
+            "fields": [
+                "id",
+                "panel_id",
+                "speech_balloon_template_id",
+                "classname",
+                "z",
+                "t",
+                "settings",
+                "caption",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "panel"
+                ],
+                "has_many": [],
+                "has_one": [
+                    "balloon",
+                    "speech"
+                ]
+            }
+        },
+        "speech": {
+            "fields": [
+                "id",
+                "speech_balloon_id",
+                "writing_format_id",
+                "content",
+                "font_size",
+                "text_align",
+                "fore_color",
+                "x",
+                "y",
+                "width",
+                "height",
+                "quotes",
+                "settings",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "speech_balloon",
+                    "writing_format"
+                ],
+                "has_many": []
+            }
+        },
+        "balloon": {
+            "fields": [
+                "id",
+                "speech_balloon_id",
+                "system_picture_id",
+                "x",
+                "y",
+                "width",
+                "height",
+                "r",
+                "settings",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "speech_balloon",
+                    "system_picture"
+                ],
+                "has_many": []
+            }
+        },
+        "ground_picture": {
+            "fields": [
+                "id",
+                "panel_id",
+                "picture_id",
+                "caption",
+                "repeat",
+                "x",
+                "y",
+                "z",
+                "t",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "panel"
+                ],
+                "has_many": []
+            }
+        },
+        "ground_color": {
+            "fields": [
+                "id",
+                "panel_id",
+                "caption",
+                "code",
+                "orientation",
+                "xy",
+                "wh",
+                "z",
+                "t",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "panel"
+                ],
+                "has_many": []
+            }
+        },
+        "original_picture": {
+            "fields": [
+                "id",
+                "ext",
+                "width",
+                "height",
+                "filesize",
+                "artist_id",
+                "md5",
+                "uploaded_at",
+                "published_at",
+                "stopped_at",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "artist"
+                ],
+                "has_many": [
+                    "pictures"
+                ],
+                "has_one": [
+                    "resource_picture"
+                ]
+            }
+        },
+        "picture": {
+            "fields": [
+                "id",
+                "original_picture_id",
+                "revision",
+                "ext",
+                "width",
+                "height",
+                "filesize",
+                "artist_id",
+                "license_id",
+                "md5",
+                "artist_name",
+                "credit",
+                "settings",
+                "classname",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "license",
+                    "artist"
+                ],
+                "has_many": [],
+                "has_one": []
+            }
+        },
+        "resource_picture": {
+            "fields": [
+                "id",
+                "original_picture_id",
+                "revision",
+                "ext",
+                "width",
+                "height",
+                "filesize",
+                "artist_id",
+                "license_id",
+                "md5",
+                "artist_name",
+                "credit",
+                "settings",
+                "picture_id",
+                "classname",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "license",
+                    "artist"
+                ],
+                "has_many": [],
+                "has_one": []
+            }
+        },
+        "speech_balloon_template": {
+            "fields": [
+                "id",
+                "name",
+                "classname",
+                "caption",
+                "t",
+                "system_picture_id",
+                "settings",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "system_picture"
+                ],
+                "has_many": [
+                    "speech_balloons",
+                    "panels"
+                ],
+                "has_one": []
+            }
+        },
+        "writing_format": {
+            "fields": [
+                "id",
+                "name",
+                "classname",
+                "caption",
+                "system_picture_id",
+                "settings",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "system_picture"
+                ],
+                "has_many": [
+                    "speeches"
+                ],
+                "has_one": []
+            }
+        },
+        "license_group": {
+            "fields": [
+                "id",
+                "name",
+                "classname",
+                "caption",
+                "url",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [],
+                "has_many": [
+                    "licenses"
+                ],
+                "has_one": []
+            }
+        },
+        "license": {
+            "fields": [
+                "id",
+                "license_group_id",
+                "name",
+                "caption",
+                "system_picture_id",
+                "url",
+                "settings",
+                "credit_pictures",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [
+                    "license_group",
+                    "system_picture"
+                ],
+                "has_many": [
+                    "resource_pictures"
+                ],
+                "has_one": []
+            }
+        },
+        "author": {
+            "fields": [
+                "id",
+                "name",
+                "user_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [],
+                "has_many": [
+                    "scrolls",
+                    "comics",
+                    "stories",
+                    "sheets",
+                    "panels"
+                ],
+                "has_one": []
+            }
+        },
+        "artist": {
+            "fields": [
+                "id",
+                "name",
+                "author_id",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [],
+                "has_many": [
+                    "resource_pictures"
+                ],
+                "has_one": []
+            }
+        },
+        "system_picture": {
+            "fields": [
+                "id",
+                "ext",
+                "width",
+                "height",
+                "filesize",
+                "md5",
+                "created_at",
+                "updated_at"
+            ],
+            "associations": {
+                "belongs_to": [],
+                "has_many": [],
+                "has_one": []
+            }
+        }
+    },
+    "filers": {
+        "scroll": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "column",
+                "name": "title",
+                "link": {
+                    "type": "action",
+                    "name": "play"
+                }
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "default"
+            }
+        },
+        "scroll_panel": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png",
+                "link": {
+                    "type": "none"
+                }
+            },
+            "caption": {
+                "type": "none"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "comic": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "column",
+                "name": "title"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "default"
+            }
+        },
+        "story": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "method",
+                "name": "title_with_t",
+                "link": {
+                    "type": "action",
+                    "name": "play"
+                }
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "default"
+            }
+        },
+        "story_sheet": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png",
+                "link": {
+                    "type": "none"
+                }
+            },
+            "caption": {
+                "type": "none"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "sheet": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "column",
+                "name": "caption",
+                "link": {
+                    "type": "action",
+                    "name": "play"
+                }
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "default"
+            }
+        },
+        "sheet_panel": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png",
+                "link": {
+                    "type": "none"
+                }
+            },
+            "caption": {
+                "type": "none"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "panel": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "method",
+                "name": "plain_scenario",
+                "link": {
+                    "type": "none"
+                }
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "default"
+            }
+        },
+        "panel_picture": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "column",
+                "name": "caption"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "speech_balloon": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "method",
+                "name": "plain_scenario",
+                "link": {
+                    "type": "none"
+                }
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "speech": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "column",
+                "name": "content",
+                "link": {
+                    "type": "none"
+                }
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "balloon": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "none"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "ground_picture": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "column",
+                "name": "caption"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
             }
         },
-        "GroundColor": "ground_color",
         "ground_color": {
-            "class_name": "GroundColor",
-            "table_name": "ground_colors",
-            "attributes": {
-                "id": {
-                    "type": "number",
-                    "primary_key": 1,
-                    "rules": {
-                        "number": true
-                    }
-                },
-                "panel_id": {
-                    "type": "number",
-                    "rules": {
-                        "number": true
-                    }
-                },
-                "caption": {
-                    "type": "text",
-                    "rules": {}
-                },
-                "code": {
-                    "type": "number",
-                    "rules": {
-                        "required": true,
-                        "number": true,
-                        "range": [
-                            0,
-                            16777215
-                        ]
-                    }
-                },
-                "z": {
-                    "type": "number",
-                    "rules": {
-                        "required": true,
-                        "number": true,
-                        "min": 1
-                    }
-                },
-                "t": {
-                    "type": "number",
-                    "rules": {
-                        "required": true,
-                        "number": true,
-                        "min": 0
-                    }
-                },
-                "created_at": {
-                    "type": "datetime"
-                },
-                "updated_at": {
-                    "type": "datetime"
+            "symbol": {
+                "type": "template",
+                "name": "symbol"
+            },
+            "caption": {
+                "type": "column",
+                "name": "caption"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "original_picture": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "method",
+                "name": "revision",
+                "link": {
+                    "type": "action",
+                    "name": "history"
                 }
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "template",
+                "name": "publish"
+            }
+        },
+        "picture": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "column",
+                "name": "revision"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "resource_picture": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "none"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "speech_balloon_template": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "column",
+                "name": "caption"
+            },
+            "summary": {
+                "type": "none"
+            },
+            "edit": {
+                "type": "none"
             }
         },
-        "WritingFormat": "writing_format",
         "writing_format": {
-            "class_name": "WritingFormat",
-            "table_name": "writing_formats",
-            "attributes": {
-                "id": {
-                    "type": "number",
-                    "primary_key": 1,
-                    "rules": {
-                        "number": true
-                    }
-                },
-                "name": {
-                    "type": "text",
-                    "rules": {
-                        "required": true
-                    }
-                },
-                "classname": {
-                    "type": "text",
-                    "rules": {
-                        "required": true
-                    }
-                },
-                "caption": {
-                    "type": "text",
-                    "rules": {
-                        "required": true
-                    }
-                },
-                "system_picture_id": {
-                    "type": "number",
-                    "rules": {
-                        "required": true,
-                        "number": true
-                    }
-                },
-                "settings": {
-                    "type": "text",
-                    "rules": {
-                        "required": true
-                    }
-                },
-                "created_at": {
-                    "type": "datetime"
-                },
-                "updated_at": {
-                    "type": "datetime"
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "column",
+                "name": "caption"
+            },
+            "summary": {
+                "type": "none"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "license_group": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "column",
+                "name": "caption",
+                "link": {
+                    "type": "url_column",
+                    "name": "url"
+                }
+            },
+            "summary": {
+                "type": "none"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "license": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "method",
+                "name": "caption_with_group",
+                "link": {
+                    "type": "url_column",
+                    "name": "url"
                 }
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "none"
+            }
+        },
+        "author": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "column",
+                "name": "name"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "account"
+            }
+        },
+        "artist": {
+            "symbol": {
+                "type": "image",
+                "name": "/assets/item.png"
+            },
+            "caption": {
+                "type": "column",
+                "name": "name"
+            },
+            "summary": {
+                "type": "template",
+                "name": "summary"
+            },
+            "edit": {
+                "type": "account"
+            }
+        },
+        "system_picture": {
+            "symbol": {
+                "type": "picture",
+                "name": "symbol_option"
+            },
+            "caption": {
+                "type": "none"
+            },
+            "summary": {
+                "type": "none"
+            },
+            "edit": {
+                "type": "none"
             }
         }
     },
@@ -836,8 +3251,13 @@ module ApplicationHelper
                 "picture_id": {
                     "column": "picture_id",
                     "type": "hidden",
-                    "label": {
-                        "type": "hidden"
+                    "label": {},
+                    "helpers": {
+                        "popup": {
+                            "path": "panels/popup_helper",
+                            "source": "pictures",
+                            "options": {}
+                        }
                     },
                     "options": {}
                 },
@@ -1452,6 +3872,33 @@ module ApplicationHelper
                         }
                     }
                 },
+                "orientation": {
+                    "column": "orientation",
+                    "type": "select",
+                    "label": {},
+                    "options": {
+                        "source": "magic_number",
+                        "key": "ground_color_orientation_items",
+                        "row_break": true
+                    }
+                },
+                "xy": {
+                    "column": "xy",
+                    "type": "number",
+                    "label": {},
+                    "options": {
+                        "size": 5
+                    }
+                },
+                "wh": {
+                    "column": "wh",
+                    "type": "number",
+                    "label": {},
+                    "options": {
+                        "size": 5,
+                        "row_break": true
+                    }
+                },
                 "z": {
                     "column": "z",
                     "type": "hidden",
@@ -1474,6 +3921,9 @@ module ApplicationHelper
                 "panel_id",
                 "caption",
                 "code",
+                "orientation",
+                "xy",
+                "wh",
                 "z",
                 "t"
             ]