refinerycms-core 2.0.2 → 2.0.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.
Files changed (37) hide show
  1. data/app/assets/javascripts/refinery/admin.js.erb +25 -20
  2. data/app/assets/javascripts/refinery/site_bar.js +12 -14
  3. data/app/assets/javascripts/refinery/submit_continue.js.coffee.erb +2 -1
  4. data/app/assets/stylesheets/refinery/{refinery.css.scss → layout.css.scss} +1 -7
  5. data/app/assets/stylesheets/refinery/refinery.css +15 -0
  6. data/app/controllers/refinery/admin/{refinery_core_controller.rb → core_controller.rb} +2 -2
  7. data/app/controllers/refinery/admin_controller.rb +4 -1
  8. data/app/helpers/refinery/admin/core_helper.rb +6 -0
  9. data/app/helpers/refinery/admin/dialogs_helper.rb +6 -0
  10. data/app/helpers/refinery/admin_helper.rb +4 -0
  11. data/app/helpers/refinery/fast_helper.rb +4 -0
  12. data/app/helpers/refinery/sitemap_helper.rb +4 -0
  13. data/app/models/refinery/core/base_model.rb +0 -2
  14. data/config/routes.rb +1 -1
  15. data/lib/generators/refinery/cms/cms_generator.rb +24 -10
  16. data/lib/generators/refinery/cms/templates/.gitignore +3 -0
  17. data/lib/generators/refinery/dummy/dummy_generator.rb +21 -21
  18. data/lib/generators/refinery/engine/templates/.gitignore +2 -0
  19. data/lib/generators/refinery/engine/templates/Gemfile +1 -1
  20. data/lib/generators/refinery/engine/templates/lib/generators/refinery/extension_plural_name_generator.rb +1 -0
  21. data/lib/generators/refinery/engine/templates/script/rails +10 -0
  22. data/lib/generators/refinery/form/templates/.gitignore +2 -0
  23. data/lib/generators/refinery/form/templates/lib/refinery/plural_name.rb +1 -0
  24. data/lib/generators/refinery/form/templates/script/rails +10 -0
  25. data/lib/refinery/application_controller.rb +9 -2
  26. data/lib/refinery/core/engine.rb +9 -18
  27. data/lib/refinery/core.rb +5 -6
  28. data/lib/refinery/menu.rb +2 -18
  29. data/lib/refinery/menu_item.rb +1 -5
  30. data/lib/refinery/version.rb +1 -1
  31. data/spec/controllers/refinery/admin/refinery_core_controller_spec.rb +4 -4
  32. data/spec/controllers/refinery/fast_controller_spec.rb +1 -1
  33. data/spec/lib/generators/refinery/cms/cms_generator_spec.rb +0 -3
  34. data/spec/lib/refinery/application_controller_spec.rb +15 -0
  35. data/spec/support/database_cleaner.rb +1 -1
  36. metadata +170 -171
  37. data/lib/generators/refinery/cms/templates/config/initializers/devise.rb +0 -229
