refinerycms-page-menus 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.
Files changed (67) hide show
  1. data/app/assets/javascripts/refinery/backend.js.coffee +24 -0
  2. data/app/assets/stylesheets/refinery/select_form.css.scss +182 -0
  3. data/app/controllers/refinery/admin/page_menus_controller.rb +57 -1
  4. data/app/controllers/refinery/admin/page_positions_controller.rb +19 -39
  5. data/app/helpers/refinery/page_positions_helper.rb +66 -0
  6. data/app/models/refinery/page_menu.rb +3 -15
  7. data/app/models/refinery/page_position.rb +87 -15
  8. data/app/views/refinery/admin/page_menus/_form.html.erb +27 -35
  9. data/app/views/refinery/admin/page_menus/_form_actions.html.erb +23 -0
  10. data/app/views/refinery/admin/page_menus/_page_menu.html.erb +16 -0
  11. data/app/views/refinery/admin/page_menus/_page_menus.html.erb +2 -0
  12. data/app/views/refinery/admin/page_menus/_records.html.erb +18 -0
  13. data/app/views/refinery/admin/page_menus/_sortable_list.html.erb +5 -0
  14. data/app/views/refinery/admin/page_menus/edit.html.erb +12 -1
  15. data/app/views/refinery/admin/page_menus/index.html.erb +3 -0
  16. data/app/views/refinery/admin/page_positions/_custom_link.html.erb +14 -0
  17. data/app/views/refinery/admin/page_positions/_page_position.html.erb +25 -48
  18. data/app/views/refinery/admin/page_positions/_resource_link.html.erb +14 -0
  19. data/app/views/refinery/admin/page_positions/_resource_link_editor_box.html.erb +21 -0
  20. data/app/views/refinery/admin/page_positions/create.js.erb +5 -0
  21. data/app/views/refinery/admin/page_positions/destroy.js.erb +3 -0
  22. data/config/locales/da.yml +9 -5
  23. data/config/locales/en.yml +25 -82
  24. data/config/locales/fr.yml +37 -0
  25. data/config/routes.rb +15 -4
  26. data/db/migrate/{20120406121839_create_page_menus.rb → 01_create_page_menus.rb} +0 -0
  27. data/db/migrate/{20120411133453_add_permatitle_to_page_menus.rb → 02_add_permatitle_to_page_menus.rb} +0 -0
  28. data/db/migrate/{20120411134419_add_menu_match_to_page_positions.rb → 03_add_menu_match_to_page_positions.rb} +0 -0
  29. data/db/migrate/04_add_flex_fields_to_page_positions.rb +9 -0
  30. data/db/migrate/05_remove_refinery_page_id_from_refinery_page_positions.rb +9 -0
  31. data/db/seeds.rb +18 -0
  32. data/lib/generators/refinery/page_menus/page_menus_generator.rb +12 -2
  33. data/lib/generators/refinery/page_menus/templates/config/initializers/refinery/page_menus.rb.erb +11 -0
  34. data/lib/refinery/page_menus/configuration.rb +24 -3
  35. data/lib/refinery/page_menus/controller_extension.rb +7 -3
  36. data/lib/refinery/page_menus/engine.rb +9 -9
  37. data/lib/refinery/page_menus/instance_methods.rb +1 -1
  38. data/lib/refinery/page_menus/version.rb +18 -0
  39. data/lib/refinery/page_menus.rb +1 -2
  40. data/readme.md +66 -1
  41. metadata +91 -52
  42. data/.gitignore +0 -2
  43. data/app/views/refinery/admin/page_positions/_actions.html.erb +0 -45
  44. data/app/views/refinery/admin/page_positions/_records.html.erb +0 -14
  45. data/app/views/refinery/admin/page_positions/_sortable_list.html.erb +0 -4
  46. data/app/views/refinery/admin/page_positions/index.html.erb +0 -11
  47. data/app/views/refinery/admin/pages/_actions.html.erb +0 -40
  48. data/app/views/refinery/admin/pages/_list_actions.html.erb +0 -28
  49. data/app/views/refinery/admin/pages/_list_page.html.erb +0 -46
  50. data/app/views/refinery/admin/pages/_list_records.html.erb +0 -16
  51. data/app/views/refinery/admin/pages/list.html.erb +0 -8
  52. data/app/views/refinery/admin/pages_shared/_submenu.html.erb +0 -65
  53. data/lib/refinery/page_menus/model_extension.rb +0 -14
  54. data/license.md +0 -21
  55. data/refinerycms-page-menus.gemspec +0 -25
  56. data/spec/factories/pages.rb +0 -5
  57. data/spec/helpers/refinery/pages/content_pages_helper_spec.rb +0 -44
  58. data/spec/lib/generators/refinery/pages/pages_generator_spec.rb +0 -29
  59. data/spec/lib/pages/content_page_presenter_spec.rb +0 -43
  60. data/spec/lib/pages/content_presenter_spec.rb +0 -111
  61. data/spec/lib/pages/page_part_section_presenter_spec.rb +0 -35
  62. data/spec/lib/pages/section_presenter_spec.rb +0 -86
  63. data/spec/lib/pages/title_section_presenter_spec.rb +0 -21
  64. data/spec/lib/pages_spec.rb +0 -26
  65. data/spec/models/refinery/page_spec.rb +0 -415
  66. data/spec/requests/refinery/admin/pages_spec.rb +0 -613
  67. data/spec/requests/refinery/pages_spec.rb +0 -302
