alchemy_cms 2.1.beta6 → 2.1.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -1
- data/Gemfile +10 -2
- data/Guardfile +16 -0
- data/README.md +3 -3
- data/Rakefile +0 -5
- data/alchemy_cms.gemspec +1 -9
- data/app/assets/javascripts/alchemy/alchemy.base.js +5 -4
- data/app/assets/javascripts/alchemy/{alchemy.dragndrop.js.erb → alchemy.dragndrop.js} +0 -0
- data/app/assets/javascripts/alchemy/alchemy.elements_window.js +96 -0
- data/app/assets/javascripts/alchemy/alchemy.image_cropper.js +48 -50
- data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +41 -0
- data/app/assets/javascripts/alchemy/alchemy.js +2 -0
- data/app/assets/javascripts/alchemy/alchemy.menubar.js +55 -0
- data/app/assets/javascripts/alchemy/alchemy.preview.js +94 -139
- data/app/assets/javascripts/alchemy/alchemy.preview_window.js +98 -0
- data/app/assets/javascripts/alchemy/alchemy.windows.js +1 -174
- data/app/assets/javascripts/alchemy/menubar.js +2 -0
- data/app/assets/javascripts/alchemy/preview.js +2 -1
- data/app/assets/stylesheets/alchemy/_defaults.scss +7 -8
- data/app/assets/stylesheets/alchemy/base.css.scss +29 -33
- data/app/assets/stylesheets/alchemy/elements.css.scss +4 -4
- data/app/assets/stylesheets/alchemy/jquery-ui.alchemy.css.scss +1 -1
- data/app/assets/stylesheets/alchemy/jquery.Jcrop.css.scss +1 -1
- data/app/assets/stylesheets/alchemy/jquery.sb.css.scss +19 -4
- data/app/assets/stylesheets/alchemy/menubar.css.scss +85 -0
- data/app/assets/stylesheets/alchemy/standard_set.css +3 -5
- data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +1 -1
- data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +1 -1
- data/app/controllers/alchemy/admin/attachments_controller.rb +2 -18
- data/app/controllers/alchemy/admin/base_controller.rb +1 -1
- data/app/controllers/alchemy/admin/elements_controller.rb +2 -2
- data/app/controllers/alchemy/admin/essence_files_controller.rb +4 -2
- data/app/controllers/alchemy/admin/pictures_controller.rb +6 -20
- data/app/controllers/alchemy/admin/resources_controller.rb +7 -5
- data/app/controllers/alchemy/base_controller.rb +14 -4
- data/app/controllers/alchemy/messages_controller.rb +4 -4
- data/app/controllers/alchemy/pages_controller.rb +51 -32
- data/app/controllers/alchemy/pictures_controller.rb +0 -3
- data/app/controllers/alchemy/user_sessions_controller.rb +1 -1
- data/app/helpers/alchemy/admin/base_helper.rb +6 -4
- data/app/helpers/alchemy/base_helper.rb +26 -0
- data/app/helpers/alchemy/pages_helper.rb +42 -22
- data/app/models/alchemy/attachment.rb +10 -2
- data/app/models/alchemy/cell.rb +1 -0
- data/app/models/alchemy/content.rb +8 -6
- data/app/models/alchemy/element.rb +1 -1
- data/app/models/alchemy/essence_audio.rb +1 -8
- data/app/models/alchemy/essence_date.rb +2 -9
- data/app/models/alchemy/essence_file.rb +1 -8
- data/app/models/alchemy/essence_flash.rb +0 -7
- data/app/models/alchemy/essence_html.rb +1 -8
- data/app/models/alchemy/essence_picture.rb +0 -11
- data/app/models/alchemy/essence_richtext.rb +4 -12
- data/app/models/alchemy/essence_text.rb +1 -13
- data/app/models/alchemy/essence_video.rb +1 -8
- data/app/models/alchemy/page.rb +28 -22
- data/app/models/alchemy/picture.rb +19 -0
- data/app/sweepers/alchemy/pages_sweeper.rb +17 -6
- data/app/sweepers/alchemy/pictures_sweeper.rb +1 -3
- data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +2 -2
- data/app/views/alchemy/admin/attachments/_attachment.html.erb +1 -1
- data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +2 -2
- data/app/views/alchemy/admin/attachments/_files_list.html.erb +13 -11
- data/app/views/alchemy/admin/attachments/create.js.erb +1 -1
- data/app/views/alchemy/admin/attachments/edit.html.erb +2 -2
- data/app/views/alchemy/admin/elements/_new_element_form.html.erb +1 -2
- data/app/views/alchemy/admin/elements/new.html.erb +1 -1
- data/app/views/alchemy/admin/essence_files/edit.html.erb +32 -32
- data/app/views/alchemy/admin/essence_pictures/crop.html.erb +29 -29
- data/app/views/alchemy/admin/essence_pictures/update.js.erb +13 -12
- data/app/views/alchemy/admin/pages/_create_language_form.html.erb +4 -1
- data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -1
- data/app/views/alchemy/admin/pages/edit.html.erb +8 -8
- data/app/views/alchemy/admin/pages/index.html.erb +1 -1
- data/app/views/alchemy/admin/pages/new.html.erb +1 -1
- data/app/views/alchemy/admin/pages/update.js.erb +19 -12
- data/app/views/alchemy/admin/pictures/_picture.html.erb +1 -1
- data/app/views/alchemy/admin/pictures/_pictures_list.html.erb +8 -6
- data/app/views/alchemy/admin/pictures/show_in_window.html.erb +6 -1
- data/app/views/alchemy/admin/resources/_table.html.erb +1 -1
- data/app/views/alchemy/admin/users/_table.html.erb +13 -13
- data/app/views/alchemy/admin/users/_user.html.erb +1 -1
- data/app/views/alchemy/admin/users/index.html.erb +2 -2
- data/app/views/alchemy/elements/_contactform_view.html.erb +78 -78
- data/app/views/alchemy/elements/_download_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_download_view.html.erb +3 -0
- data/app/views/alchemy/essences/_essence_date_editor.html.erb +1 -1
- data/app/views/alchemy/essences/_essence_file_editor.html.erb +1 -0
- data/app/views/alchemy/essences/_essence_file_view.html.erb +6 -2
- data/app/views/alchemy/essences/_essence_picture_editor.html.erb +3 -2
- data/app/views/alchemy/essences/_essence_picture_view.html.erb +1 -1
- data/app/views/alchemy/navigation/_link.html.erb +1 -2
- data/app/views/alchemy/notifications/admin_user_created.text.erb +7 -7
- data/app/views/alchemy/notifications/registered_user_created.text.erb +5 -5
- data/app/views/alchemy/user_sessions/login.html.erb +34 -35
- data/app/views/layouts/alchemy/login.html.erb +3 -8
- data/app/views/layouts/alchemy/pages.html.erb +1 -0
- data/bin/alchemy +43 -75
- data/config/alchemy/config.yml +10 -0
- data/config/alchemy/elements.yml +5 -0
- data/config/alchemy/page_layouts.yml +1 -1
- data/config/locales/alchemy.de.yml +21 -8
- data/config/locales/alchemy.en.yml +20 -4
- data/config/routes.rb +25 -20
- data/db/migrate/{20111116125112_namespace_models.rb → 20111116125112_namespace_alchemy_models.rb} +1 -1
- data/lib/alchemy/capistrano.rb +4 -17
- data/lib/alchemy/engine.rb +2 -0
- data/lib/alchemy/essence.rb +29 -41
- data/lib/alchemy/i18n.rb +1 -1
- data/lib/alchemy/mount_point.rb +10 -0
- data/lib/alchemy/page_layout.rb +7 -7
- data/lib/alchemy/seeder.rb +85 -47
- data/lib/alchemy/upgrader.rb +115 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy_cms.rb +4 -3
- data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +6 -2
- data/lib/tasks/ferret.rake +12 -0
- data/lib/tasks/install.rake +16 -105
- data/lib/tasks/routes.rake +29 -0
- data/lib/tasks/upgrade.rake +5 -67
- data/spec/controllers/admin/pages_controller_spec.rb +1 -1
- data/spec/controllers/pages_controller_spec.rb +31 -0
- data/spec/factories.rb +24 -15
- data/spec/helpers/admin/base_helper_spec.rb +0 -7
- data/spec/helpers/pages_helper_spec.rb +54 -29
- data/spec/helpers/url_helpers_spec.rb +40 -0
- data/spec/integration/admin/pages_controller_spec.rb +3 -3
- data/spec/integration/pages_controller_spec.rb +80 -6
- data/spec/integration/security_spec.rb +2 -2
- data/spec/models/content_spec.rb +24 -0
- data/spec/models/page_spec.rb +174 -47
- data/spec/models/picture_spec.rb +54 -0
- data/spec/page_layout_spec.rb +2 -2
- data/spec/routing_spec.rb +205 -1
- data/spec/spec_helper.rb +53 -32
- metadata +51 -46
- data/lib/alchemy/file_utilz.rb +0 -73
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
:title => t('create_user'),
|
|
8
8
|
:overlay_options => {
|
|
9
9
|
:title => t('create_user'),
|
|
10
|
-
:size => "
|
|
10
|
+
:size => "384x450"
|
|
11
11
|
},
|
|
12
12
|
:if_permitted_to => [:new, :alchemy_admin_users]
|
|
13
13
|
}
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
<div class="info">
|
|
37
37
|
<%= render_icon('info') %>
|
|
38
|
-
<%= t('No users found
|
|
38
|
+
<%= t('No users found') %>
|
|
39
39
|
</div>
|
|
40
40
|
|
|
41
41
|
<%- end -%>
|
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
<%= form_for(@message ||= Message.new, :html => {:id => "contact", "data-alchemy-element" => (@preview_mode ? element.id : nil)}) do |f| %>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
1
|
+
<%= form_for(@message ||= Alchemy::Message.new, :html => {:id => "contact", "data-alchemy-element" => (@preview_mode ? element.id : nil)}) do |f| %>
|
|
2
|
+
<%= f.error_messages %>
|
|
3
|
+
<%= f.hidden_field "contact_form_id", :value => element.id %>
|
|
4
|
+
<%= hidden_field_tag "mail_to", params[:mail_to] %>
|
|
5
|
+
<table class="contactform">
|
|
6
|
+
<tr>
|
|
7
|
+
<td class="label">
|
|
8
|
+
<%= f.label :salutation, t('contactform.labels.salutation') %>
|
|
9
|
+
</td>
|
|
10
|
+
<td class="field">
|
|
11
|
+
<%= f.select(
|
|
12
|
+
:salutation,
|
|
13
|
+
[
|
|
14
|
+
[t('contactform.labels.mr')],
|
|
15
|
+
[t('contactform.labels.mrs')]
|
|
16
|
+
],
|
|
17
|
+
:prompt => t('contactform.labels.choose'),
|
|
18
|
+
:class => "select"
|
|
19
|
+
) %>
|
|
20
|
+
</td>
|
|
21
|
+
</tr>
|
|
22
|
+
<tr>
|
|
23
|
+
<td class="label">
|
|
24
|
+
<%= f.label :firstname, t('contactform.labels.firstname') %>
|
|
25
|
+
</td>
|
|
26
|
+
<td class="field">
|
|
27
|
+
<%= f.text_field(:firstname, :class => "field") %>
|
|
28
|
+
</td>
|
|
29
|
+
</tr>
|
|
30
|
+
<tr>
|
|
31
|
+
<td class="label">
|
|
32
|
+
<%= f.label :lastname, (t('contactform.labels.lastname') + '<small>*</small>').html_safe %>
|
|
33
|
+
</td>
|
|
34
|
+
<td class="field">
|
|
35
|
+
<%= f.text_field(:lastname, :class => "field") %>
|
|
36
|
+
</td>
|
|
37
|
+
</tr>
|
|
38
|
+
<tr>
|
|
39
|
+
<td class="label">
|
|
40
|
+
<%= f.label :address, t('contactform.labels.address') %>
|
|
41
|
+
</td>
|
|
42
|
+
<td class="field">
|
|
43
|
+
<%= f.text_field :address, :class => 'field' %>
|
|
44
|
+
</td>
|
|
45
|
+
</tr>
|
|
46
|
+
<tr>
|
|
47
|
+
<td class="label">
|
|
48
|
+
<%= f.label :zip, t('contactform.labels.zip') %>
|
|
49
|
+
</td>
|
|
50
|
+
<td class="field">
|
|
51
|
+
<%= f.text_field :zip, :class => 'field short' %>
|
|
52
|
+
<%= f.text_field :city, :class => 'field medium' %>
|
|
53
|
+
</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<tr>
|
|
56
|
+
<td class="label">
|
|
57
|
+
<%= f.label :phone, t('contactform.labels.phone') %>
|
|
58
|
+
</td>
|
|
59
|
+
<td class="field">
|
|
60
|
+
<%= f.text_field :phone, :class => 'field' %>
|
|
61
|
+
</td>
|
|
62
|
+
</tr>
|
|
63
|
+
<tr>
|
|
64
|
+
<td class="label">
|
|
65
|
+
<%= f.label :email, (t('contactform.labels.email') + '<small>*</small>').html_safe %>
|
|
66
|
+
</td>
|
|
67
|
+
<td class="field">
|
|
68
|
+
<%= f.text_field :email, :class => 'field' %>
|
|
69
|
+
</td>
|
|
70
|
+
</tr>
|
|
71
|
+
</table>
|
|
72
|
+
<div id="message">
|
|
73
|
+
<%= f.text_area :message %>
|
|
74
|
+
</div>
|
|
75
|
+
<p class="foot_notice">*) <%= t('contactform.labels.mandatory_fields') %></p>
|
|
76
|
+
<p class="right">
|
|
77
|
+
<%= f.button t('contactform.labels.send'), :name => nil, :class => 'button' %>
|
|
78
|
+
</p>
|
|
79
79
|
<% end %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= render_essence_editor_by_name(element, 'file') %>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<div class="content_editor" id="<%= content_dom_id(content) %>">
|
|
2
2
|
<label><%= render_content_name(content) %></label>
|
|
3
3
|
<%= datetime_select(
|
|
4
|
-
content.
|
|
4
|
+
"contents[content_#{content.id}]",
|
|
5
5
|
:date,
|
|
6
6
|
:default => content.ingredient || Date.today,
|
|
7
7
|
:start_year => options[:start_year],
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
<%= content.ingredient.name rescue ("←" + t('assign_file_from_archive')).html_safe %>
|
|
29
29
|
</div>
|
|
30
30
|
<%- unless content.ingredient.nil? -%>
|
|
31
|
+
<%= hidden_field_tag content.form_field_name(:attachment_id), content.ingredient.id %>
|
|
31
32
|
<div class="essence_file_tools">
|
|
32
33
|
<%= link_to_overlay_window("",
|
|
33
34
|
alchemy.admin_attachments_path(
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
<%= link_to(
|
|
2
2
|
h(content.essence.attachment.name),
|
|
3
|
-
alchemy.download_attachment_path(
|
|
3
|
+
alchemy.download_attachment_path(
|
|
4
|
+
:id => content.essence.attachment.id,
|
|
5
|
+
:name => content.essence.attachment.urlname,
|
|
6
|
+
:format => content.essence.attachment.suffix
|
|
7
|
+
),
|
|
4
8
|
:class => "file_link #{content.essence.css_class.blank? ? "" : content.essence.css_class}",
|
|
5
9
|
:title => "#{content.essence.title.blank? ? content.essence.attachment.filename : content.essence.title}"
|
|
6
|
-
) if content.essence.attachment %>
|
|
10
|
+
) if content.essence.attachment %>
|
|
@@ -30,11 +30,12 @@
|
|
|
30
30
|
<div class="thumbnail_background">
|
|
31
31
|
<%= image_tag(
|
|
32
32
|
alchemy.thumbnail_path(
|
|
33
|
-
:id => content.ingredient,
|
|
33
|
+
:id => content.ingredient.id,
|
|
34
34
|
:size => content.ingredient.cropped_thumbnail_size(content.essence.render_size.blank? ? options[:image_size] : content.essence.render_size),
|
|
35
35
|
:crop_from => content.essence.crop_from.blank? ? nil : content.essence.crop_from,
|
|
36
36
|
:crop_size => content.essence.crop_size.blank? ? nil : content.essence.crop_size,
|
|
37
|
-
:crop => content.essence.crop_size.blank? && content.essence.crop_from.blank? ? 'crop' : nil
|
|
37
|
+
:crop => content.essence.crop_size.blank? && content.essence.crop_from.blank? ? 'crop' : nil,
|
|
38
|
+
:name => content.ingredient.urlname
|
|
38
39
|
),
|
|
39
40
|
:alt => content.ingredient.name,
|
|
40
41
|
:class => 'img_paddingtop',
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
:crop_size => options[:crop] && !content.essence.crop_size.blank? ? content.essence.crop_size : nil,
|
|
11
11
|
:upsample => options[:upsample],
|
|
12
12
|
:padding => options[:padding],
|
|
13
|
-
:format =>
|
|
13
|
+
:format => options[:format],
|
|
14
14
|
:effects => options[:effects].blank? ? nil : options[:effects]
|
|
15
15
|
),
|
|
16
16
|
{
|
|
@@ -6,10 +6,9 @@
|
|
|
6
6
|
:target => '_blank'
|
|
7
7
|
) -%>
|
|
8
8
|
<%- else -%>
|
|
9
|
-
<%- link_path = @preview_mode ? 'javascript:void(0)' : alchemy.show_page_path(:urlname => page.urlname, :lang => multi_language? ? page.language.code : nil) -%>
|
|
10
9
|
<%= link_to(
|
|
11
10
|
h(page.name),
|
|
12
|
-
|
|
11
|
+
@preview_mode ? 'javascript:void(0)' : show_alchemy_page_path(page),
|
|
13
12
|
{
|
|
14
13
|
:class => (page_active?(page) ? 'active' : nil),
|
|
15
14
|
:title => (options[:show_title] ? page.title : nil),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
<%= t('Welcome to Alchemy') %>
|
|
1
|
+
<%= Alchemy::I18n.t('Welcome to Alchemy') %>
|
|
2
2
|
|
|
3
|
-
<%= t('To manage your website open a browser and go to') %>:
|
|
3
|
+
<%= Alchemy::I18n.t('To manage your website open a browser and go to') %>:
|
|
4
4
|
|
|
5
5
|
<%= @url %>
|
|
6
6
|
|
|
7
|
-
<%= t('Your credentials are') %>:
|
|
8
|
-
----------------------
|
|
9
|
-
<%= t('Username') %>: <%= @user.login %>
|
|
10
|
-
<%= t('Password') %>: <%= @user.password %>
|
|
7
|
+
<%= Alchemy::I18n.t('Your credentials are') %>:
|
|
11
8
|
|
|
9
|
+
<%= Alchemy::I18n.t('Username') %>: <%= @user.login %>
|
|
10
|
+
<%= Alchemy::I18n.t('Password') %>: <%= @user.password %>
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
|
|
13
|
+
<%= Alchemy::I18n.t('Have much fun with Alchemy!') %>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<%= Alchemy::I18n.t('
|
|
1
|
+
<%= Alchemy::I18n.t('mailer.new_user_mail.welcome') %>!
|
|
2
2
|
|
|
3
|
-
<%= Alchemy::I18n.t('
|
|
3
|
+
<%= Alchemy::I18n.t('mailer.new_user_mail.login_url_explanation') %>:
|
|
4
4
|
|
|
5
5
|
<%= @url %>
|
|
6
6
|
|
|
7
|
-
<%= Alchemy::I18n.t('
|
|
8
|
-
<%= Alchemy::I18n.t('
|
|
7
|
+
<%= Alchemy::I18n.t('mailer.new_user_mail.username') %>: <%= @user.login %>
|
|
8
|
+
<%= Alchemy::I18n.t('mailer.new_user_mail.password') %>: <%= @user.password %>
|
|
9
9
|
|
|
10
|
-
<%= Alchemy::I18n.t('
|
|
10
|
+
<%= Alchemy::I18n.t('mailer.new_user_mail.greeting') %>
|
|
@@ -1,38 +1,37 @@
|
|
|
1
|
-
<div id="
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
</
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<% end %>
|
|
1
|
+
<div id="login_box">
|
|
2
|
+
<div id="alchemy_greeting">
|
|
3
|
+
<%= image_tag("alchemy/alchemy-logo.png") %>
|
|
4
|
+
<h1><%= flash[:info] %></h1>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="login_signup_box">
|
|
7
|
+
<%= form_for @user_session, :url => {:action => 'login'}, :html => { :id => "login" } do |f| %>
|
|
8
|
+
<%= f.error_messages %>
|
|
9
|
+
<table>
|
|
10
|
+
<tr>
|
|
11
|
+
<td class="label">
|
|
12
|
+
<%= f.label :login %>
|
|
13
|
+
</td>
|
|
14
|
+
<td class="input">
|
|
15
|
+
<%= f.text_field :login, :class => 'thin_border' %>
|
|
16
|
+
</td>
|
|
17
|
+
</tr>
|
|
18
|
+
<tr>
|
|
19
|
+
<td class="label">
|
|
20
|
+
<%= f.label :password %>
|
|
21
|
+
</td>
|
|
22
|
+
<td class="input">
|
|
23
|
+
<%= f.password_field :password, :class => 'thin_border' %>
|
|
24
|
+
</td>
|
|
25
|
+
</tr>
|
|
26
|
+
<tr>
|
|
27
|
+
<td colspan="2" class="submit">
|
|
28
|
+
<%= hidden_field_tag 'user_screensize' %>
|
|
29
|
+
<%= f.button t('login'), :class => 'button', :name => nil %>
|
|
30
|
+
</td>
|
|
31
|
+
</tr>
|
|
32
|
+
</table>
|
|
33
|
+
<% end %>
|
|
34
|
+
</div>
|
|
36
35
|
</div>
|
|
37
36
|
|
|
38
37
|
<%- content_for :javascripts do -%>
|
|
@@ -8,12 +8,9 @@
|
|
|
8
8
|
<%= stylesheet_link_tag('alchemy/print', :media => 'print') %>
|
|
9
9
|
<%= javascript_include_tag('alchemy/alchemy') %>
|
|
10
10
|
</head>
|
|
11
|
-
<body id="alchemy">
|
|
11
|
+
<body id="alchemy" class="login">
|
|
12
12
|
<div id="main_menu">
|
|
13
|
-
<div id="main_navi">
|
|
14
|
-
<%= yield(:navigation) %>
|
|
15
|
-
<%= admin_main_navigation %>
|
|
16
|
-
</div>
|
|
13
|
+
<div id="main_navi"></div>
|
|
17
14
|
<div id="main_menu_background"></div>
|
|
18
15
|
<div id="logout">
|
|
19
16
|
<%= link_to(alchemy.root_path) do %>
|
|
@@ -28,9 +25,7 @@
|
|
|
28
25
|
<%= yield(:javascripts) %>
|
|
29
26
|
<script type="text/javascript" charset="utf-8">
|
|
30
27
|
jQuery(document).ready(function($) {
|
|
31
|
-
|
|
32
|
-
Alchemy.SelectBox('body#alchemy select');
|
|
33
|
-
}
|
|
28
|
+
Alchemy.SelectBox('body#alchemy select');
|
|
34
29
|
});
|
|
35
30
|
</script>
|
|
36
31
|
</body>
|
data/bin/alchemy
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
1
3
|
#!/usr/bin/env ruby
|
|
2
4
|
begin
|
|
3
5
|
require "rubygems"
|
|
4
|
-
require
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
raise LoadError, "Wrong rails version installed. Please run gem install rails -v'~>3.0.10'"
|
|
6
|
+
require 'rails/version'
|
|
7
|
+
RAILS_VERSION = Rails::VERSION::STRING
|
|
8
|
+
if RAILS_VERSION < "3.1"
|
|
9
|
+
raise LoadError, "Wrong rails version installed. Please run gem install rails -v'~>3.1'"
|
|
9
10
|
end
|
|
11
|
+
require "thor"
|
|
12
|
+
require File.join(File.dirname(__FILE__), '..', 'lib/alchemy/version')
|
|
10
13
|
end
|
|
11
14
|
|
|
12
15
|
class AlchemyInstaller < Thor
|
|
@@ -16,39 +19,42 @@ class AlchemyInstaller < Thor
|
|
|
16
19
|
map "-v" => :version
|
|
17
20
|
map "--version" => :version
|
|
18
21
|
|
|
19
|
-
desc "version", "Prints current Alchemy version", :hide => true
|
|
22
|
+
desc "version", "Prints current Alchemy CMS version", :hide => true
|
|
20
23
|
def version
|
|
21
24
|
puts Alchemy::VERSION
|
|
22
25
|
end
|
|
23
26
|
|
|
24
|
-
desc "new PROJECT", "Creates a new Alchemy project."
|
|
27
|
+
desc "new PROJECT", "Creates a new Alchemy CMS project."
|
|
25
28
|
method_option :scm, :type => :string, :aliases => "-s", :desc => "Type of scm to use for this project. Leave blank for none."
|
|
26
29
|
method_option :database, :type => :string, :default => 'mysql', :aliases => "-d", :desc => "Type of database to use for this project. Default mysql."
|
|
27
30
|
def new(project)
|
|
28
|
-
|
|
29
|
-
if yes?("Install Alchemy into ./#{
|
|
31
|
+
@application = project.downcase.strip.gsub(/ /, '_')
|
|
32
|
+
if yes?("Install Alchemy CMS into ./#{@application}? (y/N)")
|
|
30
33
|
|
|
31
34
|
say "Generating new Rails App...", :yellow
|
|
32
35
|
|
|
33
|
-
if system("rails _#{
|
|
34
|
-
|
|
35
|
-
@application = project
|
|
36
|
+
if system("rails _#{RAILS_VERSION}_ new #{@application} -m #{File.join(File.dirname(__FILE__), '..', 'lib', 'rails', 'templates', 'alchemy.rb')} -d #{options[:database]} -JT")
|
|
36
37
|
|
|
37
38
|
create_database_yml if options[:database] == 'mysql'
|
|
38
39
|
|
|
39
|
-
with_standard_set = yes?("\nDo you want to
|
|
40
|
+
with_standard_set = yes?("\nDo you want to copy the files of Alchemy´s Standardset into your App? (y/N)")
|
|
40
41
|
|
|
41
42
|
%x[
|
|
42
|
-
cd ./#{
|
|
43
|
+
cd ./#{@application}
|
|
43
44
|
rails g alchemy:scaffold#{' --with-standard-set' if with_standard_set}
|
|
44
45
|
rm ./public/index.html
|
|
45
|
-
rm ./
|
|
46
|
+
rm ./app/assets/images/rails.png
|
|
46
47
|
]
|
|
48
|
+
|
|
49
|
+
mountpoint = ask "\nWhere do you want to mount Alchemy CMS? (/)"
|
|
50
|
+
mountpoint = "/" if mountpoint.empty?
|
|
51
|
+
sentinel = /\.routes\.draw do(?:\s*\|map\|)?\s*$/
|
|
52
|
+
inject_into_file "#{@application}/config/routes.rb", "\n mount Alchemy::Engine => '#{mountpoint}'\n", { :after => sentinel, :verbose => true }
|
|
47
53
|
|
|
48
54
|
if options[:scm]
|
|
49
55
|
|
|
50
56
|
%x[
|
|
51
|
-
cd ./#{
|
|
57
|
+
cd ./#{@application}
|
|
52
58
|
rm -rf ./tmp/*
|
|
53
59
|
rm -rf ./log/*
|
|
54
60
|
mkdir -p ./index
|
|
@@ -59,26 +65,27 @@ class AlchemyInstaller < Thor
|
|
|
59
65
|
when 'svn'
|
|
60
66
|
server = ask("\nURL of your svn server? (http://svn.magiclabs.de/customers)")
|
|
61
67
|
server = "http://svn.magiclabs.de/customers" if server.empty?
|
|
62
|
-
repository = ask("\nName of the repository? (#{
|
|
63
|
-
repository =
|
|
68
|
+
repository = ask("\nName of the repository? (#{@application})")
|
|
69
|
+
repository = @application if repository.empty?
|
|
64
70
|
|
|
65
|
-
say "\nImporting #{
|
|
66
|
-
output = %x[svn import ./#{
|
|
71
|
+
say "\nImporting #{@application} into #{server}/#{repository} ...", :yellow
|
|
72
|
+
output = %x[svn import ./#{@application} #{server}/#{repository} -m 'initial import by Alchemy installer']; imported = $?.success?
|
|
67
73
|
|
|
68
74
|
if imported
|
|
69
75
|
|
|
70
76
|
say "Removing and checking out again...", :yellow
|
|
71
77
|
%x[
|
|
72
|
-
rm -rf ./#{
|
|
78
|
+
rm -rf ./#{@application}
|
|
73
79
|
svn co #{server}/#{repository}
|
|
74
80
|
]
|
|
75
81
|
|
|
76
82
|
say "Committing ignores...", :yellow
|
|
77
83
|
%x[
|
|
78
|
-
cd ./#{
|
|
84
|
+
cd ./#{@application}
|
|
79
85
|
svn propset svn:ignore '*' tmp/ log/ index/ uploads/
|
|
80
86
|
svn propset svn:ignore 'alchemy' ./public/images ./public/stylesheets ./public/javascripts
|
|
81
87
|
svn propset svn:ignore 'pictures' ./public
|
|
88
|
+
svn propset svn:ignore 'assets' ./public
|
|
82
89
|
svn propset svn:ignore 'database.yml' ./config
|
|
83
90
|
svn commit -m 'set ignores'
|
|
84
91
|
]
|
|
@@ -125,7 +132,7 @@ class AlchemyInstaller < Thor
|
|
|
125
132
|
say "\nCapifying...", :yellow
|
|
126
133
|
|
|
127
134
|
%x[
|
|
128
|
-
cd #{
|
|
135
|
+
cd #{@application}
|
|
129
136
|
capify .
|
|
130
137
|
svn add ./config/deploy.rb ./Capfile
|
|
131
138
|
svn commit -m 'capified'
|
|
@@ -146,11 +153,12 @@ class AlchemyInstaller < Thor
|
|
|
146
153
|
index/*
|
|
147
154
|
public/**/alchemy
|
|
148
155
|
public/pictures
|
|
156
|
+
public/assets
|
|
149
157
|
config/database.yml
|
|
150
158
|
GIT
|
|
151
159
|
%x[
|
|
152
|
-
cd #{
|
|
153
|
-
echo #{gitignore} > #{
|
|
160
|
+
cd #{@application}
|
|
161
|
+
echo #{gitignore} > #{@application}/.gitignore
|
|
154
162
|
touch ./index/.gitkeep
|
|
155
163
|
touch ./uploads/.gitkeep
|
|
156
164
|
git init .
|
|
@@ -161,18 +169,18 @@ class AlchemyInstaller < Thor
|
|
|
161
169
|
end
|
|
162
170
|
|
|
163
171
|
%x[
|
|
164
|
-
cd ./#{
|
|
165
|
-
rake
|
|
172
|
+
cd ./#{@application}
|
|
173
|
+
rake db:create alchemy:install:migrations db:migrate alchemy:db:seed
|
|
166
174
|
]
|
|
167
175
|
|
|
168
176
|
readme = <<-EOF
|
|
169
|
-
\nSuccessfully installed Alchemy into ./#{
|
|
177
|
+
\nSuccessfully installed Alchemy CMS into ./#{@application}
|
|
170
178
|
|
|
171
179
|
Next steps:
|
|
172
180
|
|
|
173
181
|
1. Go into your projects folder:
|
|
174
182
|
|
|
175
|
-
cd ./#{
|
|
183
|
+
cd ./#{@application}
|
|
176
184
|
|
|
177
185
|
2. Start your local Rails server:
|
|
178
186
|
|
|
@@ -184,7 +192,8 @@ Next steps:
|
|
|
184
192
|
|
|
185
193
|
4. Follow the instructions to complete the installation!
|
|
186
194
|
|
|
187
|
-
Thank you for using Alchemy!
|
|
195
|
+
Thank you for using Alchemy CMS!
|
|
196
|
+
http://alchemy-cms.com
|
|
188
197
|
|
|
189
198
|
EOF
|
|
190
199
|
say readme, :green
|
|
@@ -258,13 +267,6 @@ set :password, "#{@ssh_password}"
|
|
|
258
267
|
set :port, #{@ssh_port}
|
|
259
268
|
set :use_sudo, false
|
|
260
269
|
|
|
261
|
-
# database
|
|
262
|
-
set :database_user, "#{@db_user}"
|
|
263
|
-
set :database_password, "#{@db_password}"
|
|
264
|
-
set :database_name, "#{@db_name}"
|
|
265
|
-
set :database_host, "#{@db_host}"
|
|
266
|
-
set :database_socket, "#{@db_socket}"
|
|
267
|
-
|
|
268
270
|
# domain names
|
|
269
271
|
role :app, "#{@server}"
|
|
270
272
|
role :web, "#{@server}"
|
|
@@ -279,17 +281,13 @@ set :scm_password, "#{@scm_password}"
|
|
|
279
281
|
|
|
280
282
|
set :repository, Proc.new{ "--username \#{scm_user} --password \#{scm_password} \#{repository_url}" }
|
|
281
283
|
|
|
282
|
-
after "deploy:setup", "alchemy:shared_folders:create"
|
|
283
284
|
after "deploy:setup", "alchemy:database_yml:create"
|
|
284
285
|
|
|
285
|
-
|
|
286
|
+
before "deploy:start", "deploy:seed"
|
|
287
|
+
|
|
286
288
|
after "deploy:symlink", "alchemy:database_yml:symlink"
|
|
287
289
|
|
|
288
290
|
before "deploy:restart", "deploy:migrate"
|
|
289
|
-
before "deploy:restart", "alchemy:db:migrate"
|
|
290
|
-
|
|
291
|
-
before "deploy:restart", "deploy:seed"
|
|
292
|
-
before "deploy:restart", "alchemy:assets:copy"
|
|
293
291
|
|
|
294
292
|
after "deploy", "deploy:cleanup"
|
|
295
293
|
|
|
@@ -305,39 +303,9 @@ namespace :logs do
|
|
|
305
303
|
end
|
|
306
304
|
end
|
|
307
305
|
|
|
308
|
-
namespace :alchemy do
|
|
309
|
-
|
|
310
|
-
namespace :database_yml do
|
|
311
|
-
|
|
312
|
-
desc "Creates the database.yml file for server database"
|
|
313
|
-
task :create, :roles => :app do
|
|
314
|
-
db_config = ERB.new <<-EOF
|
|
315
|
-
production:
|
|
316
|
-
adapter: mysql2
|
|
317
|
-
encoding: utf8
|
|
318
|
-
database: \#{database_name}
|
|
319
|
-
username: \#{database_user}
|
|
320
|
-
password: \#{database_password}
|
|
321
|
-
host: \#{database_host}
|
|
322
|
-
socket: \#{database_socket}
|
|
323
|
-
EOF
|
|
324
|
-
run "mkdir -p \#{shared_path}/config"
|
|
325
|
-
put db_config.result, "\#{shared_path}/config/database.yml"
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
desc ""
|
|
329
|
-
task :symlink do
|
|
330
|
-
run "ln -nfs \#{shared_path}/config/database.yml \#{current_path}/config/"
|
|
331
|
-
end
|
|
332
|
-
|
|
333
|
-
end
|
|
334
|
-
|
|
335
|
-
end
|
|
336
|
-
|
|
337
306
|
namespace :deploy do
|
|
338
307
|
desc "Overwrite for the internal Capistrano deploy:start task."
|
|
339
308
|
task :start, :roles => :app do
|
|
340
|
-
run "echo 'Nothing to start'"
|
|
341
309
|
end
|
|
342
310
|
|
|
343
311
|
desc "Restart the server"
|
|
@@ -346,8 +314,8 @@ namespace :deploy do
|
|
|
346
314
|
end
|
|
347
315
|
|
|
348
316
|
desc 'Seeds the database'
|
|
349
|
-
|
|
350
|
-
|
|
317
|
+
task :seed, :roles => :app, :except => { :no_release => true } do
|
|
318
|
+
run "cd \#{current_path} && RAILS_ENV=production rake db:seed"
|
|
351
319
|
end
|
|
352
320
|
end
|
|
353
321
|
DEPLOY
|