aura 0.0.1.pre10

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.
Files changed (249) hide show
  1. data/.gitignore +6 -0
  2. data/.travis.yml +3 -0
  3. data/Gemfile +2 -0
  4. data/HISTORY.md +95 -0
  5. data/README.md +53 -0
  6. data/Rakefile +27 -0
  7. data/Scribefile +8 -0
  8. data/app/css/_utilities.scss +88 -0
  9. data/app/css/admin.scss +21 -0
  10. data/app/css/admin/_settings.scss +136 -0
  11. data/app/css/admin/chrome.scss +208 -0
  12. data/app/css/admin/common.scss +78 -0
  13. data/app/css/admin/forms.scss +342 -0
  14. data/app/css/admin/jquery_wysiwyg.scss +96 -0
  15. data/app/css/admin/loading.scss +18 -0
  16. data/app/css/admin/meta.scss +42 -0
  17. data/app/css/admin/reset.scss +46 -0
  18. data/app/css/admin/sections.scss +79 -0
  19. data/app/css/admin/setup.scss +22 -0
  20. data/app/css/admin/sidebar.scss +136 -0
  21. data/app/css/admin/slug.scss +78 -0
  22. data/app/css/admin/uiscreen.scss +22 -0
  23. data/app/css/admin/wysiwyg_field.scss +11 -0
  24. data/app/css/admin_watermark.scss +23 -0
  25. data/app/css/default_home_page.scss +13 -0
  26. data/app/css/login.scss +47 -0
  27. data/app/helpers/admin_helpers.rb +59 -0
  28. data/app/helpers/flash_helpers.rb +86 -0
  29. data/app/helpers/form_builder_helpers.rb +9 -0
  30. data/app/helpers/html_helpers.rb +27 -0
  31. data/app/helpers/jquery_helpers.rb +26 -0
  32. data/app/helpers/main_helpers.rb +67 -0
  33. data/app/helpers/page_helpers.rb +92 -0
  34. data/app/helpers/template_helpers.rb +94 -0
  35. data/app/helpers/user_helpers.rb +45 -0
  36. data/app/init/admin.rb +34 -0
  37. data/app/init/extensions.rb +18 -0
  38. data/app/init/pistol.rb +11 -0
  39. data/app/init/sequel.rb +11 -0
  40. data/app/main.rb +106 -0
  41. data/app/migrations/page.rb +29 -0
  42. data/app/migrations/settings.rb +11 -0
  43. data/app/migrations/user.rb +13 -0
  44. data/app/models/page.rb +116 -0
  45. data/app/models/page_seed.rb +47 -0
  46. data/app/models/settings.rb +59 -0
  47. data/app/models/user.rb +60 -0
  48. data/app/routes/admin.rb +44 -0
  49. data/app/routes/css_js.rb +53 -0
  50. data/app/routes/design_tests.rb +15 -0
  51. data/app/routes/editor.rb +152 -0
  52. data/app/routes/site.rb +33 -0
  53. data/app/routes/user.rb +48 -0
  54. data/app/views/admin/_back_to_dashboard.haml +3 -0
  55. data/app/views/admin/dashboard.haml +46 -0
  56. data/app/views/admin/layout.haml +73 -0
  57. data/app/views/admin/settings.haml +40 -0
  58. data/app/views/admin/settings/database.haml +42 -0
  59. data/app/views/base/crumbs.haml +50 -0
  60. data/app/views/base/delete.haml +19 -0
  61. data/app/views/base/edit.haml +61 -0
  62. data/app/views/base/errors.haml +10 -0
  63. data/app/views/base/form.haml +11 -0
  64. data/app/views/base/list.haml +14 -0
  65. data/app/views/base/list_actions.haml +4 -0
  66. data/app/views/base/list_item.haml +7 -0
  67. data/app/views/base/nav.haml +36 -0
  68. data/app/views/base/new.haml +36 -0
  69. data/app/views/base/preview.haml +28 -0
  70. data/app/views/base/tabs.haml +12 -0
  71. data/app/views/default_home_page.haml +15 -0
  72. data/app/views/design_tests/admin_styles.haml +58 -0
  73. data/app/views/form_builder/builder.haml +29 -0
  74. data/app/views/page/edit.haml +29 -0
  75. data/app/views/page/form.haml +22 -0
  76. data/app/views/page/meta_form.haml +22 -0
  77. data/app/views/page/new.haml +26 -0
  78. data/app/views/user/edit.haml +52 -0
  79. data/app/views/user/form.haml +43 -0
  80. data/app/views/user/list.haml +11 -0
  81. data/app/views/user/login.haml +33 -0
  82. data/app/views/user/new.haml +25 -0
  83. data/app/views/user/welcome.haml +29 -0
  84. data/app/views/watermark/watermark.haml +16 -0
  85. data/aura.gemspec +36 -0
  86. data/bin/aura +8 -0
  87. data/config/database.rb +12 -0
  88. data/config/extensions.rb +5 -0
  89. data/config/scss.rb +14 -0
  90. data/config/user.rb +10 -0
  91. data/default/.gitignore +6 -0
  92. data/default/Gemfile +11 -0
  93. data/default/README.md +24 -0
  94. data/default/Rakefile +8 -0
  95. data/default/app/README +3 -0
  96. data/default/app/css/.gitignore +0 -0
  97. data/default/app/helpers/helpers.rb.example +9 -0
  98. data/default/app/js/.gitignore +0 -0
  99. data/default/app/migrations/model.rb.example +20 -0
  100. data/default/app/models/model.rb.example +11 -0
  101. data/default/app/models/page-ext.rb.example +17 -0
  102. data/default/app/routes/site.rb.example +5 -0
  103. data/default/app/views/hello.haml.example +1 -0
  104. data/default/config.ru +3 -0
  105. data/default/config/.gitignore +0 -0
  106. data/default/config/database.rb.example +30 -0
  107. data/default/config/extensions.rb +5 -0
  108. data/default/config/user.rb.example +10 -0
  109. data/default/db/.gitignore +0 -0
  110. data/default/init.rb +15 -0
  111. data/default/public/.gitignore +0 -0
  112. data/extensions/contact_form/migrations/contact_form.rb +13 -0
  113. data/extensions/contact_form/models/contact_form.rb +13 -0
  114. data/extensions/contact_form/routes/contact_form.rb +11 -0
  115. data/extensions/contact_form/views/contact_form/edit.haml +8 -0
  116. data/extensions/contact_form/views/contact_form/form.haml +3 -0
  117. data/extensions/contact_form/views/contact_form/nav.haml +42 -0
  118. data/extensions/contact_form/views/contact_form/responses.haml +20 -0
  119. data/extensions/contact_form/views/contact_form/tabs.haml +8 -0
  120. data/extensions/default_theme/css/theme/_settings.scss +3 -0
  121. data/extensions/default_theme/css/theme/chrome.scss +66 -0
  122. data/extensions/default_theme/css/theme/reset.scss +34 -0
  123. data/extensions/default_theme/css/theme/style.scss +3 -0
  124. data/extensions/default_theme/info.yml +2 -0
  125. data/extensions/default_theme/public/browse.png +0 -0
  126. data/extensions/default_theme/views/base/id_portfolio.haml +32 -0
  127. data/extensions/default_theme/views/base/show.haml +31 -0
  128. data/extensions/default_theme/views/errors/error.haml +9 -0
  129. data/extensions/default_theme/views/errors/not_found.haml +11 -0
  130. data/extensions/default_theme/views/layout.haml +33 -0
  131. data/lib/aura.rb +315 -0
  132. data/lib/aura/admin.rb +41 -0
  133. data/lib/aura/app.rb +4 -0
  134. data/lib/aura/cli.rb +19 -0
  135. data/lib/aura/cli/base.rb +89 -0
  136. data/lib/aura/cli/helpers.rb +32 -0
  137. data/lib/aura/editor.rb +30 -0
  138. data/lib/aura/extension.rb +189 -0
  139. data/lib/aura/files.rb +38 -0
  140. data/lib/aura/menu.rb +142 -0
  141. data/lib/aura/models.rb +80 -0
  142. data/lib/aura/public.rb +68 -0
  143. data/lib/aura/rendering.rb +134 -0
  144. data/lib/aura/seeder.rb +38 -0
  145. data/lib/aura/slugs.rb +87 -0
  146. data/lib/aura/subtype.rb +48 -0
  147. data/lib/aura/tasks.rb +24 -0
  148. data/lib/aura/tasks/common.rb +17 -0
  149. data/lib/aura/tasks/db.rake +54 -0
  150. data/lib/aura/utils.rb +81 -0
  151. data/lib/aura/version.rb +25 -0
  152. data/lib/core/hasharray.rb +65 -0
  153. data/lib/core/object_ext.rb +9 -0
  154. data/lib/sequel/plugins/aura_custom.rb +16 -0
  155. data/lib/sequel/plugins/aura_editable.rb +39 -0
  156. data/lib/sequel/plugins/aura_hierarchy.rb +82 -0
  157. data/lib/sequel/plugins/aura_model.rb +271 -0
  158. data/lib/sequel/plugins/aura_renderable.rb +42 -0
  159. data/lib/sequel/plugins/aura_sluggable.rb +103 -0
  160. data/lib/sequel/plugins/aura_subtyped.rb +83 -0
  161. data/lib/terra.rb +185 -0
  162. data/lib/terra/ext.rb +16 -0
  163. data/lib/terra/field.rb +98 -0
  164. data/lib/terra/fields.rb +122 -0
  165. data/lib/terra/fieldset.rb +93 -0
  166. data/lib/terra/form.rb +111 -0
  167. data/manual/configuration.md +42 -0
  168. data/manual/extensions.md +45 -0
  169. data/manual/files.md +70 -0
  170. data/manual/helpers.md +39 -0
  171. data/manual/index.md +65 -0
  172. data/manual/models.md +58 -0
  173. data/manual/recipes.md +38 -0
  174. data/manual/recipes/bundling_sample_data.md +30 -0
  175. data/manual/recipes/creating_themes.md +10 -0
  176. data/manual/recipes/using_markdown_or_textile.md +24 -0
  177. data/manual/routes.md +39 -0
  178. data/manual/theming.md +55 -0
  179. data/manual/views.md +128 -0
  180. data/public/hi.html +0 -0
  181. data/public/images/admin/back.png +0 -0
  182. data/public/images/admin/browse.png +0 -0
  183. data/public/images/admin/mock-bg.png +0 -0
  184. data/public/images/admin/top-loader.gif +0 -0
  185. data/public/images/admin/uiscreen-loader.gif +0 -0
  186. data/public/images/admin_icons/add.png +0 -0
  187. data/public/images/admin_icons/contact.png +0 -0
  188. data/public/images/admin_icons/dashboard.png +0 -0
  189. data/public/images/admin_icons/generic.png +0 -0
  190. data/public/images/admin_icons/home-12.png +0 -0
  191. data/public/images/admin_icons/page.png +0 -0
  192. data/public/images/admin_icons/settings.png +0 -0
  193. data/public/images/jquery.wysiwyg.gif +0 -0
  194. data/public/js/admin.form_builder.js +15 -0
  195. data/public/js/admin.js +62 -0
  196. data/public/js/admin.layout.js +53 -0
  197. data/public/js/admin.nav.js +241 -0
  198. data/public/js/admin.slug.js +46 -0
  199. data/public/js/admin.subpage.js +15 -0
  200. data/public/js/jquery.hashlisten.js +85 -0
  201. data/public/js/jquery.js +166 -0
  202. data/public/js/jquery.livenavigate.js +58 -0
  203. data/public/js/jquery.livequery.js +226 -0
  204. data/public/js/jquery.quickvalidate.js +164 -0
  205. data/public/js/jquery.tmpl.js +486 -0
  206. data/public/js/jquery.uiscreen.js +150 -0
  207. data/public/js/jquery.wysiwyg.js +2339 -0
  208. data/public/js/jqueryui.js +766 -0
  209. data/public/js/lib.dirty.js +11 -0
  210. data/public/js/lib.loading.js +23 -0
  211. data/public/js/lib.wysiwyg.js +155 -0
  212. data/public/js/underscore-1.1.7.js +27 -0
  213. data/test/app/app/css/test_raw.css +1 -0
  214. data/test/app/app/css/test_sass.sass +3 -0
  215. data/test/app/app/damogram.txt +1 -0
  216. data/test/app/app/js/test_coffee.coffee +4 -0
  217. data/test/app/app/js/test_javascript.js +4 -0
  218. data/test/app/init.rb +5 -0
  219. data/test/stories/admin_css_story.rb +18 -0
  220. data/test/stories/css_js_story.rb +29 -0
  221. data/test/stories/first_login_story.rb +29 -0
  222. data/test/stories/visit_story.rb +39 -0
  223. data/test/stories_helper.rb +58 -0
  224. data/test/test_cli_helper.rb +31 -0
  225. data/test/test_helper.rb +111 -0
  226. data/test/test_temp_helper.rb +9 -0
  227. data/test/unit/cli_test.rb +38 -0
  228. data/test/unit/dump_test.rb +14 -0
  229. data/test/unit/extensions_test.rb +18 -0
  230. data/test/unit/files_test.rb +14 -0
  231. data/test/unit/flash_helper_test.rb +36 -0
  232. data/test/unit/html_helper_test.rb +29 -0
  233. data/test/unit/jquery_helper_test.rb +18 -0
  234. data/test/unit/model_test.rb +34 -0
  235. data/test/unit/page_helpers_test.rb +36 -0
  236. data/test/unit/seeder_test.rb +15 -0
  237. data/test/unit/settings_test.rb +29 -0
  238. data/test/unit/slug_test.rb +39 -0
  239. data/test/unit/ss_migration_test.rb +14 -0
  240. data/test/unit/terra_test.rb +125 -0
  241. data/test/unit/utils_test.rb +11 -0
  242. data/vendor/sinatra-sequel/.gitignore +3 -0
  243. data/vendor/sinatra-sequel/COPYING +18 -0
  244. data/vendor/sinatra-sequel/README.md +84 -0
  245. data/vendor/sinatra-sequel/Rakefile +67 -0
  246. data/vendor/sinatra-sequel/lib/sinatra/sequel.rb +73 -0
  247. data/vendor/sinatra-sequel/sinatra-sequel.gemspec +39 -0
  248. data/vendor/sinatra-sequel/spec/spec_sinatra_sequel.rb +70 -0
  249. metadata +536 -0
