tb_core 1.3.9 → 1.3.10
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f0cffee46e753563727811398cd307e5263df61
|
4
|
+
data.tar.gz: a47903d588cfae9ddea08cbe0a844685b7a9578f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5e33f9dc1dea1dc14efae2017bce65b7168cab6a1b9a6c5d082898fce58a2eb134ee88a811414ce360a3e5c5ad676be29ef942d22b2d7110c204ab0f3b5b229
|
7
|
+
data.tar.gz: 3ccb89456ef9606374f775aaeadffb943ea144e0167d02b6243ce1eb2b17bb2f87363dac20d34272c03ce4b31ca8ef558f3c18f38b810156facf562aa8b08a33
|
@@ -33,7 +33,7 @@ tb.remote = {
|
|
33
33
|
var onRemoteFormBefore = function(event){
|
34
34
|
var $form = $(this);
|
35
35
|
if($form.data('type') === undefined){
|
36
|
-
$form.data('type', 'json');
|
36
|
+
$form.data('type', 'json');
|
37
37
|
}
|
38
38
|
};
|
39
39
|
|
@@ -91,7 +91,7 @@ var buildSuccessPath = function(path, json){
|
|
91
91
|
*
|
92
92
|
* ie:
|
93
93
|
* <form action="..." data-remote="true" data-errors="inline">
|
94
|
-
* - OR -
|
94
|
+
* - OR -
|
95
95
|
* <form action="..." data-remote="true" data-errors="alert">
|
96
96
|
*/
|
97
97
|
var onRemoteFormErrors = function(event, jqXHR, textStatus, errorThrown){
|
@@ -99,7 +99,7 @@ var onRemoteFormErrors = function(event, jqXHR, textStatus, errorThrown){
|
|
99
99
|
var errorType = $form.data('errors');
|
100
100
|
if(jqXHR.status == 422){
|
101
101
|
if(errorType == 'inline'){
|
102
|
-
displayErrorsInline($form, jqXHR.responseJSON
|
102
|
+
displayErrorsInline($form, jqXHR.responseJSON);
|
103
103
|
}
|
104
104
|
else{
|
105
105
|
displayErrorsAlert(jqXHR.responseJSON);
|
@@ -119,9 +119,10 @@ var onRemoteFormErrors = function(event, jqXHR, textStatus, errorThrown){
|
|
119
119
|
var displayErrorsInline = function($form, errors){
|
120
120
|
$form.find('.form-error-inline, .form-error-base').remove();
|
121
121
|
for(var key in errors){
|
122
|
+
var messages = errors[key].messages;
|
122
123
|
if(key == 'base'){
|
123
|
-
for(var i=0; i<
|
124
|
-
$form.prepend('<p class="form-error form-error-base">'+
|
124
|
+
for(var i=0; i<messages.length; i++){
|
125
|
+
$form.prepend('<p class="form-error form-error-base">'+messages[i]+'</p>');
|
125
126
|
}
|
126
127
|
}
|
127
128
|
else{
|
@@ -134,20 +135,21 @@ var displayErrorsInline = function($form, errors){
|
|
134
135
|
$input = $form.find("[name$='[" + keyArr.join('][') + "]']");
|
135
136
|
}
|
136
137
|
else{
|
137
|
-
$input = $form.find("[name$='[" + key + "]']")
|
138
|
-
|
138
|
+
$input = $form.find("[name$='[" + key + "]']").filter(function(index, input){
|
139
|
+
return !input.name.match(/\]\[/); // Filter out nested attribute inputs ie model[a][b]
|
140
|
+
})
|
139
141
|
if($input.length === 0 && !key.match(/_id$/)){
|
140
142
|
$input = $form.find("[name$='[" + key + "_id]']");
|
141
143
|
}
|
142
144
|
}
|
143
145
|
|
146
|
+
var message = messages[0];
|
144
147
|
if($input.length > 0){
|
145
|
-
var message = errors[key][0];
|
146
148
|
$input.parent().append('<p class="form-error form-error-inline">'+message+'</p>');
|
147
149
|
}
|
148
150
|
else{
|
149
151
|
console.warn('Missing input field for key:', key);
|
150
|
-
$form.prepend('<p class="form-error form-error-base">'+key+' '+
|
152
|
+
$form.prepend('<p class="form-error form-error-base">'+key+' '+message+'</p>');
|
151
153
|
}
|
152
154
|
}
|
153
155
|
}
|
@@ -156,7 +158,7 @@ var displayErrorsInline = function($form, errors){
|
|
156
158
|
if(!tb.util.elementIsInView($firstError)){
|
157
159
|
$('body, html').animate({
|
158
160
|
scrollTop: $firstError.offset().top
|
159
|
-
});
|
161
|
+
});
|
160
162
|
}
|
161
163
|
}
|
162
164
|
};
|
@@ -164,14 +166,19 @@ var displayErrorsInline = function($form, errors){
|
|
164
166
|
/*
|
165
167
|
* Display errors in a standard window.alert dialog
|
166
168
|
*/
|
167
|
-
var displayErrorsAlert = function(
|
169
|
+
var displayErrorsAlert = function(errors){
|
168
170
|
var text = "Please correct the following errors:\n";
|
169
171
|
var label, message;
|
170
172
|
var index = 0;
|
171
|
-
for(var key in
|
172
|
-
label =
|
173
|
-
message =
|
174
|
-
|
173
|
+
for(var key in errors){
|
174
|
+
label = errors[key].label;
|
175
|
+
message = errors[key].messages[0];
|
176
|
+
if(key == 'base'){
|
177
|
+
text += ' - ' + message + "\n"
|
178
|
+
}
|
179
|
+
else{
|
180
|
+
text += ' - ' + label + ' ' + message + "\n"
|
181
|
+
}
|
175
182
|
index++;
|
176
183
|
}
|
177
184
|
window.alert(text);
|
@@ -191,7 +198,7 @@ var onRemoteDeleteTableRow = function(){
|
|
191
198
|
/*
|
192
199
|
* Attach an authenticity_token input field when a remote form aborts due to a file input field
|
193
200
|
*
|
194
|
-
* When a form is configured with remote:true, the authenticity_token hidden input you would normally see is not included. Then what
|
201
|
+
* When a form is configured with remote:true, the authenticity_token hidden input you would normally see is not included. Then what
|
195
202
|
* can happen is the form can fall back to a non-remote action for some reason, possibly due to the presence of a file input field. The
|
196
203
|
* net result is that the server responds with a "Can't verify CSRF token authenticity" error because none was sent.
|
197
204
|
*
|
@@ -214,7 +221,7 @@ var onRemoteAbortedFile = function(event, inputs){
|
|
214
221
|
|
215
222
|
/*
|
216
223
|
* Monkeypatch the base $.rails.enableFormElement function to add a
|
217
|
-
* delay and a success text value to the button before returning to
|
224
|
+
* delay and a success text value to the button before returning to
|
218
225
|
* default state.
|
219
226
|
*/
|
220
227
|
var extendEnableFormElementMethod = function(){
|
@@ -232,7 +239,7 @@ var extendEnableFormElementMethod = function(){
|
|
232
239
|
}, 1000);
|
233
240
|
}
|
234
241
|
else{
|
235
|
-
originalEnableFormElement(element);
|
242
|
+
originalEnableFormElement(element);
|
236
243
|
}
|
237
244
|
};
|
238
245
|
};
|
@@ -1,16 +1,16 @@
|
|
1
|
-
|
1
|
+
class UserSessionsController < ApplicationController
|
2
2
|
|
3
3
|
skip_before_action :require_user, :only => [:new, :create, :destroy]
|
4
4
|
skip_before_action :check_requires_password_change, :only => [:destroy, :change_password, :set_change_password]
|
5
5
|
|
6
6
|
respond_to :html, :json, :js
|
7
7
|
layout 'user_sessions'
|
8
|
-
|
8
|
+
|
9
9
|
def new
|
10
10
|
@user_session = SpudUserSession.new
|
11
11
|
render 'new'
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def create
|
15
15
|
@user_session = SpudUserSession.new(params[:spud_user_session])
|
16
16
|
if @user_session.save()
|
@@ -31,7 +31,7 @@
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def destroy
|
36
36
|
current_user_session.destroy unless current_user_session.blank?
|
37
37
|
respond_with({}) do |format|
|
@@ -43,6 +43,7 @@
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def change_password
|
46
|
+
require_user
|
46
47
|
render 'change_password'
|
47
48
|
end
|
48
49
|
|
data/lib/spud_core/version.rb
CHANGED
data/lib/tb_core/responder.rb
CHANGED
@@ -26,10 +26,12 @@ class TbCore::Responder < ActionController::Responder
|
|
26
26
|
# This override also sends the translated labels for convenience
|
27
27
|
#
|
28
28
|
def json_resource_errors
|
29
|
-
return
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
return Hash[resource.errors.messages.map do |attribute, messages|
|
30
|
+
[attribute, {
|
31
|
+
label: resource.class.human_attribute_name(attribute),
|
32
|
+
messages: messages
|
33
|
+
}]
|
34
|
+
end]
|
33
35
|
end
|
34
36
|
|
35
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tb_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Woods
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|