blacklight-locale_picker 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 17a822c82012ee32b19b4c03ccfd2e213cd050bd7e08d902e816e8e997d525ea
4
+ data.tar.gz: 452e5def5ab4cc417158e52236ebbbd4074b825f520a6f699672db8c00837c3f
5
+ SHA512:
6
+ metadata.gz: 0456f053e837749f2c369119215f22fb492c245c2b9b739ae81e48bb414f7a93aa69538bd1af8392e854b0ed06e269efe6afc1a65f28e873e99fe875e2acab69
7
+ data.tar.gz: ccc0749116ec7960106507d169c77e564ea111d895fe566c2f889eeaa3fe6097c57402cbe3ff697e82a61a8a766112bc65951175386bc79371bad8c742b86857
@@ -0,0 +1,7 @@
1
+ .bundle/
2
+ log/*.log
3
+ pkg/
4
+
5
+ .internal_test_app
6
+ .rspec_status
7
+ Gemfile.lock
@@ -0,0 +1,8 @@
1
+ sudo: false
2
+ language: ruby
3
+ notifications:
4
+ email: false
5
+ rvm:
6
+ - 2.6.3
7
+ jdk:
8
+ - oraclejdk9
data/Gemfile ADDED
@@ -0,0 +1,49 @@
1
+ source 'https://rubygems.org'
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ # Declare your gem's dependencies in blacklight-locale_picker.gemspec.
5
+ # Bundler will treat runtime dependencies like base dependencies, and
6
+ # development dependencies will be added by default to the :development group.
7
+ gemspec
8
+
9
+ # Declare any dependencies that are still in development here instead of in
10
+ # your gemspec. These might include edge Rails or gems from your path or
11
+ # Git. Remember to move these dependencies to your gemspec before releasing
12
+ # your gem to rubygems.org.
13
+
14
+ # To use a debugger
15
+ # gem 'byebug', group: [:development, :test]
16
+ # BEGIN ENGINE_CART BLOCK
17
+ # engine_cart: 2.3.0
18
+ # engine_cart stanza: 0.10.0
19
+ # the below comes from engine_cart, a gem used to test this Rails engine gem in the context of a Rails app.
20
+ file = File.expand_path('Gemfile', ENV['ENGINE_CART_DESTINATION'] || ENV['RAILS_ROOT'] || File.expand_path('.internal_test_app', File.dirname(__FILE__)))
21
+ if File.exist?(file)
22
+ begin
23
+ eval_gemfile file
24
+ rescue Bundler::GemfileError => e
25
+ Bundler.ui.warn '[EngineCart] Skipping Rails application dependencies:'
26
+ Bundler.ui.warn e.message
27
+ end
28
+ else
29
+ Bundler.ui.warn "[EngineCart] Unable to find test application dependencies in #{file}, using placeholder dependencies"
30
+
31
+ if ENV['RAILS_VERSION']
32
+ if ENV['RAILS_VERSION'] == 'edge'
33
+ gem 'rails', github: 'rails/rails'
34
+ ENV['ENGINE_CART_RAILS_OPTIONS'] = '--edge --skip-turbolinks'
35
+ else
36
+ gem 'rails', ENV['RAILS_VERSION']
37
+ end
38
+ end
39
+
40
+ case ENV['RAILS_VERSION']
41
+ when /^4.2/
42
+ gem 'responders', '~> 2.0'
43
+ gem 'sass-rails', '>= 5.0'
44
+ gem 'coffee-rails', '~> 4.1.0'
45
+ when /^4.[01]/
46
+ gem 'sass-rails', '< 5.0'
47
+ end
48
+ end
49
+ # END ENGINE_CART BLOCK
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2019 The Board of Trustees of the Leland Stanford Junior University.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
@@ -0,0 +1,32 @@
1
+ # Blacklight::LocalePicker
2
+ A dropdown locale switcher for Blacklight apps
3
+
4
+ ## Usage
5
+ How to use my plugin.
6
+
7
+ ## Installation
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'blacklight-locale_picker'
12
+ ```
13
+
14
+ And then execute:
15
+ ```bash
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+ ```bash
21
+ $ gem install blacklight-locale_picker
22
+ ```
23
+
24
+ And then run the install generator:
25
+ ```bash
26
+ $ rails generate blacklight:locale_picker:install
27
+ ```
28
+ ## Configuration
29
+ To add locales to your application, add an initializer.
30
+ ```
31
+ Blacklight::LocalePicker::Engine.config.available_locales = [:en, :es]
32
+ ```
@@ -0,0 +1,46 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+ require 'engine_cart/rake_task'
9
+
10
+ RDoc::Task.new(:rdoc) do |rdoc|
11
+ rdoc.rdoc_dir = 'rdoc'
12
+ rdoc.title = 'Blacklight::LocalePicker'
13
+ rdoc.options << '--line-numbers'
14
+ rdoc.rdoc_files.include('README.md')
15
+ rdoc.rdoc_files.include('lib/**/*.rb')
16
+ end
17
+
18
+ require 'bundler/gem_tasks'
19
+
20
+ require 'solr_wrapper'
21
+
22
+ require 'rspec/core/rake_task'
23
+ RSpec::Core::RakeTask.new(:spec)
24
+
25
+ require 'rubocop/rake_task'
26
+ RuboCop::RakeTask.new(:rubocop)
27
+
28
+ require 'engine_cart/rake_task'
29
+
30
+ task ci: ['engine_cart:generate'] do
31
+ ENV['environment'] = 'test'
32
+
33
+ SolrWrapper.wrap(port: '8983') do |solr|
34
+ solr.with_collection(name: 'blacklight-core', dir: File.join(File.expand_path(File.dirname(__FILE__)), '.internal_test_app', 'solr', 'conf')) do
35
+ within_test_app do
36
+ system 'bundle install'
37
+ system 'bundle exec rake db:migrate'
38
+ end
39
+
40
+ # run the tests
41
+ Rake::Task['spec'].invoke
42
+ end
43
+ end
44
+ end
45
+
46
+ task default: :ci
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ ##
4
+ # A module to add set locales that is sent to application controller
5
+ module Blacklight::LocalePicker::Concern
6
+ extend ActiveSupport::Concern
7
+ included do
8
+ before_action :set_locale
9
+
10
+ def default_url_options
11
+ { locale: (I18n.locale unless I18n.default_locale == I18n.locale) }
12
+ end
13
+
14
+ before_action do
15
+ blacklight_config.add_nav_action(:locale, partial: 'shared/locale_picker')
16
+ end
17
+
18
+ private
19
+
20
+ def set_locale
21
+ I18n.locale = params[:locale] || I18n.default_locale
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ # Helpers for building the locale picker
2
+ module Blacklight::LocalePicker::LocaleHelper
3
+ # Locales to display in the locale picker; by default, it picks up
4
+ # the information from the engine configuration
5
+ def available_locales
6
+ Blacklight::LocalePicker::Engine.config.available_locales
7
+ end
8
+
9
+ # Returns the url for the current page in the new locale. This may be
10
+ # overridden in downstream applications where our naive use of `url_for`
11
+ # is insufficient to generate the expected routes
12
+ def current_page_for_locale(locale)
13
+ initial_exception = nil
14
+
15
+ ([self] + additional_locale_routing_scopes).each do |scope|
16
+ return scope.public_send(:url_for, locale: locale)
17
+ rescue ActionController::UrlGenerationError => e
18
+ initial_exception ||= e
19
+ end
20
+
21
+ raise initial_exception
22
+ end
23
+
24
+ # Returns an array of routing scopes (e.g. mounted engines) to attempt to use
25
+ # for switching locale-specific routes. This is likely overridden in complex
26
+ # applications to add scopes for additional mounted engines
27
+ def additional_locale_routing_scopes
28
+ [blacklight]
29
+ end
30
+ end
@@ -0,0 +1,18 @@
1
+ <% if available_locales.many? %>
2
+ <li class="nav-item dropdown">
3
+ <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-controls="language-dropdown-menu">
4
+ <span class="sr-only"><%= t('blacklight.toolbar.language_switch') %></span>
5
+ <span><%= t("locales.#{I18n.locale}") %></span>
6
+ <b class="caret"></b>
7
+ </a>
8
+ <ul id="language-dropdown-menu" class="dropdown-menu" role="menu">
9
+ <li role="presentation" class="dropdown-header"><%= t('blacklight.toolbar.language_switch') %></li>
10
+ <li role="presentation" class="divider"></li>
11
+ <% available_locales.each do |locale| %>
12
+ <li role="presentation" lang="<%= locale %>">
13
+ <%= link_to t("locales.#{locale}"), current_page_for_locale(locale), class: 'dropdown-item' %>
14
+ </li>
15
+ <% end %>
16
+ </ul>
17
+ </li>
18
+ <% end %>
@@ -0,0 +1,32 @@
1
+ $:.push File.expand_path("lib", __dir__)
2
+
3
+ # Maintain your gem's version:
4
+ require "blacklight/locale_picker/version"
5
+
6
+ # Describe your gem and declare its dependencies:
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "blacklight-locale_picker"
9
+ spec.version = Blacklight::LocalePicker::VERSION
10
+ spec.authors = ["Camille Villa", "Chris Beer"]
11
+ spec.email = ["cvilla100@gmail.com", "chris@cbeer.info"]
12
+ spec.homepage = "https://github.com/projectblacklight/blacklight-locale_picker"
13
+ spec.summary = ""
14
+ spec.description = ""
15
+ spec.license = "Apache-2.0"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = 'exe'
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ['lib']
23
+
24
+ spec.add_dependency "rails", "~> 5.2.3"
25
+
26
+ spec.add_development_dependency "capybara"
27
+ spec.add_development_dependency "engine_cart"
28
+ spec.add_development_dependency "rspec-rails"
29
+ spec.add_development_dependency "rubocop"
30
+ spec.add_development_dependency "sqlite3"
31
+ spec.add_development_dependency "solr_wrapper"
32
+ end
@@ -0,0 +1,12 @@
1
+ en:
2
+ locales:
3
+ de: German
4
+ en: English
5
+ es: Spanish
6
+ fr: French
7
+ hu: Hungarian
8
+ it: Italian
9
+ nl: Dutch
10
+ pt-BR: Portuguese - Brazil
11
+ sq: Albanian
12
+ zh: Chinese
@@ -0,0 +1,6 @@
1
+ require "blacklight/locale_picker/engine"
2
+
3
+ module Blacklight
4
+ module LocalePicker
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ module Blacklight
2
+ module LocalePicker
3
+ class Engine < ::Rails::Engine
4
+ config.available_locales = []
5
+
6
+ config.autoload_paths += %W(
7
+ #{config.root}/app/controllers/concerns
8
+ )
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ module Blacklight
2
+ module LocalePicker
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators'
4
+
5
+ module Blacklight::LocalePicker
6
+ ##
7
+ # Blacklight::LocalePicker install generator
8
+ class Install < Rails::Generators::Base
9
+ source_root File.expand_path('../templates', __FILE__)
10
+
11
+ def add_locale_picker_to_controller
12
+ inject_into_file 'app/controllers/application_controller.rb', after: 'include Blacklight::Controller' do
13
+ "\n include Blacklight::LocalePicker::Concern"
14
+ end
15
+ end
16
+
17
+ def add_locale_picker_helpers
18
+ inject_into_file 'app/helpers/application_helper.rb', after: 'module ApplicationHelper' do
19
+ "\n include Blacklight::LocalePicker::LocaleHelper"
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :blacklight_locale_picker do
3
+ # # Task goes here
4
+ # end
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: blacklight-locale_picker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Camille Villa
8
+ - Chris Beer
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2019-08-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 5.2.3
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 5.2.3
28
+ - !ruby/object:Gem::Dependency
29
+ name: capybara
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: engine_cart
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec-rails
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rubocop
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: sqlite3
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: solr_wrapper
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ description: ''
113
+ email:
114
+ - cvilla100@gmail.com
115
+ - chris@cbeer.info
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - ".gitignore"
121
+ - ".travis.yml"
122
+ - Gemfile
123
+ - LICENSE
124
+ - README.md
125
+ - Rakefile
126
+ - app/controllers/concerns/blacklight/locale_picker/concern.rb
127
+ - app/helpers/blacklight/locale_picker/locale_helper.rb
128
+ - app/views/shared/_locale_picker.html.erb
129
+ - blacklight-locale_picker.gemspec
130
+ - config/locales/locale_picker.en.yml
131
+ - lib/blacklight/locale_picker.rb
132
+ - lib/blacklight/locale_picker/engine.rb
133
+ - lib/blacklight/locale_picker/version.rb
134
+ - lib/generators/blacklight/locale_picker/install_generator.rb
135
+ - lib/tasks/blacklight/locale_picker_tasks.rake
136
+ homepage: https://github.com/projectblacklight/blacklight-locale_picker
137
+ licenses:
138
+ - Apache-2.0
139
+ metadata: {}
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubygems_version: 3.0.3
156
+ signing_key:
157
+ specification_version: 4
158
+ summary: ''
159
+ test_files: []