iqvoc 4.9.0 → 4.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +3 -3
  5. data/README.md +18 -2
  6. data/app/assets/javascripts/iqvoc/autocomplete.js +1 -1
  7. data/app/assets/stylesheets/iqvoc/components/_entity_select.scss +1 -0
  8. data/app/controllers/collections/versions_controller.rb +17 -17
  9. data/app/controllers/collections_controller.rb +3 -0
  10. data/app/controllers/concepts/alphabetical_controller.rb +5 -2
  11. data/app/controllers/concepts/versions_controller.rb +17 -17
  12. data/app/controllers/concepts_controller.rb +3 -0
  13. data/app/controllers/concerns/controller_extensions.rb +1 -1
  14. data/app/models/concept/base.rb +5 -3
  15. data/app/models/label/base.rb +1 -1
  16. data/app/presenters/search_result.rb +1 -0
  17. data/app/views/collections/_form.html.erb +1 -0
  18. data/app/views/collections/show_unpublished.html.erb +3 -0
  19. data/app/views/concepts/_form.html.erb +2 -0
  20. data/app/views/concepts/show_unpublished.html.erb +4 -1
  21. data/app/views/partials/concept/relation/skos/_narrower.html.erb +2 -2
  22. data/app/views/partials/note/_note.html.erb +4 -1
  23. data/config/locales/de.yml +4 -1
  24. data/config/locales/en.yml +4 -1
  25. data/iqvoc.gemspec +1 -1
  26. data/lib/iqvoc/environments/development.rb +2 -3
  27. data/lib/iqvoc/environments/production.rb +3 -0
  28. data/lib/iqvoc/environments/test.rb +2 -1
  29. data/lib/iqvoc/version.rb +1 -1
  30. data/public/export/1420.nt +28 -0
  31. data/public/export/18228.nt +28 -0
  32. data/public/export/228686568701989066971611496838516248366.nt +28 -0
  33. data/public/export/27081.nt +28 -0
  34. data/public/export/336213965367806878006328280025568269144.nt +28 -0
  35. data/public/export/37687357862944733731237338243666999173.nt +28 -0
  36. data/public/export/43096.nt +28 -0
  37. data/public/export/46386.nt +28 -0
  38. data/public/export/53694.nt +28 -0
  39. data/public/export/61002.nt +28 -0
  40. data/public/export/iqvoc_dump-2016-02-11_10-32.xml +16 -0
  41. data/public/export/iqvoc_dump-2016-02-11_10-34.ttl +20 -0
  42. data/public/uploads/import/179004af8019c0f359a40431a8bd25ff.nt +259 -0
  43. data/public/uploads/import/4639b3e690c601979c8eb0373103fdb9.nt +259 -0
  44. data/public/uploads/import/795fe8419d071576cc8a4c08af2e2b1f.nt +259 -0
  45. data/public/uploads/import/7b9c355872346d23ed2f1e70e2d67724.nt +259 -0
  46. data/public/uploads/import/a6dbf3e1390463c7c6782f9bdbb5c9e2.nt +259 -0
  47. data/public/uploads/import/aea99360eca9d73d0e050d8bb9fc5f11.nt +259 -0
  48. data/public/uploads/import/bb42d0ca084b95d017e54e1a46243d42.nt +259 -0
  49. data/public/uploads/import/be829d88516a9bced467f49326b5e1f1.nt +259 -0
  50. data/public/uploads/import/dc432a7daeef3fdbba9c1dbc00fe72cb.nt +259 -0
  51. data/public/uploads/import/eaf10eecedc505d92e6b673a0b54b325.nt +259 -0
  52. data/public/uploads/tmp/1442817570-31784-4562/hobbies.nt +259 -0
  53. data/public/uploads/tmp/1446191508-3940-8607/hobbies.nt +259 -0
  54. data/public/uploads/tmp/1456325902-75110-0481/hobbies.nt +259 -0
  55. data/public/uploads/tmp/1461919870-29840-4090/hobbies.nt +259 -0
  56. data/public/uploads/tmp/1461920957-31094-8111/hobbies.nt +259 -0
  57. data/public/uploads/tmp/1462874108-80930-7543/hobbies.nt +259 -0
  58. data/public/uploads/tmp/1463068043-37090-6309/hobbies.nt +259 -0
  59. data/public/uploads/tmp/1463068182-37316-2356/hobbies.nt +259 -0
  60. data/public/uploads/tmp/1463126928-5331-8975/hobbies.nt +259 -0
  61. data/public/uploads/tmp/1463127124-5664-1168/hobbies.nt +259 -0
  62. data/test/integration/api_documentation_test.rb +32 -0
  63. metadata +41 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d178562c345ec6693d7f4b67f552266799856cf4
