iqvoc 3.5.6 → 3.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. data/CHANGELOG.md +9 -0
  2. data/Gemfile +3 -2
  3. data/Gemfile.lock +71 -65
  4. data/README.md +5 -4
  5. data/app/assets/javascripts/framework.js +1 -1
  6. data/app/assets/javascripts/iqvoc/entityselect.js.erb +20 -19
  7. data/app/assets/javascripts/iqvoc/entityselect_qualified.js.erb +45 -0
  8. data/app/assets/javascripts/iqvoc/iqvoc.js +2 -2
  9. data/app/assets/javascripts/iqvoc/manifest.js +1 -0
  10. data/app/assets/stylesheets/framework.css +1 -1
  11. data/app/assets/stylesheets/iqvoc/iqvoc.css.erb +28 -22
  12. data/app/controllers/collections/hierarchical_controller.rb +2 -2
  13. data/app/controllers/collections_controller.rb +0 -1
  14. data/app/controllers/concepts/alphabetical_controller.rb +0 -1
  15. data/app/controllers/concepts/hierarchical_controller.rb +0 -1
  16. data/app/controllers/concepts/untranslated_controller.rb +0 -1
  17. data/app/controllers/concepts_controller.rb +0 -1
  18. data/app/controllers/instance_configuration_controller.rb +2 -2
  19. data/app/controllers/pages_controller.rb +0 -1
  20. data/app/controllers/rdf_controller.rb +0 -2
  21. data/app/controllers/search_results_controller.rb +0 -1
  22. data/app/controllers/user_sessions_controller.rb +5 -4
  23. data/app/helpers/application_helper.rb +8 -4
  24. data/app/helpers/widget_helper.rb +39 -0
  25. data/app/models/collection/base.rb +4 -0
  26. data/app/models/concept/base.rb +59 -10
  27. data/app/models/concept/relation/base.rb +20 -0
  28. data/app/models/concept/relation/reverse_relation_extension.rb +4 -3
  29. data/app/models/concept/skos/base.rb +1 -1
  30. data/app/views/collections/_collection.html.erb +5 -0
  31. data/app/views/concepts/_visualization.html.erb +1 -1
  32. data/app/views/errors/access_denied.html.erb +6 -2
  33. data/app/views/layouts/_controls.html.erb +1 -1
  34. data/app/views/layouts/application.html.erb +2 -3
  35. data/app/views/pages/about.html.erb +2 -0
  36. data/app/views/partials/concept/relation/_base.html.erb +1 -1
  37. data/app/views/partials/concept/relation/_edit_base.html.erb +2 -5
  38. data/app/views/partials/concept/relation/_edit_ranked.html.erb +13 -0
  39. data/app/views/partials/concept/relation/_ranked.html.erb +12 -0
  40. data/app/views/partials/concept/relation/skos/broader/_mono.html.erb +1 -1
  41. data/app/views/partials/note/_base.html.erb +1 -1
  42. data/app/views/user_sessions/_form.html.erb +10 -0
  43. data/app/views/user_sessions/new.html.erb +1 -9
  44. data/config/application.rb +4 -1
  45. data/config/database.yml +8 -0
  46. data/config/initializers/heroku.rb +24 -0
  47. data/config/initializers/iqvoc.rb +2 -2
  48. data/config/locales/activerecord.en.yml +1 -1
  49. data/config/locales/de.yml +1 -3
  50. data/config/locales/en.yml +1 -3
  51. data/db/migrate/20101208103531_add_type_to_collection_contents.rb +0 -2
  52. data/db/migrate/20120326102037_add_rank_to_concept_relations.rb +5 -0
  53. data/db/schema.rb +12 -1
  54. data/lib/iqvoc/ability.rb +3 -1
  55. data/lib/iqvoc/controller_extensions.rb +12 -29
  56. data/lib/iqvoc/environments/production.rb +2 -0
  57. data/lib/iqvoc/environments/test.rb +0 -3
  58. data/lib/iqvoc/{data_helper.rb → inline_data_helper.rb} +1 -3
  59. data/lib/iqvoc/maker.rb +2 -1
  60. data/lib/iqvoc/origin.rb +23 -24
  61. data/lib/iqvoc/rankable.rb +34 -0
  62. data/lib/iqvoc/version.rb +1 -1
  63. data/test/factories.rb +1 -1
  64. data/test/integration/alphabetical_test.rb +2 -1
  65. data/test/integration/authentication_test.rb +1 -1
  66. data/test/integration/browse_concepts_and_labels_test.rb +2 -1
  67. data/test/integration/concept_scheme_test.rb +1 -1
  68. data/test/integration/edit_concepts_test.rb +1 -1
  69. data/test/integration/instance_configuration_test.rb +1 -1
  70. data/test/integration/search_test.rb +6 -5
  71. data/test/integration/tree_test.rb +1 -1
  72. data/test/integration/untranslated_test.rb +2 -1
  73. data/test/integration_test_helper.rb +0 -29
  74. data/test/unit/concept_test.rb +17 -6
  75. data/test/unit/hygiene_test.rb +15 -5
  76. data/test/unit/origin_test.rb +7 -4
  77. data/vendor/assets/javascripts/{jquery-ui-1.8.16.custom.js → jquery-ui-1.8.20.custom.js} +146 -71
  78. data/vendor/assets/stylesheets/{jquery-ui-1.8.16.custom.css → jquery-ui-1.8.20.custom.css} +16 -19
  79. metadata +32 -27
  80. data/app/views/errors/multiple_choices.html.erb +0 -11
  81. data/lib/iqvoc/rdf_helper.rb +0 -67
  82. data/lib/ojdbc14.jar +0 -0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 3.5.7 (2012-05-24)
