hobo 0.7.2 → 0.7.3
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/bin/hobo +24 -7
- data/hobo_files/plugin/CHANGES.txt +501 -0
- data/hobo_files/plugin/generators/hobo/hobo_generator.rb +8 -6
- data/hobo_files/plugin/generators/hobo/templates/application.dryml +3 -0
- data/hobo_files/plugin/generators/hobo/templates/dryml-support.js +132 -0
- data/hobo_files/plugin/generators/hobo_front_controller/hobo_front_controller_generator.rb +4 -5
- data/hobo_files/plugin/generators/hobo_model_resource/hobo_model_resource_generator.rb +75 -0
- data/hobo_files/plugin/generators/hobo_model_resource/templates/controller.rb +7 -0
- data/hobo_files/plugin/generators/hobo_model_resource/templates/functional_test.rb +8 -0
- data/hobo_files/plugin/generators/hobo_model_resource/templates/helper.rb +2 -0
- data/hobo_files/plugin/generators/hobo_rapid/templates/hobo-rapid.js +30 -11
- data/hobo_files/plugin/generators/hobo_rapid/templates/themes/clean/public/stylesheets/application.css +149 -92
- data/hobo_files/plugin/generators/hobo_rapid/templates/themes/clean/public/stylesheets/rapid-ui.css +0 -48
- data/hobo_files/plugin/init.rb +45 -13
- data/hobo_files/plugin/lib/action_view_extensions/base.rb +4 -3
- data/hobo_files/plugin/lib/active_record/association_proxy.rb +18 -0
- data/hobo_files/plugin/lib/active_record/association_reflection.rb +5 -0
- data/hobo_files/plugin/lib/active_record/has_many_association.rb +7 -11
- data/hobo_files/plugin/lib/active_record/has_many_through_association.rb +8 -0
- data/hobo_files/plugin/lib/extensions/test_case.rb +1 -1
- data/hobo_files/plugin/lib/hobo.rb +38 -60
- data/hobo_files/plugin/lib/hobo/authentication_support.rb +1 -1
- data/hobo_files/plugin/lib/hobo/bundle.rb +131 -34
- data/hobo_files/plugin/lib/hobo/composite_model.rb +1 -1
- data/hobo_files/plugin/lib/hobo/controller.rb +7 -8
- data/hobo_files/plugin/lib/hobo/dev_controller.rb +21 -0
- data/hobo_files/plugin/lib/hobo/dryml/dryml_builder.rb +14 -8
- data/hobo_files/plugin/lib/hobo/dryml/dryml_support_controller.rb +13 -0
- data/hobo_files/plugin/lib/hobo/dryml/taglib.rb +6 -7
- data/hobo_files/plugin/lib/hobo/dryml/template.rb +207 -73
- data/hobo_files/plugin/lib/hobo/dryml/template_environment.rb +67 -55
- data/hobo_files/plugin/lib/hobo/dryml/template_handler.rb +53 -3
- data/hobo_files/plugin/lib/hobo/hobo_helper.rb +75 -107
- data/hobo_files/plugin/lib/hobo/model.rb +236 -429
- data/hobo_files/plugin/lib/hobo/model_controller.rb +277 -437
- data/hobo_files/plugin/lib/hobo/model_router.rb +62 -29
- data/hobo_files/plugin/lib/hobo/rapid_helper.rb +48 -9
- data/hobo_files/plugin/lib/hobo/scopes.rb +98 -0
- data/hobo_files/plugin/lib/hobo/scopes/association_proxy_extensions.rb +31 -0
- data/hobo_files/plugin/lib/hobo/scopes/automatic_scopes.rb +282 -0
- data/hobo_files/plugin/lib/hobo/scopes/defined_scope_proxy_extender.rb +88 -0
- data/hobo_files/plugin/lib/hobo/scopes/scope_reflection.rb +18 -0
- data/hobo_files/plugin/lib/hobo/scopes/scoped_proxy.rb +59 -0
- data/hobo_files/plugin/lib/hobo/undefined.rb +2 -0
- data/hobo_files/plugin/lib/hobo/user.rb +31 -14
- data/hobo_files/plugin/lib/hobo/user_controller.rb +41 -27
- data/hobo_files/plugin/taglibs/core.dryml +9 -11
- data/hobo_files/plugin/taglibs/rapid.dryml +51 -108
- data/hobo_files/plugin/taglibs/rapid_editing.dryml +25 -25
- data/hobo_files/plugin/taglibs/rapid_forms.dryml +111 -79
- data/hobo_files/plugin/taglibs/rapid_generics.dryml +74 -0
- data/hobo_files/plugin/taglibs/rapid_navigation.dryml +23 -21
- data/hobo_files/plugin/taglibs/rapid_pages.dryml +83 -169
- data/hobo_files/plugin/taglibs/rapid_plus.dryml +16 -2
- data/hobo_files/plugin/taglibs/rapid_support.dryml +3 -3
- data/hobo_files/plugin/taglibs/rapid_user_pages.dryml +104 -0
- metadata +60 -55
- data/hobo_files/plugin/generators/hobo_migration/hobo_migration_generator.rb +0 -276
- data/hobo_files/plugin/generators/hobo_migration/templates/migration.rb +0 -9
- data/hobo_files/plugin/lib/active_record/table_definition.rb +0 -34
- data/hobo_files/plugin/lib/extensions.rb +0 -375
- data/hobo_files/plugin/lib/hobo/email_address.rb +0 -12
- data/hobo_files/plugin/lib/hobo/enum_string.rb +0 -50
- data/hobo_files/plugin/lib/hobo/field_declaration_dsl.rb +0 -43
- data/hobo_files/plugin/lib/hobo/field_spec.rb +0 -68
- data/hobo_files/plugin/lib/hobo/html_string.rb +0 -7
- data/hobo_files/plugin/lib/hobo/lazy_hash.rb +0 -40
- data/hobo_files/plugin/lib/hobo/markdown_string.rb +0 -11
- data/hobo_files/plugin/lib/hobo/migrations.rb +0 -12
- data/hobo_files/plugin/lib/hobo/model_queries.rb +0 -117
- data/hobo_files/plugin/lib/hobo/password_string.rb +0 -7
- data/hobo_files/plugin/lib/hobo/percentage.rb +0 -14
- data/hobo_files/plugin/lib/hobo/predicate_dispatch.rb +0 -78
- data/hobo_files/plugin/lib/hobo/proc_binding.rb +0 -32
- data/hobo_files/plugin/lib/hobo/text.rb +0 -3
- data/hobo_files/plugin/lib/hobo/textile_string.rb +0 -25
- data/hobo_files/plugin/lib/hobo/where_fragment.rb +0 -28
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<def tag="creation-details">
|
|
2
|
+
<span class="creation-details">
|
|
3
|
+
<view field="&this.class.creator_attribute" class="creator" if="&this.class.creator_attribute" />
|
|
4
|
+
<view:created_at class="created-at" if="&this.respond_to?(:created_at)"/>
|
|
5
|
+
</span>
|
|
6
|
+
</def>
|
|
7
|
+
|
|
8
|
+
<def tag="primary-content">
|
|
9
|
+
<view class="primary-content" field="&this.class.primary_content_attribute" if="&this.class.primary_content_attribute" merge/>
|
|
10
|
+
</def>
|
|
11
|
+
|
|
12
|
+
<def tag="association-count">
|
|
13
|
+
<a class="association-count #{this_field.to_s.underscore}" href="##{this_field.to_s.underscore}" merge>
|
|
14
|
+
<count/>
|
|
15
|
+
</a>
|
|
16
|
+
</def>
|
|
17
|
+
|
|
18
|
+
<def tag="base-card">
|
|
19
|
+
<if test="&can_view?">
|
|
20
|
+
<div class="card #{linkable? ? 'linkable' : 'content'} #{type_name :dasherize => true}" merge-attrs>
|
|
21
|
+
<h3 param="title"><a if="&linkable?"/></h3>
|
|
22
|
+
<div class="content" param="content" if="&!linkable?">
|
|
23
|
+
<primary-content/>
|
|
24
|
+
</div>
|
|
25
|
+
<creation-details param/>
|
|
26
|
+
<do param="counter">
|
|
27
|
+
<set primary-collection="&primary_collection_name"/>
|
|
28
|
+
<if test="&primary_collection">
|
|
29
|
+
<span class="dependents"><count field="&primary_collection"/></span>
|
|
30
|
+
</if>
|
|
31
|
+
</do>
|
|
32
|
+
<delete-button label="X" unless="&linkable?(this, :edit)" param/>
|
|
33
|
+
</div>
|
|
34
|
+
</if>
|
|
35
|
+
</def>
|
|
36
|
+
|
|
37
|
+
<def tag="card">
|
|
38
|
+
<if test="&can_view?">
|
|
39
|
+
<%= poly = call_polymorphic_tag('card', attributes, parameters) %>
|
|
40
|
+
<base-card unless="&poly" merge/>
|
|
41
|
+
</if>
|
|
42
|
+
</def>
|
|
43
|
+
|
|
44
|
+
<def tag="search-card">
|
|
45
|
+
<%= poly = call_polymorphic_tag('search-card', attributes, parameters) %>
|
|
46
|
+
<card unless="&poly"/>
|
|
47
|
+
</def>
|
|
48
|
+
|
|
49
|
+
<def tag="collection">
|
|
50
|
+
<%= poly = call_polymorphic_tag('collection', attributes, parameters) %>
|
|
51
|
+
<ul class="collection" merge-attrs unless="&poly">
|
|
52
|
+
<li:><card param/></li:>
|
|
53
|
+
</ul>
|
|
54
|
+
<p class="empty-collection-message" if="&this.empty?" param="empty-message">
|
|
55
|
+
<% label = if (refl = this.try.proxy_reflection)
|
|
56
|
+
refl.association_name.to_s.humanize.downcase
|
|
57
|
+
elsif (klass = this.try.member_class)
|
|
58
|
+
klass.name.humanize.downcase.pluralize
|
|
59
|
+
else
|
|
60
|
+
type_name(:plural => true).pluralize.humanize.downcase.to_s
|
|
61
|
+
end %>
|
|
62
|
+
There are no <%= label.pluralize %>
|
|
63
|
+
</p>
|
|
64
|
+
</def>
|
|
65
|
+
|
|
66
|
+
<def tag="collection-preview" attrs="limit">
|
|
67
|
+
<% limit ||= 6 %>
|
|
68
|
+
<div class="collection-preview" merge-attrs>
|
|
69
|
+
<h2><do param="heading"><this-field.titleize/></do> <span param="show-all-link" if="&linkable?">(<a>show all</a>)</span></h2>
|
|
70
|
+
<collection with="&this.limit(limit)" merge-params>
|
|
71
|
+
<card: class="small"/>
|
|
72
|
+
</collection>
|
|
73
|
+
</div>
|
|
74
|
+
</def>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<!--- General Navigation -->
|
|
6
6
|
|
|
7
7
|
<def tag="navigation" attrs="current">
|
|
8
|
-
<ul merge-attrs>
|
|
8
|
+
<ul class="navigation" merge-attrs>
|
|
9
9
|
<set-scoped current-navigation="¤t">
|
|
10
10
|
<do param="default"/>
|
|
11
11
|
</set-scoped>
|
|
@@ -24,15 +24,16 @@
|
|
|
24
24
|
<!--- Account Navigation (log in / out / signup) -->
|
|
25
25
|
|
|
26
26
|
<def tag="account-nav">
|
|
27
|
-
<ul class="account-nav">
|
|
27
|
+
<ul with="¤t_user" class="account-nav" param>
|
|
28
28
|
<if test="&logged_in?">
|
|
29
|
-
<li class='nav-item'>Logged in as <view:login
|
|
30
|
-
<li class='nav-item'><a
|
|
29
|
+
<li class='nav-item' param="logged-in-as">Logged in as <view:login/></li>
|
|
30
|
+
<li class='nav-item' param="account"><a action="account">Account</a></li>
|
|
31
|
+
<li class='nav-item' param="log-out"><a href="&logout_url">Log out</a></li>
|
|
31
32
|
</if>
|
|
32
33
|
<else>
|
|
33
|
-
<set user="&Hobo::
|
|
34
|
-
<li class='nav-item'><a href="&login_url(user)">Log in</a></li>
|
|
35
|
-
<li if="&signup_url(user)" class=
|
|
34
|
+
<set user="&Hobo::User.default_user_model"/>
|
|
35
|
+
<li class='nav-item' param="log-in"><a href="&login_url(user)">Log in</a></li>
|
|
36
|
+
<li if="&signup_url(user)" class="nav-item" param="sign-up"><a href="&signup_url(user)">Sign up</a></li>
|
|
36
37
|
</else>
|
|
37
38
|
</ul>
|
|
38
39
|
</def>
|
|
@@ -41,52 +42,53 @@
|
|
|
41
42
|
<!--- Pagination Navigation -->
|
|
42
43
|
|
|
43
44
|
<def tag="page-nav" attrs="params">
|
|
44
|
-
<if test="
|
|
45
|
+
<if test="&this.try.page_count._? > 1">
|
|
45
46
|
<page-n-of-count/> -
|
|
46
|
-
<first-page-link
|
|
47
|
-
<previous-page-link params="¶ms">Previous</previous-page-link>
|
|
48
|
-
<next-page-link
|
|
49
|
-
<last-page-link
|
|
47
|
+
<first-page-link params="¶ms" param>|<</first-page-link>
|
|
48
|
+
<previous-page-link params="¶ms" param>Previous</previous-page-link>
|
|
49
|
+
<next-page-link params="¶ms" param>Next</next-page-link>
|
|
50
|
+
<last-page-link params="¶ms" param>>|</last-page-link>
|
|
50
51
|
</if>
|
|
51
52
|
</def>
|
|
52
53
|
|
|
53
54
|
|
|
54
55
|
<def tag="page-n-of-count">
|
|
55
|
-
Page <%=
|
|
56
|
+
Page <%= this.current_page %> of <%= this.page_count %>
|
|
56
57
|
</def>
|
|
57
58
|
|
|
58
59
|
|
|
59
60
|
<def tag="previous-page-link">
|
|
60
|
-
<a if="
|
|
61
|
-
href="&url_for(params.merge(:page =>
|
|
61
|
+
<a if="&this.try.previous_page"
|
|
62
|
+
href="&url_for(params.merge(:page => this.previous_page))">
|
|
62
63
|
<do param="default">« Previous page</do>
|
|
63
64
|
</a>
|
|
64
65
|
</def>
|
|
65
66
|
|
|
66
67
|
|
|
67
68
|
<def tag="next-page-link">
|
|
68
|
-
<a if="
|
|
69
|
-
href="&url_for(params.merge(:page =>
|
|
69
|
+
<a if="&this.try.next_page"
|
|
70
|
+
href="&url_for(params.merge(:page => this.next_page))">
|
|
70
71
|
<do param="default">Next page &raqou;</do>
|
|
71
72
|
</a>
|
|
72
73
|
</def>
|
|
73
74
|
|
|
74
75
|
|
|
75
76
|
<def tag="first-page-link">
|
|
76
|
-
<a if="
|
|
77
|
-
href="&url_for(params.merge(:page =>
|
|
77
|
+
<a if="&this.try.current_page && this.current_page != 1"
|
|
78
|
+
href="&url_for(params.merge(:page => 1))">
|
|
78
79
|
<do param="default">« First page</do>
|
|
79
80
|
</a>
|
|
80
81
|
</def>
|
|
81
82
|
|
|
82
83
|
|
|
83
84
|
<def tag="last-page-link">
|
|
84
|
-
<a if="
|
|
85
|
-
href="&url_for(params.merge(:page =>
|
|
85
|
+
<a if="&this.try.current_page && this.current_page != this.page_count"
|
|
86
|
+
href="&url_for(params.merge(:page => this.page_count))">
|
|
86
87
|
<do param="default">Last page »</do>
|
|
87
88
|
</a>
|
|
88
89
|
</def>
|
|
89
90
|
|
|
91
|
+
|
|
90
92
|
<!-- magic nav, just to get you started -->
|
|
91
93
|
<!-- write your own navigation using the <navigation> tag -->
|
|
92
94
|
<def tag="magic-nav">
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
<body: param>
|
|
27
27
|
<ajax-progress/>
|
|
28
28
|
<header class="page-header" param>
|
|
29
|
-
<heading param="app-name"><a href="
|
|
30
|
-
<live-search param if="&defined_route? :
|
|
29
|
+
<heading param="app-name"><a href="#{base_url}/"><app-name/></a></heading>
|
|
30
|
+
<live-search param if="&defined_route? :site_search"/>
|
|
31
31
|
<nav param>
|
|
32
|
-
<account-nav if="&Hobo::
|
|
33
|
-
<
|
|
32
|
+
<account-nav if="&Hobo::User.default_user_model" param/>
|
|
33
|
+
<do param="main-nav"><magic-nav class="main-nav"/></do>
|
|
34
34
|
</nav>
|
|
35
35
|
</header>
|
|
36
36
|
<section class="page-content" param="content">
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
<section class="main-content" param="main-content">
|
|
54
54
|
<param-content for="content"/>
|
|
55
55
|
</section>
|
|
56
|
-
<aside class="aside-content" param/>
|
|
56
|
+
<aside class="aside-content" empty param/>
|
|
57
57
|
</content:>
|
|
58
58
|
</simple-layout>
|
|
59
59
|
</def>
|
|
@@ -63,13 +63,14 @@
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
<def tag="index-page">
|
|
66
|
-
|
|
67
|
-
<
|
|
68
|
-
|
|
66
|
+
<set model="&this.try.member_class || self.model"/>
|
|
67
|
+
<set model-name="&model.name.titleize"/>
|
|
68
|
+
<page title="All #{type_name :with => model, :pluralize => true}" merge>
|
|
69
|
+
<body: class="index-page #{type_id model}" param/>
|
|
69
70
|
<content-header: param>
|
|
70
|
-
<heading param
|
|
71
|
-
<p class="note" param>There <
|
|
72
|
-
</content-header
|
|
71
|
+
<heading param><type-name with="&model"/></heading>
|
|
72
|
+
<p class="note" if param>There <count part="item-count" prefix="are"/></p>
|
|
73
|
+
</content-header:>
|
|
73
74
|
|
|
74
75
|
<content-body: param>
|
|
75
76
|
<nav param="top-pagination-nav"><page-nav/></nav>
|
|
@@ -80,16 +81,16 @@
|
|
|
80
81
|
</content-body>
|
|
81
82
|
|
|
82
83
|
<content-footer: param>
|
|
83
|
-
<a to="
|
|
84
|
+
<a to="&model" action="new" param="new-link"/>
|
|
84
85
|
<else>
|
|
85
|
-
<
|
|
86
|
-
<section class="create-new"
|
|
86
|
+
<if with="&model.user_new current_user">
|
|
87
|
+
<section class="create-new">
|
|
87
88
|
<h2>New <type-name/></h2>
|
|
88
89
|
<form><field-list/><submit label="Create #{type_name}"/></form>
|
|
89
90
|
</section>
|
|
90
|
-
</
|
|
91
|
+
</if>
|
|
91
92
|
</else>
|
|
92
|
-
</content-footer
|
|
93
|
+
</content-footer:>
|
|
93
94
|
</page>
|
|
94
95
|
</def>
|
|
95
96
|
|
|
@@ -115,14 +116,10 @@
|
|
|
115
116
|
</def>
|
|
116
117
|
|
|
117
118
|
|
|
118
|
-
<def tag="show-page">
|
|
119
|
-
|
|
120
|
-
this.send(refl.name) if Hobo.simple_has_many_association?(refl)
|
|
121
|
-
end.compact
|
|
122
|
-
dependent_collection = this.class.dependent_collections.first if this.class.dependent_collections.length == 1
|
|
123
|
-
%>
|
|
119
|
+
<def tag="show-page" attrs="primary-collection">
|
|
120
|
+
<set primary-collection-name="&(primary_collection || self.primary_collection_name).to_s"/>
|
|
124
121
|
<page merge title="#{name :no_wrapper => true}">
|
|
125
|
-
<body: class="show-page #{type_name
|
|
122
|
+
<body: class="show-page #{type_name :dasherize => true}" param/>
|
|
126
123
|
<content-header: param>
|
|
127
124
|
<if with="&this.dependent_on.reject{|x| x.is_a?(Hobo::User)}.first">
|
|
128
125
|
<div class="container"><a/></div>
|
|
@@ -130,8 +127,12 @@
|
|
|
130
127
|
|
|
131
128
|
<heading param><%= this %></heading>
|
|
132
129
|
<creation-details param/>
|
|
133
|
-
|
|
134
|
-
<
|
|
130
|
+
|
|
131
|
+
<do field="&primary_collection_name" if="&primary_collection_name" param="primary-collection-count">
|
|
132
|
+
<association-count class="primary-collection-count" part="primary-collection-count"/>
|
|
133
|
+
</do>
|
|
134
|
+
|
|
135
|
+
<a action="edit" class="edit" if="&can_edit?" param="edit-link">Edit <type-name/></a>
|
|
135
136
|
</content-header>
|
|
136
137
|
|
|
137
138
|
<content-body: param>
|
|
@@ -140,58 +141,47 @@
|
|
|
140
141
|
<field-list skip="&[this.class.name_attribute, this.class.primary_content_attribute, this.class.creator_attribute, this.class.dependent_on.first].compact "
|
|
141
142
|
skip-associations="has_many" param/>
|
|
142
143
|
|
|
143
|
-
<
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
<submit label="Create #{dependent_collection.to_s.singularize.titleize}"/>
|
|
144
|
+
<section class="primary-collection" field="&primary_collection_name" if="&primary_collection_name">
|
|
145
|
+
<h2 param="primary-collection-title"><%= primary_collection_name.titleize %></h2>
|
|
146
|
+
|
|
147
|
+
<do param="primary-collection">
|
|
148
|
+
<collection part="primary-collection"/>
|
|
149
|
+
</do>
|
|
150
|
+
|
|
151
|
+
<if test="can_create?">
|
|
152
|
+
<nav class="new-link"><a action="new" if="&linkable?(:new) && can_create?"/></nav>
|
|
153
|
+
<else>
|
|
154
|
+
<section class="create-new" with="&new_for_current_user">
|
|
155
|
+
<h2>Add <A-or-An word="&primary_collection_name.singularize.titleize"/></h2>
|
|
156
|
+
<form update="primary-collection, primary-collection-count"
|
|
157
|
+
message="Adding #{primary_collection_name.singularize.titleize}..." reset-form>
|
|
158
|
+
<field-list skip="#{@this.class.reverse_reflection(@this.send(primary_collection_name).proxy_reflection.name).name}"
|
|
159
|
+
skip-associations="has_many" param="primary-collection-field-list"/>
|
|
160
|
+
<submit label="Create #{primary_collection_name.singularize.titleize}"/>
|
|
161
161
|
</form>
|
|
162
162
|
</section>
|
|
163
|
-
</
|
|
164
|
-
</
|
|
165
|
-
</
|
|
166
|
-
<else>
|
|
167
|
-
<section class="preview-collections">
|
|
168
|
-
<with-fields associations="has_many">
|
|
169
|
-
<section class="#{this_field.dasherize}">
|
|
170
|
-
<h2>Recent <this-field.titleize/></h2>
|
|
171
|
-
<collection with="&this.recent"/>
|
|
172
|
-
<a class="more">More... (<count/>)</a>
|
|
173
|
-
</section>
|
|
174
|
-
</with-fields>
|
|
175
|
-
</section>
|
|
176
|
-
</else>
|
|
177
|
-
|
|
178
|
-
<nav class="new-links" param="new-links">
|
|
179
|
-
<ul with="&has_many_assocs">
|
|
180
|
-
<li: replace><li if="&can_create? && linkable?(:new)"><a action="new"/></li></li>
|
|
181
|
-
</ul>
|
|
182
|
-
</nav>
|
|
163
|
+
</else>
|
|
164
|
+
</if>
|
|
165
|
+
</section>
|
|
183
166
|
|
|
184
|
-
</content-body
|
|
167
|
+
</content-body:>
|
|
168
|
+
<aside: param>
|
|
169
|
+
<section class="preview-collections">
|
|
170
|
+
<with-fields fields="&non_through_collections - [primary_collection_name._?.to_sym]">
|
|
171
|
+
<collection-preview class="#{this_field.dasherize}"/>
|
|
172
|
+
</with-fields>
|
|
173
|
+
</section>
|
|
174
|
+
</aside:>
|
|
185
175
|
</page>
|
|
186
176
|
</def>
|
|
187
177
|
|
|
188
178
|
|
|
189
179
|
<def tag="edit-page">
|
|
190
180
|
<page merge>
|
|
191
|
-
<body: class="edit-page #{
|
|
181
|
+
<body: class="edit-page #{type_name :dasherize => true}" param/>
|
|
192
182
|
<content-header: param>
|
|
193
|
-
<heading><if test="&this.respond_to? :name"><name/></if><else><type-name/></else></heading>
|
|
194
|
-
<delete-button
|
|
183
|
+
<heading param><if test="&this.respond_to? :name"><name/></if><else><type-name/></else></heading>
|
|
184
|
+
<delete-button label="Remove This #{type_name}" param/>
|
|
195
185
|
</content-header>
|
|
196
186
|
|
|
197
187
|
<content-body: param>
|
|
@@ -209,22 +199,23 @@
|
|
|
209
199
|
|
|
210
200
|
|
|
211
201
|
<def tag="new-in-collection-page">
|
|
212
|
-
<set association-name="&@association.
|
|
202
|
+
<set association-name="&@association.origin_attribute.to_s"/>
|
|
213
203
|
<page title="New #{type_name}" merge>
|
|
214
|
-
<body: class="new-in-collection-page #{type_name
|
|
204
|
+
<body: class="new-in-collection-page #{association_name.underscore.dasherize} #{type_name :dasherize => true}" param/>
|
|
215
205
|
<content-header: param>
|
|
216
|
-
<heading param>New <association-name/></heading>
|
|
217
|
-
<sub-heading param>For: <a with="&@
|
|
206
|
+
<heading param>New <association-name.singularize.titleize/></heading>
|
|
207
|
+
<sub-heading param>For: <a with="&@association.origin"/></sub-heading>
|
|
218
208
|
</content-header>
|
|
219
209
|
|
|
220
210
|
<content-body: param>
|
|
221
211
|
<error-messages/>
|
|
222
212
|
|
|
223
213
|
<form param>
|
|
224
|
-
<field-list skip="#{@
|
|
214
|
+
<field-list skip="#{@association.origin.class.reverse_reflection(association_name.to_sym).name}"
|
|
225
215
|
skip-associations="has_many" param/>
|
|
226
216
|
<div class="actions" param="actions">
|
|
227
|
-
<submit label="Create #{association_name}" param
|
|
217
|
+
<submit label="Create #{association_name.singularize.titleize}" param/>
|
|
218
|
+
<do param="back-link"> or <a with="&@association.origin">Cancel</a></do>
|
|
228
219
|
</div>
|
|
229
220
|
</form>
|
|
230
221
|
</content-body>
|
|
@@ -233,14 +224,14 @@
|
|
|
233
224
|
|
|
234
225
|
|
|
235
226
|
<def tag="show-collection-page">
|
|
236
|
-
<% title = "#{
|
|
227
|
+
<% title = "#{this.origin_attribute.to_s.titleize} for #{name(:with => this.origin)}" %>
|
|
237
228
|
<page title="&title" merge>
|
|
238
|
-
<body: class="show-collection-page #{type_name(:with =>
|
|
229
|
+
<body: class="show-collection-page #{type_name(:with => this.origin)} #{type_name(:pluralize => true) rescue debugger}"
|
|
239
230
|
param/>
|
|
240
231
|
<content-header: param>
|
|
241
|
-
<nav>Back to <a
|
|
232
|
+
<nav>Back to <a:origin/></nav>
|
|
242
233
|
<heading><%= title %></heading>
|
|
243
|
-
<sub-heading><count
|
|
234
|
+
<sub-heading><count/></sub-heading>
|
|
244
235
|
</content-header>
|
|
245
236
|
|
|
246
237
|
<content-body: param>
|
|
@@ -250,114 +241,35 @@
|
|
|
250
241
|
|
|
251
242
|
<nav param="bottom-pagination-nav"><page-nav param/></nav>
|
|
252
243
|
|
|
253
|
-
<nav if="&Hobo.simple_has_many_association?(
|
|
254
|
-
<a
|
|
244
|
+
<nav if="&Hobo.simple_has_many_association?(this)" param="new-link">
|
|
245
|
+
<a action="new"/>
|
|
255
246
|
</nav>
|
|
256
247
|
</content-body>
|
|
257
248
|
</page>
|
|
258
249
|
</def>
|
|
259
250
|
|
|
260
251
|
|
|
261
|
-
<def tag="
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
<live-search: replace/>
|
|
266
|
-
<nav: replace/>
|
|
267
|
-
|
|
268
|
-
<content-header: param>
|
|
269
|
-
<heading param>Sign Up</heading>
|
|
270
|
-
</content-header>
|
|
271
|
-
|
|
272
|
-
<content-body: param>
|
|
273
|
-
<error-messages/>
|
|
274
|
-
<form action="&request.request_uri" param>
|
|
275
|
-
<field-list fields="login, password, password_confirmation" param>
|
|
276
|
-
<password-confirmation-label:>Confirm Password</password-confirmation-label>
|
|
277
|
-
</field-list>
|
|
278
|
-
|
|
279
|
-
<div class="actions" param="actions">
|
|
280
|
-
<submit label='Sign Up'/>
|
|
281
|
-
</div>
|
|
282
|
-
</form>
|
|
283
|
-
</content-body>
|
|
284
|
-
|
|
285
|
-
</page>
|
|
286
|
-
</def>
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
<def tag="login-page" attrs="remember-me">
|
|
290
|
-
<page layout="simple" title="Log in to #{app_name}" merge>
|
|
291
|
-
|
|
292
|
-
<body: class="login-page" param/>
|
|
293
|
-
|
|
294
|
-
<live-search: replace/>
|
|
295
|
-
<nav: replace/>
|
|
296
|
-
|
|
252
|
+
<def tag="permission-denied-page" attrs="message">
|
|
253
|
+
<% message ||= "That operation is not allowed" %>
|
|
254
|
+
<page merge>
|
|
255
|
+
<body: class="permission-denied"/>
|
|
297
256
|
<content-header: param>
|
|
298
|
-
<heading param
|
|
257
|
+
<heading param><message/></heading>
|
|
299
258
|
</content-header>
|
|
300
|
-
|
|
301
|
-
<content-body: param>
|
|
302
|
-
<form action="&request.request_uri" class="login" param>
|
|
303
|
-
<labelled-item-list>
|
|
304
|
-
<labelled-item>
|
|
305
|
-
<item-label param="login-label"><%= model.login_attr.to_s.titleize %></item-label>
|
|
306
|
-
<item-value><input type="text" name="login" id="login" class="string" param="login-input" /></item-value>
|
|
307
|
-
</labelled-item>
|
|
308
|
-
|
|
309
|
-
<labelled-item>
|
|
310
|
-
<item-label param="password-label">Password</item-label>
|
|
311
|
-
<item-value><input type="password" name="password" id="password" class="string" param="password-input"/></item-value>
|
|
312
|
-
</labelled-item>
|
|
313
|
-
|
|
314
|
-
<labelled-item if="&remember_me">
|
|
315
|
-
<item-label class="field-label" param="remember-me-label">Remember me:</item-label>
|
|
316
|
-
<item-value><input type="checkbox" name="remember_me" id="remember-me" param="remember-me-input"/></item-value>
|
|
317
|
-
</labelled-item>
|
|
318
|
-
</labelled-item-list>
|
|
319
|
-
<set user="&Hobo::UserController.user_models.first"/>
|
|
320
|
-
<div class="actions" param="actions">
|
|
321
|
-
<submit label='Log in' param/><if test="&signup_url(user)" class='nav-item'> or <a href="&signup_url(user)">Sign up</a></if>
|
|
322
|
-
</div>
|
|
323
|
-
</form>
|
|
324
|
-
</content-body>
|
|
325
|
-
</page>
|
|
326
|
-
</def>
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
<def tag="account-disabled-page">
|
|
330
|
-
|
|
331
|
-
<page layout="simple" title="#{app_name} - account not available" merge>
|
|
332
|
-
|
|
333
|
-
<body: class="account-disabled-page" param/>
|
|
334
|
-
|
|
335
|
-
<content-header: param><heading param>Account is not available</heading></content>
|
|
336
|
-
|
|
337
|
-
<content-body: param>
|
|
338
|
-
<p>Your account is not available at this time.</p>
|
|
339
|
-
</content-body>
|
|
340
259
|
</page>
|
|
341
|
-
|
|
342
260
|
</def>
|
|
343
|
-
|
|
344
261
|
|
|
345
262
|
|
|
346
|
-
<def tag="
|
|
263
|
+
<def tag="not-found-page" attrs="message">
|
|
264
|
+
<% message ||= "The page you were looking for could not be found" %>
|
|
347
265
|
<page merge>
|
|
266
|
+
<body: class="not-found"/>
|
|
348
267
|
<content-header: param>
|
|
349
|
-
<heading param
|
|
268
|
+
<heading param><message/></heading>
|
|
350
269
|
</content-header>
|
|
351
270
|
</page>
|
|
352
271
|
</def>
|
|
353
272
|
|
|
354
|
-
<def tag="not-found-page">
|
|
355
|
-
<page merge>
|
|
356
|
-
<content-header: param>
|
|
357
|
-
<heading param>The page you were looking for could not be found</heading>
|
|
358
|
-
</content-header>
|
|
359
|
-
</page>
|
|
360
|
-
</def>
|
|
361
273
|
|
|
362
274
|
<def tag="doctype" attrs="version"><%=
|
|
363
275
|
case version.upcase
|
|
@@ -379,6 +291,7 @@
|
|
|
379
291
|
end
|
|
380
292
|
%></def>
|
|
381
293
|
|
|
294
|
+
|
|
382
295
|
<def tag="stylesheet" attrs="name, media">
|
|
383
296
|
<repeat with="&comma_split(name)">
|
|
384
297
|
<link href="#{base_url}/stylesheets/#{this}.css" media="#{ media || 'all' }"
|
|
@@ -386,6 +299,7 @@
|
|
|
386
299
|
</repeat>
|
|
387
300
|
</def>
|
|
388
301
|
|
|
302
|
+
|
|
389
303
|
<def tag="javascript" attrs="name">
|
|
390
304
|
<if test="&name.is_a?(Symbol)">
|
|
391
305
|
<%= javascript_include_tag name %>
|
|
@@ -397,11 +311,13 @@
|
|
|
397
311
|
</else>
|
|
398
312
|
</def>
|
|
399
313
|
|
|
314
|
+
|
|
400
315
|
<def tag="flash-message" attrs="type">
|
|
401
316
|
<% type = type ? type.to_sym : :notice %>
|
|
402
317
|
<div class="flash #{type}" if="&flash[type]" merge-attrs><%= flash[type] %></div>
|
|
403
318
|
</def>
|
|
404
319
|
|
|
320
|
+
|
|
405
321
|
<def tag="ajax-progress">
|
|
406
322
|
<div id="ajax-progress">
|
|
407
323
|
<div>
|
|
@@ -411,7 +327,5 @@
|
|
|
411
327
|
</def>
|
|
412
328
|
|
|
413
329
|
|
|
414
|
-
<def tag="app-name"><%= @hobo_app_name ||= File.basename(Dir.chdir(RAILS_ROOT) { Dir.getwd }).strip.titleize %></def>
|
|
415
|
-
|
|
416
330
|
<def tag="default-page-title"><%= t = this.to_s; ; "#{t.blank? ? '' : t + ' - '}#{app_name}" %></def>
|
|
417
331
|
|