alchemy_cms 2.3.2 → 2.4.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. data/.gitignore +1 -2
  2. data/.travis.yml +1 -5
  3. data/Gemfile +4 -4
  4. data/README.md +22 -15
  5. data/alchemy_cms.gemspec +38 -38
  6. data/app/assets/javascripts/alchemy/alchemy.base.js +2 -2
  7. data/app/assets/javascripts/alchemy/alchemy.buttons.js.coffee +31 -0
  8. data/app/assets/javascripts/alchemy/alchemy.dragndrop.js +1 -1
  9. data/app/assets/javascripts/alchemy/alchemy.elements_window.js +24 -15
  10. data/app/assets/javascripts/alchemy/alchemy.gui.js.coffee +9 -3
  11. data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +2 -2
  12. data/app/assets/javascripts/alchemy/alchemy.js +1 -0
  13. data/app/assets/javascripts/alchemy/alchemy.menubar.js +4 -12
  14. data/app/assets/javascripts/alchemy/alchemy.onload.js.coffee +32 -0
  15. data/app/assets/javascripts/alchemy/alchemy.windows.js +4 -4
  16. data/app/assets/stylesheets/alchemy/_defaults.scss +0 -1
  17. data/app/assets/stylesheets/alchemy/alchemy.css +2 -1
  18. data/app/assets/stylesheets/alchemy/base.css.scss +2 -54
  19. data/app/assets/stylesheets/alchemy/elements.css.scss +8 -5
  20. data/app/assets/stylesheets/alchemy/errors.css.scss +51 -0
  21. data/app/assets/stylesheets/alchemy/flash.css.scss +0 -2
  22. data/app/assets/stylesheets/alchemy/form_elements.css.scss +31 -75
  23. data/app/assets/stylesheets/alchemy/icons.css.scss +5 -5
  24. data/app/assets/stylesheets/alchemy/menubar.css.scss +0 -2
  25. data/app/assets/stylesheets/alchemy/sitemap.css.scss +0 -1
  26. data/app/assets/stylesheets/alchemy/tables.css.scss +3 -1
  27. data/app/controllers/alchemy/admin/base_controller.rb +19 -12
  28. data/app/controllers/alchemy/admin/elements_controller.rb +52 -24
  29. data/app/controllers/alchemy/admin/pages_controller.rb +11 -5
  30. data/app/controllers/alchemy/admin/resources_controller.rb +3 -4
  31. data/app/controllers/alchemy/admin/users_controller.rb +1 -0
  32. data/app/controllers/alchemy/base_controller.rb +34 -8
  33. data/app/controllers/alchemy/pictures_controller.rb +16 -1
  34. data/app/controllers/alchemy/user_sessions_controller.rb +6 -1
  35. data/app/helpers/alchemy/base_helper.rb +14 -0
  36. data/app/helpers/alchemy/elements_helper.rb +10 -5
  37. data/app/helpers/alchemy/pages_helper.rb +1 -2
  38. data/app/helpers/alchemy/url_helper.rb +43 -24
  39. data/app/models/alchemy/element.rb +23 -16
  40. data/app/models/alchemy/page.rb +25 -14
  41. data/app/models/alchemy/picture.rb +24 -0
  42. data/app/views/alchemy/admin/contents/create.js.erb +1 -1
  43. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +1 -1
  44. data/app/views/alchemy/admin/elements/create.js.erb +11 -3
  45. data/app/views/alchemy/admin/elements/fold.js.erb +1 -1
  46. data/app/views/alchemy/admin/elements/new.html.erb +1 -1
  47. data/app/views/alchemy/admin/elements/update.js.erb +1 -1
  48. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +1 -1
  49. data/app/views/alchemy/admin/languages/_form.html.erb +1 -1
  50. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -1
  51. data/app/views/alchemy/admin/pages/_page.html.erb +1 -1
  52. data/app/views/alchemy/admin/pages/configure.html.erb +10 -6
  53. data/app/views/alchemy/admin/pages/configure_external.html.erb +1 -1
  54. data/app/views/alchemy/admin/pages/edit.html.erb +1 -2
  55. data/app/views/alchemy/admin/pages/new.html.erb +2 -2
  56. data/app/views/alchemy/admin/pages/update.js.erb +10 -2
  57. data/app/views/alchemy/admin/partials/_sub_navigation_tab.html.erb +5 -5
  58. data/app/views/alchemy/admin/pictures/_filter_bar.html.erb +2 -1
  59. data/app/views/alchemy/admin/pictures/_picture.html.erb +2 -2
  60. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +2 -1
  61. data/app/views/alchemy/admin/pictures/show_in_window.html.erb +3 -2
  62. data/app/views/alchemy/admin/resources/_form.html.erb +1 -1
  63. data/app/views/alchemy/admin/users/_table.html.erb +4 -4
  64. data/app/views/alchemy/admin/users/edit.html.erb +1 -1
  65. data/app/views/alchemy/admin/users/new.html.erb +1 -1
  66. data/app/views/alchemy/base/error_notice.js.erb +1 -1
  67. data/app/views/alchemy/base/remote_errors.js.erb +2 -3
  68. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +10 -7
  69. data/app/views/alchemy/essences/_essence_picture_view.html.erb +24 -21
  70. data/app/views/layouts/alchemy/admin.html.erb +9 -31
  71. data/bin/alchemy +20 -24
  72. data/config/alchemy/config.yml +6 -0
  73. data/config/alchemy/page_layouts.yml +2 -0
  74. data/config/authorization_rules.rb +1 -1
  75. data/config/locales/alchemy.de.yml +3 -0
  76. data/config/locales/alchemy.en.yml +4 -1
  77. data/db/migrate/20121026100815_alchemy_two_point_three.rb +312 -0
  78. data/lib/alchemy/mount_point.rb +9 -3
  79. data/lib/alchemy/page_layout.rb +89 -73
  80. data/lib/alchemy/version.rb +1 -1
  81. data/lib/rails/generators/alchemy/deploy_script/deploy_script_generator.rb +45 -12
  82. data/lib/rails/generators/alchemy/deploy_script/templates/deploy.rb.tt +3 -1
  83. data/lib/rails/generators/alchemy/essence/essence_generator.rb +51 -0
  84. data/lib/rails/generators/alchemy/essence/templates/editor.html.erb +18 -0
  85. data/lib/rails/generators/alchemy/essence/templates/view.html.erb +2 -0
  86. data/lib/rails/templates/alchemy.rb +1 -1
  87. data/lib/tasks/install.rake +57 -2
  88. data/spec/controllers/admin/elements_controller_spec.rb +170 -22
  89. data/spec/controllers/admin/trash_controller_spec.rb +1 -1
  90. data/spec/controllers/admin/users_controller_spec.rb +36 -0
  91. data/spec/controllers/base_controller_spec.rb +12 -1
  92. data/spec/controllers/elements_controller_spec.rb +17 -13
  93. data/spec/controllers/pictures_controller_spec.rb +4 -4
  94. data/spec/dummy/config/application.rb +1 -1
  95. data/spec/dummy/db/migrate/20121026100815_alchemy_two_point_three.rb +312 -0
  96. data/spec/dummy/db/migrate/20121026104128_create_events.rb +19 -0
  97. data/spec/dummy/db/schema.rb +1 -1
  98. data/spec/factories.rb +0 -1
  99. data/spec/helpers/base_helper_spec.rb +48 -0
  100. data/spec/helpers/elements_helper_spec.rb +14 -3
  101. data/spec/helpers/url_helper_spec.rb +8 -3
  102. data/spec/integration/picture_security_spec.rb +35 -0
  103. data/spec/integration/translation_integration_spec.rb +6 -5
  104. data/spec/models/element_spec.rb +5 -5
  105. data/spec/models/page_layout_spec.rb +10 -16
  106. data/spec/models/page_spec.rb +25 -2
  107. data/spec/models/picture_spec.rb +24 -2
  108. data/spec/routing_spec.rb +115 -115
  109. data/spec/support/alchemy/specs_helpers.rb +4 -4
  110. data/{app/assets/images/alchemy → vendor/assets/images}/Jcrop.gif +0 -0
  111. data/vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js +19 -243
  112. data/vendor/assets/javascripts/jquery_plugins/jquery.selectboxit.min.js +1 -0
  113. data/vendor/assets/javascripts/jquery_plugins/jquery.ui.tabspaging.js +6 -6
  114. data/vendor/assets/stylesheets/jquery.Jcrop.min.css +28 -0
  115. metadata +48 -82
  116. data/app/assets/javascripts/alchemy/alchemy.buttons.js +0 -50
  117. data/app/assets/stylesheets/alchemy/jquery.Jcrop.css.scss +0 -54
  118. data/app/helpers/alchemy/pictures_helper.rb +0 -19
  119. data/db/migrate/20100607143125_create_pages.rb +0 -34
  120. data/db/migrate/20100607144254_create_elements.rb +0 -20
  121. data/db/migrate/20100607145256_create_contents.rb +0 -18
  122. data/db/migrate/20100607145719_create_users.rb +0 -32
  123. data/db/migrate/20100607150611_create_pictures.rb +0 -16
  124. data/db/migrate/20100607150812_create_attachments.rb +0 -16
  125. data/db/migrate/20100607153647_create_folded_pages.rb +0 -13
  126. data/db/migrate/20100607161345_create_essence_texts.rb +0 -19
  127. data/db/migrate/20100607162339_create_elements_pages.rb +0 -12
  128. data/db/migrate/20100607193638_create_essence_pictures.rb +0 -23
  129. data/db/migrate/20100607193646_create_essence_richtexts.rb +0 -16
  130. data/db/migrate/20100607193653_create_essence_htmls.rb +0 -13
  131. data/db/migrate/20100609111653_create_essence_dates.rb +0 -13
  132. data/db/migrate/20100609111809_create_essence_files.rb +0 -15
  133. data/db/migrate/20100609111821_create_essence_flashes.rb +0 -16
  134. data/db/migrate/20100609111837_create_essence_videos.rb +0 -18
  135. data/db/migrate/20100616150753_create_essence_audios.rb +0 -17
  136. data/db/migrate/20100812085225_add_crop_from_and_crop_size_to_essence_pictures.rb +0 -11
  137. data/db/migrate/20100909140701_change_essence_htmls_source_column_type.rb +0 -9
  138. data/db/migrate/20101109150312_alter_pages_visible_column_default.rb +0 -9
  139. data/db/migrate/20101109151812_create_languages.rb +0 -19
  140. data/db/migrate/20101216151419_add_language_id_to_pages.rb +0 -27
  141. data/db/migrate/20101216155216_add_index_to_languages.rb +0 -9
  142. data/db/migrate/20101216173323_add_default_to_languages.rb +0 -9
  143. data/db/migrate/20101218130049_add_urlname_index_to_pages.rb +0 -9
  144. data/db/migrate/20110115123343_remove_css_class_default_from_essence_pictures.rb +0 -11
  145. data/db/migrate/20110224105120_change_pages_visible_default.rb +0 -11
  146. data/db/migrate/20110228182659_remove_default_page_layout_from_pages.rb +0 -11
  147. data/db/migrate/20110414163140_remove_display_name_from_elements.rb +0 -11
  148. data/db/migrate/20110511100516_rename_essence_texts_title_to_link_title.rb +0 -9
  149. data/db/migrate/20110529130429_create_cells.rb +0 -14
  150. data/db/migrate/20110529130500_add_cell_id_to_elements.rb +0 -11
  151. data/db/migrate/20110530102804_change_pages_page_layout_column.rb +0 -11
  152. data/db/migrate/20110707190728_add_render_size_to_essence_pictures.rb +0 -9
  153. data/db/migrate/20110711142057_change_open_link_in_new_window_to_link_target.rb +0 -19
  154. data/db/migrate/20110919110451_add_default_role_to_users.rb +0 -9
  155. data/db/migrate/20111116125112_namespace_alchemy_models.rb +0 -23
  156. data/db/migrate/20120216135355_add_country_code_to_languages.rb +0 -9
  157. data/db/migrate/20120608085509_create_alchemy_essence_selects.rb +0 -11
  158. data/db/migrate/20120611221734_create_alchemy_essence_booleans.rb +0 -11
  159. data/db/migrate/20120704181529_add_upload_hash_to_alchemy_picture.rb +0 -5
  160. data/db/migrate/20120705214247_acts_as_taggable_on_migration.rb +0 -28
  161. data/db/migrate/20120728185830_add_cached_tag_list_to_alchemy_pictures.rb +0 -5
  162. data/db/migrate/20120831135441_set_alchemy_languages_country_code_default_to_empty_string.rb +0 -9
  163. data/spec/helpers/pictures_helper_spec.rb +0 -14
  164. data/vendor/assets/javascripts/jquery_plugins/jquery.selectBoxIt.js +0 -1909
