Class: ContentsController

Inherits:
ApplicationController show all
Defined in:
app/controllers/contents_controller.rb

Instance Method Summary collapse

Instance Method Details

#content_previewObject



33
34
35
36
37
38
39
40
# File 'app/controllers/contents_controller.rb', line 33

def content_preview
  unless params[:select_content]==""
    @content = Content.find params[:select_content]
    render :partial=>"content_preview"
  else
    render :text => %{<i style="color:lightgrey">no content selected for the preview</i>}
  end
end

#create_page_elementObject



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'app/controllers/contents_controller.rb', line 63

def create_page_element
  @page = Page.find(params[:id])
  @page_element = PageElement.create(:area_name=>"main", :page_id=>params[:id])
  if params[:content][:id]
    @page_element.content = Content.find(params[:content][:id])
  else
    @page_element.content = Content.create(params[:content])
  end
  if @page_element.save
    element_html = %(<div class='compages_element' id='element_#{ @page_element.id }'>)
    element_html << @page_element.content.body_to_html
    element_html << %(</div>)
    render :update do |page|
    #qui problemi con IE :todo:
      page.replace_html "widgets", ""
      page.insert_html :top, "area_main", element_html
      area = "main"
      page.sortable( "area_"<< area, 
                        :url=>{ :controller=>"contents", :action=>"update_area_elements", :id=>("area_"+area) },
                        :dropOnEmpty=>true, 
                        :tag=>:div, 
                        :only=>"compages_element",
                        :constraint=>false, 
                        :hoverclass=>"\"dragging\"",
                        :containment=>@page.area_names.collect{|name| "area_"<< name})
      page["element_#{ @page_element.id }"].visual_effect :highlight
      page<< "goToMenu('add_content_menu');"
    end
  else
    @page_element.destroy
    render :text=>params.inspect
  end
end

#delete_contentObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'app/controllers/contents_controller.rb', line 42

def delete_content
  @content = Content.find params[:content][:id]
  @page_elements = @content.page_elements.find_all "page_id = #{params[:id]}"
  elements_to_remove = @page_elements.collect {|page_element|
    if page_element.page_id.to_s == params[:id]
      'element_'<< page_element.id.to_s
    end
    page_element.destroy
  }.compact
  
  render :update do |page|
    if elements_to_remove
      elements_to_remove.each{ |e| page["element_"+e.id.to_s].remove } 
    end
    page<< remote_function( 
            :url => { :action => :live_search }, 
            :with => "('searchtext='+$('searchtext').value)" )
  end
  @content.destroy
end

#live_search(search_text = params[:searchtext]) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'app/controllers/contents_controller.rb', line 21

def live_search (search_text = params[:searchtext])
  @phrase = search_text
  @contents = Content.find(:all, :conditions => "( contents.body LIKE '%#{@phrase}%' )")
  s = render_to_string( :partial => "contents_list" )
  render :update do |page|
    page.alert(s)#:todo:debug:
    page["select_content"].replace_html :partial => "contents_list"
    page["search_comment"].replace_html( @phrase==""?"":"#{@contents.length.to_s} result#{'s' unless @contents.length==1} for <code>#{@phrase}</code>" )
    page["content_actions"].hide
  end
end

#remove_page_element(element_id = params[:selected_element]["element_".length..-1]) ⇒ Object



109
110
111
112
113
114
115
# File 'app/controllers/contents_controller.rb', line 109

def remove_page_element( element_id = params[:selected_element]["element_".length..-1] )
  PageElement.find( element_id ).destroy
  render :update do |page|
    page.remove "element_"+element_id
    page['remove_element'].hide
  end
end

#show_libraryObject



12
13
14
15
16
17
18
19
# File 'app/controllers/contents_controller.rb', line 12

def show_library
  @page = Page.find(params[:id])
  @contents = Content.find :all
  render :update do |page|
    page << "goToMenu('write_content_menu');"
    page.replace_html "widgets", :partial => "show_library"
  end
end

#update_area_elementsObject



97
98
99
100
101
102
103
104
105
106
107
# File 'app/controllers/contents_controller.rb', line 97

def update_area_elements
  position = 0
  area_name = params[:id]
  for page_element_id in params[area_name]
    page_element = PageElement.find page_element_id
    page_element.update_attribute(:position, position)
    page_element.update_attribute(:area_name, area_name["area_".length..-1])
    position += 1
  end
  render :nothing=>true
end

#write_nowObject



3
4
5
6
7
8
9
10
# File 'app/controllers/contents_controller.rb', line 3

def write_now
  @page = Page.find(params[:id])
  render :update do |page|
    page << "goToMenu('write_content_menu');"
    page.replace_html "widgets", :partial => "write_now"
#      page.insert_html :bottom, "page_actions", :partial => "write_now"
  end
end