From 8faa702174a3597f3458df1743eb426279ca4164 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Sun, 27 Apr 2014 14:02:41 +0900 Subject: [PATCH] add folder --- .../manifest/work/controllers.js.coffee.erb | 28 ++++ .../javascripts/manifest/work/filers.js.coffee.erb | 19 +++ .../javascripts/manifest/work/forms.js.coffee.erb | 77 +++++++++++ .../javascripts/manifest/work/items.js.coffee.erb | 2 + .../manifest/work/list_groups.js.coffee.erb | 7 + .../javascripts/manifest/work/models.js.coffee.erb | 99 +++++++++----- .../manifest/work/profilers.js.coffee.erb | 29 +++-- app/assets/stylesheets/test.css.scss | 4 + app/controllers/folders_controller.rb | 33 ++++- app/controllers/original_pictures_controller.rb | 1 + app/controllers/pictures_controller.rb | 1 + app/controllers/resource_pictures_controller.rb | 1 + app/models/folder.rb | 142 ++++++++++++++++++++- app/views/folders/_summary.html.erb | 3 + app/views/folders/show.html.erb | 11 ++ app/views/layouts/application.html.erb | 18 +-- app/views/original_pictures/_exist.html.erb | 2 +- app/views/templates/r/form/_extend_form.html.erb | 1 + config/locales/pettanr.ja.yml | 34 ++++- config/routes.rb | 17 +++ ...d_system_picture_id_on_resource_picture_data.rb | 10 ++ ...folders.rb => 20140425021754_create_folders.rb} | 6 +- lib/locmare/form.rb | 7 +- public/images/folder.gif | Bin 0 -> 1622 bytes public/local_manifest.json | 128 +++++++++++++++++-- public/manifest.json | 131 +++++++++++++------ 26 files changed, 678 insertions(+), 133 deletions(-) create mode 100644 app/views/folders/_summary.html.erb create mode 100644 app/views/folders/show.html.erb rename db/migrate/{20140415021754_create_folders.rb => 20140425021754_create_folders.rb} (76%) create mode 100644 public/images/folder.gif diff --git a/app/assets/javascripts/manifest/work/controllers.js.coffee.erb b/app/assets/javascripts/manifest/work/controllers.js.coffee.erb index 687dad97..3d9f3c39 100644 --- a/app/assets/javascripts/manifest/work/controllers.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/controllers.js.coffee.erb @@ -1,5 +1,33 @@ #マニフェスト @controllers = { + folders: { + actions: { + root: { + type: 'show', + }, + index: { + type: 'list', + args: { + list_name: 'public', + }, + }, + show: { + type: 'show', + }, + count: { + type: 'count', + args: { + list_name: 'public', + }, + }, + new: { + type: 'new', + }, + edit: { + type: 'edit', + }, + }, + }, scrolls: { actions: { index: { diff --git a/app/assets/javascripts/manifest/work/filers.js.coffee.erb b/app/assets/javascripts/manifest/work/filers.js.coffee.erb index 97818ff5..2ac275da 100644 --- a/app/assets/javascripts/manifest/work/filers.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/filers.js.coffee.erb @@ -1,5 +1,24 @@ #マニフェスト @filers = { + folder: { + symbol: { + }, + caption: { + type: 'default', + args: { + face: { + type: 'method', + args: { + method_name: 'caption', + }, + }, + }, + }, + summary: { + }, + edit: { + }, + }, scroll: { symbol: { }, diff --git a/app/assets/javascripts/manifest/work/forms.js.coffee.erb b/app/assets/javascripts/manifest/work/forms.js.coffee.erb index d436a49f..161bb70d 100644 --- a/app/assets/javascripts/manifest/work/forms.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/forms.js.coffee.erb @@ -1,5 +1,82 @@ #マニフェスト @forms = { + folder: { + fields: { + name: { + tag: { + type: 'text', + }, + row_break: true, + }, + controller_name: { + tag: { + type: 'text', + }, + row_break: true, + }, + action_name: { + tag: { + type: 'text', + }, + row_break: true, + }, + category_id: { + tag: { + type: 'number', + }, + row_break: true, + }, + t: { + tag: { + type: 'number', + }, + row_break: true, + }, + parent_id: { + tag: { + type: 'number', + }, + row_break: true, + }, + lft: { + tag: { + type: 'number', + }, + row_break: true, + }, + rgt: { + tag: { + type: 'number', + }, + row_break: true, + }, + depth: { + tag: { + type: 'number', + }, + row_break: true, + }, + id: { + label: { + type: 'none', + }, + tag: { + type: 'hidden', + }, + }, + }, + field_names: [ + 'controller_name', + 'action_name', + 'category_id', + 't', + 'parent_id', + 'lft', + 'rgt', + 'depth', + 'id', + ] + }, scroll: { fields: { title: { diff --git a/app/assets/javascripts/manifest/work/items.js.coffee.erb b/app/assets/javascripts/manifest/work/items.js.coffee.erb index e4ba0441..27b58114 100644 --- a/app/assets/javascripts/manifest/work/items.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/items.js.coffee.erb @@ -1,5 +1,7 @@ #マニフェスト @items = { + folder: { + }, scroll: { type: 'binder', args: { diff --git a/app/assets/javascripts/manifest/work/list_groups.js.coffee.erb b/app/assets/javascripts/manifest/work/list_groups.js.coffee.erb index 6d116ab3..a57ad71e 100644 --- a/app/assets/javascripts/manifest/work/list_groups.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/list_groups.js.coffee.erb @@ -1,5 +1,12 @@ #マニフェスト @list_groups = { + folder: { + lists: { + public: { + type: 'public', + }, + }, + }, scroll: { lists: { public: { diff --git a/app/assets/javascripts/manifest/work/models.js.coffee.erb b/app/assets/javascripts/manifest/work/models.js.coffee.erb index 4a197d3e..58cdd7ff 100644 --- a/app/assets/javascripts/manifest/work/models.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/models.js.coffee.erb @@ -1,5 +1,69 @@ #マニフェスト @models = { + folder: { + associations: { + belongs_to: { + }, + has_many: { + }, + }, + attributes: { + name: { + type: 'text', + rules : { + required: true, + } + }, + controller_name: { + type: 'text', + rules : { + } + }, + action_name: { + type: 'text', + rules : { + } + }, + category_id: { + type: 'number', + }, + t: { + type: 'number', + rules : { + required: true, + number: true, + }, + }, + parent_id: { + type: 'number', + rules : { + required: true, + number: true, + }, + }, + lft: { + type: 'number', + rules : { + required: true, + number: true, + }, + }, + rgt: { + type: 'number', + rules : { + required: true, + number: true, + }, + }, + depth: { + type: 'number', + rules : { + required: true, + number: true, + }, + }, + }, + }, scroll: { associations: { belongs_to: { @@ -1693,13 +1757,6 @@ number: true, } }, - system_picture_id: { - type: 'number', - rules : { - required: true, - number: true, - } - }, artist_name: { type: 'text', rules : { @@ -1829,13 +1886,6 @@ number: true, } }, - system_picture_id: { - type: 'number', - rules : { - required: true, - number: true, - } - }, artist_name: { type: 'text', rules : { @@ -1964,13 +2014,6 @@ number: true, } }, - system_picture_id: { - type: 'number', - rules : { - required: true, - number: true, - } - }, artist_name: { type: 'text', rules : { @@ -2092,13 +2135,6 @@ number: true, } }, - system_picture_id: { - type: 'number', - rules : { - required: true, - number: true, - } - }, artist_name: { type: 'text', rules : { @@ -2227,13 +2263,6 @@ number: true, } }, - system_picture_id: { - type: 'number', - rules : { - required: true, - number: true, - } - }, artist_name: { type: 'text', rules : { diff --git a/app/assets/javascripts/manifest/work/profilers.js.coffee.erb b/app/assets/javascripts/manifest/work/profilers.js.coffee.erb index b047fd16..f4280e3b 100644 --- a/app/assets/javascripts/manifest/work/profilers.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/profilers.js.coffee.erb @@ -1,5 +1,22 @@ #マニフェスト @profilers = { + folder: { + columns: { + }, + column_names: [ + 'name', + 'controller_name', + 'action_name', + 'category_id', + 't', + 'parent_id', + 'lft', + 'rgt', + 'depth', + ], + associations: { + }, + }, scroll: { columns: { visible: { @@ -544,8 +561,6 @@ columns: { }, column_names: [ - 'license_id', - 'system_picture_id', 'artist_name', 'caption', 'artist_url', @@ -581,8 +596,6 @@ columns: { }, column_names: [ - 'license_id', - 'system_picture_id', 'artist_name', 'caption', 'sources', @@ -617,8 +630,6 @@ columns: { }, column_names: [ - 'license_id', - 'system_picture_id', 'artist_name', 'caption', 'sources', @@ -652,8 +663,6 @@ columns: { }, column_names: [ - 'license_id', - 'system_picture_id', 'artist_name', 'caption', 'sources', @@ -688,8 +697,6 @@ columns: { }, column_names: [ - 'license_id', - 'system_picture_id', 'artist_name', 'source_url', 'note', @@ -724,8 +731,6 @@ columns: { }, column_names: [ - 'license_id', - 'system_picture_id', 'source_url', 'note', ], diff --git a/app/assets/stylesheets/test.css.scss b/app/assets/stylesheets/test.css.scss index 9c1c215d..b878e3f0 100644 --- a/app/assets/stylesheets/test.css.scss +++ b/app/assets/stylesheets/test.css.scss @@ -361,6 +361,10 @@ font-family : monospace; margin-left: 20px; } +.extend-field { + margin-left: 20px; +} + .filer { list-style-type: none; margin: 0; diff --git a/app/controllers/folders_controller.rb b/app/controllers/folders_controller.rb index 318f1c84..fd8411e7 100644 --- a/app/controllers/folders_controller.rb +++ b/app/controllers/folders_controller.rb @@ -2,7 +2,7 @@ class FoldersController < ApplicationController if Manifest.manifest.magic_numbers['run_mode'] == 0 before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy] else - before_filter :authenticate_reader, :only => [:index, :show] + before_filter :authenticate_reader, :only => [:root, :index, :show] before_filter :authenticate_admin, :only => [:new, :create, :edit, :update, :destroy] end @@ -10,22 +10,43 @@ class FoldersController < ApplicationController Folder end + def root + set_model + @item = Folder.root + respond_to do |format| + show_html_format format + show_json_format format + end + end + def index filer_list end def show_html_format format format.html { - @folder = @item + @filer = Locmare::Filer.new self.class.model.item_name, @item.children, nil, :none, @operators + render :action => :show + } + end + + def show_json_format format + format.json { + @items = @item.children + render json: @items.to_json(self.class.model.list_json_opt) } end def show set_show - respond_to do |format| - show_html_format format - show_prof_format format - show_json_format format + if @item.category_id == 10 + redirect_to @item.remote_name + else + respond_to do |format| + show_html_format format + show_prof_format format + show_json_format format + end end end diff --git a/app/controllers/original_pictures_controller.rb b/app/controllers/original_pictures_controller.rb index 0c5801b2..6daff6e6 100644 --- a/app/controllers/original_pictures_controller.rb +++ b/app/controllers/original_pictures_controller.rb @@ -14,6 +14,7 @@ class OriginalPicturesController < ApplicationController def show_html_format format format.html { + @item.boosts 'post' @original_picture = @item #ライセンス付与のために原画ライセンスグループ作成準備 @original_picture_license_group = OriginalPictureLicenseGroup.new :original_picture_id => @item.id diff --git a/app/controllers/pictures_controller.rb b/app/controllers/pictures_controller.rb index b4c6d8e4..6ebc5bf0 100644 --- a/app/controllers/pictures_controller.rb +++ b/app/controllers/pictures_controller.rb @@ -19,6 +19,7 @@ class PicturesController < ApplicationController def show_html_format format format.html { + @item.boosts 'post' @picture = @item } end diff --git a/app/controllers/resource_pictures_controller.rb b/app/controllers/resource_pictures_controller.rb index 45201cb5..abf4225b 100644 --- a/app/controllers/resource_pictures_controller.rb +++ b/app/controllers/resource_pictures_controller.rb @@ -32,6 +32,7 @@ class ResourcePicturesController < ApplicationController def show_html_format format format.html { + @item.boosts 'post' @resource_picture = @item } end diff --git a/app/models/folder.rb b/app/models/folder.rb index c3c8673c..b6546daf 100644 --- a/app/models/folder.rb +++ b/app/models/folder.rb @@ -1,16 +1,152 @@ -class Folder < Peta::Item +class Folder < Peta::SystemResource acts_as_nested_set + validates :name, :presence => true, :uniqueness => true, :length => {:maximum => 200} validates :controller_name, :length => {:maximum => 200} validates :action_name, :length => {:maximum => 200} validates :category_id, :presence => true, :numericality => true validates :t, :presence => true, :numericality => true + #remove last dir name + def dir + r = name.split('/') + r.pop + r.join '/' + end + + def caption + name.gsub(/\/$/, '').split('/').last + end + + def remote_name + '/' + self.controller_name.to_s + '/' + self.action_name.to_s + end + + def self.add_local parent, name + key = parent.name + name + '/' + if i = self.find_by_name(key) + else + i = self.create :name => key, :category_id => 0, :t => 0 + end + i.move_to_child_of parent + i + end + + def self.add_remote parent, name, controller_name = nil, action_name = nil + key = parent.name + name + '/' + if i = self.find_by_name(key) + else + i = self.create :name => key, :category_id => 10, :t => 0, + :controller_name => (controller_name || name), + :action_name => action_name + end + i.move_to_child_of parent + i + end + def self.generate - if self.root + if r = self.find_by_name('/') else - self.create :category_id => 0 + r = self.create :name => '/', :category_id => 0, :t => 0 end + # + # child of root + # + manga = self.add_local r, 'manga' + o = self.add_local r, 'people' + doc = self.add_local r, 'documents' + mydoc = self.add_local r, 'my documents' + sr = self.add_local r, 'system_resource' + + # child of /manga + manga_scroll = self.add_remote manga, 'scrolls' + manga_panel = self.add_remote manga, 'panels' + + # child of /people (owner) + au = self.add_remote o, 'authors' + ar = self.add_remote o, 'artists' + + # child of /documents + docman = self.add_local doc, 'manga' + docpic = self.add_local doc, 'pictures' + docparts = self.add_local doc, 'parts' + docidx = self.add_local doc, 'index' + # child of /documents/manga + docman_scroll = self.add_remote docman, 'scrolls' + docman_panel = self.add_remote docman, 'panels' + # child of /documents/pictures + docpic_resource_picture = self.add_remote docpic, 'resource_pictures' + # child of /documents/parts + docparts_panel_picture = self.add_remote docparts, 'panel_pictures' + docparts_speech_balloon = self.add_remote docparts, 'speech_balloons' + docparts_balloon = self.add_remote docparts, 'balloons' + docparts_speech = self.add_remote docparts, 'speeches' + docparts_ground_picture = self.add_remote docparts, 'ground_pictures' + docparts_ground_color = self.add_remote docparts, 'ground_colors' + # child of /documents/index (all public contents) + docidx_scroll = self.add_remote docidx, 'scrolls' + docidx_scroll_panel = self.add_remote docidx, 'scroll_panels' + docidx_comic = self.add_remote docidx, 'comics' + docidx_story = self.add_remote docidx, 'stories' + docidx_story_sheet = self.add_remote docidx, 'story_sheets' + docidx_sheet = self.add_remote docidx, 'sheets' + docidx_sheet_panel = self.add_remote docidx, 'sheet_panels' + docidx_panel = self.add_remote docidx, 'panels' + docidx_panel_picture = self.add_remote docidx, 'panel_pictures' + docidx_speech_balloon = self.add_remote docidx, 'speech_balloons' + docidx_balloon = self.add_remote docidx, 'balloons' + docidx_speech = self.add_remote docidx, 'speeches' + docidx_ground_picture = self.add_remote docidx, 'ground_pictures' + docidx_ground_color = self.add_remote docidx, 'ground_colors' + docidx_resource_picture = self.add_remote docidx, 'resource_pictures' + + # child of /my documents + mydocman = self.add_local mydoc, 'manga' + mydocpic = self.add_local mydoc, 'pictures' + mydocparts = self.add_local mydoc, 'parts' + mydocidx = self.add_local mydoc, 'index' + mydocedt = self.add_local mydoc, 'create' + # child of /my documents/manga + mydocman_scroll = self.add_remote mydocman, 'scrolls', 'home', 'scrolls' + mydocman_panel = self.add_remote mydocman, 'panels', 'home', 'panels' + # child of /my documents/pictures + mydocpic_original_picture = self.add_remote mydocpic, 'original_pictures' + mydocpic_resource_picture = self.add_remote mydocpic, 'resource_pictures', 'home', 'resource_pictures' + # child of /my documents/parts + mydocparts_panel_picture = self.add_remote mydocparts, 'panel_pictures' + mydocparts_speech_balloon = self.add_remote mydocparts, 'speech_balloons' + mydocparts_balloon = self.add_remote mydocparts, 'balloons' + mydocparts_speech = self.add_remote mydocparts, 'speeches' + mydocparts_ground_picture = self.add_remote mydocparts, 'ground_pictures' + mydocparts_ground_color = self.add_remote mydocparts, 'ground_colors' + # child of /my documents/index + mydocidx_scroll = self.add_remote mydocidx, 'scrolls' + mydocidx_scroll_panel = self.add_remote mydocidx, 'scroll_panels' + mydocidx_comic = self.add_remote mydocidx, 'comics' + mydocidx_story = self.add_remote mydocidx, 'stories' + mydocidx_story_sheet = self.add_remote mydocidx, 'story_sheets' + mydocidx_sheet = self.add_remote mydocidx, 'sheets' + mydocidx_sheet_panel = self.add_remote mydocidx, 'sheet_panels' + mydocidx_panel = self.add_remote mydocidx, 'panels' + mydocidx_panel_picture = self.add_remote mydocidx, 'panel_pictures' + mydocidx_speech_balloon = self.add_remote mydocidx, 'speech_balloons' + mydocidx_balloon = self.add_remote mydocidx, 'balloons' + mydocidx_speech = self.add_remote mydocidx, 'speeches' + mydocidx_ground_picture = self.add_remote mydocidx, 'ground_pictures' + mydocidx_ground_color = self.add_remote mydocidx, 'ground_colors' + mydocpic_original_picture = self.add_remote mydocpic, 'original_pictures' + mydocidx_resource_picture = self.add_remote mydocidx, 'resource_pictures' + # child of /my documents/create + mydocedt_scroll = self.add_remote mydocedt, 'new scroll', 'scrolls', 'new' + mydocedt_panel = self.add_remote mydocedt, 'new panel', 'panels', 'new' + mydocedt_original_picture = self.add_remote mydocedt, 'upload picture', 'original_pictures', 'new' + + # child of /system_resource + sbt = self.add_remote sr, 'speech_balloon_templates' + lg = self.add_remote sr, 'license_groups' + ls = self.add_remote sr, 'licenses' + sp = self.add_remote sr, 'system_pictures' + wf = self.add_remote sr, 'writing_formats' end diff --git a/app/views/folders/_summary.html.erb b/app/views/folders/_summary.html.erb new file mode 100644 index 00000000..1cb4fcb0 --- /dev/null +++ b/app/views/folders/_summary.html.erb @@ -0,0 +1,3 @@ +
+ <%= item.category_id %> +
diff --git a/app/views/folders/show.html.erb b/app/views/folders/show.html.erb new file mode 100644 index 00000000..e64377bf --- /dev/null +++ b/app/views/folders/show.html.erb @@ -0,0 +1,11 @@ +
+ <% @item.self_and_ancestors.each do |f| %> + + <%= link_to_if f.child?, f.caption, folder_path(f) %> + + + <%= link_to_if f.root?, '/', folder_path(f) %> + + <% end %> +
+<%= render @filer.template_name, :filer => @filer %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 64487ade..765f3810 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -51,24 +51,15 @@
+ <%= link_to t_m('Folder'), main_app.root_folders_path() %> + : <%= link_to t('tab.reader.title'), '/' %> - <%= link_to t_m('Comic'), main_app.comics_path %> <%= link_to t_m('Scroll'), main_app.scrolls_path %> <%= link_to t_m('Panel'), main_app.panels_path %> <%= link_to t_m('ResourcePicture'), main_app.resource_pictures_path %> - <%= link_to t_m('SpeechBalloonTemplate'), main_app.speech_balloon_templates_path %> - : - <%= link_to t_m('Author'), main_app.authors_path %> - <%= link_to t_m('Artist'), main_app.artists_path %> -
-
+ : <%= link_to t('tab.creator.home'), '/home' %> <% if @operators.author %> - <%= link_to t('tab.creator.comic'), '/home/comics' %> - <%= link_to t('*'), main_app.new_comic_path %> - <%= link_to t('tab.creator.story'), '/home/stories' %> - <%= link_to t('tab.creator.sheet'), '/home/sheets' %> - <%= link_to t('*'), main_app.new_sheet_path %> <%= link_to t('tab.creator.scroll'), '/home/scrolls' %> <%= link_to t('*'), main_app.new_scroll_path %> <%= link_to t('tab.creator.panel'), '/home/panels' %> @@ -79,9 +70,6 @@ <%= link_to t('*'), main_app.new_original_picture_path %> <%= link_to t('tab.creator.resource_picture'), '/home/resource_pictures' %> <% end %> - <% if @operators.author and @operators.author.working? -%> - <%= link_to t('tab.creator..catch'), main_app.panel_path(@operators.author.working_panel) %> - <% end %>
<%= yield %>
diff --git a/app/views/original_pictures/_exist.html.erb b/app/views/original_pictures/_exist.html.erb index 66df3343..a4336a63 100644 --- a/app/views/original_pictures/_exist.html.erb +++ b/app/views/original_pictures/_exist.html.erb @@ -10,7 +10,7 @@ <% pictures.each do |picture| %> - <% if picture.showable? @author %> + <% if picture.showable? @operators %> <%= link_to tag(:img, picture.tmb_opt_img_tag), picture %> diff --git a/app/views/templates/r/form/_extend_form.html.erb b/app/views/templates/r/form/_extend_form.html.erb index 2432c7dd..2668e96d 100644 --- a/app/views/templates/r/form/_extend_form.html.erb +++ b/app/views/templates/r/form/_extend_form.html.erb @@ -1,4 +1,5 @@ <%= fields_for(form.field_name, form.item) do |sf| %> <%= render 'system/error_explanation', :obj => form.item %> + <%= render form.label.template_name, :label => form.label %> <%= render form.fields_template_name, :form => form %> <% end %> diff --git a/config/locales/pettanr.ja.yml b/config/locales/pettanr.ja.yml index 33ec79a3..3e36d4cf 100644 --- a/config/locales/pettanr.ja.yml +++ b/config/locales/pettanr.ja.yml @@ -18,6 +18,7 @@ ja: user: ユーザ admin: 管理者 demand_user: 借手 + folder: フォルダ scroll: スクロール scroll_panel: スクコマ comic: コミック @@ -78,6 +79,15 @@ ja: current_password: 現在のパスワード remember_me: 次回から自動でログイン authentication_token: 認証トークン + folder: + controller_name: コントローラ名 + action_name: アクション名 + category_id: 種別 + t: 順序 + parent_id: 親フォルダ + lft: ツリー左 + rgt: ツリー右 + depth: ツリー深さ scroll: title: タイトル description: あらすじ @@ -481,7 +491,7 @@ ja: artist_name: 著作者名 caption: 作品の名前 source_url: 参考にした画像のURL - note: 参考にした画像のURL + note: 備考 pettanr_unknown_v01_licenses/license: open: クローズドな利用 commercial: 商用利用 @@ -501,7 +511,7 @@ ja: license_id: ライセンスID system_picture_id: マーク画像ID source_url: 参考にした画像のURL - note: 参考にした画像のURL + note: 備考 picture_io: error: 画像保管庫との手続きで異常が発生しました。 select_items: @@ -677,6 +687,26 @@ ja: human_resources: 人物から system_resources: システムリソースから return: シンプル版に戻る + folders: + root: + title: フォルダ + index: + title: フォルダ一覧 + show: + title: フォルダ詳細 + new: + title: フォルダ作成 + edit: + title: フォルダ変更 + create: + title: フォルダ作成 + update: + title: フォルダ変更 + destroy: + title: フォルダ削除 + submit: + new: フォルダ作成 + edit: フォルダ変更 scrolls: scroll_panels_count: '%{c}コマ' index: diff --git a/config/routes.rb b/config/routes.rb index ad38cdac..6d9c7f7c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,6 +12,23 @@ Pettanr::Application.routes.draw do end end + resources :folders do + new do + get :new + end + collection do + get :root + get :index + get :show + get :count + post :create + end + member do + get :edit + put :update + delete :destroy + end + end resources :scrolls do new do get :new diff --git a/db/migrate/20140422233206_add_system_picture_id_on_resource_picture_data.rb b/db/migrate/20140422233206_add_system_picture_id_on_resource_picture_data.rb index bac07109..3a7b73f0 100644 --- a/db/migrate/20140422233206_add_system_picture_id_on_resource_picture_data.rb +++ b/db/migrate/20140422233206_add_system_picture_id_on_resource_picture_data.rb @@ -8,6 +8,11 @@ class AddSystemPictureIdOnResourcePictureData < ActiveRecord::Migration s.delete 'resize' i.license_group_settings = s.to_json end + s = JSON.parse i.license_settings + if s['system_picture_id'] + s.delete 'system_picture_id' + i.license_settings = s.to_json + end i.boosts 'post' i.save! end @@ -20,6 +25,11 @@ class AddSystemPictureIdOnResourcePictureData < ActiveRecord::Migration s.delete 'resize' i.license_group_settings = s.to_json end + s = JSON.parse i.license_settings + if s['system_picture_id'] + s.delete 'system_picture_id' + i.license_settings = s.to_json + end i.boosts 'post' i.save! end diff --git a/db/migrate/20140415021754_create_folders.rb b/db/migrate/20140425021754_create_folders.rb similarity index 76% rename from db/migrate/20140415021754_create_folders.rb rename to db/migrate/20140425021754_create_folders.rb index 265e3790..772280a4 100644 --- a/db/migrate/20140415021754_create_folders.rb +++ b/db/migrate/20140425021754_create_folders.rb @@ -1,8 +1,10 @@ class CreateFolders < ActiveRecord::Migration def change + drop_table :folders create_table :folders do |t| - t.string :controller_name, :null => false - t.string :action_name, :null => false + t.string :name, :null => false + t.string :controller_name + t.string :action_name t.integer :category_id, :null => false, :default => 0 t.integer :t, :null => false, :default => 0 t.integer :parent_id diff --git a/lib/locmare/form.rb b/lib/locmare/form.rb index d2463d31..4f3bc9ba 100644 --- a/lib/locmare/form.rb +++ b/lib/locmare/form.rb @@ -4,7 +4,7 @@ require_dependency "locmare/form/extend_field" module Locmare class FormBase include FormModule - attr :form_name, :item, :mounted, :operators, :template_dir, + attr :manifest, :form_name, :item, :mounted, :operators, :template_dir, :fields def initialize form_name, item, mounted, operators @form_name = form_name @@ -86,12 +86,15 @@ module Locmare end class ExtendForm < FormBase - attr :parent, :field_name + include FieldModule + attr :parent, :field_name, :field, :label def initialize parent, form_name, item, mounted, operators, field_name @parent = parent @field_name = field_name super form_name, item, mounted, operators + @field = Field.new @parent, @field_name, @parent.manifest.fields[@field_name] + @label = @field.label self.init_fields end diff --git a/public/images/folder.gif b/public/images/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..87324411b2205f80e2beea029f422c0d225168bf GIT binary patch literal 1622 zcmW-feN@op702&3U$C~)T57hY;3y9dVtIASG!2vh~N8lKofYab_Py{7V1{KiY5@;g=AuxgjH8g+* z(GVI&BWM&YphdKVmeC4YMGw$J^awphPta5J0ewWD&}Z}oeMJZ85FMdobb?M%0TodR zl~DyX=pz^#35b9RBxs8akU=s;hRFySB@1McERkihLRQHG@{l|tkI57Alzbo`$tUue zd?8=S0XZZ`cGHP&^Wk#S`&Vd=MYSC-GT)5nsiDI21?XSe%GcQ4mE@ z5@k^l)w@9m+z5~aeFeoJ3I^1m8dAe*M2)HiwWyZVvRYBA>VbNw9;wIbiF&F&sE_KC z`mDaFuj)V@sv~u*PSo8M3xXE79Uu?pz9)V!_4l?Ag>MJ^Y{t7a|0)W3IAZ?EcWaLp z4;*x)XhPD$V`YQ!l?%J}jXbeofIC*y_(03#te%-WlDRwcqspjx`&Y+5xHI|#_?B2F9`=jcfO}()>JtO|H{QBoj+e7}eAhCAZo~jS3lD?X}cftB!j-O#O zo11?6eCKy8JNECLn)A2$iSK+p`R^I`m&Q)A5vTqd+rHxQ`_5fDwR%kZ6e!? z{&_9Zz4x2xuUEWWIr{QDQ~RghIki1+>A9mBbNZHcUu|tpdFy}u?mU*8{ob0GIr{J0 zk4*Tapf!Efn8XW_XPQo4%x(DbtKan;?}|wrGG*W1G<~-A#IRY(zwVp5aMR84m5Xxz z7=AY8^x7v{e)qw_!53otrF=8ug&(C%{7*)oXI)!y_Mo%>O@DjzsL;Z&(td5fJzTQ0 zHFf;5-q5x8T~4kk4?mP*XO}L!{OGds@VR065r_LH<;3y05v!j1)s@G}2X`iKjhj}V zAG$bh&Ga4Xo{rBtn>zFSuDXmlSwpM0UVEgeJZ?q(&iZ)?@h`ToA00KSVRcs2@!^Hb zf8I2*V*lx_^_vE?lx*1$`NI=KGMmHQq6Oa{ygITvtNqFO2@m8}hHV`3(6`m=(&8J_ z3$~PhGjzkzgA?kjwjI`jmfEuP8}++a4LA@{o!xuMH9kfD@S>4ei>i?NnND&o+g`0&fp&>Uw77flmjmKUrP4u612b!^rTqin_0( jr=xw%t7U!rz@+~J(~}wd literal 0 HcmV?d00001 diff --git a/public/local_manifest.json b/public/local_manifest.json index 3de3b5ae..458e7e1c 100644 --- a/public/local_manifest.json +++ b/public/local_manifest.json @@ -1,5 +1,12 @@ { "list_groups": { + "folder": { + "lists": { + "public": { + "type": "public" + } + } + }, "scroll": { "lists": { "public": { @@ -432,6 +439,21 @@ } }, "profilers": { + "folder": { + "columns": {}, + "column_names": [ + "name", + "controller_name", + "action_name", + "category_id", + "t", + "parent_id", + "lft", + "rgt", + "depth" + ], + "associations": {} + }, "scroll": { "columns": { "visible": { @@ -791,7 +813,6 @@ }, "column_names": [ "original_picture_id", - "revision", "ext", "width", "height", @@ -949,8 +970,6 @@ "pettanr_creative_commons_v30_licenses_attribute": { "columns": {}, "column_names": [ - "license_id", - "system_picture_id", "artist_name", "caption", "artist_url", @@ -983,8 +1002,6 @@ "pettanr_pettan_commons_v01_licenses_attribute": { "columns": {}, "column_names": [ - "license_id", - "system_picture_id", "artist_name", "caption", "sources" @@ -1016,8 +1033,6 @@ "pettanr_pettan_protected_v01_licenses_attribute": { "columns": {}, "column_names": [ - "license_id", - "system_picture_id", "artist_name", "caption", "sources" @@ -1048,8 +1063,6 @@ "pettanr_pettan_public_v01_licenses_attribute": { "columns": {}, "column_names": [ - "license_id", - "system_picture_id", "artist_name", "caption", "sources" @@ -1081,8 +1094,6 @@ "pettanr_public_domain_v01_licenses_attribute": { "columns": {}, "column_names": [ - "license_id", - "system_picture_id", "artist_name", "source_url", "note" @@ -1114,8 +1125,6 @@ "pettanr_unknown_v01_licenses_attribute": { "columns": {}, "column_names": [ - "license_id", - "system_picture_id", "source_url", "note" ] @@ -1238,6 +1247,22 @@ } }, "filers": { + "folder": { + "symbol": {}, + "caption": { + "type": "default", + "args": { + "face": { + "type": "method", + "args": { + "method_name": "caption" + } + } + } + }, + "summary": {}, + "edit": {} + }, "scroll": { "symbol": {}, "caption": { @@ -1712,6 +1737,83 @@ } }, "forms": { + "folder": { + "fields": { + "name": { + "tag": { + "type": "text" + }, + "row_break": true + }, + "controller_name": { + "tag": { + "type": "text" + }, + "row_break": true + }, + "action_name": { + "tag": { + "type": "text" + }, + "row_break": true + }, + "category_id": { + "tag": { + "type": "number" + }, + "row_break": true + }, + "t": { + "tag": { + "type": "number" + }, + "row_break": true + }, + "parent_id": { + "tag": { + "type": "number" + }, + "row_break": true + }, + "lft": { + "tag": { + "type": "number" + }, + "row_break": true + }, + "rgt": { + "tag": { + "type": "number" + }, + "row_break": true + }, + "depth": { + "tag": { + "type": "number" + }, + "row_break": true + }, + "id": { + "label": { + "type": "none" + }, + "tag": { + "type": "hidden" + } + } + }, + "field_names": [ + "controller_name", + "action_name", + "category_id", + "t", + "parent_id", + "lft", + "rgt", + "depth", + "id" + ] + }, "scroll": { "fields": { "title": { diff --git a/public/manifest.json b/public/manifest.json index 8081e9cc..9a098056 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,5 +1,6 @@ { "items": { + "folder": {}, "scroll": { "type": "binder", "args": {} @@ -184,6 +185,34 @@ "system_picture": {} }, "controllers": { + "folders": { + "actions": { + "root": { + "type": "show" + }, + "index": { + "type": "list", + "args": { + "list_name": "public" + } + }, + "show": { + "type": "show" + }, + "count": { + "type": "count", + "args": { + "list_name": "public" + } + }, + "new": { + "type": "new" + }, + "edit": { + "type": "edit" + } + } + }, "scrolls": { "actions": { "index": { @@ -1145,6 +1174,66 @@ } }, "models": { + "folder": { + "associations": { + "belongs_to": {}, + "has_many": {} + }, + "attributes": { + "name": { + "type": "text", + "rules": { + "required": true + } + }, + "controller_name": { + "type": "text", + "rules": {} + }, + "action_name": { + "type": "text", + "rules": {} + }, + "category_id": { + "type": "number" + }, + "t": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "parent_id": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "lft": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "rgt": { + "type": "number", + "rules": { + "required": true, + "number": true + } + }, + "depth": { + "type": "number", + "rules": { + "required": true, + "number": true + } + } + } + }, "scroll": { "associations": { "belongs_to": { @@ -2229,13 +2318,6 @@ "number": true } }, - "revision": { - "type": "number", - "rules": { - "required": true, - "number": true - } - }, "ext": { "type": "text", "rules": { @@ -2726,13 +2808,6 @@ "number": true } }, - "system_picture_id": { - "type": "number", - "rules": { - "required": true, - "number": true - } - }, "artist_name": { "type": "text", "rules": { @@ -2858,13 +2933,6 @@ "number": true } }, - "system_picture_id": { - "type": "number", - "rules": { - "required": true, - "number": true - } - }, "artist_name": { "type": "text", "rules": { @@ -2993,13 +3061,6 @@ "number": true } }, - "system_picture_id": { - "type": "number", - "rules": { - "required": true, - "number": true - } - }, "artist_name": { "type": "text", "rules": { @@ -3121,13 +3182,6 @@ "number": true } }, - "system_picture_id": { - "type": "number", - "rules": { - "required": true, - "number": true - } - }, "artist_name": { "type": "text", "rules": { @@ -3256,13 +3310,6 @@ "number": true } }, - "system_picture_id": { - "type": "number", - "rules": { - "required": true, - "number": true - } - }, "artist_name": { "type": "text", "rules": { -- 2.11.0