aura 0.0.1.pre10
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/.travis.yml +3 -0
- data/Gemfile +2 -0
- data/HISTORY.md +95 -0
- data/README.md +53 -0
- data/Rakefile +27 -0
- data/Scribefile +8 -0
- data/app/css/_utilities.scss +88 -0
- data/app/css/admin.scss +21 -0
- data/app/css/admin/_settings.scss +136 -0
- data/app/css/admin/chrome.scss +208 -0
- data/app/css/admin/common.scss +78 -0
- data/app/css/admin/forms.scss +342 -0
- data/app/css/admin/jquery_wysiwyg.scss +96 -0
- data/app/css/admin/loading.scss +18 -0
- data/app/css/admin/meta.scss +42 -0
- data/app/css/admin/reset.scss +46 -0
- data/app/css/admin/sections.scss +79 -0
- data/app/css/admin/setup.scss +22 -0
- data/app/css/admin/sidebar.scss +136 -0
- data/app/css/admin/slug.scss +78 -0
- data/app/css/admin/uiscreen.scss +22 -0
- data/app/css/admin/wysiwyg_field.scss +11 -0
- data/app/css/admin_watermark.scss +23 -0
- data/app/css/default_home_page.scss +13 -0
- data/app/css/login.scss +47 -0
- data/app/helpers/admin_helpers.rb +59 -0
- data/app/helpers/flash_helpers.rb +86 -0
- data/app/helpers/form_builder_helpers.rb +9 -0
- data/app/helpers/html_helpers.rb +27 -0
- data/app/helpers/jquery_helpers.rb +26 -0
- data/app/helpers/main_helpers.rb +67 -0
- data/app/helpers/page_helpers.rb +92 -0
- data/app/helpers/template_helpers.rb +94 -0
- data/app/helpers/user_helpers.rb +45 -0
- data/app/init/admin.rb +34 -0
- data/app/init/extensions.rb +18 -0
- data/app/init/pistol.rb +11 -0
- data/app/init/sequel.rb +11 -0
- data/app/main.rb +106 -0
- data/app/migrations/page.rb +29 -0
- data/app/migrations/settings.rb +11 -0
- data/app/migrations/user.rb +13 -0
- data/app/models/page.rb +116 -0
- data/app/models/page_seed.rb +47 -0
- data/app/models/settings.rb +59 -0
- data/app/models/user.rb +60 -0
- data/app/routes/admin.rb +44 -0
- data/app/routes/css_js.rb +53 -0
- data/app/routes/design_tests.rb +15 -0
- data/app/routes/editor.rb +152 -0
- data/app/routes/site.rb +33 -0
- data/app/routes/user.rb +48 -0
- data/app/views/admin/_back_to_dashboard.haml +3 -0
- data/app/views/admin/dashboard.haml +46 -0
- data/app/views/admin/layout.haml +73 -0
- data/app/views/admin/settings.haml +40 -0
- data/app/views/admin/settings/database.haml +42 -0
- data/app/views/base/crumbs.haml +50 -0
- data/app/views/base/delete.haml +19 -0
- data/app/views/base/edit.haml +61 -0
- data/app/views/base/errors.haml +10 -0
- data/app/views/base/form.haml +11 -0
- data/app/views/base/list.haml +14 -0
- data/app/views/base/list_actions.haml +4 -0
- data/app/views/base/list_item.haml +7 -0
- data/app/views/base/nav.haml +36 -0
- data/app/views/base/new.haml +36 -0
- data/app/views/base/preview.haml +28 -0
- data/app/views/base/tabs.haml +12 -0
- data/app/views/default_home_page.haml +15 -0
- data/app/views/design_tests/admin_styles.haml +58 -0
- data/app/views/form_builder/builder.haml +29 -0
- data/app/views/page/edit.haml +29 -0
- data/app/views/page/form.haml +22 -0
- data/app/views/page/meta_form.haml +22 -0
- data/app/views/page/new.haml +26 -0
- data/app/views/user/edit.haml +52 -0
- data/app/views/user/form.haml +43 -0
- data/app/views/user/list.haml +11 -0
- data/app/views/user/login.haml +33 -0
- data/app/views/user/new.haml +25 -0
- data/app/views/user/welcome.haml +29 -0
- data/app/views/watermark/watermark.haml +16 -0
- data/aura.gemspec +36 -0
- data/bin/aura +8 -0
- data/config/database.rb +12 -0
- data/config/extensions.rb +5 -0
- data/config/scss.rb +14 -0
- data/config/user.rb +10 -0
- data/default/.gitignore +6 -0
- data/default/Gemfile +11 -0
- data/default/README.md +24 -0
- data/default/Rakefile +8 -0
- data/default/app/README +3 -0
- data/default/app/css/.gitignore +0 -0
- data/default/app/helpers/helpers.rb.example +9 -0
- data/default/app/js/.gitignore +0 -0
- data/default/app/migrations/model.rb.example +20 -0
- data/default/app/models/model.rb.example +11 -0
- data/default/app/models/page-ext.rb.example +17 -0
- data/default/app/routes/site.rb.example +5 -0
- data/default/app/views/hello.haml.example +1 -0
- data/default/config.ru +3 -0
- data/default/config/.gitignore +0 -0
- data/default/config/database.rb.example +30 -0
- data/default/config/extensions.rb +5 -0
- data/default/config/user.rb.example +10 -0
- data/default/db/.gitignore +0 -0
- data/default/init.rb +15 -0
- data/default/public/.gitignore +0 -0
- data/extensions/contact_form/migrations/contact_form.rb +13 -0
- data/extensions/contact_form/models/contact_form.rb +13 -0
- data/extensions/contact_form/routes/contact_form.rb +11 -0
- data/extensions/contact_form/views/contact_form/edit.haml +8 -0
- data/extensions/contact_form/views/contact_form/form.haml +3 -0
- data/extensions/contact_form/views/contact_form/nav.haml +42 -0
- data/extensions/contact_form/views/contact_form/responses.haml +20 -0
- data/extensions/contact_form/views/contact_form/tabs.haml +8 -0
- data/extensions/default_theme/css/theme/_settings.scss +3 -0
- data/extensions/default_theme/css/theme/chrome.scss +66 -0
- data/extensions/default_theme/css/theme/reset.scss +34 -0
- data/extensions/default_theme/css/theme/style.scss +3 -0
- data/extensions/default_theme/info.yml +2 -0
- data/extensions/default_theme/public/browse.png +0 -0
- data/extensions/default_theme/views/base/id_portfolio.haml +32 -0
- data/extensions/default_theme/views/base/show.haml +31 -0
- data/extensions/default_theme/views/errors/error.haml +9 -0
- data/extensions/default_theme/views/errors/not_found.haml +11 -0
- data/extensions/default_theme/views/layout.haml +33 -0
- data/lib/aura.rb +315 -0
- data/lib/aura/admin.rb +41 -0
- data/lib/aura/app.rb +4 -0
- data/lib/aura/cli.rb +19 -0
- data/lib/aura/cli/base.rb +89 -0
- data/lib/aura/cli/helpers.rb +32 -0
- data/lib/aura/editor.rb +30 -0
- data/lib/aura/extension.rb +189 -0
- data/lib/aura/files.rb +38 -0
- data/lib/aura/menu.rb +142 -0
- data/lib/aura/models.rb +80 -0
- data/lib/aura/public.rb +68 -0
- data/lib/aura/rendering.rb +134 -0
- data/lib/aura/seeder.rb +38 -0
- data/lib/aura/slugs.rb +87 -0
- data/lib/aura/subtype.rb +48 -0
- data/lib/aura/tasks.rb +24 -0
- data/lib/aura/tasks/common.rb +17 -0
- data/lib/aura/tasks/db.rake +54 -0
- data/lib/aura/utils.rb +81 -0
- data/lib/aura/version.rb +25 -0
- data/lib/core/hasharray.rb +65 -0
- data/lib/core/object_ext.rb +9 -0
- data/lib/sequel/plugins/aura_custom.rb +16 -0
- data/lib/sequel/plugins/aura_editable.rb +39 -0
- data/lib/sequel/plugins/aura_hierarchy.rb +82 -0
- data/lib/sequel/plugins/aura_model.rb +271 -0
- data/lib/sequel/plugins/aura_renderable.rb +42 -0
- data/lib/sequel/plugins/aura_sluggable.rb +103 -0
- data/lib/sequel/plugins/aura_subtyped.rb +83 -0
- data/lib/terra.rb +185 -0
- data/lib/terra/ext.rb +16 -0
- data/lib/terra/field.rb +98 -0
- data/lib/terra/fields.rb +122 -0
- data/lib/terra/fieldset.rb +93 -0
- data/lib/terra/form.rb +111 -0
- data/manual/configuration.md +42 -0
- data/manual/extensions.md +45 -0
- data/manual/files.md +70 -0
- data/manual/helpers.md +39 -0
- data/manual/index.md +65 -0
- data/manual/models.md +58 -0
- data/manual/recipes.md +38 -0
- data/manual/recipes/bundling_sample_data.md +30 -0
- data/manual/recipes/creating_themes.md +10 -0
- data/manual/recipes/using_markdown_or_textile.md +24 -0
- data/manual/routes.md +39 -0
- data/manual/theming.md +55 -0
- data/manual/views.md +128 -0
- data/public/hi.html +0 -0
- data/public/images/admin/back.png +0 -0
- data/public/images/admin/browse.png +0 -0
- data/public/images/admin/mock-bg.png +0 -0
- data/public/images/admin/top-loader.gif +0 -0
- data/public/images/admin/uiscreen-loader.gif +0 -0
- data/public/images/admin_icons/add.png +0 -0
- data/public/images/admin_icons/contact.png +0 -0
- data/public/images/admin_icons/dashboard.png +0 -0
- data/public/images/admin_icons/generic.png +0 -0
- data/public/images/admin_icons/home-12.png +0 -0
- data/public/images/admin_icons/page.png +0 -0
- data/public/images/admin_icons/settings.png +0 -0
- data/public/images/jquery.wysiwyg.gif +0 -0
- data/public/js/admin.form_builder.js +15 -0
- data/public/js/admin.js +62 -0
- data/public/js/admin.layout.js +53 -0
- data/public/js/admin.nav.js +241 -0
- data/public/js/admin.slug.js +46 -0
- data/public/js/admin.subpage.js +15 -0
- data/public/js/jquery.hashlisten.js +85 -0
- data/public/js/jquery.js +166 -0
- data/public/js/jquery.livenavigate.js +58 -0
- data/public/js/jquery.livequery.js +226 -0
- data/public/js/jquery.quickvalidate.js +164 -0
- data/public/js/jquery.tmpl.js +486 -0
- data/public/js/jquery.uiscreen.js +150 -0
- data/public/js/jquery.wysiwyg.js +2339 -0
- data/public/js/jqueryui.js +766 -0
- data/public/js/lib.dirty.js +11 -0
- data/public/js/lib.loading.js +23 -0
- data/public/js/lib.wysiwyg.js +155 -0
- data/public/js/underscore-1.1.7.js +27 -0
- data/test/app/app/css/test_raw.css +1 -0
- data/test/app/app/css/test_sass.sass +3 -0
- data/test/app/app/damogram.txt +1 -0
- data/test/app/app/js/test_coffee.coffee +4 -0
- data/test/app/app/js/test_javascript.js +4 -0
- data/test/app/init.rb +5 -0
- data/test/stories/admin_css_story.rb +18 -0
- data/test/stories/css_js_story.rb +29 -0
- data/test/stories/first_login_story.rb +29 -0
- data/test/stories/visit_story.rb +39 -0
- data/test/stories_helper.rb +58 -0
- data/test/test_cli_helper.rb +31 -0
- data/test/test_helper.rb +111 -0
- data/test/test_temp_helper.rb +9 -0
- data/test/unit/cli_test.rb +38 -0
- data/test/unit/dump_test.rb +14 -0
- data/test/unit/extensions_test.rb +18 -0
- data/test/unit/files_test.rb +14 -0
- data/test/unit/flash_helper_test.rb +36 -0
- data/test/unit/html_helper_test.rb +29 -0
- data/test/unit/jquery_helper_test.rb +18 -0
- data/test/unit/model_test.rb +34 -0
- data/test/unit/page_helpers_test.rb +36 -0
- data/test/unit/seeder_test.rb +15 -0
- data/test/unit/settings_test.rb +29 -0
- data/test/unit/slug_test.rb +39 -0
- data/test/unit/ss_migration_test.rb +14 -0
- data/test/unit/terra_test.rb +125 -0
- data/test/unit/utils_test.rb +11 -0
- data/vendor/sinatra-sequel/.gitignore +3 -0
- data/vendor/sinatra-sequel/COPYING +18 -0
- data/vendor/sinatra-sequel/README.md +84 -0
- data/vendor/sinatra-sequel/Rakefile +67 -0
- data/vendor/sinatra-sequel/lib/sinatra/sequel.rb +73 -0
- data/vendor/sinatra-sequel/sinatra-sequel.gemspec +39 -0
- data/vendor/sinatra-sequel/spec/spec_sinatra_sequel.rb +70 -0
- metadata +536 -0
data/manual/models.md
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
title: Models
|
2
|
+
page_type: section
|
3
|
+
--
|
4
|
+
All models are Sequel models. Aura also uses the Sequel plugin system.
|
5
|
+
|
6
|
+
#### Creating a model
|
7
|
+
Subclass `Sequel::Model`.
|
8
|
+
|
9
|
+
[app/models/movie.rb (ruby)]
|
10
|
+
class Movie < Sequel::Model
|
11
|
+
# ...
|
12
|
+
end
|
13
|
+
|
14
|
+
#### Setting up migrations
|
15
|
+
Migrations are defined in `app/migrations/`. Use
|
16
|
+
[Sinatra-Sequel](http://github.com/rtomayko/sinatra-sequel)'s `migration`
|
17
|
+
method in your migrations files.
|
18
|
+
|
19
|
+
[app/migrations/movie.rb (ruby)]
|
20
|
+
class Main
|
21
|
+
migration "foo v0.0.1 - create" do
|
22
|
+
database.create_table do
|
23
|
+
primary_key :id
|
24
|
+
|
25
|
+
String :name
|
26
|
+
String :description
|
27
|
+
|
28
|
+
# ...
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
#### Setting up plugins
|
34
|
+
Use Sequel's `plugin` class method.
|
35
|
+
|
36
|
+
[app/models/movie.rb (ruby)]
|
37
|
+
class Movie < Sequel::Model
|
38
|
+
plugin :aura_editable
|
39
|
+
plugin :aura_sluggable
|
40
|
+
plugin :aura_hierarchy
|
41
|
+
end
|
42
|
+
|
43
|
+
## Example
|
44
|
+
|
45
|
+
In your extension, create a model file like so.
|
46
|
+
|
47
|
+
# extensions/myext/models/post.rb
|
48
|
+
class Post < Sequel::Model
|
49
|
+
|
50
|
+
# put guts here
|
51
|
+
# for example:
|
52
|
+
|
53
|
+
plugin :aura_editable
|
54
|
+
plugin :aura_sluggable
|
55
|
+
|
56
|
+
def shown_in_menu?() true; end
|
57
|
+
end
|
58
|
+
|
data/manual/recipes.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
title: Recipes
|
2
|
+
page_type: section
|
3
|
+
--
|
4
|
+
## Creating custom page types
|
5
|
+
|
6
|
+
#### Use subtype
|
7
|
+
In your model:
|
8
|
+
|
9
|
+
class Page < Sequel::Model
|
10
|
+
subtype :portfolio,
|
11
|
+
:name => "Portfolio page",
|
12
|
+
:template => "id_portfolio"
|
13
|
+
|
14
|
+
custom_field :excerpt
|
15
|
+
|
16
|
+
form :portfolio do
|
17
|
+
text :excerpt, "Portfolio excerpt"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
## Adding something to the admin sidebar
|
22
|
+
|
23
|
+
#### Adding models
|
24
|
+
If it's a model you want on there:
|
25
|
+
|
26
|
+
class MyModel < Sequel::Model
|
27
|
+
def self.show_on_sidebar?; true; end
|
28
|
+
end
|
29
|
+
|
30
|
+
#### The rest
|
31
|
+
For anything else, put this in your app's initializers. (See {Aura::Menu} for more info)
|
32
|
+
|
33
|
+
[app/init/menu.rb (ruby)]
|
34
|
+
Aura.admin.menu.add "id",
|
35
|
+
:name => "My menu entry",
|
36
|
+
:href => '/admin/foo',
|
37
|
+
:icon => 'settings'
|
38
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
title: Bundling sample data
|
2
|
+
--
|
3
|
+
You may want to bundle some sample data with the application when you deploy.
|
4
|
+
This may be useful when you're delivering the CMS as one self-contained
|
5
|
+
package to your client.
|
6
|
+
|
7
|
+
#### Freeze your data
|
8
|
+
Assuming you have Aura working locally, freeze it using `rake db:dump`.
|
9
|
+
This creates a `config/seed.yml` file.
|
10
|
+
|
11
|
+
$ rake db:dump
|
12
|
+
* Working...
|
13
|
+
* Writing to config/seed.yml...
|
14
|
+
|
15
|
+
Done.
|
16
|
+
|
17
|
+
...
|
18
|
+
|
19
|
+
#### config/seed.yml
|
20
|
+
Be sure to add this file to your repository.
|
21
|
+
|
22
|
+
$ ls -la config/seed.yml
|
23
|
+
-rw-r--r-- 1 rsc staff 28115 Jul 23 23:14 seed.yml
|
24
|
+
|
25
|
+
$ git add config/seed.yml
|
26
|
+
|
27
|
+
The next time your application starts, it will rebuild the database from
|
28
|
+
that snapshot. You can use `rake db:flush` to ensure that this will
|
29
|
+
happen the next time the application loads.
|
30
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
title: Creating themes
|
2
|
+
--
|
3
|
+
A theme is just an extension.
|
4
|
+
|
5
|
+
- Make an extension that has a `mytheme/views/` folder
|
6
|
+
- Make up a `mytheme/views/layout.haml`
|
7
|
+
- Override the look of a page in `mytheme/views/base/default.haml`
|
8
|
+
- Put public stuff (images et al) in `mytheme/public/`
|
9
|
+
- Put CSS files in `mytheme/views/css/`
|
10
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
title: Using Markdown or Textile
|
2
|
+
--
|
3
|
+
|
4
|
+
#### Custom formatting
|
5
|
+
You can use Markdown in your CMS. Go to HTML editing mode, and simply use
|
6
|
+
`<div format='markdown'>` on a block you want to Markdown-ify.
|
7
|
+
|
8
|
+
<div format='markdown'>
|
9
|
+
### Hello
|
10
|
+
|
11
|
+
* This is Markdown text.
|
12
|
+
* In your site, this will look just like how it should be.
|
13
|
+
</div>
|
14
|
+
|
15
|
+
#### Textile
|
16
|
+
To use Textile, just use `format='textile'` instead.
|
17
|
+
|
18
|
+
<div format='textile'>
|
19
|
+
h3. Hello again
|
20
|
+
|
21
|
+
* This is Textile text!
|
22
|
+
* In your site, this will look just like how it should be.
|
23
|
+
</div>
|
24
|
+
|
data/manual/routes.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
title: Routes
|
2
|
+
page_type: section
|
3
|
+
--
|
4
|
+
Routes are defined and used exactly as how you would in Sinatra.
|
5
|
+
|
6
|
+
#### Defining routes
|
7
|
+
Create a file in the `app/routes/` folder of your app.
|
8
|
+
|
9
|
+
[app/routes/foo.rb (rb)]
|
10
|
+
class Main
|
11
|
+
get '/foo' do
|
12
|
+
show :foo
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
#### Handling 404's
|
17
|
+
You should use `pass` instead of `not_found`. This lets the default
|
18
|
+
Aura routes pick it up in case it points to something else.
|
19
|
+
|
20
|
+
[app/routes/foo.rb (rb)]
|
21
|
+
class Main
|
22
|
+
get '/book/:id' do |id|
|
23
|
+
@book = Book[id] or pass
|
24
|
+
|
25
|
+
# ...
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
#### Defining admin pages
|
30
|
+
Use the `show_admin` and `require_login` helpers.
|
31
|
+
|
32
|
+
[app/routes/foo.rb (rb)]
|
33
|
+
class Main
|
34
|
+
get '/admin/something' do |id|
|
35
|
+
require_login
|
36
|
+
|
37
|
+
show_admin :something
|
38
|
+
end
|
39
|
+
end
|
data/manual/theming.md
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
title: Theming
|
2
|
+
page_type: section
|
3
|
+
--
|
4
|
+
## Themes
|
5
|
+
#### Theming
|
6
|
+
Just change the views.
|
7
|
+
|
8
|
+
$
|
9
|
+
app/views/layout.haml
|
10
|
+
app/views/page/show.haml
|
11
|
+
|
12
|
+
## CSS
|
13
|
+
|
14
|
+
#### Adding CSS
|
15
|
+
Put files in `app/css/`. You can put Sass, SCSS, Less or plain CSS files.
|
16
|
+
|
17
|
+
[app/css/main.scss (css)]
|
18
|
+
$red: #833;
|
19
|
+
|
20
|
+
#main {
|
21
|
+
color: $red;
|
22
|
+
}
|
23
|
+
|
24
|
+
#### Accessing them
|
25
|
+
These files will be accessible in `http://localhost:4567/css`. For example,
|
26
|
+
these paths may correspond to the following files.
|
27
|
+
|
28
|
+
$ http://localhost:4567/css/screen.css
|
29
|
+
# ~/myapp/app/css/screen.css
|
30
|
+
|
31
|
+
$ http://localhost:4567/css/main.css
|
32
|
+
# ~/myapp/app/css/main.scss (Rendered by Sass CSS)
|
33
|
+
|
34
|
+
$ http://localhost:4567/css/admin/top.css
|
35
|
+
# ~/myapp/app/css/admin/top.less (Rendered by Less)
|
36
|
+
|
37
|
+
## JavaScript
|
38
|
+
|
39
|
+
#### Adding JavaScript
|
40
|
+
You may put files in `app/js/`. You can put CoffeeScript in here as well.
|
41
|
+
|
42
|
+
[app/js/application.js (js)]
|
43
|
+
$(function() {
|
44
|
+
$("#top").show();
|
45
|
+
});
|
46
|
+
|
47
|
+
#### Accessing them
|
48
|
+
These files will be accessible in `http://localhost:4567/js`. For example,
|
49
|
+
these paths may correspond to the following files.
|
50
|
+
|
51
|
+
$ http://localhost:4567/js/prototype.js
|
52
|
+
# ~/myapp/app/js/prototype.js
|
53
|
+
|
54
|
+
$ http://localhost:4567/js/main.js
|
55
|
+
# ~/myapp/app/js/main.coffee (Rendered by CoffeeScript)
|
data/manual/views.md
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
title: Views
|
2
|
+
page_type: section
|
3
|
+
--
|
4
|
+
Aura has a unique way of handling views, different from Sinatra's `render`.
|
5
|
+
|
6
|
+
#### Creating views
|
7
|
+
To create a view, put them in the `view/` folder of your extension.
|
8
|
+
|
9
|
+
[app/views/hello.haml (haml)]
|
10
|
+
%h1
|
11
|
+
Hello, world!
|
12
|
+
|
13
|
+
#### Showing views
|
14
|
+
Now call it in your Ruby code using `show`.
|
15
|
+
Unlike Sinatra's `render`, using `show` will automatically try and find the file
|
16
|
+
in the view directories of all extensions, and guess the right filetype based
|
17
|
+
on the extension.
|
18
|
+
|
19
|
+
[app/routes/hello.rb (ruby)]
|
20
|
+
get '/hello' do
|
21
|
+
show :hello
|
22
|
+
end
|
23
|
+
|
24
|
+
#### Showing views for models
|
25
|
+
You can pass a model to `show`. In this example, since the record is a `Page`,
|
26
|
+
Aura will render `:page/index` or `:base/index`, whichever it finds first.
|
27
|
+
|
28
|
+
page = Page['/about.html']
|
29
|
+
|
30
|
+
show page, :index
|
31
|
+
|
32
|
+
## Partials
|
33
|
+
|
34
|
+
#### Using Partials
|
35
|
+
Aura provides a `partial` helper.
|
36
|
+
|
37
|
+
[app/views/hello.haml (haml)]
|
38
|
+
%hgroup
|
39
|
+
!= partial :'hello/heading', title: 'Hello'
|
40
|
+
|
41
|
+
#### Defining partials
|
42
|
+
[extension/myext/views/hello/heading.haml (haml)]
|
43
|
+
%h1= title
|
44
|
+
|
45
|
+
## Layouts
|
46
|
+
|
47
|
+
#### Defining layouts
|
48
|
+
Use the `layout` helper to define which layout will be used. This example will look for
|
49
|
+
a view called `cart.haml` (or any other layout extension).
|
50
|
+
|
51
|
+
[app/views/cart/list.haml (haml)]
|
52
|
+
- layout 'cart'
|
53
|
+
|
54
|
+
%h1 Your shopping cart
|
55
|
+
|
56
|
+
#### Layout files
|
57
|
+
Layouts are ordinary view files that use `yield`.
|
58
|
+
|
59
|
+
[app/views/cart.haml (haml)]
|
60
|
+
!!! 5
|
61
|
+
%html
|
62
|
+
%title Shopping cart
|
63
|
+
%body(class='cart')
|
64
|
+
!= yield
|
65
|
+
|
66
|
+
#### Nested layouts
|
67
|
+
You may nest layouts using the `layout` helper in layouts as well. This example
|
68
|
+
will place everything inside the `default.haml` layout.
|
69
|
+
|
70
|
+
[app/views/cart.haml (haml)]
|
71
|
+
- layout 'default'
|
72
|
+
|
73
|
+
%section#cart
|
74
|
+
!= yield
|
75
|
+
|
76
|
+
## Content sections
|
77
|
+
|
78
|
+
#### Content sections
|
79
|
+
Aura uses `sinatra-content-for`. In your views, you can use the `content_for` helper.
|
80
|
+
|
81
|
+
[app/views/cart/list.haml (haml)]
|
82
|
+
- layout 'cart'
|
83
|
+
|
84
|
+
- content_for :sidebar do
|
85
|
+
%h3 Your cart
|
86
|
+
%a(href='/checkout') Checkout
|
87
|
+
%a(href='/') Continue shopping
|
88
|
+
|
89
|
+
#### Defining regions
|
90
|
+
In your layout, use `yield_content` to show the content for it.
|
91
|
+
|
92
|
+
[app/views/cart.haml (haml)]
|
93
|
+
%aside#sidebar
|
94
|
+
!= yield_content :sidebar
|
95
|
+
|
96
|
+
|
97
|
+
## View folders
|
98
|
+
|
99
|
+
Using `show` will find the file in all view directories. Those are:
|
100
|
+
|
101
|
+
- Your app's view path (`app/views/`)
|
102
|
+
- Views in your extensions
|
103
|
+
- The default views in the Aura gem
|
104
|
+
|
105
|
+
#### Example
|
106
|
+
For instance, if you have this structure:
|
107
|
+
|
108
|
+
extensions/
|
109
|
+
'- one/
|
110
|
+
| '- views/
|
111
|
+
| |- home.haml
|
112
|
+
| '- footer.haml
|
113
|
+
'- two/
|
114
|
+
'- views/
|
115
|
+
'- header.erb
|
116
|
+
|
117
|
+
#### for #show
|
118
|
+
You can then use:
|
119
|
+
|
120
|
+
show :home # Finds one/views/home.haml
|
121
|
+
show :footer # Finds one/views/footer.haml
|
122
|
+
show :header # Finds two/views/header.erb
|
123
|
+
|
124
|
+
#### for #partial
|
125
|
+
This is also done for partials:
|
126
|
+
|
127
|
+
partial :header # Finds views/header.erb
|
128
|
+
partial :header, :name => "Archer"
|
data/public/hi.html
ADDED
File without changes
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,15 @@
|
|
1
|
+
;(function ($) {
|
2
|
+
$('.form-builder fieldset').livequery(function () {
|
3
|
+
var $this = $(this);
|
4
|
+
$(this).sortable({
|
5
|
+
axis: 'y',
|
6
|
+
opacity: 0.5
|
7
|
+
});
|
8
|
+
|
9
|
+
$('a.delete', $this).live('click', function () {
|
10
|
+
var $p = $(this).closest('p');
|
11
|
+
$p.slideUp('fast', function () { $(this).remove(); });
|
12
|
+
return false;
|
13
|
+
})
|
14
|
+
});
|
15
|
+
})(jQuery);
|
data/public/js/admin.js
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
;(function ($) {
|
2
|
+
// This is the glue file.
|
3
|
+
// Most stuff here just glues together lib.* and jquery.* stuff.
|
4
|
+
|
5
|
+
$.uiscreen.background = "";
|
6
|
+
$.uiscreen.opacity = 0.8;
|
7
|
+
$.uiscreen.fadeout_time = 0;
|
8
|
+
|
9
|
+
// Focus
|
10
|
+
$("textarea, input, select")
|
11
|
+
.live('focus', function () {
|
12
|
+
$('body').find('.focus').removeClass('focus');
|
13
|
+
$(this).closest('form p').addClass('focus');
|
14
|
+
})
|
15
|
+
.live('blur', function () {
|
16
|
+
$(this).closest('form p').removeClass('focus');
|
17
|
+
});
|
18
|
+
|
19
|
+
// Redudndant submit
|
20
|
+
$("a[href=#submit]").live('click', function (e) {
|
21
|
+
$("form").submit();
|
22
|
+
return false;
|
23
|
+
});
|
24
|
+
|
25
|
+
// Preload of sorts
|
26
|
+
$(function () { $("body").show().addClass("loaded"); });
|
27
|
+
|
28
|
+
// Wysiwyg
|
29
|
+
$("textarea.html, p.html textarea").livequery(function () {
|
30
|
+
var $textarea = $(this);
|
31
|
+
$(function(){ $textarea.auraWysiwyg(); });
|
32
|
+
});
|
33
|
+
|
34
|
+
// How to:
|
35
|
+
// - area_class 'editable-title'
|
36
|
+
// - in the form, set the class to 'main-title' for the main title
|
37
|
+
//
|
38
|
+
// Set your form to have a class 'main-title' to have this cool thing here
|
39
|
+
//
|
40
|
+
$("#area.editable-title p.main-title").livequery(function () {
|
41
|
+
var $p = $(this);
|
42
|
+
var $input = $p.find('input');
|
43
|
+
var $title = $("#title .title-c");
|
44
|
+
var $label = $p.find('label');
|
45
|
+
var $h1 = $title.find('h1');
|
46
|
+
|
47
|
+
var $newInput = $("<input type='text'>");
|
48
|
+
$newInput.attr('value', $input.val());
|
49
|
+
$newInput.attr('placeholder', $label.text().replace(/^\s*|:?\s*$/g,'').replace(/\s+/g,' '));
|
50
|
+
|
51
|
+
$h1.remove();
|
52
|
+
$p.hide();
|
53
|
+
|
54
|
+
$title.append($newInput);
|
55
|
+
|
56
|
+
function onChange() {
|
57
|
+
$input.val($newInput.val());
|
58
|
+
};
|
59
|
+
|
60
|
+
$newInput.bind('keypress blur change', onChange);
|
61
|
+
});
|
62
|
+
})(jQuery);
|