deluxe_publisher 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.rspec +1 -0
- data/Gemfile +29 -0
- data/LICENSE +20 -0
- data/README.rdoc +127 -0
- data/Rakefile +61 -0
- data/VERSION +1 -0
- data/app/controllers/deluxe_publisher/comments_controller.rb +93 -0
- data/app/controllers/deluxe_publisher/page_types_controller.rb +115 -0
- data/app/controllers/deluxe_publisher/pages_controller.rb +191 -0
- data/app/controllers/deluxe_publisher/presenter_controller.rb +185 -0
- data/app/controllers/deluxe_publisher/redirects_controller.rb +90 -0
- data/app/controllers/deluxe_publisher/sitemap_controller.rb +10 -0
- data/app/helpers/application_helper.rb +2 -0
- data/app/helpers/deluxe_publisher/comments_helper.rb +2 -0
- data/app/helpers/deluxe_publisher/page_types_helper.rb +13 -0
- data/app/helpers/deluxe_publisher/pages_helper.rb +41 -0
- data/app/helpers/deluxe_publisher/presenter_helper.rb +111 -0
- data/app/helpers/deluxe_publisher/redirects_helper.rb +2 -0
- data/app/helpers/deluxe_publisher/sitemap_helper.rb +2 -0
- data/app/models/ckeditor/asset.rb +88 -0
- data/app/models/ckeditor/attachment_file.rb +40 -0
- data/app/models/ckeditor/picture.rb +23 -0
- data/app/models/deluxe_publisher/comment.rb +6 -0
- data/app/models/deluxe_publisher/content.rb +6 -0
- data/app/models/deluxe_publisher/content_descriptor.rb +4 -0
- data/app/models/deluxe_publisher/page.rb +206 -0
- data/app/models/deluxe_publisher/page_type.rb +55 -0
- data/app/models/deluxe_publisher/redirect.rb +6 -0
- data/app/models/deluxe_publisher.rb +5 -0
- data/app/views/deluxe_publisher/comments/_form.html.erb +31 -0
- data/app/views/deluxe_publisher/comments/edit.html.erb +6 -0
- data/app/views/deluxe_publisher/comments/index.html.erb +31 -0
- data/app/views/deluxe_publisher/comments/new.html.erb +6 -0
- data/app/views/deluxe_publisher/comments/show.html.erb +30 -0
- data/app/views/deluxe_publisher/page_types/_content_descriptors.html.erb +15 -0
- data/app/views/deluxe_publisher/page_types/_form.html.erb +59 -0
- data/app/views/deluxe_publisher/page_types/content_areas_change.js.erb +3 -0
- data/app/views/deluxe_publisher/page_types/edit.html.erb +8 -0
- data/app/views/deluxe_publisher/page_types/index.html.erb +29 -0
- data/app/views/deluxe_publisher/page_types/new.html.erb +7 -0
- data/app/views/deluxe_publisher/page_types/show.html.erb +45 -0
- data/app/views/deluxe_publisher/pages/_form.html.erb +39 -0
- data/app/views/deluxe_publisher/pages/_general.html.erb +108 -0
- data/app/views/deluxe_publisher/pages/_page.html.erb +23 -0
- data/app/views/deluxe_publisher/pages/_page_content.html.erb +16 -0
- data/app/views/deluxe_publisher/pages/_page_links.html.erb +9 -0
- data/app/views/deluxe_publisher/pages/_seo.html.erb +27 -0
- data/app/views/deluxe_publisher/pages/edit.html.erb +5 -0
- data/app/views/deluxe_publisher/pages/index.html.erb +11 -0
- data/app/views/deluxe_publisher/pages/new.html.erb +6 -0
- data/app/views/deluxe_publisher/pages/page_type_change.js.erb +3 -0
- data/app/views/deluxe_publisher/pages/show.html.erb +115 -0
- data/app/views/deluxe_publisher/presenter/create_comment.js.erb +3 -0
- data/app/views/deluxe_publisher/presenter/create_comment_failed.js.erb +1 -0
- data/app/views/deluxe_publisher/presenter/new_comment.js.erb +7 -0
- data/app/views/deluxe_publisher/presenter/preview.html.erb +2 -0
- data/app/views/deluxe_publisher/redirects/_form.html.erb +29 -0
- data/app/views/deluxe_publisher/redirects/edit.html.erb +6 -0
- data/app/views/deluxe_publisher/redirects/index.html.erb +27 -0
- data/app/views/deluxe_publisher/redirects/new.html.erb +5 -0
- data/app/views/deluxe_publisher/redirects/show.html.erb +20 -0
- data/app/views/deluxe_publisher/sitemap/index.xml.builder +12 -0
- data/app/views/deluxe_publisher/templates/simple_blog.html.erb +19 -0
- data/app/views/deluxe_publisher/templates/simple_blog.rss.builder +23 -0
- data/app/views/deluxe_publisher/templates/simple_blog_story.html.erb +9 -0
- data/app/views/deluxe_publisher/templates/simple_page.html.erb +4 -0
- data/app/views/layouts/_deluxe_publisher_comment_form.html.erb +29 -0
- data/app/views/layouts/_deluxe_publisher_comments_list.html.erb +8 -0
- data/app/views/layouts/application.html.erb +14 -0
- data/app/views/layouts/deluxe_publisher.html.erb +36 -0
- data/app/views/layouts/deluxe_publisher_blog.html.erb +63 -0
- data/app/views/layouts/deluxe_publisher_simple.html.erb +30 -0
- data/config/routes.rb +49 -0
- data/deluxe_publisher.gemspec +466 -0
- data/lib/deluxe_publisher/deluxe_publisher_authentication.rb +37 -0
- data/lib/deluxe_publisher/engine.rb +5 -0
- data/lib/deluxe_publisher.rb +40 -0
- data/lib/generators/deluxe_publisher/base/USAGE +8 -0
- data/lib/generators/deluxe_publisher/base/base_generator.rb +45 -0
- data/lib/generators/deluxe_publisher/base/templates/images/add.png +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/btn_addNewPage.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/btn_cancel.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/btn_preview.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/btn_save.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/bullet.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/content_bg.jpg +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/delete.png +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/edit.png +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/header_background.jpg +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/icon_published.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/icon_unpublished.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/logo.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/minus.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/plus.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/show.png +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/tab_bg.gif +0 -0
- data/lib/generators/deluxe_publisher/base/templates/images/tabs_bg.jpg +0 -0
- data/lib/generators/deluxe_publisher/base/templates/initializer.rb +23 -0
- data/lib/generators/deluxe_publisher/base/templates/javascripts/deluxe_presenter.js +25 -0
- data/lib/generators/deluxe_publisher/base/templates/javascripts/deluxe_publisher.js +86 -0
- data/lib/generators/deluxe_publisher/base/templates/javascripts/jquery-rails.js +158 -0
- data/lib/generators/deluxe_publisher/base/templates/layouts/_deluxe_publisher_comment_form.html.erb +29 -0
- data/lib/generators/deluxe_publisher/base/templates/layouts/_deluxe_publisher_comments_list.html.erb +8 -0
- data/lib/generators/deluxe_publisher/base/templates/layouts/deluxe_publisher_blog.html.erb +74 -0
- data/lib/generators/deluxe_publisher/base/templates/layouts/deluxe_publisher_simple.html.erb +47 -0
- data/lib/generators/deluxe_publisher/base/templates/stylesheets/deluxe_presenter.css +458 -0
- data/lib/generators/deluxe_publisher/base/templates/stylesheets/deluxe_publisher.css +202 -0
- data/lib/generators/deluxe_publisher/base/templates/templates/simple_blog.html.erb +19 -0
- data/lib/generators/deluxe_publisher/base/templates/templates/simple_blog.rss.builder +23 -0
- data/lib/generators/deluxe_publisher/base/templates/templates/simple_blog_story.html.erb +12 -0
- data/lib/generators/deluxe_publisher/base/templates/templates/simple_page.html.erb +4 -0
- data/lib/generators/deluxe_publisher/migration/USAGE +0 -0
- data/lib/generators/deluxe_publisher/migration/migration_generator.rb +18 -0
- data/lib/generators/deluxe_publisher/migration/templates/migration.rb +98 -0
- data/lib/generators/deluxe_publisher/sample_site/sample_site_generator.rb +316 -0
- data/spec/controllers/deluxe_publisher/comments_controller_spec.rb +129 -0
- data/spec/controllers/deluxe_publisher/page_types_controller_spec.rb +125 -0
- data/spec/controllers/deluxe_publisher/pages_controller_spec.rb +129 -0
- data/spec/controllers/deluxe_publisher/presenter_controller_spec.rb +19 -0
- data/spec/controllers/deluxe_publisher/redirects_controller_spec.rb +118 -0
- data/spec/deluxe_publisher_spec.rb +7 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/views/deluxe_publisher/comments/_form.html.erb +31 -0
- data/spec/dummy/app/views/deluxe_publisher/comments/edit.html.erb +6 -0
- data/spec/dummy/app/views/deluxe_publisher/comments/index.html.erb +31 -0
- data/spec/dummy/app/views/deluxe_publisher/comments/new.html.erb +6 -0
- data/spec/dummy/app/views/deluxe_publisher/comments/show.html.erb +30 -0
- data/spec/dummy/app/views/deluxe_publisher/page_types/_content_descriptors.html.erb +15 -0
- data/spec/dummy/app/views/deluxe_publisher/page_types/_form.html.erb +59 -0
- data/spec/dummy/app/views/deluxe_publisher/page_types/content_areas_change.js.erb +3 -0
- data/spec/dummy/app/views/deluxe_publisher/page_types/edit.html.erb +8 -0
- data/spec/dummy/app/views/deluxe_publisher/page_types/index.html.erb +29 -0
- data/spec/dummy/app/views/deluxe_publisher/page_types/new.html.erb +7 -0
- data/spec/dummy/app/views/deluxe_publisher/page_types/show.html.erb +45 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/_form.html.erb +36 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/_general.html.erb +108 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/_page.html.erb +23 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/_page_content.html.erb +16 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/_page_links.html.erb +9 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/_seo.html.erb +27 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/edit.html.erb +7 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/index.html.erb +10 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/new.html.erb +7 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/page_type_change.js.erb +3 -0
- data/spec/dummy/app/views/deluxe_publisher/pages/show.html.erb +115 -0
- data/spec/dummy/app/views/deluxe_publisher/presenter/create_comment.js.erb +3 -0
- data/spec/dummy/app/views/deluxe_publisher/presenter/create_comment_failed.js.erb +1 -0
- data/spec/dummy/app/views/deluxe_publisher/presenter/new_comment.js.erb +7 -0
- data/spec/dummy/app/views/deluxe_publisher/presenter/preview.html.erb +2 -0
- data/spec/dummy/app/views/deluxe_publisher/templates/simple_blog.html.erb +19 -0
- data/spec/dummy/app/views/deluxe_publisher/templates/simple_blog.rss.builder +23 -0
- data/spec/dummy/app/views/deluxe_publisher/templates/simple_blog_story.html.erb +9 -0
- data/spec/dummy/app/views/deluxe_publisher/templates/simple_page.html.erb +4 -0
- data/spec/dummy/app/views/layouts/_deluxe_publisher_comment_form.html.erb +29 -0
- data/spec/dummy/app/views/layouts/_deluxe_publisher_comments_list.html.erb +8 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/app/views/layouts/deluxe_publisher.html.erb +31 -0
- data/spec/dummy/app/views/layouts/deluxe_publisher_blog.html.erb +63 -0
- data/spec/dummy/app/views/layouts/deluxe_publisher_simple.html.erb +30 -0
- data/spec/dummy/config/application.rb +45 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +22 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +26 -0
- data/spec/dummy/config/environments/production.rb +49 -0
- data/spec/dummy/config/environments/test.rb +35 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/deluxe_publisher.rb +23 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +104 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/db/migrate/20110405190943_create_deluxe_publisher.rb +135 -0
- data/spec/dummy/db/schema.rb +130 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/public/javascripts/application.js +2 -0
- data/spec/dummy/public/javascripts/controls.js +965 -0
- data/spec/dummy/public/javascripts/dragdrop.js +974 -0
- data/spec/dummy/public/javascripts/effects.js +1123 -0
- data/spec/dummy/public/javascripts/prototype.js +6001 -0
- data/spec/dummy/public/javascripts/rails.js +191 -0
- data/spec/dummy/public/stylesheets/.gitkeep +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/factories/comment_factory.rb +4 -0
- data/spec/factories/content_descriptor_factory.rb +5 -0
- data/spec/factories/content_factory.rb +24 -0
- data/spec/factories/page_factory.rb +26 -0
- data/spec/factories/page_type_factory.rb +10 -0
- data/spec/factories/redirect_factory.rb +4 -0
- data/spec/helpers/deluxe_publisher/comments_helper_spec.rb +15 -0
- data/spec/helpers/deluxe_publisher/page_types_helper_spec.rb +26 -0
- data/spec/helpers/deluxe_publisher/pages_helper_spec.rb +65 -0
- data/spec/helpers/deluxe_publisher/presenter_helper_spec.rb +19 -0
- data/spec/helpers/deluxe_publisher/redirects_helper_spec.rb +15 -0
- data/spec/integration/navigation_spec.rb +9 -0
- data/spec/models/deluxe_publisher/comment_spec.rb +5 -0
- data/spec/models/deluxe_publisher/content_descriptor_spec.rb +5 -0
- data/spec/models/deluxe_publisher/content_spec.rb +5 -0
- data/spec/models/deluxe_publisher/page_spec.rb +358 -0
- data/spec/models/deluxe_publisher/page_type_spec.rb +62 -0
- data/spec/models/deluxe_publisher/redirect_spec.rb +17 -0
- data/spec/requests/deluxe_publisher/deluxe_publisher_comments_spec.rb +11 -0
- data/spec/requests/deluxe_publisher/deluxe_publisher_page_types_spec.rb +11 -0
- data/spec/requests/deluxe_publisher/deluxe_publisher_redirects_spec.rb +11 -0
- data/spec/requests/deluxe_publisher/pages_spec.rb +11 -0
- data/spec/routing/deluxe_publisher/comments_routing_spec.rb +35 -0
- data/spec/routing/deluxe_publisher/page_types_routing_spec.rb +47 -0
- data/spec/routing/deluxe_publisher/pages_routing_spec.rb +47 -0
- data/spec/routing/deluxe_publisher/presenter_routing_spec.rb +66 -0
- data/spec/routing/deluxe_publisher/redirects_routing_spec.rb +35 -0
- data/spec/spec_helper.rb +234 -0
- data/spec/views/deluxe_publisher/comments/edit.html.erb_spec.rb +24 -0
- data/spec/views/deluxe_publisher/comments/index.html.erb_spec.rb +32 -0
- data/spec/views/deluxe_publisher/comments/new.html.erb_spec.rb +24 -0
- data/spec/views/deluxe_publisher/comments/show.html.erb_spec.rb +24 -0
- data/spec/views/deluxe_publisher/page_types/edit.html.erb_spec.rb +32 -0
- data/spec/views/deluxe_publisher/page_types/index.html.erb_spec.rb +48 -0
- data/spec/views/deluxe_publisher/page_types/new.html.erb_spec.rb +32 -0
- data/spec/views/deluxe_publisher/page_types/show.html.erb_spec.rb +36 -0
- data/spec/views/deluxe_publisher/pages/edit.html.erb_spec.rb +58 -0
- data/spec/views/deluxe_publisher/pages/index.html.erb_spec.rb +100 -0
- data/spec/views/deluxe_publisher/pages/new.html.erb_spec.rb +81 -0
- data/spec/views/deluxe_publisher/pages/show.html.erb_spec.rb +75 -0
- data/spec/views/deluxe_publisher/presenter/present.html.erb_spec.rb +5 -0
- data/spec/views/deluxe_publisher/presenter/preview.html.erb_spec.rb +5 -0
- data/spec/views/deluxe_publisher/redirects/edit.html.erb_spec.rb +22 -0
- data/spec/views/deluxe_publisher/redirects/index.html.erb_spec.rb +28 -0
- data/spec/views/deluxe_publisher/redirects/new.html.erb_spec.rb +22 -0
- data/spec/views/deluxe_publisher/redirects/show.html.erb_spec.rb +21 -0
- metadata +1006 -0
@@ -0,0 +1,185 @@
|
|
1
|
+
class DeluxePublisher::PresenterController < ApplicationController
|
2
|
+
|
3
|
+
include DeluxePublisherAuthentication
|
4
|
+
|
5
|
+
before_filter :publisher_authorize
|
6
|
+
|
7
|
+
def home
|
8
|
+
respond_to do |format|
|
9
|
+
format.html do
|
10
|
+
@root_page = DeluxePublisher::Page.get_site_root(1)
|
11
|
+
|
12
|
+
@page = DeluxePublisher::Page.published.first(:conditions => {:site_id => 1,
|
13
|
+
:parent_id => @root_page.id},
|
14
|
+
:order => "position",
|
15
|
+
:include => [:page_type, :contents])
|
16
|
+
|
17
|
+
if @page.page_type.layout.blank?
|
18
|
+
render :template => "/deluxe_publisher/templates/#{@page.page_type.template}", :layout => false
|
19
|
+
else
|
20
|
+
render :template => "/deluxe_publisher/templates/#{@page.page_type.template}", :layout => @page.page_type.layout
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def present
|
27
|
+
respond_to do |format|
|
28
|
+
format.html do
|
29
|
+
@page = DeluxePublisher::Page.published.first(:conditions => ["path = ?", "/"+ params[:page_path]])
|
30
|
+
unless @page.nil?
|
31
|
+
@root_page = @page.root
|
32
|
+
|
33
|
+
if @page.is_a_blog?
|
34
|
+
@blog = @page
|
35
|
+
@tags = DeluxePublisher::Page.tag_counts_on(:tags)
|
36
|
+
end
|
37
|
+
|
38
|
+
if @page.is_a_blog_story?
|
39
|
+
@blog = @page.parent
|
40
|
+
@tags = DeluxePublisher::Page.tag_counts_on(:tags)
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
if @page.page_type.layout.blank?
|
45
|
+
render :template => "/deluxe_publisher/templates/#{@page.page_type.template}", :layout => false
|
46
|
+
else
|
47
|
+
render :template => "/deluxe_publisher/templates/#{@page.page_type.template}", :layout => @page.page_type.layout
|
48
|
+
end
|
49
|
+
else
|
50
|
+
page_not_found
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
format.rss do
|
55
|
+
@page = DeluxePublisher::Page.first(:conditions => ["path = ?", "/"+ params[:page_path]])
|
56
|
+
unless @page.nil? || !@page.is_a_blog?
|
57
|
+
render :template => "/deluxe_publisher/templates/#{@page.page_type.template}",
|
58
|
+
:layout => false
|
59
|
+
else
|
60
|
+
page_not_found
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def blog_archives
|
67
|
+
respond_to do |format|
|
68
|
+
format.html do
|
69
|
+
@page = DeluxePublisher::Page.first(:conditions => ["path = ?", "/"+ params[:page_path]])
|
70
|
+
unless @page.nil? || !@page.is_a_blog?
|
71
|
+
@root_page = @page.root
|
72
|
+
@blog = @page
|
73
|
+
@year = params[:year]
|
74
|
+
@month = params[:month]
|
75
|
+
@day = params[:day]
|
76
|
+
@tags = DeluxePublisher::Page.tag_counts_on(:tags)
|
77
|
+
|
78
|
+
render :template => "/deluxe_publisher/templates/#{@page.page_type.template}",
|
79
|
+
:layout => @page.page_type.layout
|
80
|
+
else
|
81
|
+
page_not_found
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def blog_tag
|
88
|
+
respond_to do |format|
|
89
|
+
format.html do
|
90
|
+
@page = DeluxePublisher::Page.first(:conditions => ["path = ?", "/"+ params[:page_path]])
|
91
|
+
unless @page.nil? || !@page.is_a_blog?
|
92
|
+
@root_page = @page.root
|
93
|
+
@blog = @page
|
94
|
+
@tags = DeluxePublisher::Page.tag_counts_on(:tags)
|
95
|
+
@tag = params[:tag]
|
96
|
+
render :template => "/deluxe_publisher/templates/#{@page.page_type.template}",
|
97
|
+
:layout => @page.page_type.layout
|
98
|
+
else
|
99
|
+
page_not_found
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def comment_new
|
106
|
+
@page = DeluxePublisher::Page.first(:conditions => ["path = ?", "/"+ params[:page_path]])
|
107
|
+
unless @page.nil?
|
108
|
+
respond_to do |format|
|
109
|
+
format.js
|
110
|
+
end
|
111
|
+
else
|
112
|
+
format.js do
|
113
|
+
render :text => "404, File Not Found", :status => 404
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def new_comment
|
119
|
+
@page = DeluxePublisher::Page.first(:conditions => ["path = ?", "/"+ params[:page_path]])
|
120
|
+
|
121
|
+
unless @page.nil?
|
122
|
+
@deluxe_publisher_comment = @page.comments.build
|
123
|
+
respond_to do |format|
|
124
|
+
format.js
|
125
|
+
end
|
126
|
+
else
|
127
|
+
format.js do
|
128
|
+
render :text => "404, File Not Found", :status => 404
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
def create_comment
|
135
|
+
respond_to do |format|
|
136
|
+
|
137
|
+
@page = DeluxePublisher::Page.first(:conditions => ["path = ?", "/"+ params[:page_path]])
|
138
|
+
unless @page.nil?
|
139
|
+
format.js do
|
140
|
+
@deluxe_publisher_comment = @page.comments.build(params[:deluxe_publisher_comment])
|
141
|
+
if @deluxe_publisher_comment.save
|
142
|
+
render :action => "create_comment", :layout => false
|
143
|
+
else
|
144
|
+
render :action => "create_comment_failed", :layout => false
|
145
|
+
end
|
146
|
+
end
|
147
|
+
format.html do
|
148
|
+
render :text => "Javascript required"
|
149
|
+
end
|
150
|
+
else
|
151
|
+
format.js do
|
152
|
+
render :text => "404, File Not Found", :status => 404
|
153
|
+
end
|
154
|
+
format.html do
|
155
|
+
render :text => "404, File Not Found", :status => 404
|
156
|
+
end
|
157
|
+
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
private
|
163
|
+
|
164
|
+
def page_not_found
|
165
|
+
|
166
|
+
page_redirect = DeluxePublisher::Redirect.find_by_incoming_url("/"+ params[:page_path])
|
167
|
+
|
168
|
+
if page_redirect.nil?
|
169
|
+
@page = DeluxePublisher::Page.first(:conditions => ["path = ?", "/404"])
|
170
|
+
|
171
|
+
unless @page.nil?
|
172
|
+
render :template => "/deluxe_publisher/templates/#{@page.page_type.template}",
|
173
|
+
:layout => @page.page_type.layout,
|
174
|
+
:status => 404
|
175
|
+
else
|
176
|
+
|
177
|
+
render :text => File.open("#{Rails.root}/public/404.html").read,
|
178
|
+
:status => 404
|
179
|
+
end
|
180
|
+
else
|
181
|
+
redirect_to(page_redirect.direct_to_url)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
class DeluxePublisher::RedirectsController < ApplicationController
|
2
|
+
|
3
|
+
|
4
|
+
include DeluxePublisherAuthentication
|
5
|
+
|
6
|
+
layout "deluxe_publisher"
|
7
|
+
|
8
|
+
before_filter :admin_authorize
|
9
|
+
# GET /deluxe_publisher/redirects
|
10
|
+
# GET /deluxe_publisher/redirects.xml
|
11
|
+
def index
|
12
|
+
@deluxe_publisher_redirects = DeluxePublisher::Redirect.all
|
13
|
+
|
14
|
+
respond_to do |format|
|
15
|
+
format.html # index.html.erb
|
16
|
+
format.xml { render :xml => @deluxe_publisher_redirects }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# GET /deluxe_publisher/redirects/1
|
21
|
+
# GET /deluxe_publisher/redirects/1.xml
|
22
|
+
def show
|
23
|
+
@deluxe_publisher_redirect = DeluxePublisher::Redirect.find(params[:id])
|
24
|
+
|
25
|
+
respond_to do |format|
|
26
|
+
format.html # show.html.erb
|
27
|
+
format.xml { render :xml => @deluxe_publisher_redirect }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# GET /deluxe_publisher/redirects/new
|
32
|
+
# GET /deluxe_publisher/redirects/new.xml
|
33
|
+
def new
|
34
|
+
@deluxe_publisher_redirect = DeluxePublisher::Redirect.new
|
35
|
+
|
36
|
+
respond_to do |format|
|
37
|
+
format.html # new.html.erb
|
38
|
+
format.xml { render :xml => @deluxe_publisher_redirect }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# GET /deluxe_publisher/redirects/1/edit
|
43
|
+
def edit
|
44
|
+
@deluxe_publisher_redirect = DeluxePublisher::Redirect.find(params[:id])
|
45
|
+
end
|
46
|
+
|
47
|
+
# POST /deluxe_publisher/redirects
|
48
|
+
# POST /deluxe_publisher/redirects.xml
|
49
|
+
def create
|
50
|
+
@deluxe_publisher_redirect = DeluxePublisher::Redirect.new(params[:deluxe_publisher_redirect])
|
51
|
+
|
52
|
+
respond_to do |format|
|
53
|
+
if @deluxe_publisher_redirect.save
|
54
|
+
format.html { redirect_to(@deluxe_publisher_redirect, :notice => 'Redirect was successfully created.') }
|
55
|
+
format.xml { render :xml => @deluxe_publisher_redirect, :status => :created, :location => @deluxe_publisher_redirect }
|
56
|
+
else
|
57
|
+
format.html { render :action => "new" }
|
58
|
+
format.xml { render :xml => @deluxe_publisher_redirect.errors, :status => :unprocessable_entity }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# PUT /deluxe_publisher/redirects/1
|
64
|
+
# PUT /deluxe_publisher/redirects/1.xml
|
65
|
+
def update
|
66
|
+
@deluxe_publisher_redirect = DeluxePublisher::Redirect.find(params[:id])
|
67
|
+
|
68
|
+
respond_to do |format|
|
69
|
+
if @deluxe_publisher_redirect.update_attributes(params[:deluxe_publisher_redirect])
|
70
|
+
format.html { redirect_to(@deluxe_publisher_redirect, :notice => 'Redirect was successfully updated.') }
|
71
|
+
format.xml { head :ok }
|
72
|
+
else
|
73
|
+
format.html { render :action => "edit" }
|
74
|
+
format.xml { render :xml => @deluxe_publisher_redirect.errors, :status => :unprocessable_entity }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# DELETE /deluxe_publisher/redirects/1
|
80
|
+
# DELETE /deluxe_publisher/redirects/1.xml
|
81
|
+
def destroy
|
82
|
+
@deluxe_publisher_redirect = DeluxePublisher::Redirect.find(params[:id])
|
83
|
+
@deluxe_publisher_redirect.destroy
|
84
|
+
|
85
|
+
respond_to do |format|
|
86
|
+
format.html { redirect_to(deluxe_publisher_redirects_url) }
|
87
|
+
format.xml { head :ok }
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module DeluxePublisher::PageTypesHelper
|
2
|
+
|
3
|
+
def template_options
|
4
|
+
templates = Dir.glob("#{Rails.root}/app/views/deluxe_publisher/templates/*.html.*")
|
5
|
+
templates.map {|t| /.*\/templates\/(.*)\.html\..*/.match(t)[1] }.insert(0, "")
|
6
|
+
end
|
7
|
+
|
8
|
+
def layout_options
|
9
|
+
layouts = Dir.glob("#{Rails.root}/app/views/layouts/*.html.*")
|
10
|
+
layouts.map {|t| /.*\/layouts\/(.*)\.html\..*/.match(t)[1] }.insert(0, "")
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module DeluxePublisher::PagesHelper
|
2
|
+
|
3
|
+
include DeluxePublisher::PresenterHelper
|
4
|
+
|
5
|
+
def page_type_options
|
6
|
+
DeluxePublisher::PageType.find(:all,
|
7
|
+
:conditions => ["is_published = ? and function_as != ?", true, "blog_story"],
|
8
|
+
:order => "position").map {|pt| [pt.name, pt.id]}.insert(0, ["", ""])
|
9
|
+
end
|
10
|
+
|
11
|
+
def story_type_options
|
12
|
+
DeluxePublisher::PageType.find(:all,
|
13
|
+
:conditions => ["is_published = ? and function_as = ?", true, "blog_story"],
|
14
|
+
:order => "position").map {|pt| [pt.name, pt.id]}.insert(0, ["", ""])
|
15
|
+
end
|
16
|
+
|
17
|
+
def page_position_options(page)
|
18
|
+
options = (1..100).map {|p| ["#{p}", p]}
|
19
|
+
DeluxePublisher::Page.find(:all, :conditions => ["parent_id = ?", page.parent_id]).each do |page|
|
20
|
+
options[(page.position || 1) - 1] = ["#{page.position} #{limit_length(page.menu_title, 25, false)}", page.position]
|
21
|
+
end
|
22
|
+
options
|
23
|
+
end
|
24
|
+
|
25
|
+
def page_footer_position_options
|
26
|
+
options = (0..100).map {|p| ["#{p}", p]}
|
27
|
+
DeluxePublisher::Page.find(:all, :conditions => ["footer_position != ?", 0]).each do |page|
|
28
|
+
options[(page.footer_position || 0)] = ["#{page.footer_position} #{limit_length(page.menu_title, 25, false)}", page.footer_position]
|
29
|
+
end
|
30
|
+
options
|
31
|
+
end
|
32
|
+
|
33
|
+
def limit_length(str, len, html=true)
|
34
|
+
if str.length > len
|
35
|
+
str[0,len].strip + (html ? "…": "…")
|
36
|
+
else
|
37
|
+
str
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,111 @@
|
|
1
|
+
module DeluxePublisher::PresenterHelper
|
2
|
+
require 'builder'
|
3
|
+
|
4
|
+
include ActsAsTaggableOn::TagsHelper
|
5
|
+
|
6
|
+
|
7
|
+
def blog_archive_list(blog)
|
8
|
+
|
9
|
+
list = Builder::XmlMarkup.new(:indent => 2)
|
10
|
+
first_story = blog.children.published.minimum("publish_at")
|
11
|
+
last_story = blog.children.published.maximum("publish_at")
|
12
|
+
|
13
|
+
list.ul(:class => "archive_years") do
|
14
|
+
unless first_story.nil?
|
15
|
+
(first_story.year .. last_story.year).to_a.reverse.each do |year|
|
16
|
+
year_count = blog.children.published.count(:conditions => ["publish_at >= ? and publish_at <= ?", Date.new(year, 1, 1), Date.new(year, 12, 31)])
|
17
|
+
if year_count > 0
|
18
|
+
list.li(:class => "archive_year", :id => "archive_year_#{year}") do
|
19
|
+
list << link_to(year, blog_archive_path(:page_path => blog.path[1..-1], :year => year))
|
20
|
+
list.ul(:class => "archive_months") do
|
21
|
+
(1 .. 12).to_a.reverse.each do |month|
|
22
|
+
start_date = Date.new(year, month, 1)
|
23
|
+
end_date = start_date + 1.month
|
24
|
+
month_count = blog.children.published.count(:conditions => ["publish_at >= ? and publish_at < ?", start_date, end_date])
|
25
|
+
if month_count > 0
|
26
|
+
list.li(:class => "archive_month", :id => "archive_month_#{year}_#{month}") do
|
27
|
+
|
28
|
+
list << link_to(Date::MONTHNAMES[month], blog_archive_path(:page_path => blog.path[1..-1], :year => year, :month => month))
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
def main_navigation(root_page=nil, current_page=nil, depth=2)
|
44
|
+
root_page ||= DeluxePublisher::Page.get_site_root(1)
|
45
|
+
pages = root_page.descendants.main_nav.published
|
46
|
+
navigation(pages, root_page, current_page, depth, "main_navigation","main_nav")
|
47
|
+
end
|
48
|
+
|
49
|
+
def secondary_navigation(root_page=nil, current_page=nil, depth=2)
|
50
|
+
root_page ||= DeluxePublisher::Page.get_site_root(1)
|
51
|
+
pages = root_page.descendants.secondary_nav.published
|
52
|
+
navigation(pages, root_page, current_page, depth, "secondary_navigation", "secondary_nav")
|
53
|
+
end
|
54
|
+
|
55
|
+
def navigation(pages, root_page, current_page=nil, depth=2, dom_id = "", id_prefix="")
|
56
|
+
|
57
|
+
|
58
|
+
if current_page.nil?
|
59
|
+
@nav_ancestor_ids = []
|
60
|
+
@nav_current_id = nil
|
61
|
+
else
|
62
|
+
@nav_ancestor_ids = current_page.self_and_ancestors.map{ |a| a.id }
|
63
|
+
@nav_current_id = current_page.id
|
64
|
+
end
|
65
|
+
|
66
|
+
@nav_id_prefix = id_prefix
|
67
|
+
@nav_depth = depth
|
68
|
+
@tree = Builder::XmlMarkup.new(:indent => 2)
|
69
|
+
|
70
|
+
@tree.ul({:id => dom_id}) do
|
71
|
+
pages.select{|i| i.parent_id == root_page.id}.sort_by(&:position).each do |page|
|
72
|
+
add_page(page, pages, 0)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
@tree
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
def footer_navigation
|
81
|
+
footer_pages = DeluxePublisher::Page.find(:all, :conditions => "footer_position > 0", :order => "footer_position")
|
82
|
+
footer_list = Builder::XmlMarkup.new(:indent => 2)
|
83
|
+
|
84
|
+
footer_list.ul(:class => "footer_nav") do
|
85
|
+
footer_pages.each do |page|
|
86
|
+
footer_list.li do
|
87
|
+
footer_list << link_to(page.menu_title, page.path)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
footer_list
|
92
|
+
end
|
93
|
+
|
94
|
+
private
|
95
|
+
|
96
|
+
def add_page(page, pages, level)
|
97
|
+
level += 1
|
98
|
+
state = @nav_ancestor_ids.include?(page.id) ? "on":"off"
|
99
|
+
current = @nav_current_id == page.id ? "current_page":""
|
100
|
+
@tree.li({:id => "#{@nav_id_prefix}_#{page.dom_id}", :class => "level_#{level} #{state} #{current}"}) do
|
101
|
+
@tree << link_to(page.menu_title, page.path)
|
102
|
+
unless page.leaf? || level >= @nav_depth
|
103
|
+
@tree.ul(:class => "nav_directory") do
|
104
|
+
pages.select{|i| i.parent_id == page.id}.sort_by{|p| [p.position, p.publish_at]}.each do |child_page|
|
105
|
+
add_page(child_page, pages, level)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'mime/types'
|
2
|
+
|
3
|
+
class Ckeditor::Asset < ActiveRecord::Base
|
4
|
+
set_table_name "ckeditor_assets"
|
5
|
+
|
6
|
+
belongs_to :user
|
7
|
+
belongs_to :assetable, :polymorphic => true
|
8
|
+
|
9
|
+
before_validation :make_content_type
|
10
|
+
before_create :make_dimensions
|
11
|
+
|
12
|
+
def url(*args)
|
13
|
+
data.url(*args)
|
14
|
+
end
|
15
|
+
alias :public_filename :url
|
16
|
+
|
17
|
+
def filename
|
18
|
+
data_file_name
|
19
|
+
end
|
20
|
+
|
21
|
+
def content_type
|
22
|
+
data_content_type
|
23
|
+
end
|
24
|
+
|
25
|
+
def size
|
26
|
+
data_file_size
|
27
|
+
end
|
28
|
+
|
29
|
+
def path
|
30
|
+
data.path
|
31
|
+
end
|
32
|
+
|
33
|
+
def styles
|
34
|
+
data.styles
|
35
|
+
end
|
36
|
+
|
37
|
+
def format_created_at
|
38
|
+
I18n.l(self.created_at, :format=>"%d.%m.%Y %H:%M")
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_xml(options = {})
|
42
|
+
builder = options[:builder] ||= Nokogiri::XML::Builder.new(options)
|
43
|
+
|
44
|
+
builder.send(self.type.to_s.downcase) do |xml|
|
45
|
+
xml.id_ self.id
|
46
|
+
xml.filename self.filename
|
47
|
+
xml.size self.size
|
48
|
+
xml.path self.url
|
49
|
+
|
50
|
+
xml.styles do
|
51
|
+
self.styles.each do |style|
|
52
|
+
xml.send(style.first, self.url(style.first))
|
53
|
+
end
|
54
|
+
end unless self.styles.empty?
|
55
|
+
end
|
56
|
+
|
57
|
+
builder.to_xml
|
58
|
+
end
|
59
|
+
|
60
|
+
def has_dimensions?
|
61
|
+
self.respond_to?(:width) && self.respond_to?(:height)
|
62
|
+
end
|
63
|
+
|
64
|
+
def image?
|
65
|
+
["image/jpeg", "image/tiff", "image/png", "image/gif", "image/bmp"].include?(self.data_content_type)
|
66
|
+
end
|
67
|
+
|
68
|
+
def geometry
|
69
|
+
@geometry ||= Paperclip::Geometry.from_file(data.to_file)
|
70
|
+
@geometry
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
def make_dimensions
|
76
|
+
if image? && has_dimensions?
|
77
|
+
self.width = geometry.width
|
78
|
+
self.height = geometry.height
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def make_content_type
|
83
|
+
if data_content_type == "application/octet-stream"
|
84
|
+
content_types = MIME::Types.type_for(filename)
|
85
|
+
self.data_content_type = content_types.first.to_s unless content_types.empty?
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class Ckeditor::AttachmentFile < Ckeditor::Asset
|
2
|
+
has_attached_file :data,
|
3
|
+
:url => "/ckeditor_assets/attachments/:id/:filename",
|
4
|
+
:path => ":rails_root/public/ckeditor_assets/attachments/:id/:filename"
|
5
|
+
|
6
|
+
validates_attachment_size :data, :less_than=>100.megabytes
|
7
|
+
|
8
|
+
def url(*args)
|
9
|
+
if [:thumb, :content].include?(args.first)
|
10
|
+
send("url_#{args.first}")
|
11
|
+
else
|
12
|
+
data.url(*args)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def url_content
|
17
|
+
data.url
|
18
|
+
end
|
19
|
+
|
20
|
+
def url_thumb
|
21
|
+
extname = File.extname(filename)
|
22
|
+
|
23
|
+
case extname.to_s
|
24
|
+
when '.swf' then '/javascripts/ckeditor/images/swf.gif'
|
25
|
+
when '.pdf' then '/javascripts/ckeditor/images/pdf.gif'
|
26
|
+
when '.doc', '.txt' then '/javascripts/ckeditor/images/doc.gif'
|
27
|
+
when '.mp3' then '/javascripts/ckeditor/images/mp3.gif'
|
28
|
+
when '.rar', '.zip', '.tg' then '/javascripts/ckeditor/images/rar.gif'
|
29
|
+
when '.xls' then '/javascripts/ckeditor/images/xls.gif'
|
30
|
+
else '/javascripts/ckeditor/images/ckfnothumb.gif'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_json(options = {})
|
35
|
+
options[:methods] ||= []
|
36
|
+
options[:methods] << :url_content
|
37
|
+
options[:methods] << :url_thumb
|
38
|
+
super options
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class Ckeditor::Picture < Ckeditor::Asset
|
2
|
+
has_attached_file :data,
|
3
|
+
:url => "/ckeditor_assets/pictures/:id/:style_:basename.:extension",
|
4
|
+
:path => ":rails_root/public/ckeditor_assets/pictures/:id/:style_:basename.:extension",
|
5
|
+
:styles => { :content => '575>', :thumb => '80x80#' }
|
6
|
+
|
7
|
+
validates_attachment_size :data, :less_than=>2.megabytes
|
8
|
+
|
9
|
+
def url_content
|
10
|
+
url(:content)
|
11
|
+
end
|
12
|
+
|
13
|
+
def url_thumb
|
14
|
+
url(:thumb)
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_json(options = {})
|
18
|
+
options[:methods] ||= []
|
19
|
+
options[:methods] << :url_content
|
20
|
+
options[:methods] << :url_thumb
|
21
|
+
super options
|
22
|
+
end
|
23
|
+
end
|