Links edition
This commit is contained in:
		
							parent
							
								
									d9ba76ebd5
								
							
						
					
					
						commit
						24ae7ed5e3
					
				|  | @ -6,12 +6,14 @@ class Admin::ItemsController < ApplicationController | |||
|   before_filter :find_parent_item | ||||
|   before_filter :find_snippets, :only => :index | ||||
|   before_filter :is_admin? | ||||
|   before_filter :set_current_item | ||||
|    | ||||
|   def index | ||||
|     if params[:item_id] | ||||
|       @page = Item.find(params[:item_id]) | ||||
|       @item = Item.find(params[:item_id]) | ||||
|     else | ||||
|       @page = Item.first(:conditions => {:parent_id => nil}) | ||||
|       @item = Item.first(:conditions => {:parent_id => nil}) | ||||
|       @page = @item | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,18 +1,19 @@ | |||
| class Admin::LinksController < ApplicationController | ||||
| 
 | ||||
|   layout "admin" | ||||
|   layout "content" | ||||
|    | ||||
|   before_filter :authenticate_user! | ||||
|   before_filter :find_parent_item | ||||
|   before_filter :is_admin? | ||||
|    | ||||
|   def show | ||||
|     #TODO | ||||
|     @link ||= Link.find(params[:id]) | ||||
|   end | ||||
|    | ||||
|   def new | ||||
|     @link = Link.new | ||||
|     @link.is_published = true | ||||
|     @link.parent_id = @parent_item.id rescue nil | ||||
|     @link.parent_id = Page.find(params[:parent_id]).id rescue nil | ||||
|   end | ||||
| 
 | ||||
|   def edit | ||||
|  | @ -24,10 +25,17 @@ class Admin::LinksController < ApplicationController | |||
|     @link = Link.new(params[:link]) | ||||
| 
 | ||||
|     if @link.save | ||||
|       flash[:notice] = t('admin.create_success_link') | ||||
|       redirect_to admin_items_url( :parent_id => @link.parent_id ) | ||||
|       flash.now[:notice] = t('admin.create_success_link') | ||||
|       respond_to do |format| | ||||
|         format.html {  | ||||
|           redirect_to admin_link_url(@link)  | ||||
|         } | ||||
|         format.js  {} | ||||
|       end | ||||
|     else | ||||
|      render :action => "new" | ||||
|       flash.now[:error] = t('admin.create_error_link') | ||||
|       @i18n_variable = @link.i18n_variable | ||||
|       render :action => "new" | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|  | @ -35,9 +43,16 @@ class Admin::LinksController < ApplicationController | |||
|     @link = Link.find(params[:id]) | ||||
| 
 | ||||
|     if @link.update_attributes(params[:link]) | ||||
|       flash[:notice] = t('admin.update_success_link') | ||||
|       redirect_to admin_items_url( :parent_id => @link.parent_id ) | ||||
|       flash.now[:notice] = t('admin.update_success_link') | ||||
|       respond_to do |format| | ||||
|         format.html {  | ||||
|           redirect_to admin_link_url(@link)  | ||||
|         } | ||||
|         format.js  {} | ||||
|       end | ||||
|     else | ||||
|       flash.now[:error] = t('admin.update_error_link') | ||||
|       @i18n_variable = @link.i18n_variable | ||||
|       render :action => "edit" | ||||
|     end | ||||
|   end | ||||
|  | @ -46,8 +61,16 @@ class Admin::LinksController < ApplicationController | |||
|     @link = Link.find(params[:id]) | ||||
|     @link.destroy | ||||
|     @link.destroy_i18n_variable | ||||
| 
 | ||||
|     redirect_to admin_items_url( :parent_id => @link.parent_id ) | ||||
|   end | ||||
|    | ||||
|   def delete | ||||
|     destroy | ||||
|     respond_to do |format| | ||||
|       format.html {  | ||||
|         redirect_to admin_items_url | ||||
|       } | ||||
|       format.js  {} | ||||
|     end | ||||
|   end | ||||
|    | ||||
| end | ||||
|  |  | |||
|  | @ -1,12 +1,21 @@ | |||
| class Admin::PagesController < ApplicationController | ||||
| 
 | ||||
