iqvoc 4.0.8 → 4.0.9

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 (209) hide show
  1. data/CHANGELOG.md +11 -0
  2. data/Gemfile +5 -1
  3. data/Gemfile.lock +35 -18
  4. data/README.md +3 -2
  5. data/app/assets/stylesheets/iqvoc/components.css.scss +0 -6
  6. data/app/controllers/collections_controller.rb +30 -17
  7. data/app/controllers/concepts/alphabetical_controller.rb +15 -9
  8. data/app/{models/collection/member/concept.rb → controllers/concepts/expired_controller.rb} +13 -15
  9. data/app/controllers/concepts/hierarchical_controller.rb +3 -0
  10. data/app/controllers/concepts_controller.rb +2 -3
  11. data/app/controllers/instance_configuration_controller.rb +5 -6
  12. data/app/controllers/search_results_controller.rb +1 -2
  13. data/app/helpers/application_helper.rb +1 -5
  14. data/app/helpers/concepts_helper.rb +1 -1
  15. data/app/helpers/rdf_helper.rb +1 -1
  16. data/app/helpers/widget_helper.rb +3 -3
  17. data/app/models/collection/base.rb +64 -46
  18. data/app/models/collection/member/base.rb +12 -0
  19. data/app/models/collection/member/skos/base.rb +13 -12
  20. data/app/models/collection/skos/base.rb +1 -1
  21. data/app/models/collection/{member/collection.rb → skos/unordered.rb} +1 -16
  22. data/app/models/collection/unordered.rb +7 -0
  23. data/app/models/concept/base.rb +26 -107
  24. data/app/models/concept/relation/base.rb +4 -0
  25. data/app/models/concept/relation/skos/base.rb +17 -7
  26. data/app/models/concept/skos/base.rb +10 -1
  27. data/app/models/concept/skos/scheme.rb +1 -1
  28. data/app/models/concept/validations.rb +117 -0
  29. data/app/models/label/base.rb +4 -3
  30. data/app/models/labeling/skos/base.rb +24 -13
  31. data/app/models/match/skos/base.rb +24 -5
  32. data/app/models/note/skos/base.rb +17 -14
  33. data/app/views/collections/_form.html.erb +2 -2
  34. data/app/views/collections/_header.html.erb +2 -2
  35. data/app/views/collections/_sidebar.html.erb +3 -3
  36. data/app/views/collections/index.html.erb +1 -1
  37. data/app/views/collections/show.html.erb +1 -1
  38. data/app/views/collections/show.iqrdf +1 -1
  39. data/app/views/concepts/alphabetical/index.html.erb +1 -1
  40. data/app/views/concepts/expired/index.html.erb +16 -0
  41. data/app/views/concepts/notifications/_referenced_concepts.html.erb +1 -1
  42. data/app/views/concepts/sidebars/_plural.html.erb +4 -0
  43. data/app/views/dashboard/index.html.erb +1 -1
  44. data/app/views/layouts/_controls.html.erb +25 -24
  45. data/app/views/layouts/_navigation.html.erb +1 -1
  46. data/app/views/layouts/application.html.erb +0 -6
  47. data/app/views/partials/concept/_edit_link_base.html.erb +2 -1
  48. data/app/views/partials/labeling/skos/_base.html.erb +1 -2
  49. data/app/views/partials/note/_edit_base.html.erb +1 -1
  50. data/app/views/partials/note/skos/_edit_change_note.html.erb +1 -1
  51. data/app/views/rdf/scheme.iqrdf +1 -1
  52. data/app/views/search_results/_header.html.erb +2 -2
  53. data/app/views/search_results/_sidebar.html.erb +2 -2
  54. data/app/views/search_results/index.html.erb +1 -1
  55. data/app/views/triplestore_sync/index.html.erb +2 -2
  56. data/config/locales/de.yml +9 -2
  57. data/config/locales/en.yml +11 -4
  58. data/config/locales/pt.yml +8 -3
  59. data/config/routes.rb +15 -6
  60. data/db/migrate/20130227145825_fix_collection_type.rb +10 -0
  61. data/db/schema.rb +1 -1
  62. data/lib/generators/app/template.rb +20 -0
  63. data/lib/iqvoc/configuration/collection.rb +5 -5
  64. data/lib/iqvoc/configuration/concept.rb +7 -7
  65. data/lib/iqvoc/configuration/core.rb +11 -10
  66. data/lib/iqvoc/controller_extensions.rb +2 -5
  67. data/lib/iqvoc/inline_data_helper.rb +25 -3
  68. data/lib/iqvoc/instance_configuration.rb +1 -1
  69. data/lib/iqvoc/rdfapi.rb +56 -0
  70. data/lib/iqvoc/skos_importer.rb +88 -40
  71. data/lib/iqvoc/version.rb +1 -1
  72. data/lib/multi_logger.rb +38 -0
  73. data/lib/tasks/importer.rake +6 -1
  74. data/test/integration/browse_concepts_and_labels_test.rb +16 -0
  75. data/test/integration/instance_configuration_test.rb +5 -5
  76. data/test/integration/search_test.rb +18 -17
  77. data/test/unit/concept_test.rb +53 -4
  78. data/test/unit/inline_data_test.rb +61 -0
  79. data/test/unit/origin_test.rb +1 -1
  80. data/test/unit/rdfapi_test.rb +83 -0
  81. data/test/unit/skos_import_test.rb +1 -1
  82. data/{public/assets/jquery-ui → vendor/assets/images}/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  83. data/{public/assets/jquery-ui → vendor/assets/images}/ui-bg_flat_55_fbec88_40x100.png +0 -0
  84. data/{public/assets/jquery-ui → vendor/assets/images}/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  85. data/{public/assets/jquery-ui → vendor/assets/images}/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  86. data/{public/assets/jquery-ui → vendor/assets/images}/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  87. data/{public/assets/jquery-ui → vendor/assets/images}/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  88. data/{public/assets/jquery-ui → vendor/assets/images}/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  89. data/{public/assets/jquery-ui → vendor/assets/images}/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  90. data/{public/assets/jquery-ui → vendor/assets/images}/ui-icons_217bc0_256x240.png +0 -0
  91. data/{public/assets/jquery-ui → vendor/assets/images}/ui-icons_2e83ff_256x240.png +0 -0
  92. data/{public/assets/jquery-ui → vendor/assets/images}/ui-icons_469bdd_256x240.png +0 -0
  93. data/{public/assets/jquery-ui → vendor/assets/images}/ui-icons_6da8d5_256x240.png +0 -0
  94. data/{public/assets/jquery-ui → vendor/assets/images}/ui-icons_cd0a0a_256x240.png +0 -0
  95. data/{public/assets/jquery-ui → vendor/assets/images}/ui-icons_d8e7f3_256x240.png +0 -0
  96. data/{public/assets/jquery-ui → vendor/assets/images}/ui-icons_f9bd01_256x240.png +0 -0
  97. data/vendor/assets/stylesheets/{jquery-ui-1.8.23.custom.css → jquery-ui-1.8.23.custom.css.scss} +17 -17
  98. metadata +29 -131
  99. data/app/controllers/collections/hierarchical_controller.rb +0 -44
  100. data/public/assets/ajax-loader-dada1fbb71d7fb80d8dde7a031ae6cd0.gif +0 -0
  101. data/public/assets/ajax-loader.gif +0 -0
  102. data/public/assets/arrow_down-07c5dea12928d65fcc31c08279366170.gif +0 -0
  103. data/public/assets/arrow_down.gif +0 -0
  104. data/public/assets/arrow_up-51ede92c113b9a870e7a306907360ba8.gif +0 -0
  105. data/public/assets/arrow_up.gif +0 -0
  106. data/public/assets/bootstrap/bootstrap-2012a68e8267282c0a2c177d7005ae6d.css +0 -9
  107. data/public/assets/bootstrap/bootstrap-2012a68e8267282c0a2c177d7005ae6d.css.gz +0 -0
  108. data/public/assets/bootstrap/bootstrap-35fd77cdf54a8cb63a39d8d0cea7a746.js +0 -19
  109. data/public/assets/bootstrap/bootstrap-35fd77cdf54a8cb63a39d8d0cea7a746.js.gz +0 -0
  110. data/public/assets/bootstrap/bootstrap-responsive-609b376f4bb032588c054b563d4bca1f.css +0 -9
  111. data/public/assets/bootstrap/bootstrap-responsive-609b376f4bb032588c054b563d4bca1f.css.gz +0 -0
  112. data/public/assets/bootstrap/bootstrap-responsive.css +0 -9
  113. data/public/assets/bootstrap/bootstrap-responsive.css.gz +0 -0
  114. data/public/assets/bootstrap/bootstrap.css +0 -9
  115. data/public/assets/bootstrap/bootstrap.css.gz +0 -0
  116. data/public/assets/bootstrap/bootstrap.js +0 -19
  117. data/public/assets/bootstrap/bootstrap.js.gz +0 -0
  118. data/public/assets/bootstrap/glyphicons-halflings-0e7ff93d8f48fe1f5f762e4312e78da7.png +0 -0
  119. data/public/assets/bootstrap/glyphicons-halflings-white-ef3d5b8d6a297804352b4a46fdb5466d.png +0 -0
  120. data/public/assets/bootstrap/glyphicons-halflings-white.png +0 -0
  121. data/public/assets/bootstrap/glyphicons-halflings.png +0 -0
  122. data/public/assets/file-58ce0b58f19dfe871b25270e98cff66c.gif +0 -0
  123. data/public/assets/file.gif +0 -0
  124. data/public/assets/folder-5c5b1fd2f1ece710f9159f05cc2aaaa8.gif +0 -0
  125. data/public/assets/folder-closed-8b61fc55011d534f0216c1150994f229.gif +0 -0
  126. data/public/assets/folder-closed.gif +0 -0
  127. data/public/assets/folder.gif +0 -0
  128. data/public/assets/html5-05e1be9157c8366db72fb7a1bcc8daff.js +0 -3
  129. data/public/assets/html5-05e1be9157c8366db72fb7a1bcc8daff.js.gz +0 -0
  130. data/public/assets/html5.js +0 -3
  131. data/public/assets/html5.js.gz +0 -0
  132. data/public/assets/iqvoc/ie_fixes-6a106c21d979ccdd1f6bf1cb129a0e69.css +0 -1
  133. data/public/assets/iqvoc/ie_fixes-6a106c21d979ccdd1f6bf1cb129a0e69.css.gz +0 -0
  134. data/public/assets/iqvoc/ie_fixes.css +0 -1
  135. data/public/assets/iqvoc/ie_fixes.css.gz +0 -0
  136. data/public/assets/iqvoc_logo-316859a511c646918fe75e92fa0bf6ac.png +0 -0
  137. data/public/assets/iqvoc_logo.png +0 -0
  138. data/public/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-a1eb3e0764573ed4b261ca742ed96ac3.png +0 -0
  139. data/public/assets/jquery-ui/ui-bg_flat_55_fbec88_40x100-439ee8e6c8ce855f43ed4d7b90684720.png +0 -0
  140. data/public/assets/jquery-ui/ui-bg_glass_75_d0e5f5_1x400-9357836db77954d0d8c5feb259635223.png +0 -0
  141. data/public/assets/jquery-ui/ui-bg_glass_85_dfeffc_1x400-7beb11d1590fb2fb1ef5c754100a078a.png +0 -0
  142. data/public/assets/jquery-ui/ui-bg_glass_95_fef1ec_1x400-c723e9a2b50006c6054836a10b76bb84.png +0 -0
  143. data/public/assets/jquery-ui/ui-bg_gloss-wave_55_5c9ccc_500x100-cb26f48ac4912c23ce301c69c474d306.png +0 -0
  144. data/public/assets/jquery-ui/ui-bg_inset-hard_100_f5f8f9_1x100-519299e2aa31bffdd4fed34b4fac603d.png +0 -0
  145. data/public/assets/jquery-ui/ui-bg_inset-hard_100_fcfdfd_1x100-27e08524d3d56bb59e354435b663c3ac.png +0 -0
  146. data/public/assets/jquery-ui/ui-icons_217bc0_256x240-ed26778199d8722ae064038a1e841bc8.png +0 -0
  147. data/public/assets/jquery-ui/ui-icons_2e83ff_256x240-94086d0ce953eb0887ab1b8140903af9.png +0 -0
  148. data/public/assets/jquery-ui/ui-icons_469bdd_256x240-1c055f2d65517ef8faf1d1999c8ac2fa.png +0 -0
  149. data/public/assets/jquery-ui/ui-icons_6da8d5_256x240-8f5b417c5604f1b7b5965c98754c33b9.png +0 -0
  150. data/public/assets/jquery-ui/ui-icons_cd0a0a_256x240-8b44e266bdc1f57f1393579591f89222.png +0 -0
  151. data/public/assets/jquery-ui/ui-icons_d8e7f3_256x240-1b415e411069df902e6f417cc014172c.png +0 -0
  152. data/public/assets/jquery-ui/ui-icons_f9bd01_256x240-4553d0576c0498ca4c776aa77aa80833.png +0 -0
  153. data/public/assets/json2-b08b7b9af3e715f42c088ac728f62a2b.js +0 -157
  154. data/public/assets/json2-b08b7b9af3e715f42c088ac728f62a2b.js.gz +0 -0
  155. data/public/assets/json2.js +0 -157
  156. data/public/assets/json2.js.gz +0 -0
  157. data/public/assets/manifest-3ce8edde69d5d291841ef7c49daaa9cb.js +0 -21
  158. data/public/assets/manifest-3ce8edde69d5d291841ef7c49daaa9cb.js.gz +0 -0
  159. data/public/assets/manifest-c0eca563fd9f16907d302af9a2dcae6b.css +0 -51
  160. data/public/assets/manifest-c0eca563fd9f16907d302af9a2dcae6b.css.gz +0 -0
  161. data/public/assets/manifest.css +0 -51
  162. data/public/assets/manifest.css.gz +0 -0
  163. data/public/assets/manifest.js +0 -21
  164. data/public/assets/manifest.js.gz +0 -0
  165. data/public/assets/manifest.yml +0 -47
  166. data/public/assets/minus-1d0fae0720bab52bd98598218e8345c0.gif +0 -0
  167. data/public/assets/minus.gif +0 -0
  168. data/public/assets/plus-1a29e46532f839ed9c977ef4613d079f.gif +0 -0
  169. data/public/assets/plus.gif +0 -0
  170. data/public/assets/spinner_16x16-17dcf941457ae4e702f4600e714b21c1.gif +0 -0
  171. data/public/assets/spinner_16x16.gif +0 -0
  172. data/public/assets/spinner_24x24-78c707c1921b93962ea5edd7f4a74134.gif +0 -0
  173. data/public/assets/spinner_24x24.gif +0 -0
  174. data/public/assets/treeview-black-c46d96020e5d79c652af0fb0c6656384.gif +0 -0
  175. data/public/assets/treeview-black-line-0903c58efd34c3203d132e6f873049f6.gif +0 -0
  176. data/public/assets/treeview-black-line.gif +0 -0
  177. data/public/assets/treeview-black.gif +0 -0
  178. data/public/assets/treeview-default-ee6298d311205d21dc57c01c0696df70.gif +0 -0
  179. data/public/assets/treeview-default-line-2c4106cfd4d322c6e6565f80702c27cb.gif +0 -0
  180. data/public/assets/treeview-default-line.gif +0 -0
  181. data/public/assets/treeview-default.gif +0 -0
  182. data/public/assets/treeview-famfamfam-20dfef13cd5fd1e08fb61ee68eb9d3fa.gif +0 -0
  183. data/public/assets/treeview-famfamfam-line-a02cce2b80977e066df83137aae71fa8.gif +0 -0
  184. data/public/assets/treeview-famfamfam-line.gif +0 -0
  185. data/public/assets/treeview-famfamfam.gif +0 -0
  186. data/public/assets/treeview-gray-01bfdcd116e081e23daf13024fd3e4e0.gif +0 -0
  187. data/public/assets/treeview-gray-line-029b3a7b92ed10ea6c4b6289cb9fa0e3.gif +0 -0
  188. data/public/assets/treeview-gray-line.gif +0 -0
  189. data/public/assets/treeview-gray.gif +0 -0
  190. data/public/assets/treeview-red-2a5abbce598d05c864d845998381eef6.gif +0 -0
  191. data/public/assets/treeview-red-line-f51e6c30aa3b0ff856900ba85d769f1c.gif +0 -0
  192. data/public/assets/treeview-red-line.gif +0 -0
  193. data/public/assets/treeview-red.gif +0 -0
  194. data/vendor/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  195. data/vendor/assets/images/jquery-ui/ui-bg_flat_55_fbec88_40x100.png +0 -0
  196. data/vendor/assets/images/jquery-ui/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  197. data/vendor/assets/images/jquery-ui/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  198. data/vendor/assets/images/jquery-ui/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  199. data/vendor/assets/images/jquery-ui/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  200. data/vendor/assets/images/jquery-ui/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  201. data/vendor/assets/images/jquery-ui/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  202. data/vendor/assets/images/jquery-ui/ui-icons_217bc0_256x240.png +0 -0
  203. data/vendor/assets/images/jquery-ui/ui-icons_2e83ff_256x240.png +0 -0
  204. data/vendor/assets/images/jquery-ui/ui-icons_469bdd_256x240.png +0 -0
  205. data/vendor/assets/images/jquery-ui/ui-icons_6da8d5_256x240.png +0 -0
  206. data/vendor/assets/images/jquery-ui/ui-icons_cd0a0a_256x240.png +0 -0
  207. data/vendor/assets/images/jquery-ui/ui-icons_d8e7f3_256x240.png +0 -0
  208. data/vendor/assets/images/jquery-ui/ui-icons_f9bd01_256x240.png +0 -0
  209. data/vendor/assets/javascripts/json2.js +0 -487