@@ -173,29 +173,33 @@ submit_and_continue = function(e, redirect_to) {
173
173
  $('.fieldWithErrors').removeClass('fieldWithErrors').addClass('field');
174
174
  $('#flash_container .errorExplanation').remove();
175
175
 
176
- $.post($('#continue_editing').get(0).form.action, $($('#continue_editing').get(0).form).serialize(), function(data) {
177
- if (($flash_container = $('#flash_container')).length > 0) {
178
- $flash_container.html(data);
176
+ $.post(
177
+ $('#continue_editing').get(0).form.action
178
+ , $($('#continue_editing').get(0).form).serialize()
179
+ , function(data) {
180
+ if (($flash_container = $('#flash_container')).length > 0) {
181
+ $flash_container.html(data);
179
182
 
180
- $('#flash').css({'width': 'auto', 'visibility': null}).fadeIn(550);
183
+ $('#flash').css({'width': 'auto', 'visibility': null}).fadeIn(550);
181
184
 
182
- $('.errorExplanation').not($('#flash_container .errorExplanation')).remove();
185
+ $('.errorExplanation').not($('#flash_container .errorExplanation')).remove();
183
186
 
184
- if ((error_fields = $('#fieldsWithErrors').val()) != null) {
185
- $.each(error_fields.split(','), function() {
186
- $("#" + this).wrap("<div class='fieldWithErrors' />");
187
- });
188
- } else if (redirect_to) {
189
- window.location = redirect_to;
190
- }
187
+ if ((error_fields = $('#fieldsWithErrors').val()) != null) {
188
+ $.each(error_fields.split(','), function() {
189
+ $("#" + this).wrap("<div class='fieldWithErrors' />");
190
+ });
191
+ } else if (redirect_to) {
192
+ window.location = redirect_to;
193
+ }
191
194
 
192
- $('.fieldWithErrors:first :input:first').focus();
195
+ $('.fieldWithErrors:first :input:first').focus();
193
196
 
194
- $('#continue_editing').val(false);
197
+ $('#continue_editing').val(false);
195
198
 
196
- init_flash_messages();
197
- }
198
- });
199
+ init_flash_messages();
200
+ }
201
+ }, 'html'
202
+ );
199
203
 
200
204
  e.preventDefault();
201
205
  };
@@ -398,13 +402,14 @@ var link_dialog = {
398
402
  },
399
403
 
