ckeditor5 1.17.1 → 1.17.2

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
  SHA256:
3
- metadata.gz: 78094e2b7cf2ec9677a1eb9ee629918df4b6e9de62104cd6e2c8713b02ae7776
4
- data.tar.gz: 63816a1caf2f2c42f08321f0169fb14e54e2f6424bc80834890dfde68a76f22f
3
+ metadata.gz: 789a4ca2ac0428fa31866a6fd99433577137e9ccbe64e321e86c20126814dc80
4
+ data.tar.gz: f4d3bc6f16777dd8dc03c4e62aada4c772021fc72bc99eeecbc668ac0dcc39b6
5
5
  SHA512:
6
- metadata.gz: b3691b024f1cedc6da4086fea1754f6f4d7acdc2d3d9a10f5628b0b54c539e941073cff74459dd776956c758fe4da1f78b54a6c8ab0128248e1ecc9b308ba168
7
- data.tar.gz: a5d4109cc5f559144a66abd7ba1b672a27d1ad41131bdead590c144d4c4b2d1eb518953267bfee9fb6fa14c9cce027416de28dece065ed852c198fd4587e08dc
6
+ metadata.gz: '02238ab74fc9982f48177b33bc20b59332ca58f9cb594868649e72ec5e504760d41e5a0ce4afee0cbeb5463335e34fb4303e5e30fd6b21abd96968a017ba715f'
7
+ data.tar.gz: f4a331e7b9afca50f1063626a73c083ed521521333e7492eaf252bd30a360b435459fe5a8d321c4b5a4355c291272c2ee352a01bbd15d8c916434222fbdaa804
data/README.md CHANGED
@@ -44,8 +44,9 @@ In your view:
44
44
  <!-- app/views/demos/index.html.erb -->
45
45
 
46
46
  <% content_for :head do %>
47
- <!-- 📦 Adds importmap with CKEditor 5 assets. Language is optional. -->
48
- <%= ckeditor5_assets language: :en %>
47
+ <!-- 📦 Adds importmap with CKEditor 5 assets. -->
48
+ <!-- 🌍 It'll automatically use your `I18n.locale` language. -->
49
+ <%= ckeditor5_assets %>
49
50
  <% end %>
50
51
 
51
52
  <!-- 🖋️ CKEditor 5 might be placed using simple view helper ... -->
@@ -77,6 +78,11 @@ CKEditor5::Rails.configure do
77
78
 
78
79
  # Upload images to the server using the simple upload adapter, instead of Base64 encoding.
79
80
  # simple_upload_adapter
81
+
82
+ # Specify global language for the editor.
83
+ # It can be done here, in controller or in the view.
84
+ # By default the `I18n.locale` is used.
85
+ # language :pl
80
86
  end
81
87
  ```
82
88
 
@@ -149,6 +155,10 @@ For extending CKEditor's functionality, refer to the [plugins directory](https:/
149
155
  - [How to access editor instance? 🤔](#how-to-access-editor-instance-)
150
156
  - [Common Tasks and Solutions 💡](#common-tasks-and-solutions-)
151
157
  - [Setting Editor Language 🌐](#setting-editor-language-)
158
+ - [Setting the language in the assets helper](#setting-the-language-in-the-assets-helper)
159
+ - [Setting the language in the initializer](#setting-the-language-in-the-initializer)
160
+ - [Setting the language on the editor level](#setting-the-language-on-the-editor-level)
161
+ - [Preloading multiple translation packs](#preloading-multiple-translation-packs)
152
162
  - [Integrating with Forms 📋](#integrating-with-forms-)
153
163
  - [Rails form builder integration](#rails-form-builder-integration)
154
164
  - [Simple form integration](#simple-form-integration)
@@ -443,7 +453,7 @@ In order to set the language for the content, you can pass the `content` keyword
443
453
  CKEditor5::Rails.configure do
444
454
  # ... other configuration
445
455
 
446
- language :pl
456
+ language :pl, content: :en
447
457
  end
448
458
  ```
