rails_admin_globalize_field 0.4.0 → 1.0.0
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 +5 -5
- data/.gitignore +2 -1
- data/.rspec +3 -0
- data/Gemfile +2 -0
- data/README.md +8 -25
- data/Rakefile +3 -1
- data/app/views/rails_admin/main/_form_globalize_tabs.html.haml +8 -16
- data/lib/rails_admin_globalize_field.rb +6 -59
- data/lib/rails_admin_globalize_field/engine.rb +3 -1
- data/lib/rails_admin_globalize_field/globalize_tabs.rb +49 -0
- data/lib/rails_admin_globalize_field/tab.rb +33 -0
- data/lib/rails_admin_globalize_field/version.rb +3 -1
- data/rails_admin_globalize_field.gemspec +17 -18
- data/spec/dummy/.gitignore +1 -0
- data/spec/dummy/Gemfile +3 -3
- data/spec/dummy/config/application.rb +1 -0
- data/spec/dummy/config/initializers/rails_admin.rb +6 -4
- data/spec/dummy/db/schema.rb +37 -20
- data/spec/globalize_tabs_spec.rb +60 -0
- data/spec/spec_helper.rb +1 -3
- metadata +25 -51
- data/app/assets/stylesheets/rails_admin/ra.globalize_tabs.scss +0 -17
- data/spec/field_spec.rb +0 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 10dd549fb4d3f7c1fb40606d74e72abde83d98bb2e69a8469a3e58b75fdb1fba
|
4
|
+
data.tar.gz: 3da2435d555a26eece56fde13ca63182e58dba3fb7c122f5e99aec7255bf9100
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 476f247b621e109a667b5ca32e3fc705267552a3772fde1430f835012855581b8ad31d247278c5fc1b09420701e13575c82f541363a47e5599a6c92406649cbd
|
7
|
+
data.tar.gz: c85334ec124d5a1ebf4de16f7a3b05a595f5eb812111a21363f95c1548b6760e70a00b531538217388f1e1f7b5934590cbc3edea529034ab9568c73d6ea680d0
|
data/.gitignore
CHANGED
data/.rspec
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,29 +1,28 @@
|
|
1
1
|
# RailsAdminGlobalizeField
|
2
2
|
|
3
|
-
|
3
|
+
RailsAdminGlobalizeField adds tabbed interface to [rails_admin](https://github.com/sferik/rails_admin) for multilingual models (using [globalize](https://github.com/globalize/globalize) gem)
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
This gem uses Translation models generated by globalize, so you don't need to add any additional model to your app (as some older globalize3 gists suggested).
|
5
|
+
It adds custom field type that you can use for globalize's translations association.
|
8
6
|
|
9
7
|
|
10
8
|
## Installation
|
11
9
|
|
12
|
-
Add and configure globalize
|
10
|
+
Add and configure globalize first.
|
13
11
|
|
14
12
|
``` ruby
|
15
|
-
gem 'globalize', '~>
|
13
|
+
gem 'globalize', '~> 5.0'
|
16
14
|
```
|
17
15
|
|
18
|
-
|
16
|
+
Add this gem and run `bundle`.
|
17
|
+
|
19
18
|
``` ruby
|
20
|
-
gem 'rails_admin_globalize_field'
|
19
|
+
gem 'rails_admin_globalize_field', '~> 1.0'
|
21
20
|
```
|
22
21
|
|
23
22
|
|
24
23
|
## Usage
|
25
24
|
|
26
|
-
> Don't forget to set I18n.available_locale
|
25
|
+
> Don't forget to set I18n.available_locale, because it uses that to determine what tabs to show
|
27
26
|
|
28
27
|
Add **translation** models to `config.included_models` in `initializers/rails_admin.rb`:
|
29
28
|
``` ruby
|
@@ -54,27 +53,11 @@ Add configuration to your **translated** model and associated **translation** mo
|
|
54
53
|
end
|
55
54
|
```
|
56
55
|
|
57
|
-
|
58
|
-
Add this stylesheet into app/assets/stylesheets/rails_admin/theming.scss:
|
59
|
-
``` css
|
60
|
-
/*
|
61
|
-
*= require rails_admin/ra.globalize_tabs
|
62
|
-
*/
|
63
|
-
```
|
64
|
-
|
65
|
-
|
66
56
|
If you need to add validation to the translation class, you can add it on `translation_class` inside **translated** model:
|
67
57
|
```ruby
|
68
58
|
translation_class.validates :title, presence: true
|
69
59
|
```
|
70
60
|
|
71
|
-
|
72
|
-
## Known issues
|
73
|
-
|
74
|
-
If you need to use `null: false` options on any column in translations table, you'll have to use [this globalize fork](https://github.com/scarfacedeb/globalize/tree/before_callbacks) for now.
|
75
|
-
See: https://github.com/globalize/globalize/issues/325
|
76
|
-
|
77
|
-
|
78
61
|
## Screenshot
|
79
62
|
|
80
63
|

|
data/Rakefile
CHANGED
@@ -1,19 +1,11 @@
|
|
1
|
-
- field.translations(true) # fetch translations and memoize them
|
2
|
-
- key = field.abstract_model.model_name.parameterize
|
3
|
-
|
4
1
|
.controls
|
5
|
-
.globalize-errors
|
6
|
-
= form.errors_for(field)
|
7
2
|
%ul.nav.nav-tabs{ :style => 'margin-top:5px' }
|
8
|
-
- field.
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
- field.tabs.each do |tab|
|
4
|
+
%li{ class: ('active' if tab.active?) }
|
5
|
+
= link_to tab.locale, "#", data: { toggle: "tab", target: "##{tab.id}" }, class: ('text-danger' unless tab.valid?)
|
6
|
+
|
12
7
|
.tab-content
|
13
|
-
- field.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
= nested_form.generate({:action => :nested, :model_config => field.associated_model_config, :nested_in => field.name })
|
18
|
-
.globalize-help
|
19
|
-
= form.help_for(field)
|
8
|
+
- field.tabs.each do |tab|
|
9
|
+
= form.fields_for field.name, tab.translation, wrapper: false do |f|
|
10
|
+
.fields.tab-pane{ id: tab.id, class: ('active' if tab.active?) }
|
11
|
+
= f.generate(action: :nested, model_config: field.associated_model_config, nested_in: field)
|
@@ -1,61 +1,8 @@
|
|
1
|
-
|
2
|
-
require 'rails_admin'
|
3
|
-
require 'rails_admin/config/fields/association'
|
4
|
-
|
5
|
-
module RailsAdmin
|
6
|
-
module Config
|
7
|
-
module Fields
|
8
|
-
module Types
|
9
|
-
class GlobalizeTabs < RailsAdmin::Config::Fields::Association
|
10
|
-
RailsAdmin::Config::Fields::Types::register(:globalize_tabs, self)
|
11
|
-
|
12
|
-
# A workaround for https://github.com/sferik/rails_admin/pull/1726
|
13
|
-
def initialize(parent, name, properties)
|
14
|
-
properties = parent.abstract_model.associations.detect { |p| name == p.name }
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
register_instance_option :partial do
|
19
|
-
:form_globalize_tabs
|
20
|
-
end
|
21
|
-
|
22
|
-
def method_name
|
23
|
-
"#{super}_attributes".to_sym
|
24
|
-
end
|
25
|
-
|
26
|
-
def generic_help
|
27
|
-
"" # false is ignored by I18n.translate
|
28
|
-
end
|
1
|
+
# frozen_string_literal: true
|
29
2
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
def available_locales
|
36
|
-
I18n.available_locales
|
37
|
-
end
|
38
|
-
def current_locale
|
39
|
-
I18n.locale
|
40
|
-
end
|
41
|
-
|
42
|
-
# Returns array of Translation objects.
|
43
|
-
# It gets existing or creates new empty translation for every locale.
|
44
|
-
# Call the first time with reset_cache == true to update memoized translations.
|
45
|
-
def translations reset_cache=false
|
46
|
-
return @translations if @translations && !reset_cache
|
47
|
-
|
48
|
-
translations = @bindings[:object].translations_by_locale
|
49
|
-
new_locales = available_locales - translations.keys.map(&:to_sym)
|
50
|
-
|
51
|
-
new_locales.map do |locale|
|
52
|
-
translations[locale] = @bindings[:object].translations.new({ locale: locale })
|
53
|
-
end
|
3
|
+
require 'rails_admin'
|
4
|
+
require 'rails_admin_globalize_field/engine'
|
5
|
+
require 'rails_admin_globalize_field/globalize_tabs'
|
54
6
|
|
55
|
-
|
56
|
-
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
7
|
+
module RailsAdminGlobalizeField
|
8
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_admin/config/fields/association'
|
4
|
+
require 'rails_admin_globalize_field/tab'
|
5
|
+
|
6
|
+
# Custom rails_admin field to add tabs for globalize translations
|
7
|
+
module RailsAdminGlobalizeField
|
8
|
+
class GlobalizeTabs < RailsAdmin::Config::Fields::Association
|
9
|
+
RailsAdmin::Config::Fields::Types.register(:globalize_tabs, self)
|
10
|
+
|
11
|
+
register_instance_option :partial do
|
12
|
+
:form_globalize_tabs
|
13
|
+
end
|
14
|
+
|
15
|
+
register_instance_option :build_if_missing do
|
16
|
+
true
|
17
|
+
end
|
18
|
+
|
19
|
+
def method_name
|
20
|
+
"#{super}_attributes".to_sym
|
21
|
+
end
|
22
|
+
|
23
|
+
def available_locales
|
24
|
+
I18n.available_locales
|
25
|
+
end
|
26
|
+
|
27
|
+
def tabs
|
28
|
+
tabs =
|
29
|
+
available_locales.map do |locale|
|
30
|
+
translation = bindings[:object].translation_for(locale, build_if_missing)
|
31
|
+
RailsAdminGlobalizeField::Tab.new(locale, translation, validate: submit_action?) if translation
|
32
|
+
end.compact
|
33
|
+
|
34
|
+
activate_tab(tabs)
|
35
|
+
tabs
|
36
|
+
end
|
37
|
+
|
38
|
+
# Hack to distinguish between REST new/edit and create/update actions.
|
39
|
+
# Taken from rails_admin/configs/new.rb
|
40
|
+
def submit_action?
|
41
|
+
!bindings[:controller].request.get?
|
42
|
+
end
|
43
|
+
|
44
|
+
def activate_tab(tabs)
|
45
|
+
opened = tabs.find(&:invalid?) || tabs.first
|
46
|
+
opened&.active!
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RailsAdminGlobalizeField
|
4
|
+
class Tab
|
5
|
+
attr_reader :locale, :translation
|
6
|
+
|
7
|
+
def initialize(locale, translation, validate: true)
|
8
|
+
@locale = locale
|
9
|
+
@translation = translation
|
10
|
+
@validate = validate
|
11
|
+
end
|
12
|
+
|
13
|
+
def id
|
14
|
+
['pane', translation.model_name.param_key, locale].join('-')
|
15
|
+
end
|
16
|
+
|
17
|
+
def active!
|
18
|
+
@active = true
|
19
|
+
end
|
20
|
+
|
21
|
+
def active?
|
22
|
+
@active
|
23
|
+
end
|
24
|
+
|
25
|
+
def valid?
|
26
|
+
!@validate || translation.valid?
|
27
|
+
end
|
28
|
+
|
29
|
+
def invalid?
|
30
|
+
!valid?
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,34 +1,33 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'rails_admin_globalize_field/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'rails_admin_globalize_field'
|
8
9
|
spec.version = RailsAdminGlobalizeField::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.description =
|
12
|
-
spec.summary =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
10
|
+
spec.authors = ['Andrew Volozhanin']
|
11
|
+
spec.email = ['scarfacedeb@gmail.com']
|
12
|
+
spec.description = 'Adds tabbed interface and custom field type for globalize translations to Rails_admin'
|
13
|
+
spec.summary = 'Tabbed interface and custom field type for globalize translations for Rails_admin'
|
14
|
+
spec.homepage = ''
|
15
|
+
spec.license = 'MIT'
|
15
16
|
|
16
|
-
spec.files = `git ls-files`.split(
|
17
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib']
|
20
21
|
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_dependency 'rails_admin', '>= 0
|
22
|
+
spec.add_dependency 'rails', '>= 5.0'
|
23
|
+
spec.add_dependency 'rails_admin', '>= 2.0'
|
23
24
|
|
24
25
|
spec.add_dependency 'globalize', '>= 5.0'
|
25
26
|
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency "rake"
|
27
|
+
spec.add_development_dependency 'capybara', '~> 3.29'
|
28
28
|
spec.add_development_dependency 'pry'
|
29
29
|
spec.add_development_dependency 'pry-byebug'
|
30
|
+
spec.add_development_dependency 'rake'
|
31
|
+
spec.add_development_dependency 'rspec-rails', '~> 3.8'
|
30
32
|
spec.add_development_dependency 'sqlite3'
|
31
|
-
spec.add_development_dependency 'rspec-rails', '~> 3.0'
|
32
|
-
spec.add_development_dependency 'capybara', '~> 2.4'
|
33
|
-
spec.add_development_dependency 'poltergeist', '~> 1.5'
|
34
33
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
/vendor/bundle
|
data/spec/dummy/Gemfile
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem 'rails',
|
3
|
+
gem 'rails', '~> 6.0'
|
4
4
|
gem 'sqlite3'
|
5
5
|
|
6
|
-
gem 'globalize',
|
7
|
-
gem 'rails_admin', '~> 0
|
6
|
+
gem 'globalize', '~> 5.0'
|
7
|
+
gem 'rails_admin', '~> 2.0'
|
8
8
|
|
9
9
|
gem 'rails_admin_globalize_field', path: '../../'
|
@@ -48,16 +48,18 @@ RailsAdmin.config do |config|
|
|
48
48
|
end
|
49
49
|
|
50
50
|
config.model 'Admin::Note' do
|
51
|
-
configure :translations, :globalize_tabs
|
52
|
-
active true # open by default
|
53
|
-
end
|
51
|
+
configure :translations, :globalize_tabs
|
54
52
|
|
55
53
|
edit do
|
56
|
-
include_fields :translations
|
54
|
+
include_fields :translations
|
57
55
|
end
|
58
56
|
end
|
59
57
|
|
60
58
|
config.model 'Admin::Note::Translation' do
|
59
|
+
visible false
|
60
|
+
configure :locale, :hidden do
|
61
|
+
help ''
|
62
|
+
end
|
61
63
|
field :title do
|
62
64
|
label 'Custom note title'
|
63
65
|
end
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -1,29 +1,46 @@
|
|
1
|
-
|
1
|
+
# encoding: UTF-8
|
2
|
+
# This file is auto-generated from the current state of the database. Instead
|
3
|
+
# of editing this file, please use the migrations feature of Active Record to
|
4
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
5
|
+
#
|
6
|
+
# Note that this schema.rb definition is the authoritative source for your
|
7
|
+
# database schema. If you need to create the application database on another
|
8
|
+
# system, you should be using db:schema:load, not running all the migrations
|
9
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
10
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
11
|
+
#
|
12
|
+
# It's strongly recommended that you check this file into your version control system.
|
2
13
|
|
3
|
-
|
4
|
-
t.string :slug
|
5
|
-
t.string :image
|
6
|
-
t.timestamps null: false
|
7
|
-
end
|
14
|
+
ActiveRecord::Schema.define(version: 0) do
|
8
15
|
|
9
|
-
create_table
|
10
|
-
t.integer
|
11
|
-
t.string
|
12
|
-
t.string
|
13
|
-
t.text
|
14
|
-
t.
|
16
|
+
create_table "page_translations", force: :cascade do |t|
|
17
|
+
t.integer "page_id", null: false
|
18
|
+
t.string "locale", null: false
|
19
|
+
t.string "title", null: false
|
20
|
+
t.text "content"
|
21
|
+
t.datetime "created_at", null: false
|
22
|
+
t.datetime "updated_at", null: false
|
15
23
|
end
|
16
24
|
|
17
|
-
create_table
|
18
|
-
t.string
|
19
|
-
t.
|
25
|
+
create_table "pages", force: :cascade do |t|
|
26
|
+
t.string "slug"
|
27
|
+
t.string "image"
|
28
|
+
t.datetime "created_at", null: false
|
29
|
+
t.datetime "updated_at", null: false
|
20
30
|
end
|
21
31
|
|
22
|
-
|
23
|
-
|
24
|
-
t.
|
25
|
-
t.string
|
26
|
-
t.
|
32
|
+
|
33
|
+
create_table "admin_note_translations", force: :cascade do |t|
|
34
|
+
t.integer "admin_note_id", null: false
|
35
|
+
t.string "locale", null: false
|
36
|
+
t.string "title", null: false
|
37
|
+
t.text "content"
|
38
|
+
t.datetime "created_at", null: false
|
39
|
+
t.datetime "updated_at", null: false
|
27
40
|
end
|
28
41
|
|
42
|
+
create_table "admin_notes", force: :cascade do |t|
|
43
|
+
t.datetime "created_at", null: false
|
44
|
+
t.datetime "updated_at", null: false
|
45
|
+
end
|
29
46
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'pry'
|
5
|
+
|
6
|
+
module RailsAdminGlobalizeField
|
7
|
+
RSpec.describe GlobalizeTabs do
|
8
|
+
let(:translated_page) do
|
9
|
+
Page.create!(
|
10
|
+
slug: '2001',
|
11
|
+
image: 'poster.png',
|
12
|
+
title: '2001: Space odyssey',
|
13
|
+
content: '<p>Visionary</p>'
|
14
|
+
)
|
15
|
+
end
|
16
|
+
let(:note) { Admin::Note.create!(title: 'Fix bug with namespaces') }
|
17
|
+
|
18
|
+
it 'renders all available locales as tabs' do
|
19
|
+
visit '/page/new'
|
20
|
+
expect(find('.globalize_tabs_type .nav-tabs')).to have_content('en cz ru')
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'localized data in correct tab' do
|
24
|
+
it 'renders the default locale' do
|
25
|
+
visit "/page/#{translated_page.id}/edit"
|
26
|
+
within('#pane-page_translation-en') do
|
27
|
+
expect(find_field('Title').value).to eq('2001: Space odyssey')
|
28
|
+
expect(find_field('Content')).to have_content('<p>Visionary</p>')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'renders cz locale' do
|
33
|
+
Globalize.with_locale(:cz) do
|
34
|
+
translated_page.title = '2001: Vesmírná odysea'
|
35
|
+
translated_page.content = '<p>Vizionář</p>'
|
36
|
+
translated_page.save!
|
37
|
+
end
|
38
|
+
|
39
|
+
visit "/page/#{translated_page.id}/edit"
|
40
|
+
|
41
|
+
within('#pane-page_translation-cz') do
|
42
|
+
expect(find_field('Title').value).to eq('2001: Vesmírná odysea')
|
43
|
+
expect(find_field('Content')).to have_content('<p>Vizionář</p>')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'works correctly with namespaced models' do
|
49
|
+
visit "/admin~note/#{note.id}/edit"
|
50
|
+
expect(page).to have_css('#pane-admin_note_translation-en')
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'allows to set custom label name for translated attribute' do
|
54
|
+
visit "/admin~note/#{note.id}/edit"
|
55
|
+
within('#pane-admin_note_translation-en') do
|
56
|
+
expect(find('#admin_note_translations_attributes_0_title_field')).to have_content('Custom note title')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_admin_globalize_field
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Volozhanin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-09-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rails_admin
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
33
|
+
version: '2.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0
|
40
|
+
version: '2.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: globalize
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,33 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '5.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: capybara
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.29'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rake
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
68
|
+
version: '3.29'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: pry
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +95,7 @@ dependencies:
|
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: rake
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - ">="
|
@@ -128,42 +114,28 @@ dependencies:
|
|
128
114
|
requirements:
|
129
115
|
- - "~>"
|
130
116
|
- !ruby/object:Gem::Version
|
131
|
-
version: '3.
|
117
|
+
version: '3.8'
|
132
118
|
type: :development
|
133
119
|
prerelease: false
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
135
121
|
requirements:
|
136
122
|
- - "~>"
|
137
123
|
- !ruby/object:Gem::Version
|
138
|
-
version: '3.
|
124
|
+
version: '3.8'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '2.4'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '2.4'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: poltergeist
|
126
|
+
name: sqlite3
|
155
127
|
requirement: !ruby/object:Gem::Requirement
|
156
128
|
requirements:
|
157
|
-
- - "
|
129
|
+
- - ">="
|
158
130
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
131
|
+
version: '0'
|
160
132
|
type: :development
|
161
133
|
prerelease: false
|
162
134
|
version_requirements: !ruby/object:Gem::Requirement
|
163
135
|
requirements:
|
164
|
-
- - "
|
136
|
+
- - ">="
|
165
137
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
138
|
+
version: '0'
|
167
139
|
description: Adds tabbed interface and custom field type for globalize translations
|
168
140
|
to Rails_admin
|
169
141
|
email:
|
@@ -173,17 +145,20 @@ extensions: []
|
|
173
145
|
extra_rdoc_files: []
|
174
146
|
files:
|
175
147
|
- ".gitignore"
|
148
|
+
- ".rspec"
|
176
149
|
- Gemfile
|
177
150
|
- LICENSE.txt
|
178
151
|
- README.md
|
179
152
|
- Rakefile
|
180
|
-
- app/assets/stylesheets/rails_admin/ra.globalize_tabs.scss
|
181
153
|
- app/views/.gitkeep
|
182
154
|
- app/views/rails_admin/main/_form_globalize_tabs.html.haml
|
183
155
|
- lib/rails_admin_globalize_field.rb
|
184
156
|
- lib/rails_admin_globalize_field/engine.rb
|
157
|
+
- lib/rails_admin_globalize_field/globalize_tabs.rb
|
158
|
+
- lib/rails_admin_globalize_field/tab.rb
|
185
159
|
- lib/rails_admin_globalize_field/version.rb
|
186
160
|
- rails_admin_globalize_field.gemspec
|
161
|
+
- spec/dummy/.gitignore
|
187
162
|
- spec/dummy/Gemfile
|
188
163
|
- spec/dummy/README.rdoc
|
189
164
|
- spec/dummy/Rakefile
|
@@ -230,7 +205,7 @@ files:
|
|
230
205
|
- spec/dummy/public/422.html
|
231
206
|
- spec/dummy/public/500.html
|
232
207
|
- spec/dummy/public/favicon.ico
|
233
|
-
- spec/
|
208
|
+
- spec/globalize_tabs_spec.rb
|
234
209
|
- spec/spec_helper.rb
|
235
210
|
homepage: ''
|
236
211
|
licenses:
|
@@ -251,12 +226,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
251
226
|
- !ruby/object:Gem::Version
|
252
227
|
version: '0'
|
253
228
|
requirements: []
|
254
|
-
|
255
|
-
rubygems_version: 2.4.5
|
229
|
+
rubygems_version: 3.0.4
|
256
230
|
signing_key:
|
257
231
|
specification_version: 4
|
258
232
|
summary: Tabbed interface and custom field type for globalize translations for Rails_admin
|
259
233
|
test_files:
|
234
|
+
- spec/dummy/.gitignore
|
260
235
|
- spec/dummy/Gemfile
|
261
236
|
- spec/dummy/README.rdoc
|
262
237
|
- spec/dummy/Rakefile
|
@@ -303,6 +278,5 @@ test_files:
|
|
303
278
|
- spec/dummy/public/422.html
|
304
279
|
- spec/dummy/public/500.html
|
305
280
|
- spec/dummy/public/favicon.ico
|
306
|
-
- spec/
|
281
|
+
- spec/globalize_tabs_spec.rb
|
307
282
|
- spec/spec_helper.rb
|
308
|
-
has_rdoc:
|
@@ -1,17 +0,0 @@
|
|
1
|
-
|
2
|
-
// scope all selectors (it's awful, but it's safer)
|
3
|
-
.globalize_tabs_type {
|
4
|
-
|
5
|
-
// Generic adjustments
|
6
|
-
|
7
|
-
.globalize-errors {
|
8
|
-
float: right;
|
9
|
-
margin-left: 15px;
|
10
|
-
line-height: 36px; // tabs height
|
11
|
-
}
|
12
|
-
.globalize-help {
|
13
|
-
margin-top: 10px;
|
14
|
-
margin-left: 180px; // == .form-horizontal .controls indent
|
15
|
-
}
|
16
|
-
|
17
|
-
}
|
data/spec/field_spec.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'pry'
|
3
|
-
|
4
|
-
RSpec.describe RailsAdmin::Config::Fields::Types::GlobalizeTabs do
|
5
|
-
let(:translated_page) {
|
6
|
-
Page.create!(
|
7
|
-
slug: '2001',
|
8
|
-
image: 'poster.png',
|
9
|
-
title: '2001: Space odyssey',
|
10
|
-
content: '<p>Visionary</p>'
|
11
|
-
)
|
12
|
-
}
|
13
|
-
let(:note) { Admin::Note.create(title: 'Fix bug with namespaces', image: 'urgent.png') }
|
14
|
-
|
15
|
-
it 'renders all available locales as tabs' do
|
16
|
-
visit '/page/new'
|
17
|
-
expect(find('.globalize_tabs_type').find('.nav-tabs')).to have_content 'en cz ru'
|
18
|
-
end
|
19
|
-
|
20
|
-
describe 'localized data in correct tab' do
|
21
|
-
it 'renders the default locale' do
|
22
|
-
visit "/page/#{translated_page.id}/edit"
|
23
|
-
within(".localized-pane-en-page-#{translated_page.id}") do
|
24
|
-
expect(find_field('Title').value).to eq('2001: Space odyssey')
|
25
|
-
expect(find_field('Content')).to have_content('<p>Visionary</p>')
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'renders cz locale' do
|
30
|
-
Globalize.with_locale(:cz) do
|
31
|
-
translated_page.title = '2001: Vesmírná odysea'
|
32
|
-
translated_page.content = '<p>Vizionář</p>'
|
33
|
-
translated_page.save!
|
34
|
-
end
|
35
|
-
|
36
|
-
visit "/page/#{translated_page.id}/edit"
|
37
|
-
|
38
|
-
within(".localized-pane-cz-page-#{translated_page.id}") do
|
39
|
-
expect(find_field('Title').value).to eq('2001: Vesmírná odysea')
|
40
|
-
expect(find_field('Content')).to have_content('<p>Vizionář</p>')
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'works correctly with namespaced models' do
|
46
|
-
visit "/admin~note/#{note.id}/edit"
|
47
|
-
expect(page).to have_css(".localized-pane-en-admin-note-#{note.id}")
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'allows to set custom label name for translated attribute' do
|
51
|
-
visit "/admin~note/#{note.id}/edit"
|
52
|
-
within(".localized-pane-en-admin-note-#{note.id}") do
|
53
|
-
expect(find('#admin_note_translations_attributes_0_title_field')).to have_content('Custom note title')
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|