@@ -18,22 +18,25 @@ class Note::SKOS::Base < Note::Base
18
18
 
19
19
  self.rdf_namespace = 'skos'
20
20
 
21
- def self.build_from_rdf(subject, predicate, object)
22
- unless subject.class.reflections.include?(self.name.to_relation_name)
23
- raise "Note::SKOS::Base#build_from_rdf: Subject (#{subject}) must be able to receive this kind of note (#{self.class.name} => #{self.class.name.to_relation_name})."
21
+ def self.build_from_rdf(rdf_subject, rdf_predicate, rdf_object)
22
+ unless rdf_subject.class.reflections.include?(self.name.to_relation_name)
23
+ raise "#{self.name}#build_from_rdf: Subject (#{rdf_subject}) must be able to receive this kind of note (#{self.name} => #{self.name.to_relation_name})."
24
24
  end
25
25
 
26
- case object
26
+ target_class = Iqvoc::RDFAPI::PREDICATE_DICTIONARY[rdf_predicate] || self
27
+ case rdf_object
27
28
  when String # Literal
28
- unless object =~ /^"(.*)"(@(.+))$/
29
- raise "Note::SKOS::Base#build_from_rdf: Object (#{object}) must be a string literal"
29
+ unless rdf_object =~ /^"(.*)"(@(.+))$/
30
+ raise "#{self.name}#build_from_rdf: Object (#{rdf_object}) must be a string literal"
30
31
  end