2
+
3
+ * Rankable (weighted) relations
4
+ * Counting concept members in collection hierarchy view
5
+ * Improved heroku support
6
+ * Bugfixes
7
+
8
+ Please note that this is the last tiny release before we hit 4.0.0.
9
+
1
10
  ## 3.5.6 (2012-03-07)
2
11
 
3
12
  * Refactored origin (URI slug) generation<br>
data/Gemfile CHANGED
@@ -19,7 +19,7 @@ source 'http://rubygems.org'
19
19
  # TODO: The following dependencies could be included by the "gemspec" command.
20
20
  # There is only one problem: gemspec puts the dependencies automatically to a
21
21
  # group (:development by default). This is not what we need.
22
- gem 'rails', '3.2.2'
22
+ gem 'rails', '3.2.3'
23
23
 
24
24
  group :assets do
25
25
  gem 'uglifier', '>= 1.0.3'
@@ -55,7 +55,6 @@ group :development, :test do
55
55
  end
56
56
 
57
57
  group :test do
58
- gem 'test-unit'
59
58
  gem 'nokogiri', '~> 1.5.0'
60
59
  gem 'capybara'
61
60
  gem 'capybara-webkit'
@@ -63,6 +62,8 @@ group :test do
63
62
  gem 'factory_girl_rails'
64
63
  gem 'spork'
65
64
  gem 'spork-testunit'
65
+ gem 'turn'
66
+ gem 'minitest'
66
67
  end
67
68
 
68
69
  group :production do
data/Gemfile.lock CHANGED
@@ -1,25 +1,25 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (3.2.2)
5
- actionpack (= 3.2.2)
6
- mail (~> 2.4.0)
7
- actionpack (3.2.2)
8
- activemodel (= 3.2.2)
9
- activesupport (= 3.2.2)
4
+ actionmailer (3.2.3)
5
+ actionpack (= 3.2.3)
6
+ mail (~> 2.4.4)
7
+ actionpack (3.2.3)
8
+ activemodel (= 3.2.3)
9
+ activesupport (= 3.2.3)
10
10
  builder (~> 3.0.0)
11
11
  erubis (~> 2.7.0)
12
12
  journey (~> 1.0.1)
13
13
  rack (~> 1.4.0)
14
- rack-cache (~> 1.1)
14
+ rack-cache (~> 1.2)
15
15
  rack-test (~> 0.6.1)
