Uniformized: @page and @ link in @item
Change parser for page edition.
This commit is contained in:
		
							parent
							
								
									3d97c5bfda
								
							
						
					
					
						commit
						d971a8ecbe
					
				|  | @ -13,7 +13,6 @@ class Admin::ItemsController < ApplicationController | |||
|       @item = Item.find(params[:item_id]) | ||||
|     else | ||||
|       @item = Item.first(:conditions => {:parent_id => nil}) | ||||
|       @page = @item | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,60 +7,60 @@ class Admin::LinksController < ApplicationController | |||
|   before_filter :is_admin? | ||||
|    | ||||
|   def show | ||||
|     @link ||= Link.find(params[:id]) | ||||
|     @item ||= Link.find(params[:id]) | ||||
|   end | ||||
|    | ||||
|   def new | ||||
|     @link = Link.new | ||||
|     @link.is_published = true | ||||
|     @link.parent_id = Page.find(params[:parent_id]).id rescue nil | ||||
|     @item = Link.new | ||||
|     @item.is_published = true | ||||
|     @item.parent_id = Page.find(params[:parent_id]).id rescue nil | ||||
|   end | ||||
| 
 | ||||
|   def edit | ||||
|     @link = Link.find(params[:id]) | ||||
|     @i18n_variable = @link.i18n_variable | ||||
|     @item = Link.find(params[:id]) | ||||
|     @i18n_variable = @item.i18n_variable | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
|     @link = Link.new(params[:link]) | ||||
|     @item = Link.new(params[:link]) | ||||
| 
 | ||||
|     if @link.save | ||||
|     if @item.save | ||||
|       flash.now[:notice] = t('admin.create_success_link') | ||||
|       respond_to do |format| | ||||
|         format.html {  | ||||
|           redirect_to admin_link_url(@link)  | ||||
|           redirect_to admin_link_url(@item)  | ||||
|         } | ||||
|         format.js  {} | ||||
|       end | ||||
|     else | ||||
|       flash.now[:error] = t('admin.create_error_link') | ||||
|       @i18n_variable = @link.i18n_variable | ||||
|       @i18n_variable = @item.i18n_variable | ||||
|       render :action => "new" | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def update | ||||
|     @link = Link.find(params[:id]) | ||||
|     @item = Link.find(params[:id]) | ||||
| 
 | ||||
