Class: Admin::BlockInstanceController

Inherits:
AdminController
  • Object
show all
Defined in:
app/controllers/admin/block_instance_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'app/controllers/admin/block_instance_controller.rb', line 25

def create
  instance = BlockInstance.new
  instance.system_id = _sid
  instance.page_id = 0
  instance.block_id = params[:id]
  instance.instance_id = rand(100000000000000000)
  instance.field_name = 'no_params'
  instance.field_value = 'no_params'
  instance.user_id = current_user.id
  instance.save
  instance.update_attributes(:instance_id=>"instance_#{instance.id}")
 
  redirect_to "/admin/block_instance/#{instance.id}/edit"
end

#editObject



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'app/controllers/admin/block_instance_controller.rb', line 68

def edit
  @instance = BlockInstance.sys(_sid).where(:id=>params[:id]).first
  @block = @instance.block
  @options = BlockInstance.where(:version=>@instance.version).where(:instance_id=>@instance.instance_id).all

  @fields = []
  @block.body.scan(/\[\[([^\]]+)\]\]/) do |field|
    @fields << field[0]
  end

  @options.each do |option|
    params[:options] ||= {}
    params[:options][option.field_name] = option.field_value
  end
end

#indexObject



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'app/controllers/admin/block_instance_controller.rb', line 3

def index
  @blocks = BlockInstance.includes(:block, :page).order("instance_id, version").sys(_sid)
  if params[:block_id]
    @blocks = @blocks.where(:block_id=>params[:block_id])
    @block = Block.find_sys_id(_sid,params[:block_id])
  else
    params[:page_id] ||= "0"
    @page = Page.where(:id=>params[:page_id].to_i).sys(_sid).first unless params[:page_id]=="0"
    @blocks = @blocks.where(:page_id=>params[:page_id]).order("block_id, version")
    @blocks = @blocks.where("version = 0") unless params[:showall]
  end 
  @blocks = @blocks.page(params[:page]).per(50)
end

#showObject



17
18
19
20
21
22
23
# File 'app/controllers/admin/block_instance_controller.rb', line 17

def show
  @instance = BlockInstance.where(:id=>params[:id]).sys(_sid).where(:version=>params[:version] || 0).first
  if @instance
    @block = @instance.block
    @options = BlockInstance.where(:page_id=>params[:page_id]).where(:version=>@instance.version).where(:instance_id=>@instance.instance_id).sys(_sid).all
  end
end

#updateObject



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'app/controllers/admin/block_instance_controller.rb', line 40

def update
  @instance = BlockInstance.sys(_sid).where(:version=>params[:version]).where(:id=>params[:id]).first

  @block = @instance.block
 # BlockInstance.delete_all(["instance_id = ? and version = ? and page_id = ?", @instance.instance_id, params[:version], params[:page_id]])
  b = nil

  instance_id = params[:instance_name]
  @errors = []


  params[:options].each do |name, value|
    b = BlockInstance.sys(_sid).where(:block_id=>@block.id).where(:page_id=>params[:page_id]).where(:field_name=>name).where(:instance_id=>instance_id).where(:version=>params[:version]).first
    if b
      @errors << b.errors unless b.update_attributes(:field_value=>value)
    end
  end if params[:options]
  
  if b == nil
    b = BlockInstance.sys(_sid).where(:block_id=>@block.id).where(:page_id=>params[:page_id]).where(:field_name=>'no_params').where(:instance_id=>instance_id).where(:version=>params[:version]).first
    if b
      @errors << b.errors unless b.update_attributes(:field_value=>'no_params')
    end
  end      
   
  redirect_to "/admin/block_instance/#{b.id}?page_id=#{@instance.page_id}&version=#{params[:version]}"
end