OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
authoryasushiito <yas@pen-chan.jp>
Sat, 12 Apr 2014 06:42:36 +0000 (15:42 +0900)
committeryasushiito <yas@pen-chan.jp>
Sat, 12 Apr 2014 06:42:36 +0000 (15:42 +0900)
44 files changed:
app/assets/javascripts/manifest/work/buckets.js.coffee.erb [new file with mode: 0644]
app/assets/javascripts/manifest/work/forms.js.coffee.erb
app/assets/javascripts/panels.js.coffee
app/assets/javascripts/system.js.coffee
app/controllers/system_controller.rb
app/models/balloon.rb
app/models/comic.rb
app/models/ground_color.rb
app/models/ground_picture.rb
app/models/panel.rb
app/models/panel_picture.rb
app/models/resource_picture.rb
app/models/scroll.rb
app/models/scroll_panel.rb
app/models/sheet.rb
app/models/sheet_panel.rb
app/models/speech.rb
app/models/speech_balloon.rb
app/models/story.rb
app/models/story_sheet.rb
app/views/admins/sessions/new.html.erb
app/views/layouts/application.html.erb
app/views/layouts/guest.html.erb
app/views/layouts/metro.html.erb [deleted file]
app/views/layouts/system.html.erb
app/views/templates/r/form/field/_default.html.erb [moved from app/views/templates/r/form/field/_element.html.erb with 100% similarity]
app/views/templates/r/form/field/_extend.html.erb [new file with mode: 0644]
app/views/users/sessions/new.html.erb
config/locales/pettanr.ja.yml
lib/local_manifest.rb
lib/local_manifest/bucket.rb [new file with mode: 0644]
lib/local_manifest/form.rb
lib/local_manifest/form/field.rb
lib/local_manifest/form/field/field.rb [deleted file]
lib/local_manifest/form/field/label/label.rb
lib/local_manifest/local_manifest.rb
lib/locmare/form.rb
lib/locmare/form/extend_field.rb [new file with mode: 0644]
lib/locmare/form/field.rb
lib/locmare/list_group/list/base.rb
lib/manifest/item/base.rb
lib/peta/content.rb
lib/peta/item.rb
public/local_manifest.json