|   layout "content" | ||||
|    | ||||
|   before_filter :authenticate_user! | ||||
|   before_filter :find_parent_item | ||||
|   before_filter :is_admin? | ||||
|   before_filter :set_current_item | ||||
|    | ||||
|   def show | ||||
|     #TODO | ||||
|     @page = Page.find(params[:id]) | ||||
|     respond_to do |format| | ||||
|       format.html {  | ||||
|         @item = @page | ||||
|         render 'admin/items/index'  | ||||
|       } | ||||
|       format.js  {} | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def new | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ class ApplicationController < ActionController::Base | |||
|   include Parser | ||||
|    | ||||
|   helper :all | ||||
|   before_filter :set_locale, :set_site  | ||||
|   before_filter :set_locale, :set_site | ||||
|    | ||||
|   # Find the parent for the given item | ||||
|   def find_parent_item | ||||
|  | @ -51,5 +51,9 @@ class ApplicationController < ActionController::Base | |||
|     @site_in_use_locales = @site.in_use_locales | ||||
|     @site_valid_locales = @site.valid_locales | ||||
|   end | ||||
|    | ||||
|   def set_current_item | ||||
|     session[:current_page] = params[:id] || @page.id || @link.id || @item.id rescue nil | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -49,25 +49,35 @@ module ApplicationHelper | |||
|     end | ||||
|   end | ||||
|    | ||||
|   def render_node_and_children(node, current_name = 'home') | ||||
|   def render_node_and_children(node) | ||||
|     ret = '' | ||||
|     if node | ||||
|       case node._type | ||||
|         when 'Page' | ||||
|           dest = admin_page_path(:id => node.id) | ||||
|         when 'Link' | ||||
|           dest = admin_link_path(:id => node.id) | ||||
|       end | ||||
|       ret << "<li>" | ||||
|       ret << (link_to node.name, admin_items_path(:item_id => node.id), :remote => true, :class => (current_name.eql?(node.name) ? 'sidebar_no_link' : 'sidebar_link')) | ||||
|       ret << render_children(node) if node.children.size > 0 | ||||
|       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) | ||||
|     ret = '' | ||||
|     ret << "<ul>" | ||||
|     parent.children.each do |child| | ||||
|       ret << render_node_and_children(child) | ||||
|     if children = parent.children | ||||
|       ret = '' | ||||
|       ret << "<ul>" | ||||
|       children.each do |child| | ||||
|         ret << render_node_and_children(child) | ||||
|       end | ||||
|       ret << "</ul>" | ||||
|       ret | ||||
|     end | ||||
|     ret << "</ul>" | ||||
|     ret | ||||
|   end | ||||
| 
 | ||||
| end | ||||
|  |  | |||
|  | @ -1,11 +0,0 @@ | |||
| 
 | ||||
|   <td><%= item.class %></td> | ||||
|   <td><%= link_to item.name, admin_items_path(:parent_id => item.id) %></td> | ||||
|   <td><%= item.i18n_variable[I18n.locale] rescue nil %> | ||||
|   <td><%= item.position %></td> | ||||
|   <td><%= item.is_published.to_s %></td> | ||||
|   <td> | ||||
|     <%= link_to t(:show), item.url %> |  | ||||
|     <%= link_to t(:edit), edit_admin_page_path(item) %> | | ||||
|     <%= link_to t(:delete), admin_page_path(item), :confirm => t('sure?'), :method => :delete %> | ||||
|   </td> | ||||
|  | @ -0,0 +1 @@ | |||
| <%= render_node_and_children(Item.first(:conditions => {:parent_id => nil})) %> | ||||
|  | @ -1,55 +1,24 @@ | |||
| <% content_for :sidebar do %> | ||||
| 	<div id='sidebar'><%= render 'layouts/site_map_left_bar' %></div> | ||||
| 	<div id='sidebar'><%= render 'admin/items/site_map_left_bar' %></div> | ||||
| <% end -%> | ||||
| 
 | ||||
