alchemy_cms 2.4.beta2 → 2.4.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. data/.gitignore +2 -1
  2. data/.travis.yml +3 -1
  3. data/.yardopts +1 -1
  4. data/Gemfile +2 -1
  5. data/alchemy_cms.gemspec +18 -17
  6. data/app/assets/images/alchemy/ajax_loader.gif +0 -0
  7. data/app/assets/images/alchemy/alchemy-logo.png +0 -0
  8. data/app/assets/images/alchemy/icons.png +0 -0
  9. data/app/assets/images/alchemy/image_loader.gif +0 -0
  10. data/app/assets/images/alchemy/placeholder.png +0 -0
  11. data/app/assets/images/alchemy/shading.png +0 -0
  12. data/app/assets/images/alchemy/swfupload/browse_button.png +0 -0
  13. data/app/assets/images/alchemy/tabs.gif +0 -0
  14. data/app/assets/images/alchemy/ui-icons_666666_256x240.png +0 -0
  15. data/app/assets/images/sassy-ie-overlay.png +0 -0
  16. data/app/assets/javascripts/alchemy/alchemy.base.js +1 -3
  17. data/app/assets/javascripts/alchemy/alchemy.browser.js.coffee +28 -0
  18. data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +2 -2
  19. data/app/assets/javascripts/alchemy/alchemy.js +2 -0
  20. data/app/assets/javascripts/alchemy/alchemy.link_overlay.js.coffee +79 -47
  21. data/app/assets/javascripts/alchemy/alchemy.menubar.js +12 -4
  22. data/app/assets/javascripts/alchemy/alchemy.onload.js.coffee +1 -1
  23. data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +103 -0
  24. data/app/assets/javascripts/alchemy/alchemy.swf_upload.js +1 -1
  25. data/app/assets/javascripts/alchemy/alchemy.uploader.js +4 -6
  26. data/app/assets/javascripts/alchemy/preview.js +1 -0
  27. data/app/assets/stylesheets/alchemy/admin.css.scss +25 -0
  28. data/app/assets/stylesheets/alchemy/{archive.css.scss → archive.scss} +0 -2
  29. data/app/assets/stylesheets/alchemy/{base.css.scss → base.scss} +1 -57
  30. data/app/assets/stylesheets/alchemy/{custom.css → custom.scss} +0 -0
  31. data/app/assets/stylesheets/alchemy/{dashboard.css.scss → dashboard.scss} +0 -2
  32. data/app/assets/stylesheets/alchemy/defaults.scss +5 -0
  33. data/app/assets/stylesheets/alchemy/{elements.css.scss → elements.scss} +24 -37
  34. data/app/assets/stylesheets/alchemy/{errors.css.scss → errors.scss} +0 -2
  35. data/app/assets/stylesheets/alchemy/{flash.css.scss → flash.scss} +0 -2
  36. data/app/assets/stylesheets/alchemy/{form_elements.css.scss → form_elements.scss} +39 -12
  37. data/app/assets/stylesheets/alchemy/{frame.css.scss → frame.scss} +0 -2
  38. data/app/assets/stylesheets/alchemy/{icons.css.scss → icons.scss} +20 -2
  39. data/app/assets/stylesheets/alchemy/{jquery-ui.alchemy.css.scss → jquery-ui.scss} +6 -3
  40. data/app/assets/stylesheets/alchemy/{login.css.scss → login.scss} +3 -3
  41. data/app/assets/stylesheets/alchemy/menubar.css.scss +0 -1
  42. data/app/assets/stylesheets/alchemy/{_defaults.scss → mixins.scss} +2 -39
  43. data/app/assets/stylesheets/alchemy/{modules.css.scss → modules.scss} +4 -2
  44. data/app/assets/stylesheets/alchemy/notices.scss +51 -0
  45. data/app/assets/stylesheets/alchemy/{pagination.css.scss → pagination.scss} +0 -2
  46. data/app/assets/stylesheets/alchemy/{print.css → print.css.scss} +3 -3
  47. data/app/assets/stylesheets/alchemy/search.scss +63 -0
  48. data/app/assets/stylesheets/alchemy/{sitemap.css.scss → sitemap.scss} +1 -2
  49. data/app/assets/stylesheets/alchemy/{tables.css.scss → tables.scss} +16 -3
  50. data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +3 -0
  51. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +3 -0
  52. data/app/assets/stylesheets/alchemy/{upload.css.scss → upload.scss} +0 -2
  53. data/app/assets/stylesheets/alchemy/variables.scss +33 -0
  54. data/app/controllers/alchemy/admin/elements_controller.rb +1 -2
  55. data/app/controllers/alchemy/admin/tags_controller.rb +64 -0
  56. data/app/controllers/alchemy/base_controller.rb +8 -23
  57. data/app/controllers/alchemy/pages_controller.rb +5 -18
  58. data/app/helpers/alchemy/admin/base_helper.rb +1 -1
  59. data/app/helpers/alchemy/admin/elements_helper.rb +1 -0
  60. data/app/helpers/alchemy/elements_block_helper.rb +162 -0
  61. data/app/helpers/alchemy/elements_helper.rb +41 -3
  62. data/app/helpers/alchemy/pages_helper.rb +2 -1
  63. data/app/models/alchemy/attachment.rb +2 -1
  64. data/app/models/alchemy/element.rb +13 -10
  65. data/app/models/alchemy/essence_link.rb +11 -0
  66. data/app/models/alchemy/essence_picture.rb +15 -4
  67. data/app/models/alchemy/page.rb +23 -25
  68. data/app/models/alchemy/picture.rb +2 -2
  69. data/app/models/alchemy/tag.rb +16 -0
  70. data/app/models/alchemy/user.rb +3 -1
  71. data/app/views/alchemy/admin/attachments/_attachment.html.erb +12 -12
  72. data/app/views/alchemy/admin/attachments/edit.html.erb +10 -4
  73. data/app/views/alchemy/admin/elements/_element.html.erb +10 -13
  74. data/app/views/alchemy/admin/elements/_element_foot.html.erb +1 -1
  75. data/app/views/alchemy/admin/essence_files/edit.html.erb +12 -76
  76. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +9 -4
  77. data/app/views/alchemy/admin/layoutpages/_layoutpage.html.erb +1 -1
  78. data/app/views/alchemy/admin/layoutpages/index.html.erb +1 -1
  79. data/app/views/alchemy/admin/pages/_external_link.html.erb +9 -4
  80. data/app/views/alchemy/admin/pages/configure.html.erb +22 -12
  81. data/app/views/alchemy/admin/pages/edit.html.erb +40 -40
  82. data/app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb +9 -0
  83. data/app/views/alchemy/admin/pictures/edit.html.erb +1 -1
  84. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +11 -2
  85. data/app/views/alchemy/admin/tags/_radio_tag.html.erb +6 -0
  86. data/app/views/alchemy/admin/tags/_tag.html.erb +29 -0
  87. data/app/views/alchemy/admin/tags/edit.html.erb +41 -0
  88. data/app/views/alchemy/admin/tags/index.html.erb +46 -0
  89. data/app/views/alchemy/admin/tags/new.html.erb +16 -0
  90. data/app/views/alchemy/admin/users/_table.html.erb +18 -10
  91. data/app/views/alchemy/admin/users/_user.html.erb +2 -1
  92. data/app/views/alchemy/admin/users/index.html.erb +2 -1
  93. data/app/views/alchemy/elements/_article_view.html.erb +1 -1
  94. data/app/views/alchemy/essences/_essence_link_editor.html.erb +23 -0
  95. data/app/views/alchemy/essences/_essence_link_view.html.erb +0 -0
  96. data/app/views/alchemy/essences/_essence_picture_tools.html.erb +1 -1
  97. data/app/views/alchemy/essences/_essence_text_editor.html.erb +1 -9
  98. data/app/views/alchemy/essences/_linkable_essence_tools.html.erb +19 -0
  99. data/app/views/layouts/alchemy/admin.html.erb +1 -1
  100. data/config/alchemy/elements.yml +2 -0
  101. data/config/alchemy/modules.yml +12 -0
  102. data/config/alchemy/page_layouts.yml +2 -0
  103. data/config/authorization_rules.rb +2 -0
  104. data/config/locales/alchemy.de.yml +36 -5
  105. data/config/locales/alchemy.en.yml +3 -0
  106. data/config/routes.rb +6 -4
  107. data/db/migrate/20121026100815_alchemy_two_point_three.rb +0 -36
  108. data/db/migrate/20121113115120_create_alchemy_essence_links.rb +13 -0
  109. data/db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb +7 -0
  110. data/db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb +5 -0
  111. data/db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb +9 -0
  112. data/lib/alchemy/engine.rb +1 -1
  113. data/lib/alchemy/resource.rb +1 -1
  114. data/lib/alchemy/resources_helper.rb +1 -1
  115. data/lib/alchemy/upgrader.rb +17 -0
  116. data/lib/alchemy/version.rb +1 -1
  117. data/lib/alchemy_cms.rb +1 -0
  118. data/lib/rails/generators/alchemy/base.rb +41 -0
  119. data/lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt +10 -3
  120. data/lib/rails/generators/alchemy/elements/elements_generator.rb +6 -14
  121. data/lib/rails/generators/alchemy/elements/templates/editor.html.erb +8 -6
  122. data/lib/rails/generators/alchemy/elements/templates/editor.html.haml +13 -0
  123. data/lib/rails/generators/alchemy/elements/templates/editor.html.slim +13 -0
  124. data/lib/rails/generators/alchemy/elements/templates/view.html.erb +4 -4
  125. data/lib/rails/generators/alchemy/elements/templates/view.html.haml +15 -0
  126. data/lib/rails/generators/alchemy/elements/templates/view.html.slim +15 -0
  127. data/lib/rails/generators/alchemy/essence/essence_generator.rb +1 -1
  128. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +2 -3
  129. data/lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb +4 -13
  130. data/lib/rails/generators/alchemy/page_layouts/templates/layout.html.haml +1 -0
  131. data/lib/rails/generators/alchemy/page_layouts/templates/layout.html.slim +1 -0
  132. data/spec/controllers/pages_controller_spec.rb +41 -34
  133. data/spec/dummy/app/views/layouts/application.html.erb +51 -0
  134. data/spec/dummy/db/migrate/20121026100815_alchemy_two_point_three.rb +0 -36
  135. data/spec/dummy/db/migrate/20121113115120_create_alchemy_essence_links.rb +13 -0
  136. data/spec/dummy/db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb +7 -0
  137. data/spec/dummy/db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb +5 -0
  138. data/spec/dummy/db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb +9 -0
  139. data/spec/dummy/db/schema.rb +24 -45
  140. data/spec/helpers/elements_block_helper_spec.rb +135 -0
  141. data/spec/helpers/elements_helper_spec.rb +43 -5
  142. data/spec/integration/pages_controller_spec.rb +22 -18
  143. data/spec/integration/translation_integration_spec.rb +0 -15
  144. data/spec/models/element_spec.rb +44 -36
  145. data/spec/models/essence_picture_spec.rb +22 -6
  146. data/spec/models/page_spec.rb +28 -0
  147. data/spec/spec_helper.rb +8 -3
  148. data/spec/support/ci/install_phantomjs +6 -0
  149. metadata +82 -40
  150. data/app/assets/images/alchemy/gui/navi-tab.png +0 -0
  151. data/app/assets/images/alchemy/gui/shading_90.png +0 -0
  152. data/app/assets/images/alchemy/jquery-sb/select_arrow.gif +0 -0
  153. data/app/assets/images/alchemy/jquery-sb/select_arrow_bg.gif +0 -0
  154. data/app/assets/images/alchemy/jquery-sb/select_arrow_bg_hover.gif +0 -0
  155. data/app/assets/javascripts/alchemy/alchemy.preview.js +0 -98
  156. data/app/assets/stylesheets/alchemy/alchemy.css +0 -21
  157. data/app/controllers/alchemy/admin/essence_audios_controller.rb +0 -12
  158. data/app/controllers/alchemy/admin/essence_flashes_controller.rb +0 -12
  159. data/app/controllers/alchemy/admin/essence_videos_controller.rb +0 -12
  160. data/app/models/alchemy/essence_audio.rb +0 -14
  161. data/app/models/alchemy/essence_flash.rb +0 -12
  162. data/app/models/alchemy/essence_video.rb +0 -20
  163. data/app/views/alchemy/essences/_essence_audio_editor.html.erb +0 -1
  164. data/app/views/alchemy/essences/_essence_audio_view.html.erb +0 -33
  165. data/app/views/alchemy/essences/_essence_flash_editor.html.erb +0 -1
  166. data/app/views/alchemy/essences/_essence_flash_view.html.erb +0 -26
  167. data/app/views/alchemy/essences/_essence_video_editor.html.erb +0 -1
  168. data/app/views/alchemy/essences/_essence_video_view.html.erb +0 -35