16
16
  sprockets (~> 2.1.2)
17
- activemodel (3.2.2)
18
- activesupport (= 3.2.2)
17
+ activemodel (3.2.3)
18
+ activesupport (= 3.2.3)
19
19
  builder (~> 3.0.0)
20
- activerecord (3.2.2)
21
- activemodel (= 3.2.2)
22
- activesupport (= 3.2.2)
20
+ activerecord (3.2.3)
21
+ activemodel (= 3.2.3)
22
+ activesupport (= 3.2.3)
23
23
  arel (~> 3.0.2)
24
24
  tzinfo (~> 0.3.29)
25
25
  activerecord-jdbc-adapter (1.2.2)
@@ -30,13 +30,14 @@ GEM
30
30
  activerecord-jdbc-adapter (~> 1.2.2)
31
31
  jdbc-sqlite3 (~> 3.7.2)
32
32
  activerecord-oracle_enhanced-adapter (1.4.1)
33
- activeresource (3.2.2)
34
- activemodel (= 3.2.2)
35
- activesupport (= 3.2.2)
36
- activesupport (3.2.2)
33
+ activeresource (3.2.3)
34
+ activemodel (= 3.2.3)
35
+ activesupport (= 3.2.3)
36
+ activesupport (3.2.3)
37
37
  i18n (~> 0.6)
38
38
  multi_json (~> 1.0)
39
- addressable (2.2.7)
39
+ addressable (2.2.8)
40
+ ansi (1.4.2)
40
41
  arel (3.0.2)
41
42
  authlogic (3.1.0)
42
43
  activerecord (>= 3.0.7)
@@ -52,28 +53,28 @@ GEM
52
53
  rack-test (>= 0.5.4)
53
54
  selenium-webdriver (~> 2.0)
54
55
  xpath (~> 0.1.4)
55
- capybara-webkit (0.10.0)
56
+ capybara-webkit (0.12.0)
56
57
  capybara (>= 1.0.0, < 1.2)
57
58
  json
58
- childprocess (0.3.1)
59
+ childprocess (0.3.2)
59
60
  ffi (~> 1.0.6)
60
- database_cleaner (0.7.1)
61
+ database_cleaner (0.7.2)
61
62
  erubis (2.7.0)
62
- execjs (1.3.0)
63
+ execjs (1.4.0)
63
64
  multi_json (~> 1.0)
64
- factory_girl (2.6.0)
65
- activesupport (>= 2.3.9)
66
- factory_girl_rails (1.7.0)
67
- factory_girl (~> 2.6.0)
65
+ factory_girl (3.3.0)
66
+ activesupport (>= 3.0.0)
67
+ factory_girl_rails (3.3.0)
68
+ factory_girl (~> 3.3.0)
68
69
  railties (>= 3.0.0)
69
- fastercsv (1.5.4)
70
+ fastercsv (1.5.5)
70
71
  ffi (1.0.11)
71
72
  ffi (1.0.11-java)
72
- heroku (2.20.1)
73
+ heroku (2.25.0)
73
74
  launchy (>= 0.3.2)
75
+ netrc (~> 0.7.1)
74
76
  rest-client (~> 1.6.1)
75
77
  rubyzip
76
- term-ansicolor (~> 1.0.5)
77
78
  hike (1.2.1)
78
79
  i18n (0.6.0)
79
80
  iq_rdf (0.1.5)
@@ -84,51 +85,54 @@ GEM
84
85
  journey (1.0.3)
85
86
  jruby-openssl (0.7.6.1)
86
87
  bouncy-castle-java (>= 1.5.0146.1)
87
- json (1.6.5)
88
- json (1.6.5-java)
89
- json_pure (1.6.5)
88
+ json (1.7.3)
89
+ json (1.7.3-java)
90
90
  kaminari (0.13.0)
91
91
  actionpack (>= 3.0.0)
92
92
  activesupport (>= 3.0.0)
93
93
  railties (>= 3.0.0)
