refinerycms 0.9.8 → 0.9.8.1
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/Gemfile +6 -6
- data/app/controllers/application_controller.rb +2 -1
- data/bin/refinerycms +36 -32
- data/changelog.md +471 -0
- data/config/environments/production.rb +1 -1
- data/db/migrate/20100606135207_change_thumbnail_sizes_for_dragonfly.rb +4 -4
- data/db/migrate/20100826232810_move_inquiry_settings_to_refinery_settings.rb +2 -2
- data/db/migrate/20100831122919_move_page_to_nested_set.rb +28 -0
- data/db/schema.rb +7 -1
- data/db/seeds/refinery_settings.rb +2 -4
- data/license.md +21 -0
- data/readme.md +97 -0
- data/todo.md +61 -0
- data/vendor/refinerycms/authentication/app/views/admin/users/index.html.erb +5 -13
- data/vendor/refinerycms/authentication/app/views/layouts/login.html.erb +1 -1
- data/vendor/refinerycms/authentication/config/locales/de.yml +53 -56
- data/vendor/refinerycms/authentication/config/locales/en.yml +1 -2
- data/vendor/refinerycms/authentication/config/locales/lv.yml +38 -38
- data/vendor/refinerycms/authentication/config/locales/pt-BR.yml +21 -48
- data/vendor/refinerycms/authentication/features/lost_password.feature +40 -0
- data/vendor/refinerycms/authentication/features/manage_users.feature +57 -0
- data/vendor/refinerycms/authentication/features/step_definitions/lost_password.rb +8 -0
- data/vendor/refinerycms/authentication/features/step_definitions/user_steps.rb +32 -0
- data/vendor/refinerycms/authentication/features/support/factories.rb +17 -0
- data/vendor/refinerycms/authentication/features/support/paths.rb +24 -0
- data/vendor/refinerycms/authentication/lib/authenticated_system.rb +1 -1
- data/vendor/refinerycms/authentication/lib/authentication.rb +1 -1
- data/vendor/refinerycms/core/app/views/admin/_head.html.erb +4 -4
- data/vendor/refinerycms/core/app/views/admin/_menu_tab.html.erb +2 -2
- data/vendor/refinerycms/core/app/views/layouts/admin.html.erb +1 -1
- data/vendor/refinerycms/core/app/views/layouts/admin_dialog.html.erb +1 -1
- data/vendor/refinerycms/core/app/views/shared/_footer.html.erb +1 -1
- data/vendor/refinerycms/core/app/views/shared/_google_analytics.html.erb +1 -1
- data/vendor/refinerycms/core/app/views/shared/_header.html.erb +1 -1
- data/vendor/refinerycms/core/app/views/shared/_menu.html.erb +5 -2
- data/vendor/refinerycms/core/app/views/shared/_menu_branch.html.erb +6 -3
- data/vendor/refinerycms/core/app/views/shared/_site_bar.html.erb +11 -15
- data/vendor/refinerycms/core/app/views/shared/admin/_form_actions.html.erb +1 -0
- data/vendor/refinerycms/core/app/views/shared/admin/_image_picker.html.erb +3 -3
- data/vendor/refinerycms/core/app/views/shared/admin/_make_sortable.html.erb +2 -1
- data/vendor/refinerycms/core/app/views/shared/admin/_resource_picker.html.erb +24 -17
- data/vendor/refinerycms/core/app/views/wymiframe.html.erb +1 -1
- data/vendor/refinerycms/core/config/locales/de.yml +50 -51
- data/vendor/refinerycms/core/config/locales/en.yml +5 -2
- data/vendor/refinerycms/core/config/locales/lv.yml +6 -3
- data/vendor/refinerycms/core/config/locales/pt-BR.yml +34 -38
- data/vendor/refinerycms/core/crud.md +12 -12
- data/vendor/refinerycms/core/features/engine_generator.feature +27 -0
- data/vendor/refinerycms/core/features/search.feature +56 -0
- data/vendor/refinerycms/core/features/site_bar.feature +24 -0
- data/vendor/refinerycms/core/features/step_definitions/core_steps.rb +61 -0
- data/vendor/refinerycms/core/features/step_definitions/engine_generator_steps.rb +19 -0
- data/vendor/refinerycms/core/features/step_definitions/generator_steps.rb +11 -0
- data/vendor/refinerycms/core/features/support/paths.rb +14 -0
- data/vendor/refinerycms/core/features/uploads/beach.jpeg +0 -0
- data/vendor/refinerycms/core/features/uploads/refinery_is_awesome.txt +1 -0
- data/vendor/refinerycms/core/lib/core.rb +52 -53
- data/vendor/refinerycms/core/lib/generators/refinery_engine/refinery_engine_generator.rb +14 -3
- data/vendor/refinerycms/core/lib/generators/refinery_engine/templates/app/controllers/admin/plural_name_controller.rb +3 -1
- data/vendor/refinerycms/core/lib/generators/refinery_engine/templates/app/models/singular_name.rb +4 -3
- data/vendor/refinerycms/core/lib/generators/refinery_engine/templates/app/views/admin/plural_name/_form.html.erb +2 -1
- data/vendor/refinerycms/core/lib/generators/refinery_engine/templates/app/views/admin/plural_name/_singular_name.html.erb +6 -2
- data/vendor/refinerycms/core/lib/generators/refinery_engine/templates/app/views/plural_name/index.html.erb +3 -1
- data/vendor/refinerycms/core/lib/generators/refinery_engine/templates/app/views/plural_name/show.html.erb +7 -3
- data/vendor/refinerycms/core/lib/refinery/application_controller.rb +85 -75
- data/vendor/refinerycms/core/lib/refinery/application_helper.rb +10 -190
- data/vendor/refinerycms/core/lib/refinery/crud.rb +283 -0
- data/vendor/refinerycms/core/lib/refinery/{form_helpers.rb → helpers/form_helper.rb} +0 -0
- data/vendor/refinerycms/core/lib/refinery/helpers/html_truncation_helper.rb +26 -0
- data/vendor/refinerycms/core/lib/refinery/helpers/image_helper.rb +37 -0
- data/vendor/refinerycms/core/lib/refinery/helpers/menu_helper.rb +38 -0
- data/vendor/refinerycms/core/lib/refinery/helpers/meta_helper.rb +67 -0
- data/vendor/refinerycms/core/lib/refinery/helpers/script_helper.rb +36 -0
- data/vendor/refinerycms/core/lib/refinery/helpers/site_bar_helper.rb +26 -0
- data/vendor/refinerycms/core/lib/refinery/helpers/tag_helper.rb +19 -0
- data/vendor/refinerycms/core/lib/refinery/helpers/translation_helper.rb +17 -0
- data/vendor/refinerycms/core/lib/refinery/plugin.rb +3 -3
- data/vendor/refinerycms/core/lib/tasks/refinery.rake +4 -3
- data/vendor/refinerycms/core/public/javascripts/refinery/admin.js +93 -101
- data/vendor/refinerycms/core/public/javascripts/refinery/core.js +3 -0
- data/vendor/refinerycms/core/public/javascripts/refinery/nestedsortables.js +164 -0
- data/vendor/refinerycms/core/public/javascripts/refinery/serializelist.js +66 -0
- data/vendor/refinerycms/core/public/stylesheets/refinery/refinery.css +11 -73
- data/vendor/refinerycms/dashboard/config/locales/de.yml +6 -6
- data/vendor/refinerycms/dashboard/config/locales/pt-BR.yml +3 -5
- data/vendor/refinerycms/dashboard/features/dashboard.feature +54 -0
- data/vendor/refinerycms/dashboard/features/support/paths.rb +14 -0
- data/vendor/refinerycms/images/app/controllers/admin/images_controller.rb +6 -6
- data/vendor/refinerycms/images/app/helpers/admin/images_helper.rb +1 -1
- data/vendor/refinerycms/images/app/views/admin/images/_existing_image.html.erb +15 -13
- data/vendor/refinerycms/images/app/views/admin/images/_grid_view.html.erb +1 -1
- data/vendor/refinerycms/images/app/views/admin/images/_list_view_image.html.erb +1 -1
- data/vendor/refinerycms/images/config/locales/de.yml +21 -25
- data/vendor/refinerycms/images/config/locales/pt-BR.yml +13 -23
- data/vendor/refinerycms/images/features/manage_images.feature +48 -0
- data/vendor/refinerycms/images/features/step_definitions/image_steps.rb +37 -0
- data/vendor/refinerycms/images/features/support/paths.rb +17 -0
- data/vendor/refinerycms/images/features/uploads/beach.jpeg +0 -0
- data/vendor/refinerycms/images/features/uploads/id-rather-be-here.jpg +0 -0
- data/vendor/refinerycms/images/features/uploads/refinery_is_awesome.txt +1 -0
- data/vendor/refinerycms/images/lib/images.rb +6 -0
- data/vendor/refinerycms/images/readme.md +12 -36
- data/vendor/refinerycms/pages/app/controllers/admin/pages_controller.rb +4 -42
- data/vendor/refinerycms/pages/app/controllers/pages_controller.rb +1 -1
- data/vendor/refinerycms/pages/app/models/page.rb +3 -4
- data/vendor/refinerycms/pages/app/sweepers/page_sweeper.rb +18 -0
- data/vendor/refinerycms/pages/app/views/admin/pages/_form_advanced_options.html.erb +1 -1
- data/vendor/refinerycms/pages/app/views/admin/pages/_page.html.erb +6 -5
- data/vendor/refinerycms/pages/config/locales/de.yml +66 -36
- data/vendor/refinerycms/pages/config/locales/pt-BR.yml +29 -57
- data/vendor/refinerycms/pages/features/manage_pages.feature +45 -0
- data/vendor/refinerycms/pages/features/step_definitions/page_steps.rb +29 -0
- data/vendor/refinerycms/pages/features/support/paths.rb +18 -0
- data/vendor/refinerycms/pages/lib/pages.rb +5 -0
- data/vendor/refinerycms/pages/spec/models/page_spec.rb +13 -0
- data/vendor/refinerycms/refinery.rb +1 -1
- data/vendor/refinerycms/resources/app/views/admin/resources/_existing_resource.html.erb +2 -2
- data/vendor/refinerycms/resources/config/locales/de.yml +16 -17
- data/vendor/refinerycms/resources/config/locales/pt-BR.yml +15 -17
- data/vendor/refinerycms/resources/features/manage_files.feature +39 -0
- data/vendor/refinerycms/resources/features/step_definitions/file_steps.rb +21 -0
- data/vendor/refinerycms/resources/features/support/paths.rb +17 -0
- data/vendor/refinerycms/resources/features/uploads/beach.jpeg +0 -0
- data/vendor/refinerycms/resources/features/uploads/refinery_is_awesome.txt +1 -0
- data/vendor/refinerycms/resources/lib/resources.rb +17 -1
- data/vendor/refinerycms/settings/app/models/refinery_setting.rb +82 -64
- data/vendor/refinerycms/settings/config/locales/de.yml +36 -16
- data/vendor/refinerycms/settings/config/locales/pt-BR.yml +32 -34
- data/vendor/refinerycms/settings/features/manage_refinery_settings.feature +5 -0
- data/vendor/refinerycms/settings/lib/settings.rb +1 -1
- metadata +86 -53
- data/vendor/refinerycms/core/lib/crud.rb +0 -265
- data/vendor/refinerycms/core/lib/refinery/html_truncation_helper.rb +0 -22
- data/vendor/refinerycms/core/public/javascripts/jquery/jquery.nestedsortables.js +0 -186
|
@@ -12,9 +12,9 @@ The best part about ``crudify`` is that this gives you a smart default and if th
|
|
|
12
12
|
|
|
13
13
|
## Where is it located?
|
|
14
14
|
|
|
15
|
-
``vendor/
|
|
15
|
+
``vendor/refinerycms/core/lib/refinery/crud.rb``
|
|
16
16
|
|
|
17
|
-
## How do I use it in my
|
|
17
|
+
## How do I use it in my engines?
|
|
18
18
|
|
|
19
19
|
All you need to do is call ``crudify`` in your controller.
|
|
20
20
|
|
|
@@ -27,7 +27,7 @@ If you used the Refinery generator you're plugin will already be using ``crudify
|
|
|
27
27
|
crudify :news_item, :order => "created_at DESC"
|
|
28
28
|
|
|
29
29
|
end
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
### Complex Example
|
|
32
32
|
|
|
33
33
|
class NewsItemsController < ApplicationController
|
|
@@ -103,13 +103,13 @@ For performance optimisation, sometimes you might want to eager load other relat
|
|
|
103
103
|
Instead of having to look up each user for each of the ``news_posts`` we iterate over, the ``:include`` option allows you to load the ``news_post`` and user all at the same time which'll allow you to save on expensive database queries.
|
|
104
104
|
|
|
105
105
|
Here's an example of that.
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
class NewsItem
|
|
108
|
-
|
|
108
|
+
|
|
109
109
|
belongs_to :user
|
|
110
|
-
|
|
110
|
+
|
|
111
111
|
end
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
class NewsItemsController < ApplicationController
|
|
114
114
|
|
|
115
115
|
crudify :news_item, :order => "created_at DESC", :include => [:user]
|
|
@@ -139,18 +139,18 @@ Say we have a pages controller that is going to manage pages.
|
|
|
139
139
|
crudify :page
|
|
140
140
|
|
|
141
141
|
end
|
|
142
|
-
|
|
142
|
+
|
|
143
143
|
In this controller, automatically I have these methods:
|
|
144
144
|
|
|
145
145
|
find_page()
|
|
146
146
|
find_all_pages()
|
|
147
|
-
|
|
147
|
+
|
|
148
148
|
So say I wanted to change the way all pages are found, all I do is override the ``find_all_pages`` method.
|
|
149
149
|
|
|
150
150
|
class PagesController < ApplicationController
|
|
151
151
|
|
|
152
152
|
crudify :page
|
|
153
|
-
|
|
153
|
+
|
|
154
154
|
def find_all_pages
|
|
155
155
|
@pages = Page.find(...) # apply any logic I want here to get all pages.
|
|
156
156
|
end
|
|
@@ -170,7 +170,7 @@ Let's go back to the example above with the pages controller.
|
|
|
170
170
|
crudify :page
|
|
171
171
|
|
|
172
172
|
end
|
|
173
|
-
|
|
173
|
+
|
|
174
174
|
Say every time someone deletes a page I want my ``NotificationMailer`` to email me to say someone just deleted a page.
|
|
175
175
|
|
|
176
176
|
When I look in the ``crud.rb`` file I see that my controller has this added to it
|
|
@@ -179,7 +179,7 @@ When I look in the ``crud.rb`` file I see that my controller has this added to i
|
|
|
179
179
|
flash[:notice] = "'\#{@#{singular_name}.#{options[:title_attribute]}}' was successfully deleted." if @#{singular_name}.destroy
|
|
180
180
|
redirect_to admin_#{plural_name}_url
|
|
181
181
|
end
|
|
182
|
-
|
|
182
|
+
|
|
183
183
|
To override this all I would is create my own delete method that works the same but just with my mailer code on it.
|
|
184
184
|
|
|
185
185
|
class PagesController < ApplicationController
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
@engine-generator @generator
|
|
2
|
+
Feature: Engine generation
|
|
3
|
+
In order to create my own engine
|
|
4
|
+
As a refinery user
|
|
5
|
+
I want to generate a basic engine directory structure
|
|
6
|
+
|
|
7
|
+
Scenario: Generating an engine with a name
|
|
8
|
+
Given I have a refinery application
|
|
9
|
+
When I generate an engine with the arguments of "product title:string description:text image:image brochure:resource"
|
|
10
|
+
Then I should have a directory "vendor/engines/products"
|
|
11
|
+
And I should have a directory "vendor/engines/products/app"
|
|
12
|
+
And I should have a directory "vendor/engines/products/lib"
|
|
13
|
+
And I should have a directory "vendor/engines/products/config"
|
|
14
|
+
And I should have a file "vendor/engines/products/app/controllers/admin/products_controller.rb"
|
|
15
|
+
And I should have a file "vendor/engines/products/app/controllers/products_controller.rb"
|
|
16
|
+
And I should have a file "vendor/engines/products/app/models/product.rb"
|
|
17
|
+
And I should have a file "vendor/engines/products/config/routes.rb"
|
|
18
|
+
And I should have a file "vendor/engines/products/config/locales/en.yml"
|
|
19
|
+
And I should have a file "vendor/engines/products/lib/products.rb"
|
|
20
|
+
And I should have a file "vendor/engines/products/app/views/admin/products/_form.html.erb"
|
|
21
|
+
And I should have a file "vendor/engines/products/app/views/admin/products/_sortable_list.html.erb"
|
|
22
|
+
And I should have a file "vendor/engines/products/app/views/admin/products/edit.html.erb"
|
|
23
|
+
And I should have a file "vendor/engines/products/app/views/admin/products/index.html.erb"
|
|
24
|
+
And I should have a file "vendor/engines/products/app/views/admin/products/new.html.erb"
|
|
25
|
+
And I should have a file "vendor/engines/products/app/views/admin/products/_product.html.erb"
|
|
26
|
+
And I should have a file "vendor/engines/products/app/views/products/index.html.erb"
|
|
27
|
+
And I should have a file "vendor/engines/products/app/views/products/show.html.erb"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
@search
|
|
2
|
+
Feature: Search
|
|
3
|
+
In order find content more quickly
|
|
4
|
+
As an administrator
|
|
5
|
+
I want to use search
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given I am a logged in refinery user
|
|
9
|
+
|
|
10
|
+
@search-existing
|
|
11
|
+
Scenario Outline: Search Existing Item
|
|
12
|
+
Given I have a <item> titled "<title>"
|
|
13
|
+
When I go to the list of <location>
|
|
14
|
+
And I fill in "search" with "<title>"
|
|
15
|
+
And I press "Search"
|
|
16
|
+
Then I should see "<title>"
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
| item | title | location |
|
|
20
|
+
|page |testitem|pages |
|
|
21
|
+
|inquiry |testitem|inquiries |
|
|
22
|
+
|inquiry |testitem|spam inquiries|
|
|
23
|
+
|
|
24
|
+
# This will only run when resources engine is installed.
|
|
25
|
+
@search-file
|
|
26
|
+
Scenario: Search File
|
|
27
|
+
When I upload the file at "refinery_is_awesome.txt"
|
|
28
|
+
And I go to the list of files
|
|
29
|
+
And I fill in "search" with "Refinery Is Awesome"
|
|
30
|
+
And I press "Search"
|
|
31
|
+
Then I should see "Refinery Is Awesome"
|
|
32
|
+
|
|
33
|
+
# This will only run when images engine is installed.
|
|
34
|
+
@search-image
|
|
35
|
+
Scenario: Search Image
|
|
36
|
+
When I upload the image at "beach.jpeg"
|
|
37
|
+
And I go to the list of images
|
|
38
|
+
And I fill in "search" with "Beach"
|
|
39
|
+
And I press "Search"
|
|
40
|
+
Then I should see "Beach"
|
|
41
|
+
|
|
42
|
+
@search-nonexisting
|
|
43
|
+
Scenario Outline: Search Nonexisting Item
|
|
44
|
+
Given I have no <item>
|
|
45
|
+
When I go to the list of <location>
|
|
46
|
+
And I fill in "search" with "nonexisting"
|
|
47
|
+
And I press "Search"
|
|
48
|
+
Then I should see "Sorry, no results found"
|
|
49
|
+
|
|
50
|
+
Examples:
|
|
51
|
+
| item | location |
|
|
52
|
+
|pages |pages |
|
|
53
|
+
|images |images |
|
|
54
|
+
|files |files |
|
|
55
|
+
|inquiries|inquiries |
|
|
56
|
+
|inquiries|spam inquiries|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
@site_bar
|
|
2
|
+
Feature: Site Bar
|
|
3
|
+
In order to allow administrators to easily switch between editing and viewing their website
|
|
4
|
+
I want logged in refinery users to see a site bar
|
|
5
|
+
And I want logged in customers to not see a site bar
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given I have a page titled "Home" with a custom url "/"
|
|
9
|
+
And I am not logged in
|
|
10
|
+
|
|
11
|
+
Scenario: Not logged in
|
|
12
|
+
When I go to the home page
|
|
13
|
+
Then I should not see "Log out"
|
|
14
|
+
|
|
15
|
+
Scenario: Logged in as a Refinery user
|
|
16
|
+
Given I am a logged in refinery user
|
|
17
|
+
When I go to the home page
|
|
18
|
+
Then I should see "Log out"
|
|
19
|
+
|
|
20
|
+
Scenario: Logged in as a customer
|
|
21
|
+
Given A Refinery user exists
|
|
22
|
+
And I am a logged in customer
|
|
23
|
+
When I go to the home page
|
|
24
|
+
Then I should not see "Switch to your website editor"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Login stuff
|
|
2
|
+
Given %r`not logged in$` do
|
|
3
|
+
visit logout_path
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
Given /locale is (.+?)$/ do |locale|
|
|
7
|
+
if defined?(::Refinery::I18n)
|
|
8
|
+
::Refinery::I18n.current_locale = locale.to_sym
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
Given %r`(?:log|am logged) in as "([^\"]+)"$` do |login|
|
|
13
|
+
@my_username = login
|
|
14
|
+
visit login_path
|
|
15
|
+
And %Q`enter the username "#{login}"`
|
|
16
|
+
And %Q`enter the password "#{login}-123"`
|
|
17
|
+
And "press the login button"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Then 'I should( not)? see a login form' do |negative|
|
|
21
|
+
expect_opposite_if(negative) do
|
|
22
|
+
response.should have_tag('form#new_user_session') do
|
|
23
|
+
field_labeled('Username').should_not be_nil
|
|
24
|
+
field_labeled('Password', :password).should_not be_nil
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
When %r`enter the username "(.+)"$` do |login|
|
|
30
|
+
fill_in 'user_session[login]' , :with => login
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
When %r`enter the password "(.+)-123"$` do |login|
|
|
34
|
+
fill_in 'user_session[password]', :with => "#{login}-123"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
When %r`press the login button$` do
|
|
38
|
+
click_button 'Sign In'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
Then %r`not be allowed to log in$` do
|
|
42
|
+
When %Q`log in as "#{@my_username}"`
|
|
43
|
+
Then 'I should see a login form'
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
Then %r`be redirected to login$` do
|
|
47
|
+
request.request_uri.should == login_path
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
Then /^"([^\"]*)" can log in$/ do |name|
|
|
51
|
+
user = User.find_by_login!(name)
|
|
52
|
+
visit login_path
|
|
53
|
+
When %Q`I enter the username "#{name}"`
|
|
54
|
+
And %Q`I enter the password "#{name}-123"`
|
|
55
|
+
And 'I press the login button'
|
|
56
|
+
Then 'I should not see a login form'
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
Then /^I should be redirected back to "([^"]*)"$/ do |page_name|
|
|
60
|
+
visit path_to(page_name)
|
|
61
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require File.expand_path("../../../lib/generators/refinery_engine/refinery_engine_generator", __FILE__)
|
|
2
|
+
|
|
3
|
+
Before do
|
|
4
|
+
@engine_generator_root = File.expand_path('../../../', __FILE__)
|
|
5
|
+
@tmp_refinery_app_name = "tmp_refinery_app"
|
|
6
|
+
@tmp_refinery_app_root = File.join(@engine_generator_root, @tmp_refinery_app_name)
|
|
7
|
+
@app_root = @tmp_refinery_app_root
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
After do
|
|
11
|
+
FileUtils.rm_rf(@tmp_refinery_app_root)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
When /^I generate an engine with the arguments of "([^"]*)"$/ do |arguments|
|
|
15
|
+
generator = RefineryEngineGenerator.new(arguments.split(" "))
|
|
16
|
+
generator.destination_root = @app_root
|
|
17
|
+
generator.options = {:quiet => true}
|
|
18
|
+
generator.generate
|
|
19
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Given /^I have a refinery application$/ do
|
|
2
|
+
FileUtils.mkdir(File.join(@app_root))
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
Then /^I should have a directory "([^"]*)"$/ do |name|
|
|
6
|
+
File.exist?(File.join(@tmp_refinery_app_root, name)).should be_true
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
Then /^I should have a file "([^"]*)"$/ do |name|
|
|
10
|
+
File.exist?(File.join(@tmp_refinery_app_root, name)).should be_true
|
|
11
|
+
end
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
http://www.refineryhq.com/
|
|
@@ -1,76 +1,75 @@
|
|
|
1
1
|
require 'rails/all'
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
require 'acts_as_indexed'
|
|
4
|
+
require 'authlogic'
|
|
5
|
+
require 'awesome_nested_set'
|
|
6
|
+
require 'dragonfly'
|
|
4
7
|
require 'friendly_id'
|
|
5
8
|
require 'truncate_html'
|
|
6
9
|
require 'will_paginate'
|
|
7
10
|
|
|
8
11
|
module Refinery
|
|
12
|
+
autoload :Plugin, File.expand_path('../refinery/plugin', __FILE__)
|
|
13
|
+
autoload :Plugins, File.expand_path('../refinery/plugins', __FILE__)
|
|
14
|
+
autoload :Activity, File.expand_path('../refinery/activity', __FILE__)
|
|
9
15
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
initializer "static assets" do |app|
|
|
16
|
-
app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public"
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
config.autoload_paths += %W( #{config.root}/lib )
|
|
20
|
-
|
|
21
|
-
initializer 'add catch all routes' do |app|
|
|
22
|
-
app.routes_reloader.paths << File.expand_path('../refinery/catch_all_routes.rb', __FILE__)
|
|
23
|
-
end
|
|
16
|
+
module Core
|
|
17
|
+
class Engine < Rails::Engine
|
|
18
|
+
initializer "static assets" do |app|
|
|
19
|
+
app.middleware.insert_after ::ActionDispatch::Static, ::ActionDispatch::Static, "#{root}/public"
|
|
20
|
+
end
|
|
24
21
|
|
|
25
|
-
|
|
26
|
-
Rails.cache.clear
|
|
22
|
+
config.autoload_paths += %W( #{config.root}/lib )
|
|
27
23
|
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
initializer 'add catch all routes' do |app|
|
|
25
|
+
app.routes_reloader.paths << File.expand_path('../refinery/catch_all_routes.rb', __FILE__)
|
|
26
|
+
end
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
::ActiveSupport::Dependencies.load_paths << presenters_path
|
|
38
|
-
end
|
|
28
|
+
initializer 'add presenters' do |app|
|
|
29
|
+
app.config.load_paths += [
|
|
30
|
+
Rails.root.join("app", "presenters"),
|
|
31
|
+
Rails.root.join("vendor", "**", "**", "app", "presenters"),
|
|
32
|
+
Refinery.root.join("vendor", "refinerycms", "*", "app", "presenters")
|
|
33
|
+
].flatten
|
|
39
34
|
end
|
|
40
35
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
36
|
+
config.to_prepare do
|
|
37
|
+
Rails.cache.clear
|
|
38
|
+
|
|
39
|
+
# TODO: Is there a better way to cache assets in engines?
|
|
40
|
+
::ActionView::Helpers::AssetTagHelper.module_eval do
|
|
41
|
+
def asset_file_path(path)
|
|
42
|
+
unless File.exist?(return_path = File.join(config.assets_dir, path.split('?').first))
|
|
43
|
+
::Refinery::Plugins.registered.collect{|p| p.pathname}.compact.each do |pathname|
|
|
44
|
+
if File.exist?(plugin_asset_path = File.join(pathname.to_s, 'public', path.split('?').first))
|
|
45
|
+
return_path = plugin_asset_path.to_s
|
|
46
|
+
end
|
|
48
47
|
end
|
|
49
48
|
end
|
|
50
|
-
end
|
|
51
49
|
|
|
52
|
-
|
|
50
|
+
return_path
|
|
51
|
+
end
|
|
53
52
|
end
|
|
54
53
|
end
|
|
55
|
-
end
|
|
56
54
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
55
|
+
config.after_initialize do
|
|
56
|
+
Refinery::Plugin.register do |plugin|
|
|
57
|
+
plugin.name ="refinery_core"
|
|
58
|
+
plugin.class_name ="RefineryEngine"
|
|
59
|
+
plugin.version = %q{0.9.8}
|
|
60
|
+
plugin.hide_from_menu = true
|
|
61
|
+
plugin.always_allow_access = true
|
|
62
|
+
plugin.menu_match = /(refinery|admin)\/(refinery_core|base)$/
|
|
63
|
+
end
|
|
66
64
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
65
|
+
# Register the dialogs plugin
|
|
66
|
+
Refinery::Plugin.register do |plugin|
|
|
67
|
+
plugin.name = "refinery_dialogs"
|
|
68
|
+
plugin.version = %q{0.9.8}
|
|
69
|
+
plugin.hide_from_menu = true
|
|
70
|
+
plugin.always_allow_access = true
|
|
71
|
+
plugin.menu_match = /(refinery|admin)\/(refinery_)?dialogs/
|
|
72
|
+
end
|
|
74
73
|
end
|
|
75
74
|
end
|
|
76
75
|
end
|
|
@@ -16,7 +16,7 @@ class RefineryEngineGenerator < Rails::Generators::NamedBase
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
# Update the gem file
|
|
19
|
-
|
|
19
|
+
if Rails.env != 'test' and self.behavior != :revoke
|
|
20
20
|
Rails.root.join('Gemfile').open('a') do |f|
|
|
21
21
|
f.write "\ngem 'refinerycms-#{plural_name}', '1.0', :path => 'vendor/engines', :require => '#{plural_name}'"
|
|
22
22
|
end
|
|
@@ -26,6 +26,9 @@ class RefineryEngineGenerator < Rails::Generators::NamedBase
|
|
|
26
26
|
puts "bundle install"
|
|
27
27
|
puts "rake db:migrate"
|
|
28
28
|
puts "------------------------"
|
|
29
|
+
elsif self.behavior == :revoke
|
|
30
|
+
lines = Rails.root.join('Gemfile').open('r').read.split("\n")
|
|
31
|
+
Rails.root.join('Gemfile').open('w').puts(lines.reject {|l| l =~ %r{refinerycms-#{plural_name}}}.join("\n"))
|
|
29
32
|
end
|
|
30
33
|
else
|
|
31
34
|
puts "You must specify at least one field. For help: rails generate refinery_engine"
|
|
@@ -41,8 +44,16 @@ protected
|
|
|
41
44
|
path = path.gsub(".migration", '')
|
|
42
45
|
|
|
43
46
|
# hack can be removed after issue is fixed
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
unless self.behavior == :revoke
|
|
48
|
+
next_migration_number = ActiveRecord::Generators::Base.next_migration_number(File.dirname(__FILE__))
|
|
49
|
+
else
|
|
50
|
+
if (migrations = Dir[Rails.root.join('db', 'migrate', "*create_#{plural_name}*.rb").to_s]).any?
|
|
51
|
+
next_migration_number = migrations.first.split('/').last.split('_').first
|
|
52
|
+
else
|
|
53
|
+
next_migration_number = ''
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
path = path.gsub("migration_number", next_migration_number.to_s)
|
|
46
57
|
|
|
47
58
|
# replace our local db path with the app one instead.
|
|
48
59
|
path = path.gsub("/db/", "/../../../db/")
|