| <% content_for :page_specific_javascript do %> | ||||
|   <script type="text/javascript" charset="utf-8"> | ||||
|   <!-- <script type="text/javascript" charset="utf-8"> | ||||
|     $('a.sidebar_link').live( "click", function(){ | ||||
| 			$(this).removeClass('sidebar_link'); | ||||
| 			$('.sidebar_no_link').addClass('sidebar_link'); | ||||
| 			$('.sidebar_no_link').removeClass('sidebar_no_link'); | ||||
| 			$(this).addClass('sidebar_no_link'); | ||||
|     }); | ||||
|   </script> | ||||
|   </script> --> | ||||
| <% end -%> | ||||
| 
 | ||||
| <% content_for :page_specific_css do %> | ||||
| 	<style type="text/css"> | ||||
| 	<!-- <style type="text/css"> | ||||
| 		.sidebar_no_link { | ||||
| 		       pointer-events: none; | ||||
| 		       cursor: default; | ||||
| 		} | ||||
| 	</style> | ||||
| 	</style> --> | ||||
| <% end %> | ||||
| 
 | ||||
| <%= render 'layouts/page' %> | ||||
| 
 | ||||
| <!-- <%= flash_messages %> | ||||
| 
 | ||||
| <h1><%= t('admin.list_items') %>: <%= show_parent_items_link unless @parent_item.nil? %></h1> | ||||
| 
 | ||||
| <% if !Layout.exist_one? %> | ||||
|     <div style='color:red'><%= t('admin.no_layout') %>: <%= link_to t('create').downcase, new_admin_layout_path %></div> | ||||
|     <br/> | ||||
| <% else %> | ||||
|   <table> | ||||
|     <tr> | ||||
|       <th><%= t('admin.class') %></th> | ||||
|       <th><%= t('admin.name') %></th> | ||||
|       <th><%= t('admin.title') %></th> | ||||
|       <th><%= t('admin.position') %></th> | ||||
|       <th><%= t('admin.published?') %></th> | ||||
|       <th><%= t('admin.action') %></th> | ||||
|       <th></th> | ||||
|     </tr> | ||||
|   <% @items.each do |item| %> | ||||
|     <tr> | ||||
|       <%= render :partial => item.class.to_s.downcase, :locals => { :item => item } %> | ||||
|       <!--<td><%= link_to t(:move_up, :scope => :admin), up_admin_item_path(item), :method => :put %> | | ||||
|       <%= link_to t(:move_down, :scope => :admin), down_admin_item_path(item), :method => :put %></td>--> | ||||
|     </tr>     | ||||
|   <% end if @items %> | ||||
|   </table> | ||||
| <% end %> | ||||
| 
 | ||||
