refinerycms-core 2.0.3 → 2.0.4
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/assets/javascripts/refinery/admin.js.erb +33 -31
- data/app/assets/javascripts/refinery/boot_wym.js.erb +1 -1
- data/app/assets/javascripts/refinery/modal_dialogs.js.erb +31 -31
- data/app/assets/javascripts/refinery/submit_continue.js.coffee.erb +3 -0
- data/app/controllers/refinery/admin/dialogs_controller.rb +4 -0
- data/app/controllers/refinery/admin_controller.rb +1 -0
- data/app/helpers/refinery/image_helper.rb +9 -11
- data/app/views/refinery/admin/_form_actions.html.erb +1 -1
- data/config/locales/cs.yml +2 -2
- data/config/routes.rb +1 -1
- data/lib/generators/refinery/core/templates/config/initializers/refinery/core.rb.erb +3 -0
- data/lib/generators/refinery/engine/templates/Gemfile +37 -35
- data/lib/generators/refinery/engine/templates/Guardfile +1 -1
- data/lib/generators/refinery/engine/templates/app/models/refinery/namespace/singular_name.rb +22 -10
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_singular_name.html.erb +5 -4
- data/lib/generators/refinery/engine/templates/spec/spec_helper.rb +8 -1
- data/lib/refinery/admin/base_controller.rb +7 -5
- data/lib/refinery/application_controller.rb +7 -1
- data/lib/refinery/core/configuration.rb +13 -6
- data/lib/refinery/core/engine.rb +6 -2
- data/lib/refinery/core.rb +27 -11
- data/lib/refinery/crud.rb +1 -1
- data/lib/refinery/menu.rb +0 -4
- data/lib/refinery/version.rb +1 -1
- data/refinerycms-core.gemspec +2 -2
- data/spec/controllers/refinery/admin/refinery_core_controller_spec.rb +1 -1
- data/spec/lib/refinery/activity_spec.rb +26 -18
- data/spec/lib/refinery/application_controller_spec.rb +61 -28
- data/spec/lib/refinery/core/configuration_spec.rb +37 -0
- data/spec/lib/refinery/core_spec.rb +48 -17
- data/spec/lib/refinery/menu_spec.rb +37 -0
- data/spec/requests/refinery/admin/controller_restriction_spec.rb +27 -0
- metadata +14 -8
- data/app/helpers/application_helper.rb +0 -5
@@ -63,38 +63,40 @@ $.fn.applyMinimumHeightFromChildren = function() {
|
|
63
63
|
}
|
64
64
|
|
65
65
|
init_modal_dialogs = function(){
|
66
|
-
$('a[href*="dialog=true"]
|
67
|
-
$(
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
66
|
+
$(document).on('click', 'a[href*="dialog=true"]:not(#dialog_container a)', function(e) {
|
67
|
+
var $anchor = $(this),
|
68
|
+
href = $anchor.attr('href'),
|
69
|
+
width = parseInt($(href.match("width=([0-9]*)")).last().get(0), 10)||928,
|
70
|
+
height = parseInt($(href.match("height=([0-9]*)")).last().get(0), 10)||473,
|
71
|
+
title = $anchor.attr('title') || $anchor.attr('name') || $anchor.html() || null;
|
72
|
+
|
73
|
+
href = href.replace(/(\&(amp\;)?)?dialog\=true/, '')
|
74
|
+
.replace(/(\&(amp\;)?)?width\=\d+/, '')
|
75
|
+
.replace(/(\&(amp\;)?)?height\=\d+/, '')
|
76
|
+
.replace(/(\?&(amp\;)?)/, '?')
|
77
|
+
.replace(/\?$/, '');
|
78
|
+
|
79
|
+
iframe_src = (iframe_src = href)
|
80
|
+
+ (iframe_src.indexOf('?') > -1 ? '&' : '?')
|
81
|
+
+ 'app_dialog=true&dialog=true';
|
82
|
+
|
83
|
+
iframe = $("<iframe id='dialog_iframe' frameborder='0' marginheight='0' marginwidth='0' border='0'></iframe>");
|
84
|
+
if(!$.browser.msie) { iframe.corner('8px'); }
|
85
|
+
iframe.dialog({
|
86
|
+
title: title
|
87
|
+
, modal: true
|
88
|
+
, resizable: false
|
89
|
+
, autoOpen: true
|
90
|
+
, width: width
|
91
|
+
, height: height
|
92
|
+
, open: onOpenDialog
|
93
|
+
, close: onCloseDialog
|
94
|
+
, open: function(event, ui) {
|
95
|
+
iframe.attr('src', iframe_src);
|
96
|
+
}
|
97
97
|
});
|
98
|
+
|
99
|
+
e.preventDefault();
|
98
100
|
});
|
99
101
|
};
|
100
102
|
|
@@ -158,7 +158,7 @@ var wymeditor_boot_options = $.extend({
|
|
158
158
|
+ "</form>"
|
159
159
|
+ "</div>"
|
160
160
|
|
161
|
-
, dialogPath: "
|
161
|
+
, dialogPath: "<%= Refinery::Core::Engine.routes.url_helpers.admin_dialogs_path %>/"
|
162
162
|
, dialogFeatures: {
|
163
163
|
width: 866
|
164
164
|
, height: 455
|
@@ -1,36 +1,36 @@
|
|
1
1
|
init_modal_dialogs = function(){
|
2
|
-
$('a[href*="dialog=true"]
|
3
|
-
$(
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
iframe.attr('src', iframe_src);
|
32
|
-
e.preventDefault();
|
2
|
+
$(document).on('click', 'a[href*="dialog=true"]:not(#dialog_container a)', function(e) {
|
3
|
+
var $anchor = $(this),
|
4
|
+
href = $anchor.attr('href'),
|
5
|
+
width = parseInt($(href.match("width=([0-9]*)")).last().get(0), 10)||928,
|
6
|
+
height = parseInt($(href.match("height=([0-9]*)")).last().get(0), 10)||473,
|
7
|
+
title = $anchor.attr('title') || $anchor.attr('name') || $anchor.html() || null;
|
8
|
+
|
9
|
+
href = href.replace(/(\&(amp\;)?)?dialog\=true/, '')
|
10
|
+
.replace(/(\&(amp\;)?)?width\=\d+/, '')
|
11
|
+
.replace(/(\&(amp\;)?)?height\=\d+/, '')
|
12
|
+
.replace(/(\?&(amp\;)?)/, '?')
|
13
|
+
.replace(/\?$/, '');
|
14
|
+
|
15
|
+
iframe_src = (iframe_src = href)
|
16
|
+
+ (iframe_src.indexOf('?') > -1 ? '&' : '?')
|
17
|
+
+ 'app_dialog=true&dialog=true';
|
18
|
+
|
19
|
+
iframe = $("<iframe id='dialog_iframe' frameborder='0' marginheight='0' marginwidth='0' border='0'></iframe>");
|
20
|
+
if(!$.browser.msie) { iframe.corner('8px'); }
|
21
|
+
iframe.dialog({
|
22
|
+
title: title
|
23
|
+
, modal: true
|
24
|
+
, resizable: false
|
25
|
+
, autoOpen: true
|
26
|
+
, width: width
|
27
|
+
, height: height
|
28
|
+
, open: onOpenDialog
|
29
|
+
, close: onCloseDialog
|
33
30
|
});
|
31
|
+
|
32
|
+
iframe.attr('src', iframe_src);
|
33
|
+
e.preventDefault();
|
34
34
|
});
|
35
35
|
};
|
36
36
|
|
@@ -7,3 +7,6 @@
|
|
7
7
|
$("#editor_switch a").click (e) ->
|
8
8
|
if $("form[data-changes-made]").length > 0
|
9
9
|
e.preventDefault() unless confirm("<%= ::I18n.t('confirm_changes', :scope => 'refinery.js.admin') %>")
|
10
|
+
|
11
|
+
$("input[id=page_custom_slug]").change ->
|
12
|
+
$("#submit_continue_button").remove()
|
@@ -6,18 +6,16 @@ module Refinery
|
|
6
6
|
# replace all system images with a thumbnail version of them (handy for all images inside a page part)
|
7
7
|
# for example, <%= content_fu(@page.content_for(:body), '96x96#c') %> converts all /system/images to a 96x96 cropped thumbnail
|
8
8
|
def content_fu(content, thumbnail)
|
9
|
-
content.gsub(%r{<img.+?src=['"](/system/images/.+?)/.+?/>}) do |
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
).uid
|
9
|
+
content.gsub(%r{<img.+?src=['"](/system/images/.+?)/.+?/>}) do |img|
|
10
|
+
begin
|
11
|
+
sha = img.match(%r{/system/images/(.+?)/})[1]
|
12
|
+
job = Dragonfly::Job.deserialize sha, Dragonfly[:refinery_images]
|
14
13
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
14
|
+
image_fu Image.where(:image_uid => job.uid).first, thumbnail
|
15
|
+
rescue Dragonfly::Serializer::BadString
|
16
|
+
img
|
17
|
+
end
|
18
|
+
end
|
21
19
|
end
|
22
20
|
|
23
21
|
# image_fu is a helper for inserting an image that has been uploaded into a template.
|
@@ -13,7 +13,7 @@
|
|
13
13
|
cancel_title = t('.cancel_lose_changes')
|
14
14
|
end
|
15
15
|
cancel_button_id ||= "cancel_button"
|
16
|
-
cancel_url ||= (((back = url_for(:back)).include?('javascript') or action_name =~ /^(create|update)$/) ? refinery.send(Refinery.route_for_model(f.object.class, true)) : back)
|
16
|
+
cancel_url ||= (((back = url_for(:back)).include?('javascript') or action_name =~ /^(create|update)$/) ? refinery.send(Refinery.route_for_model(f.object.class, :plural => true)) : back)
|
17
17
|
end
|
18
18
|
|
19
19
|
continue_editing = defined?(continue_editing) ? continue_editing : (f.object.present? and f.object.persisted?)
|
data/config/locales/cs.yml
CHANGED
@@ -36,8 +36,8 @@ cs:
|
|
36
36
|
next: Další
|
37
37
|
close: Zavřít
|
38
38
|
image_picker:
|
39
|
-
none_selected: Zatím není vybrán žádný
|
40
|
-
remove_current: Smazat vybraný
|
39
|
+
none_selected: Zatím není vybrán žádný obrázek, klikněte zde pro přidání.
|
40
|
+
remove_current: Smazat vybraný obrázek
|
41
41
|
change: Klikněte zde pro vybrání obrázku
|
42
42
|
show: Zobrazit
|
43
43
|
resource_picker:
|
data/config/routes.rb
CHANGED
@@ -5,7 +5,7 @@ Refinery::Core::Engine.routes.draw do
|
|
5
5
|
|
6
6
|
namespace :admin, :path => 'refinery' do
|
7
7
|
root :to => 'dashboard#index'
|
8
|
-
resources :dialogs, :only => :show
|
8
|
+
resources :dialogs, :only => [:index, :show]
|
9
9
|
end
|
10
10
|
|
11
11
|
match '/refinery/update_menu_positions', :to => 'admin/core#update_plugin_positions'
|
@@ -2,6 +2,9 @@ Refinery::Core.configure do |config|
|
|
2
2
|
# When true will rescue all not found errors and display a friendly error page
|
3
3
|
config.rescue_not_found = Rails.env.production?
|
4
4
|
|
5
|
+
# When true this will force SSL redirection in all Refinery backend controllers.
|
6
|
+
# config.force_ssl = <%= Refinery::Core.force_ssl.inspect %>
|
7
|
+
|
5
8
|
# When true will use Amazon's Simple Storage Service instead of
|
6
9
|
# the default file system for storing resources and images
|
7
10
|
config.s3_backend = !(ENV['S3_KEY'].nil? || ENV['S3_SECRET'].nil?)
|
@@ -2,68 +2,70 @@ source "http://rubygems.org"
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
gem 'refinerycms', '~> 2.0.
|
5
|
+
gem 'refinerycms', '~> 2.0.3'
|
6
6
|
|
7
|
-
#
|
8
|
-
|
9
|
-
gem '
|
10
|
-
gem '
|
11
|
-
gem '
|
7
|
+
# Database Configuration
|
8
|
+
platforms :jruby do
|
9
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
10
|
+
gem 'activerecord-jdbcmysql-adapter'
|
11
|
+
gem 'activerecord-jdbcpostgresql-adapter'
|
12
|
+
gem 'jruby-openssl'
|
12
13
|
end
|
13
14
|
|
14
|
-
|
15
|
+
platforms :ruby do
|
16
|
+
gem 'sqlite3'
|
17
|
+
gem 'mysql2'
|
18
|
+
gem 'pg'
|
19
|
+
end
|
15
20
|
|
16
21
|
group :development, :test do
|
17
|
-
gem 'refinerycms-testing', '~> 2.0.
|
18
|
-
gem '
|
19
|
-
gem 'generator_spec'
|
20
|
-
|
21
|
-
require 'rbconfig'
|
22
|
-
|
23
|
-
platforms :jruby do
|
24
|
-
gem 'activerecord-jdbcsqlite3-adapter'
|
25
|
-
gem 'activerecord-jdbcmysql-adapter'
|
26
|
-
gem 'activerecord-jdbcpostgresql-adapter'
|
27
|
-
gem 'jruby-openssl'
|
28
|
-
end
|
29
|
-
|
30
|
-
unless defined?(JRUBY_VERSION)
|
31
|
-
gem 'sqlite3'
|
32
|
-
gem 'mysql2'
|
33
|
-
gem 'pg'
|
34
|
-
end
|
22
|
+
gem 'refinerycms-testing', '~> 2.0.3'
|
23
|
+
gem 'guard-rspec', '~> 0.7.0'
|
35
24
|
|
36
25
|
platforms :mswin, :mingw do
|
37
|
-
gem 'win32console'
|
26
|
+
gem 'win32console', '~> 1.3.0'
|
38
27
|
gem 'rb-fchange', '~> 0.0.5'
|
39
28
|
gem 'rb-notifu', '~> 0.0.4'
|
40
29
|
end
|
41
30
|
|
42
31
|
platforms :ruby do
|
43
|
-
gem 'spork', '0.9.0
|
44
|
-
gem 'guard-spork'
|
32
|
+
gem 'spork', '~> 0.9.0'
|
33
|
+
gem 'guard-spork', '~> 0.5.2'
|
45
34
|
|
46
35
|
unless ENV['TRAVIS']
|
36
|
+
require 'rbconfig'
|
47
37
|
if RbConfig::CONFIG['target_os'] =~ /darwin/i
|
48
|
-
gem 'rb-fsevent', '
|
49
|
-
gem '
|
38
|
+
gem 'rb-fsevent', '~> 0.9.0'
|
39
|
+
gem 'ruby_gntp', '~> 0.3.4'
|
50
40
|
end
|
51
41
|
if RbConfig::CONFIG['target_os'] =~ /linux/i
|
52
|
-
gem 'rb-inotify', '
|
53
|
-
gem 'libnotify', '~> 0.
|
42
|
+
gem 'rb-inotify', '~> 0.8.8'
|
43
|
+
gem 'libnotify', '~> 0.7.2'
|
44
|
+
gem 'therubyracer', '~> 0.10.0'
|
54
45
|
end
|
55
46
|
end
|
56
47
|
end
|
57
48
|
|
58
49
|
platforms :jruby do
|
59
50
|
unless ENV['TRAVIS']
|
51
|
+
require 'rbconfig'
|
60
52
|
if RbConfig::CONFIG['target_os'] =~ /darwin/i
|
61
|
-
gem '
|
53
|
+
gem 'ruby_gntp', '~> 0.3.4'
|
62
54
|
end
|
63
55
|
if RbConfig::CONFIG['target_os'] =~ /linux/i
|
64
|
-
gem 'rb-inotify', '
|
65
|
-
gem 'libnotify', '~> 0.
|
56
|
+
gem 'rb-inotify', '~> 0.8.8'
|
57
|
+
gem 'libnotify', '~> 0.7.2'
|
66
58
|
end
|
67
59
|
end
|
68
60
|
end
|
69
61
|
end
|
62
|
+
|
63
|
+
# Gems used only for assets and not required
|
64
|
+
# in production environments by default.
|
65
|
+
group :assets do
|
66
|
+
gem 'sass-rails'
|
67
|
+
gem 'coffee-rails'
|
68
|
+
gem 'uglifier'
|
69
|
+
end
|
70
|
+
|
71
|
+
gem 'jquery-rails', '~> 2.0.0'
|
@@ -8,7 +8,7 @@ guard 'spork', :wait => 60, :cucumber => false, :rspec_env => { 'RAILS_ENV' => '
|
|
8
8
|
watch(%r{^vendor/extensions/(.+)/spec/support/.+\.rb$})
|
9
9
|
end
|
10
10
|
|
11
|
-
guard 'rspec', :version => 2, :cli =>
|
11
|
+
guard 'rspec', :version => 2, :cli => (['~/.rspec', '.rspec'].map{|f| File.read(File.expand_path(f)).split("\n").join(' ') if File.exists?(File.expand_path(f))}.join(' ')) do
|
12
12
|
watch(%r{^spec/.+_spec\.rb$})
|
13
13
|
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
14
14
|
watch('spec/spec_helper.rb') { "spec" }
|
data/lib/generators/refinery/engine/templates/app/models/refinery/namespace/singular_name.rb
CHANGED
@@ -1,28 +1,40 @@
|
|
1
1
|
module Refinery
|
2
2
|
module <%= namespacing %>
|
3
3
|
class <%= class_name %> < Refinery::Core::BaseModel
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
<% if table_name == namespacing.underscore.pluralize -%>
|
5
|
+
self.table_name = 'refinery_<%= plural_name %>'
|
6
|
+
<% end -%>
|
7
|
+
<% if localized? -%>
|
8
|
+
|
9
|
+
translates <%= localized_attributes.map{|a| ":#{a.name}"}.join(', ') %>
|
10
|
+
|
11
|
+
class Translation
|
12
|
+
attr_accessible :locale
|
13
|
+
end
|
14
|
+
<% end -%>
|
15
|
+
<% if (string_attributes = attributes.select{ |a| a.type.to_s =~ /string|text/ }.uniq).any? -%>
|
16
|
+
|
17
|
+
attr_accessible <%= string_attributes.first.name.to_sym.inspect %>, :position
|
18
|
+
|
8
19
|
acts_as_indexed :fields => <%= string_attributes.map{|s| s.name.to_sym}.inspect %>
|
9
20
|
|
10
21
|
validates <%= string_attributes.first.name.to_sym.inspect %>, :presence => true, :uniqueness => true
|
11
|
-
|
22
|
+
<% else -%>
|
23
|
+
|
12
24
|
# def title was created automatically because you didn't specify a string field
|
13
25
|
# when you ran the refinery:engine generator. <3 <3 Refinery CMS.
|
14
26
|
def title
|
15
27
|
"Override def title in vendor/extensions/<%= namespacing.underscore %>/app/models/refinery/<%= namespacing.underscore %>/<%= singular_name %>.rb"
|
16
28
|
end
|
17
|
-
|
18
|
-
|
29
|
+
<% end -%>
|
30
|
+
<% attributes.select{|a| a.type.to_s == 'image'}.uniq.each do |a| -%>
|
19
31
|
|
20
32
|
belongs_to :<%= a.name.gsub("_id", "") -%>, :class_name => '::Refinery::Image'
|
21
|
-
|
22
|
-
|
33
|
+
<% end -%>
|
34
|
+
<% attributes.select{|a| a.type.to_s == 'resource'}.uniq.each do |a| -%>
|
23
35
|
|
24
36
|
belongs_to :<%= a.name.gsub("_id", "") %>, :class_name => '::Refinery::Resource'
|
25
|
-
|
37
|
+
<% end -%>
|
26
38
|
end
|
27
39
|
end
|
28
40
|
end
|
@@ -1,11 +1,12 @@
|
|
1
|
+
<% title_attribute = (title = attributes.detect { |a| a.type.to_s == "string" }).present? ? title.name : title -%>
|
1
2
|
<li class='clearfix record <%%= cycle("on", "on-hover") %>' id="<%%= dom_id(<%= singular_name %>) -%>">
|
2
3
|
<span class='title'>
|
3
|
-
<%%= <%= singular_name
|
4
|
+
<%%= <%= singular_name %>.<%= title_attribute %> %>
|
4
5
|
<% if localized? %>
|
5
6
|
<%% if Refinery.i18n_enabled? and Refinery::I18n.frontend_locales.many? %>
|
6
7
|
<span class='preview'>
|
7
8
|
<%% <%= singular_name %>.translations.each do |translation| %>
|
8
|
-
<%% if translation
|
9
|
+
<%% if translation.<%= title_attribute %>.present? %>
|
9
10
|
<%%= link_to refinery_icon_tag("flags/#{translation.locale}.png", :size => '16x11'),
|
10
11
|
refinery.edit_<%= namespacing.underscore %>_admin_<%= singular_name %>_path(<%= singular_name %>, :switch_locale => translation.locale),
|
11
12
|
:class => 'locale' %>
|
@@ -26,7 +27,7 @@
|
|
26
27
|
<%%= link_to refinery_icon_tag("delete.png"), refinery.<%= namespacing.underscore %>_admin_<%= singular_name %>_path(<%= singular_name %>),
|
27
28
|
:class => "cancel confirm-delete",
|
28
29
|
:title => t('.delete'),
|
29
|
-
:confirm => t('message', :scope => 'refinery.admin.delete', :title => <%= singular_name
|
30
|
+
:confirm => t('message', :scope => 'refinery.admin.delete', :title => <%= singular_name %>.<%= title_attribute %>),
|
30
31
|
:method => :delete %>
|
31
32
|
</span>
|
32
|
-
</li>
|
33
|
+
</li>
|
@@ -2,7 +2,14 @@ def setup_environment
|
|
2
2
|
# Configure Rails Environment
|
3
3
|
ENV["RAILS_ENV"] ||= 'test'
|
4
4
|
|
5
|
-
|
5
|
+
if File.exist?(dummy_path = File.expand_path('../spec/dummy/config/environment.rb', __FILE__))
|
6
|
+
require dummy_path
|
7
|
+
elsif File.dirname(__FILE__) =~ %r{vendor/extensions}
|
8
|
+
# Require the path to the refinerycms application this is vendored inside.
|
9
|
+
require File.expand_path('../../../../../config/environment', __FILE__)
|
10
|
+
else
|
11
|
+
raise "Could not find a config/environment.rb file to require. Please specify this in spec/spec_helper.rb"
|
12
|
+
end
|
6
13
|
|
7
14
|
require 'rspec/rails'
|
8
15
|
require 'capybara/rspec'
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'action_controller'
|
2
|
-
require 'application_helper'
|
3
2
|
|
4
3
|
module Refinery
|
5
4
|
module Admin
|
@@ -52,10 +51,13 @@ module Refinery
|
|
52
51
|
end
|
53
52
|
|
54
53
|
def restrict_controller
|
55
|
-
#
|
56
|
-
#
|
57
|
-
|
58
|
-
|
54
|
+
# We need to remove the admin/ section since the path is silent for the
|
55
|
+
# namespace.
|
56
|
+
path = params[:controller].gsub('admin/', '')
|
57
|
+
unless ::Refinery::Plugins.active.any? {|plugin| path =~ Regexp.new(plugin.menu_match) }
|
58
|
+
logger.warn "'#{current_refinery_user.username}' tried to access '#{path}' but was rejected."
|
59
|
+
error_404
|
60
|
+
end
|
59
61
|
end
|
60
62
|
|
61
63
|
private
|
@@ -17,6 +17,8 @@ module Refinery
|
|
17
17
|
|
18
18
|
send :before_filter, :refinery_user_required?
|
19
19
|
|
20
|
+
send :before_filter, :force_ssl?, :if => :admin?
|
21
|
+
|
20
22
|
send :after_filter, :store_current_location!,
|
21
23
|
:if => Proc.new {|c| send(:refinery_user?) }
|
22
24
|
|
@@ -63,12 +65,16 @@ module Refinery
|
|
63
65
|
|
64
66
|
protected
|
65
67
|
|
68
|
+
def force_ssl?
|
69
|
+
redirect_to :protocol => 'https' if !request.ssl? && Refinery::Core.force_ssl
|
70
|
+
end
|
71
|
+
|
66
72
|
# use a different model for the meta information.
|
67
73
|
def present(model)
|
68
74
|
@meta = presenter_for(model).new(model)
|
69
75
|
end
|
70
76
|
|
71
|
-
def presenter_for(model, default=BasePresenter)
|
77
|
+
def presenter_for(model, default = BasePresenter)
|
72
78
|
return default if model.nil?
|
73
79
|
|
74
80
|
"#{model.class.name}Presenter".constantize
|
@@ -7,7 +7,7 @@ module Refinery
|
|
7
7
|
:menu_hide_children, :menu_css, :dragonfly_secret, :ie6_upgrade_message_enabled,
|
8
8
|
:show_internet_explorer_upgrade_message, :wymeditor_whitelist_tags,
|
9
9
|
:javascripts, :stylesheets, :s3_bucket_name, :s3_region, :s3_access_key_id,
|
10
|
-
:s3_secret_access_key
|
10
|
+
:s3_secret_access_key, :force_ssl
|
11
11
|
|
12
12
|
self.rescue_not_found = false
|
13
13
|
self.s3_backend = false
|
@@ -27,6 +27,7 @@ module Refinery
|
|
27
27
|
self.s3_region = ENV['S3_REGION']
|
28
28
|
self.s3_access_key_id = ENV['S3_KEY']
|
29
29
|
self.s3_secret_access_key = ENV['S3_SECRET']
|
30
|
+
self.force_ssl = false
|
30
31
|
|
31
32
|
def config.register_javascript(name)
|
32
33
|
self.javascripts << name
|
@@ -36,12 +37,18 @@ module Refinery
|
|
36
37
|
self.stylesheets << Stylesheet.new(*args)
|
37
38
|
end
|
38
39
|
|
39
|
-
|
40
|
-
|
41
|
-
|
40
|
+
class << self
|
41
|
+
def clear_javascripts!
|
42
|
+
self.javascripts = []
|
43
|
+
end
|
42
44
|
|
43
|
-
|
44
|
-
|
45
|
+
def clear_stylesheets!
|
46
|
+
self.stylesheets = []
|
47
|
+
end
|
48
|
+
|
49
|
+
def site_name
|
50
|
+
::I18n.t('site_name', :scope => 'refinery.core.config', :default => config.site_name)
|
51
|
+
end
|
45
52
|
end
|
46
53
|
|
47
54
|
# wrapper for stylesheet registration
|
data/lib/refinery/core/engine.rb
CHANGED
@@ -57,7 +57,7 @@ module Refinery
|
|
57
57
|
plugin.version = Refinery.version
|
58
58
|
plugin.hide_from_menu = true
|
59
59
|
plugin.always_allow_access = true
|
60
|
-
plugin.menu_match = /refinery\/(
|
60
|
+
plugin.menu_match = /refinery\/(refinery_)?core$/
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -96,8 +96,12 @@ module Refinery
|
|
96
96
|
end
|
97
97
|
|
98
98
|
# set the manifests and assets to be precompiled
|
99
|
-
initializer "refinery.assets.precompile" do |app|
|
99
|
+
initializer "refinery.assets.precompile", :group => :all do |app|
|
100
100
|
app.config.assets.precompile += [
|
101
|
+
"home.css",
|
102
|
+
"formatting.css",
|
103
|
+
"theme.css",
|
104
|
+
"admin.js",
|
101
105
|
"refinery/*",
|
102
106
|
"refinery/icons/*",
|
103
107
|
"wymeditor/lang/*",
|
data/lib/refinery/core.rb
CHANGED
@@ -137,23 +137,39 @@ module Refinery
|
|
137
137
|
Refinery::Version.to_s
|
138
138
|
end
|
139
139
|
|
140
|
-
# Returns string version of url helper path. We need this to
|
140
|
+
# Returns string version of url helper path. We need this to temporarily support namespaces
|
141
141
|
# like Refinery::Image and Refinery::Blog::Post
|
142
142
|
#
|
143
143
|
# Example:
|
144
|
-
# Refinery.route_for_model(
|
145
|
-
# Refinery.route_for_model(Refinery::Image, true) => "admin_images_path"
|
144
|
+
# Refinery.route_for_model(Refinery::Image) => "admin_image_path"
|
145
|
+
# Refinery.route_for_model(Refinery::Image, {:plural => true}) => "admin_images_path"
|
146
146
|
# Refinery.route_for_model(Refinery::Blog::Post) => "blog_admin_post_path"
|
147
|
-
# Refinery.route_for_model(Refinery::Blog::Post, true) => "blog_admin_posts_path"
|
148
|
-
|
149
|
-
|
147
|
+
# Refinery.route_for_model(Refinery::Blog::Post, {:plural => true}) => "blog_admin_posts_path"
|
148
|
+
# Refinery.route_for_model(Refinery::Blog::Post, {:admin => false}) => "blog_post_path"
|
149
|
+
def route_for_model(klass, options = {})
|
150
|
+
if [TrueClass, FalseClass].include? options.class
|
151
|
+
options = {:plural => options}
|
152
|
+
Refinery.deprecate "[Refinery.route_for_model] 'plural' argument",
|
153
|
+
:when => '2.1',
|
154
|
+
:replacement => '{:plural => false}'
|
155
|
+
end
|
156
|
+
|
157
|
+
options = {:plural => false, :admin => true}.merge options
|
158
|
+
|
159
|
+
klass = klass.constantize if klass.respond_to?(:constantize)
|
160
|
+
active_name = ActiveModel::Name.new(klass, (Refinery if klass.parents.include?(Refinery)))
|
161
|
+
|
162
|
+
if options[:admin]
|
163
|
+
# Most of the time this gets rid of 'refinery'
|
164
|
+
parts = active_name.underscore.split('/').reject{|name| active_name.singular_route_key.exclude?(name)}
|
165
|
+
resource_name = parts.pop
|
166
|
+
resource_name = options[:plural] ? resource_name.pluralize : resource_name.singularize
|
150
167
|
|
151
|
-
|
168
|
+
[parts.join("_"), "admin", resource_name, "path"].reject(&:blank?).join "_"
|
169
|
+
else
|
170
|
+
path = options[:plural] ? active_name.route_key : active_name.singular_route_key
|
152
171
|
|
153
|
-
|
154
|
-
"admin_#{resource_name}_path"
|
155
|
-
elsif parts.size > 2
|
156
|
-
[parts[1..-2].join("_"), "admin", resource_name, "path"].join("_")
|
172
|
+
[path, 'path'].join '_'
|
157
173
|
end
|
158
174
|
end
|
159
175
|
|
data/lib/refinery/crud.rb
CHANGED
@@ -29,7 +29,7 @@ module Refinery
|
|
29
29
|
:order => ('position ASC' if this_class.table_exists? && this_class.column_names.include?('position')),
|
30
30
|
:paging => true,
|
31
31
|
:per_page => false,
|
32
|
-
:redirect_to_url => "refinery.#{Refinery.route_for_model(class_name.constantize, true)}",
|
32
|
+
:redirect_to_url => "refinery.#{Refinery.route_for_model(class_name.constantize, :plural => true)}",
|
33
33
|
:searchable => true,
|
34
34
|
:search_conditions => '',
|
35
35
|
:sortable => true,
|
data/lib/refinery/menu.rb
CHANGED
@@ -22,10 +22,6 @@ module Refinery
|
|
22
22
|
items.map(&:title).join(' ')
|
23
23
|
end
|
24
24
|
|
25
|
-
def inspect
|
26
|
-
items.map(&:inspect)
|
27
|
-
end
|
28
|
-
|
29
25
|
# The delegation is specified so crazily so that it works on 1.8.x and 1.9.x
|
30
26
|
delegate *((Array.instance_methods - Object.instance_methods) << {:to => :items})
|
31
27
|
end
|
data/lib/refinery/version.rb
CHANGED
data/refinerycms-core.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.email = %q{info@refinerycms.com}
|
14
14
|
s.homepage = %q{http://refinerycms.com}
|
15
15
|
s.rubyforge_project = %q{refinerycms}
|
16
|
-
s.authors = ['Philip Arndt', 'Uģis Ozols', 'David Jones', 'Steven Heidel']
|
16
|
+
s.authors = ['Philip Arndt', 'Uģis Ozols', 'Rob Yurkowski', 'David Jones', 'Steven Heidel']
|
17
17
|
s.license = %q{MIT}
|
18
18
|
s.require_paths = %w(lib)
|
19
19
|
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency 'acts_as_indexed', '~> 0.7.7'
|
24
24
|
s.add_dependency 'friendly_id', '~> 4.0.1'
|
25
25
|
s.add_dependency 'globalize3', '~> 0.2.0'
|
26
|
-
s.add_dependency 'awesome_nested_set', '~> 2.1.
|
26
|
+
s.add_dependency 'awesome_nested_set', '~> 2.1.3'
|
27
27
|
s.add_dependency 'rails', ['>= 3.1.3', '< 3.3']
|
28
28
|
s.add_dependency 'truncate_html', '~> 0.5'
|
29
29
|
s.add_dependency 'will_paginate', '~> 3.0.2'
|
@@ -1,38 +1,46 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Refinery::Activity do
|
4
4
|
before { module X; module Y; class Z; end; end; end }
|
5
5
|
|
6
|
-
let(:activity) { Refinery::Activity.new(:class_name =>
|
6
|
+
let(:activity) { Refinery::Activity.new(:class_name => 'X::Y::Z') }
|
7
7
|
|
8
|
-
describe
|
9
|
-
it
|
10
|
-
activity.base_class_name.should ==
|
8
|
+
describe '#base_class_name' do
|
9
|
+
it 'returns the base class name, less module nesting' do
|
10
|
+
activity.base_class_name.should == 'Z'
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
describe
|
15
|
-
it
|
14
|
+
describe '#klass' do
|
15
|
+
it 'returns class constant' do
|
16
16
|
activity.klass.should == X::Y::Z
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
describe
|
21
|
-
it
|
22
|
-
activity.url_prefix.should ==
|
20
|
+
describe '#url_prefix' do
|
21
|
+
it 'returns edit_ by default' do
|
22
|
+
activity.url_prefix.should == 'edit_'
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
26
|
-
activity.url_prefix =
|
27
|
-
activity.url_prefix.should ==
|
28
|
-
activity.url_prefix =
|
29
|
-
activity.url_prefix.should ==
|
25
|
+
it 'returns user specified prefix' do
|
26
|
+
activity.url_prefix = 'testy'
|
27
|
+
activity.url_prefix.should == 'testy_'
|
28
|
+
activity.url_prefix = 'testy_'
|
29
|
+
activity.url_prefix.should == 'testy_'
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
describe
|
34
|
-
it
|
35
|
-
activity.url.should ==
|
33
|
+
describe '#url' do
|
34
|
+
it 'returns the url' do
|
35
|
+
activity.url.should == 'refinery.edit_x_y_admin_z_path'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#url with Refinery namespace' do
|
40
|
+
before { module Refinery; module Y; class Z; end; end; end }
|
41
|
+
let(:activity) { Refinery::Activity.new(:class_name => 'Refinery::Y::Z') }
|
42
|
+
it 'returns the url' do
|
43
|
+
activity.url.should == 'refinery.edit_y_admin_z_path'
|
36
44
|
end
|
37
45
|
end
|
38
46
|
end
|
@@ -1,43 +1,76 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
|
4
|
-
describe
|
5
|
-
controller do
|
6
|
-
|
7
|
-
|
3
|
+
module Refinery
|
4
|
+
describe ApplicationController do
|
5
|
+
describe "DummyController", :type => :controller do
|
6
|
+
controller do
|
7
|
+
include ::Refinery::ApplicationController
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
request.stub(:path).and_return("/")
|
13
|
-
controller.home_page?.should be_true
|
9
|
+
def index
|
10
|
+
render :nothing => true
|
11
|
+
end
|
14
12
|
end
|
15
13
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
describe ".home_page?" do
|
15
|
+
it "matches root url" do
|
16
|
+
controller.stub(:root_path).and_return("/")
|
17
|
+
request.stub(:path).and_return("/")
|
18
|
+
controller.home_page?.should be_true
|
19
|
+
end
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
it "matches localised root url" do
|
22
|
+
controller.refinery.stub(:root_path).and_return("/en/")
|
23
|
+
request.stub(:path).and_return("/en")
|
24
|
+
controller.home_page?.should be_true
|
25
|
+
end
|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
it "escapes regexp" do
|
28
|
+
request.stub(:path).and_return("\/huh)")
|
29
|
+
expect { controller.home_page? }.to_not raise_error(RegexpError)
|
30
|
+
end
|
31
31
|
end
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
describe "#presenter_for" do
|
34
|
+
it "returns BasePresenter for nil" do
|
35
|
+
controller.send(:presenter_for, nil).should eq(BasePresenter)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "returns BasePresenter when the instance's class does not have a presenter" do
|
39
|
+
controller.send(:presenter_for, Object.new).should eq(BasePresenter)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "returns the class's presenter when the instance's class has a presenter" do
|
43
|
+
controller.send(:presenter_for, Page.new).should eq(PagePresenter)
|
44
|
+
end
|
35
45
|
end
|
36
46
|
|
37
|
-
|
38
|
-
|
39
|
-
|
47
|
+
describe "force_ssl" do
|
48
|
+
before(:each) do
|
49
|
+
controller.stub(:admin?).and_return(true)
|
50
|
+
controller.stub(:refinery_user_required?).and_return(false)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "is false so standard HTTP is used" do
|
54
|
+
Refinery::Core.config.force_ssl = false
|
55
|
+
|
56
|
+
get :index
|
57
|
+
|
58
|
+
response.should_not be_redirect
|
59
|
+
end
|
60
|
+
|
61
|
+
it "is true so HTTPS is used" do
|
62
|
+
begin
|
63
|
+
Refinery::Core.config.force_ssl = true
|
64
|
+
|
65
|
+
get :index
|
66
|
+
|
67
|
+
response.should be_redirect
|
68
|
+
ensure
|
69
|
+
Refinery::Core.config.force_ssl = false
|
70
|
+
end
|
71
|
+
end
|
40
72
|
end
|
73
|
+
|
41
74
|
end
|
42
75
|
end
|
43
76
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module Core
|
5
|
+
describe 'configuration' do
|
6
|
+
describe '.site_name' do
|
7
|
+
# reset any previously defined site name
|
8
|
+
before do
|
9
|
+
Refinery::Core.site_name = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'when set in configuration' do
|
13
|
+
it 'returns name set by Refinery::Core.config' do
|
14
|
+
Refinery::Core.stub(:site_name).and_return('Test Site Name')
|
15
|
+
Refinery::Core.site_name.should eq('Test Site Name')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'when set in locale file' do
|
20
|
+
before do
|
21
|
+
::I18n.backend.store_translations :en, :refinery => {
|
22
|
+
:core => {
|
23
|
+
:config => {
|
24
|
+
:site_name => 'I18n Site Name'
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'returns name set in locale' do
|
31
|
+
Refinery::Core.site_name.should eq('I18n Site Name')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -137,39 +137,70 @@ describe Refinery do
|
|
137
137
|
end
|
138
138
|
|
139
139
|
describe ".route_for_model" do
|
140
|
-
context
|
140
|
+
context 'with Refinery::Dummy' do
|
141
|
+
module Refinery::Dummy
|
142
|
+
end
|
143
|
+
|
141
144
|
it "returns admin_dummy_path" do
|
142
|
-
Refinery.route_for_model(
|
145
|
+
Refinery.route_for_model(Refinery::Dummy).should == "admin_dummy_path"
|
143
146
|
end
|
144
|
-
end
|
145
147
|
|
146
|
-
|
147
|
-
|
148
|
-
|
148
|
+
context ":plural => true" do
|
149
|
+
it "returns admin_dummies_path" do
|
150
|
+
Refinery.route_for_model(Refinery::Dummy, :plural => true).should == "admin_dummies_path"
|
151
|
+
end
|
149
152
|
end
|
150
153
|
end
|
151
154
|
|
152
|
-
context
|
155
|
+
context 'with Refinery::DummyName' do
|
156
|
+
module Refinery::DummyName
|
157
|
+
end
|
158
|
+
|
153
159
|
it "returns admin_dummy_name_path" do
|
154
|
-
Refinery.route_for_model(
|
160
|
+
Refinery.route_for_model(Refinery::DummyName).should == "admin_dummy_name_path"
|
155
161
|
end
|
156
|
-
end
|
157
162
|
|
158
|
-
|
159
|
-
|
160
|
-
|
163
|
+
context ":plural => true" do
|
164
|
+
it "returns admin_dummy_names_path" do
|
165
|
+
Refinery.route_for_model(Refinery::DummyName, :plural => true).should == "admin_dummy_names_path"
|
166
|
+
end
|
161
167
|
end
|
162
168
|
end
|
163
169
|
|
164
|
-
context
|
170
|
+
context 'with Refinery::Dummy::Name' do
|
171
|
+
module Refinery::Dummy
|
172
|
+
module Name
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
165
176
|
it "returns dummy_admin_name_path" do
|
166
|
-
Refinery.route_for_model(
|
177
|
+
Refinery.route_for_model(Refinery::Dummy::Name).should == "dummy_admin_name_path"
|
178
|
+
end
|
179
|
+
|
180
|
+
context ":plural => true" do
|
181
|
+
it "returns dummy_admin_names_path" do
|
182
|
+
Refinery.route_for_model(Refinery::Dummy::Name, :plural => true).should == "dummy_admin_names_path"
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
context ":admin => false" do
|
187
|
+
it "returns dummy_name_path" do
|
188
|
+
Refinery.route_for_model(Refinery::Dummy::Name, :admin => false).should == 'dummy_name_path'
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
context ":admin => false, :plural => true" do
|
193
|
+
it "returns dummy_names_path" do
|
194
|
+
Refinery.route_for_model(Refinery::Dummy::Name, :admin => false, :plural => true).should == 'dummy_names_path'
|
195
|
+
end
|
167
196
|
end
|
168
197
|
end
|
198
|
+
end
|
169
199
|
|
170
|
-
|
171
|
-
|
172
|
-
|
200
|
+
describe Refinery::Core::Engine do
|
201
|
+
describe "#helpers" do
|
202
|
+
it "should not include ApplicationHelper" do
|
203
|
+
Refinery::Core::Engine.helpers.ancestors.map(&:name).should_not include("ApplicationHelper")
|
173
204
|
end
|
174
205
|
end
|
175
206
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
describe Menu do
|
5
|
+
|
6
|
+
let(:menu) do
|
7
|
+
page1 = FactoryGirl.create(:page, :title => 'test1')
|
8
|
+
page2 = FactoryGirl.create(:page, :title => 'test2', :parent_id => page1.id)
|
9
|
+
Refinery::Menu.new([page1, page2])
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '.initialize' do
|
13
|
+
it "returns a collection of menu item objects" do
|
14
|
+
menu.each { |item| item.should be_an_instance_of(MenuItem) }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#items' do
|
19
|
+
it 'returns a collection' do
|
20
|
+
menu.items.count.should eq(2)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#roots' do
|
25
|
+
it 'returns a collection of items with parent_id == nil' do
|
26
|
+
menu.roots.collect(&:parent_id).should eq([nil])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#to_s' do
|
31
|
+
it 'returns string of joined page titles' do
|
32
|
+
menu.to_s.should eq('test1 test2')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
describe "plugin access" do
|
5
|
+
context "as refinery user" do
|
6
|
+
login_refinery_user
|
7
|
+
|
8
|
+
context "with permission" do
|
9
|
+
it "allows access" do
|
10
|
+
visit refinery.admin_pages_path
|
11
|
+
page.body.should_not include '404'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "without permission" do
|
16
|
+
before do
|
17
|
+
Refinery::User.first.plugins = []
|
18
|
+
end
|
19
|
+
|
20
|
+
it "denies access" do
|
21
|
+
visit refinery.admin_pages_path
|
22
|
+
page.body.should include '404'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: refinerycms-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Philip Arndt
|
9
9
|
- Uģis Ozols
|
10
|
+
- Rob Yurkowski
|
10
11
|
- David Jones
|
11
12
|
- Steven Heidel
|
12
13
|
autorequire:
|
13
14
|
bindir: bin
|
14
15
|
cert_chain: []
|
15
|
-
date: 2012-
|
16
|
+
date: 2012-05-14 00:00:00.000000000 Z
|
16
17
|
dependencies:
|
17
18
|
- !ruby/object:Gem::Dependency
|
18
19
|
name: acts_as_indexed
|
@@ -69,7 +70,7 @@ dependencies:
|
|
69
70
|
requirements:
|
70
71
|
- - ~>
|
71
72
|
- !ruby/object:Gem::Version
|
72
|
-
version: 2.1.
|
73
|
+
version: 2.1.3
|
73
74
|
type: :runtime
|
74
75
|
prerelease: false
|
75
76
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -77,7 +78,7 @@ dependencies:
|
|
77
78
|
requirements:
|
78
79
|
- - ~>
|
79
80
|
- !ruby/object:Gem::Version
|
80
|
-
version: 2.1.
|
81
|
+
version: 2.1.3
|
81
82
|
- !ruby/object:Gem::Dependency
|
82
83
|
name: rails
|
83
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -436,7 +437,6 @@ files:
|
|
436
437
|
- app/controllers/refinery/admin_controller.rb
|
437
438
|
- app/controllers/refinery/fast_controller.rb
|
438
439
|
- app/controllers/refinery/sitemap_controller.rb
|
439
|
-
- app/helpers/application_helper.rb
|
440
440
|
- app/helpers/refinery/admin/core_helper.rb
|
441
441
|
- app/helpers/refinery/admin/dialogs_helper.rb
|
442
442
|
- app/helpers/refinery/admin_helper.rb
|
@@ -668,9 +668,12 @@ files:
|
|
668
668
|
- spec/lib/generators/refinery/form/form_generator_spec.rb
|
669
669
|
- spec/lib/refinery/activity_spec.rb
|
670
670
|
- spec/lib/refinery/application_controller_spec.rb
|
671
|
+
- spec/lib/refinery/core/configuration_spec.rb
|
671
672
|
- spec/lib/refinery/core_spec.rb
|
673
|
+
- spec/lib/refinery/menu_spec.rb
|
672
674
|
- spec/lib/refinery/plugin_spec.rb
|
673
675
|
- spec/lib/refinery/plugins_spec.rb
|
676
|
+
- spec/requests/refinery/admin/controller_restriction_spec.rb
|
674
677
|
- spec/requests/refinery/admin/custom_assets_spec.rb
|
675
678
|
- spec/requests/refinery/admin/dialogs_spec.rb
|
676
679
|
- spec/requests/refinery/search_spec.rb
|
@@ -695,7 +698,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
695
698
|
version: '0'
|
696
699
|
segments:
|
697
700
|
- 0
|
698
|
-
hash: -
|
701
|
+
hash: -1126553336485468710
|
699
702
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
700
703
|
none: false
|
701
704
|
requirements:
|
@@ -704,10 +707,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
704
707
|
version: '0'
|
705
708
|
segments:
|
706
709
|
- 0
|
707
|
-
hash: -
|
710
|
+
hash: -1126553336485468710
|
708
711
|
requirements: []
|
709
712
|
rubyforge_project: refinerycms
|
710
|
-
rubygems_version: 1.8.
|
713
|
+
rubygems_version: 1.8.22
|
711
714
|
signing_key:
|
712
715
|
specification_version: 3
|
713
716
|
summary: Core extension for Refinery CMS
|
@@ -728,9 +731,12 @@ test_files:
|
|
728
731
|
- spec/lib/generators/refinery/form/form_generator_spec.rb
|
729
732
|
- spec/lib/refinery/activity_spec.rb
|
730
733
|
- spec/lib/refinery/application_controller_spec.rb
|
734
|
+
- spec/lib/refinery/core/configuration_spec.rb
|
731
735
|
- spec/lib/refinery/core_spec.rb
|
736
|
+
- spec/lib/refinery/menu_spec.rb
|
732
737
|
- spec/lib/refinery/plugin_spec.rb
|
733
738
|
- spec/lib/refinery/plugins_spec.rb
|
739
|
+
- spec/requests/refinery/admin/controller_restriction_spec.rb
|
734
740
|
- spec/requests/refinery/admin/custom_assets_spec.rb
|
735
741
|
- spec/requests/refinery/admin/dialogs_spec.rb
|
736
742
|
- spec/requests/refinery/search_spec.rb
|