diff --git a/app/controllers/admin/announcements_controller.rb b/app/controllers/admin/announcements_controller.rb index cb57e653..b29f47a2 100644 --- a/app/controllers/admin/announcements_controller.rb +++ b/app/controllers/admin/announcements_controller.rb @@ -1,21 +1,24 @@ class Admin::AnnouncementsController < ApplicationController + before_filter :require_entry_name, :only => [:index, :new] + layout "admin" def index - @announcements = Announcement.all + @announcements = Announcement.find(:all, :conditions => { :entry_name => params[:entry_name] }) respond_to do |format| - format.html # index.html.erb + format.html format.xml { render :xml => @announcements } end end def new @announcement = Announcement.new - + @announcement.entry_name = params[:entry_name] + respond_to do |format| - format.html # new.html.erb + format.htm format.xml { render :xml => @announcement } end end @@ -26,7 +29,7 @@ class Admin::AnnouncementsController < ApplicationController def create @announcement = Announcement.new(params[:announcement]) - + respond_to do |format| if @announcement.save flash[:notice] = 'Announcement was successfully created.' diff --git a/app/controllers/announcements_controller.rb b/app/controllers/announcements_controller.rb index ab09b121..e232732b 100644 --- a/app/controllers/announcements_controller.rb +++ b/app/controllers/announcements_controller.rb @@ -1,7 +1,7 @@ class AnnouncementsController < ApplicationController def index - @announcements = Announcement.all + @announcements = Announcement.find(:all, :conditions => { :entry_name => params[:entry_name] }) respond_to do |format| format.html { diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d2bfd123..34867abd 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -30,5 +30,10 @@ class ApplicationController < ActionController::Base # set locale based on session or default I18n.locale = session[:locale] || I18n.default_locale end - + + def require_entry_name + render :text => 'missing entry_name' if params[:entry_name].blank? + return + end + end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 2877225e..542deaec 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -9,14 +9,11 @@ class PagesController < ApplicationController end end - def show + def show @page = Page.find_by_name(params[:page_name]) if @page && !@page.external_link.blank? - # redirect_to @page.external_link - elsif @page && !@page.use_engine.blank? - #model_class = Kernel.const_get( "Announcement" ) # page.use_engine - redirect_to announcements_path + redirect_to @page.external_link else render_liquid_page end diff --git a/app/models/announcement.rb b/app/models/announcement.rb index fc8e1fb5..48808246 100644 --- a/app/models/announcement.rb +++ b/app/models/announcement.rb @@ -2,11 +2,12 @@ class Announcement include MongoMapper::Document + key :entry_name, String, :required => true, :index => true key_i18n :title, String key_i18n :content, String def to_liquid - { "id" => self.id, "title" => self.title, "content" => self.content } + { "entry_name" => self.entry_name, "id" => self.id.to_s, "title" => self.title, "content" => self.content } end end \ No newline at end of file diff --git a/app/models/layout.rb b/app/models/layout.rb index 2c65d556..b261e88b 100644 --- a/app/models/layout.rb +++ b/app/models/layout.rb @@ -2,9 +2,7 @@ class Layout include MongoMapper::Document - key :name, String + key :name, String, :required => true, :index => true key_i18n :content, String - validates_presence_of :name - end \ No newline at end of file diff --git a/app/models/page.rb b/app/models/page.rb index 5210eadb..eb01a554 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -1,43 +1,31 @@ class Page include MongoMapper::Document - key :name, String - key :parent_page_name, String + key :name, String, :required => true, :index => true + key :parent_page_name, String, :required => true, :index => true - key_i18n :title, String + key_i18n :title, String, :required => true key_i18n :content, String - key :layout_id, String - key :layout_name, String + key :layout_name, String, :required => true key :external_link, String - key :position, Integer - key :is_published, Boolean + key :position, Integer, :required => true + key :is_published, Boolean, :required => true, :default => true, :index => true - key :is_component, Boolean key :component_name, String - belongs_to :layout - - validates_presence_of :name - validates_presence_of :position - - before_save :setup_layout_id before_validation :setup_default_value def self.find_by_name(page_name) Page.find(:first, :conditions => { :name => page_name, :is_published => true }) end - protected - - def setup_layout_id - if self.layout_name.blank? - self.layout_id = nil - else - self.layout_id = Layout.find_by_name( self.layout_name ).id - end + def layout + Layout.find_by_name(self.layout_name) end - + + protected + def setup_default_value if self.position.blank? max_page = Page.find(:last, :order => 'position') diff --git a/app/models/snippet.rb b/app/models/snippet.rb index 6b4e5cea..68b3c648 100644 --- a/app/models/snippet.rb +++ b/app/models/snippet.rb @@ -2,9 +2,7 @@ class Snippet include MongoMapper::Document - key :name, String + key :name, String, :required => true, :index => true key_i18n :content, String - - validates_presence_of :name end \ No newline at end of file diff --git a/app/views/admin/announcements/_form.html.erb b/app/views/admin/announcements/_form.html.erb index 281fe876..ace3e853 100644 --- a/app/views/admin/announcements/_form.html.erb +++ b/app/views/admin/announcements/_form.html.erb @@ -1,3 +1,5 @@ +<%= f.hidden_field :entry_name %> +
<%= f.label "title_zh_tw", "Title (zh_tw)" %>
<%= f.text_field "title_zh_tw" %>
diff --git a/app/views/admin/announcements/index.html.erb b/app/views/admin/announcements/index.html.erb
index 22b50926..6342b10b 100644
--- a/app/views/admin/announcements/index.html.erb
+++ b/app/views/admin/announcements/index.html.erb
@@ -18,4 +18,4 @@
-<%= link_to 'New announcement', new_admin_announcement_path %>
\ No newline at end of file
+<%= link_to 'New announcement', new_admin_announcement_path( :entry_name => params[:entry_name] ) %>
\ No newline at end of file
diff --git a/app/views/admin/pages/_form.html.erb b/app/views/admin/pages/_form.html.erb
index d89e8dc6..b02b387b 100644
--- a/app/views/admin/pages/_form.html.erb
+++ b/app/views/admin/pages/_form.html.erb
@@ -42,8 +42,8 @@
- <%= f.label :is_component, "Is component" %> -<%= f.radio_button :is_component, true %>Yes <%= f.radio_button :is_component, false %> No +<%= f.label :component_name, "Component Name" %> +<%= f.text_field :component_name %>
diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb index e91b2dc7..b134dcda 100644 --- a/app/views/layouts/admin.html.erb +++ b/app/views/layouts/admin.html.erb @@ -23,7 +23,7 @@