|     if @link.update_attributes(params[:link]) | ||||
|     if @item.update_attributes(params[:link]) | ||||
|       flash.now[:notice] = t('admin.update_success_link') | ||||
|       respond_to do |format| | ||||
|         format.html {  | ||||
|           redirect_to admin_link_url(@link)  | ||||
|           redirect_to admin_link_url(@item)  | ||||
|         } | ||||
|         format.js  {} | ||||
|       end | ||||
|     else | ||||
|       flash.now[:error] = t('admin.update_error_link') | ||||
|       @i18n_variable = @link.i18n_variable | ||||
|       @i18n_variable = @item.i18n_variable | ||||
|       render :action => "edit" | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def destroy | ||||
|     @link = Link.find(params[:id]) | ||||
|     @link.destroy | ||||
|     @link.destroy_i18n_variable | ||||
|     @item = Link.find(params[:id]) | ||||
|     @item.destroy | ||||
|     @item.destroy_i18n_variable | ||||
|     respond_to do |format| | ||||
|       format.html {  | ||||
|         redirect_to admin_items_url | ||||
|  |  | |||
|  | @ -0,0 +1,54 @@ | |||
| class Admin::PagePartsController < ApplicationController | ||||
| 
 | ||||
|   layout "content" | ||||
|    | ||||
|   before_filter :authenticate_user! | ||||
|   before_filter :is_admin? | ||||
|   before_filter :set_current_item | ||||
|    | ||||
|   def show | ||||
|     @part = PagePart.find(params[:id]) | ||||
|     respond_to do |format| | ||||
|       format.html {  | ||||
|         render 'admin/items/index'  | ||||
|       } | ||||
|       format.js  {} | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def new | ||||
|     | ||||
|   end | ||||
| 
 | ||||
|   def edit | ||||
|     @part = PagePart.find(params[:id]) | ||||
|     #@part.content = parse_content(@part.content, {:locale => 'show'}) | ||||
|     # @part = @part.i18n_variable | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
| 
 | ||||
|   end | ||||
| 
 | ||||
|   def update | ||||
|     @part = PagePart.find(params[:id]) | ||||
|     parse_content(@part.content, {:locale => 'destroy'}) | ||||
|     if @part.update_attributes(params[:page]) | ||||
|       @part.content = parse_content(@part.content, {:locale => 'create'}) | ||||
|       @part.save! | ||||
|       flash[:notice] = t('admin.update_success_page') | ||||
|       redirect_to admin_items_url( :parent_id => @part.page_id ) | ||||
|     else | ||||
|       render :action => "edit" | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def destroy | ||||
|     @item = Page.find(params[:id]) | ||||
|     @item.destroy | ||||
|     @item.destroy_i18n_variable | ||||
| 
 | ||||
|     redirect_to admin_items_url( :parent_id => @item.parent_id ) | ||||
|   end | ||||
|    | ||||
| end | ||||
|  | @ -8,10 +8,9 @@ class Admin::PagesController < ApplicationController | |||
|   before_filter :set_current_item | ||||
|    | ||||
|   def show | ||||
|     @page = Page.find(params[:id]) | ||||
|     @item = Page.find(params[:id]) | ||||
|     respond_to do |format| | ||||
|       format.html {  | ||||
|         @item = @page | ||||
|         render 'admin/items/index'  | ||||
|       } | ||||
|       format.js  {} | ||||
|  | @ -19,47 +18,47 @@ class Admin::PagesController < ApplicationController | |||
|   end | ||||
| 
 | ||||
|   def new | ||||
|     @page = Page.new | ||||
|     @page.is_published = true | ||||
|     @page.parent_id = @parent_item.id rescue nil | ||||
|     @item = Page.new | ||||
|     @item.is_published = true | ||||
|     @item.parent_id = @parent_item.id rescue nil | ||||
|   end | ||||
| 
 | ||||
|   def edit | ||||
|     @page = Page.find(params[:id]) | ||||
|     @page.content = parse_content(@page.content, {:locale => 'show'}) | ||||
|     @i18n_variable = @page.i18n_variable | ||||
|     @item = Page.find(params[:id]) | ||||
|     @item.content = parse_content(@item.content, {:locale => 'show'}) | ||||
|     @i18n_variable = @item.i18n_variable | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
|     @page = Page.new(params[:page]) | ||||
|     @page.content = parse_content(@page.content, {:locale => 'create'}) | ||||
|     if @page.save | ||||
|     @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 => @page.parent_id ) | ||||
|       redirect_to admin_items_url( :parent_id => @item.parent_id ) | ||||
|     else | ||||
|      render :action => "new" | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def update | ||||
|     @page = Page.find(params[:id]) | ||||
|     parse_content(@page.content, {:locale => 'destroy'}) | ||||
|     if @page.update_attributes(params[:page]) | ||||
|       @page.content = parse_content(@page.content, {:locale => 'create'}) | ||||
|       @page.save! | ||||
|     @item = Page.find(params[:id]) | ||||
|     parse_content(@item.content, {:locale => 'destroy'}) | ||||
|     if @item.update_attributes(params[:page]) | ||||
|       @item.content = parse_content(@item.content, {:locale => 'create'}) | ||||
|       @item.save! | ||||
|       flash[:notice] = t('admin.update_success_page') | ||||
|       redirect_to admin_items_url( :parent_id => @page.parent_id ) | ||||
|       redirect_to admin_items_url( :parent_id => @item.parent_id ) | ||||
|     else | ||||
|       render :action => "edit" | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def destroy | ||||
|     @page = Page.find(params[:id]) | ||||
|     @page.destroy | ||||
|     @page.destroy_i18n_variable | ||||
|     @item = Page.find(params[:id]) | ||||
|     @item.destroy | ||||
|     @item.destroy_i18n_variable | ||||
| 
 | ||||