@@ -0,0 +1,93 @@
1
+ # Class: Fieldset (Terra)
2
+ # A fieldset.
3
+ #
4
+ # ## Description
5
+ # See {Terra} for information on how to use the form builder.
6
+ #
7
+ module Terra
8
+ class Fieldset
9
+ def initialize(form, id, name=nil, options={})
10
+ @form = form
11
+ @id = id
12
+ @name = name
13
+ @fields = Array.new
14
+ end
15
+
16
+ # Method: field (Terra::Fieldset)
17
+ # Add (or get?) a field.
18
+ #
19
+ def field(type, id=nil, title=nil, options={})
20
+ return @fields.detect { |f| f.name == type } if id.nil?
21
+ @fields << Field.create(self, type, id, title, options)
22
+ end
23
+
24
+ # Attribute: name (Terra::Fieldset)
25
+ # The name of the field.
26
+ #
27
+ # ## Description
28
+ # This is also callable as `#to_s`.
29
+ #
30
+ def name
31
+ @name || @id.to_s.capitalize
32
+ end
33
+
34
+ alias to_s name
35
+
36
+ def clear
37
+ @fields = Array.new
38
+ end
39
+
40
+ def inspect
41
+ "#<Fieldset #{@id.inspect} [fields: #{fields.inspect}]>"
42
+ end
43
+
44
+ # Method: default? (Terra::Fieldset)
45
+ # Returns true if the fieldset is the default fieldset of the form.
46
+ def default?
47
+ @id == :default
48
+ end
49
+
50
+ # Method: to_html (Terra::Fieldset)
51
+ # Returns the HTML code for the entire fieldset.
52
+ #
53
+ # ## Description
54
+ # This calls puts together {Terra::Fieldset#legend_html} and
55
+ # {Terra::Fieldset#fields_html} inside a `<fieldset>` tag.
56
+ #
57
+ def to_html(item=nil)
58
+ [ "<fieldset name='#{id}'>",
59
+ legend_html, fields_html(item),
60
+ "</fieldset>" ].compact.join("\n")
61
+ end
62
+
63
+ # Method: fields_html (Terra::Fieldset)
64
+ # Returns the HTML code for the fields in the fieldset.
65
+ def fields_html(item=nil)
66
+ fields.map { |f| f.to_html(item.try(f.name.to_sym), item) }.join("\n")
67
+ end
68
+
69
+ # Method: legend_html (Terra::Fieldset)
70
+ # Returns the HTML code for the fields in the fieldset.
71
+ def legend_html
72
+ "<h3 class='legend'>#{self.to_s}</h3>" unless default?
73
+ end
74
+
75
+ # Attribute: fields (Terra::Fieldset)
76
+ # The list of fields.
77
+ attr_reader :fields
78
+
79
+ # Attribute: id (Terra::Fieldset)
80
+ # The symbol name of the field.
81
+ attr_reader :id
82
+
83
+ # Attribute: form (Terra::Fieldset)
84
+ # The parent Form.
85
+ attr_reader :form
86
+
87
+ # Shortcuts for text, textarea, password..
88
+ def method_missing(meth, *args, &blk)
89
+ super unless Fields.all.include?(meth)
90
+ field meth, *args
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,111 @@
1
+ # Class: Form (Terra)
2
+ # Terra is an HTML form generator.
3
+ #
4
+ # ## Description
5
+ # See {Terra} for information on how to use the form builder.
6
+ #
7
+ module Terra
8
+ class Form
9
+ def initialize
10
+ @fieldsets = Hash.new
11
+ fieldset(:default) { }
12
+ end
13
+
14
+ # Method: configure (Terra::Form)
15
+ # Usage: form.configure { ... }
16
+ #
17
+ # Adds fields to a form.
18
+ #
19
+ def configure(*a, &blk)
20
+ instance_eval *a, &blk
21
+ self
22
+ end
23
+
24
+ # Method: fieldset (Terra::Form)
25
+ # Usage: fieldset(id, name=nil, options={}, &block)
26
+ #
27
+ # Defines a fieldset.
28
+ #
29
+ def fieldset(id, name=nil, options={}, &block)
30
+ return @fieldsets[id] unless block_given?
31
+
32
+ @fieldsets[id] ||= Fieldset.new(self, id, name, options)
33
+ @fieldsets[id].clear
34
+ @fieldsets[id].instance_eval &block
35
+ end
36
+
37
+ # Method: field (Terra::Form)
38
+ # Usage: field name, options
39
+ # Defines a field.
40
+ #
41
+ # See {Terra::Fieldset.field} for details on how to use this.
42
+ #
43
+ def field(name, *a)
44
+ if a.empty?
45
+ set = fieldsets.detect { |set| set.field(name) }
46
+ set.field(name) unless set.nil?
47
+ else
48
+ fieldset(:default).field name, *a
49
+ end
50
+ end
51
+
52
+ def method_missing(meth, *args, &blk)
53
+ super unless Fields.all.include?(meth)
54
+ field meth, *args
55
+ end
56
+
57
+ # Method: name_root (Terra::Form)
58
+ # Usage: name_root str
59
+ #
60
+ # Changes the root name to the given string.
61
+ #
62
+ # ## Description
63
+ # The root name is the prefix for the `name` attributes.
64
+ #
65
+ # * When invoked with a string, it changes the root name.
66
+ # Example: (`root_name 'editor'` => `<input name='editor[name]'>`)
67
+ #
68
+ # * When invoked with an array, it changes the root names.
69
+ # Example: (`root_name %w(form user)` => `<input name='form[user][name]'>`)
70
+ #
71
+ # * When invoked without arguments, it returns the root name.
72
+ #
73
+ def root_name(str=nil)
74
+ @root_name ||= Array.new
75
+
76
+ if str.is_a?(Array)
77
+ @root_name = str
78
+ elsif !str.nil?
79
+ @root_name = [str]
80
+ end
81
+
82
+ @root_name
83
+ end
84
+
85
+ # Method: name_for (Terra::Form)
86
+ # Usage: name_for(string)
87
+ #
88
+ # Returns the name for a given field name.
89
+ #
90
+ # ## Example
91
+ # root_name 'editor'
92
+ # name_for('email') #=> 'editor[email]'
93
+ #
94
+ def name_for(str)
95
+ names = (root_name + [*str])
96
+ one = names[0]
97
+ two = names[1..-1].map { |s| "[#{s}]" }.join('')
98
+
99
+ "#{one}#{two}"
100
+ end
101
+
102
+ # Method: fieldsets (Terra::Form)
103
+ # Usage: fieldsets
104
+ #
105
+ # Returns an array of fieldsets.
106
+ #
107
+ def fieldsets
108
+ @fieldsets.values.sort_by { |fs| fs.to_s }
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,42 @@
1
+ title: Configuration
2
+ page_type: section
3
+ --
4
+
5
+ ## Application configuration
6
+
7
+ #### Configuration
8
+ Configuration is done by Sinatra's app configuration on `Main`.
9
+
10
+ Main.set :host, "Heroku"
11
+ Main.get(:host) #=> "Heroku"
12
+ Main.host #=> "Heroku"
13
+ Main.host? #=> true
14
+
15
+ #### The config folder
16
+ Configuration is usually stored in your app's `config/` folder as
17
+ plain `.rb` files.
18
+
19
+ [config/database.rb (ruby)]
20
+ Main.configure do |m|
21
+ m.set :database_url, "sqlite://db/database.db"
22
+ end
23
+
24
+ # Just for the test environment
25
+ Main.configure(:test) do |m|
26
+ m.set :database_url, "sqlite://db/test.db"
27
+ end
28
+
29
+ ## Dynamic configuration
30
+
31
+ Aura has a small settings system for user-settable things that is separate from above.
32
+ All of these are stored in the database.
33
+
34
+ #### Using set and get
35
+ Use `Aura.set` and `Aura.get`. The value supports strings, integers, arrays
36
+ and hashes. (They are stored as YAML in the database.)
37
+
38
+ Aura.set "site.name", "Jenny's Diary"
39
+ Aura.set "site.description", "Thoughts of a 17-year-old"
40
+
41
+ Aura.get("site.name")
42
+
@@ -0,0 +1,45 @@
1
+ title: Extensions
2
+ page_type: section
3
+ --
4
+ (TODO: Update this to be easier to read)
5
+
6
+ You may package your entire `app/` folder as an extension by copying it into
7
+ `extensions/my_extension/`. You may then redistribute it for using in other
8
+ Aura apps.
9
+
10
+ (All files and folders above are optional. Just use what you need!)
11
+
12
+ - Each extension can have `models/`, `routes/` and `helpers/` and
13
+ all Ruby files inside them are autoloaded.
14
+ - You may also have a YAML file called `info.yml`, which hosts metadata
15
+ about your extension.
16
+ - The directories described above are all optional.
17
+
18
+ ## Extensions
19
+
20
+ Custom extensions go into `extensions/<extension_name>/`.
21
+ Here's what happens when the extension is loaded:
22
+
23
+ - After everything is set up, `extension_name.rb` is loaded.
24
+ - `init.rb` is called after all extensions are loaded.
25
+ - All Ruby files are loaded from `init/`, `models/`, `helpers/`, and `routes/`.
26
+
27
+ ## Metadata
28
+
29
+ #### Defining metadata
30
+ Use `info.yml` in your extension.
31
+
32
+ [extensions/twitter/info.yml (yaml)]
33
+ name: Twitter integration
34
+ author: Rico Sta. Cruz
35
+ description: Shows twitter feeds in the home page.
36
+
37
+ ## Loading extensions
38
+
39
+ #### Loading extensions
40
+ Edit `config/extensions.rb` of your app.
41
+
42
+ [config/extensions.rb (ruby)]
43
+ Main.configure do |m|
44
+ m.set :additional_extensions, %w(default_theme)
45
+ end
@@ -0,0 +1,70 @@
1
+ title: File structure
2
+ page_type: section
3
+ --
4
+ This is what your default project looks like when you use `aura new`.
5
+
6
+ #### Structure
7
+ Your project looks like this. Most it's guts will be in `app/`.
8
+
9
+ [(text)]
10
+ project/
11
+ |- app/
12
+ | |- css/ # CSS files
13
+ | |- js/ # JS files
14
+ | |
15
+ | |- models/ # Models
16
+ | |- helpers/ # Helpers
17
+ | |- routes/ # Sinatra Routes
18
+ | |- views/ # View files
19
+ | |
20
+ | |- init/ # Ruby files to be ran on app init
21
+ | |- migrations/ # Data migration files
22
+ |
23
+ |- config/ # User config
24
+ |- public/ # Public files
25
+ |
26
+ |- config.ru
27
+ |- Gemfile
28
+ |- init.rb
29
+ |- Rakefile
30
+ |- README.md
31
+
32
+ ## app/
33
+
34
+ #### app/css/
35
+ This contains your CSS files. Anything here will be accessible via `/css`.
36
+
37
+ app/css/style.css
38
+ app/css/theme/screen.sass
39
+ app/css/theme/print.css
40
+
41
+ #### app/js/
42
+ JavaScript files. They will be accessible via `/js`.
43
+
44
+ app/js/application.js
45
+
46
+ #### app/models/
47
+ Models here. All Ruby files here will be loaded on app init.
48
+
49
+ app/models/page.rb
50
+ app/models/book.rb
51
+ app/models/movie.rb
52
+
53
+ #### app/helpers/
54
+ Helpers here. All Ruby files here will be loaded on app init.
55
+
56
+ app/helpers/page_helpers.rb
57
+ app/helpers/time_helpers.rb
58
+
59
+ #### app/routes/
60
+ Sinatra routes here. All Ruby files here will be loaded on app init.
61
+
62
+ app/routes/store.rb
63
+ app/routes/background.rb
64
+
65
+ # Example:
66
+ class Main
67
+ get '/foo' do
68
+ show :foo
69
+ end
70
+ end
@@ -0,0 +1,39 @@
1
+ title: Helpers
2
+ page_type: section
3
+ --
4
+ Helpers are defined and used exactly as how you would in Sinatra.
5
+
6
+ #### Defining helpers
7
+ Create a file in the `app/helpers/` folder of your app.
8
+
9
+ [app/helpers/my_helpers.rb (rb)]
10
+ class Main
11
+ module MyHelpers
12
+ def who_is_awesome
13
+ "You are!"
14
+ end
15
+ end
16
+
17
+ helpers MyHelpers
18
+ end
19
+
20
+ #### Using helpers in views
21
+ You can then use it in views.
22
+
23
+ [app/views/index.haml (haml)]
24
+ %div.question
25
+ Who is awesome?
26
+
27
+ %div.answer
28
+ = who_is_awesome
29
+
30
+ #### Using helpers in routes
31
+ Yeah, you can.
32
+
33
+ [app/routes/foo.rb (rb)]
34
+ class Main
35
+ get '/who_is_awesome' do
36
+ @who = who_is_awesome
37
+ show :index
38
+ end
39
+ end
@@ -0,0 +1,65 @@
1
+ title: Aura
2
+ --
3
+ Aura lets you build CMS-powered sites in Ruby.
4
+
5
+ #### Installation
6
+ Assuming you have Ruby installed (at least 1.8.7), just install the gem.
7
+
8
+ $ gem install aura --pre
9
+
10
+ $ aura
11
+
12
+ Getting started
13
+ ---------------
14
+
15
+ #### Start a new project
16
+ Start a new project using [aura new](aura_new.html). This creates a folder with a simple bare-bone Aura project.
17
+
18
+ $ aura new myproject
19
+ create myproject/
20
+ create myproject/config.ru
21
+ create myproject/init.rb
22
+ create myproject/app/
23
+ create myproject/app/models/
24
+ create myproject/app/models/page.rb.example
25
+ ...
26
+
27
+ #### Install the needed gems
28
+ Using Bundler, this is pretty easy.
29
+
30
+ $ cd myproject/
31
+ $ bundle install
32
+ ...
33
+
34
+ #### Configure a database (optional)
35
+ Sequel uses Sqlite by default. To point it to another database, edit the `config/database.rb.example` file.
36
+
37
+ [config/database.rb (rb)]
38
+ Main.configure do |m|
39
+ m.set :database_url, "mysql://root:pickles@localhost/db_name"
40
+ end
41
+
42
+
43
+ #### Start it up
44
+ Your app is a Rack app. Visit *http://localhost:4833* to see it. (Default user is `test@sinefunc.com`/`password`)
45
+
46
+ $ thin start
47
+ * Starting server...
48
+ >> Thin web server (v1.2.11 codename Bat-Shit Crazy)
49
+ >> Maximum connections set to 1024
50
+ >> Listening on 0.0.0.0:4833, CTRL+C to stop
51
+
52
+ ## Features
53
+
54
+ * **For designers** and site builders:
55
+ * Be in full control of markup, and write in whatever template language you're comfortable with.
56
+ * Build custom page types that will the custom fields you need with the template you define.
57
+
58
+ * **For site owners:**
59
+ * Use a CMS with an interface you will love, rather than put up with.
60
+
61
+ * **For developers:**
62
+ * Easy-to-extend with a simple extension system.
63
+ * Built on top of [Sinatra](http://sinatrarb.com), a tried and tested microframework.
64
+
65
+ [Source code on GitHub](http://github.com/buildwithaura/aura "Source code")