@@ -113,12 +113,14 @@ module Alchemy
113
113
  PagesController.any_instance.stub(:multi_language?).and_return(true)
114
114
  end
115
115
 
116
- it "should redirect to url with nested language code if no language params are given" do
117
- visit "/alchemy/#{public_page_1.urlname}"
118
- page.current_path.should == "/alchemy/#{public_page_1.language_code}/#{public_page_1.urlname}"
116
+ context "if no language params are given" do
117
+ it "should redirect to url with nested language code" do
118
+ visit "/alchemy/#{public_page_1.urlname}"
119
+ page.current_path.should == "/alchemy/#{public_page_1.language_code}/#{public_page_1.urlname}"
120
+ end
119
121
  end
120
122
 
121
- context "should redirect to public child" do
123
+ context "if requested page is unpublished" do
122
124
 
123
125
  before do
124
126
  public_page_1.update_attributes(:public => false, :name => 'Not Public', :urlname => '')
@@ -126,26 +128,32 @@ module Alchemy
126
128
  Config.stub!(:get) { |arg| arg == :url_nesting ? false : Config.parameter(arg) }
127
129
  end
128
130
 
129
- it "if requested page is unpublished" do
131
+ it "should redirect to public child" do
130
132
  visit "/alchemy/#{default_language.code}/not-public"