|     redirect_to admin_items_url( :parent_id => @page.parent_id ) | ||||
|     redirect_to admin_items_url( :parent_id => @item.parent_id ) | ||||
|   end | ||||
|    | ||||
| end | ||||
|  |  | |||
|  | @ -18,8 +18,8 @@ class ApplicationController < ActionController::Base | |||
|    | ||||
|   # Render the page | ||||
|   def render_page | ||||
|     if @page | ||||
|       render :text => parse_page(@page) | ||||
|     if @item | ||||
|       render :text => parse_page(@item) | ||||
|     else | ||||
|       render :text => '404 Not Found' | ||||
|     end | ||||
|  | @ -53,7 +53,7 @@ class ApplicationController < ActionController::Base | |||
|   end | ||||
|    | ||||
|   def set_current_item | ||||
|     session[:current_page] = params[:id] || @page.id || @link.id || @item.id rescue nil | ||||
|     session[:current_page] = params[:id] || @item.id rescue nil | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| class PagesController < ApplicationController | ||||
|    | ||||
|   def index | ||||
|     @page = Page.find_by_name('home') | ||||
|     if @page | ||||
|     @item = Page.find_by_name('home') | ||||
|     if @item | ||||
|       render_page | ||||
|     else | ||||
|       render :text => 'You need a home page' | ||||
|  | @ -14,7 +14,7 @@ class PagesController < ApplicationController | |||
|       item = Item.first(:conditions => {:full_name => params[:page_name]}) | ||||
|       case item._type | ||||
|         when 'Page' | ||||
|           @page = item | ||||
|           @item = item | ||||
|           render_page | ||||
|         when 'Link' | ||||
|           redirect_to "http://#{item[:url]}" | ||||
|  |  | |||
|  | @ -4,6 +4,6 @@ switch ("<%= escape_javascript(@item._type)%>") { | |||
| 		$('#main').append("<%= escape_javascript(render(:partial => 'admin/links/show')) %>"); | ||||
| 		break; | ||||
|   case 'Page':  | ||||
| 		$('#main').append("<%= escape_javascript(render(:partial => 'page')) %>"); | ||||
| 		$('#main').append("<%= escape_javascript(render(:partial => 'admin/pages/show')) %>"); | ||||
|    	break; | ||||
| }; | ||||
|  | @ -2,7 +2,7 @@ | |||
| 
 | ||||
| <%= flash_messages %> | ||||
| 
 | ||||
| <%= form_for @link, :url => admin_link_path(@link), :html => { :class => 'form' } do |f| %> | ||||
| <%= form_for @item, :url => admin_link_path(@item), :html => { :class => 'form' } do |f| %> | ||||
| 
 | ||||
|   <%= render :partial => "admin/links/form", :locals => { :f => f } %> | ||||
|    | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| 
 | ||||
| <%= flash_messages %> | ||||
| 
 | ||||
| <%= form_for @link, :url => admin_links_path, :html => { :class => 'form' } do |f| %> | ||||
| <%= form_for @item, :url => admin_links_path, :html => { :class => 'form' } do |f| %> | ||||
|    | ||||
|   <%= render :partial => "admin/links/form", :locals => { :f => f } %> | ||||
|    | ||||
|  |  | |||
|  | @ -1,24 +1,24 @@ | |||
| <%= flash_messages %> | ||||
| <p> | ||||
|   <b><%= t('admin.name') %></b> | ||||
|   <%= @link.name %> | ||||
|   <%= @item.name %> | ||||
| </p> | ||||
| 
 | ||||
| <% @site_valid_locales.each do |locale| %> | ||||
|   <p> | ||||
| 		<b><%= "#{t('admin.title')} #{locale}" %></b> | ||||
| 	  <%= @link.i18n_variable[locale] if @link.i18n_variable %> | ||||
| 	  <%= @item.i18n_variable[locale] if @item.i18n_variable %> | ||||
|   </p> | ||||
| <% end %> | ||||
| 
 | ||||
| <p> | ||||
|   <b><%= t('admin.is_published') %></b> | ||||
|   <%= @link.is_published.to_s %> | ||||
|   <%= @item.is_published.to_s %> | ||||
| </p> | ||||
| 
 | ||||
| <p> | ||||
|   <b><%= t('admin.url') %></b> | ||||
|   <%= @link.url %> | ||||
|   <%= @item.url %> | ||||
| </p> | ||||
| 
 | ||||
