phrasing 4.3.1 → 4.3.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/app/assets/javascripts/phrasing.js +2 -1
- data/app/controllers/phrasing_phrases_controller.rb +6 -0
- data/lib/phrasing.rb +1 -0
- data/lib/phrasing/string.rb +33 -0
- data/lib/phrasing/version.rb +1 -1
- data/spec/controllers/phrasing_phrases_controller.rb +48 -16
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 83301b282dedbe937faf28eaf197cf9356c6beafff92f44d1f04847ab2a09ab7
|
4
|
+
data.tar.gz: b95a0281ff86a4f96b6915c946752b671dbdf6c469a1f1ec430835757a9bcda7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0ee9d2fdd94f71c7e6c48e2e50103f0687232a1e7a93b46b893b78a63a673aa4a1548ec6e81e010cd317970c3efbcc0053d429a172c4d88b19b328a2c262204
|
7
|
+
data.tar.gz: 593e4c12e28556d1afa7a11cf5a5c7db2ea7550a716879c53bdcf539da5039650f8cacb2d52072617a8fb293844ad71a1f530d765a2b9f45fe4ecfe3b4a3bc4c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Phrasing Change Log
|
2
2
|
|
3
|
+
## 4.3.2 (Oct 30th, 2020)
|
4
|
+
|
5
|
+
- Send `edit_mode_enabled` as parameter and reject phrasing update if not `true` - fixes issue [#90](https://github.com/infinum/phrasing/issues/90)
|
6
|
+
|
3
7
|
## 4.3.1 (Sep 3rd, 2019)
|
4
8
|
|
5
9
|
- Bump nokogiri version from 1.8.3 to 1.10.4 due to [security vulnerability](https://github.com/sparklemotion/nokogiri/issues/1915)
|
@@ -119,7 +119,7 @@ var phrasing_setup = function(){
|
|
119
119
|
$.ajax({
|
120
120
|
type: "PUT",
|
121
121
|
url: url,
|
122
|
-
data: { new_value: content },
|
122
|
+
data: { new_value: content, edit_mode_enabled: Phrasing.isEditModeEnabled() },
|
123
123
|
success: function(e){
|
124
124
|
userTriggeredPhrasingDOMChange = false;
|
125
125
|
if(content === "Empty"){
|
@@ -135,6 +135,7 @@ var phrasing_setup = function(){
|
|
135
135
|
}
|
136
136
|
},
|
137
137
|
error: function(e){
|
138
|
+
console.log("Phrasing:", e.responseText);
|
138
139
|
statusBubbleWidget.error();
|
139
140
|
}
|
140
141
|
});
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'phrasing/string'
|
2
|
+
|
1
3
|
class PhrasingPhrasesController < Phrasing.parent_controller.constantize
|
2
4
|
|
3
5
|
layout 'phrasing'
|
@@ -66,6 +68,7 @@ class PhrasingPhrasesController < Phrasing.parent_controller.constantize
|
|
66
68
|
klass, attribute = params[:klass], params[:attribute]
|
67
69
|
|
68
70
|
return render status: 403, text: 'Phrase not whitelisted' unless Phrasing.whitelisted?(klass, attribute)
|
71
|
+
return render status: 403, text: 'Edit mode is disabled' unless edit_mode?
|
69
72
|
|
70
73
|
record = klass.classify.constantize.find(params[:id])
|
71
74
|
|
@@ -88,4 +91,7 @@ class PhrasingPhrasesController < Phrasing.parent_controller.constantize
|
|
88
91
|
PhrasingPhrase.fuzzy_search(params[:search], params[:locale])
|
89
92
|
end
|
90
93
|
|
94
|
+
def edit_mode?
|
95
|
+
Phrasing::String.new(params[:edit_mode_enabled]).to_bool
|
96
|
+
end
|
91
97
|
end
|
data/lib/phrasing.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Phrasing
|
2
|
+
class String
|
3
|
+
attr_reader :value
|
4
|
+
|
5
|
+
def initialize(value)
|
6
|
+
@value = value
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_bool
|
10
|
+
if major_version >= 5
|
11
|
+
ActiveModel::Type::Boolean.new.cast(value)
|
12
|
+
elsif major_version == 4 && minor_version >= 2
|
13
|
+
ActiveRecord::Type::Boolean.new.type_cast_from_database(value)
|
14
|
+
else
|
15
|
+
ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def major_version
|
22
|
+
rails_version.first.to_i
|
23
|
+
end
|
24
|
+
|
25
|
+
def minor_version
|
26
|
+
rails_version.second.to_i
|
27
|
+
end
|
28
|
+
|
29
|
+
def rails_version
|
30
|
+
@rails_version ||= ::Rails.version.split('.')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/phrasing/version.rb
CHANGED
@@ -6,29 +6,61 @@ describe PhrasingPhrasesController do
|
|
6
6
|
get :index
|
7
7
|
expect(response).to render_template(:index)
|
8
8
|
end
|
9
|
+
end
|
9
10
|
|
11
|
+
describe 'PUT #update' do
|
10
12
|
let(:phrase) { FactoryBot.create(:phrasing_phrase, value: 'old_value') }
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
context 'when edit model is enabled' do
|
15
|
+
it 'updates phrase' do
|
16
|
+
expect do
|
17
|
+
xhr(
|
18
|
+
:put,
|
19
|
+
:update,
|
20
|
+
klass: 'PhrasingPhrase',
|
21
|
+
attribute: 'value',
|
22
|
+
id: phrase.id,
|
23
|
+
new_value: 'new_value',
|
24
|
+
edit_model_enabled: 'true'
|
25
|
+
)
|
26
|
+
end.to change { phrase.reload.value }.from('old_value').to('new_value')
|
27
|
+
|
28
|
+
expect(response.code).to eq('200')
|
29
|
+
end
|
30
|
+
|
31
|
+
it "doesn't update locale" do
|
32
|
+
expect do
|
33
|
+
xhr(
|
34
|
+
:put,
|
35
|
+
:update,
|
36
|
+
klass: 'PhrasingPhrase',
|
37
|
+
attribute: 'locale',
|
38
|
+
id: phrase.id,
|
39
|
+
new_value: 'de',
|
40
|
+
edit_model_enabled: 'true'
|
41
|
+
)
|
42
|
+
end.to_not(change { phrase.reload.locale })
|
19
43
|
|
20
|
-
|
44
|
+
expect(response.code).to eq('403')
|
45
|
+
end
|
21
46
|
end
|
22
47
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
48
|
+
context 'when edit mode is disabled' do
|
49
|
+
it "doesn't update phrase" do
|
50
|
+
expect do
|
51
|
+
xhr(
|
52
|
+
:put,
|
53
|
+
:update,
|
54
|
+
klass: 'PhrasingPhrase',
|
55
|
+
attribute: 'value',
|
56
|
+
id: phrase.id,
|
57
|
+
new_value: 'new_value',
|
58
|
+
edit_model_enabled: 'false'
|
59
|
+
)
|
60
|
+
end.not_to(change { phrase.reload.value })
|
30
61
|
|
31
|
-
|
62
|
+
expect(response.code).to eq('403')
|
63
|
+
end
|
32
64
|
end
|
33
65
|
end
|
34
66
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phrasing
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.3.
|
4
|
+
version: 4.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomislav Car
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-10-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -132,6 +132,7 @@ files:
|
|
132
132
|
- lib/phrasing.rb
|
133
133
|
- lib/phrasing/rails/engine.rb
|
134
134
|
- lib/phrasing/serializer.rb
|
135
|
+
- lib/phrasing/string.rb
|
135
136
|
- lib/phrasing/version.rb
|
136
137
|
- phrasing.gemspec
|
137
138
|
- spec/controllers/phrasing_phrases_controller.rb
|