94
- launchy (2.0.5)
94
+ launchy (2.1.0)
95
95
  addressable (~> 2.2.6)
96
- launchy (2.0.5-java)
96
+ launchy (2.1.0-java)
97
97
  addressable (~> 2.2.6)
98
98
  ffi (~> 1.0.9)
99
99
  spoon (~> 0.0.1)
100
100
  libv8 (3.3.10.4)
101
- mail (2.4.1)
101
+ libwebsocket (0.1.3)
102
+ addressable
103
+ mail (2.4.4)
102
104
  i18n (>= 0.4.0)
103
105
  mime-types (~> 1.16)
104
106
  treetop (~> 1.4.8)
105
- mime-types (1.17.2)
106
- multi_json (1.1.0)
107
+ mime-types (1.18)
108
+ minitest (3.0.0)
109
+ multi_json (1.3.5)
107
110
  mysql2 (0.3.11)
108
- nokogiri (1.5.0)
109
- nokogiri (1.5.0-java)
111
+ netrc (0.7.1)
112
+ nokogiri (1.5.2)
113
+ nokogiri (1.5.2-java)
110
114
  pg (0.13.2)
111
115
  polyglot (0.3.3)
112
116
  rack (1.4.1)
113
- rack-cache (1.1)
117
+ rack-cache (1.2)
114
118
  rack (>= 0.4)
115
119
  rack-ssl (1.3.2)
116
120
  rack
117
121
  rack-test (0.6.1)
118
122
  rack (>= 1.0)
119
- rails (3.2.2)
120
- actionmailer (= 3.2.2)
121
- actionpack (= 3.2.2)
122
- activerecord (= 3.2.2)
123
- activeresource (= 3.2.2)
124
- activesupport (= 3.2.2)
123
+ rails (3.2.3)
124
+ actionmailer (= 3.2.3)
125
+ actionpack (= 3.2.3)
126
+ activerecord (= 3.2.3)
127
+ activeresource (= 3.2.3)
128
+ activesupport (= 3.2.3)
125
129
  bundler (~> 1.0)
126
- railties (= 3.2.2)
127
- rails_autolink (1.0.5)
130
+ railties (= 3.2.3)
131
+ rails_autolink (1.0.7)
128
132
  rails (~> 3.1)
129
- railties (3.2.2)
130
- actionpack (= 3.2.2)
131
- activesupport (= 3.2.2)
133
+ railties (3.2.3)
134
+ actionpack (= 3.2.3)
135
+ activesupport (= 3.2.3)
132
136
  rack-ssl (~> 1.3.2)
133
137
  rake (>= 0.8.7)
134
138
  rdoc (~> 3.4)
@@ -138,32 +142,33 @@ GEM
138
142
  json (~> 1.4)
139
143
  rest-client (1.6.7)
140
144
  mime-types (>= 1.16)
141
- rubyzip (0.9.6.1)
142
- selenium-webdriver (2.13.0)
143
- childprocess (>= 0.2.1)
144
- ffi (~> 1.0.9)
145
- json_pure
145
+ rubyzip (0.9.8)
146
+ selenium-webdriver (2.21.2)
147
+ childprocess (>= 0.2.5)
148
+ ffi (~> 1.0)
149
+ libwebsocket (~> 0.1.3)
150
+ multi_json (~> 1.0)
146
151
  rubyzip
147
152
  spoon (0.0.1)
148
- spork (0.9.0)
153
+ spork (0.9.2)
149
154
  spork-testunit (0.0.8)
150
155
  spork (>= 0.6.0)
151
- sprockets (2.1.2)
156
+ sprockets (2.1.3)
152
157
  hike (~> 1.2)
153
158
  rack (~> 1.0)
154
159
  tilt (~> 1.1, != 1.3.0)
155
- sqlite3 (1.3.5)
156
- term-ansicolor (1.0.7)
157
- test-unit (2.4.7)
158
- therubyracer (0.9.10)
160
+ sqlite3 (1.3.6)
161
+ therubyracer (0.10.1)
159
162
  libv8 (~> 3.3.10)