31
32
  lang = $3
32
33
  value = JSON.parse(%Q{["#{$1}"]})[0].gsub("\\n", "\n") # Trick to decode \uHHHHH chars
33
- subject.send(self.name.to_relation_name) << self.new(:value => value, :language => lang)
34
+ target_class.new(:value => value, :language => lang).tap do |new_instance|
35
+ rdf_subject.send(target_class.name.to_relation_name) << new_instance
36
+ end
34
37
  when Array # Blank node
35
- note = self.create!(:owner => subject)
36
- object.each do |annotation|
38
+ note = target_class.create!(:owner => rdf_subject)
39
+ rdf_object.each do |annotation|
37
40
  ns, pred = *annotation.first.split(":", 2)
38
41
  note.annotations.create! do |a|
39
42
  a.namespace = ns
@@ -45,19 +48,19 @@ class Note::SKOS::Base < Note::Base
45
48
  end
46
49
 
47
50
  def build_rdf(document, subject)
48
- ns, id = "", ""
49
- if (self.rdf_namespace && self.rdf_predicate)
51
+ ns, id = '', ''
52
+ if self.rdf_namespace and self.rdf_predicate
50
53
  ns, id = self.rdf_namespace, self.rdf_predicate
51
54
  elsif self.class == Note::SKOS::Base # This could be done by setting self.rdf_predicate to 'note'. But all subclasses would inherit this value.
