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