@@ -64,7 +64,7 @@ module Alchemy
64
64
  context "#clear" do
65
65
 
66
66
  it "should destroy all containing elements" do
67
- post :clear, {:page_id => page.id}
67
+ post :clear, {:page_id => page.id, :format => :js}
68
68
  Element.trashed.should be_empty
69
69
  end
70
70
 
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alchemy::Admin::UsersController do
4
+
5
+ describe "POST update" do
6
+
7
+ let!(:user) { FactoryGirl.create(:admin_user) }
8
+
9
+ before do
10
+ activate_authlogic
11
+ Alchemy::UserSession.create user
12
+ end
13
+
14
+ it "assigns user to @user" do
15
+ post :update, :id => user.id, :user => {}, :format => :js
16
+ assigns(:user).should eq(user)
17
+ end
18
+
19
+ context "if user is permitted to update roles" do
20
+ it "updates the user including role" do
21
+ controller.stub(:permitted_to?).with(:update_role).and_return { true }
22
+ Alchemy::User.any_instance.should_receive(:update_attributes).with({'role' => 'Administrator'})
23
+ post :update, :id => user.id, :user => {:role => 'Administrator'}, :format => :js
24
+ end
25
+ end
26
+
27
+ context "if the user is not permitted to update roles" do
28
+ it "updates user without role" do
29
+ controller.stub(:permitted_to?).with(:update_role).and_return { false }
30
+ Alchemy::User.any_instance.should_receive(:update_attributes).with({})
31
+ post :update, :id => user.id, :user => {'role' => 'Administrator'}, :format => :js
32
+ end
33
+ end
34
+
35
+ end
36
+ end
@@ -51,13 +51,24 @@ module Alchemy
51
51
 
