imagine_cms 3.0.0.beta6 → 3.0.0.beta7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -1
- data/app/assets/images/codepress/line-numbers.png +0 -0
- data/app/assets/images/cropper/marqueeHoriz.gif +0 -0
- data/app/assets/images/cropper/marqueeVert.gif +0 -0
- data/app/assets/images/management/btn_add.gif +0 -0
- data/app/assets/images/management/btn_archive.gif +0 -0
- data/app/assets/images/management/btn_delete.gif +0 -0
- data/app/assets/images/management/btn_duplicate.gif +0 -0
- data/app/assets/images/management/btn_edit.gif +0 -0
- data/app/assets/images/management/btn_help.gif +0 -0
- data/app/assets/images/management/btn_new_page.gif +0 -0
- data/app/assets/images/management/btn_preview.gif +0 -0
- data/app/assets/images/management/btn_properties.gif +0 -0
- data/app/assets/images/management/btn_restore.gif +0 -0
- data/app/assets/images/management/btn_top_delete.gif +0 -0
- data/app/assets/images/management/btn_top_duplicate.gif +0 -0
- data/app/assets/images/management/btn_top_edit.gif +0 -0
- data/app/assets/images/management/btn_top_new.gif +0 -0
- data/app/assets/images/management/btn_top_preview.gif +0 -0
- data/app/assets/images/management/btn_top_properties.gif +0 -0
- data/app/assets/{manage → images/management}/bullet.gif +0 -0
- data/app/assets/images/management/cvv2_graphic.gif +0 -0
- data/app/assets/images/management/error.gif +0 -0
- data/app/assets/images/management/gallery_index.gif +0 -0
- data/app/assets/images/management/gallery_preview_overlay.png +0 -0
- data/app/assets/images/management/gallery_small_drag_overlay.png +0 -0
- data/app/assets/images/management/gallery_small_overlay.png +0 -0
- data/app/assets/images/management/gallery_sort.gif +0 -0
- data/app/assets/images/management/icon_download.gif +0 -0
- data/app/assets/images/management/icon_locked.png +0 -0
- data/app/assets/images/management/icon_page.gif +0 -0
- data/app/assets/images/management/icon_time.gif +0 -0
- data/app/assets/images/management/icon_unlocked.png +0 -0
- data/app/assets/images/management/page_loading.gif +0 -0
- data/app/assets/{manage → images/management}/start.gif +0 -0
- data/app/assets/images/management/vcard.gif +0 -0
- data/app/assets/javascripts/builder.js +101 -0
- data/app/assets/javascripts/codepress/codepress.html +36 -0
- data/app/assets/javascripts/codepress/codepress.js +130 -0
- data/app/assets/javascripts/codepress/engines/gecko.js +240 -0
- data/{vendor/gems/acts_as_tree/test/abstract_unit.rb → app/assets/javascripts/codepress/engines/khtml.js} +0 -0
- data/app/assets/javascripts/codepress/engines/msie.js +263 -0
- data/{vendor/gems/acts_as_tree/test/database.yml → app/assets/javascripts/codepress/engines/older.js} +0 -0
- data/app/assets/javascripts/codepress/engines/opera.js +259 -0
- data/app/assets/javascripts/codepress/languages/css.js +23 -0
- data/app/assets/javascripts/codepress/languages/generic.js +25 -0
- data/app/assets/javascripts/codepress/languages/html.js +63 -0
- data/app/assets/javascripts/codepress/languages/java.js +24 -0
- data/app/assets/javascripts/codepress/languages/javascript.js +30 -0
- data/app/assets/javascripts/codepress/languages/perl.js +27 -0
- data/app/assets/javascripts/codepress/languages/php.js +60 -0
- data/app/assets/javascripts/codepress/languages/ruby.js +26 -0
- data/app/assets/javascripts/codepress/languages/sql.js +30 -0
- data/app/assets/javascripts/codepress/languages/text.js +9 -0
- data/app/assets/javascripts/cropper.js +568 -0
- data/app/assets/javascripts/dojo/dojo.js +14155 -0
- data/app/assets/javascripts/dojo/src/html/images/shadowB.png +0 -0
- data/app/assets/javascripts/dojo/src/html/images/shadowBL.png +0 -0
- data/app/assets/javascripts/dojo/src/html/images/shadowBR.png +0 -0
- data/app/assets/javascripts/dojo/src/html/images/shadowL.png +0 -0
- data/app/assets/javascripts/dojo/src/html/images/shadowR.png +0 -0
- data/app/assets/javascripts/dojo/src/html/images/shadowT.png +0 -0
- data/app/assets/javascripts/dojo/src/html/images/shadowTL.png +0 -0
- data/app/assets/javascripts/dojo/src/html/images/shadowTR.png +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/Editor2/showtableborder_gecko.css +19 -0
- data/app/assets/javascripts/dojo/src/widget/templates/HslColorPicker.svg +30 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/aggregate.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/aggregate.psd +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/backcolor.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/bg-fade.png +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/bold.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/cancel.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/copy.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/createlink.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/cut.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/delete.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/forecolor.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/hilitecolor.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/indent.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/inserthorizontalrule.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/insertimage.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/insertorderedlist.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/inserttable.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/insertunorderedlist.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/italic.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/justifycenter.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/justifyfull.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/justifyleft.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/justifyright.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/left_to_right.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/list_bullet_indent.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/list_bullet_outdent.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/list_num_indent.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/list_num_outdent.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/outdent.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/paste.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/redo.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/removeformat.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/right_to_left.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/save.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/sep.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/space.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/strikethrough.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/subscript.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/superscript.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/underline.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/undo.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/buttons/wikiword.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/check.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/decrementMonth.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/decrementWeek.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/grabCorner.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/floatingPaneClose.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaAccordionOff.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaAccordionSelected.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaActive-c.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaActive-l.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaActive-r.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaBarBg.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaButton-c.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaButton-l.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaButton-r.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaDisabled-c.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaDisabled-l.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaDisabled-r.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaMenuBg.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaPressed-c.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaPressed-l.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/soriaPressed-r.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/tab_close.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/images/toolbar-bg.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/incrementMonth.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/incrementWeek.gif +0 -0
- data/app/assets/javascripts/dojo/src/widget/templates/richtextframe.html +24 -0
- data/app/assets/javascripts/imagine.js +1385 -0
- data/app/assets/javascripts/jquery_no_conflict.js +9405 -0
- data/app/assets/stylesheets/codepress/codepress.css +7 -0
- data/app/assets/stylesheets/codepress/languages/css.css +10 -0
- data/app/assets/stylesheets/codepress/languages/generic.css +9 -0
- data/app/assets/stylesheets/codepress/languages/html.css +18 -0
- data/app/assets/stylesheets/codepress/languages/java.css +7 -0
- data/app/assets/stylesheets/codepress/languages/javascript.css +8 -0
- data/app/assets/stylesheets/codepress/languages/perl.css +11 -0
- data/app/assets/stylesheets/codepress/languages/php.css +12 -0
- data/app/assets/stylesheets/codepress/languages/ruby.css +10 -0
- data/app/assets/stylesheets/codepress/languages/sql.css +10 -0
- data/app/assets/stylesheets/codepress/languages/text.css +5 -0
- data/app/assets/stylesheets/cropper.css +182 -0
- data/app/assets/stylesheets/management.css +96 -0
- data/app/assets/stylesheets/reset.css +58 -0
- data/app/controllers/cms/content_controller.rb +318 -2
- data/app/controllers/management/cms_controller.rb +1669 -0
- data/app/controllers/management/user_controller.rb +4 -4
- data/app/controllers/management/users_controller.rb +18 -4
- data/app/controllers/util_controller.rb +45 -0
- data/app/helpers/cms_application_helper.rb +662 -15
- data/app/models/cms_content_sweeper.rb +21 -0
- data/app/models/cms_page.rb +126 -0
- data/app/models/cms_page_object.rb +23 -0
- data/app/models/cms_page_tag.rb +5 -0
- data/app/models/cms_page_version.rb +3 -0
- data/app/models/cms_snippet.rb +16 -0
- data/app/models/cms_template.rb +29 -0
- data/app/models/user.rb +6 -3
- data/app/views/management/cms/_complete_gallery.html.erb +5 -0
- data/app/views/management/cms/_create_file_link.html.erb +21 -0
- data/app/views/management/cms/_crop_feature_image.html.erb +188 -0
- data/app/views/management/cms/_crop_image.html.erb +188 -0
- data/app/views/management/cms/_crop_results.html.erb +1 -0
- data/app/views/management/cms/_crop_results_feature_image.html.erb +1 -0
- data/app/views/management/cms/_crop_results_thumb.html.erb +1 -0
- data/app/views/management/cms/_crop_thumb.html.erb +188 -0
- data/app/views/management/cms/_dialogs.html.erb +39 -0
- data/app/views/management/cms/_edit_page.html.erb +176 -0
- data/app/views/management/cms/_gallery_index.html.erb +10 -0
- data/app/views/management/cms/_gallery_setup.html.erb +22 -0
- data/app/views/management/cms/_image.html.erb +3 -0
- data/app/views/management/cms/_image_details.html.erb +26 -0
- data/app/views/management/cms/_image_draggable.html.erb +4 -0
- data/app/views/management/cms/_list_page.html.erb +8 -0
- data/app/views/management/cms/_list_page_select.html.erb +8 -0
- data/app/views/management/cms/_list_pages.html.erb +1 -0
- data/app/views/management/cms/_list_pages_select.html.erb +1 -0
- data/app/views/management/cms/_page_attribute.html.erb +6 -0
- data/app/views/management/cms/_page_list.html.erb +171 -0
- data/app/views/management/cms/_page_list_source_folder.html.erb +20 -0
- data/app/views/management/cms/_page_list_source_tag.html.erb +18 -0
- data/app/views/management/cms/_select_gallery.html.erb +117 -0
- data/app/views/management/cms/_snippet.html.erb +3 -0
- data/app/views/management/cms/_sort_images.html.erb +15 -0
- data/app/views/management/cms/_temp.html.erb +3 -0
- data/app/views/management/cms/_template_options.html.erb +21 -0
- data/app/views/management/cms/_template_reference.html.erb +42 -0
- data/app/views/management/cms/_upload_feature_image.html.erb +35 -0
- data/app/views/management/cms/_upload_file.html.erb +31 -0
- data/app/views/management/cms/_upload_image.html.erb +74 -0
- data/app/views/management/cms/_upload_thumb.html.erb +35 -0
- data/app/views/management/cms/edit_master.html.erb +48 -0
- data/app/views/management/cms/edit_page_content.html.erb +4 -0
- data/app/views/management/cms/edit_snippet.html.erb +47 -0
- data/app/views/management/cms/edit_template.html.erb +48 -0
- data/app/views/management/cms/gallery_management.html.erb +108 -0
- data/app/views/management/cms/index.html.erb +20 -0
- data/app/views/management/cms/page_tags_for_lookup.html.erb +5 -0
- data/app/views/management/cms/pages.html.erb +99 -0
- data/app/views/management/cms/permission_denied.html.erb +1 -0
- data/app/views/management/cms/select_page.html.erb +57 -0
- data/app/views/management/cms/snippets.html.erb +14 -0
- data/app/views/management/cms/templates.html.erb +14 -0
- data/app/views/management/cms/toolbar_edit.html.erb +269 -0
- data/app/views/management/cms/toolbar_preview.html.erb +109 -0
- data/app/views/util/_calendar_days.html.erb +72 -0
- data/app/views/util/_calendar_month_year.html.erb +1 -0
- data/app/views/util/_date_picker.html.erb +56 -0
- data/app/views/util/_message.html.erb +1 -0
- data/app/views/util/_show_message.js.erb +6 -0
- data/app/views/util/_tab.html.erb +4 -0
- data/config/routes.rb +4 -1
- data/imagine_cms.gemspec +4 -0
- data/{vendor/gems → lib}/acts_as_versioned/.document +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/.gitignore +2 -0
- data/{vendor/gems → lib}/acts_as_versioned/CHANGELOG +0 -0
- data/lib/acts_as_versioned/Gemfile +7 -0
- data/{vendor/gems → lib}/acts_as_versioned/MIT-LICENSE +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/README +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/RUNNING_UNIT_TESTS +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/Rakefile +1 -1
- data/{vendor/gems → lib}/acts_as_versioned/acts_as_versioned.gemspec +4 -4
- data/{vendor/gems → lib}/acts_as_versioned/init.rb +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/lib/acts_as_versioned.rb +109 -107
- data/{vendor/gems → lib}/acts_as_versioned/test/abstract_unit.rb +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/database.yml +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/authors.yml +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/landmark.rb +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/landmark_versions.yml +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/landmarks.yml +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/locked_pages.yml +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/locked_pages_revisions.yml +0 -0
- data/{vendor/gems/acts_as_versioned/test/fixtures/migrations/1_add_versioned_tables.rb → lib/acts_as_versioned/test/fixtures/migrations/2_add_versioned_tables.rb} +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/page.rb +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/page_versions.yml +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/pages.yml +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/fixtures/widget.rb +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/migration_test.rb +0 -1
- data/{vendor/gems → lib}/acts_as_versioned/test/schema.rb +0 -0
- data/{vendor/gems → lib}/acts_as_versioned/test/versioned_test.rb +0 -0
- data/lib/extensions/action_controller.rb +154 -143
- data/lib/imagine_cms/engine.rb +33 -12
- data/lib/imagine_cms/version.rb +1 -1
- data/lib/imagine_cms.rb +30 -6
- data/lib/prototype_legacy_helper/README.markdown +13 -0
- data/lib/prototype_legacy_helper/init.rb +1 -0
- data/lib/prototype_legacy_helper/lib/prototype_legacy_helper.rb +430 -0
- data/lib/prototype_legacy_helper/test/test_prototype_helper.rb +297 -0
- data/lib/upload_progress/CHANGELOG +5 -0
- data/lib/upload_progress/MIT-LICENSE +20 -0
- data/lib/upload_progress/README +45 -0
- data/{vendor/gems/acts_as_tree → lib/upload_progress}/Rakefile +6 -5
- data/lib/upload_progress/init.rb +7 -0
- data/lib/upload_progress/lib/multipart_progress.rb +176 -0
- data/lib/upload_progress/lib/progress.rb +145 -0
- data/lib/upload_progress/lib/upload_progress.rb +303 -0
- data/lib/upload_progress/lib/upload_progress_helper.rb +425 -0
- data/lib/upload_progress/public/stylesheets/upload_progress.css +21 -0
- data/lib/upload_progress/test/multipart_progress_testx.rb +364 -0
- data/lib/upload_progress/test/upload_progress_helper_testx.rb +134 -0
- data/lib/upload_progress/test/upload_progress_testx.rb +88 -0
- metadata +305 -43
- data/app/assets/manage/btn_delete.gif +0 -0
- data/vendor/gems/.DS_Store +0 -0
- data/vendor/gems/acts_as_tree/README +0 -26
- data/vendor/gems/acts_as_tree/init.rb +0 -1
- data/vendor/gems/acts_as_tree/lib/active_record/acts/tree.rb +0 -96
- data/vendor/gems/acts_as_tree/test/acts_as_tree_test.rb +0 -219
- data/vendor/gems/acts_as_tree/test/fixtures/mixin.rb +0 -0
- data/vendor/gems/acts_as_tree/test/fixtures/mixins.yml +0 -0
- data/vendor/gems/acts_as_tree/test/schema.rb +0 -0
- data/vendor/gems/acts_as_versioned/Gemfile +0 -7
@@ -49,13 +49,329 @@ module Cms # :nodoc:
|
|
49
49
|
|
50
50
|
# Renders app/views/errors/404.rhtml with http status 404 Not Found.
|
51
51
|
def not_found
|
52
|
-
logger.error "404 from #{request.referer}"
|
53
|
-
render :template => 'errors/404', :status => 404
|
52
|
+
# logger.error "404 from #{request.referer}"
|
53
|
+
# render :template => 'errors/404', :status => 404
|
54
|
+
|
55
|
+
# let Rails handle 404s natively (override if you want to handle manually)
|
56
|
+
raise ActionController::RoutingError.new('404 Not Found')
|
54
57
|
end
|
55
58
|
|
56
59
|
def show_from_db
|
60
|
+
logger.debug 'Rendering content from database'
|
61
|
+
|
62
|
+
# begin
|
63
|
+
@content_levels = params[:content_path]
|
64
|
+
db_path = params[:content_path]
|
65
|
+
edit_mode = false
|
66
|
+
@allow_caching = true
|
67
|
+
|
68
|
+
# check for /login
|
69
|
+
if db_path.last == 'login'
|
70
|
+
db_path.pop
|
71
|
+
if @pg = CmsPage.find_by_path(db_path.join('/'))
|
72
|
+
db_path << 'version'
|
73
|
+
db_path << (@pg.published_version <= 0 ? @pg.version : @pg.published_version).to_s
|
74
|
+
@allow_caching = false
|
75
|
+
|
76
|
+
if is_logged_in_user?
|
77
|
+
redirect_to '/' + db_path.join('/') and return true
|
78
|
+
else
|
79
|
+
flash[:notice] = "Please log in now in order to switch to Preview Mode on the page you were just viewing."
|
80
|
+
session[:saved_user_uri] = '/' + db_path.join('/')
|
81
|
+
redirect_to :controller => '/management/user', :action => 'login' and return true
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# check for /edit
|
87
|
+
if db_path.last == 'edit'
|
88
|
+
db_path.pop
|
89
|
+
edit_mode = true
|
90
|
+
@allow_caching = false
|
91
|
+
end
|
92
|
+
|
93
|
+
# check for 2-part suffixes (/version/[#], /form/[action])
|
94
|
+
test = db_path.last(2)
|
95
|
+
|
96
|
+
if test.size == 2
|
97
|
+
if test.first == 'version' && test.last.to_i > 0
|
98
|
+
params[:version] = db_path.pop
|
99
|
+
db_path.pop
|
100
|
+
@allow_caching = false
|
101
|
+
elsif test.first == 'form'
|
102
|
+
@form_action = db_path.pop
|
103
|
+
db_path.pop
|
104
|
+
@allow_caching = false
|
105
|
+
|
106
|
+
# restore saved instance variables
|
107
|
+
if session[:saved_instance_variables].is_a? Hash
|
108
|
+
session[:saved_instance_variables].each do |k, v|
|
109
|
+
instance_variable_set "@#{k}", v
|
110
|
+
end
|
111
|
+
session[:saved_instance_variables] = nil
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
# check for 3-part suffixes (/segment/[offset]/[plname])
|
117
|
+
test = db_path.last(3)
|
118
|
+
|
119
|
+
if test.size == 3
|
120
|
+
if test[0] == 'segment' && !test[1].empty? && !test[2].empty?
|
121
|
+
@page_list_segment = true
|
122
|
+
params[:page_list_name] = db_path.pop
|
123
|
+
params[:offset] = db_path.pop
|
124
|
+
db_path.pop
|
125
|
+
@allow_caching = false
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
if db_path.last == 'index'
|
130
|
+
db_path.pop
|
131
|
+
params[:page] = 'index'
|
132
|
+
end
|
133
|
+
|
134
|
+
if @pg = CmsPage.find_by_path(db_path.join('/'), :include => [ :template ])
|
135
|
+
if edit_mode
|
136
|
+
redirect_to :controller => '/management/cms', :action => 'edit_page_content', :id => @pg and return true
|
137
|
+
else
|
138
|
+
# return if page is offline and viewer is not an admin
|
139
|
+
if @pg.published_version < 0
|
140
|
+
if !is_logged_in_user?
|
141
|
+
return false
|
142
|
+
else
|
143
|
+
# display, but don't cache
|
144
|
+
@allow_caching = false
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
# load appropriate page version and associated objects
|
149
|
+
# if we had to authenticate, load_page_objects = false, but return true so we don't call not_found
|
150
|
+
load_page_objects or return true
|
151
|
+
|
152
|
+
# set "legacy" vars
|
153
|
+
params[:section] = @content_levels.size < 1 ? '' : @content_levels.first
|
154
|
+
params[:subsection] = @content_levels[1] unless @content_levels.size < 3
|
155
|
+
if @content_levels.size == 1
|
156
|
+
params[:page] = 'index'
|
157
|
+
elsif @content_levels.size > 1
|
158
|
+
params[:page] = @content_levels.last
|
159
|
+
end
|
160
|
+
|
161
|
+
@page_title = @pg.title
|
162
|
+
|
163
|
+
template_content = render_cms_page_to_string(@pg)
|
164
|
+
|
165
|
+
# logger.debug @page_objects.map { |k,v| "#{k}: #{v}\n" }
|
166
|
+
|
167
|
+
# this is kind of ugly, having this in the middle of my rendering code
|
168
|
+
if @page_list_segment
|
169
|
+
name = params[:page_list_name]
|
170
|
+
key = "obj-page_list-#{name.gsub(/[^\w]/, '_')}"
|
171
|
+
pages = page_list_items(@pg, key).compact.uniq
|
172
|
+
render :inline => render_page_list_segment(name, pages) and return true
|
173
|
+
end
|
174
|
+
# end of page list segment code
|
175
|
+
|
176
|
+
render :inline => template_content
|
177
|
+
|
178
|
+
if perform_caching && UseCmsPageCaching && @allow_caching
|
179
|
+
cache_page
|
180
|
+
end
|
181
|
+
|
182
|
+
return true
|
183
|
+
end
|
184
|
+
end
|
185
|
+
# rescue Exception => e
|
186
|
+
# logger.debug "Error rendering from db: #{e.inspect.gsub(/</, '<')} #{e.backtrace}"
|
187
|
+
# log_error(e)
|
188
|
+
# end
|
189
|
+
|
190
|
+
# if we haven't rendered something from the db by now, return false
|
57
191
|
false
|
58
192
|
end
|
59
193
|
|
194
|
+
|
195
|
+
def disable_caching
|
196
|
+
@allow_caching = false
|
197
|
+
end
|
198
|
+
helper_method :disable_caching
|
199
|
+
|
200
|
+
def search
|
201
|
+
@terms = []
|
202
|
+
@pages = []
|
203
|
+
|
204
|
+
if params[:q]
|
205
|
+
@terms = params[:q].split(/\s+/).reject { |t| t.length < 3 }
|
206
|
+
end
|
207
|
+
|
208
|
+
CmsPage.index_all
|
209
|
+
unless @terms.empty?
|
210
|
+
term_variants = []
|
211
|
+
@terms.each do |term|
|
212
|
+
term_variants << [ term, term.singularize, term.pluralize ].uniq.map { |v| v.gsub(/[\[\]\:\>\(\)\?]/, '').gsub(/\+/, '\+') }.join('|')
|
213
|
+
end
|
214
|
+
|
215
|
+
conds = [ 'published_version >= 0' ]
|
216
|
+
vars = []
|
217
|
+
term_variants.each do |term_variant|
|
218
|
+
conds << "(title regexp ?)"
|
219
|
+
vars << "[[:<:]](#{term_variant})[[:>:]]"
|
220
|
+
end
|
221
|
+
@pages.concat CmsPage.find(:all, :conditions => [ conds.join(' and ') ].concat(vars))
|
222
|
+
|
223
|
+
conds = [ 'published_version >= 0' ]
|
224
|
+
vars = []
|
225
|
+
term_variants.each do |term_variant|
|
226
|
+
conds << "(title regexp ? or search_index regexp ?)"
|
227
|
+
vars << "[[:<:]](#{term_variant})[[:>:]]" << "[[:<:]](#{term_variant})[[:>:]]"
|
228
|
+
end
|
229
|
+
@pages.concat CmsPage.find(:all, :conditions => [ conds.join(' and ') ].concat(vars))
|
230
|
+
|
231
|
+
# fulltext doesn't work with innodb... may need to make a separate myisam
|
232
|
+
# table just for search. (this would be better because it would sort by relevance)
|
233
|
+
# @pages.concat CmsPage.find(:all, :conditions => [ 'match (title, search_index) against (?)', params[:q] ])
|
234
|
+
end
|
235
|
+
@pages = @pages.uniq.reject { |pg| pg.search_index.empty? }
|
236
|
+
|
237
|
+
@pg = CmsPage.new
|
238
|
+
@pg.template = CmsTemplate.find_by_name('Search') || CmsTemplate.new
|
239
|
+
@page_title = 'Search Results'
|
240
|
+
|
241
|
+
load_page_objects or return
|
242
|
+
@page_objects['obj-text-search_results'] = render_to_string(:partial => 'search')
|
243
|
+
|
244
|
+
render :inline => render_cms_page_to_string(@pg)
|
245
|
+
end
|
246
|
+
|
247
|
+
def rss_feed
|
248
|
+
min_time = Time.rfc2822(request.env["HTTP_IF_MODIFIED_SINCE"]) rescue nil
|
249
|
+
if min_time && (Time.now - min_time) < 5.minutes
|
250
|
+
render :text => '', :status => '304 Not Modified' and return
|
251
|
+
end
|
252
|
+
|
253
|
+
@pg = CmsPage.find_by_id(params[:page_id])
|
254
|
+
render :nothing => true and return unless @pg && params[:page_list_name]
|
255
|
+
key = "obj-page_list-#{params[:page_list_name].gsub(/[^\w]/, '_')}"
|
256
|
+
|
257
|
+
load_page_objects or return true
|
258
|
+
|
259
|
+
options ||= {}
|
260
|
+
today = Time.mktime(Time.now.year, Time.now.month, Time.now.day)
|
261
|
+
case @page_objects["#{key}-date-range"]
|
262
|
+
when 'all'
|
263
|
+
when 'past'
|
264
|
+
options[:end_date] = today
|
265
|
+
when 'future'
|
266
|
+
options[:start_date] = today
|
267
|
+
when 'custom'
|
268
|
+
options[:start_date] = @page_objects["#{key}-date-range-custom-start"]
|
269
|
+
options[:end_date] = @page_objects["#{key}-date-range-custom-end"]
|
270
|
+
end
|
271
|
+
|
272
|
+
str = render_cms_page_to_string(@pg)
|
273
|
+
|
274
|
+
@pages = page_list_items(@pg, key, options).first(20)
|
275
|
+
@page_contents = {}
|
276
|
+
|
277
|
+
unless @pages.empty?
|
278
|
+
@most_recent_pub_date = @pages.first
|
279
|
+
@pages.each { |pg| most_recent_pub_date = pg if pg.published_date > @most_recent_pub_date.published_date }
|
280
|
+
|
281
|
+
if min_time && @most_recent_pub_date.published_date && @most_recent_pub_date.published_date <= min_time
|
282
|
+
# use cached version
|
283
|
+
render :text => '', :status => '304 Not Modified' and return
|
284
|
+
end
|
285
|
+
|
286
|
+
@pages.each_with_index do |page, index|
|
287
|
+
@page_contents[page.id] = render_to_string :inline => substitute_placeholders(@page_objects["#{key}-template"] || options[:template] || '', page, :index => index+1, :count => @pages.size)
|
288
|
+
end
|
289
|
+
end
|
290
|
+
|
291
|
+
# send feed
|
292
|
+
response.headers["Content-Type"] = "application/rss+xml"
|
293
|
+
response.headers["Last-Modified"] = @pages.first.published_date.httpdate rescue Time.now
|
294
|
+
|
295
|
+
render :layout => false
|
296
|
+
end
|
297
|
+
|
298
|
+
def preview_template
|
299
|
+
@pg = CmsPage.find(1)
|
300
|
+
@pg.template = CmsTemplate.new
|
301
|
+
@pg.template.assign_attributes(params[:temp] || params[:snip] || {})
|
302
|
+
@page_objects = HashObject.new
|
303
|
+
render :inline => substitute_placeholders(@pg.template.content, @pg), :layout => 'application'
|
304
|
+
end
|
305
|
+
|
306
|
+
def page_list_calendar
|
307
|
+
@pg = CmsPage.find(params[:id])
|
308
|
+
load_page_objects or return true
|
309
|
+
|
310
|
+
@month = (params[:month] || Time.now.month).to_i
|
311
|
+
@year = (params[:year] || Time.now.year).to_i
|
312
|
+
@key = params[:key]
|
313
|
+
first_of_month = Time.mktime(@year, @month, 1)
|
314
|
+
last_of_month = first_of_month.end_of_month
|
315
|
+
|
316
|
+
@css_prefix = params[:css_prefix] || 'calendar_'
|
317
|
+
|
318
|
+
events = page_list_items(@pg, @key, :start_date => first_of_month, :end_date => last_of_month)
|
319
|
+
|
320
|
+
@event_days = {}
|
321
|
+
events.each do |e|
|
322
|
+
if e.article_date
|
323
|
+
event_start = e.article_date.mday
|
324
|
+
if e.article_end_date
|
325
|
+
event_end = e.article_end_date > last_of_month ? last_of_month.mday : e.article_end_date.mday
|
326
|
+
else
|
327
|
+
event_end = event_start
|
328
|
+
end
|
329
|
+
|
330
|
+
for index in event_start..event_end
|
331
|
+
@event_days[index] ||= ''
|
332
|
+
@event_days[index] << erb_render(substitute_placeholders(@page_objects["#{@key}-template"], e))
|
333
|
+
end
|
334
|
+
|
335
|
+
end
|
336
|
+
end
|
337
|
+
@event_days.each do |index, val|
|
338
|
+
@event_days[index] = (@page_objects["#{@key}-header"] || '') + val + (@page_objects["#{@key}-footer"] || '')
|
339
|
+
end
|
340
|
+
|
341
|
+
render :update do |page|
|
342
|
+
page.replace_html "page_list_calendar_#{@key}_month_year", :partial => 'page_list_calendar_month_year'
|
343
|
+
page.replace_html "page_list_calendar_#{@key}_days", :partial => 'page_list_calendar_days'
|
344
|
+
end
|
345
|
+
end
|
346
|
+
|
347
|
+
|
348
|
+
protected
|
349
|
+
|
350
|
+
def render_cms_page_to_string(page)
|
351
|
+
# sanitize possibly dangerous content before rendering
|
352
|
+
template_content = substitute_placeholders(page.template.content, page)
|
353
|
+
template_content.gsub!(/<(%.*?(exec|system)\s?\(.*?\s*%)>/, '<\1>')
|
354
|
+
template_content.gsub!(/<(%.*?\%x\s?\[.*?\s*%)>/, '<\1>')
|
355
|
+
template_content.gsub!(/<(%.*?\`.*?\s*%)>/, '<\1>')
|
356
|
+
|
357
|
+
logger.silence do
|
358
|
+
template_content = render_to_string(:inline => template_content,
|
359
|
+
:locals => { :page => page, :safe_level => 0 })
|
360
|
+
end
|
361
|
+
|
362
|
+
template_content = substitute_placeholders(template_content, page)
|
363
|
+
template_content.gsub!(/<(%.*?(exec|system)\s?\(.*?\s*%)>/, '<\1>')
|
364
|
+
template_content.gsub!(/<(%.*?\%x\s?\[.*?\s*%)>/, '<\1>')
|
365
|
+
template_content.gsub!(/<(%.*?\`.*?\s*%)>/, '<\1>')
|
366
|
+
|
367
|
+
logger.silence do
|
368
|
+
template_content = render_to_string(:inline => template_content,
|
369
|
+
:layout => 'application',
|
370
|
+
:locals => { :page => page })
|
371
|
+
end
|
372
|
+
|
373
|
+
template_content
|
374
|
+
end
|
375
|
+
|
60
376
|
end
|
61
377
|
end
|