52
- ns, id = "Skos", "note"
55
+ ns, id = 'Skos', 'note'
53
56
  else
54
- raise "Note::SKOS::Base#build_rdf: Class #{self.class.name} needs to define self.rdf_namespace and self.rdf_predicate."
57
+ raise "#{self.class.name}#build_rdf: Class #{self.class.name} needs to define self.rdf_namespace and self.rdf_predicate."
55
58
  end
56
59
 
57
60
  if (IqRdf::Namespace.find_namespace_class(ns))
58
61
  subject.send(ns).send(id, value, :lang => language)
59
62
  else
60
- raise "Note::SKOS::Base#build_rdf: couldn't find Namespace '#{ns}'."
63
+ raise "#{self.class.name}#build_rdf: couldn't find Namespace '#{ns}'."
61
64
  end
62
65
  end
63
66
 
@@ -26,7 +26,7 @@
26
26
  <fieldset>
27
27
  <legend><%= Iqvoc::Concept.base_class.model_name.human(:count => 2) %></legend>
28
28
  <%= f.input "concept[inline_member_concept_origins]", :label => t('txt.common.type_to_search') do %>
29
- <%= text_field_tag "concept[inline_member_concept_origins]", @collection.inline_member_concept_origins.join(Iqvoc::InlineDataHelper::Joiner),
29
+ <%= text_field_tag "concept[inline_member_concept_origins]", @collection.inline_member_concept_origins.join(Iqvoc::InlineDataHelper::JOINER),
30
30
  :class => "entity_select",
31
31
  :"data-query-url" => concepts_path(:format => :json),
32
32
  :"data-entity-uri" => concept_path(:id => "{id}"),
@@ -38,7 +38,7 @@
38
38
  <fieldset>
39
39
  <legend><%= Iqvoc::Collection.base_class.model_name.human(:count => 2) %></legend>
40
40
  <%= f.input "concept[inline_member_concept_origins]", :label => t('txt.common.type_to_search') do %>
41
- <%= text_field_tag "concept[inline_member_collection_origins]", @collection.inline_member_collection_origins.join(Iqvoc::InlineDataHelper::Joiner),
41
+ <%= text_field_tag "concept[inline_member_collection_origins]", @collection.inline_member_collection_origins.join(Iqvoc::InlineDataHelper::JOINER),
42
42
  :class => "entity_select",
43
43
  :"data-query-url" => collections_path(:format => :json),
44
44
  :"data-entity-uri" => collection_path(:id => "{id}"),
@@ -1,6 +1,6 @@
1
1
  <%= concept_header collection %>
2
2
 
3
3
  <%= content_for :head do -%>
4
- <link href="<%= collection_url(collection.origin, :format => :ttl, :lang => nil) %>" type="text/turtle" rel="alternate" title=""/>
5
- <link href="<%= collection_url(collection.origin, :format => :rdf, :lang => nil) %>" type="application/rdf+xml" rel="alternate" title=""/>
4
+ <link href="<%= rdf_collection_url(collection.origin, :format => :ttl, :lang => nil) %>" type="text/turtle" rel="alternate" title=""/>
5
+ <link href="<%= rdf_collection_url(collection.origin, :format => :rdf, :lang => nil) %>" type="application/rdf+xml" rel="alternate" title=""/>
6
6
  <% end -%>
@@ -4,8 +4,8 @@
4
4
  :perms => [:create, Iqvoc::Collection.base_class], :active => params[:action] == 'new' %>
5
5
  <% if defined?(collection) %>
6
6
  <%= sidebar_header t('txt.common.representations') %>
7
- <%= sidebar_item :icon => 'share', :text => 'HTML', :path => collection_url(collection.origin, :format => :html, :lang => nil) %>
8
- <%= sidebar_item :icon => 'share', :text => 'RDF/XML', :path => collection_url(collection.origin, :format => :rdf, :lang => nil), :id => 'rdf_link_xml' %>
9
- <%= sidebar_item :icon => 'share', :text => 'RDF/Turtle', :path => collection_url(collection.origin, :format => :ttl, :lang => nil), :id => 'rdf_link_ttl' %>
7
+ <%= sidebar_item :icon => 'share', :text => 'HTML', :path => collection_url(collection.origin, :format => :html) %>
8
+ <%= sidebar_item :icon => 'share', :text => 'RDF/XML', :path => rdf_collection_url(collection.origin, :format => :rdf, :lang => nil), :id => 'rdf_link_xml' %>
9
+ <%= sidebar_item :icon => 'share', :text => 'RDF/Turtle', :path => rdf_collection_url(collection.origin, :format => :ttl, :lang => nil), :id => 'rdf_link_ttl' %>
10
10
  <% end %>
11
11
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <%= page_header :title => Iqvoc::Collection.base_class.model_name.human(:count => 2) %>
2
2
 
3
- <ul class="hybrid-treeview" data-url="<%= hierarchical_collections_path(:format => :json) %>">
3
+ <ul class="hybrid-treeview" data-url="<%= collections_path(:format => :json) %>">
4
4
  <%= render :partial => 'collection', :collection => @top_collections %>
5
5
  </ul>
6
6
 