52
52
  context "for language that does not exist" do
53
53
 
54
- it "should set the language to default" do
54
+ before do
55
55
  controller.stub!(:params).and_return({:lang => 'fo'})
56
56
  controller.send :set_language
57
+ end
58
+
59
+ it "should set the language to default" do
57
60
  controller.session[:language_id].should == default_language.id
58
61
  controller.session[:language_code].should == default_language.code
59
62
  end
60
63
 
64
+ it "should set the rails locale to default language code" do
65
+ ::I18n.locale.should == default_language.code.to_sym
66
+ end
67
+
68
+ it "should not set the rails locale to requested locale" do
69
+ ::I18n.locale.should_not == :fo
70
+ end
71
+
61
72
  end
62
73
 
63
74
  end
@@ -6,22 +6,26 @@ module Alchemy
6
6
  let(:page) { FactoryGirl.create(:public_page, :restricted => true) }
7
7
  let(:element) { FactoryGirl.create(:element, :page => page, :name => 'download') }
8
8
 
9
- it "should not be possible to see restricted elements" do
10
- get :show, :id => element.id
11
- response.status.should == 302
12
- response.should redirect_to(login_path)
13
- end
14
-
15
- context "as a registered user" do
9
+ describe '#show' do
16
10
 
17
- before do
18
- activate_authlogic
19
- UserSession.create(FactoryGirl.create(:registered_user))
11
+ it "should not return restricted elements" do
12
+ get :show, :id => element.id
13
+ response.status.should == 302
14
+ response.should redirect_to(login_path)
20
15
  end
