localized_scaffold 0.9
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/Gemfile +6 -0
- data/README.rdoc +273 -0
- data/generators/locales/standard.de-FO.yml +106 -0
- data/generators/locales/standard.de.yml +106 -0
- data/generators/locales/standard.en.yml +106 -0
- data/generators/localized_devise_views_generator.rb +100 -0
- data/generators/localized_scaffold_generator.rb +624 -0
- data/generators/templates/devise/locales/devise.de-FO.yml +45 -0
- data/generators/templates/devise/locales/devise.de.yml +60 -0
- data/generators/templates/devise/locales/devise_views.de.yml +78 -0
- data/generators/templates/devise/locales/devise_views.en.yml +79 -0
- data/generators/templates/devise/views/confirmations/new.html.erb +23 -0
- data/generators/templates/devise/views/mailer/confirmation_instructions.html.erb +6 -0
- data/generators/templates/devise/views/mailer/reset_password_instructions.html.erb +8 -0
- data/generators/templates/devise/views/mailer/unlock_instructions.html.erb +6 -0
- data/generators/templates/devise/views/passwords/edit.html.erb +30 -0
- data/generators/templates/devise/views/passwords/new.html.erb +23 -0
- data/generators/templates/devise/views/registrations/edit.html.erb +54 -0
- data/generators/templates/devise/views/registrations/new.html.erb +34 -0
- data/generators/templates/devise/views/sessions/new.html.erb +32 -0
- data/generators/templates/devise/views/shared/_links.erb +25 -0
- data/generators/templates/devise/views/unlocks/new.html.erb +23 -0
- data/generators/templates/erb/scaffold/_form.html.erb +11 -0
- data/generators/templates/erb/scaffold/_index.html.erb +54 -0
- data/generators/templates/erb/scaffold/edit.html.erb +20 -0
- data/generators/templates/erb/scaffold/index.html.erb +73 -0
- data/generators/templates/erb/scaffold/layout.html.erb +51 -0
- data/generators/templates/erb/scaffold/new.html.erb +18 -0
- data/generators/templates/erb/scaffold/scaffold_generator.rb +57 -0
- data/generators/templates/erb/scaffold/show.html.erb +22 -0
- data/generators/templates/locales/de.yml +61 -0
- data/generators/templates/locales/en.yml +61 -0
- data/generators/templates/rails/helper/helper.rb +118 -0
- data/generators/templates/rails/helper/scaffold_helper.rb +53 -0
- data/generators/templates/rails/scaffold_controller/controller.rb +338 -0
- data/generators/templates/rails/stylesheets/templates/scaffold.css +203 -0
- data/generators/templates/test_unit/scaffold/templates/functional_test.rb +117 -0
- data/init.rb +3 -0
- data/install.rb +1 -0
- data/lib/tasks/localized_scaffold.rake +39 -0
- data/localized_scaffold.rb +7 -0
- data/rails/init.rb +3 -0
- data/test/localized_scaffold_test.rb +8 -0
- data/test/test_helper.rb +3 -0
- data/uninstall.rb +1 -0
- metadata +120 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
|
3
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
5
|
+
|
6
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="<%%= I18n.locale
|
7
|
+
-%>" xml:lang="<%%= I18n.locale -%>">
|
8
|
+
<head>
|
9
|
+
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
|
10
|
+
|
11
|
+
<%%- if (title = yield(:title)).blank? -%>
|
12
|
+
<title><%%= controller.controller_name.humanize %></title>
|
13
|
+
<%%- else -%>
|
14
|
+
<title><%%= title %></title>
|
15
|
+
<%%- end -%>
|
16
|
+
|
17
|
+
<%%= stylesheet_link_tag 'scaffold' %>
|
18
|
+
|
19
|
+
<%- if has_javascript_jquery? -%>
|
20
|
+
<%%= javascript_include_tag 'jquery', 'application' %>
|
21
|
+
<% elsif has_javascript_prototype? -%>
|
22
|
+
<%%= javascript_include_tag :defaults %>
|
23
|
+
<% end -%>
|
24
|
+
|
25
|
+
<%%= csrf_meta_tag %>
|
26
|
+
|
27
|
+
<%%= yield :head -%>
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
|
31
|
+
<%%- if not (breadcrumbs = yield(:breadcrumbs)).blank? -%>
|
32
|
+
<%%= breadcrumbs %>
|
33
|
+
<%%- end -%>
|
34
|
+
|
35
|
+
<div id="flashMessages">
|
36
|
+
<%%= ActiveSupport::SafeBuffer.new([:notice, :warning, :error].collect do |type|
|
37
|
+
content_tag(:div, flash[type], :id => type, :class => type) if flash[type]
|
38
|
+
end.to_s) %>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<%%- unless title.blank? -%>
|
42
|
+
<h1><%%= title %></h1>
|
43
|
+
<%%- end -%>
|
44
|
+
|
45
|
+
<%%= yield %>
|
46
|
+
<%- if has_javascript_jquery? or has_javascript_prototype? -%>
|
47
|
+
|
48
|
+
<%%= yield :patches -%>
|
49
|
+
<%- end -%>
|
50
|
+
</body>
|
51
|
+
</html>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%% title(t('<%= file_name %>.new.title'), <%= file_name %>_breadcrumbs) %>
|
2
|
+
|
3
|
+
<%%= form_for(@<%= singular_name %>, :url => <%= path_of_with_belongsto_if_any(:value1 => "@#{singular_name}") %>,
|
4
|
+
:html => { :multipart => true }) do |f| %>
|
5
|
+
<%%= f.error_messages :header_message => t('<%= file_name %>.errors.template.header_message'),
|
6
|
+
:message => t('<%= file_name %>.errors.template.message') %>
|
7
|
+
|
8
|
+
<%%= render :partial => 'form', :locals => { :f => f } %>
|
9
|
+
|
10
|
+
<p>
|
11
|
+
<%%= f.submit t('standard.cmds.create') %>
|
12
|
+
|
13
|
+
<span class="decent">
|
14
|
+
<%%= t('standard.labels.or') %>
|
15
|
+
<%%= link_to t('standard.cmds.cancel'), <%= path_of_with_belongsto_if_any %> %>
|
16
|
+
</span>
|
17
|
+
</p>
|
18
|
+
<%% end %>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'rails/generators/erb'
|
2
|
+
require 'rails/generators/resource_helpers'
|
3
|
+
require 'rails/generators/erb/scaffold/scaffold_generator'
|
4
|
+
|
5
|
+
module Erb
|
6
|
+
module Generators
|
7
|
+
class ScaffoldGenerator < Base
|
8
|
+
def self.generator_path(filename = '')
|
9
|
+
return File.join(File.expand_path(File.dirname(__FILE__)), filename)
|
10
|
+
end
|
11
|
+
|
12
|
+
include Rails::Generators::ResourceHelpers
|
13
|
+
|
14
|
+
argument :attributes, :type => :array, :default => [], :banner => 'field:type field:type'
|
15
|
+
|
16
|
+
class_option :layout, :type => :boolean
|
17
|
+
class_option :singleton, :type => :boolean, :desc => 'Supply to skip index view'
|
18
|
+
|
19
|
+
# Creates the views directory.
|
20
|
+
|
21
|
+
def create_root_folder
|
22
|
+
empty_directory File.join('app', 'views', controller_file_path)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Generates all views in the views directory.
|
26
|
+
|
27
|
+
def copy_view_files
|
28
|
+
views = available_views
|
29
|
+
views.delete('index') if options[:singleton]
|
30
|
+
views.delete('_index') if not embed?
|
31
|
+
views.delete('show') if not generate_showview?
|
32
|
+
|
33
|
+
views.each do |view|
|
34
|
+
filename = filename_with_extensions(view)
|
35
|
+
|
36
|
+
template ScaffoldGenerator.generator_path(filename),
|
37
|
+
File.join('app', 'views', controller_file_path, filename)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Forces a copy of the layout file.
|
42
|
+
|
43
|
+
def force_copy_layout_file
|
44
|
+
template ScaffoldGenerator.generator_path(filename_with_extensions(:layout)),
|
45
|
+
File.join('app', 'views', 'layouts', filename_with_extensions('scaffold'))
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
# Returns the views to generate.
|
51
|
+
|
52
|
+
def available_views
|
53
|
+
%w(index edit show new _form _index)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<%% title(@<%= file_name %>.to_s, <%= file_name %>_breadcrumbs) %>
|
2
|
+
|
3
|
+
<% for attribute in attributes -%>
|
4
|
+
<p>
|
5
|
+
<b><%%= t('activerecord.attributes.<%= file_name %>.<%= attribute.name %>') %>:</b>
|
6
|
+
<%- if listifies.include? attribute.name -%>
|
7
|
+
<%%= <%= class_name %>.<%= attribute.name %>_label(@<%= singular_name %>.<%= attribute.name %>) %>
|
8
|
+
<%- else -%>
|
9
|
+
<%%=h @<%= singular_name %>.<%= attribute.name %> %>
|
10
|
+
<%- end -%>
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<%- end -%>
|
14
|
+
|
15
|
+
<p>
|
16
|
+
<%%= link_to t('standard.cmds.back'), <%= path_of_with_belongsto_if_any(:extraargs => (has_searchbar? ? ":q => @#{file_name}.#{searchbar}.first" : nil)) %> %>
|
17
|
+
|
18
|
+
<span class="decent">
|
19
|
+
<%%= t('standard.labels.or') %>
|
20
|
+
<%%= link_to t('standard.cmds.edit'), <%= path_of_with_belongsto_if_any(:method => :edit) %> %>
|
21
|
+
</span>
|
22
|
+
</p>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
de:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
<%= file_name %>: "<%= class_name %>"
|
5
|
+
|
6
|
+
attributes:
|
7
|
+
<%= file_name %>:
|
8
|
+
<%- attributes.each do |a| -%>
|
9
|
+
<%= a.name %>: "<%= a.name.humanize %>"
|
10
|
+
<%- end -%>
|
11
|
+
|
12
|
+
<%= file_name %>:
|
13
|
+
cmds:
|
14
|
+
breadcrumb: "<%= plural_name.humanize %>"
|
15
|
+
list: "<%= plural_name.humanize %> anzeigen"
|
16
|
+
new: "<%= class_name %> anlegen"
|
17
|
+
|
18
|
+
<%- if not listifies.empty? -%>
|
19
|
+
selects:
|
20
|
+
<%- listifies.each do |field, values| -%>
|
21
|
+
<%= field %>:
|
22
|
+
<%- values.each do |value| -%>
|
23
|
+
<%= value.downcase %>: "<%= value.humanize %>"
|
24
|
+
<%- end -%>
|
25
|
+
|
26
|
+
<%- end -%>
|
27
|
+
<%- end -%>
|
28
|
+
errors:
|
29
|
+
template:
|
30
|
+
header_message: "<%= singular_name.humanize %> konnte nicht gespeichert werden."
|
31
|
+
message: "Bitte folgende Felder überprüfen:"
|
32
|
+
|
33
|
+
not_found: "<%= class_name %> nicht gefunden."
|
34
|
+
|
35
|
+
create:
|
36
|
+
flash: "<%= class_name %> erfolgreich angelegt."
|
37
|
+
|
38
|
+
destroy:
|
39
|
+
flash: "<%= class_name %> erfolgreich gelöscht."
|
40
|
+
|
41
|
+
edit:
|
42
|
+
title: "<%= class_name %> bearbeiten"
|
43
|
+
<% unless options[:singleton] %>
|
44
|
+
index:
|
45
|
+
<%- if has_belongsto? -%>
|
46
|
+
title: "<%= plural_name.humanize %> von <%= belongsto.singular_name.humanize %> {{parent}}"
|
47
|
+
<%- else -%>
|
48
|
+
title: "<%= plural_name.humanize %>"
|
49
|
+
<%- end -%>
|
50
|
+
<%- end -%>
|
51
|
+
<%- if embed? %>
|
52
|
+
indexpartial:
|
53
|
+
title: "<%= plural_name.humanize %>"
|
54
|
+
empty: "Bisher keine <%= plural_name.humanize %>"
|
55
|
+
<%- end -%>
|
56
|
+
|
57
|
+
new:
|
58
|
+
title: "<%= class_name %> anlegen"
|
59
|
+
|
60
|
+
update:
|
61
|
+
flash: "<%= class_name %> erfolgreich gespeichert."
|
@@ -0,0 +1,61 @@
|
|
1
|
+
en:
|
2
|
+
activerecord:
|
3
|
+
models:
|
4
|
+
<%= file_name %>: "<%= class_name %>"
|
5
|
+
|
6
|
+
attributes:
|
7
|
+
<%= file_name %>:
|
8
|
+
<%- attributes.each do |a| -%>
|
9
|
+
<%= a.name %>: "<%= a.name.humanize %>"
|
10
|
+
<%- end -%>
|
11
|
+
|
12
|
+
<%= file_name %>:
|
13
|
+
cmds:
|
14
|
+
breadcrumb: "<%= plural_name.humanize %>"
|
15
|
+
list: "List <%= plural_name %>"
|
16
|
+
new: "New <%= singular_name %>"
|
17
|
+
|
18
|
+
<%- if not listifies.empty? -%>
|
19
|
+
selects:
|
20
|
+
<%- listifies.each do |field, values| -%>
|
21
|
+
<%= field %>:
|
22
|
+
<%- values.each do |value| -%>
|
23
|
+
<%= value.downcase %>: "<%= value.humanize %>"
|
24
|
+
<%- end -%>
|
25
|
+
|
26
|
+
<%- end -%>
|
27
|
+
<%- end -%>
|
28
|
+
errors:
|
29
|
+
template:
|
30
|
+
header_message: "<%= singular_name.humanize %> could not be saved."
|
31
|
+
message: "Please check the following fields:"
|
32
|
+
|
33
|
+
not_found: "<%= class_name %> not found."
|
34
|
+
|
35
|
+
create:
|
36
|
+
flash: "<%= class_name %> was successfully created."
|
37
|
+
|
38
|
+
destroy:
|
39
|
+
flash: "<%= class_name %> was successfully deleted."
|
40
|
+
|
41
|
+
edit:
|
42
|
+
title: "Editing <%= singular_name %>"
|
43
|
+
<% unless options[:singleton] %>
|
44
|
+
index:
|
45
|
+
<%- if has_belongsto? -%>
|
46
|
+
title: "<%= plural_name.humanize %> of <%= belongsto.singular_name %> {{parent}}"
|
47
|
+
<%- else -%>
|
48
|
+
title: "<%= plural_name.humanize %>"
|
49
|
+
<%- end -%>
|
50
|
+
<%- end -%>
|
51
|
+
<%- if embed? %>
|
52
|
+
indexpartial:
|
53
|
+
title: "<%= plural_name.humanize %>"
|
54
|
+
empty: "No <%= plural_name %> so far"
|
55
|
+
<%- end -%>
|
56
|
+
|
57
|
+
new:
|
58
|
+
title: "New <%= singular_name %>"
|
59
|
+
|
60
|
+
update:
|
61
|
+
flash: "<%= class_name %> was successfully updated."
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# The code in this file implements helper class <%= class_name %>Helper.
|
2
|
+
|
3
|
+
# Class <%= class_name %>Helper provides helpers available in all views of
|
4
|
+
# the <%= class_name %>Controller.
|
5
|
+
|
6
|
+
module <%= class_name %>Helper
|
7
|
+
|
8
|
+
# Returns a breadcrumbs for the current object (if any).
|
9
|
+
|
10
|
+
def <%= shell.base.file_name %>_breadcrumbs
|
11
|
+
<%- if shell.base.has_belongsto? -%>
|
12
|
+
breadcrumbs = [[root_path, t('standard.cmds.home')],
|
13
|
+
[<%= shell.base.belongsto.plural_name %>_path, t('<%= shell.base.belongsto.file_name %>.cmds.breadcrumb')],
|
14
|
+
[<%= shell.base.belongsto.file_name %>_path(@<%= shell.base.belongsto.file_name %>), @<%= shell.base.belongsto.file_name %>.to_s]]
|
15
|
+
|
16
|
+
if defined? @<%= shell.base.file_name %> and not @<%= shell.base.file_name %>.blank?
|
17
|
+
<%- if shell.base.embed? -%>
|
18
|
+
if @<%= shell.base.file_name %>.<%= shell.base.belongsto.file_name %>.<%= shell.base.table_name %>.count > <%= shell.base.class_name %>::PARENT_EMBED
|
19
|
+
breadcrumbs << [<%= shell.base.path_of_with_belongsto_if_any %>, t('<%= shell.base.file_name %>.cmds.breadcrumb')]
|
20
|
+
end
|
21
|
+
|
22
|
+
<%- else -%>
|
23
|
+
breadcrumbs << [<%= shell.base.path_of_with_belongsto_if_any %>, t('<%= shell.base.file_name %>.cmds.breadcrumb')]
|
24
|
+
<%- end -%>
|
25
|
+
breadcrumbs << @<%= shell.base.file_name %>.to_s if not @<%= shell.base.file_name %>.new_record?
|
26
|
+
else
|
27
|
+
breadcrumbs << t('<%= shell.base.file_name %>.cmds.breadcrumb')
|
28
|
+
end
|
29
|
+
<%- else -%>
|
30
|
+
breadcrumbs = [[root_path, t('standard.cmds.home')]]
|
31
|
+
|
32
|
+
if defined? @<%= shell.base.file_name %> and not @<%= shell.base.file_name %>.blank?
|
33
|
+
breadcrumbs << [<%= shell.base.path_of_with_belongsto_if_any %>, t('<%= shell.base.file_name %>.cmds.breadcrumb')]
|
34
|
+
breadcrumbs << @<%= shell.base.file_name %>.to_s if not @<%= shell.base.file_name %>.new_record?
|
35
|
+
else
|
36
|
+
breadcrumbs << t('<%= shell.base.file_name %>.cmds.breadcrumb')
|
37
|
+
end
|
38
|
+
<%- end -%>
|
39
|
+
|
40
|
+
return breadcrumbs
|
41
|
+
end
|
42
|
+
|
43
|
+
<%- if shell.base.has_will_paginate? -%>
|
44
|
+
|
45
|
+
# Returns an interface for pagination using the will_paginate library.
|
46
|
+
#
|
47
|
+
# Parameters:
|
48
|
+
#
|
49
|
+
# [collection] Collection to paginate with
|
50
|
+
# [options] Options to customize pager with plus own :delimiter option
|
51
|
+
|
52
|
+
def <%= shell.base.file_name %>_pagination(collection, options = {})
|
53
|
+
delimiter = options.delete(:delimiter) || '|'
|
54
|
+
|
55
|
+
if collection.total_pages > 1
|
56
|
+
pager = will_paginate(collection, { :inner_window => 10,
|
57
|
+
:next_label => t('standard.cmds.next_page'),
|
58
|
+
:previous_label => t('standard.cmds.previous_page') }.merge(options))
|
59
|
+
|
60
|
+
return (pager + ' ' + delimiter) if not pager.blank?
|
61
|
+
end
|
62
|
+
|
63
|
+
return ''
|
64
|
+
end
|
65
|
+
<%- end -%>
|
66
|
+
<%- if shell.base.has_searchbar? -%>
|
67
|
+
|
68
|
+
# Returns HTML for a searchbar with an A B C picker and a small form for
|
69
|
+
# searching a <%= shell.base.searchbar %>.
|
70
|
+
#
|
71
|
+
# Parameters:
|
72
|
+
#
|
73
|
+
# [chars] Array with chars the <%= shell.base.searchbar %> of existing <%= plural_name %> start with
|
74
|
+
# [term] Search term to render with
|
75
|
+
# [:options] Options to customize
|
76
|
+
#
|
77
|
+
# Options:
|
78
|
+
#
|
79
|
+
# [:type] What to render (:abc, :form or :both)
|
80
|
+
# [:default] Default search term to show in input field (localized value)
|
81
|
+
# [:size] Size of input field (defaults to 12)
|
82
|
+
|
83
|
+
def <%= shell.base.file_name %>_searchbar(chars, term, options = {})
|
84
|
+
type = options[:type] || 'both'
|
85
|
+
default = options[:default] || t('standard.cmds.search')
|
86
|
+
size = options[:size] || 12
|
87
|
+
|
88
|
+
if type == :form
|
89
|
+
cols = []
|
90
|
+
else
|
91
|
+
cols = ('a'..'z').collect do |c|
|
92
|
+
if (same = ((not term.blank?) and c.upcase == term.upcase))
|
93
|
+
inner = content_tag(:strong, c.upcase)
|
94
|
+
elsif chars.include? c
|
95
|
+
inner = link_to(c.upcase, <%= shell.base.path_of_with_belongsto_if_any(:extraargs => ':q => c') %>)
|
96
|
+
else
|
97
|
+
inner = c.upcase
|
98
|
+
end
|
99
|
+
|
100
|
+
content_tag(:td, inner, :class => (same ? 'selected' : nil))
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
if type != :abc
|
105
|
+
value = (term.blank? or term.length > 1) ? term : default
|
106
|
+
form = content_tag(:form, tag(:input, :type => :text,
|
107
|
+
:id => 'searchbar-term', :name => 'q', :size => size,
|
108
|
+
:value => value), :method => 'get', :id => 'searchbar-form',
|
109
|
+
:action => <%= shell.base.path_of_with_belongsto_if_any %>)
|
110
|
+
|
111
|
+
cols << content_tag(:td, form)
|
112
|
+
end
|
113
|
+
|
114
|
+
return content_tag(:table, content_tag(:tr,
|
115
|
+
ActiveSupport::SafeBuffer.new(cols.join)), :class => 'searchbar')
|
116
|
+
end
|
117
|
+
<%- end -%>
|
118
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# The code in this file implements helper class ScaffoldHelper.
|
2
|
+
|
3
|
+
# Class ScaffoldHelper provides helpers available in all views and controllers
|
4
|
+
# using localized scaffolding.
|
5
|
+
|
6
|
+
module ScaffoldHelper
|
7
|
+
|
8
|
+
# Sets the title and headline to display (actually done in the layout file)
|
9
|
+
# and optional breadcrumbs. The latter has to be an array of arrays with
|
10
|
+
# path and label or label if not linkable.
|
11
|
+
#
|
12
|
+
# Parameters:
|
13
|
+
#
|
14
|
+
# [title] Title to set
|
15
|
+
# [breadcrumbs] Optional breadcrumbs to set
|
16
|
+
|
17
|
+
def title(title, breadcrumbs = nil)
|
18
|
+
content_for(:title) { title }
|
19
|
+
|
20
|
+
if not breadcrumbs.blank?
|
21
|
+
content_for(:breadcrumbs) {
|
22
|
+
cols = breadcrumbs.collect do |b|
|
23
|
+
if b.kind_of? Array then
|
24
|
+
content_tag(:li, link_to(b.last, b.first))
|
25
|
+
else
|
26
|
+
content_tag(:li, b, :class => 'decent')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
content_tag(:ul, ActiveSupport::SafeBuffer.new(cols.join),
|
31
|
+
:id => 'breadcrumbs')
|
32
|
+
}
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
if not defined? root_path
|
37
|
+
|
38
|
+
# Returns a default root path if no other route has been defined so far.
|
39
|
+
|
40
|
+
def root_path
|
41
|
+
return url_for('/')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
if not defined? root_path
|
46
|
+
|
47
|
+
# Returns a default root URL if no other route has been defined so far.
|
48
|
+
|
49
|
+
def root_url
|
50
|
+
return url_for('/')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|