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.
- 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);
|