160
163
  thor (0.14.6)
161
164
  tilt (1.3.3)
162
165
  treetop (1.4.10)
163
166
  polyglot
164
167
  polyglot (>= 0.3.1)
165
- tzinfo (0.3.31)
166
- uglifier (1.2.3)
168
+ turn (0.9.5)
169
+ ansi
170
+ tzinfo (0.3.33)
171
+ uglifier (1.2.4)
167
172
  execjs (>= 0.3.0)
168
173
  multi_json (>= 1.0.2)
169
174
  view_marker (1.0.0)
@@ -192,15 +197,16 @@ DEPENDENCIES
192
197
  jruby-openssl
193
198
  json
194
199
  kaminari
200
+ minitest
195
201
  mysql2
196
202
  nokogiri (~> 1.5.0)
197
203
  pg
198
- rails (= 3.2.2)
204
+ rails (= 3.2.3)
199
205
  rails_autolink
200
206
  spork
201
207
  spork-testunit
202
208
  sqlite3
203
- test-unit
204
209
  therubyracer
210
+ turn
205
211
  uglifier (>= 1.0.3)
206
212
  view_marker
data/README.md CHANGED
@@ -30,12 +30,12 @@ To run iQvoc on heroku do the following:
30
30
 
31
31
  ```
32
32
  bundle install
33
- heroku create
33
+ bundle exec heroku create --stack bamboo
34
34
  bundle exec rake heroku:config
35
35
  git push heroku master
36
- heroku rake db:migrate
37
- heroku rake db:seed
38
- heroku restart
36
+ bundle exec heroku rake db:migrate
37
+ bundle exec heroku rake db:seed
38
+ bundle exec heroku restart
39
39
  ```
40
40
 
41
41
  `heroku open` opens your app in the browser.
@@ -95,4 +95,5 @@ iQvoc was originally created and is being maintained by [innoQ Deutschland GmbH]
95
95
  ## License
96
96
 
97
97
  Copyright 2011 innoQ Deutschland GmbH
98
+
98
99
  Licensed under the Apache License, Version 2.0
@@ -1,6 +1,6 @@
1
1
  //= require jquery-1.7.1
2
2
  //= require rails
3
- //= require jquery-ui-1.8.16.custom
3
+ //= require jquery-ui-1.8.20.custom
4
4
  //= require jquery-ui.datepicker-de
5
5
  //= require jquery.treeview
6
6
  //= require jquery.treeview.async
@@ -1,4 +1,4 @@
1
- /*jslint vars: true, unparam: true */
1
+ /*jslint vars: true, unparam: true, white: true */
2
2
  /*global jQuery, IQVOC */
3
3
 