21
16
 
22
- it "should be possible to see restricted elements" do
23
- get :show, :id => element.id
24
- response.status.should == 200
17
+ context "for registered user" do
18
+
19
+ before do
20
+ activate_authlogic
21
+ UserSession.create(FactoryGirl.create(:registered_user))
22
+ end
23
+
24
+ it "should render restricted elements" do
25
+ get :show, :id => element.id
26
+ response.status.should == 200
27
+ end
28
+
25
29
  end
26
30
 
27
31
  end
@@ -16,7 +16,7 @@ module Alchemy
16
16
 
17
17
  context "Requesting a picture that is not assigned with any page" do
18
18
  it "should render the picture" do
19
- get :show, :id => picture.id, :format => :png
19
+ get :show, :id => picture.id, :format => :png, :sh => picture.security_token
20
20
  response.status.should == 200
21
21
  end
22
22
  end
@@ -35,7 +35,7 @@ module Alchemy
35
35
 
36
36
  context "as guest user" do
37
37
  it "should render the picture" do
38
- get :show, :id => picture.id, :format => :png
38
+ get :show, :id => picture.id, :format => :png, :sh => picture.security_token
39
39
  response.status.should == 200
40
40
  end
41
41
  end
@@ -53,7 +53,7 @@ module Alchemy
53
53
  context "as guest user" do
