Create page.
This commit is contained in:
1 parent
2522cde2f5
commit
ddc7c74436
21 files changed
+163
-83
No files matched your search
@@ -40,6 +40,8 @@ class Admin::PagePartsController < ApplicationController
|
||||
@part = PagePart.find(params[:id])
|
||||
if @part.update_attributes(params[:page_part])
|
||||
flash.now[:notice] = t('admin.update_success_content')
|
||||
@part.build_content(@site_valid_locales)
|
||||
@part.save
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
redirect_to admin_page_url( @part.page )
|
||||
|
||||
@@ -31,12 +31,20 @@ class Admin::PagesController < ApplicationController
|
||||
|
||||
def create
|
||||
@item = Page.new(params[:page])
|
||||
@item.content = parse_content(@item.content, {:locale => 'create'})
|
||||
if @item.save
|
||||
flash[:notice] = t('admin.create_success_page')
|
||||
redirect_to admin_items_url( :parent_id => @item.parent_id )
|
||||
@item.create_parts
|
||||
@item.save
|
||||
flash.now[:notice] = t('admin.create_success_page')
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
redirect_to admin_item_url(@item)
|
||||
}
|
||||
format.js {}
|
||||
end
|
||||
else
|
||||
render :action => "new"
|
||||
flash.now[:error] = t('admin.create_error_page')
|
||||
@i18n_variable = @item.i18n_variable
|
||||
render :action => "new"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
module Admin::ItemHelper
|
||||
|
||||
def render_node_and_children(node)
|
||||
ret = ''
|
||||
if node
|
||||
case node._type
|
||||
when 'Page'
|
||||
dest = admin_page_path(node)
|
||||
when 'Link'
|
||||
dest = admin_link_path(node)
|
||||
end
|
||||
ret << "<li>"
|
||||
ret << (link_to node.name, dest)
|
||||
ret << ' | ' << (link_to t('admin.new_page'), new_admin_page_path(:parent_id => node.id)) if node._type.eql?('Page')
|
||||
ret << ' | ' << (link_to t('admin.new_link'), new_admin_link_path(:parent_id => node.id)) if node._type.eql?('Page')
|
||||
ret << ' | ' << (link_to t(:delete), delete_admin_link_path(node, :authenticity_token => form_authenticity_token), :confirm => t('sure?'), :class => 'delete') if node._type.eql?('Link')
|
||||
ret << render_children(node)
|
||||
ret << "</li>"
|
||||
end
|
||||
ret.html_safe
|
||||
end
|
||||
|
||||
end
|
||||
@@ -49,25 +49,6 @@ module ApplicationHelper
|
||||
end
|
||||
end
|
||||
|
||||
def render_node_and_children(node)
|
||||
ret = ''
|
||||
if node
|
||||
case node._type
|
||||
when 'Page'
|
||||
dest = admin_page_path(node)
|
||||
when 'Link'
|
||||
dest = admin_link_path(node)
|
||||
end
|
||||
ret << "<li>"
|
||||
ret << (link_to node.name, dest)
|
||||
ret << ' | ' << (link_to 'new_link', new_admin_link_path(:parent_id => node.id)) if node._type.eql?('Page')
|
||||
ret << ' | ' << (link_to t(:delete), delete_admin_link_path(node, :authenticity_token => form_authenticity_token), :confirm => t('sure?'), :class => 'delete') if node._type.eql?('Link')
|
||||
ret << render_children(node)
|
||||
ret << "</li>"
|
||||
end
|
||||
ret.html_safe
|
||||
end
|
||||
|
||||
def render_children(parent)
|
||||
if children = parent.children
|
||||
ret = ''
|
||||
|
||||
@@ -7,4 +7,8 @@ class I18nVariable
|
||||
field :document_class, :type => String
|
||||
field :parent_id, :type => BSON::ObjectId, :index => true
|
||||
|
||||
def method_missing(field)
|
||||
self[field]
|
||||
end
|
||||
|
||||
end
|
||||
+12
-1
@@ -11,13 +11,24 @@ class Page < Item
|
||||
referenced_in :layout
|
||||
has_many :page_parts
|
||||
|
||||
def create_parts
|
||||
page_layout = self.get_layout
|
||||
page_layout.layout_parts.each do |p|
|
||||
self.page_parts.create( :name => p.name, :i18n_variable_id => I18nVariable.create.id, :kind => 'text' )
|
||||
end
|
||||
end
|
||||
|
||||
def get_layout
|
||||
Layout.find(layout_id)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def setup_default_value
|
||||
super
|
||||
|
||||
if self.layout_id
|
||||
self.layout_name = Layout.find(layout_id).name
|
||||
self.layout_name = get_layout.name
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -25,5 +25,18 @@ class PagePart
|
||||
self.i18n_variable_id = var.id
|
||||
end
|
||||
end
|
||||
|
||||
# Build the content from the i18n_variable
|
||||
def build_content(locales)
|
||||
res = ''
|
||||
res << "<r:multi_lang i18n_id='#{i18n_variable.id}'>"
|
||||
locales.each do |locale|
|
||||
res << "<r:lang name='#{locale.to_s}'>"
|
||||
res << i18n_variable[locale.to_s]
|
||||
res << "</r:lang>"
|
||||
end
|
||||
res << "</r:multi_lang>"
|
||||
self.content = res
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,3 +1,4 @@
|
||||
<%= f.error_messages %>
|
||||
<%= f.hidden_field :parent_id %>
|
||||
|
||||
<p>
|
||||
@@ -18,11 +19,6 @@
|
||||
<%= f.select :layout_id, Layout.all.map{ |l| [l.description, l.id] } %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= f.label "content", t('admin.content') %>
|
||||
<%= f.text_area "content", :size => '100x30' %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= f.label :is_published, "#{t('admin.is_published')} ?" %>
|
||||
<%= f.radio_button :is_published, true %>Yes <%= f.radio_button :is_published, false %> No
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<h1><%= t('admin.new_page') %></h1>
|
||||
|
||||
<%= flash_messages %>
|
||||
|
||||
<%= form_for @item, :url => admin_pages_path, :html => { :class => 'form' } do |f| %>
|
||||
|
||||
<%= render :partial => "form", :locals => { :f => f } %>
|
||||
|
||||
<p>
|
||||
<%= f.submit t('create') %> <%= link_back %>
|
||||
</p>
|
||||
|
||||
<% end %>
|
||||
@@ -0,0 +1,2 @@
|
||||
$('#sidebar').html("<%= escape_javascript(render(:partial => 'admin/items/site_map_left_bar')) %>");
|
||||
$('#main').html("<%= escape_javascript(render(:partial => 'admin/pages/show')) %>");
|
||||
@@ -1,11 +1,5 @@
|
||||
<h1><%= t('admin.new_page') %></h1>
|
||||
<% content_for :sidebar do %>
|
||||
<div id='sidebar'><%= render 'admin/items/site_map_left_bar' %></div>
|
||||
<% end -%>
|
||||
|
||||
<%= form_for :page, :url => admin_pages_path do |f| %>
|
||||
<%= f.error_messages %>
|
||||
<%= render :partial => "form", :locals => { :f => f } %>
|
||||
|
||||
<p>
|
||||
<%= f.submit t('create') %> <%= link_back %>
|
||||
</p>
|
||||
|
||||
<% end %>
|
||||
<%= render 'new' %>
|
||||
@@ -0,0 +1 @@
|
||||
$('#main').html("<%= escape_javascript(render(:partial => 'admin/pages/new')) %>");
|
||||
@@ -9,8 +9,7 @@
|
||||
<%= stylesheet_link_tag "easyprint", :media => "print" %>
|
||||
<%= javascript_include_tag :ckeditor %>
|
||||
|
||||
<%= javascript_include_tag "jquery", "jquery-ui", "rails", "easy", :cache => 'all' %>
|
||||
<%= javascript_include_tag "application", :cache => 'all' %>
|
||||
<%= javascript_include_tag "jquery", "jquery-ui", "rails", "easy", "application", :cache => 'all' %>
|
||||
<%= yield :page_specific_javascript %>
|
||||
<!--[if IE]>
|
||||
<%= stylesheet_link_tag "ie", :media => "screen, projection" %>
|
||||
@@ -29,7 +28,12 @@
|
||||
<li><%= link_to t('admin.user_role'), admin_user_role_models_path %></li>
|
||||
<li><%= link_to t('admin.translation'), admin_translations_path %></li>
|
||||
</ul>
|
||||
<%= render 'layouts/lang_menu' %>
|
||||
<ul class="hmenu">
|
||||
<li>
|
||||
<%= render 'layouts/lang_menu' %>
|
||||
</li>
|
||||
<%= render 'devise/menu/login_items' %>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="content" class="content">
|
||||
|
||||
Reference in new issue
Block a user