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,9 +25,16 @@ 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
|
||||
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
|
||||
end
|
||||
|
||||
redirect_to admin_items_url( :parent_id => @link.parent_id )
|
||||
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
|
||||
|
|
|
@ -52,4 +52,8 @@ class ApplicationController < ActionController::Base
|
|||
@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)
|
||||
if children = parent.children
|
||||
ret = ''
|
||||
ret << "<ul>"
|
||||
parent.children.each do |child|
|
||||
children.each do |child|
|
||||
ret << render_node_and_children(child)
|
||||
end
|
||||
ret << "</ul>"
|
||||
ret
|
||||
end
|
||||
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);
|
||||
});
|
||||
});
|
Reference in New Issue