@@ -47,7 +47,7 @@
47
47
 
48
48
  <div class="relation panel">
49
49
  <h3><%= Iqvoc::Collection.base_class.model_name.human(:count => 2) %></h3>
50
- <ul class="hybrid-treeview" data-url="<%= hierarchical_collections_path(:format => :json) %>">
50
+ <ul class="hybrid-treeview" data-url="<%= collections_path(:format => :json) %>">
51
51
  <%= render :partial => 'collection', :collection => @collection.subcollections.sort {|a, b| a.pref_label <=> b.pref_label } %>
52
52
  </ul>
53
53
  </div>
@@ -2,7 +2,7 @@ Iqvoc.default_rdf_namespace_helper_methods.each do |meth|
2
2
  document.namespaces(self.send(meth))
3
3
  end
4
4
 
5
- document << @collection.build_rdf_subject(document, controller) do |collection|
5
+ document << @collection.build_rdf_subject do |collection|
6
6
  @collection.labelings.each do |labeling|
7
7
  labeling.build_rdf(document, collection)
8
8
  end
@@ -10,7 +10,7 @@
10
10
  </div>
11
11
  <ol class="concepts unstyled">
12
12
  <%= render :partial => 'pref_labeling', :collection => @pref_labelings %>
13
- </dl>
13
+ </ol>
14
14
  </div>
15
15
 
16
16
  <%= paginate @pref_labelings %>
@@ -0,0 +1,16 @@
1
+ <%= page_header :title => Iqvoc::Concept.base_class.model_name.human(:count => 2),
2
+ :desc => t('txt.views.navigation.expired') %>
3
+ <%= render 'concepts/sidebars/plural' %>
4
+
5
+ <div class="panel">
6
+ <div class="panel-header centered">
7
+ <%= letter_selector do |letter| %>
8
+ <% expired_concepts_path(:prefix => letter.to_s.downcase) %>
9
+ <% end %>
10
+ </div>
11
+ <ol class="concepts unstyled">
12
+ <%= render :partial => 'concepts/alphabetical/pref_labeling', :collection => @pref_labelings %>
13
+ </ol>
14
+ </div>
15
+
16
+ <%= paginate @pref_labelings %>
@@ -1,4 +1,4 @@
1
- <% if association_objects_in_editing_mode && association_objects_in_editing_mode[:concept_relations] %>
1
+ <% if association_objects_in_editing_mode && association_objects_in_editing_mode[:concept_relations].any? %>
2
2
  <%= alert(:notice, :header => t('txt.common.referenced_concepts')) do %>
3
3
  <ul>
4
4
  <% association_objects_in_editing_mode[:concept_relations].each do |concept_relation| %>
@@ -8,6 +8,10 @@
8
8
  :icon => 'list-alt',
9
9
  :path => alphabetical_concepts_path(:prefix => 'a'),
10
10
  :active => params[:controller] == 'concepts/alphabetical' %>
11
+ <%= sidebar_item :text => t("txt.views.navigation.expired"),
12
+ :icon => 'list-alt',
13
+ :path => expired_concepts_path(:prefix => 'a'),
14
+ :active => params[:controller] == 'concepts/expired' %>
11
15
  <% if I18n.locale.to_s != Iqvoc::Concept.pref_labeling_languages.first %>
12
16
  <%= sidebar_item :icon => 'list-alt',
13
17
  :text => t("txt.views.untranslated_concepts.caption"),
@@ -1,6 +1,6 @@
1
1
  <%= page_header :title => 'Dashboard' %>
2
2
 
3
- <table class="table dashboard">
3
+ <table class="table">
4
4
  <thead>
5
5
  <tr>
6
6
  <th><%= t("txt.views.dashboard.type") %><%= sorting_controls_for(:class) %></th>
@@ -10,32 +10,33 @@
10
10
  <%- if Iqvoc::Concept.pref_labeling_languages.reject(&:nil?).any? -%>
11
11
  <li><h3><%= t("txt.views.lang_widget.primary") %></h3></li>
12
12
  <% Iqvoc::Concept.pref_labeling_languages.each do |lang| %>
13
+ <nobr>
13
14
  <li>
14
- <%= link_to t("languages.#{lang}"), params.merge(:lang => lang),
15
+ <%= link_to t("languages.#{lang.presence || "-"}", :default => lang.presence || "-"), params.merge(:lang => lang || "none"),
15
16
  :class => ("current" if lang == I18n.locale.to_s) %>
16
- </li>
17
- <% end %>
18
- <% end %>
19
-
20
- <% secondary_languages = Iqvoc.available_languages.reject { |lang| lang == I18n.locale.to_s } %>
21
- <% if secondary_languages.any? %>
22
- <li><h3><%= t("txt.views.lang_widget.secondary") %></h3></li>
23
- <% secondary_languages.each do |lang| %>
24
- <li>
25
- <label>
26
- <input type="checkbox" value="<%= lang %>"> <%= t("languages.#{lang}") %>
27
- </label>
28
- </li>
29
- <% end %>
30
- <% end %>
31
- </ul>
32
- </li>
17
+ </li></nobr>
18
+ <% end %>
19
+ <% end %>
33
20
 
34
- <li>
35
- <% if current_user %>
36
- <%= link_to t("txt.views.layouts.application.logout"), user_session_path, :method => :delete %>
37
- <% else %>
38
- <%= link_to t("txt.views.layouts.application.login"), new_user_session_path(:back_to => @return_url) %>
21
+ <% secondary_languages = Iqvoc.all_languages.reject { |lang| lang == I18n.locale.to_s } %>
22
+ <% if secondary_languages.any? %>
23
+ <li><h3><%= t("txt.views.lang_widget.secondary") %></h3></li>
24
+ <% secondary_languages.each do |lang| %>
25
+ <li>
26
+ <label>
27
+ <input type="checkbox" value="<%= lang %>"> <%= t("languages.#{lang.presence || "-"}", :default => lang.presence || "-") %>
28
+ </label>
29
+ </li>
39
30
  <% end %>
40
- </li>
31
+ <% end %>
32
+ </ul>
33
+ </li>
34
+
35
+ <li>
36
+ <% if current_user %>
37
+ <%= link_to t("txt.views.layouts.application.logout"), user_session_path, :method => :delete %>
38
+ <% else %>
39
+ <%= link_to t("txt.views.layouts.application.login"), new_user_session_path(:back_to => @return_url) %>
40
+ <% end %>
41
+ </li>
41
42
  </ul>
@@ -7,7 +7,7 @@
7
7
  <span class="icon-bar"></span>