| <%= render :partial => "snippets", :locals => { :snippets => @snippets } %> --> | ||||
| <%= render "admin/#{@item._type.downcase.pluralize}/show" %> | ||||
|  | @ -1,9 +1,9 @@ | |||
| $('#main').empty(); | ||||
| switch ("<%= escape_javascript(@page._type)%>") { | ||||
| switch ("<%= escape_javascript(@item._type)%>") { | ||||
| 	case 'Link':  | ||||
| 		$('#main').append("TODO: page to edit the link"); | ||||
| 		$('#main').append("<%= escape_javascript(render(:partial => 'admin/links/show')) %>"); | ||||
| 		break; | ||||
|   case 'Page':  | ||||
| 		$('#main').append("<%= escape_javascript(render(:partial => 'layouts/page')) %>"); | ||||
| 		$('#main').append("<%= escape_javascript(render(:partial => 'page')) %>"); | ||||
|    	break; | ||||
| }; | ||||
|  | @ -0,0 +1,12 @@ | |||
| <h1><%= t('admin.editing_link') %></h1> | ||||
| 
 | ||||
| <%= flash_messages %> | ||||
| 
 | ||||
| <%= form_for @link, :url => admin_link_path(@link), :html => { :class => 'form' } do |f| %> | ||||
| 
 | ||||
|   <%= render :partial => "admin/links/form", :locals => { :f => f } %> | ||||
|    | ||||
|   <p> | ||||
|     <%= f.submit t(:update) %> <%= link_back %> | ||||
|   </p> | ||||
| <% end %> | ||||
|  | @ -0,0 +1,13 @@ | |||
| <h1><%= t('admin.new_link') %></h1> | ||||
| 
 | ||||
| <%= flash_messages %> | ||||
| 
 | ||||
| <%= form_for @link, :url => admin_links_path, :html => { :class => 'form' } do |f| %> | ||||
|    | ||||
|   <%= render :partial => "admin/links/form", :locals => { :f => f } %> | ||||
|    | ||||
|   <p> | ||||
|     <%= f.submit t(:create) %> <%= link_back %> | ||||
|   </p> | ||||
|    | ||||
| <% end %> | ||||
|  | @ -0,0 +1,24 @@ | |||
| <%= flash_messages %> | ||||
| <p> | ||||
|   <b><%= t('admin.name') %></b> | ||||
|   <%= @link.name %> | ||||
| </p> | ||||
| 
 | ||||
| <% @site_valid_locales.each do |locale| %> | ||||
|   <p> | ||||
| 		<b><%= "#{t('admin.title')} #{locale}" %></b> | ||||
| 	  <%= @link.i18n_variable[locale] if @link.i18n_variable %> | ||||
|   </p> | ||||
| <% end %> | ||||
| 
 | ||||
| <p> | ||||
|   <b><%= t('admin.is_published') %></b> | ||||
|   <%= @link.is_published.to_s %> | ||||
| </p> | ||||
| 
 | ||||
| <p> | ||||
|   <b><%= t('admin.url') %></b> | ||||
|   <%= @link.url %> | ||||
| </p> | ||||
| 
 | ||||
| <%= link_to t(:edit), edit_admin_link_path(@link) %> | ||||
|  | @ -0,0 +1,2 @@ | |||
| $('#sidebar').html("<%= escape_javascript(render(:partial => 'admin/items/site_map_left_bar')) %>"); | ||||
| $('#main').html("<%= escape_javascript(render(:partial => 'admin/links/show')) %>"); | ||||
|  | @ -0,0 +1 @@ | |||
| $('#sidebar').html("<%= escape_javascript(render(:partial => 'admin/items/site_map_left_bar')) %>"); | ||||
|  | @ -1,10 +1,5 @@ | |||
| <h1><%= t('admin.editing_link') %></h1> | ||||
| <% content_for :sidebar do %> | ||||
| 	<div id='sidebar'><%= render 'admin/items/site_map_left_bar' %></div> | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= form_for @link, :url => admin_link_path(@link) do |f| %> | ||||
| 
 | ||||
|   <%= render :partial => "form", :locals => { :f => f } %> | ||||
|    | ||||
|   <p> | ||||
|     <%= f.submit t(:update) %> <%= link_back %> | ||||
|   </p> | ||||
| <% end %> | ||||
| <%= render 'edit' %> | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| $('#main').html("<%= escape_javascript(render(:partial => 'admin/links/edit')) %>"); | ||||
|  | @ -1,11 +1,5 @@ | |||
| <h1><%= t('admin.new_link') %></h1> | ||||
| <% content_for :sidebar do %> | ||||
| 	<div id='sidebar'><%= render 'admin/items/site_map_left_bar' %></div> | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= form_for @link, :url => admin_links_path do |f| %> | ||||
|    | ||||
|   <%= 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/links/new')) %>"); | ||||
|  | @ -0,0 +1,5 @@ | |||
| <% content_for :sidebar do %> | ||||
| 	<div id='sidebar'><%= render 'admin/items/site_map_left_bar' %></div> | ||||
| <% end -%> | ||||
| 
 | ||||
| <%= render 'show' %> | ||||
|  | @ -0,0 +1 @@ | |||
| $('#main').html("<%= escape_javascript(render(:partial => 'show')) %>"); | ||||
|  | @ -0,0 +1 @@ | |||
| $('#main').html("<%= escape_javascript(render(:partial => 'admin/links/show')) %>"); | ||||
|  | @ -0,0 +1 @@ | |||
| <%= parse_page(@page).html_safe %> | ||||
|  | @ -0,0 +1 @@ | |||
| <%= render 'show' %> | ||||
|  | @ -0,0 +1 @@ | |||
| $('#main').html("<%= escape_javascript(render(:partial => 'show')) %>"); | ||||
|  | @ -1 +0,0 @@ | |||
| <%= parse_page(@page).html_safe if @page._type.eql?('Page') %> | ||||
|  | @ -1 +0,0 @@ | |||
| <%= render_node_and_children(@page) %> | ||||
|  | @ -2,12 +2,13 @@ | |||
| <html> | ||||
| <head> | ||||
|   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | ||||
|   <title><%= @title %></title> | ||||
|   <title><%= @title || 'R4 rescue title' %></title> | ||||
|   <link rel="shortcut icon" href="/favicon.ico"> | ||||
|   <%= yield :page_specific_link %> | ||||
|   <%= stylesheet_link_tag "easy", "main", "devise", "content", :media => "screen, projection" %> | ||||
|   <%= stylesheet_link_tag "easyprint", :media => "print" %> | ||||
| 	<%= javascript_include_tag "jquery", "jquery-ui", "rails", "easy", "application", :cache => 'all' %> | ||||
| 	<%= javascript_include_tag "jquery", "jquery-ui", "rails", "easy", :cache => 'all' %> | ||||
| 	<%= javascript_include_tag "application", :cache => 'all' %> | ||||
| 	<%= yield :page_specific_javascript %> | ||||
|   <!--[if IE]> | ||||
|     <%= stylesheet_link_tag "ie", :media => "screen, projection" %> | ||||
|  |  | |||
|  | @ -88,11 +88,13 @@ en: | |||
|     title: Title | ||||
|     translation: Translation | ||||
|     type: Type | ||||
|     update_error_link: Error when updating link. | ||||
|     update_success_home: Homepage was successfully updated. | ||||
|     update_success_layout: Layout was successfully updated. | ||||
|     update_success_link: Link was successfully updated. | ||||
|     update_success_page: Page was successfully updated. | ||||
|     update_success_snippet: Snippet was successfully updated. | ||||
|     url: URL | ||||
|     user_info: User information | ||||
|     user_role: User role | ||||
|      | ||||
|  |  | |||
|  | @ -85,11 +85,13 @@ zh_tw: | |||
|     title: 標題 | ||||
|     translation: 翻譯 | ||||
|     type: 類型 | ||||
|     update_error_link: 更新鏈接時出現錯誤。 | ||||
|     update_success_home: 首頁已成功更新。 | ||||
|     update_success_layout: 樣板已成功更新。 | ||||
|     update_success_link: 連結已成功更新。 | ||||
|     update_success_page: 頁面已成功更新。 | ||||
|     update_success_snippet: 片段已成功更新。 | ||||
|     url: URL | ||||
|     user_info: 用戶資料 | ||||
|     user_role: 用戶角色 | ||||
|      | ||||
|  |  | |||
|  | @ -43,7 +43,11 @@ PrototypeR4::Application.routes.draw do | |||
| 
 | ||||
|      end | ||||
|     resources :layouts | ||||
|     resources :links | ||||
|     resources :links do | ||||
|       member do | ||||
|         get 'delete' | ||||
|       end | ||||
|     end | ||||
|     resources :pages | ||||
|     resources :homes | ||||
|     resources :snippets | ||||
|  |  | |||
|  | @ -1,2 +1,21 @@ | |||
| // Place your application-specific JavaScript functions and classes here
 | ||||
| // This file is automatically included by javascript_include_tag :defaults
 | ||||
| 
 | ||||
| $(function () { | ||||
|   $('#sidebar a, #main a').live('click',   | ||||
|     function () {   | ||||
|       $.getScript(this.href); | ||||
| 			history.pushState(null, document.title, this.href);  | ||||
|       return false;   | ||||
|     }   | ||||
|   ); | ||||
| 
 | ||||
| 	$('.form').live('submit', function () {  | ||||
|     $.post(this.action, $(this).serialize(), null, 'script');   | ||||
|     return false;   | ||||
|   }); | ||||
| 
 | ||||
| 	$(window).bind("popstate", function () {   | ||||
|     $.getScript(location.href);   | ||||
|   }); | ||||
| }); | ||||
		Loading…
	
		Reference in New Issue