diff --git a/app/assets/javascripts/manifest/work/buckets.js.coffee.erb b/app/assets/javascripts/manifest/work/buckets.js.coffee.erb
new file mode 100644 (file)
index 0000000..dc1b234
--- /dev/null
@@ -0,0 +1,238 @@
+#マニフェスト\r
+@buckets = {\r
+  scroll: {\r
+  },\r
+  scroll_panel: {\r
+  },\r
+  comic: {\r
+  },\r
+  story: {\r
+  },\r
+  story_sheet: {\r
+  },\r
+  sheet: {\r
+  },\r
+  sheet_panel: {\r
+  },\r
+  panel: {\r
+  },\r
+  panel_picture: {\r
+  },\r
+  speech_balloon: {\r
+    field_names: [\r
+      'speech_balloon.caption',\r
+      'speech_balloon.id',\r
+      'speech_balloon.panel_id',\r
+      'speech_balloon.speech_balloon_template_id',\r
+      'speech_balloon.speech_balloon_template_classname',\r
+      'speech_balloon.z',\r
+      'speech_balloon.t',\r
+      'speech_balloon_template_settings',\r
+      'balloon.r',\r
+      'balloon.x',\r
+      'balloon.y',\r
+      'balloon.width',\r
+      'balloon.height',\r
+      'balloon.id',\r
+      'balloon.speech_balloon_id',\r
+      'balloon.system_picture_id',\r
+      'balloon.speech_balloon_template_id',\r
+      'balloon.speech_balloon_template_classname',\r
+      'balloon.speech_balloon_template_settings',\r
+      'speech.writing_format_id',\r
+      'speech.font_size',\r
+      'speech.text_align',\r
+      'speech.quotes',\r
+      'speech.content',\r
+      'speech.fore_color',\r
+      'speech.id',\r
+      'speech.speech_balloon_id',\r
+      'speech.x',\r
+      'speech.y',\r
+      'speech.width',\r
+      'speech.height',\r
+      'speech.speech_balloon_template_id',\r
+      'speech.speech_balloon_template_classname',\r
+      'speech.speech_balloon_template_settings',\r
+      'speech.writing_format_classname',\r
+      'speech.writing_format_settings',\r
+    ]\r
+  },\r
+  speech: {\r
+  },\r
+  balloon: {\r
+  },\r
+  ground_picture: {\r
+  },\r
+  ground_color: {\r
+  },\r
+  original_picture: {\r
+  },\r
+  picture: {\r
+  },\r
+  resource_picture: {\r
+  },\r
+  speech_balloon_template: {\r
+    column_names: [\r
+      'name', \r
+      'classname', \r
+      'caption', \r
+      't', \r
+      'system_picture_id', \r
+      'settings', \r
+    ],\r
+    extend_settings: {\r
+      circle_speech_balloon_speech_balloon: {\r
+        columns: {\r
+        },\r
+        column_names: [\r
+        ],\r
+      },\r
+      circle_speech_balloon_balloon: {\r
+        columns: {\r
+        },\r
+        column_names: [\r
+        ],\r
+      },\r
+      circle_speech_balloon_speech: {\r
+        columns: {\r
+        },\r
+        column_names: [\r
+        ],\r
+      },\r
+      plain_speech_balloon_speech_balloon: {\r
+        columns: {\r
+        },\r
+        column_names: [\r
+        ],\r
+      },\r
+      square_speech_balloon_speech_balloon: {\r
+        columns: {\r
+        },\r
+        column_names: [\r
+        ],\r
+      },\r
+    }, \r
+    associations: {\r
+      belongs_to: [\r
+        'system_picture',\r
+      ],\r
+    }, \r
+  },\r
+  writing_format: {\r
+    column_names: [\r
+      'name', \r
+      'classname', \r
+      'caption', \r
+      'system_picture_id', \r
+      'settings', \r
+    ],\r
+    extend_settings: {\r
+      pettanr_simple_format_writing_format: {\r
+        columns: {\r
+        },\r
+        column_names: [\r
+        ],\r
+      },\r
+    }, \r
+    associations: {\r
+      belongs_to: [\r
+        'system_picture',\r
+      ],\r
+      has_many: [\r
+        #'speeches.by_writing_format', \r
+      ],\r
+    }, \r
+  },\r
+  license_group: {\r
+    column_names: [\r
+      'name', \r
+      'classname', \r
+      'caption', \r
+      'url', \r
+    ],\r
+    extend_settings: {\r
+      pettanr_pettan_commons_v01_licenses_license: {\r
+        columns: {\r
+          open: {\r
+          },\r
+          commercial: {\r
+          },\r
+          official: {\r
+          },\r
+          attribution: {\r
+          },\r
+          derive: {\r
+          }, \r
+          thumbnail: {\r
+          }, \r
+          gif_convert: {\r
+          }, \r
+          reverse: {\r
+          }, \r
+          sync_vh: {\r
+          }, \r
+          overlap: {\r
+          }, \r
+        },\r
+        column_names: [\r
+          'open', \r
+          'commercial', \r
+          'official', \r
+          'attribution:', \r
+          'derive', \r
+          'thumbnail', \r
+          'gif_convert', \r
+          'reverse', \r
+          'sync_vh', \r
+          'overlap', \r
+        ],\r
+      },\r
+      pettanr_pettan_commons_v01_licenses_credit_picture: {\r
+        columns: {\r
+        },\r
+        column_names: [\r
+          'source_url_btn_id', \r
+          'source_url_off_btn_id', \r
+        ],\r
+      },\r
+    },\r
+    associations: {\r
+      has_many: [\r
+        'licenses.by_license_group', \r
+      ],\r
+    }, \r
+  },\r
+  license: {\r
+    columns: {\r
+      license_group_settings: {\r
+        type: 'extend',\r
+        args: {\r
+          boost_name: 'license_group',\r
+        },\r
+      }, \r
+      credit_picture_settings: {\r
+        type: 'extend',\r
+        args: {\r
+          boost_name: 'credit_picture',\r
+        },\r
+      }, \r
+    },\r
+    column_names: [\r
+      'license_group_id', \r
+      'license_group_classname', \r
+      'name', \r
+      'caption', \r
+      'system_picture_id', \r
+      'url', \r
+      'license_group_settings', \r
+      'credit_picture_settings', \r
+    ],\r
+  },\r
+  author: {\r
+  },\r
+  artist: {\r
+  },\r
+  system_picture: {\r
+  },\r
+}\r
index ee5bbec..3811bb5 100644 (file)
 #マニフェスト\r
 @forms = {\r
-  base: {\r
-    scroll: {\r
-      fields: {\r
-        title: {\r
+  scroll: {\r
+    fields: {\r
+      title: {\r
+        label: {\r
           args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        description: {\r
-          args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text_area',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        visible: {\r
+        row_break: true,\r
+      },\r
+      description: {\r
+        label: {\r
           args: {\r
-            tag: {\r
-              type: 'select',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'text_area',\r
         },\r
-        author_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      visible: {\r
+        tag: {\r
+          type: 'select',\r
+        },\r
+        row_break: true,\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      author_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
-      field_names: [\r
-        'title',\r
-        'description',\r
-        'visible',\r
-        'id',\r
-        'author_id',\r
-      ]\r
     },\r
-    scroll_panel: {\r
-      fields: {\r
-        scroll_id: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+    field_names: [\r
+      'title',\r
+      'description',\r
+      'visible',\r
+      'id',\r
+      'author_id',\r
+    ]\r
+  },\r
+  scroll_panel: {\r
+    fields: {\r
+      scroll_id: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        panel_id: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+      },\r
+      panel_id: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        t: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+      },\r
+      t: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
-      field_names: [\r
-        'scroll_id',\r
-        'panel_id',\r
-        't',\r
-        'id',\r
-      ]\r
     },\r
-    comic: {\r
-      fields: {\r
-        title: {\r
+    field_names: [\r
+      'scroll_id',\r
+      'panel_id',\r
+      't',\r
+      'id',\r
+    ]\r
+  },\r
+  comic: {\r
+    fields: {\r
+      title: {\r
+        label: {\r
           args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        description: {\r
-          args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text_area',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        visible: {\r
+        row_break: true,\r
+      },\r
+      description: {\r
+        label: {\r
           args: {\r
-            tag: {\r
-              type: 'select',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'text_area',\r
         },\r
-        author_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      visible: {\r
+        tag: {\r
+          type: 'select',\r
+        },\r
+        row_break: true,\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      author_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
-      field_names: [\r
-        'title',\r
-        'description',\r
-        'visible',\r
-        'id',\r
-        'author_id',\r
-      ]\r
     },\r
-    story: {\r
-      fields: {\r
-        comic_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+    field_names: [\r
+      'title',\r
+      'description',\r
+      'visible',\r
+      'id',\r
+      'author_id',\r
+    ]\r
+  },\r
+  story: {\r
+    fields: {\r
+      comic_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        title: {\r
-          args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        description: {\r
+      },\r
+      title: {\r
+        label: {\r
           args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text_area',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        visible: {\r
+        tag: {\r
+          type: 'text',\r
+        },\r
+        row_break: true,\r
+      },\r
+      description: {\r
+        label: {\r
           args: {\r
-            tag: {\r
-              type: 'select',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        t: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'text_area',\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      visible: {\r
+        tag: {\r
+          type: 'select',\r
         },\r
-        author_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      t: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      author_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
-      field_names: [\r
-        'comic_id',\r
-        'title',\r
-        'description',\r
-        'visible',\r
-        't',\r
-        'id',\r
-        'author_id',\r
-      ]\r
     },\r
-    story_sheet: {\r
-      fields: {\r
-        story_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+    field_names: [\r
+      'comic_id',\r
+      'title',\r
+      'description',\r
+      'visible',\r
+      't',\r
+      'id',\r
+      'author_id',\r
+    ]\r
+  },\r
+  story_sheet: {\r
+    fields: {\r
+      story_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        sheet_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        t: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+      },\r
+      sheet_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+      },\r
+      t: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
-      field_names: [\r
-        'story_id',\r
-        'sheet_id',\r
-        't',\r
-        'id',\r
-      ]\r
     },\r
-    sheet: {\r
-      fields: {\r
-        caption: {\r
+    field_names: [\r
+      'story_id',\r
+      'sheet_id',\r
+      't',\r
+      'id',\r
+    ]\r
+  },\r
+  sheet: {\r
+    fields: {\r
+      caption: {\r
+        label: {\r
           args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        width: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        height: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true, \r
-          },\r
+        row_break: true,\r
+      },\r
+      width: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        visible: {\r
-          args: {\r
-            tag: {\r
-              type: 'select',\r
-            },\r
-            row_break: true,\r
-          },\r
+      },\r
+      height: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true, \r
+      },\r
+      visible: {\r
+        tag: {\r
+          type: 'select',\r
         },\r
-        author_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      author_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
-      field_names: [\r
-        'caption',\r
-        'width',\r
-        'height',\r
-        'visible',\r
-        'id',\r
-        'author_id',\r
-      ]\r
     },\r
-    sheet_panel: {\r
-      fields: {\r
-        sheet_id: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+    field_names: [\r
+      'caption',\r
+      'width',\r
+      'height',\r
+      'visible',\r
+      'id',\r
+      'author_id',\r
+    ]\r
+  },\r
+  sheet_panel: {\r
+    fields: {\r
+      sheet_id: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        panel_id: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+      },\r
+      panel_id: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        x: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+      },\r
+      x: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        y: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+      },\r
+      y: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        z: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      z: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        t: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      t: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
-      field_names: [\r
-        'sheet_id',\r
-        'panel_id',\r
-        'x',\r
-        'y',\r
-        'z',\r
-        't',\r
-        'id',\r
-      ]\r
     },\r
-    panel: {\r
-      fields: {\r
-        caption: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+    field_names: [\r
+      'sheet_id',\r
+      'panel_id',\r
+      'x',\r
+      'y',\r
+      'z',\r
+      't',\r
+      'id',\r
+    ]\r
+  },\r
+  panel: {\r
+    fields: {\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        width: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      width: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        height: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true, \r
-          },\r
+      },\r
+      height: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        border: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+        row_break: true, \r
+      },\r
+      border: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        publish: {\r
-          args: {\r
-            tag: {\r
-              type: 'select',\r
-            },\r
-            row_break: true,\r
-          },\r
+      },\r
+      publish: {\r
+        tag: {\r
+          type: 'select',\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        author_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      author_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
-      field_names: [\r
-        'caption',\r
-        'width',\r
-        'height',\r
-        'border',\r
-        'publish',\r
-        'id',\r
-        'author_id',\r
-      ]\r
     },\r
-    panel_picture: {\r
-      fields: {\r
-        caption: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+    field_names: [\r
+      'caption',\r
+      'width',\r
+      'height',\r
+      'border',\r
+      'publish',\r
+      'id',\r
+      'author_id',\r
+    ]\r
+  },\r
+  panel_picture: {\r
+    fields: {\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        x: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      x: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        y: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+      },\r
+      y: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        width: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            helpers: {\r
-              size: {\r
-                type: 'size',\r
-                args: {\r
-                  dom_class: 'panel_picture_width_tool', \r
-                },\r
-              },\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      width: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        height: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            helpers: {\r
-              size: {\r
-                type: 'size',\r
-                args: {\r
-                  dom_class: 'panel_picture_height_tool', \r
-                },\r
-              },\r
+        helpers: {\r
+          size: {\r
+            type: 'size',\r
+            args: {\r
+              dom_class: 'panel_picture_width_tool', \r
             },\r
-            row_break: true,\r
           },\r
         },\r
-        link: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      height: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
+        helpers: {\r
+          size: {\r
+            type: 'size',\r
+            args: {\r
+              dom_class: 'panel_picture_height_tool', \r
             },\r
           },\r
         },\r
-        panel_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      link: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        picture_id: {\r
-          args: {\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-            helpers: {\r
-              popup: {\r
-                type: 'popup',\r
-                args: {\r
-                  source: 'pictures',\r
-                },\r
-              },\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        z: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        t: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
+      },\r
+      panel_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      picture_id: {\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+        helpers: {\r
+          popup: {\r
+            type: 'popup',\r
+            args: {\r
+              source: 'pictures',\r
             },\r
           },\r
         },\r
       },\r
-      field_names: [\r
-        'caption',\r
-        'x',\r
-        'y',\r
-        'width',\r
-        'height',\r
-        'link',\r
-        'id',\r
-        'panel_id',\r
-        'picture_id',\r
-        'z',\r
-        't',\r
-      ]\r
+      z: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      t: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
     },\r
-    speech_balloon: {\r
-      fields: {\r
-        'speech_balloon.id': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+    field_names: [\r
+      'caption',\r
+      'x',\r
+      'y',\r
+      'width',\r
+      'height',\r
+      'link',\r
+      'id',\r
+      'panel_id',\r
+      'picture_id',\r
+      'z',\r
+      't',\r
+    ]\r
+  },\r
+  speech_balloon: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'speech_balloon.panel_id': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech_balloon.speech_balloon_template_id': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      panel_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'speech_balloon.caption': {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech_balloon.z': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      speech_balloon_template_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'speech_balloon.t': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech_balloon.speech_balloon_template_classname': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        'speech_balloon.speech_balloon_template_settings': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      z: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'balloon.id': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'balloon.speech_balloon_id': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      t: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'balloon.speech_balloon_template_id': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'balloon.system_picture_id': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      speech_balloon_template_classname: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'balloon.r': {\r
-          type: 'part',\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            helpers: {\r
-              tail_angle: {\r
-                type: 'size',\r
-                args: {\r
-                },\r
-              },\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'balloon.x': {\r
-          type: 'part',\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+      },\r
+      speech_balloon_template_settings: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'balloon.y': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-            },\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'balloon.width': {\r
-          type: 'part',\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+      },\r
+    },\r
+    field_names: [\r
+      'caption',\r
+      'id',\r
+      'panel_id',\r
+      'speech_balloon_template_id',\r
+      'speech_balloon_template_classname',\r
+      'z',\r
+      't',\r
+      'speech_balloon_template_settings',\r
+    ],\r
+  },\r
+  balloon: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'balloon.height': {\r
-          type: 'part',\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'balloon.speech_balloon_template_classname': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      speech_balloon_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'balloon.speech_balloon_template_settings': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech.id': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      speech_balloon_template_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'speech.speech_balloon_id': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech.speech_balloon_template_id': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      system_picture_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'speech.x': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech.y': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      r: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        'speech.width': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
+        helpers: {\r
+          tail_angle: {\r
+            type: 'size',\r
+            args: {\r
             },\r
           },\r
         },\r
-        'speech.height': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      x: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        'speech.writing_format_id': {\r
-          type: 'part',\r
-          args: {\r
-            tag: {\r
-              type: 'select',\r
-            },\r
-          },\r
+      },\r
+      y: {\r
+        label: {\r
+        },\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      width: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+      },\r
+      height: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      speech_balloon_template_classname: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech.font_size': {\r
-          type: 'part',\r
+      },\r
+      speech_balloon_template_settings: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+    },\r
+    field_names: [\r
+      'r',\r
+      'x',\r
+      'y',\r
+      'width',\r
+      'height',\r
+      'id',\r
+      'speech_balloon_id',\r
+      'system_picture_id',\r
+      'speech_balloon_template_id',\r
+      'speech_balloon_template_classname',\r
+      'speech_balloon_template_settings',\r
+    ],\r
+  },\r
+  speech: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      speech_balloon_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      speech_balloon_template_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      x: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      y: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      width: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      height: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      writing_format_id: {\r
+        tag: {\r
+          type: 'select',\r
+        },\r
+      },\r
+      font_size: {\r
+        tag: {\r
+          type: 'select',\r
+        },\r
+        row_break: true,\r
+      },\r
+      text_align: {\r
+        tag: {\r
+          type: 'select',\r
+        },\r
+      },\r
+      quotes: {\r
+        tag: {\r
+          type: 'text',\r
+        },\r
+      },\r
+      content: {\r
+        label: {\r
           args: {\r
-            tag: {\r
-              type: 'select',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        'speech.text_align': {\r
-          type: 'part',\r
+        tag: {\r
+          type: 'text_area',\r
           args: {\r
-            tag: {\r
-              type: 'select',\r
+            options: {\r
+              size: '45x5', \r
             },\r
           },\r
         },\r
-        'speech.quotes': {\r
-          type: 'part',\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-          },\r
+      },\r
+      fore_color: {\r
+        label: {\r
+          row_break: true,\r
         },\r
-        'speech.content': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text_area',\r
-              args: {\r
-                options: {\r
-                  size: '45x5', \r
-                },\r
-              },\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech.fore_color': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              row_break: true,\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-            helpers: {\r
-              color: {\r
-                type: 'color',\r
-                args: {\r
-                  wrapper: 'speech-fore_color-wrap',\r
-                },\r
-              },\r
+        helpers: {\r
+          color: {\r
+            type: 'color',\r
+            args: {\r
+              wrapper: 'speech-fore_color-wrap',\r
             },\r
           },\r
         },\r
-        'speech.speech_balloon_template_classname': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      speech_balloon_template_classname: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'speech.writing_format_classname': {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        'speech.speech_balloon_template_settings': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      writing_format_classname: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        'speech.writing_format_settings': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      speech_balloon_template_settings: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      writing_format_settings: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
       },\r
     },\r
-    ground_picture: {\r
-      fields: {\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+    field_names: [\r
+      'writing_format_id',\r
+      'font_size',\r
+      'text_align',\r
+      'quotes',\r
+      'content',\r
+      'fore_color',\r
+      'id',\r
+      'speech_balloon_id',\r
+      'x',\r
+      'y',\r
+      'width',\r
+      'height',\r
+      'speech_balloon_template_id',\r
+      'speech_balloon_template_classname',\r
+      'speech_balloon_template_settings',\r
+      'writing_format_classname',\r
+      'writing_format_settings',\r
+    ],\r
+  },\r
+  ground_picture: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        panel_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        picture_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      panel_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        caption: {\r
+      },\r
+      picture_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
+        },\r
+        row_break: true,\r
+      },\r
+      repeat: {\r
+        tag: {\r
+          type: 'select',\r
           args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
+            source: 'magic_number',\r
+            key: 'ground_picture_repeat_items',\r
           },\r
         },\r
-        repeat: {\r
+        row_break: true,\r
+      },\r
+      x: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+      },\r
+      y: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      z: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      t: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+    },\r
+    field_names: [\r
+      'caption',\r
+      'repeat',\r
+      'x',\r
+      'y',\r
+      'z',\r
+      't',\r
+      'id',\r
+      'panel_id',\r
+      'picture_id',\r
+    ]\r
+  },\r
+  ground_color: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      panel_id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
+        },\r
+        row_break: true,\r
+      },\r
+      code: {\r
+        label: {\r
           args: {\r
-            tag: {\r
-              type: 'select',\r
-              args: {\r
-                source: 'magic_number',\r
-                key: 'ground_picture_repeat_items',\r
-              },\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        x: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+        helpers: {\r
+          color: {\r
+            type: 'color',\r
+            args: {\r
+              wrapper: 'ground_color-code-wrap'\r
             },\r
-          },\r
+          }\r
+        },\r
+        row_break: true,\r
+      },\r
+      orientation: {\r
+        tag: {\r
+          type: 'select',\r
+        },\r
+        row_break: true,\r
+      },\r
+      xy: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+      },\r
+      wh: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      z: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      t: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+    },\r
+    field_names: [\r
+      'id',\r
+      'panel_id',\r
+      'caption',\r
+      'code',\r
+      'orientation',\r
+      'xy',\r
+      'wh',\r
+      'z',\r
+      't',\r
+    ]\r
+  },\r
+  speech_balloon_template: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
+        },\r
+        tag: {\r
+          type: 'hidden',\r
+        },\r
+      },\r
+      name: {\r
+        tag: {\r
+          type: 'text',\r
+        },\r
+        row_break: true,\r
+      },\r
+      classname: {\r
+        tag: {\r
+          type: 'text',\r
+        },\r
+        row_break: true,\r
+      },\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
+        },\r
+        row_break: true,\r
+      },\r
+      t: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      system_picture_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      settings: {\r
+        tag: {\r
+          type: 'text',\r
+        },\r
+        row_break: true,\r
+      },\r
+    },\r
+    field_names: [\r
+      'id',\r
+      'name',\r
+      'classname',\r
+      'caption',\r
+      't',\r
+      'system_picture_id',\r
+      'settings',\r
+    ]\r
+  },\r
+  writing_format: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        y: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        z: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      },\r
+      name: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        t: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      classname: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'caption',\r
-        'repeat',\r
-        'x',\r
-        'y',\r
-        'z',\r
-        't',\r
-        'id',\r
-        'panel_id',\r
-        'picture_id',\r
-      ]\r
-    },\r
-    ground_color: {\r
-      fields: {\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        panel_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      system_picture_id: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        caption: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      settings: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        code: {\r
-          args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-            helpers: {\r
-              color: {\r
-                type: 'color',\r
-                args: {\r
-                  wrapper: 'ground_color-code-wrap'\r
-                },\r
-              }\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+    },\r
+    field_names: [\r
+      'id',\r
+      'name',\r
+      'classname',\r
+      'caption',\r
+      'system_picture_id',\r
+      'settings',\r
+    ]\r
+  },\r
+  license_group: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        orientation: {\r
-          args: {\r
-            tag: {\r
-              type: 'select',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        xy: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-          },\r
+      },\r
+      name: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        wh: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      classname: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        z: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        t: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      url: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'id',\r
-        'panel_id',\r
-        'caption',\r
-        'code',\r
-        'orientation',\r
-        'xy',\r
-        'wh',\r
-        'z',\r
-        't',\r
-      ]\r
     },\r
-    speech_balloon_template: {\r
-      fields: {\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+    field_names: [\r
+      'id',\r
+      'name',\r
+      'classname',\r
+      'caption',\r
+      'url',\r
+    ]\r
+  },\r
+  license: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        name: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        classname: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+      },\r
+      license_group_id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        caption: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        t: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+      },\r
+      license_group_classname: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        system_picture_id: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      name: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        settings: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      caption: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'id',\r
-        'name',\r
-        'classname',\r
-        'caption',\r
-        't',\r
-        'system_picture_id',\r
-        'settings',\r
-      ]\r
-    },\r
-    writing_format: {\r
-      fields: {\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      system_picture_id: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        name: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      url: {\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        classname: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      license_group_settings: {\r
+        boost_name: 'license_group',\r
+        row_break: true,\r
+      },\r
+      credit_picture_settings: {\r
+        boost_name: 'credit_picture',\r
+        row_break: true,\r
+      },\r
+    },\r
+    field_names: [\r
+      'id',\r
+      'license_group_id',\r
+      'license_group_classname',\r
+      'name',\r
+      'caption',\r
+      'system_picture_id',\r
+      'url',\r
+      'license_group_settings',\r
+      'credit_picture_settings',\r
+    ]\r
+  }\r
+  author: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        caption: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        system_picture_id: {\r
+      },\r
+      name: {\r
+        label: {\r
           args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        settings: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'text',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'id',\r
-        'name',\r
-        'classname',\r
-        'caption',\r
-        'system_picture_id',\r
-        'settings',\r
-      ]\r
     },\r
-    license_group: {\r
-      fields: {\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+    field_names: [\r
+      'id',\r
+      'name',\r
+    ]\r
+  },\r
+  artist: {\r
+    fields: {\r
+      id: {\r
+        label: {\r
+          type: 'none',\r
         },\r
-        name: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'hidden',\r
         },\r
-        classname: {\r
+      },\r
+      name: {\r
+        label: {\r
           args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
             row_break: true,\r
           },\r
         },\r
-        caption: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        tag: {\r
+          type: 'text',\r
         },\r
-        url: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+    },\r
+    field_names: [\r
+      'id',\r
+      'name',\r
+    ]\r
+  },\r
+  circle_speech_balloon_speech_speech_balloon_template: {\r
+    fields: {\r
+      r: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'id',\r
-        'name',\r
-        'classname',\r
-        'caption',\r
-        'url',\r
-      ]\r
     },\r
-    license: {\r
-      fields: {\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+  },\r
+  pettanr_creative_commons_v30_licenses_license: {\r
+    fields: {\r
+      open: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        license_group_id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+        row_break: true,\r
+      },\r
+      commercial: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        license_group_classname: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      official: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        name: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      attribution: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        caption: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      derive: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      thumbnail: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      gif_convert: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      reverse: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      sync_vh: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      overlap: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+    },\r
+    field_names: [\r
+      'open', \r
+      'commercial', \r
+      'official', \r
+      'attribution:', \r
+      'derive', \r
+      'thumbnail', \r
+      'gif_convert', \r
+      'reverse', \r
+      'sync_vh', \r
+      'overlap', \r
+    ],\r
+  },\r
+  pettanr_creative_commons_v30_licenses_credit_picture: {\r
+    fields: {\r
+      source_url_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      source_url_off_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+    },\r
+    field_names: [\r
+      'source_url_btn_id', \r
+      'source_url_off_btn_id', \r
+    ],\r
+  },\r
+  pettanr_pettan_commons_v01_licenses_license: {\r
+    fields: {\r
+      open: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        system_picture_id: {\r
-          args: {\r
-            tag: {\r
-              type: 'number',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      commercial: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        url: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      official: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        license_group_settings: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      attribution: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        credit_picture_settings: {\r
-          args: {\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      derive: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      thumbnail: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      gif_convert: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      reverse: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      sync_vh: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      overlap: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+    },\r
+    field_names: [\r
+      'open', \r
+      'commercial', \r
+      'official', \r
+      'attribution:', \r
+      'derive', \r
+      'thumbnail', \r
+      'gif_convert', \r
+      'reverse', \r
+      'sync_vh', \r
+      'overlap', \r
+    ],\r
+  },\r
+  pettanr_pettan_commons_v01_licenses_credit_picture: {\r
+    fields: {\r
+      source_url_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      source_url_off_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+    },\r
+    field_names: [\r
+      'source_url_btn_id', \r
+      'source_url_off_btn_id', \r
+    ],\r
+  },\r
+  pettanr_pettan_protected_v01_licenses_license: {\r
+    fields: {\r
+      open: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'id',\r
-        'license_group_id',\r
-        'license_group_classname',\r
-        'name',\r
-        'caption',\r
-        'system_picture_id',\r
-        'url',\r
-        'license_group_settings',\r
-        'credit_picture_settings',\r
-      ]\r
-    }\r
-    author: {\r
-      fields: {\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+      commercial: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        name: {\r
-          args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      official: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      attribution: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'id',\r
-        'name',\r
-      ]\r
+      derive: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      thumbnail: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      gif_convert: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      reverse: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      sync_vh: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      overlap: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
     },\r
-    artist: {\r
-      fields: {\r
-        id: {\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+    field_names: [\r
+      'open', \r
+      'commercial', \r
+      'official', \r
+      'attribution:', \r
+      'derive', \r
+      'thumbnail', \r
+      'gif_convert', \r
+      'reverse', \r
+      'sync_vh', \r
+      'overlap', \r
+    ],\r
+  },\r
+  pettanr_pettan_protected_v01_licenses_credit_picture: {\r
+    fields: {\r
+      source_url_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      source_url_off_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+    },\r
+    field_names: [\r
+      'source_url_btn_id', \r
+      'source_url_off_btn_id', \r
+    ],\r
+  },\r
+  pettanr_pettan_public_v01_licenses_license: {\r
+    fields: {\r
+      open: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
-        name: {\r
-          args: {\r
-            label: {\r
-              args: {\r
-                row_break: true,\r
-              },\r
-            },\r
-            tag: {\r
-              type: 'text',\r
-            },\r
-            row_break: true,\r
-          },\r
+        row_break: true,\r
+      },\r
+      commercial: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'id',\r
-        'name',\r
-      ]\r
+      official: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      attribution: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      derive: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      thumbnail: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      gif_convert: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      reverse: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      sync_vh: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      overlap: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
     },\r
+    field_names: [\r
+      'open', \r
+      'commercial', \r
+      'official', \r
+      'attribution:', \r
+      'derive', \r
+      'thumbnail', \r
+      'gif_convert', \r
+      'reverse', \r
+      'sync_vh', \r
+      'overlap', \r
+    ],\r
   },\r
-  extend: {\r
-    CircleSpeechBalloon: {\r
-      base: 'speech_balloon',\r
-      fields: {\r
-      },\r
-      field_names: [\r
-        'speech_balloon.caption',\r
-        'balloon.r',\r
-        'balloon.x',\r
-        'balloon.y',\r
-        'balloon.width',\r
-        'balloon.height',\r
-        'balloon.id',\r
-        'balloon.speech_balloon_id',\r
-        'balloon.system_picture_id',\r
-        'balloon.speech_balloon_template_id',\r
-        'balloon.speech_balloon_template_classname',\r
-        'balloon.speech_balloon_template_settings',\r
-        'speech.writing_format_id',\r
-        'speech.font_size',\r
-        'speech.text_align',\r
-        'speech.quotes',\r
-        'speech.content',\r
-        'speech.fore_color',\r
-        'speech.id',\r
-        'speech.speech_balloon_id',\r
-        'speech.x',\r
-        'speech.y',\r
-        'speech.width',\r
-        'speech.height',\r
-        'speech.speech_balloon_template_id',\r
-        'speech.speech_balloon_template_classname',\r
-        'speech.speech_balloon_template_settings',\r
-        'speech.writing_format_classname',\r
-        'speech.writing_format_settings',\r
-        'speech_balloon.id',\r
-        'speech_balloon.panel_id',\r
-        'speech_balloon.speech_balloon_template_id',\r
-        'speech_balloon.speech_balloon_template_classname',\r
-        'speech_balloon.z',\r
-        'speech_balloon.t',\r
-        'speech_balloon.speech_balloon_template_settings',\r
-      ]\r
+  pettanr_pettan_public_v01_licenses_credit_picture: {\r
+    fields: {\r
+      source_url_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      source_url_off_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
     },\r
-    PlainSpeechBalloon: {\r
-      base: 'speech_balloon',\r
-      fields: {\r
-        'balloon.r': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+    field_names: [\r
+      'source_url_btn_id', \r
+      'source_url_off_btn_id', \r
+    ],\r
+  },\r
+  pettanr_public_domain_v01_licenses_license: {\r
+    fields: {\r
+      open: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      commercial: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      official: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      attribution: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'speech_balloon.caption',\r
-        'balloon.r',\r
-        'balloon.x',\r
-        'balloon.y',\r
-        'balloon.width',\r
-        'balloon.height',\r
-        'balloon.id',\r
-        'balloon.speech_balloon_id',\r
-        'balloon.system_picture_id',\r
-        'balloon.speech_balloon_template_id',\r
-        'balloon.speech_balloon_template_classname',\r
-        'balloon.speech_balloon_template_settings',\r
-        'speech.writing_format_id',\r
-        'speech.font_size',\r
-        'speech.text_align',\r
-        'speech.quotes',\r
-        'speech.content',\r
-        'speech.fore_color',\r
-        'speech.id',\r
-        'speech.speech_balloon_id',\r
-        'speech.x',\r
-        'speech.y',\r
-        'speech.width',\r
-        'speech.height',\r
-        'speech.speech_balloon_template_id',\r
-        'speech.speech_balloon_template_classname',\r
-        'speech.speech_balloon_template_settings',\r
-        'speech.writing_format_classname',\r
-        'speech.writing_format_settings',\r
-        'speech_balloon.id',\r
-        'speech_balloon.panel_id',\r
-        'speech_balloon.speech_balloon_template_id',\r
-        'speech_balloon.speech_balloon_template_classname',\r
-        'speech_balloon.z',\r
-        'speech_balloon.t',\r
-        'speech_balloon.speech_balloon_template_settings',\r
-      ]\r
+      derive: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      thumbnail: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      gif_convert: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      reverse: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      sync_vh: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      overlap: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
     },\r
-    SquareSpeechBalloon: {\r
-      base: 'speech_balloon',\r
-      fields: {\r
-        'balloon.r': {\r
-          type: 'part',\r
-          args: {\r
-            label: {\r
-              type: 'none',\r
-            },\r
-            tag: {\r
-              type: 'hidden',\r
-            },\r
-          },\r
+    field_names: [\r
+      'open', \r
+      'commercial', \r
+      'official', \r
+      'attribution:', \r
+      'derive', \r
+      'thumbnail', \r
+      'gif_convert', \r
+      'reverse', \r
+      'sync_vh', \r
+      'overlap', \r
+    ],\r
+  },\r
+  pettanr_public_domain_v01_licenses_credit_picture: {\r
+    fields: {\r
+      source_url_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      source_url_off_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+    },\r
+    field_names: [\r
+      'source_url_btn_id', \r
+      'source_url_off_btn_id', \r
+    ],\r
+  },\r
+  pettanr_unknown_v01_licenses_license: {\r
+    fields: {\r
+      open: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      commercial: {\r
+        tag: {\r
+          type: 'number',\r
         },\r
+        row_break: true,\r
       },\r
-      field_names: [\r
-        'speech_balloon.caption',\r
-        'balloon.r',\r
-        'balloon.x',\r
-        'balloon.y',\r
-        'balloon.width',\r
-        'balloon.height',\r
-        'balloon.id',\r
-        'balloon.speech_balloon_id',\r
-        'balloon.system_picture_id',\r
-        'balloon.speech_balloon_template_id',\r
-        'balloon.speech_balloon_template_classname',\r
-        'balloon.speech_balloon_template_settings',\r
-        'speech.writing_format_id',\r
-        'speech.font_size',\r
-        'speech.text_align',\r
-        'speech.quotes',\r
-        'speech.content',\r
-        'speech.fore_color',\r
-        'speech.id',\r
-        'speech.speech_balloon_id',\r
-        'speech.x',\r
-        'speech.y',\r
-        'speech.width',\r
-        'speech.height',\r
-        'speech.speech_balloon_template_id',\r
-        'speech.speech_balloon_template_classname',\r
-        'speech.speech_balloon_template_settings',\r
-        'speech.writing_format_classname',\r
-        'speech.writing_format_settings',\r
-        'speech_balloon.id',\r
-        'speech_balloon.panel_id',\r
-        'speech_balloon.speech_balloon_template_id',\r
-        'speech_balloon.speech_balloon_template_classname',\r
-        'speech_balloon.z',\r
-        'speech_balloon.t',\r
-        'speech_balloon.speech_balloon_template_settings',\r
-      ]\r
+      official: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      attribution: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      },\r
+      derive: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      thumbnail: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      gif_convert: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      reverse: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      sync_vh: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      overlap: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
     },\r
-  }\r
+    field_names: [\r
+      'open', \r
+      'commercial', \r
+      'official', \r
+      'attribution:', \r
+      'derive', \r
+      'thumbnail', \r
+      'gif_convert', \r
+      'reverse', \r
+      'sync_vh', \r
+      'overlap', \r
+    ],\r
+  },\r
+  pettanr_unknown_v01_licenses_credit_picture: {\r
+    fields: {\r
+      source_url_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+      source_url_off_btn_id: {\r
+        tag: {\r
+          type: 'number',\r
+        },\r
+        row_break: true,\r
+      }, \r
+    },\r
+    field_names: [\r
+      'source_url_btn_id', \r
+      'source_url_off_btn_id', \r
+    ],\r
+  },\r
 }\r
 @repeat_texts = ['repeat', 'repeat-x', 'repeat-y', 'no-repeat']\r
 \r
index efa5151..698bff6 100644 (file)
@@ -20,6 +20,7 @@ $ ->
     profilers: window.profilers,\r
     filers: window.filers,\r
     forms: window.forms,\r
+    buckets: window.buckets,\r
   }\r
   j = JSON.stringify(manifest, undefined, 2)\r
   $('#pettanr-manifest').val(j)\r
index 08c9c07..6c1396a 100644 (file)
@@ -11,6 +11,7 @@ $ ->
     profilers: window.profilers,\r
     filers: window.filers,\r
     forms: window.forms,\r
+    buckets: window.buckets,\r
   }\r
   j = JSON.stringify(manifest, undefined, 2)\r
   $('#pettanr-manifest').val(j)\r
index e2fe608..59224a4 100644 (file)
@@ -74,18 +74,4 @@ class SystemController < ApplicationController
     end
   end
   
-  def production_layout
-    MagicNumber['test_layout'] = false
-    respond_to do |format|
-      format.html { render text: 'production', status: 200 }
-    end
-  end
-  
-  def test_layout
-    MagicNumber['test_layout'] = 'test'
-    respond_to do |format|
-      format.html { render text: 'test', status: 200 }
-    end
-  end
-  
 end
index 279d9f8..f3f9460 100644 (file)
@@ -33,7 +33,7 @@ self.system_picture_id = 1
     self.speech_balloon.speech_balloon_template.symbol_option
   end
   
-  def self.list_where
+  def self.public_list_where
     'panels.publish > 0'
   end
   
index 5204201..5b7f9dc 100644 (file)
@@ -22,8 +22,14 @@ class Comic < Peta::Content
   end
   
   def visible? operators
-    return false unless super
-    self.visible > 0
+    case super
+    when nil # super return
+      return true
+    when false
+      return false
+    else
+      self.visible > 0
+    end
   end
   
   def comic_stories_count
@@ -33,7 +39,7 @@ class Comic < Peta::Content
   def symbol_filename
   end
   
-  def self.list_where
+  def self.public_list_where
     'comics.visible > 0'
   end
   
index a73571a..cb16e67 100644 (file)
@@ -105,7 +105,7 @@ class GroundColor < Peta::Element
     r
   end
   
-  def self.list_where
+  def self.public_list_where
     'panels.publish > 0'
   end
   
index aaa6840..d0e9833 100644 (file)
@@ -85,7 +85,7 @@ class GroundPicture < Peta::Element
     @@repeat_texts[self.repeat]
   end
   
-  def self.list_where
+  def self.public_list_where
     'panels.publish > 0'
   end
   
index b601cb0..d19cc62 100644 (file)
@@ -30,9 +30,15 @@ class Panel < Peta::Root
   end
   
   def visible? operators
-    return true if super
-    return true if self.new_record?
-    self.publish?
+    case super
+    when nil # super return
+      return true
+    when false
+      return false
+    else
+      return true if self.new_record?
+      self.publish?
+    end
   end
   
   def usable? operators
@@ -58,7 +64,7 @@ class Panel < Peta::Root
     }
   end
   
-  def self.list_where
+  def self.public_list_where
     'panels.publish > 0'
   end
   
index 54ddf44..c64149a 100644 (file)
@@ -100,7 +100,7 @@ class PanelPicture < Peta::Element
     self.picture.symbol_option
   end
   
-  def self.list_where
+  def self.public_list_where
     'panels.publish > 0'
   end
   
index bd97c7d..f2052c2 100644 (file)
@@ -54,7 +54,7 @@ class ResourcePicture < Peta::Content
   end
   
   def thumbnail(imager)
-    tw, th = ResourcePicture.fix_size_both(MagicNumber['thumbnail_width'], MagicNumber['thumbnail_height'], rimg.columns, rimg.rows)
+    tw, th = ResourcePicture.fix_size_both(Manifest.manifest.magic_numbers['thumbnail_width'], Manifest.manifest.magic_numbers['thumbnail_height'], rimg.columns, rimg.rows)
     ResourcePicture.resize(rimg.to_blob, tw, th).to_blob
   end
   
index 10baaef..e7c9f55 100644 (file)
@@ -17,15 +17,21 @@ class Scroll < Peta::Binder
   end
   
   def visible? operators
-    return false unless super
-    self.visible > 0
+    case super
+    when nil # super return
+      return true
+    when false
+      return false
+    else
+      self.visible > 0
+    end
   end
   
   def scroll_panels_count
     ScrollPanel.where(['scroll_panels.scroll_id = ?', self.id]).count
   end
   
-  def self.list_order
+  def self.public_list_order
     'scrolls.updated_at desc'
   end
   
index 8dab5bb..7207179 100644 (file)
@@ -20,7 +20,7 @@ class ScrollPanel < Peta::Leaf
     self.author_id = operators.author.id
   end
   
-  def self.list_order
+  def self.public_list_order
     'scroll_panels.updated_at desc'
   end
   
index ffcb3dd..a07bbea 100644 (file)
@@ -41,9 +41,14 @@ class Sheet < Peta::Root
   end
   
   def visible? operators
-    return false unless super
-    return true if self.new_record?
-    self.visible > 0
+    case super
+    when nil # super return
+      return true
+    when false
+      return false
+    else
+      self.visible > 0
+    end
   end
   
   def usable? operators
@@ -53,7 +58,7 @@ class Sheet < Peta::Root
   def symbol_filename
   end
   
-  def self.list_where
+  def self.public_list_where
     'sheets.visible > 0'
   end
   
index 60d3346..f47f192 100644 (file)
@@ -32,7 +32,7 @@ class SheetPanel < Peta::Element
     self.author_id = operators.author.id
   end
   
-  def self.list_where
+  def self.public_list_where
     'sheets.visible > 0'
   end
   
index 963031c..076c80d 100644 (file)
@@ -52,7 +52,7 @@ class Speech < Peta::Element
     @@text_align_texts[self.text_align]
   end
   
-  def self.list_where
+  def self.public_list_where
     'panels.publish > 0'
   end
   
index deeb5fa..d5a4148 100644 (file)
@@ -64,7 +64,7 @@ class SpeechBalloon < Peta::Element
     'speech_balloon'
   end
   
-  def self.list_where
+  def self.public_list_where
     'panels.publish > 0'
   end
   
index b93cb78..2d09d53 100644 (file)
@@ -39,7 +39,7 @@ class Story < Peta::Binder
     StorySheet.where(['story_sheets.story_id = ?', self.id]).count
   end
   
-  def self.list_where
+  def self.public_list_where
     'stories.visible > 0'
   end
   
index 9056a7a..6d02cd0 100644 (file)
@@ -20,7 +20,7 @@ class StorySheet < Peta::Leaf
     self.author_id = operators.author.id
   end
   
-  def self.list_where
+  def self.public_list_where
     'stories.visible > 0'
   end
   
index 3e172ad..4ddec4a 100644 (file)
@@ -1,10 +1,10 @@
 <% @page_title = t('admins.signin.title') %>
-<h1><%= link_to h(MagicNumber['profile']['admins']['caption']), root_path %></h1>
+<h1><%= link_to h(manifest.magic_numbers['profile']['admins']['caption']), root_path %></h1>
 
 <table class="no-border" style="background-color: #aa7777;">
   <tr>
     <td width="60%">
-      <p><%= sanitize MagicNumber['profile']['admins']['description'], :tags => %w(a p img br) %></p>
+      <p><%= sanitize manifest.magic_numbers['profile']['admins']['description'], :tags => %w(a p img br) %></p>
     </td>
     <td width="40%">
       <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
index 763fb69..64487ad 100644 (file)
     <%= link_to t('tab.system.approve'), '/system/waiting_list' %>\r
     <%= link_to t('tab.system.port'), '/system/import' %>\r
     <%= link_to t('tab.system.token'), '/system/auth_token' %>\r
-    <%= t('tab.system.layout') %>:\r
-    <%= link_to t('tab.system.test'), '/system/test_layout' %>\r
-    <%= link_to t('tab.system.production'), '/system/production_layout' %>\r
     <%= link_to t('home.sign_out.title'), main_app.destroy_admin_session_path, :method => :delete %>\r
   <% else %>\r
     <%= link_to t('home.sign_in.title'), main_app.new_admin_session_path %>\r
index aa0c6f7..3285148 100644 (file)
@@ -7,7 +7,7 @@
     <% else %>\r
       <%= t("#{params[:controller]}.#{params[:action]}.title") %>\r
     <% end %>\r
-    - <%= h(MagicNumber['profile']['users']['caption']) %>\r
+    - <%= h(manifest.magic_numbers['profile']['users']['caption']) %>\r
   </title>\r
   <%= stylesheet_link_tag "test.css" %>\r
   <%= javascript_include_tag "application" %>\r
@@ -32,9 +32,6 @@
     <%= link_to t('tab.system.approve'), '/system/waiting_list' %>\r
     <%= link_to t('tab.system.port'), '/system/import' %>\r
     <%= link_to t('tab.system.token'), '/system/auth_token' %>\r
-    <%= t('tab.system.layout') %>:\r
-    <%= link_to t('tab.system.test'), '/system/test_layout' %>\r
-    <%= link_to t('tab.system.production'), '/system/production_layout' %>\r
     <%= link_to t('home.sign_out.title'), main_app.destroy_admin_session_path, :method => :delete %>\r
   <% else %>\r
     <%= link_to t('home.sign_in.title'), main_app.new_admin_session_path %>\r
diff --git a/app/views/layouts/metro.html.erb b/app/views/layouts/metro.html.erb
deleted file mode 100644 (file)
index 10eb9cd..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\r
-<html xmlns:v="urn:schemas-microsoft-com:vml">\r
-       <head>\r
-               <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r
-               <meta http-equiv="Content-Language" content="ja">\r
-               <meta http-equiv="Content-Script-Type" content="text/javascript">\r
-               <meta http-equiv="Content-Style-Type" content="text/css">\r
-               <meta http-equiv="imagetoolbar" content="no">\r
-               <title><%= h(MagicNumber['profile']['users']['caption']) %></title>\r
-               <%= stylesheet_link_tag "system.css" %>\r
-               <%= stylesheet_link_tag "peta.common.css" %>\r
-               <%= csrf_meta_tags %>\r
-       </head>\r
-       <body>\r
-               <div id="server-content" class="">\r
-                       <%= yield %>\r
-               </div>\r
-               <div id="esc-msg" style="border:1px red solid;padding:10px;margin:10px;cursor:pointer;">[ESC] キーを押すと Metro ホームに入るよ.ホームの一番最後のタイルをクリックすると このページに戻るよ.</div>\r
-               <div id="server-page-close-button" class="button" style="width:100px;margin:1em;">ホームへ</div>\r
-   <%= javascript_tag 'var server_result=' + @server_result.to_json + ';' %>\r
-               <%= javascript_include_tag "jquery-162min" %>\r
-               <%= javascript_include_tag "libs" %>\r
-               <%= javascript_include_tag "system" %>\r
-\r
-               <script type="text/javascript">\r
-                       <% if current_user %>\r
-                       current_author = {\r
-                               id: <%= @author ? @author.id : 0 %>,\r
-                               name: "<%= @author ? h(@author.name) : '' %>"\r
-                       };\r
-                       <% if @artist and @artist.id %>\r
-                       current_artist = {\r
-                               id: <%= @artist.id %>,\r
-                               name: "<%= h(@artist.name) %>"\r
-                       };\r
-                       <% end %>\r
-                       gOS.PageApplicationRef = null;\r
-                       gOS.PageApplicationClass = function(){\r
-                               var app = this;\r
-                               this.bgColor = '#FFF';\r
-                               this.onOpen = function(){\r
-                                       var button = document.getElementById( 'server-page-close-button' );\r
-                                       if( button ){\r
-                                               app.addEventListener( button, 'click', gOS.PageApplicationRef.shutdown );\r
-                                       };\r
-                                       var msg = document.getElementById( 'esc-msg' );\r
-                                       if( msg ){\r
-                                               app.addEventListener( msg, 'click', gOS.PageApplicationRef.shutdown );\r
-                                       };\r
-                                       app.addKeyEventListener( 'keydown', gOS.PageApplicationRef.shutdown, 27 ); // 27.esc\r
-                               };\r
-                       };\r
-                       <% end %>\r
-                </script>\r
-               <%= javascript_include_tag "peta-common" %>\r
-               <%= javascript_include_tag "peta-apps" %>\r
-               <%= javascript_include_tag "pongame" %>\r
-       </body>\r
-</html>\r
index b5e8db3..273047f 100644 (file)
@@ -34,9 +34,6 @@
   <%= link_to "browse", '/system/browse' %>
   <%= link_to "approve", '/system/waiting_list' %>
   <%= link_to "token", '/system/auth_token' %>
-  layout:
-  <%= link_to "test", '/system/test_layout' %>
-  <%= link_to "production", '/system/production_layout' %>
   <%= link_to "sign out", main_app.destroy_admin_session_path, :method => :delete %>
 <% else %>
   <%= link_to "sign in", main_app.new_admin_session_path %>
diff --git a/app/views/templates/r/form/field/_extend.html.erb b/app/views/templates/r/form/field/_extend.html.erb
new file mode 100644 (file)
index 0000000..7d1bd6f
--- /dev/null
@@ -0,0 +1,8 @@
+<div class="extend-field">
+  <%= render field.label.template_name, :label => field.label %>
+  <%= render field.tag.template_name, :tag => field.tag %>
+  <% field.helpers.each do |helper_name, helper| %>
+    <%= render helper.template_name, :helper => helper %>
+  <% end %>
+</div>
+<%= render field.row_break_template_name  %>
index 5ec1235..c4e7c18 100644 (file)
@@ -1,9 +1,9 @@
 <% @page_title = t('users.signin.signin') %>
-<h1><%= link_to h(MagicNumber['profile']['users']['caption']), root_path %></h1>
+<h1><%= link_to h(manifest.magic_numbers['profile']['users']['caption']), root_path %></h1>
 <table class="no-border">
   <tr>
     <td width="60%">
-      <p><%= sanitize MagicNumber['profile']['users']['description'], :tags => %w(a p img br) %></p>
+      <p><%= sanitize manifest.magic_numbers['profile']['users']['description'], :tags => %w(a p img br) %></p>
     </td>
     <td width="40%">
       <%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
index e6e189f..309d9e1 100644 (file)
@@ -978,12 +978,38 @@ ja:
       title: システム画像のフキダシテンプレート一覧
     show:
       title: フキダシテンプレート詳細
+    new:
+      title: フキダシテンプレート作成
+    edit:
+      title: フキダシテンプレート編集
+    create:
+      title: フキダシテンプレート作成
+    update:
+      title: フキダシテンプレート編集
+    destroy:
+      title: フキダシテンプレート削除
+    submit:
+      new: 作成する
+      edit: 変更する
     add_to_panel: このフキダシをつかんだコマに追加する
   writing_formats:
     index:
       title: 記法一覧
     show:
       title: 記法詳細
+    new:
+      title: 記法作成
+    edit:
+      title: 記法編集
+    create:
+      title: 記法作成
+    update:
+      title: 記法編集
+    destroy:
+      title: 記法削除
+    submit:
+      new: 作成する
+      edit: 変更する
   license_groups:
     index:
       title: ライセンスグループ一覧
@@ -991,6 +1017,19 @@ ja:
       title: ライセンスグループのライセンス一覧
     show:
       title: ライセンスグループ詳細
+    new:
+      title: ライセンスグループ作成
+    edit:
+      title: ライセンスグループ編集
+    create:
+      title: ライセンスグループ作成
+    update:
+      title: ライセンスグループ編集
+    destroy:
+      title: ライセンスグループ削除
+    submit:
+      new: 作成する
+      edit: 変更する
   licenses:
     index:
       title: ライセンス一覧
@@ -1004,6 +1043,19 @@ ja:
       title: ライセンス詳細
     search:
       title: ライセンス検索
+    new:
+      title: ライセンス作成
+    edit:
+      title: ライセンス編集
+    create:
+      title: ライセンス作成
+    update:
+      title: ライセンス編集
+    destroy:
+      title: ライセンス削除
+    submit:
+      new: 作成する
+      edit: 変更する
   authors:
     index:
       title: 作家一覧
index bc8a148..fff1cdc 100644 (file)
@@ -5,6 +5,7 @@ require_dependency "local_manifest/profiler"
 require_dependency "local_manifest/filer"
 require_dependency "local_manifest/form"
 require_dependency "local_manifest/list_group"
+require_dependency "local_manifest/bucket"
 LocalManifest::load JSON.parse(open(File.expand_path('../../public/local_manifest.json', __FILE__)).read)
 
 LocalManifest.manifest.init
diff --git a/lib/local_manifest/bucket.rb b/lib/local_manifest/bucket.rb
new file mode 100644 (file)
index 0000000..ab86f85
--- /dev/null
@@ -0,0 +1,52 @@
+module LocalManifest
+  class Bucket < ManifestBase::Base
+    
+    attr :columns, :column_names, :extend_settings, :lists, :associations
+    
+    def set_default
+      super
+      @json['columns'] ||= {}
+    end
+    
+    def init
+      super
+    end
+    
+    def item_name
+      @name
+    end
+    
+    def each_column
+      @column_names
+    end
+    
+      def set_defaulta
+        super
+        n = @name.split '.'
+        if n.size > 1
+          @args['model_name'] ||= n[0]
+          @args['column_name'] ||= n[1]
+        else
+          @args['model_name'] ||= self.form.name
+          @args['column_name'] ||= @name
+        end
+        @args['label'] ||= {}
+        @args['tag'] ||= {}
+        @args['helpers'] ||= {}
+        @args['row_break'] ||= true
+      end
+      
+      def inita
+        super
+        @model_name = @args['model_name']
+        @column_name = @args['column_name']
+        @label = ManifestBase.load_type_args self, @args, 'label', LabelFactory
+        @tag = ManifestBase.load_type_args self, @args, 'tag', TagFactory
+        @helpers = ManifestBase.load_type_name_args self, @args, 'helpers', HelperFactory
+        @row_break = @args['row_break']
+      end
+      
+  end
+  
+end
+
index f956337..c0df739 100644 (file)
@@ -5,12 +5,6 @@ module LocalManifest
   class Form < ManifestBase::Base
     include FormModule
     
-    def self.load manifest, jsons, module_name
-      Hash[jsons[module_name]['base'].map {|name, json|
-        [name, self.new(manifest, name, json, module_name)]
-      }]
-    end
-    
     attr :fields, :field_names
     
     def set_default
@@ -21,8 +15,7 @@ module LocalManifest
     
     def init
       super
-      @base = @json['base']
-      @fields = ManifestBase.load_type_name_args self, @json, 'fields', FieldFactory
+      @fields = ManifestBase.load_name_values self, @json, 'fields', Field
       @field_names = @json['field_names']
     end
     
@@ -34,30 +27,5 @@ module LocalManifest
     
   end
   
-  class ExtendForm < Form
-    
-    attr :base
-    
-    def self.load manifest, jsons, module_name
-      Hash[jsons[module_name]['extend'].map {|name, json|
-        [name, self.new(manifest, name, json, module_name)]
-      }]
-    end
-    
-    def set_default
-      super
-      ManifestBase.alert_undefined_message 'base',  self.module_message unless @json['base']
-    end
-    
-    def init
-      super
-      @base = @json['base']
-      @base_form = @manifest.forms[@base]
-      ManifestBase.alert_undefined_message 'base form',  self.module_message unless @base_form
-      @fields.merge! @base_form.fields
-    end
-    
-  end
-  
 end
 
index b579ba9..a6edd11 100644 (file)
@@ -1,21 +1,76 @@
 ManifestBase.require_modules "local_manifest/form/field/", 
-  %w|field|
+  %w|tag label helper|
 
 module LocalManifest
   module FormModule
-    class FieldFactory < ManifestBase::Factory
+    class Field < ManifestBase::NameValues
       include FieldModule
       
-      def self.types
-        {
-          'element' => ElementField, 'part' => PartField
-        }
+      attr :label, :tag, :helpers, :row_break
+      
+      def set_default
+        super
+        @values['label'] ||= {}
+        @values['tag'] ||= {}
+        @values['helpers'] ||= {}
+        @values['row_break'] ||= true
+      end
+      
+      def init
+        super
+        @label = ManifestBase.load_type_args self, @values, 'label', LabelFactory
+        @tag = ManifestBase.load_type_args self, @values, 'tag', TagFactory
+        @helpers = ManifestBase.load_type_name_args self, @values, 'helpers', HelperFactory
+        @row_break = @values['row_break']
+      end
+      
+      def part?
+        @part_name != nil 
+      end
+      
+      def form_field_name
+        form_name + '[' + @name + ']'
+      end
+      
+      def form_name
+        @parent.name
+      end
+      
+      def column_name
+        @name
+      end
+      
+      def model_name
+        form_name
+      end
+      
+      def form
+        @parent
+      end
+      
+    end
+    
+    class ElementField < Field
+    end
+    
+    class PartField < Field
+      attr :part_name
+      
+      def set_default
+        super
+        @values['part_name'] ||= @values['model_name']
+      end
+      
+      def init
+        super
+        @part_name = @values['part_name']
       end
       
-      def self.default_type
-        'element'
+      def form_field_name
+        @model_name + '[' + @model_name + '_attributes][' + @column_name + ']'
       end
       
     end
+    
   end
 end
diff --git a/lib/local_manifest/form/field/field.rb b/lib/local_manifest/form/field/field.rb
deleted file mode 100644 (file)
index 80a32a2..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-ManifestBase.require_modules "local_manifest/form/field/", 
-  %w|tag label helper|
-
-module LocalManifest
-  module FormModule
-    class Field < ManifestBase::TypeNameArgs
-      include FieldModule
-      
-      attr :model_name, :column_name, :label, :tag, :helpers, :row_break
-      
-      def set_default
-        super
-        n = @name.split '.'
-        if n.size > 1
-          @args['model_name'] ||= n[0]
-          @args['column_name'] ||= n[1]
-        else
-          @args['model_name'] ||= self.form.name
-          @args['column_name'] ||= @name
-        end
-        @args['label'] ||= {}
-        @args['tag'] ||= {}
-        @args['helpers'] ||= {}
-        @args['row_break'] ||= true
-      end
-      
-      def init
-        super
-        @model_name = @args['model_name']
-        @column_name = @args['column_name']
-        @label = ManifestBase.load_type_args self, @args, 'label', LabelFactory
-        @tag = ManifestBase.load_type_args self, @args, 'tag', TagFactory
-        @helpers = ManifestBase.load_type_name_args self, @args, 'helpers', HelperFactory
-        @row_break = @args['row_break']
-      end
-      
-      def part?
-        @part_name != nil 
-      end
-      
-      def form_name
-        @parent.name
-      end
-      
-      def form
-        @parent
-      end
-      
-    end
-    
-    class ElementField < Field
-      def form_field_name
-        @model_name + '[' + @column_name + ']'
-      end
-      
-    end
-    
-    class PartField < Field
-      attr :part_name
-      
-      def set_default
-        super
-        @args['part_name'] ||= @args['model_name']
-      end
-      
-      def init
-        super
-        @part_name = @args['part_name']
-      end
-      
-      def form_field_name
-        @model_name + '[' + @model_name + '_attributes][' + @column_name + ']'
-      end
-      
-    end
-    
-  end
-end
index 9b1821b..b260f73 100644 (file)
@@ -20,15 +20,15 @@ module LocalManifest
           end
           
           def field_name
-            @parent.field_name
+            @parent.name
           end
           
           def model_name
-            @parent.model_name
+            self.form_name
           end
           
           def column_name
-            @parent.column_name
+            self.field_name
           end
           
         end
index f0ca2b6..dc6449f 100644 (file)
@@ -1,7 +1,7 @@
 module LocalManifest
   class LocalManifest
     cattr_accessor :manifest
-    attr :list_groups, :profilers, :filers, :forms, :module_names
+    attr :list_groups, :profilers, :filers, :forms, :buckets, :module_names
     # call me before load routes.rb
     # routes.rb needs engine_resources manifest in system_resources
     # ex. it's adding license_groups routes
@@ -17,7 +17,7 @@ module LocalManifest
       @filers = Filer.load(self, @local_json, 'filers')
       @profilers = Profiler.load(self, @local_json, 'profilers')
       @forms = Form.load(self, @local_json, 'forms')
-      @forms.merge(ExtendForm.load(self, @local_json, 'forms'))
+      @buckets = Bucket.load(self, @local_json, 'buckets')
     end
     
   end
index 7fc8dd5..584ca85 100644 (file)
@@ -1,25 +1,25 @@
 require_dependency "locmare/form/field"
+require_dependency "locmare/form/extend_field"
+
 module Locmare
-  class Form
+  class FormBase
     include FormModule
-    attr :form_name, :item, :mounted, :submit, :operators, :template_dir, 
+    attr :form_name, :item, :mounted, :operators, :template_dir, 
       :fields
-    def initialize form_name, item, mounted, submit, operators
+    def initialize form_name, item, mounted, operators
       @form_name = form_name
       @item = item
       @mounted = mounted
-      @submit = submit
       @operators = operators
+      
       @manifest = LocalManifest.manifest.forms[@form_name]
       @template_dir = 'templates/r/form/'
       @fields = {}
-      @manifest.each_field do |field_name, field_manifest| 
-        @fields[field_name] = Field.new self, field_name, field_manifest
-      end
+      self.init_fields
     end
     
     def each_field
-      @manifest.each_field do |field_name, field_manifest
+      @manifest.field_names.each do |field_name
         yield field_name, @fields[field_name]
       end
     end
@@ -32,6 +32,38 @@ module Locmare
       self.template_dir + self.template_file_name
     end
     
+    def fields_template_name
+      self.template_dir + 'fields'
+    end
+    
+    def image_dir
+      '/images/'
+    end
+    
+  end
+  
+  class Form < FormBase
+    attr :submit
+    
+    def initialize form_name, item, mounted, submit, operators
+      super form_name, item, mounted, operators
+      @submit = submit
+      @item.boosts 'post'
+      self.init_fields
+    end
+    
+    def init_fields
+      @manifest.each_field do |field_name, field_manifest| 
+        if boost_name = @item.class.find_boost_name(field_name)
+          extend_form_name = @item.boosters[boost_name].model_name
+          extend_form_manifest = LocalManifest.manifest.forms[extend_form_name]
+          @fields[field_name] = ExtendForm.new self, extend_form_name, @item, @mounted, @operators
+        else
+          @fields[field_name] = Field.new self, field_name, field_manifest
+        end
+      end
+    end
+    
     def submit_name
       if @item.new_record?
         @item.table_name + '.submit.new'
@@ -52,14 +84,29 @@ module Locmare
       end
     end
     
-    def fields_template_name
-      self.template_dir + 'fields'
+  end
+  
+  class ExtendForm < FormBase
+    attr :parent
+    
+    def initialize parent, form_name, item, mounted, submit, operators
+      @parent = parent
+      super form_name, item, mounted, operators
     end
     
-    def image_dir
-      '/images/'
+    def init_fields
+      @manifest.each_field do |field_name, field_manifest| 
+        if boost_name = @item.class.find_boost_name(field_name)
+          extend_form_name = @item.boosters[boost_name].model_name
+          extend_form_manifest = LocalManifest.manifest.forms[extend_form_name]
+          @fields[field_name] = ExtendField.new self, field_name, field_manifest, @item.boosters[n].extend_item
+        else
+          @fields[field_name] = Field.new self, field_name, field_manifest
+        end
+      end
     end
     
   end
+  
 end
 
diff --git a/lib/locmare/form/extend_field.rb b/lib/locmare/form/extend_field.rb
new file mode 100644 (file)
index 0000000..1987c4a
--- /dev/null
@@ -0,0 +1,77 @@
+module Locmare
+  module FormModule
+    class ExtendField
+      attr :form, :field_name, :field_manifest, 
+        :label, :tag, :helpers, :options
+      def initialize form, field_name, field_manifest
+        @form = form
+        @field_name = field_name
+        @field_manifest = field_manifest
+        @label = LabelFactory.factory self, @field_manifest.label
+        @tag = TagFactory.factory self, @field_manifest.tag
+        @helpers = {}
+        @field_manifest.helpers.each {|helper_name, helper_manifest|
+          @helpers[helper_name] = HelperFactory.factory self, helper_manifest
+        }
+        @options = {'data-model' => @field_manifest.model_name}
+      end
+      
+      def mounted
+        @form.mounted ? 0 : 1
+      end
+      
+      def mount_option
+        {'mount' => self.mounted}
+      end
+      
+      def item
+        @form.item
+      end
+      
+      def value
+        self.item.attributes[@field_manifest.column_name]
+      end
+      
+      def options tag_options = {}
+        self.item.field_tag_attributes(@field_manifest.column_name, tag_options).merge(self.mount_option)
+      end
+      
+      def form_field_name
+        @field_manifest.form_field_name
+      end
+      
+      def form_name
+        @form.form_name
+      end
+      
+      def template_dir
+        @form.template_dir + 'field/'
+      end
+      
+      def template_file_name
+        'extend'
+      end
+      
+      def template_name
+        self.template_dir + self.template_file_name
+      end
+      
+      def row_break_template_dir
+        @form.template_dir + 'row_break/'
+      end
+      
+      def row_break_template_file_name
+        if @field_manifest.row_break
+          'br'
+        else
+          'no_break'
+        end
+      end
+      
+      def row_break_template_name
+        self.row_break_template_dir + self.row_break_template_file_name
+      end
+      
+    end
+  end
+end
index 014eb57..fc24e93 100644 (file)
@@ -17,7 +17,7 @@ module Locmare
         @field_manifest.helpers.each {|helper_name, helper_manifest|
           @helpers[helper_name] = HelperFactory.factory self, helper_manifest
         }
-        @options = {'data-model' => @field_manifest.model_name}
+        @options = {'data-model' => @field_manifest.form_name}
       end
       
       def mounted
@@ -53,7 +53,7 @@ module Locmare
       end
       
       def template_file_name
-        @field_manifest.type
+        'default'
       end
       
       def template_name
index 9855fd8..38cc9b5 100644 (file)
@@ -63,6 +63,7 @@ module Locmare
         method_name = @where.conditions do |name|
           name
         end
+        p method_name
         @model.__send__ method_name
       end
       
index 88c634c..6fc61dc 100644 (file)
@@ -28,6 +28,13 @@ module Manifest
         @parent_model_name != nil
       end
       
+      def find_boost_name column_name
+        @boost.each do |boost_name, boost_manifest|
+          return boost_name if boost_manifest.extend_column_name == column_name
+        end
+        nil
+      end
+      
       def extend_column? column_name
         @boost.each do |boost_name, boost_manifest|
           return true if boost_manifest.extend_column_name == column_name
index 1fdc473..9c9dd80 100644 (file)
@@ -70,9 +70,10 @@ module Peta
       self.class.owner_model ? self.__send__(self.class.owner_model.item_name) : self
     end
     
+    # super return if my item
     def visible? operators
       super
-      return true if owner_model.own?(operators)
+      return nil if owner_model.own?(operators)
       true
     end
     
index 91bee15..08910cc 100644 (file)
@@ -76,6 +76,10 @@ module Peta
       self.plural.underscore
     end
     
+    def self.find_boost_name column_name
+      self.my_peta.find_boost_name column_name
+    end
+    
     def self.extend_column? column_name
       self.my_peta.extend_column? column_name
     end
index cad51c5..58dad08 100644 (file)
     },\r
     "license": {\r
       "columns": {\r
-        "license_group_id": {},\r
-        "license_group_classname": {},\r
-        "name": {},\r
-        "caption": {},\r
-        "system_picture_id": {},\r
-        "url": {},\r
         "license_group_settings": {\r
           "type": "extend",\r
           "args": {\r
-            "parent_model_name": "panel"\r
+            "boost_name": "license_group"\r
           }\r
         },\r
         "credit_picture_settings": {\r
     }\r
   },\r
   "forms": {\r
-    "base": {\r
-      "scroll": {\r
-        "fields": {\r
-          "title": {\r
+    "scroll": {\r
+      "fields": {\r
+        "title": {\r
+          "label": {\r
             "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "description": {\r
-            "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text_area"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "visible": {\r
+          "row_break": true\r
+        },\r
+        "description": {\r
+          "label": {\r
             "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
-          },\r
-          "author_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "text_area"\r
           }\r
         },\r
-        "field_names": [\r
-          "title",\r
-          "description",\r
-          "visible",\r
-          "id",\r
-          "author_id"\r
-        ]\r
-      },\r
-      "scroll_panel": {\r
-        "fields": {\r
-          "scroll_id": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+        "visible": {\r
+          "tag": {\r
+            "type": "select"\r
           },\r
-          "panel_id": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "t": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "author_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
+      },\r
+      "field_names": [\r
+        "title",\r
+        "description",\r
+        "visible",\r
+        "id",\r
+        "author_id"\r
+      ]\r
+    },\r
+    "scroll_panel": {\r
+      "fields": {\r
+        "scroll_id": {\r
+          "tag": {\r
+            "type": "number"\r
           }\r
         },\r
-        "field_names": [\r
-          "scroll_id",\r
-          "panel_id",\r
-          "t",\r
-          "id"\r
-        ]\r
+        "panel_id": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "t": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
       },\r
-      "comic": {\r
-        "fields": {\r
-          "title": {\r
+      "field_names": [\r
+        "scroll_id",\r
+        "panel_id",\r
+        "t",\r
+        "id"\r
+      ]\r
+    },\r
+    "comic": {\r
+      "fields": {\r
+        "title": {\r
+          "label": {\r
             "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "description": {\r
-            "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text_area"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "visible": {\r
+          "row_break": true\r
+        },\r
+        "description": {\r
+          "label": {\r
             "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "text_area"\r
+          }\r
+        },\r
+        "visible": {\r
+          "tag": {\r
+            "type": "select"\r
           },\r
-          "author_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "hidden"\r
           }\r
         },\r
-        "field_names": [\r
-          "title",\r
-          "description",\r
-          "visible",\r
-          "id",\r
-          "author_id"\r
-        ]\r
+        "author_id": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
       },\r
-      "story": {\r
-        "fields": {\r
-          "comic_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+      "field_names": [\r
+        "title",\r
+        "description",\r
+        "visible",\r
+        "id",\r
+        "author_id"\r
+      ]\r
+    },\r
+    "story": {\r
+      "fields": {\r
+        "comic_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "title": {\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "title": {\r
+          "label": {\r
             "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "description": {\r
-            "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text_area"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "visible": {\r
+          "row_break": true\r
+        },\r
+        "description": {\r
+          "label": {\r
             "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "t": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "text_area"\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "visible": {\r
+          "tag": {\r
+            "type": "select"\r
           },\r
-          "author_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "t": {\r
+          "tag": {\r
+            "type": "number"\r
           }\r
         },\r
-        "field_names": [\r
-          "comic_id",\r
-          "title",\r
-          "description",\r
-          "visible",\r
-          "t",\r
-          "id",\r
-          "author_id"\r
-        ]\r
-      },\r
-      "story_sheet": {\r
-        "fields": {\r
-          "story_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "sheet_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "author_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "t": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
+      },\r
+      "field_names": [\r
+        "comic_id",\r
+        "title",\r
+        "description",\r
+        "visible",\r
+        "t",\r
+        "id",\r
+        "author_id"\r
+      ]\r
+    },\r
+    "story_sheet": {\r
+      "fields": {\r
+        "story_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "number"\r
           }\r
         },\r
-        "field_names": [\r
-          "story_id",\r
-          "sheet_id",\r
-          "t",\r
-          "id"\r
-        ]\r
+        "sheet_id": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "t": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
       },\r
-      "sheet": {\r
-        "fields": {\r
-          "caption": {\r
+      "field_names": [\r
+        "story_id",\r
+        "sheet_id",\r
+        "t",\r
+        "id"\r
+      ]\r
+    },\r
+    "sheet": {\r
+      "fields": {\r
+        "caption": {\r
+          "label": {\r
             "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "width": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "height": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "width": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "height": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "visible": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "visible": {\r
+          "tag": {\r
+            "type": "select"\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "author_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
           }\r
         },\r
-        "field_names": [\r
-          "caption",\r
-          "width",\r
-          "height",\r
-          "visible",\r
-          "id",\r
-          "author_id"\r
-        ]\r
-      },\r
-      "sheet_panel": {\r
-        "fields": {\r
-          "sheet_id": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+        "author_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "panel_id": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
+      },\r
+      "field_names": [\r
+        "caption",\r
+        "width",\r
+        "height",\r
+        "visible",\r
+        "id",\r
+        "author_id"\r
+      ]\r
+    },\r
+    "sheet_panel": {\r
+      "fields": {\r
+        "sheet_id": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "panel_id": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "x": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "y": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "x": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "z": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "y": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "t": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "z": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "t": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
+      },\r
+      "field_names": [\r
+        "sheet_id",\r
+        "panel_id",\r
+        "x",\r
+        "y",\r
+        "z",\r
+        "t",\r
+        "id"\r
+      ]\r
+    },\r
+    "panel": {\r
+      "fields": {\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "width": {\r
+          "tag": {\r
+            "type": "number"\r
           }\r
         },\r
-        "field_names": [\r
-          "sheet_id",\r
-          "panel_id",\r
-          "x",\r
-          "y",\r
-          "z",\r
-          "t",\r
-          "id"\r
-        ]\r
-      },\r
-      "panel": {\r
-        "fields": {\r
-          "caption": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+        "height": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "width": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "border": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "publish": {\r
+          "tag": {\r
+            "type": "select"\r
           },\r
-          "height": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "border": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "author_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "publish": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
+      },\r
+      "field_names": [\r
+        "caption",\r
+        "width",\r
+        "height",\r
+        "border",\r
+        "publish",\r
+        "id",\r
+        "author_id"\r
+      ]\r
+    },\r
+    "panel_picture": {\r
+      "fields": {\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
+          "row_break": true\r
+        },\r
+        "x": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "y": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "width": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "helpers": {\r
+            "size": {\r
+              "type": "size",\r
+              "args": {\r
+                "dom_class": "panel_picture_width_tool"\r
               }\r
             }\r
           },\r
-          "author_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
+          "row_break": true\r
+        },\r
+        "height": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "helpers": {\r
+            "size": {\r
+              "type": "size",\r
+              "args": {\r
+                "dom_class": "panel_picture_height_tool"\r
               }\r
             }\r
+          },\r
+          "row_break": true\r
+        },\r
+        "link": {\r
+          "tag": {\r
+            "type": "text"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "hidden"\r
           }\r
         },\r
-        "field_names": [\r
-          "caption",\r
-          "width",\r
-          "height",\r
-          "border",\r
-          "publish",\r
-          "id",\r
-          "author_id"\r
-        ]\r
-      },\r
-      "panel_picture": {\r
-        "fields": {\r
-          "caption": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+        "panel_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "x": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "picture_id": {\r
+          "tag": {\r
+            "type": "hidden"\r
+          },\r
+          "helpers": {\r
+            "popup": {\r
+              "type": "popup",\r
+              "args": {\r
+                "source": "pictures"\r
               }\r
             }\r
+          }\r
+        },\r
+        "z": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "y": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "t": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "width": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "helpers": {\r
-                "size": {\r
-                  "type": "size",\r
-                  "args": {\r
-                    "dom_class": "panel_picture_width_tool"\r
-                  }\r
-                }\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
+      },\r
+      "field_names": [\r
+        "caption",\r
+        "x",\r
+        "y",\r
+        "width",\r
+        "height",\r
+        "link",\r
+        "id",\r
+        "panel_id",\r
+        "picture_id",\r
+        "z",\r
+        "t"\r
+      ]\r
+    },\r
+    "speech_balloon": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "height": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "helpers": {\r
-                "size": {\r
-                  "type": "size",\r
-                  "args": {\r
-                    "dom_class": "panel_picture_height_tool"\r
-                  }\r
-                }\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "panel_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "link": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "speech_balloon_template_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "panel_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "z": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "picture_id": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "hidden"\r
-              },\r
-              "helpers": {\r
-                "popup": {\r
-                  "type": "popup",\r
-                  "args": {\r
-                    "source": "pictures"\r
-                  }\r
-                }\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "t": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "z": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "speech_balloon_template_classname": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "t": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
           }\r
         },\r
-        "field_names": [\r
-          "caption",\r
-          "x",\r
-          "y",\r
-          "width",\r
-          "height",\r
-          "link",\r
-          "id",\r
-          "panel_id",\r
-          "picture_id",\r
-          "z",\r
-          "t"\r
-        ]\r
+        "speech_balloon_template_settings": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
       },\r
-      "speech_balloon": {\r
-        "fields": {\r
-          "speech_balloon.id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+      "field_names": [\r
+        "caption",\r
+        "id",\r
+        "panel_id",\r
+        "speech_balloon_template_id",\r
+        "speech_balloon_template_classname",\r
+        "z",\r
+        "t",\r
+        "speech_balloon_template_settings"\r
+      ]\r
+    },\r
+    "balloon": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech_balloon.panel_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "speech_balloon_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech_balloon.speech_balloon_template_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "speech_balloon_template_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech_balloon.caption": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "system_picture_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech_balloon.z": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "r": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "speech_balloon.t": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
+          "helpers": {\r
+            "tail_angle": {\r
+              "type": "size",\r
+              "args": {}\r
             }\r
           },\r
-          "speech_balloon.speech_balloon_template_classname": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "x": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "y": {\r
+          "label": {},\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "speech_balloon.speech_balloon_template_settings": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "width": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "height": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "balloon.id": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "speech_balloon_template_classname": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.speech_balloon_id": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "speech_balloon_template_settings": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.speech_balloon_template_id": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
+      },\r
+      "field_names": [\r
+        "r",\r
+        "x",\r
+        "y",\r
+        "width",\r
+        "height",\r
+        "id",\r
+        "speech_balloon_id",\r
+        "system_picture_id",\r
+        "speech_balloon_template_id",\r
+        "speech_balloon_template_classname",\r
+        "speech_balloon_template_settings"\r
+      ]\r
+    },\r
+    "speech": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.system_picture_id": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "speech_balloon_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.r": {\r
-            "type": "part",\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "helpers": {\r
-                "tail_angle": {\r
-                  "type": "size",\r
-                  "args": {}\r
-                }\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "speech_balloon_template_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.x": {\r
-            "type": "part",\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "x": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.y": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {},\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "y": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.width": {\r
-            "type": "part",\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "width": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.height": {\r
-            "type": "part",\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "height": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "balloon.speech_balloon_template_classname": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "writing_format_id": {\r
+          "tag": {\r
+            "type": "select"\r
+          }\r
+        },\r
+        "font_size": {\r
+          "tag": {\r
+            "type": "select"\r
           },\r
-          "balloon.speech_balloon_template_settings": {\r
-            "type": "part",\r
+          "row_break": true\r
+        },\r
+        "text_align": {\r
+          "tag": {\r
+            "type": "select"\r
+          }\r
+        },\r
+        "quotes": {\r
+          "tag": {\r
+            "type": "text"\r
+          }\r
+        },\r
+        "content": {\r
+          "label": {\r
             "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
+              "row_break": true\r
             }\r
           },\r
-          "speech.id": {\r
-            "type": "part",\r
+          "tag": {\r
+            "type": "text_area",\r
             "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
+              "options": {\r
+                "size": "45x5"\r
               }\r
             }\r
+          }\r
+        },\r
+        "fore_color": {\r
+          "label": {\r
+            "row_break": true\r
           },\r
-          "speech.speech_balloon_id": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
           },\r
-          "speech.speech_balloon_template_id": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
+          "helpers": {\r
+            "color": {\r
+              "type": "color",\r
+              "args": {\r
+                "wrapper": "speech-fore_color-wrap"\r
               }\r
             }\r
+          }\r
+        },\r
+        "speech_balloon_template_classname": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.x": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "writing_format_classname": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.y": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
-          },\r
-          "speech.width": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
-          },\r
-          "speech.height": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "speech_balloon_template_settings": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.writing_format_id": {\r
-            "type": "part",\r
-            "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "writing_format_settings": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.font_size": {\r
-            "type": "part",\r
-            "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
+      },\r
+      "field_names": [\r
+        "writing_format_id",\r
+        "font_size",\r
+        "text_align",\r
+        "quotes",\r
+        "content",\r
+        "fore_color",\r
+        "id",\r
+        "speech_balloon_id",\r
+        "x",\r
+        "y",\r
+        "width",\r
+        "height",\r
+        "speech_balloon_template_id",\r
+        "speech_balloon_template_classname",\r
+        "speech_balloon_template_settings",\r
+        "writing_format_classname",\r
+        "writing_format_settings"\r
+      ]\r
+    },\r
+    "ground_picture": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.text_align": {\r
-            "type": "part",\r
-            "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "panel_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.quotes": {\r
-            "type": "part",\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "picture_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.content": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text_area",\r
-                "args": {\r
-                  "options": {\r
-                    "size": "45x5"\r
-                  }\r
-                }\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "speech.fore_color": {\r
-            "type": "part",\r
+          "row_break": true\r
+        },\r
+        "repeat": {\r
+          "tag": {\r
+            "type": "select",\r
             "args": {\r
-              "label": {\r
-                "row_break": true\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              },\r
-              "helpers": {\r
-                "color": {\r
-                  "type": "color",\r
-                  "args": {\r
-                    "wrapper": "speech-fore_color-wrap"\r
-                  }\r
-                }\r
-              }\r
+              "source": "magic_number",\r
+              "key": "ground_picture_repeat_items"\r
             }\r
           },\r
-          "speech.speech_balloon_template_classname": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "x": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "y": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "speech.writing_format_classname": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "z": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.speech_balloon_template_settings": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "t": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "speech.writing_format_settings": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
           }\r
         }\r
       },\r
-      "ground_picture": {\r
-        "fields": {\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+      "field_names": [\r
+        "caption",\r
+        "repeat",\r
+        "x",\r
+        "y",\r
+        "z",\r
+        "t",\r
+        "id",\r
+        "panel_id",\r
+        "picture_id"\r
+      ]\r
+    },\r
+    "ground_color": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "panel_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "panel_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "picture_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "caption": {\r
+          "row_break": true\r
+        },\r
+        "code": {\r
+          "label": {\r
             "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "repeat": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "select",\r
-                "args": {\r
-                  "source": "magic_number",\r
-                  "key": "ground_picture_repeat_items"\r
-                }\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
           },\r
-          "x": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
+          "helpers": {\r
+            "color": {\r
+              "type": "color",\r
+              "args": {\r
+                "wrapper": "ground_color-code-wrap"\r
               }\r
             }\r
           },\r
-          "y": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "orientation": {\r
+          "tag": {\r
+            "type": "select"\r
           },\r
-          "z": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "xy": {\r
+          "tag": {\r
+            "type": "number"\r
+          }\r
+        },\r
+        "wh": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "t": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "z": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "hidden"\r
           }\r
         },\r
-        "field_names": [\r
-          "caption",\r
-          "repeat",\r
-          "x",\r
-          "y",\r
-          "z",\r
-          "t",\r
-          "id",\r
-          "panel_id",\r
-          "picture_id"\r
-        ]\r
+        "t": {\r
+          "label": {\r
+            "type": "none"\r
+          },\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        }\r
       },\r
-      "ground_color": {\r
-        "fields": {\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+      "field_names": [\r
+        "id",\r
+        "panel_id",\r
+        "caption",\r
+        "code",\r
+        "orientation",\r
+        "xy",\r
+        "wh",\r
+        "z",\r
+        "t"\r
+      ]\r
+    },\r
+    "speech_balloon_template": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "panel_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "name": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "caption": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "classname": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "code": {\r
-            "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              },\r
-              "helpers": {\r
-                "color": {\r
-                  "type": "color",\r
-                  "args": {\r
-                    "wrapper": "ground_color-code-wrap"\r
-                  }\r
-                }\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "orientation": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "select"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "t": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "xy": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "system_picture_id": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "wh": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "settings": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "z": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        }\r
+      },\r
+      "field_names": [\r
+        "id",\r
+        "name",\r
+        "classname",\r
+        "caption",\r
+        "t",\r
+        "system_picture_id",\r
+        "settings"\r
+      ]\r
+    },\r
+    "writing_format": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "t": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
           }\r
         },\r
-        "field_names": [\r
-          "id",\r
-          "panel_id",\r
-          "caption",\r
-          "code",\r
-          "orientation",\r
-          "xy",\r
-          "wh",\r
-          "z",\r
-          "t"\r
-        ]\r
-      },\r
-      "speech_balloon_template": {\r
-        "fields": {\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+        "name": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "name": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "classname": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "classname": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "caption": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "system_picture_id": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "t": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "settings": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "system_picture_id": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        }\r
+      },\r
+      "field_names": [\r
+        "id",\r
+        "name",\r
+        "classname",\r
+        "caption",\r
+        "system_picture_id",\r
+        "settings"\r
+      ]\r
+    },\r
+    "license_group": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "settings": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
           }\r
         },\r
-        "field_names": [\r
-          "id",\r
-          "name",\r
-          "classname",\r
-          "caption",\r
-          "t",\r
-          "system_picture_id",\r
-          "settings"\r
-        ]\r
-      },\r
-      "writing_format": {\r
-        "fields": {\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
-          },\r
-          "name": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
-          },\r
-          "classname": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+        "name": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "caption": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "classname": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "system_picture_id": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "settings": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
-          }\r
+          "row_break": true\r
         },\r
-        "field_names": [\r
-          "id",\r
-          "name",\r
-          "classname",\r
-          "caption",\r
-          "system_picture_id",\r
-          "settings"\r
-        ]\r
+        "url": {\r
+          "tag": {\r
+            "type": "text"\r
+          },\r
+          "row_break": true\r
+        }\r
       },\r
-      "license_group": {\r
-        "fields": {\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+      "field_names": [\r
+        "id",\r
+        "name",\r
+        "classname",\r
+        "caption",\r
+        "url"\r
+      ]\r
+    },\r
+    "license": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "name": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "license_group_id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "classname": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "license_group_classname": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "caption": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "name": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "url": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
-          }\r
+          "row_break": true\r
         },\r
-        "field_names": [\r
-          "id",\r
-          "name",\r
-          "classname",\r
-          "caption",\r
-          "url"\r
-        ]\r
-      },\r
-      "license": {\r
-        "fields": {\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+        "caption": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "license_group_id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+          "row_break": true\r
+        },\r
+        "system_picture_id": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "license_group_classname": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "url": {\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "name": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        },\r
+        "license_group_settings": {\r
+          "boost_name": "license_group",\r
+          "row_break": true\r
+        },\r
+        "credit_picture_settings": {\r
+          "boost_name": "credit_picture",\r
+          "row_break": true\r
+        }\r
+      },\r
+      "field_names": [\r
+        "id",\r
+        "license_group_id",\r
+        "license_group_classname",\r
+        "name",\r
+        "caption",\r
+        "system_picture_id",\r
+        "url",\r
+        "license_group_settings",\r
+        "credit_picture_settings"\r
+      ]\r
+    },\r
+    "author": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "caption": {\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "name": {\r
+          "label": {\r
             "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "system_picture_id": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "number"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "tag": {\r
+            "type": "text"\r
           },\r
-          "url": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
+          "row_break": true\r
+        }\r
+      },\r
+      "field_names": [\r
+        "id",\r
+        "name"\r
+      ]\r
+    },\r
+    "artist": {\r
+      "fields": {\r
+        "id": {\r
+          "label": {\r
+            "type": "none"\r
           },\r
-          "license_group_settings": {\r
+          "tag": {\r
+            "type": "hidden"\r
+          }\r
+        },\r
+        "name": {\r
+          "label": {\r
             "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
               "row_break": true\r
             }\r
           },\r
-          "credit_picture_settings": {\r
-            "args": {\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
-          }\r
-        },\r
-        "field_names": [\r
-          "id",\r
-          "license_group_id",\r
-          "license_group_classname",\r
-          "name",\r
-          "caption",\r
-          "system_picture_id",\r
-          "url",\r
-          "license_group_settings",\r
-          "credit_picture_settings"\r
-        ]\r
+          "tag": {\r
+            "type": "text"\r
+          },\r
+          "row_break": true\r
+        }\r
       },\r
-      "author": {\r
-        "fields": {\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+      "field_names": [\r
+        "id",\r
+        "name"\r
+      ]\r
+    },\r
+    "circle_speech_balloon_speech_speech_balloon_template": {\r
+      "fields": {\r
+        "r": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "name": {\r
-            "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
-          }\r
+          "row_break": true\r
+        }\r
+      }\r
+    },\r
+    "pettanr_pettan_commons_v01_licenses_license": {\r
+      "fields": {\r
+        "open": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
         },\r
-        "field_names": [\r
-          "id",\r
-          "name"\r
-        ]\r
-      },\r
-      "artist": {\r
-        "fields": {\r
-          "id": {\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
+        "commercial": {\r
+          "tag": {\r
+            "type": "number"\r
           },\r
-          "name": {\r
-            "args": {\r
-              "label": {\r
-                "args": {\r
-                  "row_break": true\r
-                }\r
-              },\r
-              "tag": {\r
-                "type": "text"\r
-              },\r
-              "row_break": true\r
-            }\r
-          }\r
+          "row_break": true\r
+        },\r
+        "official": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "attribution": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "derive": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "thumbnail": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "gif_convert": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "reverse": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "sync_vh": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "overlap": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        }\r
+      },\r
+      "field_names": [\r
+        "open",\r
+        "commercial",\r
+        "official",\r
+        "attribution:",\r
+        "derive",\r
+        "thumbnail",\r
+        "gif_convert",\r
+        "reverse",\r
+        "sync_vh",\r
+        "overlap"\r
+      ]\r
+    },\r
+    "pettanr_pettan_commons_v01_licenses_credit_picture": {\r
+      "fields": {\r
+        "source_url_btn_id": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        },\r
+        "source_url_off_btn_id": {\r
+          "tag": {\r
+            "type": "number"\r
+          },\r
+          "row_break": true\r
+        }\r
+      },\r
+      "field_names": [\r
+        "source_url_btn_id",\r
+        "source_url_off_btn_id"\r
+      ]\r
+    }\r
+  },\r
+  "buckets": {\r
+    "scroll": {},\r
+    "scroll_panel": {},\r
+    "comic": {},\r
+    "story": {},\r
+    "story_sheet": {},\r
+    "sheet": {},\r
+    "sheet_panel": {},\r
+    "panel": {},\r
+    "panel_picture": {},\r
+    "speech_balloon": {\r
+      "field_names": [\r
+        "speech_balloon.caption",\r
+        "speech_balloon.id",\r
+        "speech_balloon.panel_id",\r
+        "speech_balloon.speech_balloon_template_id",\r
+        "speech_balloon.speech_balloon_template_classname",\r
+        "speech_balloon.z",\r
+        "speech_balloon.t",\r
+        "speech_balloon_template_settings",\r
+        "balloon.r",\r
+        "balloon.x",\r
+        "balloon.y",\r
+        "balloon.width",\r
+        "balloon.height",\r
+        "balloon.id",\r
+        "balloon.speech_balloon_id",\r
+        "balloon.system_picture_id",\r
+        "balloon.speech_balloon_template_id",\r
+        "balloon.speech_balloon_template_classname",\r
+        "balloon.speech_balloon_template_settings",\r
+        "speech.writing_format_id",\r
+        "speech.font_size",\r
+        "speech.text_align",\r
+        "speech.quotes",\r
+        "speech.content",\r
+        "speech.fore_color",\r
+        "speech.id",\r
+        "speech.speech_balloon_id",\r
+        "speech.x",\r
+        "speech.y",\r
+        "speech.width",\r
+        "speech.height",\r
+        "speech.speech_balloon_template_id",\r
+        "speech.speech_balloon_template_classname",\r
+        "speech.speech_balloon_template_settings",\r
+        "speech.writing_format_classname",\r
+        "speech.writing_format_settings"\r
+      ]\r
+    },\r
+    "speech": {},\r
+    "balloon": {},\r
+    "ground_picture": {},\r
+    "ground_color": {},\r
+    "original_picture": {},\r
+    "picture": {},\r
+    "resource_picture": {},\r
+    "speech_balloon_template": {\r
+      "column_names": [\r
+        "name",\r
+        "classname",\r
+        "caption",\r
+        "t",\r
+        "system_picture_id",\r
+        "settings"\r
+      ],\r
+      "extend_settings": {\r
+        "circle_speech_balloon_speech_balloon": {\r
+          "columns": {},\r
+          "column_names": []\r
+        },\r
+        "circle_speech_balloon_balloon": {\r
+          "columns": {},\r
+          "column_names": []\r
         },\r
-        "field_names": [\r
-          "id",\r
-          "name"\r
+        "circle_speech_balloon_speech": {\r
+          "columns": {},\r
+          "column_names": []\r
+        },\r
+        "plain_speech_balloon_speech_balloon": {\r
+          "columns": {},\r
+          "column_names": []\r
+        },\r
+        "square_speech_balloon_speech_balloon": {\r
+          "columns": {},\r
+          "column_names": []\r
+        }\r
+      },\r
+      "associations": {\r
+        "belongs_to": [\r
+          "system_picture"\r
         ]\r
       }\r
     },\r
-    "extend": {\r
-      "CircleSpeechBalloon": {\r
-        "base": "speech_balloon",\r
-        "fields": {},\r
-        "field_names": [\r
-          "speech_balloon.caption",\r
-          "balloon.r",\r
-          "balloon.x",\r
-          "balloon.y",\r
-          "balloon.width",\r
-          "balloon.height",\r
-          "balloon.id",\r
-          "balloon.speech_balloon_id",\r
-          "balloon.system_picture_id",\r
-          "balloon.speech_balloon_template_id",\r
-          "balloon.speech_balloon_template_classname",\r
-          "balloon.speech_balloon_template_settings",\r
-          "speech.writing_format_id",\r
-          "speech.font_size",\r
-          "speech.text_align",\r
-          "speech.quotes",\r
-          "speech.content",\r
-          "speech.fore_color",\r
-          "speech.id",\r
-          "speech.speech_balloon_id",\r
-          "speech.x",\r
-          "speech.y",\r
-          "speech.width",\r
-          "speech.height",\r
-          "speech.speech_balloon_template_id",\r
-          "speech.speech_balloon_template_classname",\r
-          "speech.speech_balloon_template_settings",\r
-          "speech.writing_format_classname",\r
-          "speech.writing_format_settings",\r
-          "speech_balloon.id",\r
-          "speech_balloon.panel_id",\r
-          "speech_balloon.speech_balloon_template_id",\r
-          "speech_balloon.speech_balloon_template_classname",\r
-          "speech_balloon.z",\r
-          "speech_balloon.t",\r
-          "speech_balloon.speech_balloon_template_settings"\r
-        ]\r
+    "writing_format": {\r
+      "column_names": [\r
+        "name",\r
+        "classname",\r
+        "caption",\r
+        "system_picture_id",\r
+        "settings"\r
+      ],\r
+      "extend_settings": {\r
+        "pettanr_simple_format_writing_format": {\r
+          "columns": {},\r
+          "column_names": []\r
+        }\r
       },\r
-      "PlainSpeechBalloon": {\r
-        "base": "speech_balloon",\r
-        "fields": {\r
-          "balloon.r": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
-          }\r
+      "associations": {\r
+        "belongs_to": [\r
+          "system_picture"\r
+        ],\r
+        "has_many": []\r
+      }\r
+    },\r
+    "license_group": {\r
+      "column_names": [\r
+        "name",\r
+        "classname",\r
+        "caption",\r
+        "url"\r
+      ],\r
+      "extend_settings": {\r
+        "pettanr_pettan_commons_v01_licenses_license": {\r
+          "columns": {\r
+            "open": {},\r
+            "commercial": {},\r
+            "official": {},\r
+            "attribution": {},\r
+            "derive": {},\r
+            "thumbnail": {},\r
+            "gif_convert": {},\r
+            "reverse": {},\r
+            "sync_vh": {},\r
+            "overlap": {}\r
+          },\r
+          "column_names": [\r
+            "open",\r
+            "commercial",\r
+            "official",\r
+            "attribution:",\r
+            "derive",\r
+            "thumbnail",\r
+            "gif_convert",\r
+            "reverse",\r
+            "sync_vh",\r
+            "overlap"\r
+          ]\r
         },\r
-        "field_names": [\r
-          "speech_balloon.caption",\r
-          "balloon.r",\r
-          "balloon.x",\r
-          "balloon.y",\r
-          "balloon.width",\r
-          "balloon.height",\r
-          "balloon.id",\r
-          "balloon.speech_balloon_id",\r
-          "balloon.system_picture_id",\r
-          "balloon.speech_balloon_template_id",\r
-          "balloon.speech_balloon_template_classname",\r
-          "balloon.speech_balloon_template_settings",\r
-          "speech.writing_format_id",\r
-          "speech.font_size",\r
-          "speech.text_align",\r
-          "speech.quotes",\r
-          "speech.content",\r
-          "speech.fore_color",\r
-          "speech.id",\r
-          "speech.speech_balloon_id",\r
-          "speech.x",\r
-          "speech.y",\r
-          "speech.width",\r
-          "speech.height",\r
-          "speech.speech_balloon_template_id",\r
-          "speech.speech_balloon_template_classname",\r
-          "speech.speech_balloon_template_settings",\r
-          "speech.writing_format_classname",\r
-          "speech.writing_format_settings",\r
-          "speech_balloon.id",\r
-          "speech_balloon.panel_id",\r
-          "speech_balloon.speech_balloon_template_id",\r
-          "speech_balloon.speech_balloon_template_classname",\r
-          "speech_balloon.z",\r
-          "speech_balloon.t",\r
-          "speech_balloon.speech_balloon_template_settings"\r
-        ]\r
+        "pettanr_pettan_commons_v01_licenses_credit_picture": {\r
+          "columns": {},\r
+          "column_names": [\r
+            "source_url_btn_id",\r
+            "source_url_off_btn_id"\r
+          ]\r
+        }\r
       },\r
-      "SquareSpeechBalloon": {\r
-        "base": "speech_balloon",\r
-        "fields": {\r
-          "balloon.r": {\r
-            "type": "part",\r
-            "args": {\r
-              "label": {\r
-                "type": "none"\r
-              },\r
-              "tag": {\r
-                "type": "hidden"\r
-              }\r
-            }\r
-          }\r
-        },\r
-        "field_names": [\r
-          "speech_balloon.caption",\r
-          "balloon.r",\r
-          "balloon.x",\r
-          "balloon.y",\r
-          "balloon.width",\r
-          "balloon.height",\r
-          "balloon.id",\r
-          "balloon.speech_balloon_id",\r
-          "balloon.system_picture_id",\r
-          "balloon.speech_balloon_template_id",\r
-          "balloon.speech_balloon_template_classname",\r
-          "balloon.speech_balloon_template_settings",\r
-          "speech.writing_format_id",\r
-          "speech.font_size",\r
-          "speech.text_align",\r
-          "speech.quotes",\r
-          "speech.content",\r
-          "speech.fore_color",\r
-          "speech.id",\r
-          "speech.speech_balloon_id",\r
-          "speech.x",\r
-          "speech.y",\r
-          "speech.width",\r
-          "speech.height",\r
-          "speech.speech_balloon_template_id",\r
-          "speech.speech_balloon_template_classname",\r
-          "speech.speech_balloon_template_settings",\r
-          "speech.writing_format_classname",\r
-          "speech.writing_format_settings",\r
-          "speech_balloon.id",\r
-          "speech_balloon.panel_id",\r
-          "speech_balloon.speech_balloon_template_id",\r
-          "speech_balloon.speech_balloon_template_classname",\r
-          "speech_balloon.z",\r
-          "speech_balloon.t",\r
-          "speech_balloon.speech_balloon_template_settings"\r
+      "associations": {\r
+        "has_many": [\r
+          "licenses.by_license_group"\r
         ]\r
       }\r
-    }\r
+    },\r
+    "license": {\r
+      "columns": {\r
+        "license_group_settings": {\r
+          "type": "extend",\r
+          "args": {\r
+            "boost_name": "license_group"\r
+          }\r
+        },\r
+        "credit_picture_settings": {\r
+          "type": "extend",\r
+          "args": {\r
+            "boost_name": "credit_picture"\r
+          }\r
+        }\r
+      },\r
+      "column_names": [\r
+        "license_group_id",\r
+        "license_group_classname",\r
+        "name",\r
+        "caption",\r
+        "system_picture_id",\r
+        "url",\r
+        "license_group_settings",\r
+        "credit_picture_settings"\r
+      ]\r
+    },\r
+    "author": {},\r
+    "artist": {},\r
+    "system_picture": {}\r
   }\r
 }
\ No newline at end of file