131
133
  page.current_path.should == "/alchemy/#{default_language.code}/public-child"
132
134
  end
133
135
 
134
- it "with nested language code, if requested page is unpublished and url has no language code" do
135
- visit '/alchemy/not-public'
136
- page.current_path.should == "/alchemy/#{default_language.code}/public-child"
136
+ context "and url has no language code" do
137
+ it "should redirect to url of public child with language code of default language" do
138
+ visit '/alchemy/not-public'
139
+ page.current_path.should == "/alchemy/#{default_language.code}/public-child"
140
+ end
137
141
  end
138
142
 
139
143
  end
140
144
 
141
- it "should redirect to pages url with default language, if requested url is index url" do
142
- visit '/alchemy/'
143
- page.current_path.should == "/alchemy/#{default_language.code}/home"
145
+ context "if requested url is index url" do
146
+ it "should redirect to pages url with default language" do
147
+ visit '/alchemy/'
148
+ page.current_path.should == "/alchemy/#{default_language.code}/home"
149
+ end
144
150
  end
145
151
 
146
- it "should redirect to pages url with default language, if requested url is only the language code" do
147
- visit "/alchemy/#{default_language.code}"
148
- page.current_path.should == "/alchemy/#{default_language.code}/home"
152
+ context "if requested url is only the language code" do
153
+ it "should redirect to pages url with default language" do
154
+ visit "/alchemy/#{default_language.code}"
155
+ page.current_path.should == "/alchemy/#{default_language.code}/home"
156
+ end
149
157
  end
150
158
 
151
159
  context "requested url is only the urlname" do
@@ -301,10 +309,6 @@ module Alchemy
301
309
  within("title") { page.should have_content("404") }
302
310
  end
303
311
 
304
- it "should render the layout" do
305
- page.should have_selector("#language_select")
306
- end
307
-
308
312
  end
309
313
 
310
314
  it "should render public/404.html when it exists" do
@@ -38,19 +38,4 @@ describe "Translation integration" do
38
38
 
39
39
  end
40
40
 
41
- context "with translated header" do
42
-
43
- before do
44
- # Hack my hack.... OMG
45
- Rails.stub(:env).and_return('foo')
46
- Capybara.current_driver = :rack_test_translated_header
47
- end
48
-
49
- it "should use the browsers language setting if no other parameter is given" do
50
- visit root_path
51
- ::I18n.locale.should == :de
52
- end
53
-
54
- end
55
-
56
41
  end
@@ -199,32 +199,19 @@ module Alchemy
199
199
  end
200
200
 
201
201
  describe "#trash" do