| <%= link_to t(:edit), edit_admin_link_path(@link) %> | ||||
| <%= link_to t(:edit), edit_admin_link_path(@item) %> | ||||
|  | @ -1,4 +1,4 @@ | |||
| <% form_for :link, :url => admin_link_path(@link), :html => { :method => :delete } do |f| %> | ||||
| <% form_for :link, :url => admin_link_path(@item), :html => { :method => :delete } do |f| %> | ||||
|   <h2><%= t('sure?') %></h2> | ||||
|   <p> | ||||
|     <%= submit_tag t(:delete) %> | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| <h1>EDIT</h1> | ||||
|  | @ -0,0 +1,5 @@ | |||
| <% content_for :sidebar do %> | ||||
| 	<div id='sidebar'><%= render 'admin/items/site_map_left_bar' %></div> | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= render 'edit' %> | ||||
|  | @ -0,0 +1 @@ | |||
| $('#main').html("<%= escape_javascript(render(:partial => 'edit')) %>"); | ||||
|  | @ -1 +1,10 @@ | |||
| <%= parse_page(@page).html_safe %> | ||||
| <%= parse_page_edit(@item).html_safe %> | ||||
| 
 | ||||
| <% content_for :page_specific_javascript do %> | ||||
|   <script type="text/javascript" charset="utf-8"> | ||||
| 		$("div.editable").live("mouseenter mouseleave", | ||||
| 	    function (event) { | ||||
| 	      $(this).next('.edit_link').toggle(); | ||||
| 	    }); | ||||
|   </script> | ||||
| <% end -%> | ||||
|  | @ -1,6 +1,6 @@ | |||
| <h1><%= t('admin.editing_page') %></h1> | ||||
| 
 | ||||
| <%= form_for @page, :url => admin_page_path(@page) do |f| %> | ||||
| <%= form_for @item, :url => admin_page_path(@item) do |f| %> | ||||
|   <%= f.error_messages %> | ||||
|   <%= render :partial => "form", :locals => { :f => f } %> | ||||
|    | ||||
|  |  | |||
|  | @ -18,6 +18,15 @@ | |||
| </head> | ||||
| <body> | ||||
|   <div id="header"> | ||||
| 		<ul id="nav"> | ||||
| 	    <li><%= link_to t('homepage'), root_path %></li> | ||||
| 	    <li><%= link_to t('admin.item'), admin_items_path %></li> | ||||
| 	    <li><%= link_to t('admin.layout'), admin_layouts_path %></li> | ||||
| 	    <li><%= link_to t('admin.asset'), admin_assets_path %></li> | ||||
| 	    <li><%= link_to t('admin.user_info'), admin_user_info_models_path %></li> | ||||
| 	    <li><%= link_to t('admin.user_role'), admin_user_role_models_path %></li> | ||||
| 			<li><%= link_to t('admin.translation'), admin_translations_path %></li> | ||||
|  		</ul> | ||||
|   </div> | ||||
| 
 | ||||
