copy_tuner_client 0.3.0 → 0.3.1

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: 9bfc2b0438d95dfd78e642cbd01634341a49dda1
4
- data.tar.gz: 3404e74efd31b4fb22bfa9d7e2d07f40508fd170
3
+ metadata.gz: 15965d36a12789bda029ce93db59815b091aa1a6
4
+ data.tar.gz: 6468475b0087640533d917d0b9adc9b1ef58b2b7
5
5
  SHA512:
6
- metadata.gz: d1766da6789da799a6b657f711244009c702ac078421b3fe14e69c827bc33643a7a39017bda3f8264965f03ddc399ceb01c9a20234671e3409a965e315de539d
7
- data.tar.gz: 58c5aa8d6ab6c6af3b400f4171303e485a30acd2bc43c1f9779d1f3651435e5cbe960dbdede61135436c9924f87f33274cc4b13fbf7eda128505c3a764add976
6
+ metadata.gz: c0fe5ce9e0350fee38039f699433df6b2a3efcc21b38d8738656328d9b22aa3c22d50dba9876d462d7fae3c1a67335239aa9928ba191491f69a80afd9c22e24f
7
+ data.tar.gz: 78f7e7c05c685d7293ebf2524aab33197f24f642fb4eaed440774a3df93f10844baf37c090ccebcba9179db53b8f0bac287ca0ebc549c6cfcfa2b86f36c3459d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.3.1
2
+ - Add search box to copyray bar.
3
+ - Add disable_copyray_comment_injection to configuration.
4
+
1
5
  ## 0.3.0
2
6
  - Use https as default.
3
7
  - Download blurbs from S3.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- copy_tuner_client (0.3.0)
4
+ copy_tuner_client (0.3.1)
5
5
  i18n (>= 0.5.0)
6
6
  json
7
7
 
@@ -221,25 +221,28 @@ util =
221
221
  Copyray.showBar = ->
222
222
  $('#copy-tuner-bar').show()
223
223
  $('.copyray-toggle-button').hide()
224
+ Copyray.focusSearchBox()
224
225
 
225
226
  Copyray.hideBar = ->
226
227
  $('#copy-tuner-bar').hide()
227
228
  $('.copyray-toggle-button').show()
228
- $('#copy-tuner-bar-log-menu').hide()
229
+ $('.js-copy-tuner-bar-log-menu').hide()
229
230
 
230
231
  Copyray.createLogMenu = ->
231
- $tbody = $('#copy-tuner-bar-log-menu__tbody.is-not-initialized')
232
+ $tbody = $('.js-copy-tuner-bar-log-menu__tbody.is-not-initialized')
232
233
  return if $tbody.length == 0
233
234
  $tbody.removeClass('is-not-initialized')
234
235
  baseUrl = $('[data-copy-tuner-url]').data('copy-tuner-url')
235
236
  log = $('[data-copy-tuner-translation-log').data('copy-tuner-translation-log')
236
- $.each log, (k, v) ->
237
+ keys = Object.keys(log).sort()
238
+ $.each keys, (_, k) ->
239
+ v = log[k]
237
240
  if v != ''
238
241
  url = "#{baseUrl}/blurbs/#{k}/edit"
239
242
  $a = $("<a href='#{url}' class='js-copy-tuner-blurb-link'>").text k
240
243
  $td1 = $('<td>').append $a
241
244
  $td2 = $('<td>').text v
242
- $tr = $("<tr class='js-copy-tuner-blurb-row'>")
245
+ $tr = $("<tr class='copy-tuner-bar-log-menu__row js-copy-tuner-blurb-row'>")
243
246
  $tr.append $td1, $td2
244
247
  $tbody.append $tr
245
248
  $tbody.on 'click', '.js-copy-tuner-blurb-link', (e) ->
@@ -247,7 +250,33 @@ Copyray.createLogMenu = ->
247
250
  $tbody.on 'click', '.js-copy-tuner-blurb-row', ->
248
251
  Copyray.open $(@).find('a').attr('href')
249
252
 
250
- $(document).on 'click', '.copy-tuner-bar-open-log', (e) ->
251
- e.preventDefault()
253
+ Copyray.focusSearchBox = ->
254
+ $('.js-copy-tuner-bar-search').focus()
255
+
256
+ Copyray.toggleLogMenu = ->
252
257
  Copyray.createLogMenu()