202
+ let(:element) { FactoryGirl.create(:element, :page_id => 1, :cell_id => 1) }
203
+ let(:trashed_element) { element.trash ; element }
204
+ subject { trashed_element }
202
205
 
203
- before(:each) do
204
- @element = FactoryGirl.create(:element, :page_id => 1, :cell_id => 1)
205
- @element.trash
206
- end
207
-
208
- it "should remove the elements position" do
209
- @element.position.should == nil
210
- end
211
-
212
- it "should set the public state to false" do
213
- @element.public?.should == false
214
- end
215
-
216
- it "should not remove the page_id" do
217
- @element.page_id.should == 1
218
- end
219
-
220
- it "should not remove the cell_id" do
221
- @element.cell_id.should == 1
222
- end
206
+ it { should_not be_public }
207
+ its(:position) { should be_nil }
208
+ specify { expect { element.trash }.to_not change(element, :page_id) }
209
+ specify { expect { element.trash }.to_not change(element, :cell_id) }
223
210
 
224
211
  it "it should be possible to trash more than one element from the same page" do
225
212
  trashed_element_2 = FactoryGirl.create(:element, :page_id => 1)
226
213
  trashed_element_2.trash
227
- Element.trashed.should include(@element, trashed_element_2)
214
+ Element.trashed.should include(trashed_element, trashed_element_2)
228
215
  end
229
216
 
230
217
  end
@@ -259,26 +246,19 @@ module Alchemy
259
246
  end
260
247
 
261
248
  describe "#all_contents_by_type" do
262
-
263
- before(:each) do
264
- @element = FactoryGirl.create(:element)
265
- @contents = @element.contents.select { |c| c.essence_type == 'Alchemy::EssenceText' }
266
- end
249
+ let(:element) { FactoryGirl.create(:element, create_contents_after_create: true) }
250
+ let(:expected_contents) { element.contents.essence_texts }
267
251
 
268
252
  context "with namespaced essence type" do
269
-
270
- it "should return content by passing a essence type" do
271
- @element.all_contents_by_type('Alchemy::EssenceText').should == @contents
272
- end
273
-
253
+ subject { element.all_contents_by_type('Alchemy::EssenceText') }
254
+ it { should_not be_empty }
255
+ it('should return the correct list of essences') { should == expected_contents }
274
256
  end
275
257
 
276
258
  context "without namespaced essence type" do
277
-
278
- it "should return content by passing a essence type" do
279
- @element.all_contents_by_type('EssenceText').should == @contents
280
- end
281
-
259
+ subject { element.all_contents_by_type('EssenceText') }
260
+ it { should_not be_empty }
261
+ it('should return the correct list of essences') { should == expected_contents }
282
262
  end
283
263
 
284
264
  end
@@ -400,5 +380,33 @@ module Alchemy
400
380
 
401
381
  end
402
382
 
383
+ describe '#taggable?' do
384
+
385
+ context "description has 'taggable' key with true value" do
386
+ it "should return true" do
387
+ element = FactoryGirl.build(:element)
388
+ element.stub(:description).and_return({'name' => 'article', 'taggable' => true})
389
+ element.taggable?.should be_true
390
+ end
391
+ end
392
+
393
+ context "description has 'taggable' key with foo value" do
394
+ it "should return false" do
395
+ element = FactoryGirl.build(:element)
396
+ element.stub(:description).and_return({'name' => 'article', 'taggable' => 'foo'})
397
+ element.taggable?.should be_false
398
+ end
399
+ end
400
+
401
+ context "description has no 'taggable' key" do
402
+ it "should return false" do
403
+ element = FactoryGirl.build(:element)
404
+ element.stub(:description).and_return({'name' => 'article'})
405
+ element.taggable?.should be_false
406
+ end
407
+ end
408
+
409
+ end
410
+
403
411
  end
404
412
  end
@@ -1,11 +1,27 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Alchemy::EssencePicture do
3
+ module Alchemy
4
+ describe EssencePicture do
4
5
 
5
- it "should not store negative values for crop_from" do
6
- essence = Alchemy::EssencePicture.new(:crop_from => '-1x100')
7
- essence.save!
8
- essence.crop_from.should == "0x100"
9
- end
6
+ it "should not store negative values for crop values" do
7
+ essence = EssencePicture.new(:crop_from => '-1x100', :crop_size => '-20x30')
8
+ essence.save!
9
+ essence.crop_from.should == "0x100"
10
+ essence.crop_size.should == "0x30"
11
+ end
12
+
13
+ it "should not store float values for crop values" do
14
+ essence = EssencePicture.new(:crop_from => '0.05x104.5', :crop_size => '99.5x203.4')
15
+ essence.save!
16
+ essence.crop_from.should == "0x105"
17
+ essence.crop_size.should == "100x203"
18
+ end
10
19
 
20
+ it "should convert newlines in caption into <br/>s" do
21
+ essence = EssencePicture.new(:caption => "hello\nkitty")
22
+ essence.save!
23
+ essence.caption.should == "hello<br/>kitty"
24
+ end
25
+
26
+ end
11
27
  end
@@ -618,5 +618,33 @@ module Alchemy
618
618
 
619
619
  end
620
620
 
621
+ describe '#taggable?' do
622
+
623
+ context "definition has 'taggable' key with true value" do
624
+ it "should return true" do
625
+ page = FactoryGirl.build(:page)
626
+ page.stub(:definition).and_return({'name' => 'standard', 'taggable' => true})
627
+ page.taggable?.should be_true
628
+ end
629
+ end
630
+
631
+ context "definition has 'taggable' key with foo value" do
632
+ it "should return false" do
633
+ page = FactoryGirl.build(:page)
634
+ page.stub(:definition).and_return({'name' => 'standard', 'taggable' => 'foo'})
635
+ page.taggable?.should be_false
636
+ end
637
+ end
638
+
639
+ context "definition has no 'taggable' key" do
640
+ it "should return false" do
641
+ page = FactoryGirl.build(:page)
642
+ page.stub(:definition).and_return({'name' => 'standard'})
643
+ page.taggable?.should be_false
644
+ end
645
+ end
646
+
647
+ end
648
+
621
649
  end
