refinerycms 0.9.8 → 0.9.8.1
Sign up to get free protection for your applications and to get access to all the features.
- 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/")
|