@items = list_result.items
respond_to do |format|
format.html {
- @filer = Locmare::Filer.new @list.item_name, list_result.items, list_result.paginate, @operators
+ @filer = Locmare::Filer.new @list.item_name, list_result.items, list_result, :default, @operators
render @filer.template_name, :locals => {
:filer => @filer
}
<div class="filer">
<%= render filer.header.template_name, :header => filer.header %>
<%= render filer.body.template_name, :body => filer.body %>
- <%= render filer.footer.template_name, :footer => filer.footer %>
+ <%= render filer.pager.template_name, :pager => filer.pager %>
</div>
+++ /dev/null
-<% if footer.paginate %>
- <%= paginate(footer.paginate) %>
-<% end %>
--- /dev/null
+<% if pager.paginate %>
+ <%= paginate(pager.paginate) %>
+<% end %>
--- /dev/null
+<div>
+ <%= link_to 'more', pager.api_path %>
+</div>
--- /dev/null
+<%= form_for(form.item, :html => form.item.tag_attributes('form', 'data-form-name' => form.form_name)) do |f| %>
+ <%= render 'system/error_explanation', :obj => form.item %>
+ <%= render form.fields_template_name, :form => form, :f => f %>
+<% end %>
@model = ::Manifest.item_name_to_model self.item_name
end
+ def has_id?
+ @type =~ /filter/
+ end
+
+ def pre_id?
+ if @name =~ /^by_/
+ false
+ else
+ true
+ end
+ end
+
+ def action_name
+ ''
+ end
+
def item_name
@parent.item_name
end
@filter_key = @args['filter_key']
end
+ def action_name
+ @name
+ end
+
end
-
end
end
end
require_dependency "locmare/filer/header"
require_dependency "locmare/filer/body"
-require_dependency "locmare/filer/footer"
+require_dependency "locmare/filer/pager"
module Locmare
class Filer
include FilerModule
- attr :manifest, :item_name, :items, :paginate, :operators, :template_dir,
- :header, :body, :footer
- def initialize item_name, items, paginate, operators
+
+ attr :manifest, :item_name, :items, :list_result, :pager_type, :operators, :template_dir,
+ :header, :body, :pager
+
+ def initialize item_name, items, list_result, pager_type, operators
@item_name = item_name
@items = items
- @paginate = paginate
+ @list_result = list_result
+ @pager_type = pager_type.to_s
@operators = operators
@manifest = LocalManifest.manifest.filers[@item_name]
@template_dir = 'templates/r/filer/'
@header = Header.new self
@body = Body.new self
- @footer = Footer.new self, paginate
+ self.init_pager
+ end
+
+ def init_pager
+ @pager = self.class.pager[@pager_type].new self
+ end
+
+ def self.pager
+ {'none' => NonePager, 'default' => DefaultPager, 'more' => MorePager}
end
def model
+++ /dev/null
-module Locmare
- module FilerModule
- class Footer
- attr :filer, :paginate
- def initialize filer, paginate
- @filer = filer
- @paginate = paginate
- end
-
- def template_dir
- @filer.template_dir
- end
-
- def template_file_name
- "footer"
- end
-
- def template_name
- self.template_dir + self.template_file_name
- end
-
- end
- end
-end
--- /dev/null
+module Locmare
+ module FilerModule
+ class Pager
+ attr :filer
+
+ def initialize filer
+ @filer = filer
+ end
+
+ def list_result
+ @filer.list_result
+ end
+
+ def api_path
+ list_result.path
+ end
+
+ def template_dir
+ @filer.template_dir + "pager/"
+ end
+
+ def template_name
+ self.template_dir + self.template_file_name
+ end
+
+ end
+
+ class NonePager < Pager
+ def template_file_name
+ "none"
+ end
+
+ end
+
+ class DefaultPager < Pager
+ def template_file_name
+ "default"
+ end
+
+ def paginate
+ list_result.paginate
+ end
+
+ end
+
+ class MorePager < Pager
+ def template_file_name
+ "more"
+ end
+
+ end
+
+ end
+end
@manifest = LocalManifest.manifest.forms[@form_name]
@template_dir = 'templates/r/form/'
@fields = {}
- self.init_fields
end
def each_field
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
+ extend_item = @item.boosters[boost_name].extend_item
+ @fields[field_name] = ExtendForm.new self, extend_form_name, extend_item, @mounted, @operators
else
@fields[field_name] = Field.new self, field_name, field_manifest
end
class ExtendForm < FormBase
attr :parent
- def initialize parent, form_name, item, mounted, submit, operators
+ def initialize parent, form_name, item, mounted, operators
@parent = parent
super form_name, item, mounted, operators
+ self.init_fields
end
def init_fields
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
+ # @fields[field_name] = Field.new self, field_name, field_manifest
end
end
end
+ def template_file_name
+ "extend_form"
+ end
+
end
end
module ListGroupModule
class Base
class ListResult
- attr :items, :paginate
- def initialize items, paginate
+ attr :list, :items, :paginate
+
+ def initialize list, items, paginate, operators, options
+ @list = list
@items = items
@paginate = paginate
+ @operators = operators
+ @options = options
+ end
+
+ def path
+ if list_manifest.has_id?
+ filter_item_id = @options[:id]
+ if list_manifest.pre_id?
+ list_manifest.model.path_name + '/' + filter_item_id.to_s + '/' + list_manifest.action_name
+ else
+ list_manifest.model.path_name + '/' + list_manifest.action_name + '/' + filter_item_id.to_s
+ end
+ else
+ list_manifest.model.path_name + '/' + list_manifest.action_name
+ end
+ end
+
+ def list_manifest
+ @list.list_manifest
end
end
attr :item_name, :list_name,
- :model_manifest, :model_list_manifest, :model,
+ :model_manifest, :model_list_manifest, :list_manifest, :model,
:default_page_size, :max_page_size
def initialize item_name, list_name
@item_name = item_name
method_name = @where.conditions do |name|
name
end
- p method_name
@model.__send__ method_name
end
count = self.count operators, options
pg = self.paginate count, offset, page_size
self.boost items
- ListResult.new items, pg
+ ListResult.new self, items, pg, operators, options
end
end
rescue ActiveRecord::RecordNotFound, ActiveRecord::Forbidden
r = []
end
- ::Locmare::Filer.new self.parent_model.item_name, r, nil, self.profiler.operators
+ ::Locmare::Filer.new self.parent_model.item_name, r, nil, :none, self.profiler.operators
end
def model_manifest
def filer
list_result = @has_many_manifest.list.open(self.profiler.operators, {:id => self.item.id, :page => 1, :page_size => 3})
- items = list_result.items
- ::Locmare::Filer.new self.has_many_model.item_name, items, nil, self.profiler.operators
+ items = list_result.items
+ ::Locmare::Filer.new self.has_many_model.item_name, items, list_result, :more, self.profiler.operators
end
def profiler
def filer
list_result = @has_one_manifest.list.open(self.profiler.operators, {:id => self.item.id})
items = list_result.items
- ::Locmare::Filer.new self.has_one_model.item_name, items, nil, self.profiler.operators
+ ::Locmare::Filer.new self.has_one_model.item_name, items, nil, :none, self.profiler.operators
end
def profiler
end
def filer
- Locmare::Filer.new @profiler.item_name, [@profiler.item], nil, @profiler.operators
+ Locmare::Filer.new @profiler.item_name, [@profiler.item], nil, :none, @profiler.operators
end
end
def boosts level
self.class.my_peta.boost.each do |boost_name, boost_manifest|
- next unless boost_manifest.level == level
+ # next unless boost_manifest.level == level
self.boost boost_manifest
end
end
@boosters[boost_manifest.name] = Locmare::Booster.new(boost_manifest, self)
end
+ def boosters
+ @boosters
+ end
+
def extend_column? column_name
self.class.extend_column? column_name
end
],\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
+ "columns": {},\r
"column_names": [\r
"open",\r
"commercial",\r
}\r
}\r
},\r
+ "pettanr_creative_commons_v30_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
+ "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
"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
+ "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
+ "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_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
+ "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
+ "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_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
+ "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
+ "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_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
+ "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_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
"buckets": {\r