|   <div id="content" class="content"> | ||||
|  |  | |||
|  | @ -49,6 +49,7 @@ PrototypeR4::Application.routes.draw do | |||
|       end | ||||
|     end | ||||
|     resources :pages | ||||
|     resources :page_parts | ||||
|     resources :homes | ||||
|     resources :snippets | ||||
|     resources :translations | ||||
|  |  | |||
|  | @ -72,7 +72,7 @@ module Parser | |||
|       c.define_tag 'layout_part' do |tag| | ||||
|         ret = '' | ||||
|         ret << "<div id='#{tag.attr['name']}'>" | ||||
|         ret << (page.page_parts.detect{ |p| p.name.to_s == tag.attr['name'].to_s }).content rescue '' | ||||
|         ret << page.page_parts.detect{ |p| p.name.to_s == tag.attr['name'].to_s }.content rescue '' | ||||
|         ret << tag.expand | ||||
|         ret << '</div>' | ||||
|       end | ||||
|  | @ -94,8 +94,104 @@ module Parser | |||
|     end | ||||
|   end | ||||
|    | ||||
|   def parse_page_edit(page) | ||||
|     if page._type == 'Page' | ||||
|       layout_content = page.layout.content  | ||||
|       context = parser_context_edit(page) | ||||
|       parser = Radius::Parser.new(context, :tag_prefix => 'r') | ||||
|       parser.parse(parser.parse(layout_content)) | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   def parser_context_edit(page, attributes = {}) | ||||
|     Radius::Context.new do |c| | ||||
|       c.define_tag 'snippet' do |tag| | ||||
|         snippet = Snippet.first(:conditions => {:name => tag.attr['name']}) | ||||
|         if snippet | ||||
|           snippet.content | ||||
|         else | ||||
|           t('nothing') | ||||
|         end | ||||
|       end | ||||
|       c.define_tag 'language_bar' do | ||||
|         @site.in_use_locales.map{ |locale| | ||||
|           lang = I18nVariable.first(:conditions => {:key => locale})[locale] | ||||
|           if I18n.locale.to_s.eql?(locale) | ||||
|             lang | ||||
|           else | ||||
|             "<a href='?locale=#{locale}'>#{lang}</a>" | ||||
|           end | ||||
|         }.join(' | ') | ||||
|       end | ||||
|       c.define_tag 'locale' do |tag| | ||||
|         case attributes[:locale] | ||||
|           when 'create' | ||||
|             var = I18nVariable.new(:key => (tag.attr['name'] rescue nil), :document_class => 'Text') | ||||
|             @site.valid_locales.each do |locale| | ||||
|               var[locale] = tag.attr[locale] rescue nil | ||||
|             end | ||||
|             var.save! | ||||
|             res = '' | ||||
|             res << "<r:locale id='#{var.id}' "  | ||||
|             res << "name='#{var.key}' " if var.key | ||||
|             @site.valid_locales.each do |locale| | ||||
|               res << "#{locale}='#{var[locale]}' " | ||||
|             end | ||||
|             res << '/>' | ||||
|           when 'show' | ||||
|             var = I18nVariable.find(tag.attr['id']) | ||||
|             res = '' | ||||
|             res << "<r:locale "  | ||||
|             res << "name='#{var.key}' " if var.key | ||||
|             @site.valid_locales.each do |locale| | ||||
|               res << "#{locale}='#{var[locale]}' " | ||||
|             end | ||||
|             res << '/>' | ||||
|           when 'destroy' | ||||
|             var = I18nVariable.find(tag.attr['id']) | ||||
|             var.destroy | ||||
|           else | ||||
|             tag.attr[I18n.locale.to_s] rescue nil | ||||
|         end | ||||
|       end | ||||
|       c.define_tag 'css' do |tag| | ||||
|         assets = Asset.any_in(:filename => tag.attr['name'].split(',').map(&:strip)) | ||||
|         res = '' | ||||
|         assets.each do |asset| | ||||
|           res << "<link href='#{asset.data.file.url}' rel='stylesheet' type='text/css' /> " if asset.data.file.content_type.eql?('text/css') | ||||
|         end | ||||
|         res | ||||
|       end | ||||
|       c.define_tag 'image' do |tag| | ||||
|         asset = Asset.find(tag.attr['id']) | ||||
|         if asset | ||||
|           res = "<img src=#{asset.data.file.url} " | ||||
|           tag.attr.each do |l| | ||||
|             res << "#{l[0]}='#{l[1]}' " | ||||
|           end | ||||
|           res << '>' | ||||
|         end | ||||
|       end | ||||
|       c.define_tag 'layout_part' do |tag| | ||||
|         part = page.page_parts.detect{ |p| p.name.to_s == tag.attr['name'].to_s } | ||||
|         ret = '' | ||||
|         ret << "<div id='#{tag.attr['name']}'" | ||||
|         ret << " part_id='#{part.id}'" if part | ||||
|         ret << " class='editable'" if part | ||||
|         ret << " style='border:solid 1px; margin:5px; padding:5px;'>" | ||||
|         ret << "<div class='edit_link' style='display:block'>" if part | ||||
|         ret << " <a href='#{edit_admin_page_part_path(part.id)}'>#{t(:edit)}</a>" if part | ||||
|         ret << '</div>' if part | ||||
|         ret << part.content rescue '' | ||||
|         ret << tag.expand | ||||
|         ret << '</div>' | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|    | ||||
|   def self.included(base) | ||||
|     base.send :helper_method, :parse_page if base.respond_to? :helper_method | ||||
|     base.send :helper_method, :parse_page_edit if base.respond_to? :helper_method | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
		Reference in New Issue