typus 3.0.8 → 3.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 +8 -1
- data/README.md +2 -2
- data/Rakefile +6 -14
- data/app/controllers/admin/base_controller.rb +1 -1
- data/app/controllers/admin/dashboard_controller.rb +0 -1
- data/app/controllers/admin/resources_controller.rb +8 -11
- data/app/controllers/admin/session_controller.rb +5 -4
- data/app/helpers/admin/base_helper.rb +9 -2
- data/app/helpers/admin/dashboard_helper.rb +0 -6
- data/app/helpers/admin/display_helper.rb +1 -0
- data/app/helpers/admin/file_preview_helper.rb +0 -2
- data/app/helpers/admin/filters_helper.rb +6 -3
- data/app/helpers/admin/form_helper.rb +2 -4
- data/app/helpers/admin/list_helper.rb +1 -3
- data/app/helpers/admin/relationships_helper.rb +2 -4
- data/app/helpers/admin/resources_helper.rb +0 -2
- data/app/helpers/admin/search_helper.rb +0 -2
- data/app/helpers/admin/sidebar_helper.rb +0 -2
- data/app/helpers/admin/table_helper.rb +3 -6
- data/app/views/admin/account/forgot_password.html.erb +2 -2
- data/app/views/admin/account/new.html.erb +3 -7
- data/app/views/admin/{helpers/dashboard → dashboard}/_applications.html.erb +0 -0
- data/app/views/admin/dashboard/_sidebar.html.erb +1 -1
- data/app/views/admin/dashboard/show.html.erb +7 -1
- data/app/views/admin/helpers/base/_apps.html.erb +1 -1
- data/app/views/admin/helpers/base/_login_info.html.erb +2 -2
- data/app/views/admin/helpers/filters/_filters.html.erb +3 -1
- data/app/views/admin/resources/_form.html.erb +5 -2
- data/app/views/admin/resources/edit.html.erb +1 -1
- data/app/views/admin/resources/index.html.erb +1 -1
- data/app/views/admin/resources/show.html.erb +2 -2
- data/app/views/admin/session/new.html.erb +3 -7
- data/app/views/admin/templates/_belongs_to.html.erb +8 -1
- data/app/views/admin/templates/_belongs_to_with_autocomplete.html.erb +1 -1
- data/app/views/admin/templates/_relate_form.html.erb +1 -1
- data/app/views/admin/templates/_relate_form_with_autocomplete.html.erb +3 -1
- data/app/views/admin/templates/_string.html.erb +1 -1
- data/app/views/admin/templates/_text.html.erb +1 -1
- data/app/views/layouts/admin/base.html.erb +2 -0
- data/app/views/layouts/admin/headless.html.erb +2 -0
- data/app/views/layouts/admin/session.html.erb +6 -0
- data/config/routes.rb +4 -1
- data/lib/support/active_record.rb +0 -10
- data/lib/support/fake_user.rb +4 -6
- data/lib/support/object.rb +4 -0
- data/lib/support/string.rb +0 -8
- data/lib/typus.rb +2 -3
- data/lib/typus/authentication/base.rb +0 -1
- data/lib/typus/authentication/session.rb +22 -29
- data/lib/typus/orm/active_record.rb +5 -5
- data/lib/typus/orm/active_record/admin_user_v1.rb +93 -0
- data/lib/typus/orm/active_record/admin_user_v2.rb +49 -0
- data/lib/typus/orm/active_record/class_methods.rb +23 -143
- data/lib/typus/orm/active_record/user/instance_methods.rb +64 -0
- data/lib/typus/orm/base.rb +170 -0
- data/lib/typus/orm/mongo/class_methods.rb +11 -0
- data/lib/typus/resources.rb +2 -1
- data/lib/typus/version.rb +1 -1
- data/test/app/controllers/admin/account_controller_test.rb +4 -2
- data/test/app/controllers/admin/assets_controller_test.rb +12 -12
- data/test/app/controllers/admin/categories_controller_test.rb +5 -12
- data/test/app/controllers/admin/comments_controller_test.rb +1 -1
- data/test/app/controllers/admin/image_holders_controller_test.rb +1 -1
- data/test/app/controllers/admin/invoices_controller_test.rb +1 -1
- data/test/app/controllers/admin/posts_controller_test.rb +32 -32
- data/test/app/controllers/admin/projects_controller_test.rb +1 -1
- data/test/app/controllers/admin/typus_users_controller_test.rb +13 -17
- data/test/app/controllers/admin/users_controller_test.rb +9 -9
- data/test/app/helpers/admin/list_helper_test.rb +17 -0
- data/test/app/models/admin_user_test.rb +5 -0
- data/test/app/models/typus_user_roles_test.rb +1 -0
- data/test/app/models/typus_user_test.rb +45 -11
- data/test/factories.rb +1 -1
- data/test/fixtures/rails_app/app/controllers/admin/hits_controller.rb +40 -0
- data/test/fixtures/rails_app/app/controllers/admin_user.rb +3 -0
- data/test/fixtures/rails_app/app/models/asset.rb +0 -6
- data/test/fixtures/rails_app/app/models/hit.rb +27 -0
- data/test/fixtures/rails_app/app/views/admin/hits/_edit.html.erb +7 -0
- data/test/fixtures/rails_app/app/views/admin/hits/_index.html.erb +3 -0
- data/test/fixtures/rails_app/app/views/admin/hits/index.html.erb +28 -0
- data/test/fixtures/rails_app/config/boot.rb +3 -10
- data/test/fixtures/rails_app/config/deploy.rb +1 -1
- data/test/fixtures/rails_app/config/mongoid.yml +20 -0
- data/test/fixtures/rails_app/config/typus/crud_extended.yml +2 -0
- data/test/fixtures/rails_app/config/typus/mongo_db.yml +4 -0
- data/test/fixtures/rails_app/config/typus/mongo_db_roles.yml +2 -0
- data/test/fixtures/rails_app/db/schema.rb +11 -0
- data/test/lib/support/fake_user_test.rb +4 -0
- data/test/lib/support/string_test.rb +0 -18
- data/test/lib/typus/orm/active_record/class_methods_test.rb +14 -2
- data/test/lib/typus/orm/active_record/search_test.rb +1 -1
- data/test/lib/typus_test.rb +2 -1
- data/typus.gemspec +1 -1
- metadata +32 -45
- data/lib/typus/orm/active_record/instance_methods.rb +0 -13
- data/lib/typus/orm/active_record/user.rb +0 -157
- data/test/fixtures/rails_app/public/javascripts/application.js +0 -2
- data/test/fixtures/rails_app/public/javascripts/controls.js +0 -965
- data/test/fixtures/rails_app/public/javascripts/dragdrop.js +0 -974
- data/test/fixtures/rails_app/public/javascripts/effects.js +0 -1123
- data/test/fixtures/rails_app/public/javascripts/prototype.js +0 -6001
- data/test/fixtures/rails_app/public/javascripts/rails.js +0 -175
data/Gemfile
CHANGED
|
@@ -15,7 +15,7 @@ gem 'rack-cache', :require => 'rack/cache'
|
|
|
15
15
|
gem 'rails', '~> 3.0'
|
|
16
16
|
|
|
17
17
|
group :test do
|
|
18
|
-
gem 'shoulda'
|
|
18
|
+
gem 'shoulda-context'
|
|
19
19
|
gem 'mocha' # Make sure mocha is loaded at the end ...
|
|
20
20
|
end
|
|
21
21
|
|
|
@@ -39,6 +39,13 @@ group :development, :test do
|
|
|
39
39
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
+
# MongoDB support is still in "beta" mode, so I'm not testing it for the moment.
|
|
43
|
+
group :production do
|
|
44
|
+
# MongoDB support
|
|
45
|
+
gem 'mongoid', '2.0.0.rc.7'
|
|
46
|
+
gem 'bson_ext'
|
|
47
|
+
end
|
|
48
|
+
|
|
42
49
|
group :production do
|
|
43
50
|
|
|
44
51
|
platforms :jruby do
|
data/README.md
CHANGED
|
@@ -17,8 +17,8 @@ Français, Magyar, Italiano, Portuguese, Russian, 中文)
|
|
|
17
17
|
- Customizable and extensible templates.
|
|
18
18
|
- Integrated [paperclip][1] and [dragonfly][2] attachments viewer.
|
|
19
19
|
- Low memory footprint.
|
|
20
|
-
- Works with `Rails 3.0`.
|
|
21
|
-
- Tested with `
|
|
20
|
+
- Works with `Rails 3.0.5`.
|
|
21
|
+
- Tested with `ruby-1.8.7-p334`, `ree-1.8.7-2011.03` and `ruby-1.9.2-p180` and `jruby-1.5.6`.
|
|
22
22
|
- Tested with `SQLite`, `MySQL` and `PostgreSQL`.
|
|
23
23
|
- MIT License, the same as Rails.
|
|
24
24
|
|
data/Rakefile
CHANGED
|
@@ -15,7 +15,6 @@ Rake::TestTask.new(:test) do |t|
|
|
|
15
15
|
t.verbose = true
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
=begin
|
|
19
18
|
desc 'Generate plugin documentation.'
|
|
20
19
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
21
20
|
rdoc.rdoc_dir = 'rdoc'
|
|
@@ -24,39 +23,32 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
|
24
23
|
rdoc.rdoc_files.include('README.rdoc')
|
|
25
24
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
26
25
|
end
|
|
27
|
-
=end
|
|
28
26
|
|
|
27
|
+
desc "Deploy test/fixtures/rails_app"
|
|
29
28
|
task :deploy do
|
|
30
29
|
system "cd test/fixtures/rails_app && cap deploy"
|
|
31
30
|
end
|
|
32
31
|
|
|
33
|
-
RUBIES = [
|
|
32
|
+
RUBIES = %w[1.8.7 ree 1.9.2 jruby].join(",")
|
|
34
33
|
|
|
35
34
|
namespace :setup do
|
|
36
35
|
|
|
37
36
|
desc "Setup test environment"
|
|
38
37
|
task :test_environment do
|
|
39
|
-
|
|
38
|
+
system "rvm install #{RUBIES}"
|
|
40
39
|
end
|
|
41
40
|
|
|
42
41
|
desc "Setup CI Joe"
|
|
43
42
|
task :cijoe do
|
|
44
|
-
system "git config --replace-all cijoe.runner 'rake test:
|
|
43
|
+
system "git config --replace-all cijoe.runner 'rake test:rubies'"
|
|
45
44
|
end
|
|
46
45
|
|
|
47
46
|
end
|
|
48
47
|
|
|
49
48
|
namespace :test do
|
|
50
49
|
|
|
51
|
-
task :
|
|
52
|
-
RUBIES
|
|
53
|
-
system "rvm use #{ruby}"
|
|
54
|
-
system "rm -f Gemfile.lock"
|
|
55
|
-
system "bundle install"
|
|
56
|
-
system "rake"
|
|
57
|
-
# system "rake DB=postgresql"
|
|
58
|
-
# system "rake DB=mysql"
|
|
59
|
-
end
|
|
50
|
+
task :rubies do
|
|
51
|
+
system "rvm #{RUBIES} rake"
|
|
60
52
|
end
|
|
61
53
|
|
|
62
54
|
end
|
|
@@ -6,13 +6,13 @@ class Admin::ResourcesController < Admin::BaseController
|
|
|
6
6
|
include Typus::Controller::Filters
|
|
7
7
|
include Typus::Controller::Format
|
|
8
8
|
|
|
9
|
+
Whitelist = [:edit, :update, :destroy, :toggle, :position, :relate, :unrelate]
|
|
10
|
+
|
|
9
11
|
before_filter :get_model
|
|
10
12
|
before_filter :set_scope
|
|
11
|
-
before_filter :get_object, :only => [:show
|
|
12
|
-
before_filter :check_resource_ownership, :only =>
|
|
13
|
+
before_filter :get_object, :only => Whitelist + [:show]
|
|
14
|
+
before_filter :check_resource_ownership, :only => Whitelist
|
|
13
15
|
before_filter :check_if_user_can_perform_action_on_resources
|
|
14
|
-
before_filter :set_order, :only => [:index]
|
|
15
|
-
before_filter :set_fields, :only => [:index, :new, :edit, :create, :update, :show]
|
|
16
16
|
|
|
17
17
|
##
|
|
18
18
|
# This is the main index of the model. With filters, conditions and more.
|
|
@@ -89,7 +89,6 @@ class Admin::ResourcesController < Admin::BaseController
|
|
|
89
89
|
respond_to do |format|
|
|
90
90
|
if @item.update_attributes(attributes)
|
|
91
91
|
set_attributes_on_update
|
|
92
|
-
reload_locales
|
|
93
92
|
format.html { redirect_on_success }
|
|
94
93
|
format.json { render :json => @item }
|
|
95
94
|
else
|
|
@@ -119,10 +118,7 @@ class Admin::ResourcesController < Admin::BaseController
|
|
|
119
118
|
end
|
|
120
119
|
format.json { render :json => @item }
|
|
121
120
|
else
|
|
122
|
-
format.html
|
|
123
|
-
set_fields
|
|
124
|
-
render :edit
|
|
125
|
-
end
|
|
121
|
+
format.html { render :edit }
|
|
126
122
|
format.json { render :json => @item.errors, :status => :unprocessable_entity }
|
|
127
123
|
end
|
|
128
124
|
end
|
|
@@ -239,9 +235,10 @@ class Admin::ResourcesController < Admin::BaseController
|
|
|
239
235
|
@resource = @resource.order(set_order).includes(eager_loading)
|
|
240
236
|
end
|
|
241
237
|
|
|
242
|
-
def
|
|
243
|
-
@
|
|
238
|
+
def fields
|
|
239
|
+
@resource.typus_fields_for(params[:action])
|
|
244
240
|
end
|
|
241
|
+
helper_method :fields
|
|
245
242
|
|
|
246
243
|
def set_order
|
|
247
244
|
params[:sort_order] ||= "desc"
|
|
@@ -2,7 +2,6 @@ class Admin::SessionController < Admin::BaseController
|
|
|
2
2
|
|
|
3
3
|
skip_before_filter :reload_config_and_roles
|
|
4
4
|
skip_before_filter :authenticate
|
|
5
|
-
skip_before_filter :set_locale
|
|
6
5
|
|
|
7
6
|
before_filter :create_an_account?, :only => [:new, :create]
|
|
8
7
|
|
|
@@ -23,9 +22,7 @@ class Admin::SessionController < Admin::BaseController
|
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
def destroy
|
|
26
|
-
|
|
27
|
-
I18n.locale = I18n.default_locale
|
|
28
|
-
redirect_to :action => :new
|
|
25
|
+
deauthenticate
|
|
29
26
|
end
|
|
30
27
|
|
|
31
28
|
private
|
|
@@ -34,4 +31,8 @@ class Admin::SessionController < Admin::BaseController
|
|
|
34
31
|
redirect_to new_admin_account_path if Typus.user_class.count.zero?
|
|
35
32
|
end
|
|
36
33
|
|
|
34
|
+
def set_locale
|
|
35
|
+
I18n.locale = I18n.default_locale
|
|
36
|
+
end
|
|
37
|
+
|
|
37
38
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
module Admin
|
|
2
|
-
|
|
3
2
|
module BaseHelper
|
|
4
3
|
|
|
5
4
|
def title(page_title)
|
|
@@ -24,6 +23,15 @@ module Admin
|
|
|
24
23
|
end
|
|
25
24
|
end
|
|
26
25
|
|
|
26
|
+
def admin_sign_out_path
|
|
27
|
+
case Typus.authentication
|
|
28
|
+
when :devise
|
|
29
|
+
send("destroy_#{Typus.user_class_name.underscore}_session")
|
|
30
|
+
else
|
|
31
|
+
destroy_admin_session_path
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
27
35
|
def display_flash_message(message = flash)
|
|
28
36
|
if message.compact.any?
|
|
29
37
|
render "admin/helpers/base/flash_message",
|
|
@@ -33,5 +41,4 @@ module Admin
|
|
|
33
41
|
end
|
|
34
42
|
|
|
35
43
|
end
|
|
36
|
-
|
|
37
44
|
end
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
module Admin
|
|
2
|
-
|
|
3
2
|
module DashboardHelper
|
|
4
3
|
|
|
5
|
-
def applications
|
|
6
|
-
render "admin/helpers/dashboard/applications"
|
|
7
|
-
end
|
|
8
|
-
|
|
9
4
|
def resources(admin_user)
|
|
10
5
|
available = Typus.resources.delete_if { |r| !(admin_user.is_a?(FakeUser) || admin_user.resources.include?(r)) }
|
|
11
6
|
render "admin/helpers/dashboard/resources", :resources => available
|
|
12
7
|
end
|
|
13
8
|
|
|
14
9
|
end
|
|
15
|
-
|
|
16
10
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
module Admin
|
|
2
|
-
|
|
3
2
|
module FiltersHelper
|
|
4
3
|
|
|
5
4
|
def build_filters(resource = @resource, params = params)
|
|
@@ -80,7 +79,12 @@ module Admin
|
|
|
80
79
|
end
|
|
81
80
|
|
|
82
81
|
def string_filter(filter)
|
|
83
|
-
values = @resource
|
|
82
|
+
values = if @resource.const_defined?(filter.to_s.upcase)
|
|
83
|
+
@resource::const_get(filter.to_s.upcase).to_a
|
|
84
|
+
else
|
|
85
|
+
@resource.send(filter.to_s).to_a
|
|
86
|
+
end
|
|
87
|
+
|
|
84
88
|
items = [[Typus::I18n.t("Show by %{attribute}", :attribute => @resource.human_attribute_name(filter).downcase), ""]]
|
|
85
89
|
array = values.first.is_a?(Array) ? values : values.map { |i| [i, i] }
|
|
86
90
|
items += array
|
|
@@ -91,5 +95,4 @@ module Admin
|
|
|
91
95
|
end
|
|
92
96
|
|
|
93
97
|
end
|
|
94
|
-
|
|
95
98
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
module Admin
|
|
2
|
-
|
|
3
2
|
module FormHelper
|
|
4
3
|
|
|
5
4
|
def build_form(fields, form)
|
|
@@ -19,7 +18,7 @@ module Admin
|
|
|
19
18
|
typus_template_field(key, :string, form)
|
|
20
19
|
end
|
|
21
20
|
end
|
|
22
|
-
end
|
|
21
|
+
end.html_safe
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
def typus_tree_field(attribute, form)
|
|
@@ -38,7 +37,7 @@ module Admin
|
|
|
38
37
|
next if admin_user.cannot?('read', association.class_name.typus_constantize)
|
|
39
38
|
html << send("typus_form_#{association.macro}", relationship)
|
|
40
39
|
end
|
|
41
|
-
end
|
|
40
|
+
end.html_safe
|
|
42
41
|
end
|
|
43
42
|
|
|
44
43
|
def typus_template_field(attribute, template, form)
|
|
@@ -74,5 +73,4 @@ module Admin
|
|
|
74
73
|
end
|
|
75
74
|
|
|
76
75
|
end
|
|
77
|
-
|
|
78
76
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
module Admin
|
|
2
|
-
|
|
3
2
|
module ListHelper
|
|
4
3
|
|
|
5
4
|
def resources_actions
|
|
@@ -12,7 +11,7 @@ module Admin
|
|
|
12
11
|
path = params.dup.merge!(url).compact.cleanup
|
|
13
12
|
link_to Typus::I18n.t(body), path, options
|
|
14
13
|
end
|
|
15
|
-
end.join(" / ").html_safe
|
|
14
|
+
end.compact.join(" / ").html_safe
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
#--
|
|
@@ -27,5 +26,4 @@ module Admin
|
|
|
27
26
|
end
|
|
28
27
|
|
|
29
28
|
end
|
|
30
|
-
|
|
31
29
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
module Admin
|
|
2
|
-
|
|
3
2
|
module RelationshipsHelper
|
|
4
3
|
|
|
5
4
|
def setup_relationship(field)
|
|
@@ -107,7 +106,7 @@ module Admin
|
|
|
107
106
|
|
|
108
107
|
def set_condition
|
|
109
108
|
if @resource.typus_user_id? && admin_user.is_not_root?
|
|
110
|
-
|
|
109
|
+
admin_user.owns?(@item)
|
|
111
110
|
else
|
|
112
111
|
true
|
|
113
112
|
end
|
|
@@ -152,7 +151,7 @@ module Admin
|
|
|
152
151
|
# Pass the resource_id only to edit/update because only there is where
|
|
153
152
|
# the record actually exists.
|
|
154
153
|
options.merge!(:resource_id => @item.id) if %w(edit update).include?(params[:action])
|
|
155
|
-
message = link_to Typus::I18n.t("Add"), options
|
|
154
|
+
message = link_to Typus::I18n.t("Add new"), options
|
|
156
155
|
end
|
|
157
156
|
|
|
158
157
|
# Set the template.
|
|
@@ -183,5 +182,4 @@ module Admin
|
|
|
183
182
|
end
|
|
184
183
|
|
|
185
184
|
end
|
|
186
|
-
|
|
187
185
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
module Admin
|
|
2
|
-
|
|
3
2
|
module TableHelper
|
|
4
3
|
|
|
5
4
|
def build_table(model, fields, items, link_options = {}, association = nil, association_name = nil)
|
|
@@ -15,7 +14,7 @@ module Admin
|
|
|
15
14
|
def table_header(model, fields, params = params)
|
|
16
15
|
fields.map do |key, value|
|
|
17
16
|
|
|
18
|
-
key = key.gsub(".", " ") if key.match(/\./)
|
|
17
|
+
key = key.gsub(".", " ") if key.to_s.match(/\./)
|
|
19
18
|
content = model.human_attribute_name(key)
|
|
20
19
|
|
|
21
20
|
if params[:action].eql?('index') && model.typus_options_for(:sortable)
|
|
@@ -80,12 +79,10 @@ module Admin
|
|
|
80
79
|
|
|
81
80
|
alias :table_has_many_field :table_has_and_belongs_to_many_field
|
|
82
81
|
|
|
83
|
-
def
|
|
82
|
+
def table_text_field(attribute, item)
|
|
84
83
|
(raw_content = item.send(attribute)).present? ? truncate(raw_content) : "—".html_safe
|
|
85
84
|
end
|
|
86
85
|
|
|
87
|
-
alias :table_text_field :table_string_field
|
|
88
|
-
|
|
89
86
|
def table_generic_field(attribute, item)
|
|
90
87
|
(raw_content = item.send(attribute)).present? ? raw_content : "—".html_safe
|
|
91
88
|
end
|
|
@@ -94,6 +91,7 @@ module Admin
|
|
|
94
91
|
alias :table_integer_field :table_generic_field
|
|
95
92
|
alias :table_decimal_field :table_generic_field
|
|
96
93
|
alias :table_virtual_field :table_generic_field
|
|
94
|
+
alias :table_string_field :table_generic_field
|
|
97
95
|
|
|
98
96
|
def table_selector_field(attribute, item)
|
|
99
97
|
item.mapping(attribute)
|
|
@@ -159,5 +157,4 @@ module Admin
|
|
|
159
157
|
end
|
|
160
158
|
|
|
161
159
|
end
|
|
162
|
-
|
|
163
160
|
end
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
|
|
10
10
|
<li>
|
|
11
11
|
<%= form.label :email, Typus.user_class.human_attribute_name(:email) %>
|
|
12
|
-
<%= form.text_field :email, :size => 20, :class => "text" %>
|
|
12
|
+
<%= form.text_field :email, :size => 20, :class => "text", :autofocus => 'autofocus' %>
|
|
13
13
|
</li>
|
|
14
14
|
|
|
15
15
|
<li>
|
|
16
|
-
<%= submit_tag Typus::I18n.t("Submit"), :class => "button" %> <%= link_to Typus::I18n.t("I remember my password"), new_admin_session_path %>
|
|
16
|
+
<%= submit_tag Typus::I18n.t("Submit"), :class => "button", :disable_with => Typus::I18n.t("Sending data ...") %> <%= link_to Typus::I18n.t("I remember my password"), new_admin_session_path %>
|
|
17
17
|
</li>
|
|
18
18
|
|
|
19
19
|
</ul>
|