400
404
  init_resources_submit: function(){
405
+ <% absolute_page_links = defined?(Refinery::Pages) && Refinery::Pages.absolute_page_links %>
401
406
  $('#existing_resource_area .form-actions-dialog #submit_button').click(function(e){
402
407
  e.preventDefault();
403
408
  if((resource_selected = $('#existing_resource_area_content ul li.linked a')).length > 0) {
404
409
  resourceUrl = parseURL(resource_selected.attr('href'));
405
- relevant_href = <%= Refinery::Pages.absolute_page_links ? "resource_selected.attr('href')" : "resourceUrl.pathname" %>;
410
+ relevant_href = <%= absolute_page_links ? "resource_selected.attr('href')" : "resourceUrl.pathname" %>;
406
411
 
407
- <% unless Refinery::Pages.absolute_page_links %>
412
+ <% unless absolute_page_links %>
408
413
  // Add any alternate resource stores that need a absolute URL in the regex below
409
414
  if(resourceUrl.hostname.match(/s3.amazonaws.com/)) {
410
415
  relevant_href = resourceUrl.protocol + '//' + resourceUrl.host + relevant_href;
@@ -455,7 +460,7 @@ var link_dialog = {
455
460
 
456
461
  var link = $(this).children('a.page_link').get(0);
457
462
  var port = (window.location.port.length > 0 ? (":" + window.location.port) : "");
458
- var url = link.href<%= %q{.replace(window.location.protocol + "//" + window.location.hostname + port, "")} unless Refinery::Pages.absolute_page_links %>;
463
+ var url = link.href<%= %q{.replace(window.location.protocol + "//" + window.location.hostname + port, "")} unless defined?(Refinery::Pages) && Refinery::Pages.absolute_page_links %>;
459
464
 
460
465
  link_dialog.update_parent(url, link.rel.replace(/\ ?<em>.+?<\/em>/, ''));
461
466
  });
@@ -1,16 +1,14 @@
1
- if (typeof($) == 'function') {
2
- $(document).ready(function() {
3
- $logo = $('#site_bar_content #site_bar_refinery_cms_logo');
4
- $logo.css('left', ($('#site_bar_content').width() / 2) - ($logo.width() / 2));
1
+ (function($) {
2
+ $logo = $('#site_bar_content #site_bar_refinery_cms_logo');
3
+ $logo.css('left', ($('#site_bar_content').width() / 2) - ($logo.width() / 2));
5
4
 
6
- $switch_anchor = $('#editor_switch a').not('.ie7 #editor_switch a, .ie6 #editor_switch a');
7
- if ($.isFunction($switch_anchor.corner)) {
8
- $switch_anchor.corner('6px');
9
- }
5
+ $switch_anchor = $('#editor_switch a').not('.ie7 #editor_switch a, .ie6 #editor_switch a');
6
+ if ($.isFunction($switch_anchor.corner)) {
7
+ $switch_anchor.corner('6px');
8
+ }
10
9
 
11
- $('#editor_switch a').appendTo((span = $('<span></span>').prependTo('#editor_switch')));
12
- if ($.isFunction(span.corner)) {
13
- span.corner('6px');
14
- }
15
- });
16
- }
10
+ $('#editor_switch a').appendTo((span = $('<span></span>').prependTo('#editor_switch')));
11
+ if ($.isFunction(span.corner)) {
12
+ span.corner('6px');
13
+ }
14
+ })(jQuery);
@@ -5,4 +5,5 @@
5
5
 
6
6
  if (continue_editing_button = $("#continue_editing")).length > 0 and continue_editing_button.attr("rel") != "no-prompt"
7
7
  $("#editor_switch a").click (e) ->
8
- e.preventDefault() unless confirm("<%= ::I18n.t("js.admin.confirm_changes") %>") if $("form[data-changes-made]").length > 0
8
+ if $("form[data-changes-made]").length > 0
9
+ e.preventDefault() unless confirm("<%= ::I18n.t('confirm_changes', :scope => 'refinery.js.admin') %>")
@@ -1565,10 +1565,4 @@ a.information:hover {
1565
1565
  }
1566
1566
  .ie8 .pagination a, .ie8 #content .pagination a, .ie8 .pagination .current, .ie8 .disabled, .ie8 .pagination em {
1567
1567
  padding-bottom: 6px;
1568
- }
1569
-
1570
- @import 'site_bar';
1571
- @import 'ui';
1572
- @import 'submenu';
1573
- @import 'tooltips';
1574
- @import 'wymeditor/skins/refinery/skin';
1568
+ }
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into refinery.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ *= require_self
9
+ *= require refinery/layout
10
+ *= require refinery/site_bar
11
+ *= require refinery/ui
12
+ *= require refinery/submenu
13
+ *= require refinery/tooltips
14
+ *= require wymeditor/skins/refinery/skin
15
+ */
@@ -1,6 +1,6 @@
1
- module ::Refinery
1
+ module Refinery
2
2
  module Admin
3
- class RefineryCoreController < ::Refinery::AdminController
3
+ class CoreController < ::Refinery::AdminController
4
4
  def update_plugin_positions
5
5
  params[:menu].each_with_index do |plugin_name, index|
6
6
  if (plugin = current_refinery_user.plugins.find_by_name(plugin_name))
@@ -1,7 +1,10 @@
1
1
  # Filters added to this controller apply to all controllers in the refinery backend.
2
2
  # Likewise, all the methods added will be available for all controllers in the refinery backend.
3
- module ::Refinery
3
+ module Refinery
4
4
  class AdminController < ::ActionController::Base
5
+ include ::Refinery::ApplicationController
6
+ helper Refinery::Core::Engine.helpers
7
+ include Refinery::Admin::BaseController
5
8
 
6
9
  end
7
10
  end
@@ -0,0 +1,6 @@
1
+ module Refinery
2
+ module Admin
3
+ module CoreHelper
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ module Refinery
2
+ module Admin
3
+ module DialogsHelper
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,4 @@
1
+ module Refinery
2
+ module AdminHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Refinery
2
+ module FastHelper
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Refinery
2
+ module SitemapHelper
3
+ end
4
+ end
@@ -1,5 +1,3 @@
1
- # If any changes are made to this class then the application will require a restart
2
- # This is because this class is added to autoload_once_paths in lib/refinery/core/engine.rb.
3
1
  module Refinery
4
2
  module Core
5
3
  class BaseModel < ActiveRecord::Base
data/config/routes.rb CHANGED
@@ -8,7 +8,7 @@ Refinery::Core::Engine.routes.draw do
8
8
  resources :dialogs, :only => :show
9
9
  end
10
10
 
11
- match '/refinery/update_menu_positions', :to => 'admin/refinery_core#update_plugin_positions'
11
+ match '/refinery/update_menu_positions', :to => 'admin/core#update_plugin_positions'
12
12
 
13
13
  get '/sitemap.xml' => 'sitemap#index', :defaults => { :format => 'xml' }
14
14
  end
@@ -24,6 +24,8 @@ module Refinery
24
24
 
25
25
  stop_pretending?
26
26
 
27
+ append_gemfile!
28
+
27
29
  append_gitignore!
28
30
 
29
31
  forced_overwriting?
@@ -45,6 +47,14 @@ module Refinery
45
47
 
46
48
  protected
47
49
 
50
+ def append_gemfile!
51
+ if destination_path.join('Gemfile').file? &&
52
+ destination_path.join('Gemfile').read !~ %r{group :development, :test do\n.+?gem 'sqlite3'\nend}m
53
+ gsub_file 'Gemfile', %q{gem 'sqlite3'}, %q{group :development, :test do
54
+ gem 'sqlite3'
55
+ end} end
56
+ end
57
+
48
58
  def append_gitignore!
49
59
  # Ensure .gitignore exists and append our rules to it.
50
60
  create_file ".gitignore" unless destination_path.join('.gitignore').file?
@@ -62,7 +72,7 @@ gem 'heroku'
62
72
  gem 'fog'
63
73
  }
64
74
  # If postgres is not the database in use, Heroku still needs it.
65
- if destination_path.join('Gemfile').read !~ %r{gem ['"]pg['"]}
75
+ if destination_path.join('Gemfile').file? && destination_path.join('Gemfile').read !~ %r{gem ['"]pg['"]}
66
76
  append_file 'Gemfile', %q{
67
77
  # Postgres support (added for Heroku)
68
78
  gem 'pg'
@@ -92,7 +102,7 @@ gem 'pg'
92
102
  end
93
103
 
94
104
  def deploy_to_hosting?
95
- if options[:heroku]
105
+ if heroku?
96
106
  append_heroku_gems!
97
107
 
98
108
  bundle!
@@ -112,7 +122,10 @@ gem 'pg'
112
122
  say_status message, nil, :yellow if message
113
123
 
114
124
  say_status "Creating Heroku app..", nil
115
- run "heroku create #{options[:heroku]}#{" --stack #{options[:stack]}" if options[:stack]}"
125
+ run ["heroku create",
126
+ (options[:heroku] if heroku?),
127
+ "#{"--stack #{options[:stack]}" if options[:stack]}"
128
+ ].compact.join(' ')
116
129
 
117
130
  say_status "Pushing to Heroku (this takes time, be patient)..", nil
118
131
  run "git push heroku master"
@@ -135,12 +148,6 @@ gem 'pg'
135
148
  next unless destination_path.join(env).file?
136
149
 
137
150
  gsub_file env, "config.assets.compile = false", "config.assets.compile = true", :verbose => false
138
-
139
- insert_into_file env, %Q{
140
- # Refinery has set config.assets.initialize_on_precompile = false by default.
141
- config.assets.initialize_on_precompile = false
142
-
143
- }, :after => "Application.configure do\n" if env =~ /production/
144
151
  end
145
152
  end
146
153
 
@@ -150,6 +157,10 @@ gem 'pg'
150
157
  self.options = force_options
151
158
  end
152
159
 
160
+ def heroku?
161
+ options[:heroku].present?
162
+ end
163
+
153
164
  def manage_roadblocks!
154
165
  %w(public/index.html app/views/layouts/application.html.erb).each do |roadblock|
155
166
  if (roadblock_path = destination_path.join(roadblock)).file?
@@ -190,6 +201,7 @@ gem 'pg'
190
201
  generator_args = []
191
202
  generator_args << '--quiet' if self.options[:quiet]
192
203
  Refinery::CoreGenerator.start generator_args
204
+ Refinery::AuthenticationGenerator.start generator_args
193
205
  Refinery::ResourcesGenerator.start generator_args
194
206
  Refinery::PagesGenerator.start generator_args
195
207
  Refinery::ImagesGenerator.start generator_args
@@ -197,7 +209,7 @@ gem 'pg'
197
209
  end
198
210
 
199
211
  def sanity_check_heroku_application_name!
200
- if options[:heroku].to_s.include?('_') || options[:heroku].to_s.length > 30
212
+ if heroku? && options[:heroku].to_s.include?('_') || options[:heroku].to_s.length > 30
201
213
  message = ["\nThe application name '#{options[:heroku]}' that you specified is invalid for Heroku."]
202
214
  suggested_name = options[:heroku].dup.to_s
203
215
  if suggested_name.include?('_')
@@ -214,6 +226,8 @@ gem 'pg'
214
226
  message << "We have changed the name to '#{suggested_name}' for you, hope it suits you.\n"
215
227
  message.join("\n")
216
228
  end
229
+
230
+ options[:heroku] = '' if options[:heroku] == 'heroku'
217
231
  end
218
232
 
219
233
  def seed_database!
@@ -74,6 +74,9 @@ capybara-*html
74
74
  .rvmrc
75
75
  .rvmrc.*
76
76
 
77
+ # vendor/extensions dummy applications.
78
+ vendor/extensions/**/spec/dummy
79
+
77
80
  # REFINERY CMS DEVELOPMENT ====================================================
78
81
  # Always keep this section at the bottom.
79
82
 
@@ -54,33 +54,33 @@ module Refinery
54
54
 
55
55
  attr :database
56
56
 
57
- protected
57
+ protected
58
58
 
59
- def dummy_path
60
- 'spec/dummy'
61
- end
59
+ def dummy_path
60
+ 'spec/dummy'
61
+ end
62
62
 
63
- def module_name
64
- 'Dummy'
65
- end
63
+ def module_name
64
+ 'Dummy'
65
+ end
66
66
 
67
- def application_definition
68
- @application_definition ||= begin
69
- dummy_application_path = File.expand_path("#{dummy_path}/config/application.rb", destination_root)
70
- unless options[:pretend] || !File.exists?(dummy_application_path)
71
- contents = File.read(dummy_application_path)
72
- contents[(contents.index("module #{module_name}"))..-1]
73
- end
67
+ def application_definition
68
+ @application_definition ||= begin
69
+ dummy_application_path = File.expand_path("#{dummy_path}/config/application.rb", destination_root)
70
+ unless options[:pretend] || !File.exists?(dummy_application_path)
71
+ contents = File.read(dummy_application_path)
72
+ contents[(contents.index("module #{module_name}"))..-1]
74
73
  end
75
74
  end
76
- alias :store_application_definition! :application_definition
75
+ end
76
+ alias :store_application_definition! :application_definition
77
77
 
78
- def camelized
79
- @camelized ||= name.gsub(/\W/, '_').squeeze('_').camelize
80
- end
78
+ def camelized
79
+ @camelized ||= name.gsub(/\W/, '_').squeeze('_').camelize
80
+ end
81
81
 
82
- def gemfile_path
83
- '../../../../Gemfile'
84
- end
82
+ def gemfile_path
83
+ '../../../../Gemfile'
84
+ end
85
85
  end
86
86
  end
@@ -0,0 +1,2 @@
1
+ # Ignore dummy applications.
2
+ spec/dummy
@@ -2,7 +2,7 @@ source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'refinerycms', '~> 2.0.0', :git => 'git://github.com/resolve/refinerycms.git'
5
+ gem 'refinerycms', '~> 2.0.0'
6
6
 
7
7
  # Refinery/rails should pull in the proper versions of these
8
8
  group :assets do
@@ -10,6 +10,7 @@ module Refinery
10
10
  append_file 'db/seeds.rb', :verbose => true do
11
11
  <<-EOH
12
12
 
13
+ # Added by Refinery CMS <%= plural_name.titleize %> extension
13
14
  Refinery::<%= namespacing %>::Engine.load_seed
14
15
  EOH
15
16
  end
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ ENGINE_PATH = File.expand_path('../..', __FILE__)
5
+ dummy_rails_path = File.expand_path('../../spec/dummy/script/rails', __FILE__)
6
+ if File.exist?(dummy_rails_path)
7
+ load dummy_rails_path
8
+ else
9
+ puts "Please first run 'rake refinery:testing:dummy_app' to create a dummy Refinery CMS application."
10
+ end
@@ -0,0 +1,2 @@
1
+ # Ignore dummy applications.
2
+ spec/dummy
@@ -1,3 +1,4 @@
1
+ require 'refinerycms-settings'
1
2
  require 'refinerycms-core'
2
3
 
3
4
  module Refinery
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ ENGINE_PATH = File.expand_path('../..', __FILE__)
5
+ dummy_rails_path = File.expand_path('../../spec/dummy/script/rails', __FILE__)
6
+ if File.exist?(dummy_rails_path)
7
+ load dummy_rails_path
8
+ else
9
+ puts "Please first run 'rake refinery:testing:dummy_app' to create a dummy Refinery CMS application."
10
+ end
@@ -65,8 +65,15 @@ module Refinery
65
65
 
66
66
  # use a different model for the meta information.
67
67
  def present(model)
68
- presenter = (Object.const_get("#{model.class}Presenter") rescue ::Refinery::BasePresenter)
69
- @meta = presenter.new(model)
68
+ @meta = presenter_for(model).new(model)
69
+ end
70
+
71
+ def presenter_for(model, default=BasePresenter)
72
+ return default if model.nil?
73
+
74
+ "#{model.class.name}Presenter".constantize
75
+ rescue NameError
76
+ default
70
77
  end
71
78
 
72
79
  def refinery_user_required?
@@ -24,16 +24,8 @@ module Refinery
24
24
  def refinery_inclusion!
25
25
  before_inclusion_procs.each(&:call)
26
26
 
27
- [::ApplicationController, Refinery::AdminController].each do |c|
28
- c.send :include, Refinery::ApplicationController
29
- c.send :helper, Refinery::Core::Engine.helpers
30
- end
31
-
32
- [Refinery::UsersController, Refinery::SessionsController, Refinery::PasswordsController].each do |c|
33
- c.send :helper, Refinery::Core::Engine.helpers
34
- end
35
-
36
- Refinery::AdminController.send :include, Refinery::Admin::BaseController
27
+ ::ApplicationController.send :include, Refinery::ApplicationController
28
+ ::ApplicationController.send :helper, Refinery::Core::Engine.helpers
37
29
 
38
30
  after_inclusion_procs.each(&:call)
39
31
  end
@@ -41,10 +33,6 @@ module Refinery
41
33
 
42
34
  config.autoload_paths += %W( #{config.root}/lib )
43
35
 
44
- # We can't reload the base class because otherwise in development mode
45
- # we lose any configuration that is applied to it like macros for Dragonfly.
46
- config.autoload_once_paths += %W( #{config.root}/app/models/refinery/core )
47
-
48
36
  # Include the refinery controllers and helpers dynamically
49
37
  config.to_prepare &method(:refinery_inclusion!).to_proc
50
38
 
@@ -97,10 +85,13 @@ module Refinery
97
85
  end
98
86
 
99
87
  initializer "refinery.acts_as_indexed" do
100
- ActsAsIndexed.configure do |config|
101
- config.index_file = Rails.root.join('tmp', 'index')
102
- config.index_file_depth = 3
103
- config.min_word_size = 3
88
+ ActiveSupport.on_load(:active_record) do
89
+ require 'acts_as_indexed'
90
+ ActsAsIndexed.configure do |config|
91
+ config.index_file = Rails.root.join('tmp', 'index')
92
+ config.index_file_depth = 3
93
+ config.min_word_size = 3
94
+ end
104
95
  end
105
96
  end
106
97
 
data/lib/refinery/core.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'rails/all'
2
2
  require 'rbconfig'
3
- require 'acts_as_indexed'
4
3
  require 'truncate_html'
5
4
  require 'will_paginate'
6
5
 
@@ -158,12 +157,12 @@ module Refinery
158
157
  end
159
158
  end
160
159
 
161
- private
162
- def validate_extension!(const)
163
- unless const.respond_to?(:root) && const.root.is_a?(Pathname)
164
- raise InvalidEngineError, "Engine must define a root accessor that returns a pathname to its root"
165
- end
160
+ private
161
+ def validate_extension!(const)
162
+ unless const.respond_to?(:root) && const.root.is_a?(Pathname)
163
+ raise InvalidEngineError, "Engine must define a root accessor that returns a pathname to its root"
166
164
  end
165
+ end
167
166
  end
168
167
 
169
168
  module Core
data/lib/refinery/menu.rb CHANGED
@@ -1,30 +1,14 @@
1
1
  module Refinery
2
-
3
- # Create a little something to store the instances of the menu.
4
- class << self
5
- attr_accessor :menus
6
- def menus
7
- @@menus ||= HashWithIndifferentAccess.new
8
- end
9
- end
10
-
11
2
  class Menu
12
3
 
13
4
  def initialize(objects = nil)
14
5
  objects.each do |item|
15
6
  item = item.to_refinery_menu_item if item.respond_to?(:to_refinery_menu_item)
16
- items << MenuItem.new(item.merge(:menu_id => id))
7
+ items << MenuItem.new(item.merge(:menu => self))
17
8
  end if objects
18
-
19
- ::Refinery.menus[self.id] = self
20
9
  end
21
10
 
22
- attr_accessor :items, :id
23
-
24
- def id
25
- require 'securerandom' unless defined?(::SecureRandom)
26
- @id ||= ::SecureRandom.hex(8)
27
- end
11
+ attr_accessor :items
28
12
 
29
13
  def items
30
14
  @items ||= []
@@ -3,7 +3,7 @@ module Refinery
3
3
 
4
4
  class << self
5
5
  def attributes
6
- [:title, :parent_id, :lft, :rgt, :depth, :url, :menu_id, :menu_match]
6
+ [:title, :parent_id, :lft, :rgt, :depth, :url, :menu, :menu_match]
7
7
  end
8
8
 
9
9
  def apply_attributes!
@@ -77,10 +77,6 @@ module Refinery
77
77
  hash.inspect
78
78
  end
79
79
 
80
- def menu
81
- ::Refinery.menus[menu_id]
82
- end
83
-
84
80
  def parent
85
81
  @parent ||= (menu.detect{|item| item.original_type == original_type && item.original_id == parent_id} if has_parent?)
86
82
  end
@@ -2,7 +2,7 @@ module Refinery
2
2
  class Version
3
3
  @major = 2
4
4
  @minor = 0
5
- @tiny = 2
5
+ @tiny = 3
6
6
  @build = nil
7
7
 
8
8
  class << self
@@ -2,16 +2,16 @@ require 'spec_helper'
2
2
 
3
3
  module Refinery
4
4
  module Admin
5
- describe RefineryCoreController do
5
+ describe CoreController do
6
6
  login_refinery_user
7
7
 
8
8
  it "should update the plugin positions" do
9
- plugins = @refinery_user.plugins.reverse.collect {|p| p.name}
9
+ plugins = refinery_user.plugins.reverse.collect(&:name)
10
10
 
11
11
  post 'update_plugin_positions', :menu => plugins
12
12
 
13
- @refinery_user.plugins.reload
14
- @refinery_user.plugins.each_with_index do |plugin, idx|
13
+ refinery_user.plugins.reload
14
+ refinery_user.plugins.each_with_index do |plugin, idx|
15
15
  plugin.name.should eql(plugins[idx])
16
16
  end
17
17
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- module ::Refinery
3
+ module Refinery
4
4
  describe FastController do
5
5
  it "should render the wymiframe template" do
6
6
  get :wymiframe
@@ -37,9 +37,6 @@ module Refinery
37
37
  file "database.yml.mysql"
38
38
  file "database.yml.postgresql"
39
39
  file "database.yml.sqlite3"
40
- directory "initializers" do
41
- file "devise.rb"
42
- end
43
40
  end
44
41
  }
45
42
  end