4
4
  IQVOC.EntitySelector = (function($) {
@@ -6,8 +6,8 @@ IQVOC.EntitySelector = (function($) {
6
6
  "use strict";
7
7
 
8
8
  var EntitySelector = function(node) {
9
- if(!(this instanceof EntitySelector)) { // "new" keyword optional
10
- return new EntitySelector(node);
9
+ if(arguments.length === 0) { // subclassing; skip initialization
10
+ return;
11
11
  }
12
12
  this.el = $(node).hide(); // XXX: rename
13
13
  this.container = $('<div class="entity_select" />').data("widget", this);
@@ -23,15 +23,16 @@ var EntitySelector = function(node) {
23
23
  });
24
24
  selection = $('<ul class="entity_list" />').append(selection);
25
25
 
26
- var exclude = this.el.data("exclude") || null;
27
- var img = $('<img src="<%= asset_path('spinner.gif') %>" class="hidden" />');
26
+ var exclude = this.el.data("exclude") || null,
27
+ img = $('<img class="hidden" />').
28
+ attr("src", "<%= asset_path('spinner.gif') %>");
28
29
  this.input = $("<input />").autocomplete({
29
30
  minLength: 3,
30
31
  source: function(req, callback) {
31
32
  var uri = self.el.data("query-url");
32
33
  $.getJSON(uri, { query: req.term }, function(data, status, xhr) { // TODO: error handling
33
- var excludes = self.getSelection()
34
- .concat(exclude ? [exclude] : []);
34
+ var excludes = self.getSelection().
35
+ concat(exclude ? [exclude] : []);
35
36
  data = $.map(data, function(entity, i) {
36
37
  return $.inArray(entity.id, excludes) !== -1 ? null :
37
38
  { value: entity.id, label: entity.name };
@@ -46,8 +47,8 @@ var EntitySelector = function(node) {
46
47
  select: this.onSelect
47
48
  });
48
49
 
49
- this.container.append(this.input).append(img).append(selection)
50
- .insertAfter(node).prepend(node);
50
+ this.container.append(this.input).append(img).append(selection).
51
+ insertAfter(node).prepend(node);
51
52
 
52
53
  if(this.singular && this.entities.length) {
53
54
  this.input.hide();
@@ -55,11 +56,11 @@ var EntitySelector = function(node) {
55
56
  };
56
57
  $.extend(EntitySelector.prototype, {
57
58
  onSelect: function(ev, ui) {
58
- var el = $(this).val("");
59
- var widget = el.closest(".entity_select").data("widget");
59
+ var el = $(this).val(""),
60
+ widget = el.closest(".entity_select").data("widget");
60
61
  if(widget.add(ui.item.value)) {
61
- var entity = widget
62
- .createEntity({ id: ui.item.value, name: ui.item.label });
62
+ var entity = widget.
63
+ createEntity({ id: ui.item.value, name: ui.item.label });
63
64
  widget.container.find("ul").append(entity);
64
65
  if(widget.singular) {
65
66
  widget.input.hide();
@@ -68,9 +69,9 @@ $.extend(EntitySelector.prototype, {
68
69
  return false;
69
70
  },
70
71
  onDelete: function(ev) {
71
- var el = $(this);
72
- var entity = el.closest("li");
73
- var widget = el.closest(".entity_select").data("widget");
72
+ var el = $(this),
73
+ entity = el.closest("li"),
74
+ widget = el.closest(".entity_select").data("widget");
74
75
  widget.remove(entity.data("id"));
75
76
  entity.remove();
76
77
  if(widget.singular && !widget.entities.length) {
@@ -86,9 +87,9 @@ $.extend(EntitySelector.prototype, {
86
87
  } else {
87
88
  el = $('<span />').text(entity.name);
88
89
  }
89
- var btn = $('<a href="javascript:;" class="btn">x</a>') // "btn" to avoid fancy "button" class -- XXX: hacky workaround!?
90
- .click(this.onDelete);
91
- return $("<li />").data("id", entity.id).append(el).append(btn)[0];
90
+ var delBtn = $('<a href="javascript:;" class="btn">x</a>'). // "btn" to avoid fancy "button" class -- XXX: hacky workaround!?
91
+ click(this.onDelete);
92
+ return $("<li />").data("id", entity.id).append(el).append(delBtn)[0];
92
93
  },
93
94
  add: function(entity) {
94
95
  if($.inArray(entity, this.entities) === -1) {
@@ -0,0 +1,45 @@
1
+ // EntitySelector extension for qualified entities
2
+
3
+ /*jslint vars: true, unparam: true, white: true */
4
+ /*global jQuery, IQVOC */
5
+
6
+ IQVOC.QualifiedEntitySelector = (function($) {
7
+
8
+ "use strict";
9
+
10
+ var QES = function(args) {
11
+ var res = IQVOC.EntitySelector.apply(this, arguments);
12
+ if(this.qualified()) {
13
+ this.container.on("change", "input.qualified", this.onQualify);
14
+ }
15
+ return res;
16
+ };
17
+ QES.prototype = new IQVOC.EntitySelector();
18
+
19
+ QES.prototype.qualified = function() { // TODO: document (NB: doubles as i18n)
20
+ return this.el.data("qualified") || false;
21
+ };
22
+ QES.prototype.onQualify = function(ev) {
23
+ var el = $(this),
24
+ entity = el.closest("li"),
25
+ widget = el.closest(".entity_select").data("widget"),
26
+ id = entity.data("id"),
27
+ value = id + ":" + el.val();
28
+ widget.remove(id);
29
+ widget.add(value);
30
+ };
31
+
32
+ QES.prototype.createEntity = function(entity) {
33
+ var node = IQVOC.EntitySelector.prototype.createEntity.apply(this, arguments),
34
+ qualified = this.qualified();
35
+ if(qualified) {
36
+ var el = $(node);
37
+ $('<input class="qualified" />').attr("placeholder", qualified).
38
+ val(entity[qualified]).insertAfter(el.children(":first"));
39
+ }
40
+ return node;
41
+ };
42
+
43
+ return QES;
44
+
45
+ }(jQuery));
@@ -123,7 +123,7 @@ return {
123
123
  jQuery(document).ready(function($) {
124
124
  "use strict";
125
125
 
126
- var locale = $("head meta[name=i18n-locale]").attr("content");
126
+ var locale = document.documentElement.getAttribute("lang");
127
127
 
128
128
  IQVOC.enhancedDropdown(".menu");
129
129
  IQVOC.dynamicAuth("#auth_controls");
@@ -188,7 +188,7 @@ jQuery(document).ready(function($) {
188
188
 
189
189
  // entity selection (edit mode)
190
190
  $("input.entity_select").each(function(i, node) {
191
- IQVOC.EntitySelector(node);
191
+ new IQVOC.QualifiedEntitySelector(node);
192
192
  });
193
193
 
194
194
  // hide broader relations for top terms (mutually exclusive in mono hierarchies)
@@ -1,3 +1,4 @@
1
1
  //= require iqvoc/iqvoc
2
2
  //= require iqvoc/langselect
3
3
  //= require iqvoc/entityselect
4
+ //= require iqvoc/entityselect_qualified
@@ -1,4 +1,4 @@
1
1
  /*
2
2
  *= require jquery.treeview
3
- *= require jquery-ui-1.8.16.custom
3
+ *= require jquery-ui-1.8.20.custom
4
4
  */
@@ -8,8 +8,8 @@
8
8
  }
9
9
 
10
10
  #header h1 {
11
- color: #000;
12
- font-weight: bold;
11
+ color: #000;
12
+ font-weight: bold;
13
13
  }
14
14
 
15
15
  ul#navi_main {
@@ -82,40 +82,41 @@ ul.letter_selector { width: 100%; overflow: auto; margin: 0 0 10px; padding: 0;
82
82
  /* visualizations */
83
83
 
84
84
  .sections {
85
- overflow: hidden; /* block formatting context */
86
- zoom: 1; /* hasLayout */
85
+ overflow: hidden; /* block formatting context */
86
+ zoom: 1; /* hasLayout */
87
87
  }
88
88
 
89
+ .infovis,
89
90
  #infovis {
90
- float: right;
91
- width: 300px;
92
- height: 300px;
93
- overflow: hidden;
94
- margin: 0 0 10px 10px;
95
- border: 1px solid #EEE;
91
+ float: right;
92
+ width: 300px;
93
+ height: 300px;
94
+ overflow: hidden;
95
+ margin: 0 0 10px 10px;
96
+ border: 1px solid #EEE;
96
97
  }
97
98
 
98
99
  #infovis .button {
99
- float: right;
100
+ float: right;
100
101
  }
101
102
 
102
103
  #infovis .concept a {
103
- color: #000;
104
+ color: #000;
104
105
  }
105
106
 
106
107
  #infovis.filtered .concept {
107
- overflow: visible;
108
- color: #111;
108
+ overflow: visible;
109
+ color: #111;
109
110
  }
110
111
 
111
112
  #infovis .label {
112
- padding: 0 2px;
113
- color: #111;
114
- background-color: #EEE;
113
+ padding: 0 2px;
114
+ color: #111;
115
+ background-color: #EEE;
115
116
  }
116
117
 
117
118
  #infovis-label .label {
118
- font-size: 0.8em;
119
+ font-size: 0.8em;
119
120
  }
120
121
 
121
122
  /* ######################################## */
@@ -142,7 +143,7 @@ ul.letter_selector { width: 100%; overflow: auto; margin: 0 0 10px; padding: 0;
142
143
  }
143
144
 
144
145
  #controls a {
145
- color: #EEE;
146
+ color: #EEE;
146
147
  }
147
148
 
148
149
  #controls ul {
@@ -155,7 +156,7 @@ ul.letter_selector { width: 100%; overflow: auto; margin: 0 0 10px; padding: 0;
155
156
 
156
157
  #controls ul a {
157
158
  display: inline;
158
- color: #000;
159
+ color: #000;
159
160
  }
160
161
 
161
162
  #controls h3 {
@@ -330,8 +331,8 @@ input[type=submit]:active, button:active, a.button:active {
330
331
  }
331
332
 
332
333
  #abstract_uri img {
333
- vertical-align: middle;
334
- border: none;
334
+ vertical-align: middle;
335
+ border: none;
335
336
  }
336
337
 
337
338
  #untranslated {
@@ -454,6 +455,11 @@ fieldset .note_annotations {
454
455
  margin-left: -20px; /* move into adjacent INPUT */
455
456
  }
456
457
 
458
+ .entity_select input.qualified {
459
+ width: 5em;
460
+ margin-left: 0.5em;
461
+ }
462
+
457
463
  tr.hover {
458
464
  cursor: pointer;
459
465
  background-color: #C0FAB4;
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class Collections::HierarchicalController < CollectionsController
18
- skip_before_filter :require_user # This is public for everyone
19
18
 
20
19
  def index
21
20
  authorize! :read, Iqvoc::Collection.base_class
@@ -33,7 +32,8 @@ class Collections::HierarchicalController < CollectionsController
33
32
  :id => collection.id,
34
33
  :url => collection_path(:id => collection, :format => :html),
35
34
  :text => CGI.escapeHTML(collection.pref_label.to_s),
36
- :hasChildren => collection.subcollections.any?
35
+ :hasChildren => collection.subcollections.any?,
36
+ :additionalText => " (#{collection.additional_info})"
37
37
  }
38
38
  end
39
39
  render :json => children.to_json
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class CollectionsController < ApplicationController
18
- skip_before_filter :require_user
19
18
 
20
19
  def index
21
20
  authorize! :read, Iqvoc::Collection.base_class
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class Concepts::AlphabeticalController < ConceptsController
18
- skip_before_filter :require_user
19
18
 
20
19
  def index
21
20
  authorize! :read, Concept::Base
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class Concepts::HierarchicalController < ConceptsController
18
- skip_before_filter :require_user
19
18
 
20
19
  def index
21
20
  authorize! :read, Iqvoc::Concept.base_class
@@ -19,7 +19,6 @@
19
19
  # controllers is the scope used. Use if statements or published methods instead.
20
20
  # "DRYness"
21
21
  class Concepts::UntranslatedController < ConceptsController
22
- skip_before_filter :require_user
23
22
 
24
23
  def index
25
24
  authorize! :read, Concept::Base
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class ConceptsController < ApplicationController
18
- skip_before_filter :require_user
19
18
 
20
19
  def index
21
20
  authorize! :read, Concept::Base
@@ -79,10 +79,10 @@ class InstanceConfigurationController < ApplicationController
79
79
  unless default_value.is_a? Array
80
80
  return convert_value(str, default_value.class)
81
81
  else
82
- return str.blank? ? [] : str.parse_csv.map { |item|
82
+ return str.blank? ? [] : str.parse_csv.map do |item|
83
83
  item.strip!
84
84
  convert_value(item, default_value[0].class)
85
- }
85
+ end
86
86
  end
87
87
  end
88
88
 
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
 
17
17
  class PagesController < ApplicationController
18
- skip_before_filter :require_user
19
18
 
20
19
  # TODO: Some kind of authorization is missing here!
21
20
  # (even everybody has the right in the Ability)