browsercms 3.5.2 → 3.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/controllers/cms/toolbar_controller.rb +2 -2
- data/app/helpers/cms/rendering_helper.rb +6 -1
- data/app/models/cms/portlet.rb +8 -0
- data/app/views/cms/content/show.html.erb +8 -2
- data/app/views/cms/pages/_edit_connector.html.erb +1 -9
- data/db/migrate/20100117144038_browsercms314.rb +20 -0
- data/db/migrate/20100117144039_browsercms315.rb +1 -1
- data/db/migrate/20111130221145_browsercms340.rb +1 -7
- data/db/migrate/20120717182827_browsercms353.rb +19 -0
- data/doc/release_notes.md +15 -0
- data/lib/cms/acts/content_page.rb +6 -11
- data/lib/cms/behaviors/attaching.rb +4 -1
- data/lib/cms/behaviors/rendering.rb +14 -0
- data/lib/cms/upgrades/v3_5_0.rb +37 -16
- data/lib/cms/version.rb +1 -1
- metadata +5 -3
@@ -12,9 +12,14 @@ module Cms
|
|
12
12
|
render :partial => 'cms/attachments/attachment_table', :locals => { :block => content, :can_delete => false }
|
13
13
|
end
|
14
14
|
|
15
|
+
# Determines if a user is currently editing this page
|
16
|
+
def is_editing_page?(page)
|
17
|
+
logged_in? && @mode == "edit" && current_user.able_to_edit?(page)
|
18
|
+
end
|
19
|
+
|
15
20
|
def render_connector_and_connectable(connector, connectable)
|
16
21
|
logger.debug "Rendering #{connectable} "
|
17
|
-
if
|
22
|
+
if is_editing_page?(connector.page)
|
18
23
|
render(:partial => 'cms/pages/edit_connector', :locals => { :connector => connector, :connectable => connectable})
|
19
24
|
else
|
20
25
|
render_connectable(connectable)
|
data/app/models/cms/portlet.rb
CHANGED
@@ -138,6 +138,14 @@ module Cms
|
|
138
138
|
end
|
139
139
|
|
140
140
|
#----- Portlet Action Related Methods ----------------------------------------
|
141
|
+
|
142
|
+
# Used by portlets to set a custom title, typically in the render body.
|
143
|
+
# For example, this allows a page with a single portlet that might display a content block to set the page name to
|
144
|
+
# that block name.
|
145
|
+
def page_title(new_title)
|
146
|
+
controller.current_page.title = new_title
|
147
|
+
end
|
148
|
+
|
141
149
|
def instance_name
|
142
150
|
"#{self.class.name.demodulize.underscore}_#{id}"
|
143
151
|
end
|
@@ -1,7 +1,13 @@
|
|
1
|
-
<% page_title @page.page_title %>
|
2
|
-
|
3
1
|
<%= content_for :html_head do %>
|
4
2
|
<meta name="generator" content="BrowserCMS <%= Cms.version %>"/>
|
3
|
+
<% if is_editing_page?(current_page) %>
|
4
|
+
<%= javascript_include_tag 'cms/core_library' %>
|
5
|
+
<% if @authenticity_token_loaded.nil? && protect_against_forgery? %><script type="text/javascript">
|
6
|
+
jQuery(function($){
|
7
|
+
$.cms.authenticity_token = '<%= form_authenticity_token %>'
|
8
|
+
})
|
9
|
+
</script><% end %><% @authenticity_token_loaded = true %>
|
10
|
+
<% end %>
|
5
11
|
<% end %>
|
6
12
|
<% if @show_toolbar %>
|
7
13
|
<% flash.keep %>
|
@@ -16,12 +16,4 @@
|
|
16
16
|
:style => "text-decoration: none; padding: 0 2px 0 0; background: none; margin: 0; float: none; border: 0; position: absolute; top: -1px; right: 10px;" %>
|
17
17
|
</div>
|
18
18
|
<%= render_connectable connectable %>
|
19
|
-
</div>
|
20
|
-
<%= content_for :html_head do %>
|
21
|
-
<%= javascript_include_tag 'cms/core_library' %>
|
22
|
-
<% if @authenticity_token_loaded.nil? && protect_against_forgery? %><script type="text/javascript">
|
23
|
-
jQuery(function($){
|
24
|
-
$.cms.authenticity_token = '<%= form_authenticity_token %>'
|
25
|
-
})
|
26
|
-
</script><% end %><% @authenticity_token_loaded = true %>
|
27
|
-
<% end %>
|
19
|
+
</div>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'cms/upgrades/v3_4_0'
|
2
|
+
|
3
|
+
# Retroactively fix for changes that were merged into 3.1.5/3.3.0/3.4.0.
|
4
|
+
# This originally was for 3.4.0, but needs to be run prior to 3.1.5 migrations.
|
5
|
+
class Browsercms314 < ActiveRecord::Migration
|
6
|
+
include Cms::Upgrades::V3_4_0::SchemaStatements
|
7
|
+
|
8
|
+
def change
|
9
|
+
standardize_foreign_keys_from_versions_tables_to_original_table
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def standardize_foreign_keys_from_versions_tables_to_original_table
|
15
|
+
models = %w[attachment dynamic_view file_block html_block link page ]
|
16
|
+
models.each do |model|
|
17
|
+
standardize_version_id_column(model)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -69,7 +69,7 @@ class Browsercms315 < ActiveRecord::Migration
|
|
69
69
|
|
70
70
|
all_nodes_but_root = Cms::SectionNode.find(:all, :conditions=>["section_id IS NOT NULL"])
|
71
71
|
all_nodes_but_root.each do |sn|
|
72
|
-
parent_node = Cms::SectionNode.find(:first, :conditions => ["node_id = ? and node_type = 'Section'", sn.section_id])
|
72
|
+
parent_node = Cms::SectionNode.find(:first, :conditions => ["node_id = ? and (node_type = 'Section' or node_type = 'Cms::Section')", sn.section_id])
|
73
73
|
sn.temp_parent_id = parent_node.id
|
74
74
|
sn.save!
|
75
75
|
end
|
@@ -12,7 +12,6 @@ class Browsercms340 < ActiveRecord::Migration
|
|
12
12
|
|
13
13
|
update_sitemap
|
14
14
|
update_files
|
15
|
-
standardize_foreign_keys_from_versions_tables_to_original_table
|
16
15
|
end
|
17
16
|
|
18
17
|
private
|
@@ -53,10 +52,5 @@ class Browsercms340 < ActiveRecord::Migration
|
|
53
52
|
end
|
54
53
|
end
|
55
54
|
|
56
|
-
|
57
|
-
models = %w[attachment dynamic_view file_block html_block link page ]
|
58
|
-
models.each do |model|
|
59
|
-
standardize_version_id_column(model)
|
60
|
-
end
|
61
|
-
end
|
55
|
+
|
62
56
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'cms/upgrades/v3_5_0'
|
2
|
+
|
3
|
+
class Browsercms353 < ActiveRecord::Migration
|
4
|
+
def change
|
5
|
+
namespace_templates
|
6
|
+
|
7
|
+
# Some older projects may have AbstractFileBlock rather than File/ImageBlock connectors
|
8
|
+
v3_5_0_update_connector_namespaces("Cms", "AbstractFileBlock")
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def namespace_templates
|
15
|
+
["PageTemplate", "PagePartial"].each do |view|
|
16
|
+
Cms::DynamicView.update_all("type = 'Cms::#{view}'", "type = '#{view}'" )
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/doc/release_notes.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
v3.5.3
|
2
|
+
======
|
3
|
+
|
4
|
+
Bug fixes, with some improvements for upgrading projects from older versions of the CMS.
|
5
|
+
|
6
|
+
* [#461] Allow portlets to easily set the page title. This makes it easy for one portlet to render multiple different content blocks, and change the displayed <title> attribute to match the name of the block. For example:
|
7
|
+
|
8
|
+
def render
|
9
|
+
@block = Product.find(params[:id])
|
10
|
+
page_title @block.name
|
11
|
+
end
|
12
|
+
* [#536] Fix bug to make PortletHelpers available in the render.html.erb.
|
13
|
+
* [#534] Bug Fix - Ensure image/file blocks can be deleted from the content library.
|
14
|
+
* Migrations - Add another migration to handle Rails 2->3 updates (v3.1.4) which should retroactivealy added before v315.
|
15
|
+
|
1
16
|
v3.5.2
|
2
17
|
======
|
3
18
|
|
@@ -15,23 +15,18 @@
|
|
15
15
|
module Cms
|
16
16
|
module Acts
|
17
17
|
|
18
|
+
# Override some of the behavior defined in Cms::PageHelper so templates display correctly Rails Controllers
|
18
19
|
module PageHelper
|
19
20
|
|
20
|
-
# By default, the Name of the controller (minus 'Controller' will be the page name.)
|
21
|
-
# Unless @page_title is set in the controller action
|
22
|
-
def page_title(title=nil)
|
23
|
-
if title
|
24
|
-
@page_title = title
|
25
|
-
end
|
26
|
-
return controller.class.name.gsub("Controller", "").titleize unless @page_title
|
27
|
-
@page_title
|
28
|
-
end
|
29
|
-
|
30
|
-
|
31
21
|
# Do not show the toolbar on Acts::As::ContentPages
|
32
22
|
def cms_toolbar
|
33
23
|
""
|
34
24
|
end
|
25
|
+
|
26
|
+
# If we are showing an error page, use that. Otherwise, just a blank page object that has a default title.
|
27
|
+
def current_page
|
28
|
+
super ? super : OpenStruct.new(page_title: controller.class.name.gsub("Controller", ""))
|
29
|
+
end
|
35
30
|
end
|
36
31
|
module ContentPage
|
37
32
|
|
@@ -120,7 +120,10 @@ module Cms
|
|
120
120
|
def validates_attachment_presence(name, options = {})
|
121
121
|
message = options[:message] || "Must provide at least one #{name}"
|
122
122
|
validate(options) do |record|
|
123
|
-
|
123
|
+
return if record.deleted?
|
124
|
+
unless record.attachments.any? { |a| a.attachment_name == name.to_s }
|
125
|
+
record.errors.add(:attachment, message)
|
126
|
+
end
|
124
127
|
end
|
125
128
|
end
|
126
129
|
|
@@ -130,6 +130,8 @@ module Cms
|
|
130
130
|
# Create, Instantiate and Initialize the view
|
131
131
|
action_view = Cms::ViewContext.new(@controller, assigns_for_view)
|
132
132
|
|
133
|
+
add_content_helpers_if_defined(action_view)
|
134
|
+
|
133
135
|
# Determine if this content should render from a file system template or inline (i.e. database based template)
|
134
136
|
if respond_to?(:inline_options) && self.inline_options && self.inline_options.has_key?(:inline)
|
135
137
|
options = self.inline_options
|
@@ -152,6 +154,18 @@ module Cms
|
|
152
154
|
end
|
153
155
|
|
154
156
|
protected
|
157
|
+
|
158
|
+
# Add the helper class for this particular object, if its defined
|
159
|
+
# This is mostly for portlets, and should not fail if no helper is defined.
|
160
|
+
def add_content_helpers_if_defined(action_view)
|
161
|
+
begin
|
162
|
+
helper_module = self.class.helper_class
|
163
|
+
action_view.extend(helper_module)
|
164
|
+
rescue NameError => error
|
165
|
+
logger.debug "No helper class named '#{error.missing_name}' was found. This isn't necessarily an error as '#{self.class}' doesn't NEED a separate helper.'"
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
155
169
|
def copy_instance_variables_from_controller!
|
156
170
|
if @controller.respond_to?(:instance_variables_for_rendering)
|
157
171
|
@controller.instance_variables_for_rendering.each do |iv|
|
data/lib/cms/upgrades/v3_5_0.rb
CHANGED
@@ -21,8 +21,14 @@ module Cms
|
|
21
21
|
table_prefix = module_name.underscore
|
22
22
|
model_name = model_class_name.underscore
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
old_content_table = model_name.pluralize
|
25
|
+
new_content_table = "#{table_prefix}_#{model_name.pluralize}"
|
26
|
+
rename_table old_content_table, new_content_table if have_not_renamed(old_content_table, new_content_table)
|
27
|
+
|
28
|
+
|
29
|
+
old_versions_table = "#{model_name}_versions"
|
30
|
+
new_versions_table = "#{table_prefix}_#{model_name}_versions"
|
31
|
+
rename_table old_versions_table, new_versions_table if have_not_renamed(old_versions_table, new_versions_table)
|
26
32
|
v3_5_0_standardize_version_id_column(table_prefix, model_name)
|
27
33
|
v3_5_0_namespace_model_data(module_name, model_class_name)
|
28
34
|
v3_5_0_update_connector_namespaces(module_name, model_class_name)
|
@@ -53,6 +59,21 @@ module Cms
|
|
53
59
|
def v3_5_0_namespace_model(module_name, model_class_name)
|
54
60
|
"#{module_name}::#{model_class_name}"
|
55
61
|
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
# If we already renamed these tables, they should be skipped
|
66
|
+
def have_not_renamed(old_table, new_table)
|
67
|
+
unless table_exists?(old_table)
|
68
|
+
puts "Table #{old_table} does not exist. Skipping rename."
|
69
|
+
return false
|
70
|
+
end
|
71
|
+
unless !table_exists?(new_table)
|
72
|
+
puts "Table #{new_table} already exists. Skipping rename."
|
73
|
+
return false
|
74
|
+
end
|
75
|
+
true
|
76
|
+
end
|
56
77
|
end
|
57
78
|
|
58
79
|
# Add additional methods to ActiveRecord::Migration when this file is required.
|
@@ -71,13 +92,7 @@ module Cms
|
|
71
92
|
# @return [String] path to location where an attachment should be (based on id)
|
72
93
|
def path_for_attachment(attachment)
|
73
94
|
new_id_dir = "#{Paperclip::Interpolations.id_partition(AttachmentWrapper.new(attachment), nil)}/original"
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
# @return [String] Path to where an attachment should be
|
78
|
-
def path_to_attachment(attachment)
|
79
|
-
loc = path_for_attachment(attachment)
|
80
|
-
file_in_attachments_dir(loc)
|
95
|
+
File.join(attachments_dir, new_id_dir, fingerprint_for_file_location(attachment))
|
81
96
|
end
|
82
97
|
|
83
98
|
# For a given class with an Attachment association (pre-3.5.0), migrate its attachment data to match the new
|
@@ -161,18 +176,19 @@ module Cms
|
|
161
176
|
def migrate_attachments_file_location(model_class)
|
162
177
|
model_class.unscoped.each do |attachment|
|
163
178
|
from = File.join(attachments_dir, attachment.file_location)
|
164
|
-
to =
|
179
|
+
to = path_for_attachment(attachment)
|
165
180
|
move_attachment_file(from, to)
|
166
181
|
|
167
|
-
new_fingerprint = attachment
|
182
|
+
new_fingerprint = fingerprint_for_file_location(attachment)
|
168
183
|
model_class.unscoped.update_all({:data_fingerprint => new_fingerprint}, :id => attachment.id)
|
169
184
|
end
|
170
185
|
end
|
171
186
|
|
172
|
-
|
173
|
-
|
187
|
+
# Given a CMS <3.5 file_location, figure out the fingerprint, which should just be the file name.
|
188
|
+
def fingerprint_for_file_location(attachment)
|
189
|
+
attachment.file_location.split("/").last
|
174
190
|
end
|
175
|
-
|
191
|
+
|
176
192
|
def move_attachment_file(old_location, new_location)
|
177
193
|
if File.exists?(old_location)
|
178
194
|
FileUtils.mkdir_p(File.dirname(new_location), :verbose => false)
|
@@ -182,10 +198,15 @@ module Cms
|
|
182
198
|
end
|
183
199
|
end
|
184
200
|
|
201
|
+
# Return the location of the attachment's upload directory.
|
185
202
|
def attachments_dir
|
186
|
-
Cms::
|
203
|
+
Cms::Attachments::Serving.send_attachments_with.attachments_storage_location
|
187
204
|
end
|
188
|
-
|
205
|
+
|
206
|
+
# def attachments_dir
|
207
|
+
# Cms::Attachment.configuration.attachments_root
|
208
|
+
# end
|
209
|
+
|
189
210
|
# Allows us to use the Paperclip interpolations logic directly
|
190
211
|
class AttachmentWrapper
|
191
212
|
def initialize(attachment)
|
data/lib/cms/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: browsercms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.5.
|
4
|
+
version: 3.5.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -637,10 +637,12 @@ files:
|
|
637
637
|
- db/browsercms.seeds.rb
|
638
638
|
- db/migrate/20080815014337_browsercms_3_0_0.rb
|
639
639
|
- db/migrate/20091109175123_browsercms_3_0_5.rb
|
640
|
+
- db/migrate/20100117144038_browsercms314.rb
|
640
641
|
- db/migrate/20100117144039_browsercms315.rb
|
641
642
|
- db/migrate/20100705083859_browsercms_3_3_0.rb
|
642
643
|
- db/migrate/20111130221145_browsercms340.rb
|
643
644
|
- db/migrate/20120329144406_browsercms350.rb
|
645
|
+
- db/migrate/20120717182827_browsercms353.rb
|
644
646
|
- db/schema.rb
|
645
647
|
- db/seeds.rb
|
646
648
|
- doc/design/blue_button.psd
|
@@ -773,7 +775,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
773
775
|
version: '0'
|
774
776
|
segments:
|
775
777
|
- 0
|
776
|
-
hash: -
|
778
|
+
hash: -3887349942334149807
|
777
779
|
requirements: []
|
778
780
|
rubyforge_project:
|
779
781
|
rubygems_version: 1.8.24
|