4
- data.tar.gz: 21d82c798ac02be2e8f1d7709453e0c70908f6d5
3
+ metadata.gz: e1475e23fc06bf41a94bb3ceda90957f083638e0
4
+ data.tar.gz: f1974964f991cb31e0e4b78bd89a842fd9e2ec70
5
5
  SHA512:
6
- metadata.gz: 0c8a0580d169b4593ab82de3004224c6667bea534e4abab21a5f9f9510e251b9a81597b84f4197602d7039e9c862e5d1ed400d1f98ea9700e021d8143e19e766
7
- data.tar.gz: 05c237e9b6000fd2f078174f3770d7ad3b2300b221acba4dfc561f350292065f33319062b127ec485057dda39320f9feef44fe9c3bada298ea50f7495cb693f9
6
+ metadata.gz: 161ed636284243cd11817ef5dd04e11745572b726b394f55956a7eed52307358cbe401fd7ce6bfdc7b6a87b39a436867cf59f19a7ea16badd2088686cc9f573f
7
+ data.tar.gz: cfa95b56a8f5c3509b2c2bf1cfa4ffdca881f9582dfb0d3b796ba6f3aee3dd4929c70680efe7426cd5a6aad3333e5f5502f4c49e45bf062f015e10cb31e6037b
@@ -1,3 +1,8 @@
1
+ ## [4.10.0]
2
+
3
+ * Fixed: several bugs (i18n, sorting)
4
+ * Fixed: several UI glitches
5
+
1
6
  ## [4.9.0]
2
7
 
3
8
  * Added: updated to latest Rails release (v4.2.4)
data/Gemfile CHANGED
@@ -36,7 +36,7 @@ gem 'uglifier'
36
36
  gem 'sass-rails', '~> 5.0.0'
37
37
  gem 'bootstrap_form', '~> 2.2.0'
38
38
  gem 'font-awesome-rails', '~> 4.3.0'
39
- gem 'apipie-rails', '~> 0.3.4'
39
+ gem 'apipie-rails', '~> 0.3.5'
40
40
  gem 'maruku', require: false
41
41
  gem 'database_cleaner'
42
42
  gem 'delayed_job_active_record', '~> 4.0.1'
@@ -48,7 +48,7 @@ GEM
48
48
  thread_safe (~> 0.3, >= 0.3.4)
49
49
  tzinfo (~> 1.1)
50
50
  addressable (2.3.7)
51
- apipie-rails (0.3.4)
51
+ apipie-rails (0.3.5)
52
52
  json
53
53
  arel (6.0.3)
54
54
  authlogic (3.4.5)
@@ -354,7 +354,7 @@ DEPENDENCIES
354
354
  activerecord-jdbcmysql-adapter
355
355
  activerecord-jdbcpostgresql-adapter (~> 1.3.13)
356
356
  activerecord-jdbcsqlite3-adapter
357
- apipie-rails (~> 0.3.4)
357
+ apipie-rails (~> 0.3.5)
358
358
  authlogic (~> 3.4.2)
359
359
  autoprefixer-rails (~> 5.1.8)
360
360
  awesome_print
@@ -397,4 +397,4 @@ DEPENDENCIES
397
397
  webmock
398
398
 
399
399
  BUNDLED WITH
400
- 1.10.2
400
+ 1.10.6
data/README.md CHANGED
@@ -23,8 +23,13 @@ vocabularies:
23
23
  * editorial features for registered users
24
24
  * publishing the vocabulary in the Semantic Web
25
25
 