449
459
 
@@ -1089,7 +1099,7 @@ The `ckeditor5_editor` helper renders CKEditor 5 instances in your views. Before
1089
1099
 
1090
1100
  You can set the initial content of the editor using the `initial_data` keyword argument or by passing the content directly to the `ckeditor5_editor` helper block.
1091
1101
 
1092
- The example below shows how to set the initial content of the editor using the `initial_data` keyword argument:
1102
+ The example below shows how to set the initial content of the editor using the `initial_data` and `language` keyword arguments:
1093
1103
 
1094
1104
  ```erb
1095
1105
  <!-- app/views/demos/index.html.erb -->
@@ -1407,7 +1417,11 @@ This section covers frequent questions and scenarios when working with CKEditor
1407
1417
 
1408
1418
  ### Setting Editor Language 🌐
1409
1419
 
1410
- You can set the language of the editor using the `language` keyword argument. The example below shows how to set the language of the editor to Polish:
1420
+ By default, CKEditor 5 uses the language specified in your `I18n.locale` configuration. However, you can override the language of the editor by passing the `language` keyword in few places.
1421
+
1422
+ #### Setting the language in the assets helper
1423
+
1424
+ Language specified here will be used for all editor instances on the page.
1411
1425
 
1412
1426
  ```erb
1413
1427
  <!-- app/views/demos/index.html.erb -->
@@ -1419,7 +1433,9 @@ You can set the language of the editor using the `language` keyword argument. Th
1419
1433
  <%= ckeditor5_editor %>
1420
1434
  ```
1421
1435
 
1422
- It can be also set in the initializer:
1436
+ #### Setting the language in the initializer
1437
+
1438
+ Language specified here will be used for all editor instances in your application.
1423
1439
 
1424
1440
  ```rb
1425
1441
  # config/initializers/ckeditor5.rb
@@ -1430,7 +1446,9 @@ CKEditor5::Rails.configure do
1430
1446
  end
1431
1447
  ```
1432
1448
 
1433
- ... or on the editor level (keep in mind to load translations in the assets helper):
1449
+ #### Setting the language on the editor level
1450
+
1451
+ Language specified here will be used only for this editor instance. Keep in mind that you have to load the translation pack in the assets helper using the `translations` initializer method.
1434
1452
 
1435
1453
  ```erb
1436
1454
  <!-- app/views/demos/index.html.erb -->
@@ -1438,6 +1456,18 @@ end
1438
1456
  <%= ckeditor5_editor language: :pl %>
