alchemy-demo_kit 0.0.1
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/README.md +12 -0
- data/Rakefile +8 -0
- data/app/assets/stylesheets/alchemy/demo_kit.scss +440 -0
- data/app/views/alchemy/elements/_article_editor.html.erb +11 -0
- data/app/views/alchemy/elements/_article_view.html.erb +25 -0
- data/app/views/alchemy/elements/_bild_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_bild_text_editor.html.erb +7 -0
- data/app/views/alchemy/elements/_bild_text_view.html.erb +9 -0
- data/app/views/alchemy/elements/_bild_view.html.erb +9 -0
- data/app/views/alchemy/elements/_claim_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_claim_view.html.erb +1 -0
- data/app/views/alchemy/elements/_contactform_editor.html.erb +4 -0
- data/app/views/alchemy/elements/_contactform_view.html.erb +78 -0
- data/app/views/alchemy/elements/_download_editor.html.erb +4 -0
- data/app/views/alchemy/elements/_download_view.html.erb +7 -0
- data/app/views/alchemy/elements/_footnote_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_footnote_view.html.erb +5 -0
- data/app/views/alchemy/elements/_header_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_header_view.html.erb +1 -0
- data/app/views/alchemy/elements/_headline_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_headline_view.html.erb +1 -0
- data/app/views/alchemy/elements/_image_mosaic_editor.html.erb +3 -0
- data/app/views/alchemy/elements/_image_mosaic_view.html.erb +14 -0
- data/app/views/alchemy/elements/_intro_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_intro_image_text_editor.html.erb +3 -0
- data/app/views/alchemy/elements/_intro_image_text_view.html.erb +16 -0
- data/app/views/alchemy/elements/_intro_view.html.erb +3 -0
- data/app/views/alchemy/elements/_news_editor.html.erb +3 -0
- data/app/views/alchemy/elements/_news_view.html.erb +11 -0
- data/app/views/alchemy/elements/_searchresult_editor.html.erb +4 -0
- data/app/views/alchemy/elements/_searchresult_view.html.erb +4 -0
- data/app/views/alchemy/elements/_sitemap_editor.html.erb +3 -0
- data/app/views/alchemy/elements/_sitemap_view.html.erb +38 -0
- data/app/views/alchemy/elements/_sitename_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_sitename_view.html.erb +1 -0
- data/app/views/alchemy/elements/_subheadline_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_subheadline_view.html.erb +5 -0
- data/app/views/alchemy/elements/_text_editor.html.erb +1 -0
- data/app/views/alchemy/elements/_text_view.html.erb +3 -0
- data/app/views/alchemy/page_layouts/_contact.html.erb +14 -0
- data/app/views/alchemy/page_layouts/_intro.html.erb +14 -0
- data/app/views/alchemy/page_layouts/_layout_footer.html.erb +14 -0
- data/app/views/alchemy/page_layouts/_layout_header.html.erb +14 -0
- data/app/views/alchemy/page_layouts/_news.html.erb +14 -0
- data/app/views/alchemy/page_layouts/_newsletter_layout.html.erb +1 -0
- data/app/views/alchemy/page_layouts/_search.html.erb +14 -0
- data/app/views/alchemy/page_layouts/_standard.html.erb +14 -0
- data/app/views/layouts/application.html.erb +50 -0
- data/config/alchemy/elements.yml +274 -0
- data/config/alchemy/page_layouts.yml +74 -0
- data/lib/alchemy/demo_kit.rb +6 -0
- data/lib/alchemy/demo_kit/engine.rb +6 -0
- data/lib/alchemy/demo_kit/version.rb +5 -0
- data/lib/rails/generators/alchemy/demo_kit_generator.rb +34 -0
- data/lib/tasks/alchemy/demo_kit/install.rake +10 -0
- metadata +124 -0
@@ -0,0 +1,14 @@
|
|
1
|
+
<div id="header">
|
2
|
+
<div id="header_image">
|
3
|
+
<%= render_elements(:only => 'header', :fallback => {:for => 'header', :from => 'layout_header'}) %>
|
4
|
+
</div>
|
5
|
+
<%- claim = render_elements :only => ["claim"] -%>
|
6
|
+
<%- if !claim.blank? -%>
|
7
|
+
<div id="claim">
|
8
|
+
<%= claim %>
|
9
|
+
</div>
|
10
|
+
<%- end -%>
|
11
|
+
</div>
|
12
|
+
<div id="content">
|
13
|
+
<%= render_elements :except => ["claim", "header"] %>
|
14
|
+
</div>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<!-- Your site title-prefix (That is YourSite in "YourSite - CurrentPage" is taken from a layout-page by default.
|
5
|
+
Alternatively you can hardcode it here -->
|
6
|
+
<%= render_meta_data(:title_prefix => sitename_from_header_page, :title_seperator => " - ") %>
|
7
|
+
<!-- Paths here are relative to app/assets/stylesheets.
|
8
|
+
alchemy/demo_kit, though, is located in the Alchemy demo kit gem and doesn't have to be present in your app,
|
9
|
+
but you can copy it over and customize it of course. -->
|
10
|
+
<%= stylesheet_link_tag "alchemy/demo_kit", :media => :screen %>
|
11
|
+
<%= stylesheet_link_tag "alchemy/demo_kit", :media => :print %>
|
12
|
+
<!-- Here is also the place for custom javascripts. Put them in app/assets/javascripts/yourscript.js (or yourscript.js.coffee)
|
13
|
+
and include them like this (remove the \):
|
14
|
+
<\%= javascript_include_tag "yourscript" %> -->
|
15
|
+
</head>
|
16
|
+
<body>
|
17
|
+
<div id="page">
|
18
|
+
<div id="language_select">
|
19
|
+
<!-- Render links with flags for all public languages -->
|
20
|
+
<%= language_switches(:linkname => :code) %>
|
21
|
+
</div>
|
22
|
+
<div id="breadcrump">
|
23
|
+
<!-- Renders a breadcrumb/ariadne-path. For customizing see docs for render_breadcrumb (link?) -->
|
24
|
+
<%= render_breadcrumb :seperator => "<span> < </span>" %>
|
25
|
+
</div>
|
26
|
+
<div id="navigation">
|
27
|
+
<!-- Renders main navigation. For customizing see docs for render_navigation (link?)
|
28
|
+
You can overwrite app/views/navigation/_renderer.html.erb and app/views/navigation/_link.html.erb
|
29
|
+
if you want to roll out your own markup -->
|
30
|
+
<%= render_navigation :all_sub_menues => true %>
|
31
|
+
</div>
|
32
|
+
<!-- Most important call here!
|
33
|
+
This yields (=inserts) all content of the current page.
|
34
|
+
Markup depends on page_layout, elements and essences and can be changed in app/views/alchemy/... -->
|
35
|
+
<%= yield %>
|
36
|
+
<div class="footer">
|
37
|
+
<!-- Renders elements that are called "footnote" (name-attribute in elements.yml)
|
38
|
+
from page_layout "layout_footer" (name-attribute in page_layout.yml) -->
|
39
|
+
<%= render_elements(
|
40
|
+
:from_page => 'layout_footer',
|
41
|
+
:only => ['footnote']
|
42
|
+
) %>
|
43
|
+
</div>
|
44
|
+
</div>
|
45
|
+
<!-- This is used in Alchemy's backend to prevent navigating to other pages through the preview window -->
|
46
|
+
<%= alchemy_preview_mode_code %>
|
47
|
+
<!-- Renders a menu_bar when a user with sufficient rights visits a page -->
|
48
|
+
<%= alchemy_menu_bar %>
|
49
|
+
</body>
|
50
|
+
</html>
|
@@ -0,0 +1,274 @@
|
|
1
|
+
# == In this configuration you setup Alchemy´s element layouts.
|
2
|
+
#
|
3
|
+
# Use rails generate alchemy:scaffold to generate this file for your app.
|
4
|
+
#
|
5
|
+
# Elements containing all necessary basic tools for displaying and editing content inside Alchemy.
|
6
|
+
# They consists of composed contents (different essence-types) as shown in the illustration of an elements-sheme below.
|
7
|
+
#
|
8
|
+
# == Schema of an element
|
9
|
+
#
|
10
|
+
# =================================
|
11
|
+
# # Content 1 (EssenceText) #
|
12
|
+
# # #
|
13
|
+
# # Content 2 (EssencePicture) #
|
14
|
+
# # #
|
15
|
+
# # Content 3 (EssenceRichtext) #
|
16
|
+
# =================================
|
17
|
+
#
|
18
|
+
# == Example of a basic element layout
|
19
|
+
#
|
20
|
+
# - name: a_unique_name (Used for the partial name in +app/views/elements+ and translated as Element.display_name)
|
21
|
+
# unique: Bool //pass true if this element only can be displayed once on page
|
22
|
+
# contents:
|
23
|
+
# - name: head
|
24
|
+
# type: EssenceText
|
25
|
+
# - name: text
|
26
|
+
# type: EssenceRichtext
|
27
|
+
#
|
28
|
+
# As already mentioned above, there are different content-types wich can be defined for each content in an element.
|
29
|
+
#
|
30
|
+
# Defining these types is used to render predefined views in the element.
|
31
|
+
#
|
32
|
+
# == Content-Types:
|
33
|
+
#
|
34
|
+
# * EssenceText (Used to store a String (max. 255 Chars.) i.e. a headline, or productname. The editor is renderd as a single-lined input field. The view output will be sanitized and escaped. So it's XSS save.)
|
35
|
+
# * EssenceRichtext (Used to store editable richtext. Editor is rendered as a textarea with TinyMCE Editor.)
|
36
|
+
# * EssencePicture (Used to store pictures assigned through the library. The editor view provides a lot of options (i.e. image cropper). The view renders the assigned picture, resizes it, crops it and caches the result.)
|
37
|
+
# * EssenceFile (Used to store attachments assigned through the library. The view renders download link.)
|
38
|
+
# * EssenceAudio (Used to store attachments assigned through the library. The view renders an flash audio player.)
|
39
|
+
# * EssenceVideo (Used to store attachments assigned through the library. The view renders an flash video player.)
|
40
|
+
# * EssenceFlash (Used to store attachments assigned through the library. The view renders the embeded flash object.)
|
41
|
+
# * EssenceDate (Used to store a DateTime object. The view output is passed through Rails I18n Library, so it will be fully localized.)
|
42
|
+
# * EssenceHtml (Used to store HTML code. The view output renders the raw, not sanitized or unescaped String. So be careful!)
|
43
|
+
# * EssenceSelect (Used to store a String (max. 255 Chars.) value. The editor view is displayed as a select box)
|
44
|
+
# * EssenceBoolean (Used to store a Boolean (true or false) value. The editor view is displayed as a check box)
|
45
|
+
# * EssenceLink (Used to store an URL. The link button opens the same link overlay as the link button in the EssenceRichtext TinyMCE editor.)
|
46
|
+
#
|
47
|
+
# After finishing the setup of your element layouts, you need to generate the files for the elements before using them in Alchemy.
|
48
|
+
#
|
49
|
+
# For creating these files, use the following command in your terminal:
|
50
|
+
#
|
51
|
+
# rails g alchemy:elements
|
52
|
+
#
|
53
|
+
# or:
|
54
|
+
#
|
55
|
+
# rails g alchemy:elements --skip
|
56
|
+
#
|
57
|
+
# to skip existing elements
|
58
|
+
#
|
59
|
+
#
|
60
|
+
# All new elements will be created as two different partials in +Rails.root/app/views/elements+.
|
61
|
+
#
|
62
|
+
# For each element there is an editor-view wich will be rendered when editing them in Alchemy and another view for the website´s frontend.
|
63
|
+
#
|
64
|
+
# app/views/elements/_elements_name_editor.html.erb
|
65
|
+
# app/views/elements/_elements_name_view.html.erb
|
66
|
+
#
|
67
|
+
# For most contents in an element you can specify additional options, so they get rendered in a specific way.
|
68
|
+
# These options can be defined as symbols, but its too much to list them up here.
|
69
|
+
# You can find these options described in the application_helper.rb, most of them at the render_essence method.
|
70
|
+
#
|
71
|
+
# == Setting a content as preview-text for the element
|
72
|
+
#
|
73
|
+
# You can set a content-essence as preview-text for its element like this:
|
74
|
+
#
|
75
|
+
# take_me_for_preview: true
|
76
|
+
#
|
77
|
+
# == Adding contents dynamically in the frontend
|
78
|
+
#
|
79
|
+
# You are able to add content-essences dynamically to the element from the Alchemy frontend.
|
80
|
+
#
|
81
|
+
# You just have to make contents available for adding them.
|
82
|
+
#
|
83
|
+
# === Example:
|
84
|
+
#
|
85
|
+
# - name: headline
|
86
|
+
# unique: false
|
87
|
+
# contents:
|
88
|
+
# - name: headline
|
89
|
+
# type: EssenceText
|
90
|
+
# - name: big_text
|
91
|
+
# type: EssenceRichtext
|
92
|
+
# available_contents:
|
93
|
+
# - name: big_text
|
94
|
+
# type: EssenceRichtext
|
95
|
+
#
|
96
|
+
# And add a +<%= render_create_content_link(element, 'big_text') %>+ helper to your element editor partial.
|
97
|
+
#
|
98
|
+
# Now an Alchemy user can add as many additional +big_text+ contents as s/he wants.
|
99
|
+
#
|
100
|
+
# If you have more then one additional content defined you should use the:
|
101
|
+
#
|
102
|
+
# <%= render_new_content_link(element) %>
|
103
|
+
#
|
104
|
+
# helper. This opens an overlay from where the user can choose which content to add.
|
105
|
+
#
|
106
|
+
# === Translate element names
|
107
|
+
#
|
108
|
+
# Element names are passed through the +I18n+ library. So you can translate them in your config/locales language yml file.
|
109
|
+
#
|
110
|
+
# === Example:
|
111
|
+
#
|
112
|
+
# de:
|
113
|
+
# alchemy:
|
114
|
+
# element_names:
|
115
|
+
# contact: Kontakt
|
116
|
+
# search: Suche
|
117
|
+
#
|
118
|
+
# == Validations:
|
119
|
+
#
|
120
|
+
# You can validate the presence of a content. Just pass validate and one of the supported vaidatiosn methods to your content definition:
|
121
|
+
#
|
122
|
+
# - name: article
|
123
|
+
# display_name: Standard-Artikel
|
124
|
+
# contents:
|
125
|
+
# - name: intro
|
126
|
+
# type: EssenceText
|
127
|
+
# validate:
|
128
|
+
# - presence
|
129
|
+
#
|
130
|
+
# Now the user has to enter a value inside of the intro EssenceText textfield to save the element.
|
131
|
+
# Currently supported validations are:
|
132
|
+
#
|
133
|
+
# * presence
|
134
|
+
# * uniqueness
|
135
|
+
#
|
136
|
+
- name: article
|
137
|
+
taggable: true
|
138
|
+
contents:
|
139
|
+
- name: intro
|
140
|
+
type: EssenceText
|
141
|
+
- name: headline
|
142
|
+
type: EssenceText
|
143
|
+
settings:
|
144
|
+
deletable: true
|
145
|
+
- name: image
|
146
|
+
type: EssencePicture
|
147
|
+
- name: text
|
148
|
+
type: EssenceRichtext
|
149
|
+
settings:
|
150
|
+
deletable: true
|
151
|
+
available_contents:
|
152
|
+
- name: text
|
153
|
+
type: EssenceRichtext
|
154
|
+
- name: headline
|
155
|
+
type: EssenceText
|
156
|
+
|
157
|
+
- name: intro_image_text
|
158
|
+
unique: true
|
159
|
+
contents:
|
160
|
+
- name: headline
|
161
|
+
type: EssenceText
|
162
|
+
- name: image
|
163
|
+
type: EssencePicture
|
164
|
+
- name: text
|
165
|
+
type: EssenceRichtext
|
166
|
+
|
167
|
+
- name: text
|
168
|
+
contents:
|
169
|
+
- name: text
|
170
|
+
type: EssenceRichtext
|
171
|
+
|
172
|
+
- name: bild
|
173
|
+
contents:
|
174
|
+
- name: image
|
175
|
+
type: EssencePicture
|
176
|
+
|
177
|
+
- name: bild_text
|
178
|
+
contents:
|
179
|
+
- name: image
|
180
|
+
type: EssencePicture
|
181
|
+
- name: text
|
182
|
+
type: EssenceRichtext
|
183
|
+
|
184
|
+
- name: headline
|
185
|
+
contents:
|
186
|
+
- name: headline
|
187
|
+
type: EssenceText
|
188
|
+
|
189
|
+
- name: image_mosaic
|
190
|
+
picture_gallery: true
|
191
|
+
contents:
|
192
|
+
- name: caption
|
193
|
+
type: EssenceText
|
194
|
+
- name: show_caption
|
195
|
+
type: EssenceBoolean
|
196
|
+
|
197
|
+
- name: footnote
|
198
|
+
unique: true
|
199
|
+
contents:
|
200
|
+
- name: note
|
201
|
+
type: EssenceRichtext
|
202
|
+
|
203
|
+
- name: sitename
|
204
|
+
unique: true
|
205
|
+
contents:
|
206
|
+
- name: name
|
207
|
+
type: EssenceText
|
208
|
+
|
209
|
+
- name: claim
|
210
|
+
unique: true
|
211
|
+
contents:
|
212
|
+
- name: claim
|
213
|
+
type: EssenceText
|
214
|
+
|
215
|
+
- name: header
|
216
|
+
unique: true
|
217
|
+
contents:
|
218
|
+
- name: image
|
219
|
+
type: EssencePicture
|
220
|
+
|
221
|
+
- name: intro
|
222
|
+
contents:
|
223
|
+
- name: intro
|
224
|
+
type: EssenceRichtext
|
225
|
+
|
226
|
+
- name: subheadline
|
227
|
+
contents:
|
228
|
+
- name: subheadline
|
229
|
+
type: EssenceText
|
230
|
+
|
231
|
+
- name: download
|
232
|
+
contents:
|
233
|
+
- name: file
|
234
|
+
type: EssenceFile
|
235
|
+
settings:
|
236
|
+
deletable: true
|
237
|
+
available_contents:
|
238
|
+
- name: file
|
239
|
+
type: EssenceFile
|
240
|
+
|
241
|
+
- name: news
|
242
|
+
contents:
|
243
|
+
- name: date
|
244
|
+
type: EssenceDate
|
245
|
+
- name: news_headline
|
246
|
+
type: EssenceText
|
247
|
+
rss_title: true
|
248
|
+
- name: body
|
249
|
+
type: EssenceRichtext
|
250
|
+
rss_description: true
|
251
|
+
|
252
|
+
- name: searchresult
|
253
|
+
unique: true
|
254
|
+
|
255
|
+
- name: contactform
|
256
|
+
unique: true
|
257
|
+
contents:
|
258
|
+
- name: mail_from
|
259
|
+
type: EssenceText
|
260
|
+
validate:
|
261
|
+
- presence
|
262
|
+
- name: mail_to
|
263
|
+
type: EssenceText
|
264
|
+
validate:
|
265
|
+
- presence
|
266
|
+
- name: subject
|
267
|
+
type: EssenceText
|
268
|
+
take_me_for_preview: true
|
269
|
+
validate:
|
270
|
+
- presence
|
271
|
+
- name: success_page
|
272
|
+
type: EssenceSelect
|
273
|
+
validate:
|
274
|
+
- presence
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# == This file defines the page_layouts for new pages.
|
2
|
+
#
|
3
|
+
# Please make your own page_layouts for your app in your own Rails.root/config/alchemy/page_layouts.yml file.
|
4
|
+
#
|
5
|
+
# === DSL:
|
6
|
+
# - name: String # The name of the layout used for views and inside the database. You can render a layout with the render_page_layout(name) helper.
|
7
|
+
# unique: Bool # Pass true and the user can only choose this layout once inside a language tree.
|
8
|
+
# hide: Bool # Pass true to hide this layout from the user.
|
9
|
+
# elements: Array # A list of element names that can be placed on this layout i.e. [text, picture]. Elements are defined inside the elements.yml file.
|
10
|
+
# insert_elements_at: String # Pass top to insert elements at top of the list. Default: bottom
|
11
|
+
# autogenerate: Array # A list of element names that are autogenerated after creating the Page.
|
12
|
+
# searchresults: Bool # Pass true to enable rendering the searchresults of the fulltext-search.
|
13
|
+
# layoutpage: Bool # Layoutpages are outside the normal pagetree and can be used to place "global" language independent Elements.
|
14
|
+
# cache: Bool # Pass false to disable the caching for this pages.
|
15
|
+
# feed: Bool # Pass true to enable a RSS feed of news elements from this page.
|
16
|
+
# redirects_to_external: Bool # Pass true to disable normal page rendering and redirect to a external page instead.
|
17
|
+
# controller: controller_name # Controller to use instead of the default PagesController
|
18
|
+
# action: action_name # Controllers action to use instead of the default PagesController#show
|
19
|
+
#
|
20
|
+
# === Translate page layout names
|
21
|
+
#
|
22
|
+
# Page layout names are passed through the I18n library. So you can translate them in your config/locales language yml file.
|
23
|
+
#
|
24
|
+
# Example:
|
25
|
+
#
|
26
|
+
# de:
|
27
|
+
# alchemy:
|
28
|
+
# page_layout_names:
|
29
|
+
# contact: Kontakt
|
30
|
+
# search: Suche
|
31
|
+
#
|
32
|
+
- name: intro
|
33
|
+
unique: true
|
34
|
+
elements: [header, intro_image_text]
|
35
|
+
autogenerate: [header, intro_image_text]
|
36
|
+
|
37
|
+
- name: standard
|
38
|
+
elements: [article, claim, header, bild, bild_text, text, intro, headline, image_mosaic, download]
|
39
|
+
autogenerate: [header, claim, article]
|
40
|
+
taggable: true
|
41
|
+
|
42
|
+
- name: contact
|
43
|
+
unique: true
|
44
|
+
cache: false
|
45
|
+
elements: [headline, text, contactform]
|
46
|
+
autogenerate: [headline, text, contactform]
|
47
|
+
|
48
|
+
- name: news
|
49
|
+
feed: true
|
50
|
+
unique: true
|
51
|
+
insert_elements_at: top
|
52
|
+
elements: [headline, news]
|
53
|
+
autogenerate: [news]
|
54
|
+
feed_elements: [news]
|
55
|
+
|
56
|
+
- name: search
|
57
|
+
unique: true
|
58
|
+
elements: [headline, text, searchresult]
|
59
|
+
autogenerate: [searchresult]
|
60
|
+
searchresults: true
|
61
|
+
|
62
|
+
- name: layout_header
|
63
|
+
unique: true
|
64
|
+
layoutpage: true
|
65
|
+
taggable: true
|
66
|
+
elements: [sitename, header]
|
67
|
+
|
68
|
+
- name: layout_footer
|
69
|
+
unique: true
|
70
|
+
layoutpage: true
|
71
|
+
elements: [footnote]
|
72
|
+
|
73
|
+
- name: external
|
74
|
+
redirects_to_external: true
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rails'
|
2
|
+
|
3
|
+
module Alchemy
|
4
|
+
module Generators
|
5
|
+
class DemoKitGenerator < ::Rails::Generators::Base
|
6
|
+
desc "This generator installs the Alchemy demo kit."
|
7
|
+
source_root File.expand_path('../../../../app/views', File.dirname(__FILE__))
|
8
|
+
|
9
|
+
def alchemy_scafffold
|
10
|
+
invoke "alchemy:scaffold"
|
11
|
+
end
|
12
|
+
|
13
|
+
def copy_files
|
14
|
+
copy_file "#{config_path}/elements.yml", "#{Rails.root}/config/alchemy/elements.yml"
|
15
|
+
copy_file "#{config_path}/page_layouts.yml", "#{Rails.root}/config/alchemy/page_layouts.yml"
|
16
|
+
copy_file "layouts/application.html.erb", "#{Rails.root}/app/views/layouts/application.html.erb"
|
17
|
+
directory "alchemy/elements", "#{Rails.root}/app/views/alchemy/elements/"
|
18
|
+
directory "alchemy/page_layouts", "#{Rails.root}/app/views/alchemy/page_layouts/"
|
19
|
+
end
|
20
|
+
|
21
|
+
def inject_css_into_env
|
22
|
+
sentinel = /::Application\.configure do\s*$/
|
23
|
+
inject_into_file "#{Rails.root}/config/environments/production.rb", "\n config.assets.precompile += %w( alchemy/demo_kit.css )\n", { :after => sentinel, :verbose => true }
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def config_path
|
29
|
+
@config_path ||= File.expand_path('../../../../config/alchemy', File.dirname(__FILE__))
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|