@@ -1,302 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- module Refinery
5
- describe 'page frontend' do
6
- let(:home_page) { FactoryGirl.create(:page, :title => 'Home', :link_url => '/') }
7
- let(:about_page) { FactoryGirl.create(:page, :title => 'About') }
8
- let(:draft_page) { FactoryGirl.create(:page, :title => 'Draft', :draft => true) }
9
- before(:each) do
10
- # So that we can use Refinery.
11
- Refinery::PagesController.any_instance.stub(:refinery_user_required?).and_return(false)
12
-
13
- # Stub the menu pages we're expecting
14
- Refinery::Page.stub(:fast_menu).and_return([home_page, about_page])
15
- end
16
-
17
- def standard_page_menu_items_exist?
18
- within('.menu') do
19
- page.should have_content(home_page.title)
20
- page.should have_content(about_page.title)
21
- page.should_not have_content(draft_page.title)
22
- end
23
- end
24
-
25
- describe 'when marketable urls are' do
26
- describe 'enabled' do
27
- before { Refinery::Pages.stub(:marketable_urls).and_return(true) }
28
-
29
- it 'shows the homepage' do
30
- Refinery::PagesController.any_instance.stub(:find_page).and_return(:home_page)
31
- visit '/'
32
-
33
- standard_page_menu_items_exist?
34
- end
35
-
36
- it 'shows a show page' do
37
- Refinery::PagesController.any_instance.stub(:find_page).and_return(:about_page)
38
- visit refinery.page_path(about_page)
39
-
40
- standard_page_menu_items_exist?
41
- end
42
- end
43
-
44
- describe 'disabled' do
45
- before { Refinery::Pages.stub(:marketable_urls).and_return(false) }
46
-
47
- it 'shows the homepage' do
48
- Refinery::PagesController.any_instance.stub(:find_page).and_return(:home_page)
49
- visit '/'
50
-
51
- standard_page_menu_items_exist?
52
- end
53
-
54
- it 'does not route to /about for About page' do
55
- refinery.page_path(about_page).should =~ %r{/pages/about$}
56
- end
57
-
58
- it 'shows the about page' do
59
- Refinery::PagesController.any_instance.stub(:find_page).and_return(:about_page)
60
- visit refinery.page_path(about_page)
61
-
62
- standard_page_menu_items_exist?
63
- end
64
- end
65
- end
66
-
67
- describe 'title set (without menu title or browser title)' do
68
- before(:each) { visit '/about' }
69
-
70
- it "shows title at the top of the page" do
71
- find("#body_content_title").text.should == about_page.title
72
- end
73
-
74
- it "uses title in the menu" do
75
- find(".selected").text.strip.should == about_page.title
76
- end
77
-
78
- it "uses title in browser title" do
79
- find("title").should have_content(about_page.title)
80
- end
81
- end
82
-
83
- describe 'when menu_title is' do
84
- let(:page_mt) { FactoryGirl.create(:page, :title => 'Company News') }
85
-
86
- before(:each) do
87
- Refinery::Page.stub(:fast_menu).and_return([page_mt])
88
- end
89
-
90
- describe 'set' do
91
- before do
92
- page_mt.menu_title = "News"
93
- page_mt.save
94
- end
95
-
96
- it 'shows the menu_title in the menu' do
97
- visit '/news'
98
-
99
- find(".selected").text.strip.should == page_mt.menu_title
100
- end
101
-
102
- it "does not effect browser title and page title" do
103
- visit "/news"
104
-
105
- find("title").should have_content(page_mt.title)
106
- find("#body_content_title").text.should == page_mt.title
107
- end
108
- end
109
-
110
- describe 'set and then unset' do
111
- before do
112
- page_mt.menu_title = "News"
113
- page_mt.save
114
- page_mt.menu_title = ""
115
- page_mt.save
116
- end
117
-
118
- it 'the friendly_id and menu are reverted to match the title' do
119
- visit '/company-news'
120
-
121
- current_path.should == '/company-news'
122
- find(".selected").text.strip.should == page_mt.title
123
- end
124
- end
125
- end
126
-
127
- describe 'when browser_title is set' do
128
- let(:page_bt) { FactoryGirl.create(:page, :title => 'About Us', :browser_title => 'About Our Company') }
129
- before(:each) do
130
- Refinery::Page.stub(:fast_menu).and_return([page_bt])
131
- end
132
- it 'should have the browser_title in the title tag' do
133
- visit '/about-us'
134
-
135
- page.find("title").text == page_bt.title
136
- end
137
-
138
- it 'should not effect page title and menu title' do
139
- visit '/about-us'
140
-
141
- find("#body_content_title").text.should == page_bt.title
142
- find(".selected").text.strip.should == page_bt.title
143
- end
144
- end
145
-
146
- describe 'custom_slug' do
147
- let(:page_cs) { FactoryGirl.create(:page, :title => 'About Us') }
148
- before(:each) do
149
- Refinery::Page.stub(:fast_menu).and_return([page_cs])
150
- end
151
-
152
- describe 'not set' do
153
- it 'makes friendly_id from title' do
154
- visit '/about-us'
155
-
156
- current_path.should == '/about-us'
157
- end
158
- end
159
-
160
- describe 'set' do
161
- before do
162
- page_cs.custom_slug = "about-custom"
163
- page_cs.save
164
- end
165
-
166
- it 'should make and use a new friendly_id' do
167
- visit '/about-custom'
168
-
169
- current_path.should == '/about-custom'
170
- end
171
- end
172
-
173
- describe 'set and unset' do
174
- before do
175
- page_cs.custom_slug = "about-custom"
176
- page_cs.save
177
- page_cs.custom_slug = ""
178
- page_cs.save
179
- page_cs.reload
180
- end
181
- end
182
- end
183
-
184
- # Following specs are converted from one of the cucumber features.
185
- # Maybe we should clean up this spec file a bit...
186
- describe "home page" do
187
- it "succeeds" do
188
- visit "/"
189
-
190
- within ".selected" do
191
- page.should have_content(home_page.title)
192
- end
193
- page.should have_content(about_page.title)
194
- end
195
- end
196
-
197
- describe "content page" do
198
- it "succeeds" do
199
- visit "/about"
200
-
201
- page.should have_content(home_page.title)
202
- within ".selected > a" do
203
- page.should have_content(about_page.title)
204
- end
205
- end
206
- end
207
-
208
- describe "submenu page" do
209
- let(:submenu_page) {
210
- FactoryGirl.create(:page, :title => 'Sample Submenu', :parent_id => about_page.id)
211
- }
212
-
213
- before(:each) do
214
- Refinery::Page.stub(:fast_menu).and_return([home_page, submenu_page, about_page.reload].sort_by(&:lft))
215
- end
216
-
217
- it "succeeds" do
218
- visit refinery.url_for(submenu_page.url)
219
- page.should have_content(home_page.title)
220
- page.should have_content(about_page.title)
221
- within ".selected * > .selected a" do
222
- page.should have_content(submenu_page.title)
223
- end
224
- end
225
- end
226
-
227
- describe "special characters title" do
228
- let(:special_page) { FactoryGirl.create(:page, :title => 'ä ö ü spéciål chåråctÉrs') }
229
- before(:each) do
230
- Refinery::Page.stub(:fast_menu).and_return([home_page, about_page, special_page])
231
- end
232
-
233
- it "succeeds" do
234
- visit refinery.url_for(special_page.url)
235
-
236
- page.should have_content(home_page.title)
237
- page.should have_content(about_page.title)
238
- within ".selected > a" do
239
- page.should have_content(special_page.title)
240
- end
241
- end
242
- end
243
-
244
- describe "special characters title as submenu page" do
245
- let(:special_page) { FactoryGirl.create(:page, :title => 'ä ö ü spéciål chåråctÉrs',
246
- :parent_id => about_page.id) }
247
-
248
- before(:each) do
249
- Refinery::Page.stub(:fast_menu).and_return([home_page, special_page, about_page.reload].sort_by(&:lft))
250
- end
251
-
252
- it "succeeds" do
253
- visit refinery.url_for(special_page.url)
254
-
255
- page.should have_content(home_page.title)
256
- page.should have_content(about_page.title)
257
- within ".selected * > .selected a" do
258
- page.should have_content(special_page.title)
259
- end
260
- end
261
- end
262
-
263
- describe "hidden page" do
264
- let(:hidden_page) { FactoryGirl.create(:page, :title => "Hidden", :show_in_menu => false) }
265
-
266
- before(:each) do
267
- Refinery::Page.stub(:fast_menu).and_return([home_page, about_page])
268
- end
269
-
270
- it "succeeds" do
271
- visit refinery.page_path(hidden_page)
272
-
273
- page.should have_content(home_page.title)
274
- page.should have_content(about_page.title)
275
- page.should have_content(hidden_page.title)
276
- within "nav" do
277
- page.should have_no_content(hidden_page.title)
278
- end
279
- end
280
- end
281
-
282
- describe "skip to first child" do
283
- let(:child_page) { FactoryGirl.create(:page, :title => "Child Page", :parent_id => about_page.id)}
284
- before(:each) do
285
- child_page
286
- about = about_page.reload
287
- about.skip_to_first_child = true
288
- about.save!
289
-
290
- Refinery::Page.stub(:fast_menu).and_return([home_page, about, child_page].sort_by(&:lft))
291
- end
292
-
293
- it "succeeds" do
294
- visit "/about"
295
-
296
- within ".selected * > .selected a" do
297
- page.should have_content(child_page.title)
298
- end
299
- end
300
- end
301
- end
302
- end