622
650
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,11 @@
1
+ begin
2
+ require 'simplecov'
3
+ SimpleCov.start('rails') do
4
+ add_filter "/spec/"
5
+ end
6
+ rescue LoadError => e
7
+ end
8
+
1
9
  begin
2
10
  require 'spork'
3
11
  rescue LoadError => e
@@ -31,9 +39,6 @@ def configure
31
39
  Capybara.default_driver = :rack_test
32
40
  Capybara.default_selector = :css
33
41
  Capybara.javascript_driver = :poltergeist
34
- Capybara.register_driver(:rack_test_translated_header) do |app|
35
- Capybara::RackTest::Driver.new(app, :headers => { 'HTTP_ACCEPT_LANGUAGE' => 'de' })
36
- end
37
42
 
38
43
  # Load support files
39
44
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+
3
+ version=phantomjs-1.7.0-linux-i686
4
+ wget http://phantomjs.googlecode.com/files/$version.tar.bz2
5
+ tar xjf $version.tar.bz2
6
+ mv $version phantomjs
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.beta2
4
+ version: 2.4.rc1
5
5
  prerelease: 4
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-11-08 00:00:00.000000000 Z
15
+ date: 2012-11-20 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
@@ -286,6 +286,22 @@ dependencies:
286
286
  - - ~>
287
287
  - !ruby/object:Gem::Version
288
288
  version: 0.1.3
289
+ - !ruby/object:Gem::Dependency
290
+ name: rails3-jquery-autocomplete
291
+ requirement: !ruby/object:Gem::Requirement
292
+ none: false
293
+ requirements:
294
+ - - ~>
295
+ - !ruby/object:Gem::Version
296
+ version: 1.0.10
297
+ type: :runtime
298
+ prerelease: false
299
+ version_requirements: !ruby/object:Gem::Requirement
300
+ none: false
301
+ requirements:
302
+ - - ~>
303
+ - !ruby/object:Gem::Version
304
+ version: 1.0.10
289
305
  - !ruby/object:Gem::Dependency
290
306
  name: bumpy
291
307
  requirement: !ruby/object:Gem::Requirement
@@ -402,14 +418,9 @@ files:
402
418
  - alchemy_cms.gemspec
403
419
  - app/assets/images/alchemy/ajax_loader.gif
404
420
  - app/assets/images/alchemy/alchemy-logo.png
405
- - app/assets/images/alchemy/gui/navi-tab.png
406
- - app/assets/images/alchemy/gui/shading_90.png
407
421
  - app/assets/images/alchemy/gui/toggle.png
408
422
  - app/assets/images/alchemy/icons.png
409
423
  - app/assets/images/alchemy/image_loader.gif
410
- - app/assets/images/alchemy/jquery-sb/select_arrow.gif
411
- - app/assets/images/alchemy/jquery-sb/select_arrow_bg.gif
412
- - app/assets/images/alchemy/jquery-sb/select_arrow_bg_hover.gif
413
424
  - app/assets/images/alchemy/lupe.cur
414
425
  - app/assets/images/alchemy/placeholder.png
415
426
  - app/assets/images/alchemy/shading.png
@@ -418,6 +429,7 @@ files:
418
429
  - app/assets/images/alchemy/ui-icons_666666_256x240.png
419
430
  - app/assets/images/sassy-ie-overlay.png
420
431
  - app/assets/javascripts/alchemy/alchemy.base.js
432
+ - app/assets/javascripts/alchemy/alchemy.browser.js.coffee
421
433
  - app/assets/javascripts/alchemy/alchemy.buttons.js.coffee
422
434
  - app/assets/javascripts/alchemy/alchemy.custom.js
423
435
  - app/assets/javascripts/alchemy/alchemy.datepicker.js
@@ -437,7 +449,7 @@ files:
437
449
  - app/assets/javascripts/alchemy/alchemy.menubar.js
438
450
  - app/assets/javascripts/alchemy/alchemy.onload.js.coffee
439
451
  - app/assets/javascripts/alchemy/alchemy.page_sorter.js
440
- - app/assets/javascripts/alchemy/alchemy.preview.js
452
+ - app/assets/javascripts/alchemy/alchemy.preview.js.coffee
441
453
  - app/assets/javascripts/alchemy/alchemy.preview_window.js
442
454
  - app/assets/javascripts/alchemy/alchemy.routes.js.erb
443
455
  - app/assets/javascripts/alchemy/alchemy.swf_upload.js
@@ -448,30 +460,34 @@ files:
448
460
  - app/assets/javascripts/tiny_mce/plugins/alchemy_link/editor_plugin.js
449
461
  - app/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/de.js
450
462
  - app/assets/javascripts/tiny_mce/plugins/alchemy_link/langs/en.js
