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
@@ -422,7 +422,7 @@ a.icon_button.linked {
|
|
422
422
|
}
|
423
423
|
|
424
424
|
.edit_images_bottom a.disabled {
|
425
|
-
@include opacity(
|
425
|
+
@include opacity(30);
|
426
426
|
cursor: default;
|
427
427
|
}
|
428
428
|
|
@@ -535,7 +535,7 @@ div.file_icon span.icon {
|
|
535
535
|
div.file_icon a.assign_file {
|
536
536
|
display: block;
|
537
537
|
height: 16px;
|
538
|
-
background: image-url('alchemy/icons.png') no-repeat -
|
538
|
+
background: image-url('alchemy/icons.png') no-repeat -480px -40px;
|
539
539
|
width: 16px;
|
540
540
|
margin: $default-margin;
|
541
541
|
}
|
@@ -565,11 +565,11 @@ div.essence_file_tools a{
|
|
565
565
|
}
|
566
566
|
|
567
567
|
div.essence_file_tools a.assign_file {
|
568
|
-
background: image-url('alchemy/icons.png') -
|
568
|
+
background: image-url('alchemy/icons.png') -512px -40px;
|
569
569
|
}
|
570
570
|
|
571
571
|
div.essence_file_tools a.edit_file {
|
572
|
-
background: image-url('alchemy/icons.png') -
|
572
|
+
background: image-url('alchemy/icons.png') -160px -167px;
|
573
573
|
}
|
574
574
|
|
575
575
|
td.content_editor_essence_type {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
@import "
|
1
|
+
@import "defaults";
|
2
2
|
|
3
3
|
/* always visible styles */
|
4
4
|
|
@@ -42,7 +42,7 @@
|
|
42
42
|
text-shadow: $button-text-shadow;
|
43
43
|
}
|
44
44
|
|
45
|
-
#alchemy .selectbox .display
|
45
|
+
#alchemy .selectbox .display {
|
46
46
|
width: 190px;
|
47
47
|
}
|
48
48
|
|
@@ -54,6 +54,14 @@
|
|
54
54
|
width: 100px;
|
55
55
|
}
|
56
56
|
|
57
|
+
#alchemy .selectbox .display.long {
|
58
|
+
width: 220px;
|
59
|
+
}
|
60
|
+
|
61
|
+
#alchemy .selectbox .display.very_long {
|
62
|
+
width: 280px;
|
63
|
+
}
|
64
|
+
|
57
65
|
#alchemy .selectbox.disabled .display {
|
58
66
|
color: #999;
|
59
67
|
}
|
@@ -71,7 +79,6 @@
|
|
71
79
|
background: $button-hover-bg-color image-url('alchemy/shading.png') repeat-x 50% -75px;
|
72
80
|
}
|
73
81
|
|
74
|
-
|
75
82
|
#alchemy .selectbox .display:active .arrow_btn {
|
76
83
|
background-color: #e5e5e5;
|
77
84
|
}
|
@@ -149,10 +156,18 @@
|
|
149
156
|
width: 128px;
|
150
157
|
}
|
151
158
|
|
152
|
-
#alchemy .items
|
159
|
+
#alchemy .items {
|
153
160
|
width: 218px;
|
154
161
|
}
|
155
162
|
|
163
|
+
#alchemy .items.long {
|
164
|
+
width: 248px;
|
165
|
+
}
|
166
|
+
|
167
|
+
#alchemy .items.very_long {
|
168
|
+
width: 308px;
|
169
|
+
}
|
170
|
+
|
156
171
|
#alchemy .items.full_width {
|
157
172
|
width: 431px;
|
158
173
|
}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
/*
|
2
|
+
*= require_self
|
3
|
+
*/
|
4
|
+
|
5
|
+
@import "defaults";
|
6
|
+
|
7
|
+
@mixin transition {
|
8
|
+
-webkit-transition: left 0.15s ease;
|
9
|
+
-moz-transition: left 0.15s ease;
|
10
|
+
-ms-transition: left 0.15s ease;
|
11
|
+
-o-transition: left 0.15s ease;
|
12
|
+
transition: left 0.15s ease;
|
13
|
+
}
|
14
|
+
|
15
|
+
@mixin bottom-right-rounded-border {
|
16
|
+
$side: bottom-right;
|
17
|
+
$radius: 3px;
|
18
|
+
-webkit-border-#{$side}-radius: $radius;
|
19
|
+
-moz-border-radius-#{$side}: $radius;
|
20
|
+
-ms-border-#{$side}-radius: $radius;
|
21
|
+
-o-border-#{$side}-radius: $radius;
|
22
|
+
border-#{$side}-radius: $radius;
|
23
|
+
}
|
24
|
+
|
25
|
+
@mixin box-shadow {
|
26
|
+
$shadow: 0px 0px 4px $dark-gray;
|
27
|
+
-webkit-box-shadow: $shadow;
|
28
|
+
-moz-box-shadow: $shadow;
|
29
|
+
-ms-box-shadow: $shadow;
|
30
|
+
-o-box-shadow: $shadow;
|
31
|
+
box-shadow: $shadow;
|
32
|
+
}
|
33
|
+
|
34
|
+
#alchemy_menubar {
|
35
|
+
position: fixed;
|
36
|
+
top: 0;
|
37
|
+
left: -318px;
|
38
|
+
width: 312px;
|
39
|
+
z-index: 10000;
|
40
|
+
background: $light-gray;
|
41
|
+
@include transition;
|
42
|
+
@include bottom-right-rounded-border;
|
43
|
+
@include box-shadow;
|
44
|
+
border-right: $default-border;
|
45
|
+
border-bottom: $default-border;
|
46
|
+
line-height: 8*$default-padding;
|
47
|
+
height: 8*$default-padding;
|
48
|
+
padding: 4px 40px 4px 8px;
|
49
|
+
overflow: hidden;
|
50
|
+
&:hover {
|
51
|
+
left: 0;
|
52
|
+
@include transition;
|
53
|
+
};
|
54
|
+
&:after {
|
55
|
+
content: '';
|
56
|
+
width: 24px;
|
57
|
+
height: 24px;
|
58
|
+
position: absolute;
|
59
|
+
right: 10px;
|
60
|
+
top: 8px;
|
61
|
+
background: image-url('alchemy/icons.png') -240px 0;
|
62
|
+
};
|
63
|
+
ul {
|
64
|
+
padding: 6px 0;
|
65
|
+
margin: 0;
|
66
|
+
li {
|
67
|
+
line-height: normal;
|
68
|
+
margin-right: $default-padding;
|
69
|
+
display: inline;
|
70
|
+
display: inline-block;
|
71
|
+
list-style-type: none;
|
72
|
+
a {
|
73
|
+
display: block;
|
74
|
+
text-align: center;
|
75
|
+
padding: 2px 4px;
|
76
|
+
width: 90px;
|
77
|
+
text-decoration: none;
|
78
|
+
@include button-styles;
|
79
|
+
&:hover {
|
80
|
+
@include button-hover-styles;
|
81
|
+
};
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}
|
@@ -1,5 +1,3 @@
|
|
1
|
-
/* @override http://localhost:3000/stylesheets/alchemy/standard_set.css */
|
2
|
-
|
3
1
|
body {
|
4
2
|
margin: 0;
|
5
3
|
padding: 0;
|
@@ -342,7 +340,7 @@ td.field {
|
|
342
340
|
}
|
343
341
|
|
344
342
|
input.field.short {
|
345
|
-
width:
|
343
|
+
width: 97px;
|
346
344
|
}
|
347
345
|
|
348
346
|
input.field.medium {
|
@@ -354,11 +352,11 @@ td.label {
|
|
354
352
|
}
|
355
353
|
|
356
354
|
textarea {
|
357
|
-
width:
|
355
|
+
width: 314px;
|
358
356
|
padding: 2px;
|
359
357
|
font: 12px "Lucida Grande", Lucida, Verdana, sans-serif;
|
360
358
|
border: 1px solid silver;
|
361
|
-
margin-left:
|
359
|
+
margin-left: 126px;
|
362
360
|
height: 10em;
|
363
361
|
margin-top: 2em;
|
364
362
|
margin-bottom: 1em;
|
@@ -8,15 +8,7 @@ module Alchemy
|
|
8
8
|
if in_overlay?
|
9
9
|
archive_overlay
|
10
10
|
else
|
11
|
-
|
12
|
-
if params[:per_page] == 'all'
|
13
|
-
@attachments = Attachment.where(cond).order(:name)
|
14
|
-
else
|
15
|
-
@attachments = Attachment.where(cond).paginate(
|
16
|
-
:page => (params[:page] || 1),
|
17
|
-
:per_page => per_page_value_for_screen_size
|
18
|
-
).order(:name)
|
19
|
-
end
|
11
|
+
@attachments = Attachment.find_paginated(params, per_page_value_for_screen_size)
|
20
12
|
end
|
21
13
|
end
|
22
14
|
|
@@ -35,21 +27,13 @@ module Alchemy
|
|
35
27
|
@attachment = Attachment.new(:uploaded_data => params[:Filedata])
|
36
28
|
@attachment.name = @attachment.filename
|
37
29
|
@attachment.save
|
38
|
-
cond = "name LIKE '%#{params[:query]}%' OR filename LIKE '%#{params[:query]}%'"
|
39
|
-
if params[:per_page] == 'all'
|
40
|
-
@attachments = Attachment.where(cond).order(:name)
|
41
|
-
else
|
42
|
-
@attachments = Attachment.where(cond).paginate(
|
43
|
-
:page => (params[:page] || 1),
|
44
|
-
:per_page => (params[:per_page] || 20)
|
45
|
-
).order(:name)
|
46
|
-
end
|
47
30
|
if in_overlay?
|
48
31
|
@while_assigning = true
|
49
32
|
@content = Content.find(params[:content_id], :select => 'id') if !params[:content_id].blank?
|
50
33
|
@swap = params[:swap]
|
51
34
|
@options = hashified_options
|
52
35
|
end
|
36
|
+
@attachments = Attachment.find_paginated(params, per_page_value_for_screen_size)
|
53
37
|
@message = t('File %{name} uploaded succesfully', :name => @attachment.name)
|
54
38
|
# Are we using the Flash uploader? Or the plain html file uploader?
|
55
39
|
if params[Rails.application.config.session_options[:key]].blank?
|
@@ -69,7 +69,7 @@ module Alchemy
|
|
69
69
|
@element_validated = @element.save!
|
70
70
|
else
|
71
71
|
@element_validated = false
|
72
|
-
@notice = t('Validation failed
|
72
|
+
@notice = t('Validation failed')
|
73
73
|
@error_message = "<h2>#{@notice}</h2><p>#{t('Please check contents below.')}</p>".html_safe
|
74
74
|
end
|
75
75
|
end
|
@@ -77,7 +77,7 @@ module Alchemy
|
|
77
77
|
# Trashes the Element instead of deleting it.
|
78
78
|
def trash
|
79
79
|
@element = Element.find(params[:id])
|
80
|
-
@page_id = @element.
|
80
|
+
@page_id = @element.page_id
|
81
81
|
@element.trash
|
82
82
|
end
|
83
83
|
|
@@ -2,6 +2,8 @@ module Alchemy
|
|
2
2
|
module Admin
|
3
3
|
class EssenceFilesController < Alchemy::Admin::BaseController
|
4
4
|
|
5
|
+
helper "Alchemy::Admin::Contents"
|
6
|
+
|
5
7
|
def edit
|
6
8
|
@content = Content.find(params[:id])
|
7
9
|
@essence_file = @content.essence
|
@@ -17,8 +19,8 @@ module Alchemy
|
|
17
19
|
@content = Content.find_by_id(params[:id])
|
18
20
|
@attachment = Attachment.find_by_id(params[:attachment_id])
|
19
21
|
@content.essence.attachment = @attachment
|
20
|
-
@content.essence.save
|
21
|
-
@content.save
|
22
|
+
# @content.essence.save
|
23
|
+
# @content.save
|
22
24
|
@options = params[:options]
|
23
25
|
end
|
24
26
|
|
@@ -9,14 +9,7 @@ module Alchemy
|
|
9
9
|
|
10
10
|
def index
|
11
11
|
@size = params[:size] || 'medium'
|
12
|
-
|
13
|
-
@pictures = Picture.where("name LIKE '%#{params[:query]}%'").order(:name)
|
14
|
-
else
|
15
|
-
@pictures = Picture.where("name LIKE '%#{params[:query]}%'").paginate(
|
16
|
-
:page => params[:page] || 1,
|
17
|
-
:per_page => pictures_per_page_for_size(@size)
|
18
|
-
).order(:name)
|
19
|
-
end
|
12
|
+
@pictures = Picture.find_paginated(params, pictures_per_page_for_size(@size))
|
20
13
|
if in_overlay?
|
21
14
|
archive_overlay
|
22
15
|
else
|
@@ -41,7 +34,7 @@ module Alchemy
|
|
41
34
|
|
42
35
|
def create
|
43
36
|
@picture = Picture.new(:image_file => params[:Filedata])
|
44
|
-
@picture.name = @picture.
|
37
|
+
@picture.name = @picture.humanized_name
|
45
38
|
@picture.save
|
46
39
|
@size = params[:size] || 'medium'
|
47
40
|
if in_overlay?
|
@@ -52,14 +45,7 @@ module Alchemy
|
|
52
45
|
@page = params[:page] || 1
|
53
46
|
@per_page = pictures_per_page_for_size(@size)
|
54
47
|
end
|
55
|
-
|
56
|
-
@pictures = Picture.where("name LIKE '%#{params[:query]}%'").order(:name)
|
57
|
-
else
|
58
|
-
@pictures = Picture.where("name LIKE '%#{params[:query]}%'").paginate(
|
59
|
-
:page => (params[:page] || 1),
|
60
|
-
:per_page => pictures_per_page_for_size(@size)
|
61
|
-
).order(:name)
|
62
|
-
end
|
48
|
+
@pictures = Picture.find_paginated(params, pictures_per_page_for_size(@size))
|
63
49
|
@message = t('Picture uploaded succesfully', :name => @picture.name)
|
64
50
|
# Are we using the Flash uploader? Or the plain html file uploader?
|
65
51
|
if params[Rails.application.config.session_options[:key]].blank?
|
@@ -107,11 +93,11 @@ module Alchemy
|
|
107
93
|
def pictures_per_page_for_size(size)
|
108
94
|
case size
|
109
95
|
when 'small'
|
110
|
-
per_page = in_overlay? ? 35 : (per_page_value_for_screen_size * 2.
|
96
|
+
per_page = in_overlay? ? 35 : (per_page_value_for_screen_size * 2.9).floor # 50
|
111
97
|
when 'large'
|
112
|
-
per_page = in_overlay? ? 4 : (per_page_value_for_screen_size /
|
98
|
+
per_page = in_overlay? ? 4 : (per_page_value_for_screen_size / 1.7).floor # 8
|
113
99
|
else
|
114
|
-
per_page = in_overlay? ? 12 : (per_page_value_for_screen_size / 0.
|
100
|
+
per_page = in_overlay? ? 12 : (per_page_value_for_screen_size / 0.8).ceil # 18
|
115
101
|
end
|
116
102
|
return per_page
|
117
103
|
end
|
@@ -10,11 +10,9 @@ module Alchemy
|
|
10
10
|
|
11
11
|
def index
|
12
12
|
if !params[:query].blank?
|
13
|
-
items = resource_model.where(
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
}.compact.join(" OR "))
|
13
|
+
items = resource_model.where(searchable_resource_attributes.map { |attribute|
|
14
|
+
"`#{namespaced_resources_name}`.`#{attribute[:name]}` LIKE '%#{params[:query]}%'"
|
15
|
+
}.join(" OR "))
|
18
16
|
else
|
19
17
|
items = resource_model
|
20
18
|
end
|
@@ -106,6 +104,10 @@ module Alchemy
|
|
106
104
|
end.compact
|
107
105
|
end
|
108
106
|
|
107
|
+
def searchable_resource_attributes
|
108
|
+
resource_attributes.select{ |a| a[:type] == :string }
|
109
|
+
end
|
110
|
+
|
109
111
|
def resource_window_size
|
110
112
|
@resource_window_size ||= "400x#{100 + resource_attributes.length * 35}"
|
111
113
|
end
|
@@ -106,20 +106,30 @@ module Alchemy
|
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
109
|
+
def layout_for_page
|
110
|
+
if !params[:layout].blank? && params[:layout] != 'none'
|
111
|
+
params[:layout]
|
112
|
+
elsif File.exist?(Rails.root.join('app/views/layouts', 'application.html.erb'))
|
113
|
+
'application'
|
114
|
+
else
|
115
|
+
'alchemy/pages'
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
109
119
|
protected
|
110
120
|
|
111
121
|
def permission_denied
|
112
122
|
if current_user
|
113
123
|
if current_user.role == 'registered'
|
114
|
-
redirect_to root_path
|
124
|
+
redirect_to alchemy.root_path
|
115
125
|
else
|
116
|
-
if request.referer == login_url
|
126
|
+
if request.referer == alchemy.login_url
|
117
127
|
render :file => File.join(Rails.root.to_s, 'public', '422.html'), :status => 422, :layout => false
|
118
128
|
elsif request.xhr?
|
119
129
|
render :partial => 'alchemy/admin/partials/flash', :locals => {:message => t('You are not authorized'), :flash_type => 'warning'}
|
120
130
|
else
|
121
131
|
flash[:error] = t('You are not authorized')
|
122
|
-
redirect_to admin_dashboard_path
|
132
|
+
redirect_to alchemy.admin_dashboard_path
|
123
133
|
end
|
124
134
|
end
|
125
135
|
else
|
@@ -128,7 +138,7 @@ module Alchemy
|
|
128
138
|
render :action => :permission_denied
|
129
139
|
else
|
130
140
|
store_location
|
131
|
-
redirect_to login_path
|
141
|
+
redirect_to alchemy.login_path
|
132
142
|
end
|
133
143
|
end
|
134
144
|
end
|
@@ -53,7 +53,7 @@ module Alchemy
|
|
53
53
|
|
54
54
|
def new#:nodoc:
|
55
55
|
@message = Message.new
|
56
|
-
render :template => '/pages/show', :layout =>
|
56
|
+
render :template => 'alchemy/pages/show', :layout => layout_for_page
|
57
57
|
end
|
58
58
|
|
59
59
|
def create#:nodoc:
|
@@ -65,7 +65,7 @@ module Alchemy
|
|
65
65
|
Messages.contact_form_mail(@message, mail_to, mail_from, subject).deliver
|
66
66
|
redirect_to_success_page
|
67
67
|
else
|
68
|
-
render :template => '/pages/show', :layout =>
|
68
|
+
render :template => 'alchemy/pages/show', :layout => layout_for_page
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
@@ -106,9 +106,9 @@ module Alchemy
|
|
106
106
|
end
|
107
107
|
|
108
108
|
def get_page
|
109
|
-
@page = Page.
|
110
|
-
@root_page = @page.get_language_root
|
109
|
+
@page = Page.find_by_page_layout_and_language_id(mailer_config[:page_layout_name], session[:language_id])
|
111
110
|
raise "Page for page_layout #{mailer_config[:page_layout_name]} not found" if @page.blank?
|
111
|
+
@root_page = @page.get_language_root
|
112
112
|
end
|
113
113
|
|
114
114
|
end
|