54
54
 
55
55
  it "should not render the picture, but redirect to login path" do
56
- get :show, :id => picture.id
56
+ get :show, :id => picture.id, :sh => picture.security_token
57
57
  response.status.should == 302
58
58
  response.should redirect_to(login_path)
59
59
  end
@@ -68,7 +68,7 @@ module Alchemy
68
68
  end
69
69
 
70
70
  it "should render the picture" do
71
- get :show, :id => picture.id, :format => :png
71
+ get :show, :id => picture.id, :format => :png, :sh => picture.security_token
72
72
  response.status.should == 200
73
73
  end
74
74
 
@@ -37,7 +37,7 @@ module Dummy
37
37
 
38
38
  # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
39
39
  # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
40
- config.i18n.default_locale = :en
40
+ # config.i18n.default_locale = :de
41
41
 
42
42
  # Configure the default encoding used in templates for Ruby 1.9.
43
43
  config.encoding = "utf-8"
@@ -0,0 +1,312 @@
1
+ # This is a compressed migration for creating all Alchemy 2.3 tables at once.
2
+ #
3
+ # === Notice
4
+ #
5
+ # In order to upgrade from an old version of Alchemy, you have to run all migrations from
6
+ # each version you missed up to the version you want to upgrade to, before running this migration.
7
+ #
8
+ class AlchemyTwoPointThree < ActiveRecord::Migration
9
+ def up
10
+ # Do not run if Alchemy tables are already present
11
+ return if table_exists?(:alchemy_pages)
12
+
13
+ create_table "alchemy_attachments", :force => true do |t|
14
+ t.string "name"
15
+ t.string "filename"
16
+ t.string "content_type"
17
+ t.integer "size"
18
+ t.integer "creator_id"
19
+ t.integer "updater_id"
20
+ t.datetime "created_at", :null => false
21
+ t.datetime "updated_at", :null => false
22
+ end
23
+
24
+ create_table "alchemy_cells", :force => true do |t|
25
+ t.integer "page_id"
26
+ t.string "name"
27
+ t.datetime "created_at", :null => false
28
+ t.datetime "updated_at", :null => false
29
+ end
30
+
31
+ create_table "alchemy_contents", :force => true do |t|
32
+ t.string "name"
33
+ t.string "essence_type"
34
+ t.integer "essence_id"
35
+ t.integer "element_id"
36
+ t.integer "position"
37
+ t.datetime "created_at", :null => false
38
+ t.datetime "updated_at", :null => false
39
+ t.integer "creator_id"
40
+ t.integer "updater_id"
41
+ end
42
+
43
+ add_index "alchemy_contents", ["element_id", "position"], :name => "index_contents_on_element_id_and_position"
44
+
45
+ create_table "alchemy_elements", :force => true do |t|
46
+ t.string "name"
47
+ t.integer "position"
48
+ t.integer "page_id"
49
+ t.boolean "public", :default => true
50
+ t.boolean "folded", :default => false
51
+ t.boolean "unique", :default => false
52
+ t.datetime "created_at", :null => false
53
+ t.datetime "updated_at", :null => false
54
+ t.integer "creator_id"
55
+ t.integer "updater_id"
56
+ t.integer "cell_id"
57
+ end
58
+
59
+ add_index "alchemy_elements", ["page_id", "position"], :name => "index_elements_on_page_id_and_position"
60
+
61
+ create_table "alchemy_elements_alchemy_pages", :id => false, :force => true do |t|
62
+ t.integer "element_id"
63
+ t.integer "page_id"
64
+ end
65
+
66
+ create_table "alchemy_essence_audios", :force => true do |t|
67
+ t.integer "attachment_id"
68
+ t.integer "width", :default => 400
69
+ t.integer "height", :default => 300
70
+ t.boolean "show_eq", :default => true
71
+ t.boolean "show_navigation", :default => true
72
+ t.integer "creator_id"
73
+ t.integer "updater_id"
74
+ t.datetime "created_at", :null => false
75
+ t.datetime "updated_at", :null => false
76
+ end
77
+
78
+ create_table "alchemy_essence_booleans", :force => true do |t|
79
+ t.boolean "value"
80
+ t.datetime "created_at", :null => false
81
+ t.datetime "updated_at", :null => false
82
+ t.integer "creator_id"
83
+ t.integer "updater_id"
84
+ end
85
+
86
+ add_index "alchemy_essence_booleans", ["value"], :name => "index_alchemy_essence_booleans_on_value"
87
+
88
+ create_table "alchemy_essence_dates", :force => true do |t|
89
+ t.datetime "date"
90
+ t.integer "creator_id"
91
+ t.integer "updater_id"
92
+ t.datetime "created_at", :null => false
93
+ t.datetime "updated_at", :null => false
94
+ end
95
+
96
+ create_table "alchemy_essence_files", :force => true do |t|
97
+ t.integer "attachment_id"
98
+ t.string "title"
99
+ t.string "css_class"
100
+ t.integer "creator_id"
101
+ t.integer "updater_id"
102
+ t.datetime "created_at", :null => false
103
+ t.datetime "updated_at", :null => false
104
+ end
105
+
106
+ create_table "alchemy_essence_flashes", :force => true do |t|
107
+ t.integer "attachment_id"
108
+ t.integer "width", :default => 400
109
+ t.integer "height", :default => 300
110
+ t.string "player_version", :default => "9.0.28"
111
+ t.integer "creator_id"
112
+ t.integer "updater_id"
113
+ t.datetime "created_at", :null => false
114
+ t.datetime "updated_at", :null => false
115
+ end
116
+
117
+ create_table "alchemy_essence_htmls", :force => true do |t|
118
+ t.text "source"
119
+ t.integer "creator_id"
120
+ t.integer "updater_id"
121
+ t.datetime "created_at", :null => false
122
+ t.datetime "updated_at", :null => false
123
+ end
124
+
125
+ create_table "alchemy_essence_pictures", :force => true do |t|
126
+ t.integer "picture_id"
127
+ t.string "caption"
128
+ t.string "title"
129
+ t.string "alt_tag"
130
+ t.string "link"
131
+ t.string "link_class_name"
132
+ t.string "link_title"
133
+ t.string "css_class"
134
+ t.string "link_target"
135
+ t.integer "creator_id"
136
+ t.integer "updater_id"
137
+ t.datetime "created_at", :null => false
138
+ t.datetime "updated_at", :null => false
139
+ t.string "crop_from"
140
+ t.string "crop_size"
141
+ t.string "render_size"
142
+ end
143
+
144
+ create_table "alchemy_essence_richtexts", :force => true do |t|
145
+ t.text "body"
146
+ t.text "stripped_body"
147
+ t.boolean "do_not_index", :default => false
148
+ t.boolean "public"
149
+ t.integer "creator_id"
150
+ t.integer "updater_id"
151
+ t.datetime "created_at", :null => false
152
+ t.datetime "updated_at", :null => false
153
+ end
154
+
155
+ create_table "alchemy_essence_selects", :force => true do |t|
156
+ t.string "value"
157
+ t.datetime "created_at", :null => false
158
+ t.datetime "updated_at", :null => false
159
+ t.integer "creator_id"
160
+ t.integer "updater_id"
161
+ end
162
+
163
+ add_index "alchemy_essence_selects", ["value"], :name => "index_alchemy_essence_selects_on_value"
164
+
165
+ create_table "alchemy_essence_texts", :force => true do |t|
166
+ t.text "body"
167
+ t.string "link"
168
+ t.string "link_title"
169
+ t.string "link_class_name"
170
+ t.boolean "public", :default => false
171
+ t.boolean "do_not_index", :default => false
172
+ t.string "link_target"
173
+ t.integer "creator_id"
174
+ t.integer "updater_id"
175
+ t.datetime "created_at", :null => false
176
+ t.datetime "updated_at", :null => false
177
+ end
178
+
179
+ create_table "alchemy_essence_videos", :force => true do |t|
180
+ t.integer "attachment_id"
181
+ t.integer "width"
182
+ t.integer "height"
183
+ t.boolean "allow_fullscreen", :default => true
184
+ t.boolean "auto_play", :default => false
185
+ t.boolean "show_navigation", :default => true
186
+ t.integer "creator_id"
187
+ t.integer "updater_id"
188
+ t.datetime "created_at", :null => false
189
+ t.datetime "updated_at", :null => false
190
+ end
191
+
192
+ create_table "alchemy_folded_pages", :force => true do |t|
193
+ t.integer "page_id"
194
+ t.integer "user_id"
195
+ t.boolean "folded", :default => false
196
+ end
197
+
198
+ create_table "alchemy_languages", :force => true do |t|
199
+ t.string "name"
200
+ t.string "language_code"
201
+ t.string "frontpage_name"
202
+ t.string "page_layout", :default => "intro"
203
+ t.boolean "public", :default => false
204
+ t.datetime "created_at", :null => false
205
+ t.datetime "updated_at", :null => false
206
+ t.integer "creator_id"
207
+ t.integer "updater_id"
208
+ t.boolean "default", :default => false
209
+ t.string "country_code", :default => "", :null => false
210
+ end
211
+
212
+ add_index "alchemy_languages", ["language_code", "country_code"], :name => "index_alchemy_languages_on_language_code_and_country_code"
213
+ add_index "alchemy_languages", ["language_code"], :name => "index_alchemy_languages_on_language_code"
214
+
215
+ create_table "alchemy_pages", :force => true do |t|
216
+ t.string "name"
217
+ t.string "urlname"
218
+ t.string "title"
219
+ t.string "language_code"
220
+ t.boolean "language_root"
221
+ t.string "page_layout"
222
+ t.text "meta_keywords"
223
+ t.text "meta_description"
224
+ t.integer "lft"
225
+ t.integer "rgt"
226
+ t.integer "parent_id"
227
+ t.integer "depth"
228
+ t.boolean "visible", :default => false
229
+ t.boolean "public", :default => false
230
+ t.boolean "locked", :default => false
231
+ t.integer "locked_by"
232
+ t.boolean "restricted", :default => false
233
+ t.boolean "robot_index", :default => true
234
+ t.boolean "robot_follow", :default => true
235
+ t.boolean "sitemap", :default => true
236
+ t.boolean "layoutpage", :default => false
237
+ t.datetime "created_at", :null => false
238
+ t.datetime "updated_at", :null => false
239
+ t.integer "creator_id"
240
+ t.integer "updater_id"
241
+ t.integer "language_id"
242
+ end
243
+
244
+ add_index "alchemy_pages", ["language_id"], :name => "index_pages_on_language_id"
245
+ add_index "alchemy_pages", ["parent_id", "lft"], :name => "index_pages_on_parent_id_and_lft"
246
+ add_index "alchemy_pages", ["urlname"], :name => "index_pages_on_urlname"
247
+
248
+ create_table "alchemy_pictures", :force => true do |t|
249
+ t.string "name"
250
+ t.string "image_filename"
251
+ t.integer "image_width"
252
+ t.integer "image_height"
253
+ t.datetime "created_at", :null => false
254
+ t.datetime "updated_at", :null => false
255
+ t.integer "creator_id"
256
+ t.integer "updater_id"
257
+ t.string "upload_hash"
258
+ t.string "cached_tag_list"
259
+ end
260
+
261
+ create_table "alchemy_users", :force => true do |t|
262
+ t.string "firstname"
263
+ t.string "lastname"
264
+ t.string "login"
265
+ t.string "email"
266
+ t.string "gender"
267
+ t.string "role", :default => "registered"
268
+ t.string "language"
269
+ t.string "crypted_password", :limit => 128, :default => "", :null => false
270
+ t.string "password_salt", :limit => 128, :default => "", :null => false
271
+ t.integer "login_count", :default => 0, :null => false
272
+ t.integer "failed_login_count", :default => 0, :null => false
273
+ t.datetime "last_request_at"
274
+ t.datetime "current_login_at"
275
+ t.datetime "last_login_at"
276
+ t.string "current_login_ip"
277
+ t.string "last_login_ip"
278
+ t.string "persistence_token", :null => false
279
+ t.string "single_access_token", :null => false
280
+ t.string "perishable_token", :null => false
281
+ t.datetime "created_at", :null => false
282
+ t.datetime "updated_at", :null => false
283
+ t.integer "creator_id"
284
+ t.integer "updater_id"
285
+ end
286
+
287
+ add_index "alchemy_users", ["perishable_token"], :name => "index_users_on_perishable_token"
288
+
289
+ # Skip migrations for acts-as-taggable-on, if the tables are already present
290
+ unless table_exists?(:taggings)
291
+ create_table "taggings", :force => true do |t|
292
+ t.integer "tag_id"
293
+ t.integer "taggable_id"
294
+ t.string "taggable_type"
295
+ t.integer "tagger_id"
296
+ t.string "tagger_type"
297
+ t.string "context"
298
+ t.datetime "created_at"
299
+ end
300
+
301
+ add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
302
+ add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
303
+ end
304
+
305
+ unless table_exists?(:tags)
306
+ create_table "tags", :force => true do |t|
307
+ t.string "name"
308
+ end
309
+ end
310
+
311
+ end
312
+ end