451
- - app/assets/stylesheets/alchemy/_defaults.scss
452
- - app/assets/stylesheets/alchemy/alchemy.css
453
- - app/assets/stylesheets/alchemy/archive.css.scss
454
- - app/assets/stylesheets/alchemy/base.css.scss
455
- - app/assets/stylesheets/alchemy/custom.css
456
- - app/assets/stylesheets/alchemy/dashboard.css.scss
457
- - app/assets/stylesheets/alchemy/elements.css.scss
458
- - app/assets/stylesheets/alchemy/errors.css.scss
459
- - app/assets/stylesheets/alchemy/flash.css.scss
460
- - app/assets/stylesheets/alchemy/form_elements.css.scss
461
- - app/assets/stylesheets/alchemy/frame.css.scss
462
- - app/assets/stylesheets/alchemy/icons.css.scss
463
- - app/assets/stylesheets/alchemy/jquery-ui.alchemy.css.scss
464
- - app/assets/stylesheets/alchemy/login.css.scss
463
+ - app/assets/stylesheets/alchemy/admin.css.scss
464
+ - app/assets/stylesheets/alchemy/archive.scss
465
+ - app/assets/stylesheets/alchemy/base.scss
466
+ - app/assets/stylesheets/alchemy/custom.scss
467
+ - app/assets/stylesheets/alchemy/dashboard.scss
468
+ - app/assets/stylesheets/alchemy/defaults.scss
469
+ - app/assets/stylesheets/alchemy/elements.scss
470
+ - app/assets/stylesheets/alchemy/errors.scss
471
+ - app/assets/stylesheets/alchemy/flash.scss
472
+ - app/assets/stylesheets/alchemy/form_elements.scss
473
+ - app/assets/stylesheets/alchemy/frame.scss
474
+ - app/assets/stylesheets/alchemy/icons.scss
475
+ - app/assets/stylesheets/alchemy/jquery-ui.scss
476
+ - app/assets/stylesheets/alchemy/login.scss
465
477
  - app/assets/stylesheets/alchemy/menubar.css.scss
466
- - app/assets/stylesheets/alchemy/modules.css.scss
467
- - app/assets/stylesheets/alchemy/pagination.css.scss
468
- - app/assets/stylesheets/alchemy/print.css
469
- - app/assets/stylesheets/alchemy/sitemap.css.scss
478
+ - app/assets/stylesheets/alchemy/mixins.scss
479
+ - app/assets/stylesheets/alchemy/modules.scss
480
+ - app/assets/stylesheets/alchemy/notices.scss
481
+ - app/assets/stylesheets/alchemy/pagination.scss
482
+ - app/assets/stylesheets/alchemy/print.css.scss
483
+ - app/assets/stylesheets/alchemy/search.scss
484
+ - app/assets/stylesheets/alchemy/sitemap.scss
470
485
  - app/assets/stylesheets/alchemy/standard_set.css
471
- - app/assets/stylesheets/alchemy/tables.css.scss
486
+ - app/assets/stylesheets/alchemy/tables.scss
472
487
  - app/assets/stylesheets/alchemy/tinymce_content.css.scss
473
488
  - app/assets/stylesheets/alchemy/tinymce_dialog.css.scss
474
- - app/assets/stylesheets/alchemy/upload.css.scss
489
+ - app/assets/stylesheets/alchemy/upload.scss
490
+ - app/assets/stylesheets/alchemy/variables.scss
475
491
  - app/assets/stylesheets/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss
476
492
  - app/controllers/alchemy/admin/attachments_controller.rb
477
493
  - app/controllers/alchemy/admin/base_controller.rb
@@ -479,16 +495,14 @@ files:
479
495
  - app/controllers/alchemy/admin/contents_controller.rb
480
496
  - app/controllers/alchemy/admin/dashboard_controller.rb
481
497
  - app/controllers/alchemy/admin/elements_controller.rb
482
- - app/controllers/alchemy/admin/essence_audios_controller.rb
483
498
  - app/controllers/alchemy/admin/essence_files_controller.rb
484
- - app/controllers/alchemy/admin/essence_flashes_controller.rb
485
499
  - app/controllers/alchemy/admin/essence_pictures_controller.rb
486
- - app/controllers/alchemy/admin/essence_videos_controller.rb
487
500
  - app/controllers/alchemy/admin/languages_controller.rb
488
501
  - app/controllers/alchemy/admin/layoutpages_controller.rb
489
502
  - app/controllers/alchemy/admin/pages_controller.rb
490
503
  - app/controllers/alchemy/admin/pictures_controller.rb
491
504
  - app/controllers/alchemy/admin/resources_controller.rb
505
+ - app/controllers/alchemy/admin/tags_controller.rb
492
506
  - app/controllers/alchemy/admin/trash_controller.rb
493
507
  - app/controllers/alchemy/admin/users_controller.rb
494
508
  - app/controllers/alchemy/attachments_controller.rb
@@ -506,6 +520,7 @@ files:
506
520
  - app/helpers/alchemy/admin/pages_helper.rb
507
521
  - app/helpers/alchemy/admin/pictures_helper.rb
508
522
  - app/helpers/alchemy/base_helper.rb
523
+ - app/helpers/alchemy/elements_block_helper.rb
509
524
  - app/helpers/alchemy/elements_helper.rb
510
525
  - app/helpers/alchemy/essences_helper.rb
511
526
  - app/helpers/alchemy/pages_helper.rb
@@ -519,23 +534,22 @@ files:
519
534
  - app/models/alchemy/clipboard_spec.rb
520
535
  - app/models/alchemy/content.rb
521
536
  - app/models/alchemy/element.rb
522
- - app/models/alchemy/essence_audio.rb
523
537
  - app/models/alchemy/essence_boolean.rb
524
538
  - app/models/alchemy/essence_date.rb
525
539
  - app/models/alchemy/essence_file.rb
526
- - app/models/alchemy/essence_flash.rb
527
540
  - app/models/alchemy/essence_html.rb
541
+ - app/models/alchemy/essence_link.rb
528
542
  - app/models/alchemy/essence_picture.rb
529
543
  - app/models/alchemy/essence_richtext.rb