253
- $('#copy-tuner-bar-log-menu').toggle()
258
+ $('.js-copy-tuner-bar-log-menu').toggle()
259
+
260
+ $(document).on 'click', '.js-copy-tuner-bar-open-log', (e) ->
261
+ e.preventDefault()
262
+ Copyray.toggleLogMenu()
263
+
264
+ do ->
265
+ timer = null
266
+ lastKeyword = ''
267
+ $(document).on 'focus', '.js-copy-tuner-bar-search', ->
268
+ lastKeyword = $(@).val()
269
+ $(document).on 'keyup', '.js-copy-tuner-bar-search', ->
270
+ keyword = $.trim($(@).val())
271
+ if lastKeyword != keyword
272
+ Copyray.toggleLogMenu() if !$('.js-copy-tuner-bar-log-menu').is(':visible')
273
+ clearTimeout(timer)
274
+ timer = setTimeout ->
275
+ if keyword == ''
276
+ $('.js-copy-tuner-blurb-row').show()
277
+ else
278
+ $('.js-copy-tuner-blurb-row').hide()
279
+ $(".js-copy-tuner-blurb-row td:contains(#{keyword})").closest('.js-copy-tuner-blurb-row').show()
280
+ , 500
281
+ lastKeyword = keyword
282
+
@@ -130,12 +130,16 @@ a.copyray-toggle-button:hover {
130
130
  padding: 2px 8px;
131
131
  }
132
132
 
133
+ #copy-tuner-bar-log-menu__tbody tr {
134
+ cursor: pointer;
135
+ }
136
+
133
137
  #copy-tuner-bar-log-menu__tbody tr:hover {
134
- background: #444
138
+ background: #444;
135
139
  }
136
140
 
137
141
  #copy-tuner-bar-log-menu__tbody a {
138
- color: #fff
142
+ color: #fff;
139
143
  }
140
144
 
141
145
  #copy-tuner-bar-log-menu__tbody a:hover, #copy-tuner-bar-log-menu__tbody a:focus {
@@ -166,3 +170,16 @@ a.copyray-toggle-button:hover {
166
170
  text-decoration: none;
167
171
  background-color: #555;
168
172
  }
173
+
174
+ .copy-tuner-bar__search {
175
+ -webkit-appearance: none;
176
+ -moz-appearance: none;
177
+ appearance: none;
178
+ border: none;
179
+ border-radius: 2px;
180
+ background-image: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0));
181
+ box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2), inset 0 0 2px rgba(0, 0, 0, 0.2);
182
+ padding: 2px 8px;
183
+ vertical-align: middle;
184
+ color: black;
185
+ }
@@ -1,11 +1,12 @@
1
1
  <div id="copy-tuner-bar" style="display:none">
2
2
  <%= link_to 'CopyTuner', CopyTunerClient.configuration.project_url, class: 'copy-tuner-bar-button', target: '_blank' %>
3
3
  <a href="/copytuner" target="_blank" class="copy-tuner-bar-button">Sync</a>
4
- <a href="javascript:void(0)" class="copy-tuner-bar-open-log copy-tuner-bar-button">Translations in this page</a>
4
+ <a href="javascript:void(0)" class="copy-tuner-bar-open-log copy-tuner-bar-button js-copy-tuner-bar-open-log">Translations in this page</a>
5
+ <input type="text" class="copy-tuner-bar__search js-copy-tuner-bar-search" placeholder="search">
5
6
  </div>
6
- <div id="copy-tuner-bar-log-menu" style="display:none">
7
+ <div id="copy-tuner-bar-log-menu" class="js-copy-tuner-bar-log-menu" style="display:none">
7
8
  <table>
8
- <tbody id="copy-tuner-bar-log-menu__tbody" class="is-not-initialized">
9
+ <tbody id="copy-tuner-bar-log-menu__tbody" class="js-copy-tuner-bar-log-menu__tbody is-not-initialized">
9
10
  </tbody>
10
11
  </table>
11
12
  </div>
@@ -119,6 +119,9 @@ module CopyTunerClient
119
119
  # @return [Regexp] Copyray js injection pattern for precompiled
120
120
  attr_accessor :copyray_js_injection_regexp_for_precompiled
121
121
 
122
+ # @return [Boolean] To disable Copyray comment injection, set true
123
+ attr_accessor :disable_copyray_comment_injection
124
+
122
125
  alias_method :secure?, :secure
123
126
 
124
127
  # Instantiated from {CopyTunerClient.configure}. Sets defaults.