26
- iQvoc is built with state-of-the-art technology and can be easily customized
27
- according to user's needs.
26
+ iQvoc is built with state-of-the-art technology and can be easily customized according to user's needs.
27
+
28
+ ## Demo
29
+
30
+ You can try out iQvoc right now! In our [sandbox](http://try.iqvoc.net/) you can play around with the public views.
31
+ If you like to test the collaborative functions simply [request](mailto:iqvoc@innoq.com) your personal demo account.
32
+
28
33
  ## Setup
29
34
 
30
35
  ### Heroku
@@ -96,6 +101,17 @@ provides a basic overview of the possibilities.
96
101
 
97
102
  Documentation resources can be found in the [wiki](https://github.com/innoq/iqvoc/wiki).
98
103
 
104
+ iQvoc provides an (inline) API documentation which can be found on `APP_URI/apidoc`. Check out our sandbox to see it in action: http://try.iqvoc.net/apidoc/
105
+
106
+ ## Related projects
107
+
108
+ We provide several extensions to add additional features to iQvoc:
109
+
110
+ * [iqvoc_skosxl](https://github.com/innoq/iqvoc_skosxl): SKOS-XL extension for iQvoc
111
+ * [iqvoc_compound_forms](https://github.com/innoq/iqvoc_compound_forms): Compound labels for iQvoc
112
+ * [iqvoc_inflectionals](https://github.com/innoq/iqvoc_inflectionals): Inflectionals for iQvoc
113
+ * [iqvoc_similar_terms](https://github.com/innoq/iqvoc_similar_terms): iQvoc engine for similar terms
114
+
99
115
  ## Versioning
100
116
 
101
117
  Releases will follow a semantic versioning format:
@@ -15,7 +15,7 @@ function augment(field, source, options) {
15
15
  options.displayKey = options.displayKey || "value";
16
16
 
17
17
  field.typeahead({
18
- minLength: 3,
18
+ minLength: 2,
19
19
  highlight: true
20
20
  }, {
21
21
  source: source,
@@ -29,6 +29,7 @@
29
29
  overflow: hidden;
30
30
  list-style-type: none;
31
31
  margin-top: 5px;
32
+ padding-left: 0;
32
33
  li {
33
34
  float: left;
34
35
  a { font-size: 14px; }
@@ -26,26 +26,26 @@ class Collections::VersionsController < ApplicationController
26
26
  authorize! :merge, new_version
27
27
 
28
28
  ActiveRecord::Base.transaction do
29
- if current_collection.blank? || current_collection.destroy
30
- new_version.rdf_updated_at = nil
31
- new_version.publish
32
- new_version.unlock
33
- if new_version.publishable?
34
- new_version.save
35
-
36
- if Iqvoc.config['triplestore.autosync']
37
- synced = triplestore_syncer.sync([new_version]) # XXX: blocking
38
- flash[:warning] = 'triplestore synchronization failed' unless synced # TODO: i18n
39
- end
40
-
41
- flash[:success] = t('txt.controllers.versioning.published')
42
- redirect_to collection_path(new_version)
43
- else
44
- flash[:error] = t('txt.controllers.versioning.merged_publishing_error')
29
+ new_version.rdf_updated_at = nil
30
+ new_version.publish
31
+ new_version.unlock
32
+ if new_version.publishable?
33
+ new_version.save
34
+
35
+ if current_collection && !current_collection.destroy
36
+ flash[:error] = t('txt.controllers.versioning.merged_delete_error')
45
37
  redirect_to collection_path(new_version, published: 0)
46
38
  end
39
+
40
+ if Iqvoc.config['triplestore.autosync']
41
+ synced = triplestore_syncer.sync([new_version]) # XXX: blocking
42
+ flash[:warning] = 'triplestore synchronization failed' unless synced # TODO: i18n
43
+ end
44
+
45
+ flash[:success] = t('txt.controllers.versioning.published')
46
+ redirect_to collection_path(new_version)
47
47
  else
48
- flash[:error] = t('txt.controllers.versioning.merged_delete_error')
48
+ flash[:error] = t('txt.controllers.versioning.merged_publishing_error')
49
49
  redirect_to collection_path(new_version, published: 0)
50
50
  end
51
51
  end
@@ -119,6 +119,9 @@ class CollectionsController < ApplicationController
119
119
  @collection = Iqvoc::Collection.base_class.by_origin(params[:id]).last!
120
120
  authorize! :update, @collection
121
121
 
122
+ # set to_review to false if someone edits a concepts
123
+ concept_params["to_review"] = "false"
124
+
122
125
  if @collection.update_attributes(concept_params)
123
126
  flash[:success] = I18n.t('txt.controllers.collections.save.success')
124
127
  redirect_to collection_path(@collection, published: 0)
@@ -30,7 +30,8 @@ class Concepts::AlphabeticalController < ConceptsController
30
30
  .order("letter").map(&:letter)
31
31
 
32
32
  if dataset = datasets.detect { |dataset| dataset.name == params[:dataset] }
33
- @search_results = dataset.alphabetical_search(params[:prefix], I18n.locale) || []
33
+ query = params[:prefix].mb_chars.downcase.to_s
34
+ @search_results = dataset.alphabetical_search(query, I18n.locale) || []
34
35
  @search_results = Kaminari.paginate_array(@search_results).page(params[:page])
35
36
  else
36
37
  @search_results = find_labelings
@@ -54,10 +55,12 @@ class Concepts::AlphabeticalController < ConceptsController
54
55
  protected
55
56
 
56
57
  def find_labelings
58
+ query = params[:prefix].mb_chars.downcase.to_s
59
+
57
60
  Iqvoc::Concept.pref_labeling_class.
58
61
  concept_published.
59
62
  concept_not_expired.
60
- label_begins_with(params[:prefix]).
63
+ label_begins_with(query).
61
64
  by_label_language(I18n.locale).
62
65
  includes(:target).
63
66
  order("LOWER(#{Label::Base.table_name}.value)").
@@ -31,26 +31,26 @@ class Concepts::VersionsController < ApplicationController
31
31
  authorize! :merge, new_version
32
32
 
33
33
  ActiveRecord::Base.transaction do
34
- if current_concept.blank? || current_concept.destroy
35
- new_version.rdf_updated_at = nil
36
- new_version.publish
37
- new_version.unlock
38
- if new_version.publishable?
39
- new_version.save
40
-
41
- if Iqvoc.config['triplestore.autosync']
42
- synced = triplestore_syncer.sync([new_version]) # XXX: blocking
43
- flash[:warning] = 'triplestore synchronization failed' unless synced # TODO: i18n
44
- end
45
-
46
- flash[:success] = t('txt.controllers.versioning.published')
47
- redirect_to concept_path(id: new_version)
48
- else
49
- flash[:error] = t('txt.controllers.versioning.merged_publishing_error')
34
+ new_version.rdf_updated_at = nil
35
+ new_version.publish
36
+ new_version.unlock
37
+ if new_version.publishable?
38
+ new_version.save
39
+
40
+ if current_concept && !current_concept.destroy
41
+ flash[:error] = t('txt.controllers.versioning.merged_delete_error')
50
42
  redirect_to concept_path(published: 0, id: new_version)
51
43
  end
44
+
45
+ if Iqvoc.config['triplestore.autosync']
46
+ synced = triplestore_syncer.sync([new_version]) # XXX: blocking
47
+ flash[:warning] = 'triplestore synchronization failed' unless synced # TODO: i18n
48
+ end
49
+
50
+ flash[:success] = t('txt.controllers.versioning.published')
51
+ redirect_to concept_path(id: new_version)
52
52
  else
53
- flash[:error] = t('txt.controllers.versioning.merged_delete_error')
53
+ flash[:error] = t('txt.controllers.versioning.merged_publishing_error')
54
54
  redirect_to concept_path(published: 0, id: new_version)
55
55
  end
56
56
  end
@@ -174,6 +174,9 @@ class ConceptsController < ApplicationController
174
174
 
175
175
  @datasets = datasets_as_json
176
176
 
177
+ # set to_review to false if someone edits a concepts
178
+ concept_params["to_review"] = "false"
179
+
177
180
  if @concept.update_attributes(concept_params)
178
181
  flash[:success] = I18n.t('txt.controllers.versioned_concept.update_success')
179
182
  redirect_to concept_path(published: 0, id: @concept)
@@ -86,7 +86,7 @@ module ControllerExtensions
86
86
  def label_widget_data(label)
87
87
  {
88
88
  id: label.origin,
89
- name: label.value
89
+ name: label.value + ' (' + label.language + ')'
90
90
  }
91
91
  end
92
92
 
@@ -180,7 +180,7 @@ class Concept::Base < ActiveRecord::Base
180
180
  include_to_deep_cloning(:relations, :referenced_relations)
181
181
 
182
182
  has_many :labelings, foreign_key: 'owner_id', class_name: 'Labeling::Base', dependent: :destroy
183
- has_many :labels, through: :labelings, source: :target
183
+ has_many :labels, -> { order(:value) }, through: :labelings, source: :target
184
184
  # Deep cloning has to be done in specific relations. S. pref_labels etc
185
185
 
186
186
  has_many :notes, class_name: 'Note::Base', as: :owner, dependent: :destroy
@@ -237,6 +237,7 @@ class Concept::Base < ActiveRecord::Base
237
237
  class_name: Iqvoc::Concept.pref_labeling_class_name
238
238
 
239
239
  has_many :pref_labels,
240
+ -> { order(:value) },
240
241
  through: :pref_labelings,
241
242
  source: :target
242
243
 
@@ -245,6 +246,7 @@ class Concept::Base < ActiveRecord::Base
245
246
  class_name: Iqvoc::Concept.alt_labeling_class_name
246
247
 
247
248
  has_many :alt_labels,
249
+ -> { order(:value) },
248
250
  through: :alt_labelings,
249
251
  source: :target
250
252
 
@@ -435,13 +437,13 @@ class Concept::Base < ActiveRecord::Base
435
437
  @labels ||= labelings.each_with_object({}) do |labeling, hash|
436
438
  ((hash[labeling.class.name.to_s] ||= {})[labeling.target.language] ||= []) << labeling.target if labeling.target
437
439
  end
438
- ((@labels && @labels[labeling_class] && @labels[labeling_class][lang]) || []).select{ |l| l.published? || !only_published }
440
+ ((@labels && @labels[labeling_class] && @labels[labeling_class][lang]) || []).select{ |l| l.published? || !only_published }.sort_by(&:value)
439
441
  end
440
442
 
441
443
  def related_concepts_for_relation_class(relation_class, only_published = true)
442
444
  relation_class = relation_class.name if relation_class < ActiveRecord::Base # Use the class name string
443
445
  relations.select { |rel| rel.class.name == relation_class }.map(&:target).
444
- select { |c| c.published? || !only_published }
446
+ select { |c| c.published? || !only_published }.sort_by(&:pref_label)
445
447
  end
446
448
 
447
449
  def matches_for_class(match_class)
@@ -63,7 +63,7 @@ class Label::Base < ActiveRecord::Base
63
63
  end
64
64
 
65
65
  def self.by_query_value(query)
66
- where(["LOWER(#{table_name}.value) LIKE ?", query.to_s.downcase])
66
+ where(["LOWER(#{table_name}.value) LIKE ?", query.mb_chars.downcase.to_s])
67
67
  end
68
68
 
69
69
  # Attention: This means that even label classes without version controll will also
@@ -1,5 +1,6 @@
1
1
  class SearchResult
2
2
  extend Forwardable
3
+ attr_reader :result_object
3
4
  def_delegators :@result_object, :build_search_result_rdf, :owner, :target,
4
5
  :value, :label, :rdf_namespace, :rdf_predicate
5
6
 
@@ -50,6 +50,7 @@
50
50
  <hr />
51
51
  <div class="well">
52
52
  <%= f.submit t("txt.common.save"), :class => "btn btn-primary" %>
53
+ <%= link_to t("txt.common.cancel"), collection_path(collection, :published => 0), :class => "btn btn-default" %>
53
54
  </div>
54
55
 
55
56
  <% end %>
@@ -33,6 +33,9 @@
33
33
  <% else %>
34
34
  <%= button_to t("txt.views.versioning.to_edit_mode"),
35
35
  collection_versions_lock_path(:origin => @collection.origin), :class => 'btn btn-default' if can?(:lock, @collection) %>
36
+ <% end %>
37
+
38
+ <% if can?(:destroy, @collection) %>
36
39
  <%= button_to t("txt.views.versioning.delete"),
37
40
  collection_path(:published => 0, :id => @collection.origin),
38
41
  :method => :delete,
@@ -93,6 +93,8 @@
93
93
 
94
94
  <div class="well">
95
95
  <%= f.submit t("txt.common.save"), :class => "btn btn-primary" %>
96
+
97
+ <%= link_to t("txt.common.cancel"), concept_path(:published => 0, :id => concept), :class => "btn btn-default" %>
96
98
  </div>
97
99
 
98
100
  <% end %>
@@ -37,11 +37,14 @@
37
37
  <% else %>
38
38
  <%= button_to t("txt.views.versioning.to_edit_mode"),
39
39
  concept_versions_lock_path(:origin => @concept.origin), :class => 'btn btn-default' if can?(:lock, @concept) %>
40
+ <% end %>
41
+
42
+ <% if can?(:destroy, @concept) %>
40
43
  <%= button_to t("txt.views.versioning.delete"),
41
44
  concept_path(:published => 0, :id => @concept.origin),
42
45
  :method => :delete,
43
46
  :class => 'btn btn-danger',
44
- :data => { :confirm => I18n.t("txt.views.versioning.delete_confirm") } if can?(:destroy, @concept) %>
47
+ :data => { :confirm => I18n.t("txt.views.versioning.delete_confirm") } %>
45
48
  <% end %>
46
49
  </div>
47
50
 
@@ -4,9 +4,9 @@
4
4
  <% if concept.narrower_relations.any? %>
5
5
  <div class="selector">
6
6
  <% if(params[:published] == '0') %>
7
- <%= treeview(concept.narrower_relations.published_with_newer_versions.map(&:target)) %>
7
+ <%= treeview(concept.narrower_relations.published_with_newer_versions.map(&:target).sort_by(&:pref_label)) %>
8
8
  <% else %>
9
- <%= treeview(concept.narrower_relations.published.map(&:target)) %>
9
+ <%= treeview(concept.narrower_relations.published.map(&:target).sort_by(&:pref_label)) %>
10
10
  <% end %>
11
11
  </div>
12
12
  <% end %>
@@ -2,7 +2,10 @@
2
2
  <div class="translation" lang="<%= note.language %>">
3
3
  <span class="language_flap"><%= note.language %></span>
4
4
  <div class="note_content">
5
- <p><%= auto_link(note.value, :html => { :target => '_blank' }) %></p>
5
+ <% if note.value %>
6
+ <p><%= auto_link(note.value, :html => { :target => '_blank' }) %></p>
7
+ <% end %>
8
+
6
9
  <% if note.annotations.any? %>
7
10
  <dl class="note_annotations">
8
11
  <% note.annotations.each do |annotation| %>
@@ -53,6 +53,7 @@ de:
53
53
  welcome: "Hallo %{user_name}"
54
54
  move: "Verschieben"
55
55
  save: "Speichern"
56
+ cancel: "Abbrechen"
56
57
  copy: "Kopieren"
57
58
  reset: "Zurücksetzen"
58
59
  language: "Sprache"
@@ -109,8 +110,10 @@ de:
109
110
  sources: Föderation
110
111
  settings:
111
112
  title: Titel
112
- languages_notes: Sprachen für Notes
113
+ available_languages: verfügbare Sprachen
113
114
  languages_pref_labeling: Sprachen für bevorzugte Labels
115
+ languages_notes: Sprachen für Notes
116
+ languages_further_labelings_Labeling: Sprachen für alternative Labels
114
117
  languages_further_labelings_Labeling::SKOS::AltLabel: Sprachen für alternative Labels
115
118
  performance_unbounded_hierarchy: unbegrenzte Hierarchie-Tiefe
116
119
  triplestore_url: Triplestore-URL
@@ -53,6 +53,7 @@ en:
53
53
  welcome: "Hello %{user_name}"
54
54
  move: "Move"
55
55
  save: "Save"
56
+ cancel: "Cancel"
56
57
  copy: 'Copy'
57
58
  reset: "Reset"
58
59
  language: "Language"
@@ -109,8 +110,10 @@ en:
109
110
  sources: Federation
110
111
  settings:
111
112
  title: Site title
112
- languages_notes: Languages for notes
113
+ available_languages: available languages
113
114
  languages_pref_labeling: Languages for preferred labels
115
+ languages_notes: Languages for notes
116
+ languages_further_labelings_Labeling: Languages for alternative labels
114
117
  languages_further_labelings_Labeling::SKOS::AltLabel: Languages for alternative labels
115
118
  performance_unbounded_hierarchy: Unlimited hierarchy depth
116
119
  triplestore_url: Triplestore URL
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency 'linkeddata'
33
33
  s.add_dependency 'font-awesome-rails', '~> 4.2.0'
34
34
  s.add_dependency 'uglifier', '>= 1.3.0'
35
- s.add_dependency 'apipie-rails'
35
+ s.add_dependency 'apipie-rails', '~> 0.3.5'
36
36
  s.add_dependency 'maruku'
37
37
  s.add_dependency 'database_cleaner'
38
38
  s.add_dependency 'delayed_job_active_record', '~> 4.0.1'
@@ -70,10 +70,9 @@ module Iqvoc::Environments
70
70
  config.assets.raise_runtime_errors = true
71
71
 
72
72
  # Raises error for missing translations
73
- # config.action_view.raise_on_missing_translations = true
73
+ config.action_view.raise_on_missing_translations = true
74
74
 
75
+ # Raises error for missing translations
75
76
  config.i18n.enforce_available_locales = true
76
-
77
- config.action_view.raise_on_missing_translations = true
78
77
  end
79
78
  end