530
544
  - app/models/alchemy/essence_select.rb
531
545
  - app/models/alchemy/essence_text.rb
532
- - app/models/alchemy/essence_video.rb
533
546
  - app/models/alchemy/folded_page.rb
534
547
  - app/models/alchemy/language.rb
535
548
  - app/models/alchemy/language/code.rb
536
549
  - app/models/alchemy/message.rb
537
550
  - app/models/alchemy/page.rb
538
551
  - app/models/alchemy/picture.rb
552
+ - app/models/alchemy/tag.rb
539
553
  - app/models/alchemy/user.rb
540
554
  - app/models/alchemy/user_session.rb
541
555
  - app/sweepers/alchemy/content_sweeper.rb
@@ -613,6 +627,7 @@ files:
613
627
  - app/views/alchemy/admin/pages/sort.js.erb
614
628
  - app/views/alchemy/admin/pages/unlock.js.erb
615
629
  - app/views/alchemy/admin/pages/update.js.erb
630
+ - app/views/alchemy/admin/partials/_autocomplete_tag_list.html.erb
616
631
  - app/views/alchemy/admin/partials/_flash.html.erb
617
632
  - app/views/alchemy/admin/partials/_flash_notices.html.erb
618
633
  - app/views/alchemy/admin/partials/_flash_upload.html.erb
@@ -647,6 +662,11 @@ files:
647
662
  - app/views/alchemy/admin/resources/edit.html.erb
648
663
  - app/views/alchemy/admin/resources/index.html.erb
649
664
  - app/views/alchemy/admin/resources/new.html.erb
665
+ - app/views/alchemy/admin/tags/_radio_tag.html.erb
666
+ - app/views/alchemy/admin/tags/_tag.html.erb
667
+ - app/views/alchemy/admin/tags/edit.html.erb
668
+ - app/views/alchemy/admin/tags/index.html.erb
669
+ - app/views/alchemy/admin/tags/new.html.erb
650
670
  - app/views/alchemy/admin/trash/clear.js.coffee
651
671
  - app/views/alchemy/admin/trash/index.html.erb
652
672
  - app/views/alchemy/admin/users/_table.html.erb
@@ -702,18 +722,16 @@ files:
702
722
  - app/views/alchemy/elements/_view_not_found.html.erb
703
723
  - app/views/alchemy/elements/show.html.erb
704
724
  - app/views/alchemy/elements/show.js.erb
705
- - app/views/alchemy/essences/_essence_audio_editor.html.erb
706
- - app/views/alchemy/essences/_essence_audio_view.html.erb
707
725
  - app/views/alchemy/essences/_essence_boolean_editor.html.erb
708
726
  - app/views/alchemy/essences/_essence_boolean_view.html.erb
709
727
  - app/views/alchemy/essences/_essence_date_editor.html.erb
710
728
  - app/views/alchemy/essences/_essence_date_view.html.erb
711
729
  - app/views/alchemy/essences/_essence_file_editor.html.erb
712
730
  - app/views/alchemy/essences/_essence_file_view.html.erb
713
- - app/views/alchemy/essences/_essence_flash_editor.html.erb
714
- - app/views/alchemy/essences/_essence_flash_view.html.erb
715
731
  - app/views/alchemy/essences/_essence_html_editor.html.erb
716
732
  - app/views/alchemy/essences/_essence_html_view.html.erb
733
+ - app/views/alchemy/essences/_essence_link_editor.html.erb
734
+ - app/views/alchemy/essences/_essence_link_view.html.erb
717
735
  - app/views/alchemy/essences/_essence_picture_editor.html.erb
718
736
  - app/views/alchemy/essences/_essence_picture_tools.html.erb
719
737
  - app/views/alchemy/essences/_essence_picture_view.html.erb
@@ -723,8 +741,7 @@ files:
723
741
  - app/views/alchemy/essences/_essence_select_view.html.erb
724
742
  - app/views/alchemy/essences/_essence_text_editor.html.erb
725
743
  - app/views/alchemy/essences/_essence_text_view.html.erb
726
- - app/views/alchemy/essences/_essence_video_editor.html.erb
727
- - app/views/alchemy/essences/_essence_video_view.html.erb
744
+ - app/views/alchemy/essences/_linkable_essence_tools.html.erb
728
745
  - app/views/alchemy/messages/contact_form_mail.text.erb
729
746
  - app/views/alchemy/messages/new.html.erb
730
747
  - app/views/alchemy/navigation/_image_link.html.erb
@@ -780,6 +797,10 @@ files:
780
797
  - config/locales/alchemy.en.yml
781
798
  - config/routes.rb
782
799
  - db/migrate/20121026100815_alchemy_two_point_three.rb
800
+ - db/migrate/20121113115120_create_alchemy_essence_links.rb
801
+ - db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb
802
+ - db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb
803
+ - db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb
783
804
  - lib/alchemy/auth_engine.rb
784
805
  - lib/alchemy/authentication_helpers.rb
785
806
  - lib/alchemy/capistrano.rb
@@ -802,16 +823,23 @@ files:
802
823
  - lib/extensions/array.rb
803
824
  - lib/extensions/hash.rb
804
825
  - lib/middleware/flash_session_cookie.rb
826
+ - lib/rails/generators/alchemy/base.rb
805
827
  - lib/rails/generators/alchemy/deploy_script/deploy_script_generator.rb
806
828
  - lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt
807
829
  - lib/rails/generators/alchemy/elements/elements_generator.rb
808
830
  - lib/rails/generators/alchemy/elements/templates/editor.html.erb
