iqvoc 4.9.0 → 4.10.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.
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