@@ -137,6 +140,7 @@ module CopyTunerClient
137
140
  self.secure = true
138
141
  self.test_environments = %w(test cucumber)
139
142
  self.s3_host = 'copy-tuner-data-prod.s3.amazonaws.com'
143
+ self.disable_copyray_comment_injection = false
140
144
 
141
145
  # Matches:
142
146
  # <script src="/assets/jquery.js"></script>
@@ -35,9 +35,13 @@ module CopyTunerClient
35
35
  end
36
36
 
37
37
  def append_translation_logs(html)
38
- json = CopyTunerClient::TranslationLog.translations.to_json
39
- # Use block to avoid back reference \?
40
- html.sub('</body>') { "<div data-copy-tuner-translation-log='#{ERB::Util.html_escape json}' data-copy-tuner-url='#{CopyTunerClient.configuration.project_url}'></div></body>" }
38
+ if CopyTunerClient::TranslationLog.initialized?
39
+ json = CopyTunerClient::TranslationLog.translations.to_json
40
+ # Use block to avoid back reference \?
41
+ html.sub('</body>') { "<div data-copy-tuner-translation-log='#{ERB::Util.html_escape json}' data-copy-tuner-url='#{CopyTunerClient.configuration.project_url}'></div></body>" }
42
+ else
43
+ html
44
+ end
41
45
  end
42
46
 
43
47
  def inject_copy_tuner_bar(html)
@@ -11,7 +11,7 @@ module CopyTunerClient
11
11
  ActionView::Helpers::TranslationHelper.class_eval do
12
12
  def translate_with_copyray_comment(key, options = {})
13
13
  source = translate_without_copyray_comment(key, options)
14
- if options[:rescue_format] == :html or options[:rescue_format].nil?
14
+ if !CopyTunerClient.configuration.disable_copyray_comment_injection && (options[:rescue_format] == :html || options[:rescue_format].nil?)
15
15
  CopyTunerClient::Copyray.augment_template(source, scope_key_by_partial(key))
16
16
  else
17
17
  source
@@ -20,10 +20,13 @@ module CopyTunerClient
20
20
  if CopyTunerClient.configuration.enable_middleware?
21
21
  alias_method_chain :translate, :copyray_comment
22
22
  alias :t :translate
23
- CopyTunerClient::TranslationLog.install_hook
24
23
  end
25
24
  end
26
25
  end
26
+
27
+ if CopyTunerClient.configuration.enable_middleware?
28
+ CopyTunerClient::TranslationLog.install_hook
29
+ end
27
30
  end
28
31
 
29
32
  initializer "copy_tuner.assets.precompile", group: :all do |app|
@@ -11,7 +11,7 @@ if defined?(SimpleForm)
11
11
  def label_translation_with_copyray_comment
12
12
  source = label_translation_without_copyray_comment
13
13
 
14
- if object.class.respond_to?(:lookup_ancestors)
14
+ if !CopyTunerClient.configuration.disable_copyray_comment_injection && object.class.respond_to?(:lookup_ancestors)
15
15
  attributes_scope = "#{object.class.i18n_scope}.attributes"
16
16
  defaults = object.class.lookup_ancestors.map do |klass|
17
17
  "#{attributes_scope}.#{klass.model_name.i18n_key}.#{reflection_or_attribute_name}"
@@ -1,15 +1,19 @@
1
1
  module CopyTunerClient
2
2
  class TranslationLog
3
3
  def self.translations
4
- Thread.current[:translations] ||= {}
4
+ Thread.current[:translations]
5
5
  end
6
6
 
7
7
  def self.clear
8
8
  Thread.current[:translations] = {}
9
9
  end
10
10
 
11
+ def self.initialized?
12
+ !Thread.current[:translations].nil?
13
+ end
14
+
11
15
  def self.add(key, result)
12
- translations[key] = result unless translations.key? key
16
+ translations[key] = result if initialized? && !translations.key?(key)
13
17
  end
14
18
 
15
19
  def self.install_hook
@@ -1,6 +1,6 @@
1
1
  module CopyTunerClient
2
2
  # Client version
3
- VERSION = '0.3.0'.freeze
3
+ VERSION = '0.3.1'.freeze
4
4
 
5
5
  # API version being used to communicate with the server
6
6
  API_VERSION = '2.0'.freeze
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: copy_tuner_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - SonicGarden
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-02 00:00:00.000000000 Z
11
+ date: 2016-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n