831
+ - lib/rails/generators/alchemy/elements/templates/editor.html.haml
832
+ - lib/rails/generators/alchemy/elements/templates/editor.html.slim
809
833
  - lib/rails/generators/alchemy/elements/templates/view.html.erb
834
+ - lib/rails/generators/alchemy/elements/templates/view.html.haml
835
+ - lib/rails/generators/alchemy/elements/templates/view.html.slim
810
836
  - lib/rails/generators/alchemy/essence/essence_generator.rb
811
837
  - lib/rails/generators/alchemy/essence/templates/editor.html.erb
812
838
  - lib/rails/generators/alchemy/essence/templates/view.html.erb
813
839
  - lib/rails/generators/alchemy/page_layouts/page_layouts_generator.rb
814
840
  - lib/rails/generators/alchemy/page_layouts/templates/layout.html.erb
841
+ - lib/rails/generators/alchemy/page_layouts/templates/layout.html.haml
842
+ - lib/rails/generators/alchemy/page_layouts/templates/layout.html.slim
815
843
  - lib/rails/generators/alchemy/plugin/files/translation.pot
816
844
  - lib/rails/generators/alchemy/plugin/files/translation_de.po
817
845
  - lib/rails/generators/alchemy/plugin/files/translation_en.po
@@ -856,6 +884,7 @@ files:
856
884
  - spec/dummy/app/mailers/.gitkeep
857
885
  - spec/dummy/app/models/event.rb
858
886
  - spec/dummy/app/views/layouts/.gitkeep
887
+ - spec/dummy/app/views/layouts/application.html.erb
859
888
  - spec/dummy/config.ru
860
889
  - spec/dummy/config/application.rb
861
890
  - spec/dummy/config/authorization_rules.rb
@@ -874,6 +903,10 @@ files:
874
903
  - spec/dummy/config/routes.rb
875
904
  - spec/dummy/db/migrate/20121026100815_alchemy_two_point_three.rb
876
905
  - spec/dummy/db/migrate/20121026104128_create_events.rb
906
+ - spec/dummy/db/migrate/20121113115120_create_alchemy_essence_links.rb
907
+ - spec/dummy/db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb
908
+ - spec/dummy/db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb
909
+ - spec/dummy/db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb
877
910
  - spec/dummy/db/schema.rb
878
911
  - spec/dummy/lib/assets/.gitkeep
879
912
  - spec/dummy/public/404.html
@@ -889,6 +922,7 @@ files:
889
922
  - spec/helpers/admin/elements_helper_spec.rb
890
923
  - spec/helpers/admin/essences_helper_spec.rb
891
924
  - spec/helpers/base_helper_spec.rb
925
+ - spec/helpers/elements_block_helper_spec.rb
892
926
  - spec/helpers/elements_helper_spec.rb
893
927
  - spec/helpers/essences_helper_spec.rb
894
928
  - spec/helpers/pages_helper_spec.rb
@@ -933,6 +967,7 @@ files:
933
967
  - spec/support/alchemy/controller_hacks.rb
934
968
  - spec/support/alchemy/specs_helpers.rb
935
969
  - spec/support/alchemy/test_tweaks.rb
970
+ - spec/support/ci/install_phantomjs
936
971
  - spec/support/image.png
937
972
  - spec/url_helpers_spec.rb
938
973
  - vendor/assets/images/Jcrop.gif
@@ -1090,6 +1125,7 @@ test_files:
1090
1125
  - spec/dummy/app/mailers/.gitkeep
1091
1126
  - spec/dummy/app/models/event.rb
1092
1127
  - spec/dummy/app/views/layouts/.gitkeep
1128
+ - spec/dummy/app/views/layouts/application.html.erb
1093
1129
  - spec/dummy/config.ru
1094
1130
  - spec/dummy/config/application.rb
1095
1131
  - spec/dummy/config/authorization_rules.rb
@@ -1108,6 +1144,10 @@ test_files:
1108
1144
  - spec/dummy/config/routes.rb
1109
1145
  - spec/dummy/db/migrate/20121026100815_alchemy_two_point_three.rb
1110
1146
  - spec/dummy/db/migrate/20121026104128_create_events.rb
1147
+ - spec/dummy/db/migrate/20121113115120_create_alchemy_essence_links.rb
1148
+ - spec/dummy/db/migrate/20121115100736_add_cached_tag_list_to_elements_pages_and_users.rb
1149
+ - spec/dummy/db/migrate/20121116140636_add_cached_tag_list_to_alchemy_attachments.rb
1150
+ - spec/dummy/db/migrate/20121116141016_change_alchemy_pictures_tag_list_column.rb
1111
1151
  - spec/dummy/db/schema.rb
1112
1152
  - spec/dummy/lib/assets/.gitkeep
1113
1153
  - spec/dummy/public/404.html
@@ -1123,6 +1163,7 @@ test_files:
1123
1163
  - spec/helpers/admin/elements_helper_spec.rb
1124
1164
  - spec/helpers/admin/essences_helper_spec.rb
1125
1165
  - spec/helpers/base_helper_spec.rb
1166
+ - spec/helpers/elements_block_helper_spec.rb
1126
1167
  - spec/helpers/elements_helper_spec.rb
1127
1168
  - spec/helpers/essences_helper_spec.rb
1128
1169
  - spec/helpers/pages_helper_spec.rb
@@ -1167,6 +1208,7 @@ test_files:
1167
1208
  - spec/support/alchemy/controller_hacks.rb
1168
1209
  - spec/support/alchemy/specs_helpers.rb
1169
1210
  - spec/support/alchemy/test_tweaks.rb
1211
+ - spec/support/ci/install_phantomjs
1170
1212
  - spec/support/image.png
1171
1213
  - spec/url_helpers_spec.rb
1172
1214
  has_rdoc: