class UzuUzu::Controller::Crud
Constants
- DEFAULT_LIMIT
Public Instance Methods
destroy(model_name, id, confirm=nil)
click to toggle source
# File lib/uzuuzu-cms/controller/crud.rb, line 176 def destroy(model_name, id, confirm=nil) @model_name = model_name model = model_create(model_name) if model.nil? return "faild model_name = #{model_name}" end UzuUzu.transaction do |tr| @resource = model.first(:id => id) if confirm.nil? @resource.destroy end end respond_to do |wish| case(wish) when :xhr respond(render_file(__DIR__("view/crud/destroy.rhtml"))) when :html redirect r(@model_name) if confirm.nil? respond(render_file(__DIR__("view/crud/destroy.rhtml"))) when :xml @resource.to_xml when :yaml, :yml @resource.to_yaml when :json, :js @resource.to_json when :csv @resource.to_csv else not_found end end end
edit(model_name, id)
click to toggle source
# File lib/uzuuzu-cms/controller/crud.rb, line 134 def edit(model_name, id) @model_name = model_name model = model_create(model_name) if model.nil? return "faild model_name = #{model_name}" end saved = false UzuUzu.transaction do |tr| @resource = model.first(:id => id) if request.post? request.params.each do |key, value| @resource[key] = value unless value.blank? @resource[key] = nil if value.blank? end if @resource.valid? saved = @resource.save end end end respond_to do |wish| case(wish) when :html, :htm redirect r(@model_name) if saved respond(render_file(__DIR__("view/crud/edit.rhtml"))) when :xml @resource.to_xml when :yaml, :yml @resource.to_yaml when :json, :js @resource.to_json when :csv @resource.to_csv else not_found end end end
index(model_name)
click to toggle source
# File lib/uzuuzu-cms/controller/crud.rb, line 15 def index(model_name) @model_name = model_name UzuUzu.logger.debug UzuUzu.datastore model = model_create(model_name) if model.nil? return "faild model_name = #{model_name}" end @limit = request.params[:limit] || DEFAULT_LIMIT @page = request.params[:page] @query = request.params[:query] condition = {:limit => @limit} condition[:offset] = @page * @limit unless @page.nil? #create query for serch if @query querys = @query.split(/[¥s ]/) querys.each do |query_set| query_set = query_set.split(':') condition[query_set[0].to_sym] = query_set[1] if query_set.size >= 2 end end UzuUzu.repository do @list = model.all(condition) end respond_to do |wish| case(wish) when :html, :htm respond(render_file(__DIR__("view/crud/index.rhtml"))) when :xml @list.to_xml when :yaml, :yml @list.to_yaml when :json, :js @list.to_json when :csv @list.to_csv else not_found end end end
is_model?(model)
click to toggle source
# File lib/uzuuzu-cms/controller/crud.rb, line 240 def is_model?(model) model.kind_of?(DataMapper::Model) end
model_create(model_name)
click to toggle source
# File lib/uzuuzu-cms/controller/crud.rb, line 213 def model_create(model_name) return unless /^[_0-9a-zA-Z]+$/ =~ model_name model_name = model_name.split('__').map do |name| name.camel_case end.join('::') begin model = eval("::#{model_name}") rescue NameError => e if UzuUzu.const_defined?(model_name) model = UzuUzu.const_get(model_name) else UzuUzu.logger.debug "model create missing : #{model_name}" end end unless model.nil? if is_model?(model) return model else UzuUzu.logger.debug "model type missing : #{model_name}" end end nil end
new(model_name)
click to toggle source
# File lib/uzuuzu-cms/controller/crud.rb, line 92 def new(model_name) @model_name = model_name model = model_create(model_name) if model.nil? return "faild model_name = #{model_name}" end saved = false UzuUzu.transaction do |tr| @resource = model.new if request.post? request.params.each do |key, value| @resource[key] = value unless value.blank? @resource[key] = nil if value.blank? end if @resource.valid? saved = @resource.save end end end respond_to do |wish| case(wish) when :html, :htm redirect r(@model_name) if saved respond(render_file(__DIR__("view/crud/new.rhtml"))) when :xml @resource.to_xml when :yaml, :yml @resource.to_yaml when :json, :js @resource.to_json when :csv @resource.to_csv else not_found end end end
show(model_name, id)
click to toggle source
# File lib/uzuuzu-cms/controller/crud.rb, line 62 def show(model_name, id) @model_name = model_name model = model_create(model_name) if model.nil? return "faild model_name = #{model_name}" end UzuUzu.repository do @resource = model.first(:id => id) end respond_to do |wish| case(wish) when :html, :htm respond(render_file(__DIR__("view/crud/show.rhtml"))) when :xml @resource.to_xml when :yaml, :yml @resource.to_yaml when :json, :js @resource.to_json when :csv @resource.to_csv else not_found end end end