1439
1457
  ```
1440
1458
 
1459
+ #### Preloading multiple translation packs
1460
+
1461
+ You can preload multiple translation packs in the initializer using the `translations` method:
1462
+
1463
+ ```rb
1464
+ # config/initializers/ckeditor5.rb
1465
+
1466
+ CKEditor5::Rails.configure do
1467
+ translations :pl, :es
1468
+ end
1469
+ ```
1470
+
1441
1471
  ### Integrating with Forms 📋
1442
1472
 
1443
1473
  You can integrate CKEditor 5 with Rails form builders like `form_for` or `simple_form`. The example below shows how to integrate CKEditor 5 with a Rails form using the `form_for` helper:
@@ -44,7 +44,7 @@ module CKEditor5::Rails
44
44
 
45
45
  private
46
46
 
47
- def merge_with_editor_preset(preset, **kwargs)
47
+ def merge_with_editor_preset(preset, language: nil, **kwargs)
48
48
  found_preset = Engine.find_preset(preset)
49
49
 
50
50
  if found_preset.blank?
@@ -55,6 +55,13 @@ module CKEditor5::Rails
55
55
 
56
56
  new_preset = found_preset.clone.merge_with_hash!(**kwargs)
57
57
 
58
+ # Assign default language if not present
59
+ if language.present?
60
+ new_preset.language(language)
61
+ elsif !new_preset.language?
62
+ new_preset.language(I18n.locale)
63
+ end
64
+
58
65
  %i[version type].each do |key|
59
66
  next if new_preset.public_send(key).present?
60
67
 
@@ -40,7 +40,7 @@ module CKEditor5::Rails::Presets
40
40
 
41
41
  private
42
42
 
43
- def define_default_preset # rubocop:disable Metrics/MethodLength
43
+ def define_default_preset
44
44
  define :default do
45
45
  version CKEditor5::Rails::DEFAULT_CKEDITOR_VERSION
46
46
 
@@ -61,7 +61,7 @@ module CKEditor5::Rails
61
61
  end
62
62
  end
63
63
 
64
- def merge_with_hash!(language: nil, **overrides) # rubocop:disable Metrics/AbcSize
64
+ def merge_with_hash!(**overrides) # rubocop:disable Metrics/AbcSize
65
65
  @version = Semver.new(overrides[:version]) if overrides.key?(:version)
66
66
  @premium = overrides.fetch(:premium, premium)
67
67
  @cdn = overrides.fetch(:cdn, cdn)
@@ -73,8 +73,6 @@ module CKEditor5::Rails
73
73
  @ckbox = overrides.fetch(:ckbox, ckbox) if overrides.key?(:ckbox) || ckbox
74
74
  @config = config.merge(overrides.fetch(:config, {}))
75
75
 
76
- language(language) if language
77
-
78
76
  self
79
77
  end
80
78
 
@@ -182,6 +180,10 @@ module CKEditor5::Rails
182
180
  builder
183
181
  end
184
182
 
183
+ def language?
184
+ config[:language].present?
185
+ end
186
+
185
187
  def language(ui = nil, content: ui) # rubocop:disable Naming/MethodParameterName
186
188
  return config[:language] if ui.nil?
187
189
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  module CKEditor5
4
4
  module Rails
5
- VERSION = '1.17.1'
5
+ VERSION = '1.17.2'
6
6
 
7
7
  DEFAULT_CKEDITOR_VERSION = '43.3.1'
8
8
  end
@@ -16,6 +16,10 @@ RSpec.describe CKEditor5::Rails::Cdn::Helpers do
16
16
  end
17
17
  end
18
18
 
19
+ let(:context) do
20
+ helper.instance_variable_get(:@__ckeditor_context)
21
+ end
22
+
19
23
  let(:bundle_html) { '<script src="test.js"></script>' }
20
24
  let(:serializer) do
21
25
  instance_double(CKEditor5::Rails::Assets::AssetsBundleHtmlSerializer, to_html: bundle_html)
@@ -37,7 +41,7 @@ RSpec.describe CKEditor5::Rails::Cdn::Helpers do
37
41
  .with(
38
42
  instance_of(CKEditor5::Rails::Semver),
39
43
  'ckeditor5',
40
- translations: [:pl],
44
+ translations: %i[pl en],
41
45
  cdn: :cloud
42
46
  )
43
47
  .and_call_original
@@ -61,7 +65,7 @@ RSpec.describe CKEditor5::Rails::Cdn::Helpers do
61
65
  .with(
62
66
  instance_of(CKEditor5::Rails::Semver),
63
67
  'ckeditor5',
64
- translations: [:pl],
68
+ translations: %i[pl en],
65
69
  cdn: :cloud
66
70
  )
67
71
  .and_call_original
@@ -71,7 +75,7 @@ RSpec.describe CKEditor5::Rails::Cdn::Helpers do
71
75
  .with(
72
76
  instance_of(CKEditor5::Rails::Semver),
73
77
  'ckeditor5-premium-features',
74
- translations: [:pl],
78
+ translations: %i[pl en],
75
79
  cdn: :cloud
76
80
  )
77
81
  .and_call_original
@@ -111,7 +115,7 @@ RSpec.describe CKEditor5::Rails::Cdn::Helpers do
111
115
  CKEditor5::Rails::Presets::PresetBuilder.new do
112
116
  version '34.1.0'
113
117
  type :classic
114
- translations :pl
118
+ language :pl
115
119
  cdn :cloud
116
120
  license_key 'preset-license'
117
121
  premium false
@@ -121,20 +125,43 @@ RSpec.describe CKEditor5::Rails::Cdn::Helpers do
121
125
  it 'allows overriding preset values' do
122
126
  helper.ckeditor5_assets(preset: :default, license_key: 'overridden-license')
123
127
 
124
- expect(helper.instance_variable_get(:@__ckeditor_context)[:preset].license_key)
125
- .to eq('overridden-license')
128
+ expect(context[:preset].license_key).to eq('overridden-license')
126
129
  end
127
130
 
128
131
  it 'preserves non-overridden preset values' do
129
132
  helper.ckeditor5_assets(preset: :default, license_key: 'overridden-license')
130
- preset_context = helper.instance_variable_get(:@__ckeditor_context)[:preset]
133
+ preset_context = context[:preset]
131
134
 
132
135
  expect(preset_context.version).to eq('34.1.0')
133
136
  expect(preset_context.premium?).to be false
134
137
  expect(preset_context.cdn).to eq(:cloud)
135
- expect(preset_context.translations).to eq([:pl])
138
+ expect(preset_context.translations).to eq(%i[en pl])
136
139
  expect(preset_context.type).to eq(:classic)
137
140
  end
141
+
142
+ it 'allows to override language using language parameter' do
143
+ preset.language(:en)
144
+ helper.ckeditor5_assets(preset: :default, language: :pl)
145
+
146
+ expect(context[:preset].language).to eq({ ui: :pl, content: :pl })
147
+ end
148
+
149
+ it 'should not override language if it\'s specified in preset and not passed to helper' do
150
+ preset.language(:en)
151
+ helper.ckeditor5_assets(preset: :default)
152
+
153
+ expect(context[:preset].language).to eq({ ui: :en, content: :en })
154
+ end
155
+
156
+ it 'should use I18n.locale as default language if it\'s not specified in preset' do
157
+ preset.configure :language, nil
158
+
159
+ allow(I18n).to receive(:locale).and_return(:pl)
160
+
161
+ helper.ckeditor5_assets(preset: :default)
162
+
163
+ expect(context[:preset].language).to eq({ ui: :pl, content: :pl })
164
+ end
138
165
  end
139
166
 
140
167
  context 'with missing required parameters' do
@@ -293,11 +293,6 @@ RSpec.describe CKEditor5::Rails::Presets::PresetBuilder do
293
293
  expect(builder.merge_with_hash!(version: '35.0.0')).to eq(builder)
294
294
  end
295
295
 
296
- it 'merges language configuration' do
297
- builder.merge_with_hash!(language: :pl)
298
- expect(builder.config[:language]).to eq({ ui: :pl, content: :pl })
299
- end
300
-
301
296
  it 'preserves existing values when not overridden' do
302
297
  builder.version '34.0.0'
303
298
  builder.translations :en, :pl
@@ -328,6 +323,17 @@ RSpec.describe CKEditor5::Rails::Presets::PresetBuilder do
328
323
  end
329
324
  end
330
325
 
326
+ describe '#language?' do
327
+ it 'returns false when language is not set' do
328
+ expect(builder.language?).to be false
329
+ end
330
+
331
+ it 'returns true when language is set' do
332
+ builder.language(:pl)
333
+ expect(builder.language?).to be true
334
+ end
335
+ end
336
+
331
337
  describe '#language' do
332
338
  it 'returns language config when called without arguments' do
333
339
  builder.language(:pl, content: :en)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ckeditor5
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.17.1
4
+ version: 1.17.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mateusz Bagiński
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2024-11-26 00:00:00.000000000 Z
12
+ date: 2024-11-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails