iqvoc 3.5.3 → 3.5.4
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.
- data/CHANGELOG.md +11 -2
- data/Gemfile +4 -6
- data/Gemfile.lock +4 -31
- data/README.md +1 -1
- data/app/assets/javascripts/iqvoc/iqvoc.js +10 -2
- data/app/controllers/application_controller.rb +1 -1
- data/app/controllers/collections_controller.rb +5 -5
- data/app/controllers/concepts/versions_controller.rb +1 -1
- data/app/controllers/concepts_controller.rb +7 -8
- data/app/controllers/dashboard_controller.rb +1 -1
- data/app/controllers/instance_configuration_controller.rb +8 -2
- data/app/controllers/rdf_controller.rb +19 -9
- data/app/controllers/user_sessions_controller.rb +1 -1
- data/app/helpers/application_helper.rb +19 -0
- data/app/helpers/dashboard_helper.rb +2 -2
- data/app/helpers/rdf_helper.rb +3 -1
- data/app/helpers/search_results_helper.rb +1 -1
- data/app/models/collection/member/base.rb +1 -1
- data/app/models/concept/base.rb +32 -10
- data/app/models/concept/skos/scheme.rb +46 -0
- data/app/models/labeling/skos/base.rb +3 -3
- data/app/models/note/skos/base.rb +1 -1
- data/app/models/note/skos/change_note.rb +2 -2
- data/app/models/search_extension.rb +1 -1
- data/app/models/user.rb +1 -1
- data/app/views/concepts/_base_data.html.erb +8 -0
- data/app/views/concepts/index.iqrdf +5 -5
- data/app/views/layouts/application.html.erb +3 -1
- data/app/views/partials/concept/relation/_edit_base.html.erb +2 -2
- data/app/views/partials/concept/relation/skos/broader/_mono.html.erb +4 -1
- data/app/views/partials/concept/relation/skos/broader/_poly.html.erb +5 -1
- data/app/views/rdf/scheme.iqrdf +9 -0
- data/config/application.rb +1 -1
- data/config/engine.rb +4 -4
- data/config/initializers/secret_token_configurator.rb +2 -2
- data/config/locales/activerecord.de.yml +13 -0
- data/config/locales/activerecord.en.yml +13 -0
- data/config/locales/de.yml +3 -0
- data/config/locales/en.yml +3 -0
- data/config/routes.rb +3 -2
- data/db/migrate/20120201120736_add_top_term_to_concepts.rb +7 -0
- data/db/schema.rb +2 -1
- data/iqvoc.gemspec +1 -1
- data/lib/debug.rb +34 -8
- data/lib/iqvoc/ability.rb +1 -2
- data/lib/iqvoc/configuration/collection.rb +2 -2
- data/lib/iqvoc/configuration/concept.rb +10 -5
- data/lib/iqvoc/configuration/core.rb +45 -8
- data/lib/iqvoc/configuration/label.rb +1 -1
- data/lib/iqvoc/controller_extensions.rb +3 -2
- data/lib/iqvoc/version.rb +1 -1
- data/lib/iqvoc.rb +1 -1
- data/lib/tasks/heroku.rake +2 -2
- data/test/factories.rb +2 -1
- data/test/integration/concept_scheme_test.rb +38 -0
- data/test/integration/search_test.rb +4 -4
- data/test/integration/tree_test.rb +4 -2
- data/test/integration_test_helper.rb +7 -5
- data/test/unit/concept_test.rb +1 -1
- data/test/unit/instance_configuration_test.rb +7 -7
- data/test/unit/skos_import_test.rb +2 -2
- metadata +23 -185
- data/app/views/layouts/_navigation.html.erb +0 -32
- data/config/blazing.rb +0 -36
- data/public/assets/ajax-loader-5c1bf2208bffabddfb583013023b2b11.gif +0 -0
- data/public/assets/ajax-loader.gif +0 -0
- data/public/assets/arrow_down-e1f4aacd91274ce8d4db40d8b4ad781f.gif +0 -0
- data/public/assets/arrow_down.gif +0 -0
- data/public/assets/arrow_up-a48d7a55002e97f1b70e0e957edf3964.gif +0 -0
- data/public/assets/arrow_up.gif +0 -0
- data/public/assets/back-ffd41b7924770324ead91a4eb51604f6.png +0 -0
- data/public/assets/back.png +0 -0
- data/public/assets/blueprint/ie-d2ff4b1cc209dc6b08716b5e0098e106.css +0 -36
- data/public/assets/blueprint/ie-d2ff4b1cc209dc6b08716b5e0098e106.css.gz +0 -0
- data/public/assets/blueprint/ie.css +0 -36
- data/public/assets/blueprint/ie.css.gz +0 -0
- data/public/assets/blueprint/print-799a53ff649d9f14baf5f5fe643d04c4.css +0 -30
- data/public/assets/blueprint/print-799a53ff649d9f14baf5f5fe643d04c4.css.gz +0 -0
- data/public/assets/blueprint/print.css +0 -30
- data/public/assets/blueprint/print.css.gz +0 -0
- data/public/assets/blueprint/screen-d721f98ceac371a9294fc6f091ca1cb5.css +0 -259
- data/public/assets/blueprint/screen-d721f98ceac371a9294fc6f091ca1cb5.css.gz +0 -0
- data/public/assets/blueprint/screen.css +0 -259
- data/public/assets/blueprint/screen.css.gz +0 -0
- data/public/assets/branch-c950c8ac69ee2f753f86a75d944aa976.png +0 -0
- data/public/assets/branch.png +0 -0
- data/public/assets/categ-e1e1a5958017a5586456895785298c89.png +0 -0
- data/public/assets/categ.png +0 -0
- data/public/assets/categ_open-de616238db93a0645b4c4a2cdd4eece4.png +0 -0
- data/public/assets/categ_open.png +0 -0
- data/public/assets/excanvas-1f8c36f3578409126862b5c17e59b9bd.js +0 -14
- data/public/assets/excanvas-1f8c36f3578409126862b5c17e59b9bd.js.gz +0 -0
- data/public/assets/excanvas.js +0 -14
- data/public/assets/excanvas.js.gz +0 -0
- data/public/assets/file-48364459f087292aafa11168442bde71.gif +0 -0
- data/public/assets/file.gif +0 -0
- data/public/assets/folder-7e0f370ab3fcca5deab89784db42da4a.gif +0 -0
- data/public/assets/folder-closed-cb6c847cac4dea2cb59c98ecfc76b8ae.gif +0 -0
- data/public/assets/folder-closed.gif +0 -0
- data/public/assets/folder.gif +0 -0
- data/public/assets/footer-ea48e7e96122c8ab345da8ff67f29838.png +0 -0
- data/public/assets/footer.png +0 -0
- data/public/assets/go_there-ee7df641e73ef83e43180dbc07c40540.png +0 -0
- data/public/assets/go_there.png +0 -0
- data/public/assets/header_long-5c7970b5911f94433a696ae87918ecb0.png +0 -0
- data/public/assets/header_long.png +0 -0
- data/public/assets/iqvoc/ie_fixes-7797396e9cd2f32961f56af18bacd33a.css +0 -7
- data/public/assets/iqvoc/ie_fixes-7797396e9cd2f32961f56af18bacd33a.css.gz +0 -0
- data/public/assets/iqvoc/ie_fixes.css +0 -7
- data/public/assets/iqvoc/ie_fixes.css.gz +0 -0
- data/public/assets/iqvoc/visualization-49b198ac7d8bc15fa13eafc528e96081.js +0 -4
- data/public/assets/iqvoc/visualization-49b198ac7d8bc15fa13eafc528e96081.js.gz +0 -0
- data/public/assets/iqvoc/visualization.js +0 -4
- data/public/assets/iqvoc/visualization.js.gz +0 -0
- data/public/assets/iqvoc-ff2c5252d9877c38297164984d4a7a55.png +0 -0
- data/public/assets/iqvoc.png +0 -0
- data/public/assets/jit_rgraph-63bc6fa01820d73bb4076f2f62493e66.js +0 -25
- data/public/assets/jit_rgraph-63bc6fa01820d73bb4076f2f62493e66.js.gz +0 -0
- data/public/assets/jit_rgraph.js +0 -25
- data/public/assets/jit_rgraph.js.gz +0 -0
- data/public/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-951e2a65945b93d3f69c1994e5672f39.png +0 -0
- data/public/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/assets/jquery-ui/ui-bg_flat_55_fbec88_40x100-befbc2de63b9556a093c0a5bb2e08a95.png +0 -0
- data/public/assets/jquery-ui/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/public/assets/jquery-ui/ui-bg_glass_75_d0e5f5_1x400-faa3341c6543985d2c94bd65e36bd6d8.png +0 -0
- data/public/assets/jquery-ui/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/public/assets/jquery-ui/ui-bg_glass_85_dfeffc_1x400-df1d30b336ee1530edc334458abd2417.png +0 -0
- data/public/assets/jquery-ui/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/public/assets/jquery-ui/ui-bg_glass_95_fef1ec_1x400-5767880afddd9b98f4b4cfd43a09947b.png +0 -0
- data/public/assets/jquery-ui/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/assets/jquery-ui/ui-bg_gloss-wave_55_5c9ccc_500x100-c563cdeeac0f1479b69e36b21d785ac4.png +0 -0
- data/public/assets/jquery-ui/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/public/assets/jquery-ui/ui-bg_inset-hard_100_f5f8f9_1x100-b837a3b8315a7ff270664ce469f2e6d7.png +0 -0
- data/public/assets/jquery-ui/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/public/assets/jquery-ui/ui-bg_inset-hard_100_fcfdfd_1x100-b5d3cda0e6142534937f71cf4438e28a.png +0 -0
- data/public/assets/jquery-ui/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/public/assets/jquery-ui/ui-icons_217bc0_256x240-14e62c24f88d00f227d88e5b16406eec.png +0 -0
- data/public/assets/jquery-ui/ui-icons_217bc0_256x240.png +0 -0
- data/public/assets/jquery-ui/ui-icons_2e83ff_256x240-c15e521f58d397c2fa31f4214f92a399.png +0 -0
- data/public/assets/jquery-ui/ui-icons_2e83ff_256x240.png +0 -0
- data/public/assets/jquery-ui/ui-icons_469bdd_256x240-aceccf3311e1b369e71a4ac629953d61.png +0 -0
- data/public/assets/jquery-ui/ui-icons_469bdd_256x240.png +0 -0
- data/public/assets/jquery-ui/ui-icons_6da8d5_256x240-18148340aba4ce354c9d52c5aa2f5c0c.png +0 -0
- data/public/assets/jquery-ui/ui-icons_6da8d5_256x240.png +0 -0
- data/public/assets/jquery-ui/ui-icons_cd0a0a_256x240-279edbd373e73b1ecd1ea7a6ba19750d.png +0 -0
- data/public/assets/jquery-ui/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/assets/jquery-ui/ui-icons_d8e7f3_256x240-732b446e2e1d4f4fec4277e2632a9adf.png +0 -0
- data/public/assets/jquery-ui/ui-icons_d8e7f3_256x240.png +0 -0
- data/public/assets/jquery-ui/ui-icons_f9bd01_256x240-1ee933e5956743f5607f2075ed21fac5.png +0 -0
- data/public/assets/jquery-ui/ui-icons_f9bd01_256x240.png +0 -0
- data/public/assets/json2-fdda51ffce29dd4cb684dc7bd0aede01.js +0 -157
- data/public/assets/json2-fdda51ffce29dd4cb684dc7bd0aede01.js.gz +0 -0
- data/public/assets/json2.js +0 -157
- data/public/assets/json2.js.gz +0 -0
- data/public/assets/leaf_end-2ac151e8d7b4928bacb557f96cb5b517.png +0 -0
- data/public/assets/leaf_end.png +0 -0
- data/public/assets/leaf_end_filled-cdb0eb9ce60425bf0a1fd12226e502eb.png +0 -0
- data/public/assets/leaf_end_filled.png +0 -0
- data/public/assets/leaf_mid-966f99acaeaddfaedb6b602eb1eed7e0.png +0 -0
- data/public/assets/leaf_mid.png +0 -0
- data/public/assets/leaf_mid_filled-fecf059c72a649fe77052a886fb030d5.png +0 -0
- data/public/assets/leaf_mid_filled.png +0 -0
- data/public/assets/leaf_nothing-e8b5532117e55a184d93e8bf66afa20a.png +0 -0
- data/public/assets/leaf_nothing.png +0 -0
- data/public/assets/leaf_only-e4fe523e451ad9dea6bba08b44cf8039.png +0 -0
- data/public/assets/leaf_only.png +0 -0
- data/public/assets/leaf_only_filled-7b9a97903759b89facd5fb2e03ba14d1.png +0 -0
- data/public/assets/leaf_only_filled.png +0 -0
- data/public/assets/leaf_top-61fbce4d3adf2235964e828647a52149.png +0 -0
- data/public/assets/leaf_top.png +0 -0
- data/public/assets/leaf_top_filled-003d96425167d3b74e63eb75e12d163e.png +0 -0
- data/public/assets/leaf_top_filled.png +0 -0
- data/public/assets/manifest-c08ebf92c2ea89fbce8705f984a7c604.css +0 -1139
- data/public/assets/manifest-c08ebf92c2ea89fbce8705f984a7c604.css.gz +0 -0
- data/public/assets/manifest-c6d880245ce63929a5842e48cb7c65f2.js +0 -21
- data/public/assets/manifest-c6d880245ce63929a5842e48cb7c65f2.js.gz +0 -0
- data/public/assets/manifest.css +0 -1139
- data/public/assets/manifest.css.gz +0 -0
- data/public/assets/manifest.js +0 -21
- data/public/assets/manifest.js.gz +0 -0
- data/public/assets/manifest.yml +0 -73
- data/public/assets/minus-633f45b71e7552c36214c9d81fce94b0.gif +0 -0
- data/public/assets/minus.gif +0 -0
- data/public/assets/nothing-19b9650c540a8776b047d6dde27687b0.png +0 -0
- data/public/assets/nothing.png +0 -0
- data/public/assets/ok-96195c6d50075a63cbdfa11818301f56.png +0 -0
- data/public/assets/ok.png +0 -0
- data/public/assets/plus-dd3920a86d5ea72497854d875c6afc00.gif +0 -0
- data/public/assets/plus.gif +0 -0
- data/public/assets/rdf_flyer-b2cc2d8b2a537a9c74b39450f8e6b16f.gif +0 -0
- data/public/assets/rdf_flyer.gif +0 -0
- data/public/assets/red_arrow-875d1bca1c4b97ec82635af86032a024.png +0 -0
- data/public/assets/red_arrow.png +0 -0
- data/public/assets/shadow-2975795dc944082531617a0c3ad2da70.png +0 -0
- data/public/assets/shadow.png +0 -0
- data/public/assets/spinner-0b76e32ff4e68b1e8789b4d0fe991cd7.gif +0 -0
- data/public/assets/spinner.gif +0 -0
- data/public/assets/tokenizer_delete-94c9b41ce566e499de2090b552e0d167.png +0 -0
- data/public/assets/tokenizer_delete.png +0 -0
- data/public/assets/tokenizer_pencile-b508830af36466f05620d83c544b22ff.png +0 -0
- data/public/assets/tokenizer_pencile.png +0 -0
- data/public/assets/tokenizer_show-152443b9a6c0b058cfb51c51f567116f.png +0 -0
- data/public/assets/tokenizer_show.png +0 -0
- data/public/assets/top_01-fab0825c0529e87fddf883074490dc19.png +0 -0
- data/public/assets/top_01.png +0 -0
- data/public/assets/treeview-black-116394dbf5afda75949a9925de790795.gif +0 -0
- data/public/assets/treeview-black-line-142d898d1f095b3cec1a5dd204daae0d.gif +0 -0
- data/public/assets/treeview-black-line.gif +0 -0
- data/public/assets/treeview-black.gif +0 -0
- data/public/assets/treeview-default-01747815c9007458fc391092548255f8.gif +0 -0
- data/public/assets/treeview-default-line-9aecef4278b9e684f18f3c52e3607f80.gif +0 -0
- data/public/assets/treeview-default-line.gif +0 -0
- data/public/assets/treeview-default.gif +0 -0
- data/public/assets/treeview-famfamfam-c5f86a8a52aa48e87b4bd58878c81ad8.gif +0 -0
- data/public/assets/treeview-famfamfam-line-897ce097b7d84700985608f22e2403c3.gif +0 -0
- data/public/assets/treeview-famfamfam-line.gif +0 -0
- data/public/assets/treeview-famfamfam.gif +0 -0
- data/public/assets/treeview-gray-56089927c44332a8375be41ab13130c8.gif +0 -0
- data/public/assets/treeview-gray-line-d4be395725623b1f39a0964fa479774e.gif +0 -0
- data/public/assets/treeview-gray-line.gif +0 -0
- data/public/assets/treeview-gray.gif +0 -0
- data/public/assets/treeview-red-cb4ed4e5654d76aef755e5c55b63e91c.gif +0 -0
- data/public/assets/treeview-red-line-fdf843bbfba11d00897c7971dff7e806.gif +0 -0
- data/public/assets/treeview-red-line.gif +0 -0
- data/public/assets/treeview-red.gif +0 -0
- data/public/assets/trunk-5686782333e8b4c7e4468c452fb52cec.png +0 -0
- data/public/assets/trunk.png +0 -0
- data/public/assets/unfinished-1cb6bae22a5b855f4b51cb03a1cce928.png +0 -0
- data/public/assets/unfinished.png +0 -0
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## 3.5.4 (2012-02-08)
|
|
2
|
+
|
|
3
|
+
* Top concepts<br>
|
|
4
|
+
From now on the hierarchical concept view only lists concepts marked as "top term".
|
|
5
|
+
This also includes a default concept scheme and support for top concepts in RDF views.
|
|
6
|
+
* Configurable navigation<br>
|
|
7
|
+
Use `Iqvoc.navigation_items` to inject additional navigation items.
|
|
8
|
+
* Bugfixes
|
|
9
|
+
|
|
1
10
|
## 3.5.1 (2012-02-01)
|
|
2
11
|
|
|
3
12
|
* Bugfixes
|
|
@@ -22,7 +31,7 @@
|
|
|
22
31
|
* Several asset pipeline related fixes
|
|
23
32
|
* Largely simplified heroku setup
|
|
24
33
|
* Improvements to engine mode
|
|
25
|
-
|
|
34
|
+
|
|
26
35
|
Detailed commit log: https://github.com/innoq/iqvoc/compare/v3.3.0...v3.3.3
|
|
27
36
|
|
|
28
37
|
## 3.3.0 (2012-01-10)
|
|
@@ -31,7 +40,7 @@ Detailed commit log: https://github.com/innoq/iqvoc/compare/v3.3.0...v3.3.3
|
|
|
31
40
|
* Asset pipeline<br>
|
|
32
41
|
[Detailed instructions](https://github.com/innoq/iqvoc/wiki/iQvoc-as-a-Rails-Engine)
|
|
33
42
|
on how to use iQvoc as a Rails Engine (including the asset pipeline).
|
|
34
|
-
|
|
43
|
+
|
|
35
44
|
This is a big update. Detailed commit log: https://github.com/innoq/iqvoc/compare/v3.2.6...v3.3.0
|
|
36
45
|
|
|
37
46
|
## 3.2.6 (2012-01-10)
|
data/Gemfile
CHANGED
|
@@ -33,17 +33,16 @@ gem 'iq_rdf', '~> 0.1.2'
|
|
|
33
33
|
gem 'json'
|
|
34
34
|
gem 'rails_autolink'
|
|
35
35
|
gem 'jruby-openssl', :platforms => :jruby
|
|
36
|
-
gem '
|
|
37
|
-
gem 'blazing-passenger'
|
|
38
|
-
gem 'blazing-rails'
|
|
36
|
+
gem 'fastercsv', :platforms => :ruby_18
|
|
39
37
|
|
|
40
38
|
group :development do
|
|
41
|
-
gem 'awesome_print'
|
|
42
39
|
gem 'heroku'
|
|
43
40
|
gem 'view_marker'
|
|
44
41
|
end
|
|
45
42
|
|
|
46
43
|
group :development, :test do
|
|
44
|
+
gem 'awesome_print'
|
|
45
|
+
|
|
47
46
|
platforms :ruby do
|
|
48
47
|
gem 'mysql2'
|
|
49
48
|
gem 'sqlite3'
|
|
@@ -65,8 +64,7 @@ group :test do
|
|
|
65
64
|
gem 'capybara-webkit'
|
|
66
65
|
gem 'database_cleaner'
|
|
67
66
|
gem 'factory_girl_rails'
|
|
68
|
-
gem '
|
|
69
|
-
gem 'turn'
|
|
67
|
+
gem 'minitest'
|
|
70
68
|
end
|
|
71
69
|
|
|
72
70
|
group :production do
|
data/Gemfile.lock
CHANGED
|
@@ -44,23 +44,11 @@ GEM
|
|
|
44
44
|
i18n (~> 0.6)
|
|
45
45
|
multi_json (~> 1.0)
|
|
46
46
|
addressable (2.2.6)
|
|
47
|
-
ansi (1.4.2)
|
|
48
47
|
arel (3.0.0)
|
|
49
48
|
authlogic (3.1.0)
|
|
50
49
|
activerecord (>= 3.0.7)
|
|
51
50
|
activerecord (>= 3.0.7)
|
|
52
51
|
awesome_print (1.0.2)
|
|
53
|
-
blazing (0.2.7)
|
|
54
|
-
activesupport
|
|
55
|
-
grit
|
|
56
|
-
i18n
|
|
57
|
-
logging
|
|
58
|
-
blazing-passenger (0.2.3)
|
|
59
|
-
blazing (>= 0.2.5)
|
|
60
|
-
httparty
|
|
61
|
-
blazing-rails (0.1.3)
|
|
62
|
-
blazing (>= 0.2.5)
|
|
63
|
-
httparty
|
|
64
52
|
bouncy-castle-java (1.5.0146.1)
|
|
65
53
|
builder (3.0.0)
|
|
66
54
|
cancan (1.6.7)
|
|
@@ -77,7 +65,6 @@ GEM
|
|
|
77
65
|
childprocess (0.3.0)
|
|
78
66
|
ffi (~> 1.0.6)
|
|
79
67
|
database_cleaner (0.7.1)
|
|
80
|
-
diff-lcs (1.1.3)
|
|
81
68
|
erubis (2.7.0)
|
|
82
69
|
execjs (1.3.0)
|
|
83
70
|
multi_json (~> 1.0)
|
|
@@ -86,20 +73,15 @@ GEM
|
|
|
86
73
|
factory_girl_rails (1.6.0)
|
|
87
74
|
factory_girl (~> 2.5.0)
|
|
88
75
|
railties (>= 3.0.0)
|
|
76
|
+
fastercsv (1.5.4)
|
|
89
77
|
ffi (1.0.11)
|
|
90
78
|
ffi (1.0.11-java)
|
|
91
|
-
grit (2.4.1)
|
|
92
|
-
diff-lcs (~> 1.1)
|
|
93
|
-
mime-types (~> 1.15)
|
|
94
79
|
heroku (2.19.1)
|
|
95
80
|
launchy (>= 0.3.2)
|
|
96
81
|
rest-client (~> 1.6.1)
|
|
97
82
|
rubyzip
|
|
98
83
|
term-ansicolor (~> 1.0.5)
|
|
99
84
|
hike (1.2.1)
|
|
100
|
-
httparty (0.8.1)
|
|
101
|
-
multi_json
|
|
102
|
-
multi_xml
|
|
103
85
|
i18n (0.6.0)
|
|
104
86
|
iq_rdf (0.1.2)
|
|
105
87
|
builder
|
|
@@ -122,17 +104,13 @@ GEM
|
|
|
122
104
|
ffi (~> 1.0.9)
|
|
123
105
|
spoon (~> 0.0.1)
|
|
124
106
|
libv8 (3.3.10.4)
|
|
125
|
-
little-plugger (1.1.3)
|
|
126
|
-
logging (1.6.2)
|
|
127
|
-
little-plugger (>= 1.1.3)
|
|
128
107
|
mail (2.4.1)
|
|
129
108
|
i18n (>= 0.4.0)
|
|
130
109
|
mime-types (~> 1.16)
|
|
131
110
|
treetop (~> 1.4.8)
|
|
132
|
-
memory_test_fix (0.2.0)
|
|
133
111
|
mime-types (1.17.2)
|
|
112
|
+
minitest (2.11.1)
|
|
134
113
|
multi_json (1.0.4)
|
|
135
|
-
multi_xml (0.4.1)
|
|
136
114
|
mysql2 (0.3.11)
|
|
137
115
|
nokogiri (1.5.0)
|
|
138
116
|
nokogiri (1.5.0-java)
|
|
@@ -188,8 +166,6 @@ GEM
|
|
|
188
166
|
treetop (1.4.10)
|
|
189
167
|
polyglot
|
|
190
168
|
polyglot (>= 0.3.1)
|
|
191
|
-
turn (0.8.3)
|
|
192
|
-
ansi
|
|
193
169
|
tzinfo (0.3.31)
|
|
194
170
|
uglifier (1.2.3)
|
|
195
171
|
execjs (>= 0.3.0)
|
|
@@ -209,20 +185,18 @@ DEPENDENCIES
|
|
|
209
185
|
activerecord-oracle_enhanced-adapter
|
|
210
186
|
authlogic
|
|
211
187
|
awesome_print
|
|
212
|
-
blazing
|
|
213
|
-
blazing-passenger
|
|
214
|
-
blazing-rails
|
|
215
188
|
cancan
|
|
216
189
|
capybara
|
|
217
190
|
capybara-webkit
|
|
218
191
|
database_cleaner
|
|
219
192
|
factory_girl_rails
|
|
193
|
+
fastercsv
|
|
220
194
|
heroku
|
|
221
195
|
iq_rdf (~> 0.1.2)
|
|
222
196
|
jruby-openssl
|
|
223
197
|
json
|
|
224
198
|
kaminari
|
|
225
|
-
|
|
199
|
+
minitest
|
|
226
200
|
mysql2
|
|
227
201
|
nokogiri (~> 1.5.0)
|
|
228
202
|
pg
|
|
@@ -232,6 +206,5 @@ DEPENDENCIES
|
|
|
232
206
|
spork-testunit!
|
|
233
207
|
sqlite3
|
|
234
208
|
therubyracer
|
|
235
|
-
turn
|
|
236
209
|
uglifier (>= 1.0.3)
|
|
237
210
|
view_marker
|
data/README.md
CHANGED
|
@@ -42,7 +42,7 @@ heroku restart
|
|
|
42
42
|
|
|
43
43
|
Remember to visit the Users section and change the default passwords!
|
|
44
44
|
|
|
45
|
-
**Remarks:**
|
|
45
|
+
**Remarks:**
|
|
46
46
|
For now iQvoc only supports the standard Bamboo stack. Cedar is not supported as we have `sqlite3` as a dependency
|
|
47
47
|
in the Gemfile and Cedar does not support a custom `BUNDLE_WITHOUT` config like Bamboo at the moment.
|
|
48
48
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*jslint vars: true, unparam: true, browser: true */
|
|
1
|
+
/*jslint vars: true, unparam: true, browser: true, white: true */
|
|
2
2
|
/*global jQuery */
|
|
3
3
|
|
|
4
4
|
var IQVOC = (function($) {
|
|
@@ -188,6 +188,15 @@ jQuery(document).ready(function($) {
|
|
|
188
188
|
IQVOC.EntitySelector(node);
|
|
189
189
|
});
|
|
190
190
|
|
|
191
|
+
// hide broader relations for top terms (mutually exclusive in mono hierarchies)
|
|
192
|
+
var topTerm = $("#concept_top_term.exclusive");
|
|
193
|
+
var onTopTermToggle = function(ev) {
|
|
194
|
+
var broader = topTerm.closest("li").next(); // XXX: brittle
|
|
195
|
+
broader[topTerm.prop("checked") ? "slideUp" : "slideDown"]();
|
|
196
|
+
};
|
|
197
|
+
topTerm.on("change", onTopTermToggle);
|
|
198
|
+
onTopTermToggle();
|
|
199
|
+
|
|
191
200
|
// Label editing (inline notes)
|
|
192
201
|
$("fieldset.note_relation ol li.inline_note.new").hide();
|
|
193
202
|
$("fieldset.note_relation input[type=button]").click(function(ev) {
|
|
@@ -247,4 +256,3 @@ jQuery(document).ready(function($) {
|
|
|
247
256
|
});
|
|
248
257
|
});
|
|
249
258
|
});
|
|
250
|
-
|
|
@@ -48,8 +48,8 @@ class CollectionsController < ApplicationController
|
|
|
48
48
|
|
|
49
49
|
# When in single query mode, AR handles ALL includes to be loaded by that
|
|
50
50
|
# one query. We don't want that! So let's do it manually :-)
|
|
51
|
-
ActiveRecord::Associations::Preloader.new(@collection,
|
|
52
|
-
[:pref_labels,
|
|
51
|
+
ActiveRecord::Associations::Preloader.new(@collection,
|
|
52
|
+
[:pref_labels,
|
|
53
53
|
{:subcollections => [:pref_labels, :subcollections]},
|
|
54
54
|
{:concepts => [:pref_labels] + Iqvoc::Concept.base_class.default_includes}]).run
|
|
55
55
|
end
|
|
@@ -84,10 +84,10 @@ class CollectionsController < ApplicationController
|
|
|
84
84
|
# When in single query mode, AR handles ALL includes to be loaded by that
|
|
85
85
|
# one query. We don't want that! So let's do it manually :-)
|
|
86
86
|
ActiveRecord::Associations::Preloader.new(@collection, [
|
|
87
|
-
:pref_labels,
|
|
88
|
-
{:subcollections => :pref_labels},
|
|
87
|
+
:pref_labels,
|
|
88
|
+
{:subcollections => :pref_labels},
|
|
89
89
|
{:concepts => [:pref_labels] + Iqvoc::Concept.base_class.default_includes}]).run
|
|
90
|
-
|
|
90
|
+
|
|
91
91
|
build_note_relations
|
|
92
92
|
end
|
|
93
93
|
|
|
@@ -84,7 +84,7 @@ class Concepts::VersionsController < ApplicationController
|
|
|
84
84
|
|
|
85
85
|
new_version.unlock
|
|
86
86
|
new_version.save :validate => false
|
|
87
|
-
|
|
87
|
+
|
|
88
88
|
flash[:notice] = t("txt.controllers.versioning.unlocked")
|
|
89
89
|
redirect_to concept_path(:published => 0, :id => new_version)
|
|
90
90
|
end
|
|
@@ -22,11 +22,11 @@ class ConceptsController < ApplicationController
|
|
|
22
22
|
|
|
23
23
|
respond_to do |format|
|
|
24
24
|
format.json do # Search for widget
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
render :json =>
|
|
25
|
+
scope = Iqvoc::Concept.base_class.editor_selectable.with_pref_labels.
|
|
26
|
+
merge(Label::Base.by_query_value("#{params[:query]}%"))
|
|
27
|
+
scope = scope.where(:top_term => false) if params[:exclude_top_terms]
|
|
28
|
+
@concepts = scope.all.map { |concept| concept_widget_data(concept) }
|
|
29
|
+
render :json => @concepts
|
|
30
30
|
end
|
|
31
31
|
format.all do # RDF full export
|
|
32
32
|
authorize! :full_export, Concept::Base
|
|
@@ -55,7 +55,7 @@ class ConceptsController < ApplicationController
|
|
|
55
55
|
format.html do
|
|
56
56
|
# When in single query mode, AR handles ALL includes to be loaded by that
|
|
57
57
|
# one query. We don't want that! So let's do it manually :-)
|
|
58
|
-
ActiveRecord::Associations::Preloader.new(@concept,
|
|
58
|
+
ActiveRecord::Associations::Preloader.new(@concept,
|
|
59
59
|
Iqvoc::Concept.base_class.default_includes + [:collection_members => {:collection => :labels},
|
|
60
60
|
:broader_relations => {:target => [:pref_labels, :broader_relations]},
|
|
61
61
|
:narrower_relations => {:target => [:pref_labels, :narrower_relations]}]).run
|
|
@@ -65,7 +65,7 @@ class ConceptsController < ApplicationController
|
|
|
65
65
|
format.json do
|
|
66
66
|
# When in single query mode, AR handles ALL includes to be loaded by that
|
|
67
67
|
# one query. We don't want that! So let's do it manually :-)
|
|
68
|
-
ActiveRecord::Associations::Preloader.new(@concept,
|
|
68
|
+
ActiveRecord::Associations::Preloader.new(@concept,
|
|
69
69
|
[:labels,
|
|
70
70
|
{ :relations => { :target => [:labelings, :relations] } }]).run
|
|
71
71
|
|
|
@@ -83,7 +83,6 @@ class ConceptsController < ApplicationController
|
|
|
83
83
|
}
|
|
84
84
|
render :json => concept_data
|
|
85
85
|
end
|
|
86
|
-
format.ttl
|
|
87
86
|
end
|
|
88
87
|
end
|
|
89
88
|
|
|
@@ -14,7 +14,13 @@
|
|
|
14
14
|
# See the License for the specific language governing permissions and
|
|
15
15
|
# limitations under the License.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
if RUBY_VERSION < "1.9"
|
|
18
|
+
require 'rubygems'
|
|
19
|
+
require 'faster_csv'
|
|
20
|
+
CSV = FCSV
|
|
21
|
+
else
|
|
22
|
+
require 'csv'
|
|
23
|
+
end
|
|
18
24
|
|
|
19
25
|
class InstanceConfigurationController < ApplicationController
|
|
20
26
|
|
|
@@ -54,7 +60,7 @@ class InstanceConfigurationController < ApplicationController
|
|
|
54
60
|
|
|
55
61
|
redirect_to instance_configuration_url
|
|
56
62
|
end
|
|
57
|
-
|
|
63
|
+
|
|
58
64
|
private
|
|
59
65
|
|
|
60
66
|
# default value determines value type
|
|
@@ -18,25 +18,35 @@ class RdfController < ApplicationController
|
|
|
18
18
|
|
|
19
19
|
skip_before_filter :require_user
|
|
20
20
|
skip_before_filter :set_locale
|
|
21
|
+
|
|
22
|
+
def scheme
|
|
23
|
+
respond_to do |format|
|
|
24
|
+
format.html { redirect_to about_path }
|
|
25
|
+
format.any do
|
|
26
|
+
authorize! :read, Iqvoc::Concept.root_class.instance
|
|
27
|
+
@top_concepts = Iqvoc::Concept.base_class.tops.published.all
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
21
31
|
|
|
22
32
|
def show
|
|
23
|
-
scope = if
|
|
24
|
-
Iqvoc::Concept.base_class.
|
|
33
|
+
scope = if params[:published] == "0"
|
|
34
|
+
Iqvoc::Concept.base_class.unpublished
|
|
25
35
|
else
|
|
26
|
-
Iqvoc::Concept.base_class.
|
|
36
|
+
Iqvoc::Concept.base_class.published
|
|
27
37
|
end
|
|
28
38
|
if @concept = scope.by_origin(params[:id]).with_associations.last
|
|
29
39
|
respond_to do |format|
|
|
30
|
-
format.html
|
|
40
|
+
format.html do
|
|
31
41
|
redirect_to concept_url(:id => @concept.origin, :published => params[:published])
|
|
32
|
-
|
|
33
|
-
format.any
|
|
42
|
+
end
|
|
43
|
+
format.any do
|
|
34
44
|
authorize! :read, @concept
|
|
35
|
-
render
|
|
36
|
-
|
|
45
|
+
render :show_concept
|
|
46
|
+
end
|
|
37
47
|
end
|
|
38
48
|
else
|
|
39
|
-
raise ActiveRecord::RecordNotFound.new("
|
|
49
|
+
raise ActiveRecord::RecordNotFound.new("Concept '#{params[:id]}' not found.")
|
|
40
50
|
end
|
|
41
51
|
end
|
|
42
52
|
|
|
@@ -16,6 +16,25 @@
|
|
|
16
16
|
|
|
17
17
|
module ApplicationHelper
|
|
18
18
|
|
|
19
|
+
# expects an array of hashes with the following members:
|
|
20
|
+
# :content - usually a navigation link
|
|
21
|
+
# :active? - an optional function determining whether the respective item is
|
|
22
|
+
# currently active
|
|
23
|
+
# :controller - an optional string, used instead of `active?` to check for a
|
|
24
|
+
# specific controller
|
|
25
|
+
# :authorized? - an optional function determining whether the respective item
|
|
26
|
+
# is available to the current user (defaults to true)
|
|
27
|
+
def nav_items(items)
|
|
28
|
+
items.map do |item|
|
|
29
|
+
if (not item[:authorized?]) || instance_eval(&item[:authorized?])
|
|
30
|
+
active = item[:controller] ? params[:controller] == item[:controller] :
|
|
31
|
+
(item[:active?] ? instance_eval(&item[:active?]) : false)
|
|
32
|
+
content_tag "li", instance_eval(&item[:content]),
|
|
33
|
+
:class => ("active" if active)
|
|
34
|
+
end
|
|
35
|
+
end.join.html_safe
|
|
36
|
+
end
|
|
37
|
+
|
|
19
38
|
def iqvoc_default_rdf_namespaces
|
|
20
39
|
Iqvoc.rdf_namespaces.merge({
|
|
21
40
|
:default => root_url(:format => nil, :lang => nil, :trailing_slash => true).gsub(/\/\/$/, "/"), # gsub because of a Rails bug :-(
|
|
@@ -34,9 +34,9 @@ module DashboardHelper
|
|
|
34
34
|
|
|
35
35
|
content_tag :span, raw(msg), :class => css
|
|
36
36
|
end
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
def link_to_dashboard_item(item)
|
|
39
|
-
if item.is_a?(Label::Base)
|
|
39
|
+
if item.is_a?(Label::Base)
|
|
40
40
|
item.published? ? label_path(:id => item.origin) : label_path(:published => 0, :id => item.origin)
|
|
41
41
|
else
|
|
42
42
|
item.published? ? concept_path(:id => item.origin) : concept_path(:published => 0, :id => item.origin)
|
data/app/helpers/rdf_helper.rb
CHANGED
|
@@ -18,7 +18,7 @@ module RdfHelper
|
|
|
18
18
|
|
|
19
19
|
def render_concept(document, concept)
|
|
20
20
|
|
|
21
|
-
# You can not eager load
|
|
21
|
+
# You can not eager load polymorphic associations. That's why we're loading
|
|
22
22
|
# the collections _one_ time and remember them for further _render_concept_
|
|
23
23
|
# calls in the future.
|
|
24
24
|
@rdf_helper_cached_collections ||= Iqvoc::Collection.base_class.select("id, origin").all.each_with_object({}) do |c, hash|
|
|
@@ -35,6 +35,8 @@ module RdfHelper
|
|
|
35
35
|
|
|
36
36
|
c.Schema::expires(concept.expired_at) if concept.expired_at
|
|
37
37
|
c.Owl::deprecated(true) if concept.expired_at and concept.expired_at <= Date.new
|
|
38
|
+
|
|
39
|
+
c.Skos::topConceptOf IqRdf.build_uri(Iqvoc::Concept.root_class.instance.origin) if concept.top_term?
|
|
38
40
|
|
|
39
41
|
concept.labelings.each do |labeling|
|
|
40
42
|
labeling.build_rdf(document, c)
|
data/app/models/concept/base.rb
CHANGED
|
@@ -38,13 +38,15 @@ class Concept::Base < ActiveRecord::Base
|
|
|
38
38
|
:on => :update
|
|
39
39
|
|
|
40
40
|
validate :ensure_no_pref_labels_share_the_same_language
|
|
41
|
+
validate :ensure_exclusive_top_term
|
|
42
|
+
validate :ensure_rooted_top_terms
|
|
41
43
|
|
|
42
44
|
Iqvoc::Concept.include_modules.each do |mod|
|
|
43
45
|
include mod
|
|
44
46
|
end
|
|
45
47
|
|
|
46
48
|
# ********** Hooks
|
|
47
|
-
|
|
49
|
+
|
|
48
50
|
after_initialize do
|
|
49
51
|
@full_validation = false
|
|
50
52
|
end
|
|
@@ -125,7 +127,7 @@ class Concept::Base < ActiveRecord::Base
|
|
|
125
127
|
# *** Concept2Concept relations
|
|
126
128
|
|
|
127
129
|
# Broader
|
|
128
|
-
# Actually this is not needed anymore.
|
|
130
|
+
# FIXME: Actually this is not needed anymore.
|
|
129
131
|
# BUT: the include in scope :tops doesn't work with
|
|
130
132
|
# 'Iqvoc::Concept.broader_relation_class_name'!?!?! (Rails Bug????)
|
|
131
133
|
has_many :broader_relations,
|
|
@@ -134,7 +136,7 @@ class Concept::Base < ActiveRecord::Base
|
|
|
134
136
|
:extend => Concept::Relation::ReverseRelationExtension
|
|
135
137
|
|
|
136
138
|
# Narrower
|
|
137
|
-
# Actually this is not needed anymore.
|
|
139
|
+
# FIXME: Actually this is not needed anymore.
|
|
138
140
|
# BUT: the include in scope :tops doesn't work with
|
|
139
141
|
# 'Iqvoc::Concept.broader_relation_class_name'!?!?! (Rails Bug????)
|
|
140
142
|
has_many :narrower_relations,
|
|
@@ -226,26 +228,26 @@ class Concept::Base < ActiveRecord::Base
|
|
|
226
228
|
# ********** Relation Stuff
|
|
227
229
|
|
|
228
230
|
@nested_relations.each do |relation|
|
|
229
|
-
accepts_nested_attributes_for relation, :allow_destroy => true, :reject_if => Proc.new {|attrs| attrs[:value].blank? }
|
|
231
|
+
accepts_nested_attributes_for relation, :allow_destroy => true, :reject_if => Proc.new { |attrs| attrs[:value].blank? }
|
|
230
232
|
end
|
|
231
233
|
|
|
232
234
|
# ********** Scopes
|
|
233
235
|
|
|
234
|
-
scope :tops,
|
|
235
|
-
where(:concept_relations => {:id => nil})
|
|
236
|
+
scope :tops, where(:top_term => true)
|
|
236
237
|
|
|
237
238
|
scope :broader_tops, includes(:narrower_relations, :pref_labels).
|
|
238
|
-
where(:concept_relations => {:id => nil},
|
|
239
|
+
where(:concept_relations => { :id => nil },
|
|
240
|
+
:labelings => { :type => Iqvoc::Concept.pref_labeling_class_name }).
|
|
239
241
|
order("LOWER(#{Label::Base.table_name}.value)")
|
|
240
242
|
|
|
241
243
|
scope :with_associations, includes([
|
|
242
|
-
{:labelings => :target}, :relations, :matches, :notes
|
|
244
|
+
{ :labelings => :target }, :relations, :matches, :notes
|
|
243
245
|
])
|
|
244
246
|
|
|
245
247
|
scope :with_pref_labels,
|
|
246
248
|
includes(:pref_labels).
|
|
247
249
|
order("LOWER(#{Label::Base.table_name}.value)").
|
|
248
|
-
where(:labelings => {:type => Iqvoc::Concept.pref_labeling_class_name}) # This line is just a workaround for a Rails Bug. TODO: Delete it when the Bug is fixed
|
|
250
|
+
where(:labelings => { :type => Iqvoc::Concept.pref_labeling_class_name }) # This line is just a workaround for a Rails Bug. TODO: Delete it when the Bug is fixed
|
|
249
251
|
|
|
250
252
|
scope :for_dashboard, lambda {
|
|
251
253
|
unpublished_or_follow_up.
|
|
@@ -331,7 +333,7 @@ class Concept::Base < ActiveRecord::Base
|
|
|
331
333
|
def related_concepts_for_relation_class(relation_class, only_published = true)
|
|
332
334
|
relation_class = relation_class.name if relation_class < ActiveRecord::Base # Use the class name string
|
|
333
335
|
relations.select { |rel| rel.class.name == relation_class }.map(&:target).
|
|
334
|
-
|
|
336
|
+
select { |c| c.published? || !only_published }
|
|
335
337
|
end
|
|
336
338
|
|
|
337
339
|
def matches_for_class(match_class)
|
|
@@ -390,6 +392,26 @@ class Concept::Base < ActiveRecord::Base
|
|
|
390
392
|
end
|
|
391
393
|
end
|
|
392
394
|
|
|
395
|
+
# top term and broader relations are mutually exclusive
|
|
396
|
+
def ensure_exclusive_top_term
|
|
397
|
+
if @full_validation
|
|
398
|
+
if top_term && broader_relations.any?
|
|
399
|
+
errors.add :base, I18n.t("txt.models.concept.top_term_exclusive_error")
|
|
400
|
+
end
|
|
401
|
+
end
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
# top terms must never be used as descendants (narrower relation targets)
|
|
405
|
+
# NB: for top terms themselves, this is covered by `ensure_exclusive_top_term`
|
|
406
|
+
def ensure_rooted_top_terms
|
|
407
|
+
if @full_validation
|
|
408
|
+
if narrower_relations.includes(:target). # XXX: inefficient?
|
|
409
|
+
select { |rel| rel.target.top_term? }.any?
|
|
410
|
+
errors.add :base, I18n.t("txt.models.concept.top_term_rooted_error")
|
|
411
|
+
end
|
|
412
|
+
end
|
|
413
|
+
end
|
|
414
|
+
|
|
393
415
|
def ensure_a_pref_label_in_the_primary_thesaurus_language
|
|
394
416
|
if @full_validation
|
|
395
417
|
labels = pref_labels.select{|l| l.published?}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
# Copyright 2011 innoQ Deutschland GmbH
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
require 'singleton'
|
|
18
|
+
|
|
19
|
+
# virtual root node
|
|
20
|
+
# NB:
|
|
21
|
+
# * does not inherit from Concept::Base to avoid being included in all
|
|
22
|
+
# queries based on that class, including indirect ones (e.g. relations)
|
|
23
|
+
# * persistence (i.e. a database record) is not required since this is a
|
|
24
|
+
# singleton and merely a static, virtual node
|
|
25
|
+
class Concept::SKOS::Scheme
|
|
26
|
+
include Singleton
|
|
27
|
+
|
|
28
|
+
def self.rdf_class
|
|
29
|
+
:ConceptScheme
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.rdf_namespace
|
|
33
|
+
:skos
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def origin
|
|
37
|
+
:scheme
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def build_rdf_subject(document, controller, &block)
|
|
41
|
+
ns = IqRdf::Namespace.find_namespace_class(self.class.rdf_namespace.to_sym)
|
|
42
|
+
raise "Namespace '#{rdf_namespace}' is not defined in IqRdf document." unless ns
|
|
43
|
+
IqRdf.build_uri(origin, ns.build_uri(self.class.rdf_class), &block)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
@@ -63,7 +63,7 @@ class Labeling::SKOS::Base < Labeling::Base
|
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
65
|
scope = scope.includes(:owner)
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
scope = case params[:for]
|
|
68
68
|
when "concept"
|
|
69
69
|
scope.where("concepts.type" => Iqvoc::Concept.base_class_name).merge(Concept::Base.published)
|
|
@@ -73,7 +73,7 @@ class Labeling::SKOS::Base < Labeling::Base
|
|
|
73
73
|
# no additional conditions
|
|
74
74
|
scope
|
|
75
75
|
end
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
scope
|
|
78
78
|
end
|
|
79
79
|
|
|
@@ -84,7 +84,7 @@ class Labeling::SKOS::Base < Labeling::Base
|
|
|
84
84
|
def self.build_from_rdf(subject, predicate, object)
|
|
85
85
|
raise "Labeling::SKOS::Base#build_from_rdf: Subject (#{subject}) must be a Concept." unless subject.is_a?(Concept::Base)
|
|
86
86
|
raise "Labeling::SKOS::Base#build_from_rdf: Object (#{object}) must be a string literal" unless object =~ /^"(.+)"(@(.+))$/
|
|
87
|
-
|
|
87
|
+
|
|
88
88
|
lang = $3
|
|
89
89
|
value = JSON.parse(%Q{["#{$1}"]})[0].gsub("\\n", "\n") # Trick to decode \uHHHHH chars
|
|
90
90
|
|
|
@@ -25,7 +25,7 @@ class Note::SKOS::Base < Note::Base
|
|
|
25
25
|
unless object =~ /^"(.+)"(@(.+))$/
|
|
26
26
|
raise "Note::SKOS::Base#build_from_rdf: Object (#{object}) must be a string literal"
|
|
27
27
|
end
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
lang = $3
|
|
30
30
|
value = JSON.parse(%Q{["#{$1}"]})[0].gsub("\\n", "\n") # Trick to decode \uHHHHH chars
|
|
31
31
|
|
|
@@ -21,11 +21,11 @@ class Note::SKOS::ChangeNote < Note::SKOS::Base
|
|
|
21
21
|
def self.edit_partial_name(obj)
|
|
22
22
|
"partials/note/skos/edit_change_note"
|
|
23
23
|
end
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
def self.search_result_partial_name
|
|
26
26
|
'partials/note/skos/change_note/search_result'
|
|
27
27
|
end
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
def self.single_query(params = {})
|
|
30
30
|
query_str = build_query_string(params)
|
|
31
31
|
|