alchemy_cms 2.1.beta6 → 2.1.rc2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|