Skip to content

Commit

Permalink
Added ability to preview new or existing Pages
Browse files Browse the repository at this point in the history
  • Loading branch information
supairish committed Jan 31, 2012
1 parent b12de85 commit 867ad8d
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 2 deletions.
19 changes: 19 additions & 0 deletions core/app/views/layouts/preview.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE html>
<%= render :partial => '/refinery/html_tag' %>
<%= render :partial => '/refinery/head' %>
<body>
<%= render :partial => '/refinery/ie6check' if request.env['HTTP_USER_AGENT'] =~ /MSIE/ -%>
<div id="page_container">
<header id="header">
<%= render :partial => '/refinery/header' -%>
</header>
<section id="page">
<%= yield %>
</section>
<footer>
<%= render :partial => '/refinery/footer' -%>
</footer>
</div>
<%= render :partial => '/refinery/javascripts' %>
</body>
</html>
28 changes: 27 additions & 1 deletion core/app/views/refinery/admin/_form_actions.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,13 @@
<%= render :partial => "/refinery/admin/continue_editing", :locals => {:f => f} if continue_editing -%>
<%= hidden_field_tag :continue_editing, false if continue_editing %>
<%= submit_tag t('.preview'),
:id => 'preview-button',
:name => nil,
:class => "wymupdate button",
:tooltip => t('.checkout_your_changes') if defined?(f) && !f.nil? %>
<%= link_to(cancel_button_text, cancel_url,
:title => cancel_title,
:id => cancel_button_id,
Expand All @@ -69,3 +75,23 @@
:class => "button confirm-delete") unless hide_delete %>
</div>
</div>

<% content_for :javascripts do %>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
<% if defined?(f) && !f.nil? %>
$("#preview-button").click(function(evt){
var form = $(this).parents('form')
var prev_url = form.attr('action');
var prev_target = form.attr('target');
form.attr('action', '<%= f.object.new_record? ? main_app.refinery_admin_preview_pages_path : main_app.refinery_admin_preview_page_path(f.object) %>');
form.attr('target', '_blank');
form.submit();
form.attr('action', prev_url);
form.attr('target', prev_target);
return false;
});
<% end %>
});
</script>
<% end %>
2 changes: 2 additions & 0 deletions core/config/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ en:
cancel: Cancel
cancel_lose_changes: If you cancel you will lose any changes you have made here
delete: Remove
preview: Preview
checkout_your_changes: Check out your changes before making them live
close: Close
image_picker:
none_selected: There is currently no image selected, please click here to add one.
Expand Down
24 changes: 23 additions & 1 deletion pages/app/controllers/refinery/admin/pages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class PagesController < ::Refinery::AdminController
rescue_from FriendlyId::ReservedError, :with => :show_errors_for_reserved_slug

after_filter lambda{::Refinery::Page.expire_page_caching}, :only => [:update_positions]

before_filter :load_valid_templates, :only => [:edit, :new]

before_filter :restrict_access, :only => [:create, :update, :update_positions, :destroy],
Expand All @@ -30,6 +30,28 @@ def children
@page = find_page
render :layout => false
end

def preview
@menu_pages = ::Refinery::Menu.new(::Refinery::Page.fast_menu)

begin # Preview existing pages
@page = Page.find(params[:id])
@page.attributes = params[:page]
present(@page)
render(:template => '/refinery/pages/show', :layout => 'preview') and return

rescue ActiveRecord::RecordNotFound => e
# Preview a non-persisted page
@page = Page.new(params[:page])
end

if @page.valid?
present(@page)
render :template => '/refinery/pages/show', :layout => 'preview'
else
render :action => :edit
end
end

protected

Expand Down
3 changes: 3 additions & 0 deletions pages/config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
get '/pages/:id', :to => 'pages#show', :as => 'refinery_page'

scope(:module => 'admin', :path => 'refinery', :as => 'refinery_admin') do
post 'pages/preview' => 'pages#preview', :as => :preview_pages, :via => [:post]
match 'pages/:id/preview' => 'pages#preview', :as => :preview_page, :via => [:get, :put]

get 'pages/*path/edit', :to => 'pages#edit'
get 'pages/*path/children', :to => 'pages#children', :as => 'children_pages'
put 'pages/*path', :to => 'pages#update'
Expand Down

0 comments on commit 867ad8d

Please sign in to comment.