8
8
  <span class="icon-bar"></span>
9
9
  </a>
10
- <%= link_to Iqvoc.config["title"], root_path, :class => "brand" %></a>
10
+ <%= link_to Iqvoc.config["title"], root_path, :class => "brand" %>
11
11
 
12
12
  <div class="nav-collapse">
13
13
  <ul class="nav">
@@ -35,12 +35,6 @@
35
35
  <% end %>
36
36
  </div>
37
37
  </div>
38
- <script>
39
- // load JSON polyfill only if necessary
40
- if(typeof JSON === "undefined") {
41
- document.write('<%= javascript_include_tag("json2").sub("</", "<\\/").html_safe %>');
42
- }
43
- </script>
44
38
  <%= javascript_include_tag "manifest" %>
45
39
  <%= yield :scripts %>
46
40
  </body>
@@ -1,4 +1,5 @@
1
- <%= link_to truncate(item.pref_label.to_s, :length => 45), (item.published? ? concept_path(:id => item.origin) : concept_path(:published => 0, :id => item.origin)) %>
1
+ <% label = item.pref_label.to_s.presence || ":#{item.origin} [#{t("txt.common.translation_missing_for")} #{[I18n.locale.to_s, Iqvoc::Concept.pref_labeling_languages.first.to_s].uniq.join(", ")}]" %>
2
+ <%= link_to truncate(label, :length => 45), (item.published? ? concept_path(:id => item.origin) : concept_path(:published => 0, :id => item.origin)) %>
2
3
  <%- if (item.additional_info) -%>
3
4
  (<%= item.additional_info %>)
4
5
  <%- end -%>
@@ -1,7 +1,6 @@
1
1
  <%= content_tag :div, :class => "relation translation panel", :lang => (defined?(concept) ? lang || nil : nil) do %>
2
2
  <% if defined?(concept) %>
3
- <% lang_translation = lang.nil? ? t("languages.none") : t("languages.#{lang}") %>
4
- <h2><%= klass.model_name.human(:count => 2) %> <small><%= lang_translation %></small></h2>
3
+ <h2><%= klass.model_name.human(:count => 2) %> <small><%= t("languages.#{lang || "-"}") %></small></h2>
5
4
  <div class="relation-body">
6
5
  <%= item_listing(concept.labels_for_labeling_class_and_language(klass, lang)) do |label|
7
6
  label.value
@@ -5,7 +5,7 @@
5
5
  <%= content_tag("li", :class => "inline_note translation #{" new" if note.new_record?}", :lang => note.language || nil) do %>
6
6
  <%= f.simple_fields_for assoc_klass.name.to_relation_name, note do |note_form| %>
7
7
  <%= note_form.input :value, :as => :text, :input_html => { :rows => 4, :class => 'span4' } %>
8
- <%= note_form.input :language, :collection => options_for_language_select(note.language), :label => t("txt.common.language"), :input_html => { :class => 'span1' } %>
8
+ <%= note_form.input :language, :collection => Iqvoc.note_languages.map { |l| [l, l]}, :label => t("txt.common.language"), :input_html => { :class => 'span1' } %>
9
9
 
10
10
  <% unless note.new_record? %>
11
11
  <%= note_form.input :"_destroy", :as => :boolean, :label => t("txt.common.delete") %>
@@ -15,7 +15,7 @@
15
15
  <% end %>
16
16
  <% end %>
17
17
  <%= note_form.input :language,
18
- :collection => options_for_language_select(note.language),
18
+ :collection => Iqvoc.note_languages.map { |l| [l, l]},
19
19
  :label => t("txt.common.language"),
20
20
  :include_blank => false,
21
21
  :input_html => { :class => 'span1' } %>
@@ -2,7 +2,7 @@ Iqvoc.default_rdf_namespace_helper_methods.each do |meth|
2
2
  document.namespaces(self.send(meth))
3
3
  end
4
4
 
5
- document << Iqvoc::Concept.root_class.instance.build_rdf_subject(document, controller) do |scheme|
5
+ document << Iqvoc::Concept.root_class.instance.build_rdf_subject do |scheme|
6
6
  @top_concepts.each do |top_concept|
7
7
  scheme.Skos::hasTopConcept IqRdf.build_uri(top_concept.origin)
8
8
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  <% if @results %>
4
4
  <%= content_for :head do %>
5
- <link href="<%= url_for(request.query_parameters.merge(:format => :ttl, :lang => nil, :page => @results.current_page, :only_path => false)) %>" type="text/turtle" rel="alternate" title=""/>
6
- <link href="<%= url_for(request.query_parameters.merge(:format => :rdf, :lang => nil, :page => @results.current_page, :only_path => false)) %>" type="application/rdf+xml" rel="alternate" title=""/>
5
+ <link href="<%= rdf_search_path(request.query_parameters.merge(:format => :ttl, :lang => nil, :page => @results.current_page, :only_path => false)) %>" type="text/turtle" rel="alternate" title=""/>
6
+ <link href="<%= rdf_search_path(request.query_parameters.merge(:format => :rdf, :lang => nil, :page => @results.current_page, :only_path => false)) %>" type="application/rdf+xml" rel="alternate" title=""/>
7
7
  <% end %>
8
8
  <% end %>
@@ -1,7 +1,7 @@
1
1
  <% if results %>
2
2
  <%= sidebar do %>
3
3
  <%= sidebar_header t('txt.common.representations') %>
4
- <%= sidebar_item :icon => 'share', :text => 'RDF/XML', :path => url_for(request.query_parameters.merge(:format => :rdf, :lang => nil, :page => results.current_page, :only_path => false)), :id => 'rdf_link_xml' %>
5
- <%= sidebar_item :icon => 'share', :text => 'RDF/Turtle', :path => url_for(request.query_parameters.merge(:format => :ttl, :lang => nil, :page => @results.current_page, :only_path => false)), :id => 'rdf_link_ttl' %>
4
+ <%= sidebar_item :icon => 'share', :text => 'RDF/XML', :path => rdf_search_path(request.query_parameters.merge(:format => :rdf, :lang => nil, :page => results.current_page, :only_path => false)), :id => 'rdf_link_xml' %>
5
+ <%= sidebar_item :icon => 'share', :text => 'RDF/Turtle', :path => rdf_search_path(request.query_parameters.merge(:format => :ttl, :lang => nil, :page => @results.current_page, :only_path => false)), :id => 'rdf_link_ttl' %>
6
6
  <% end %>
7
7
  <% end %>
@@ -13,8 +13,8 @@
13
13
 
14
14
  <%= input_block :label => t('txt.views.search_results.mode'), :id => 'qt' do %>
15
15
  <%= select_tag :qt, options_for_select([
16
- [t('txt.views.search_results.exact'), 'exact'],
17
16
  [t('txt.views.search_results.contains'), 'contains'],
17
+ [t('txt.views.search_results.exact'), 'exact'],
18
18
  [t('txt.views.search_results.ends_with'), 'ends_with'],
19
19
  [t('txt.views.search_results.begins_with'), 'begins_with']
20
20
  ], params[:qt]) %>
@@ -1,7 +1,7 @@
1
1
  <%= page_header :title => t("txt.views.triplestore_sync.caption") %>
2
2
  <%= render "dashboard/sidebar" %>
3
3
 
4
- <%= form_tag triplestore_sync_path(:format => nil, :lang => nil), :method => :post do %>
4
+ <%= form_tag triplestore_sync_path(:format => nil), :method => :post do %>
5
5
  <%= submit_tag t("txt.views.triplestore_sync.start"), :class => "btn btn-primary" %>
6
6
  <% end %>
7
7
 
@@ -15,7 +15,7 @@
15
15
  Iqvoc.default_rdf_namespace_helper_methods.each do |meth|
16
16
  doc.namespaces(self.send(meth))
17
17
  end
18
- uri = record.build_rdf_subject(doc, controller).full_uri # XXX: we actually just want path, plus HTML format
18
+ uri = record.build_rdf_subject.full_uri # XXX: we actually just want path, plus HTML format
19
19
  %>
20
20
  <li><%= link_to record.to_s, uri %></li>
21
21
  <% end %>
@@ -18,7 +18,7 @@ de:
18
18
  languages:
19
19
  de: Deutsch
20
20
  en: Englisch
21
- none: Wiss.
21
+ none: Unbekannt
22
22
  fr: Französisch
23
23
  sl: Slowenisch
24
24
  pl: Polnisch
@@ -31,6 +31,10 @@ de:
31
31
  it: Italienisch
32
32
  cs: Tschechisch
33
33
  sk: Slowakisch
34
+ et: Estnisch
35
+ dk: Dänisch
36
+ fi: Finnisch
37
+ sv: Schwedisch
34
38
  views:
35
39
  pagination:
36
40
  first: "&laquo; Erste"
@@ -89,7 +93,7 @@ de:
89
93
  caption: "Instanzkonfiguration"
90
94
  settings:
91
95
  title: Titel
92
- available_languages: verfügbare Sprachen
96
+ note_languages: Sprachen für Notes
93
97
  languages_pref_labeling: Sprachen für bevorzugte Labels
94
98
  languages_further_labelings_Labeling::SKOS::AltLabel: Sprachen für alternative Labels
95
99
  triplestore_url: Triplestore-URL
@@ -143,6 +147,7 @@ de:
143
147
  instance_configuration: "Konfiguration"
144
148
  hierarchical: "Hierarchisch"
145
149
  alphabetical: "Alphabetisch"
150
+ expired: "Abgelaufene"
146
151
  search: "Suche"
147
152
  about: "Über"
148
153
  users: "Benutzer"
@@ -361,3 +366,5 @@ de:
361
366
  association_narrower_unpublished: "Spezifischere Begriffe müssen veröffentlicht sein."
362
367
  association_related_unpublished: "Verwandte Begriffe müssen veröffentlicht sein."
363
368
  no_pref_label: "-- kein PrefLabel --"
369
+ pref_label_not_unique: "Das PrefLabel %{label} ist bereits in Verwendung."
370
+ pref_labels_not_unique: "Die PrefLabels %{label} sind bereits in Verwendung."
@@ -18,7 +18,7 @@ en:
18
18
  languages:
19
19
  de: German
20
20
  en: English
21
- none: Sci.
21
+ none: Unbekannt
22
22
  fr: French
23
23
  sl: Slovenian
24
24
  pl: Polish
@@ -31,6 +31,10 @@ en:
31
31
  it: Italian
32
32
  cs: Czech
33
33
  sk: Slovak
34
+ et: Estonian
35
+ dk: Danish
36
+ fi: Finnish
37
+ sv: Swedish
34
38
  views:
35
39
  pagination:
36
40
  first: "&laquo; First"
@@ -89,7 +93,7 @@ en:
89
93
  caption: "Instance Configuration"
90
94
  settings:
91
95
  title: site title
92
- available_languages: available languages
96
+ note_languages: languages for notes
93
97
  languages_pref_labeling: languages for preferred labels
94
98
  languages_further_labelings_Labeling::SKOS::AltLabel: languages for alternative labels
95
99
  triplestore_url: triplestore URL
@@ -151,6 +155,7 @@ en:
151
155
  instance_configuration: "Configuration"
152
156
  hierarchical: "Hierarchical"
153
157
  alphabetical: "Alphabetical"
158
+ expired: "Expired"
154
159
  search: "Search"
155
160
  about: "About"
156
161
  users: "Users"
@@ -333,8 +338,8 @@ en:
333
338
  error: "Relation not found. Probably removed from the target side. Please refresh your browser window."
334
339
  collections:
335
340
  save:
336
- success: "The collection has been successfully created."
337
- error: "The collection could not be created."
341
+ success: "The collection has been successfully saved."
342
+ error: "The collection could not be saved."
338
343
  destroy:
339
344
  success: "The collection has been successfully deleted."
340
345
  error: "The collection could not be deleted."
@@ -368,3 +373,5 @@ en:
368
373
  association_narrower_unpublished: "Specific terms have to be published."
369
374
  association_related_unpublished: "Related terms have to be published."
370
375
  no_pref_label: "-- no PrefLabel --"
376
+ pref_label_not_unique: "The preferred label '%{label}' is already in use."
377
+ pref_labels_not_unique: "The preferred labels '%{label}' are already in use."
@@ -18,7 +18,7 @@ pt:
18
18
  languages:
19
19
  de: Alemão
20
20
  en: Inglês
21
- none: Sci.
21
+ none: Desconhecido
22
22
  fr: Francês
23
23
  sl: Esloveno
24
24
  pl: Polonês
@@ -31,6 +31,10 @@ pt:
31
31
  it: Italiano
32
32
  cs: Checo
33
33
  sk: Eslovaco
34
+ et: Estoniano
35
+ dk: Dinamarquês
36
+ fi: Finlandês
37
+ sv: Sueco
34
38
  views:
35
39
  pagination:
36
40
  first: "&laquo; Primeira"
@@ -89,7 +93,6 @@ pt:
89
93
  caption: "Configuração da Instância"
90
94
  settings:
91
95
  title: "título do sítio"
92
- available_languages: "idiomas disponíveis"
93
96
  languages_pref_labeling: "idiomas para os rótulos preferenciais"
94
97
  languages_further_labelings_Labeling::SKOS::AltLabel: "idiomas para os rótulos alternativos"
95
98
  triplestore_url: "URL do repositório de triplas"
@@ -367,4 +370,6 @@ pt:
367
370
  association_broader_unpublished: "Termos gerais precisam ser publicados."
368
371
  association_narrower_unpublished: "Termo específicos precisam ser publicados."
369
372
  association_related_unpublished: "Termos relacionados precisam ser publicados."
370
- no_pref_label: "-- sem rótulo principal --"
373
+ no_pref_label: "-- sem rótulo preferencial --"
374
+ pref_label_not_unique: "O rótulo preferencial '%{label}' já está em uso."
375
+ pref_labels_not_unique: "Os rótulos preferenciais '%{label}' já estão em uso."
data/config/routes.rb CHANGED
@@ -17,11 +17,13 @@
17
17
  Rails.application.routes.draw do
18
18
  match 'schema(.:format)' => 'pages#schema', :as => 'schema'
19
19
 
20
- scope '(:lang)', :constraints => lambda { |params, req|
21
- lang = params[:lang]
22
- return lang.nil? || lang.to_s =~ /^#{Iqvoc::Concept.pref_labeling_languages.join("|").presence || " "}$/
20
+ scope ':lang', :constraints => lambda { |params, req|
21
+ langs = Iqvoc::Concept.pref_labeling_languages.join("|").presence || "en"
22
+ return params[:lang].to_s =~ /^#{langs}$/
23
23
  } do
24
24
 
25
+ Iqvoc.localized_routes.each { |hook| hook.call(self) }
26
+
25
27
  resource :user_session, :only => [:new, :create, :destroy]
26
28
  resources :users, :except => [:show]
27
29
 
@@ -43,8 +45,7 @@ Rails.application.routes.draw do
43
45
  match 'alphabetical_concepts(/:prefix)(.:format)' => 'concepts/alphabetical#index', :as => 'alphabetical_concepts'
44
46
  match 'untranslated_concepts/:prefix(.:format)' => 'concepts/untranslated#index', :as => 'untranslated_concepts'
45
47
  match 'hierarchical_concepts(.:format)' => 'concepts/hierarchical#index', :as => 'hierarchical_concepts'
46
-
47
- match 'hierarchical_collections(.:format)' => 'collections/hierarchical#index', :as => 'hierarchical_collections'
48
+ match 'expired_concepts(.:format)' => 'concepts/expired#index', :as => 'expired_concepts'
48
49
 
49
50
  match 'dashboard(.:format)' => 'dashboard#index', :as => 'dashboard'
50
51
 
@@ -61,6 +62,14 @@ Rails.application.routes.draw do
61
62
  root :to => 'frontpage#index', :format => nil
62
63
  end
63
64
 
65
+ match 'schema(.:format)' => 'pages#schema', :as => 'schema'
64
66
  match '/scheme(.:format)' => 'rdf#scheme', :as => 'scheme'
65
- match '/:id(.:format)' => 'rdf#show', :as => 'rdf'
67
+
68
+ get 'search(.:format)' => 'search_results#index', :as => 'rdf_search'
69
+ get '/:id(.:format)' => 'rdf#show', :as => 'rdf'
70
+ get '/collections/:id(.:format)', :as => "rdf_collection", :to => "collections#show"
71
+ get '/collections', :as => "rdf_collections", :to => "collections#index"
72
+
73
+
74
+ root :to => 'frontpage#index', :format => nil
66
75
  end
@@ -0,0 +1,10 @@
1
+ class FixCollectionType < ActiveRecord::Migration
2
+ def up
3
+ execute "UPDATE concepts SET type='Collection::SKOS::Unordered' WHERE type='Collection::Unordered'"
4
+ execute "UPDATE collection_members SET type='Collection::Member::SKOS::Base' WHERE type='Collection::Member::Concept'"
5
+ end
6
+
7
+ def down
8
+ execute "UPDATE concepts SET type='Collection::Unordered' WHERE type='Collection::SKOS::Unordered'"
9
+ end
10
+ end
data/db/schema.rb CHANGED
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended to check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 20120326102037) do
14
+ ActiveRecord::Schema.define(:version => 20130227145825) do
15
15
 
16
16
  create_table "collection_members", :force => true do |t|
17
17
  t.integer "collection_id"
@@ -43,6 +43,26 @@ end
43
43
  # Iqvoc.core_assets += []
44
44
  EOF
45
45
 
46
+ remove_file "app/assets/javascripts/application.js"
47
+ create_file "app/assets/javascripts/manifest.js", <<-EOF
48
+ //= require framework
49
+ //= require iqvoc/manifest
50
+
51
+ //= require #{app_path}/manifest
52
+ EOF
53
+ create_file "app/assets/javascripts/#{app_path}/manifest.js"
54
+
55
+ remove_file "app/assets/stylesheets/application.css"
56
+ create_file "app/assets/stylesheets/manifest.css", <<-EOF
57
+ /*
58
+ *= require framework
59
+ *= require iqvoc/manifest
60
+
61
+ *= require #{app_path}/manifest
62
+ */
63
+ EOF
64
+ create_file "app/assets/stylesheets/#{app_path}/manifest.css"
65
+
46
66
  remove_file "public/index.html"
47
67
  remove_file "app/controllers/application_controller.rb"
48
68
  remove_file "app/helpers/application_helper.rb"
@@ -6,11 +6,11 @@ module Iqvoc
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  included do
9
- mattr_accessor :base_class_name, :member_class_names
9
+ mattr_accessor :base_class_name, :member_class_name
10
10
 
11
- self.base_class_name = 'Collection::Unordered'
11
+ self.base_class_name = 'Collection::SKOS::Unordered'
12
12
 
13
- self.member_class_names = ['Collection::Member::SKOS::Base']
13
+ self.member_class_name = 'Collection::Member::SKOS::Base'
14
14
  end
15
15
 
16
16
  module ClassMethods
@@ -18,8 +18,8 @@ module Iqvoc
18
18
  base_class_name.constantize
19
19
  end
20
20
 
21
- def member_classes
22
- member_class_names.map(&:constantize)
21
+ def member_class
22
+ member_class_name.constantize
23
23
  end
24
24
  end
25
25