iqvoc_skosxl 2.6.0 → 2.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +13 -11
- data/Gemfile.lock +147 -122
- data/app/assets/stylesheets/manifest.css.scss +1 -0
- data/app/controllers/labels/versions_controller.rb +8 -0
- data/app/controllers/labels_controller.rb +15 -12
- data/app/models/concept/skosxl/extension.rb +2 -2
- data/app/models/label/skosxl/base.rb +33 -12
- data/app/models/label/skosxl/validations.rb +16 -1
- data/app/models/labeling/skosxl/base.rb +16 -9
- data/app/views/labels/_form.html.erb +2 -4
- data/app/views/labels/_sidebar.html.erb +2 -1
- data/app/views/labels/show_unpublished.html.erb +1 -1
- data/app/views/partials/label/relation/_base.html.erb +5 -1
- data/app/views/partials/label/skosxl/_new_link_base.html.erb +1 -5
- data/app/views/partials/label/skosxl/_search_result.html.erb +13 -0
- data/app/views/partials/labeling/skosxl/_base.html.erb +12 -4
- data/config/database.yml +12 -28
- data/config/database.yml.postgresql +23 -0
- data/config/initializers/iqvoc.rb +1 -0
- data/config/locales/de.yml +2 -0
- data/config/locales/en.yml +2 -0
- data/db/migrate/20150414083600_remove_fk_constraints_iqvoc_skosxl.rb +5 -0
- data/db/schema.rb +22 -26
- data/iqvoc_skosxl.gemspec +1 -1
- data/lib/iqvoc/skosxl/version.rb +1 -1
- data/lib/iqvoc_skosxl.rb +1 -0
- data/test/integration/dashboard_test.rb +1 -1
- data/test/integration/label_creation_test.rb +12 -0
- data/test/models/concept_test.rb +86 -0
- metadata +10 -5
@@ -8,8 +8,9 @@ module Label
|
|
8
8
|
validates :origin, uniqueness: { scope: :rev }
|
9
9
|
validate :origin_has_to_be_escaped
|
10
10
|
|
11
|
+
validate :referenced_published_concepts_has_to_be_valid, if: :validatable_for_publishing?
|
11
12
|
validates :value, uniqueness: { scope: [:language, :rev] },
|
12
|
-
|
13
|
+
if: :validatable_for_publishing?
|
13
14
|
validates :value, presence: true, if: :validatable_for_publishing?
|
14
15
|
end
|
15
16
|
|
@@ -19,6 +20,20 @@ module Label
|
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
23
|
+
def referenced_published_concepts_has_to_be_valid
|
24
|
+
published_label = self.published_version
|
25
|
+
|
26
|
+
# check published concepts which use the current label as a pref label
|
27
|
+
concepts.published.each do |concept|
|
28
|
+
# pref labels without the current published one
|
29
|
+
labels = concept.pref_labels.reject{ |l| l == published_label }
|
30
|
+
|
31
|
+
unless labels.map(&:language).map(&:to_s).include?(Iqvoc::Concept.pref_labeling_languages.first.to_s)
|
32
|
+
errors.add :base, I18n.t('txt.models.label.referenced_concepts_invalid')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
22
37
|
end
|
23
38
|
end
|
24
39
|
end
|
@@ -36,25 +36,32 @@ class Labeling::SKOSXL::Base < Labeling::Base
|
|
36
36
|
query_str = build_query_string(params)
|
37
37
|
|
38
38
|
scope = includes(:target).order("LOWER(#{Label::Base.table_name}.value)").references(:labels, :concepts)
|
39
|
-
|
40
39
|
if params[:query].present?
|
41
|
-
|
40
|
+
labels = Label::Base.by_query_value(query_str).by_language(params[:languages].to_a).published
|
41
|
+
scope = scope.merge(labels)
|
42
42
|
else
|
43
43
|
scope = scope.merge(Label::Base.by_language(params[:languages].to_a).published)
|
44
44
|
end
|
45
45
|
|
46
46
|
if params[:collection_origin].present?
|
47
|
-
|
48
|
-
|
47
|
+
collection = Collection::Base.where(origin: params[:collection_origin]).last
|
48
|
+
if collection
|
49
|
+
scope = scope.includes(owner: { collection_members: :collection })
|
50
|
+
scope = scope.where("#{Collection::Member::Base.table_name}.collection_id" => collection.id)
|
51
|
+
else
|
52
|
+
raise "Collection with Origin #{params[:collection_origin]} not found!"
|
53
|
+
end
|
49
54
|
end
|
50
55
|
|
51
|
-
#
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
+
# apply search entity type
|
57
|
+
case params[:for]
|
58
|
+
when 'concept'
|
59
|
+
scope = scope.includes(:owner).merge(Iqvoc::Concept.base_class.published)
|
60
|
+
when 'collection'
|
61
|
+
scope = scope.includes(:owner).merge(Iqvoc::Collection.base_class.published)
|
56
62
|
end
|
57
63
|
|
64
|
+
scope = yield(scope) if block_given?
|
58
65
|
scope.map { |result| SearchResult.new(result) }
|
59
66
|
end
|
60
67
|
|
@@ -6,10 +6,8 @@
|
|
6
6
|
<fieldset id="label_base_data">
|
7
7
|
<legend><%= t("txt.common.attributes") %></legend>
|
8
8
|
<%= f.text_field :value %>
|
9
|
-
|
10
|
-
|
11
|
-
<%= f.hidden_field :language %>
|
12
|
-
<% end %>
|
9
|
+
|
10
|
+
<%= f.select :language, Iqvoc.all_languages %>
|
13
11
|
|
14
12
|
<% if Iqvoc::XLLabel.has_additional_base_data %>
|
15
13
|
<%= render 'partials/label/additional_base_data', :f => f %>
|
@@ -6,7 +6,8 @@
|
|
6
6
|
<%= sidebar_item :icon => 'share', :text => 'RDF/XML', :path => rdf_url(label.origin, :format => :rdf, :published => published_param, :lang => nil), :id => 'rdf_link_xml' %>
|
7
7
|
<%= sidebar_item :icon => 'share', :text => 'RDF/Turtle', :path => rdf_url(label.origin, :format => :ttl, :published => published_param, :lang => nil), :id => 'rdf_link_ttl' %>
|
8
8
|
<%= sidebar_item :icon => 'share', :text => 'RDF/NTriples', :path => rdf_url(label.origin, :format => :nt, :published => published_param, :lang => nil), :id => 'rdf_link_nt' %>
|
9
|
+
|
9
10
|
<%= sidebar_header 'Links' %>
|
10
|
-
|
11
|
+
<%= sidebar_item :icon => 'link', :text => t('txt.models.label.uri'), :path => rdf_url(label.origin, :format => nil, :published => published_param, :lang => nil) %>
|
11
12
|
<%= render Iqvoc::XLLabel.base_class.new_link_partial_name %>
|
12
13
|
<% end %>
|
@@ -30,7 +30,7 @@
|
|
30
30
|
label_path(:published => 0, :id => @label.origin),
|
31
31
|
:method => :delete,
|
32
32
|
:confirm => I18n.t("txt.views.versioning.delete_confirm"),
|
33
|
-
:class => 'btn btn-
|
33
|
+
:class => 'btn btn-danger' %>
|
34
34
|
<% else %>
|
35
35
|
<%= button_to t("txt.views.versioning.unlock"),
|
36
36
|
label_versions_unlock_path(:origin => @label.origin),
|
@@ -1,7 +1,11 @@
|
|
1
1
|
<div class="relation panel">
|
2
2
|
<h2><%= klass.model_name.human(:count => 2) %></h2>
|
3
3
|
<div class="relation-body">
|
4
|
-
|
4
|
+
<%-
|
5
|
+
items = label.related_labels_for_relation_class(klass)
|
6
|
+
items = items.select { |item| can?(:read, item) }
|
7
|
+
-%>
|
8
|
+
<%= item_listing(items) do |label|
|
5
9
|
link_to label.value, label_path(:id => label)
|
6
10
|
end
|
7
11
|
%>
|
@@ -1,5 +1 @@
|
|
1
|
-
|
2
|
-
<%= icon(:edit) %> <%= t("txt.views.labels.new") %> (<% Iqvoc::Concept::labeling_class_names.values.flatten.map(&:to_s).uniq.each do |language| %>
|
3
|
-
<%= link_to language.to_s, new_label_path(:published => 0, :language => language), :class => 'inline-language-selector' %>
|
4
|
-
<% end %>)
|
5
|
-
</span>
|
1
|
+
<%= sidebar_item :icon => 'edit', :text => t('txt.views.labels.new'), :path => new_label_path(published: 0) %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<% if label = result.result_object %>
|
2
|
+
<li class="search-result" data-rdf-namespace="<%= result.rdf_namespace %>" data-rdf-value="<%= result.value %>" data-rdf-language="<%= result.language %>">
|
3
|
+
<%= link_to_object(label, result.value, :class => 'search-result-link') %>
|
4
|
+
<dl class="search-result-meta">
|
5
|
+
<dt class="search-result-key"><%= t('txt.views.search_results.type') %></dt>
|
6
|
+
<dd class="search-result-value" data-key="<%= t('txt.views.search_results.type') %>"><%= result.model_name.human %></dd>
|
7
|
+
<% if result.language %>
|
8
|
+
<dt class="search-result-key"><%= t('txt.views.search_results.language') %></dt>
|
9
|
+
<dd class="search-result-value" data-key="<%= t('txt.views.search_results.language') %>"><%= result.language %></dd>
|
10
|
+
<% end %>
|
11
|
+
</dl>
|
12
|
+
</li>
|
13
|
+
<% end %>
|
@@ -2,16 +2,24 @@
|
|
2
2
|
<% if defined?(concept) %>
|
3
3
|
<h2><%= klass.model_name.human(:count => 2) %> <small><%= "#{t("languages.#{lang}", :default => lang.to_s)}" %></small></h2>
|
4
4
|
<div class="relation-body">
|
5
|
-
|
6
|
-
|
5
|
+
<%-
|
6
|
+
items = concept.labels_for_labeling_class_and_language(klass, lang.to_s)
|
7
|
+
items = items.select { |item| can?(:read, item) }
|
8
|
+
-%>
|
9
|
+
<%= item_listing(items) do |label|
|
10
|
+
link_to label.value, label_path(:id => label), class: label.published? ? '' : 'unpublished'
|
7
11
|
end
|
8
12
|
%>
|
9
13
|
</div>
|
10
14
|
<% elsif defined?(label) %>
|
11
15
|
<h2><%= klass.model_name.human %> <%= t("txt.common.of") %></h2>
|
12
16
|
<div class="relation-body">
|
13
|
-
|
14
|
-
|
17
|
+
<%-
|
18
|
+
items = label.concepts_for_labeling_class(klass)
|
19
|
+
items = items.select { |item| can?(:read, item) }
|
20
|
+
-%>
|
21
|
+
<%= item_listing(items) do |c|
|
22
|
+
link_to c.to_s, concept_path(:id => c), class: c.published? ? '' : 'unpublished'
|
15
23
|
end
|
16
24
|
%>
|
17
25
|
</div>
|
data/config/database.yml
CHANGED
@@ -1,36 +1,20 @@
|
|
1
|
-
<% socket = [
|
2
|
-
"/tmp/mysql.sock",
|
3
|
-
"/opt/local/var/run/mysql5/mysqld.sock",
|
4
|
-
"/tmp/mysqld.sock",
|
5
|
-
"/var/run/mysqld.sock"
|
6
|
-
].detect { |socket| File.exist?(socket) } %>
|
7
|
-
|
8
|
-
defaults: &defaults
|
9
|
-
encoding: utf8
|
10
|
-
username: root
|
11
|
-
password:
|
12
|
-
<% if defined?(JRuby) %>
|
13
|
-
adapter: jdbcmysql
|
14
|
-
hostname: localhost
|
15
|
-
<% else %>
|
16
|
-
adapter: mysql2
|
17
|
-
socket: <%= socket %>
|
18
|
-
<% end %>
|
19
|
-
|
20
1
|
development:
|
21
|
-
|
2
|
+
adapter: mysql2
|
22
3
|
database: iqvoc_skosxl_development
|
4
|
+
username: root
|
5
|
+
password:
|
6
|
+
encoding: utf8
|
23
7
|
|
24
|
-
# Warning: The database defined as 'test' will be erased and
|
25
|
-
# re-generated from your development database when you run 'rake'.
|
26
|
-
# Do not set this db to the same as development or production.
|
27
8
|
test:
|
28
|
-
|
9
|
+
adapter: mysql2
|
29
10
|
database: iqvoc_skosxl_test
|
11
|
+
username: root
|
12
|
+
password:
|
13
|
+
encoding: utf8
|
30
14
|
|
31
15
|
production:
|
16
|
+
adapter: mysql2
|
17
|
+
database: iqvoc_skosxl_production
|
18
|
+
username: root
|
19
|
+
password:
|
32
20
|
encoding: utf8
|
33
|
-
username: iqvoc_skosxl
|
34
|
-
password:
|
35
|
-
database: iqvoc_skosxl
|
36
|
-
adapter: oracle_enhanced
|
@@ -0,0 +1,23 @@
|
|
1
|
+
development:
|
2
|
+
adapter: postgresql
|
3
|
+
encoding: unicode
|
4
|
+
database: iqvoc_skosxl_development
|
5
|
+
pool: 5
|
6
|
+
username: postgres
|
7
|
+
password:
|
8
|
+
|
9
|
+
test:
|
10
|
+
adapter: postgresql
|
11
|
+
encoding: unicode
|
12
|
+
database: iqvoc_skosxl_test
|
13
|
+
pool: 5
|
14
|
+
username: postgres
|
15
|
+
password:
|
16
|
+
|
17
|
+
production:
|
18
|
+
adapter: postgresql
|
19
|
+
encoding: unicode
|
20
|
+
database: iqvoc_skosxl_production
|
21
|
+
pool: 5
|
22
|
+
username: postgres
|
23
|
+
password:
|
data/config/locales/de.yml
CHANGED
data/config/locales/en.yml
CHANGED
data/db/schema.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
14
|
+
ActiveRecord::Schema.define(version: 20150414083600) do
|
15
15
|
|
16
16
|
create_table "collection_members", force: :cascade do |t|
|
17
17
|
t.integer "collection_id", limit: 4
|
@@ -20,7 +20,7 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
add_index "collection_members", ["collection_id", "target_id", "type"], name: "ix_collections_fk_type", using: :btree
|
23
|
-
add_index "collection_members", ["target_id"], name: "
|
23
|
+
add_index "collection_members", ["target_id"], name: "fk_rails_ca5b83d3a1", using: :btree
|
24
24
|
|
25
25
|
create_table "concept_relations", force: :cascade do |t|
|
26
26
|
t.string "type", limit: 255
|
@@ -32,7 +32,7 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
add_index "concept_relations", ["owner_id", "target_id"], name: "ix_concept_relations_fk", using: :btree
|
35
|
-
add_index "concept_relations", ["target_id"], name: "
|
35
|
+
add_index "concept_relations", ["target_id"], name: "fk_rails_b9505863fe", using: :btree
|
36
36
|
|
37
37
|
create_table "concepts", force: :cascade do |t|
|
38
38
|
t.string "type", limit: 255
|
@@ -50,7 +50,7 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
50
50
|
t.boolean "top_term", limit: 1, default: false
|
51
51
|
end
|
52
52
|
|
53
|
-
add_index "concepts", ["locked_by"], name: "
|
53
|
+
add_index "concepts", ["locked_by"], name: "fk_rails_c1c63f3716", using: :btree
|
54
54
|
add_index "concepts", ["origin"], name: "ix_concepts_on_origin", length: {"origin"=>255}, using: :btree
|
55
55
|
add_index "concepts", ["published_version_id"], name: "ix_concepts_publ_version_id", using: :btree
|
56
56
|
|
@@ -60,20 +60,28 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
create_table "delayed_jobs", force: :cascade do |t|
|
63
|
-
t.integer "priority",
|
64
|
-
t.integer "attempts",
|
65
|
-
t.text "handler",
|
66
|
-
t.text "last_error",
|
63
|
+
t.integer "priority", limit: 4, default: 0, null: false
|
64
|
+
t.integer "attempts", limit: 4, default: 0, null: false
|
65
|
+
t.text "handler", limit: 65535, null: false
|
66
|
+
t.text "last_error", limit: 65535
|
67
67
|
t.datetime "run_at"
|
68
68
|
t.datetime "locked_at"
|
69
69
|
t.datetime "failed_at"
|
70
|
-
t.string "locked_by",
|
71
|
-
t.string "queue",
|
70
|
+
t.string "locked_by", limit: 255
|
71
|
+
t.string "queue", limit: 255
|
72
72
|
t.datetime "created_at"
|
73
73
|
t.datetime "updated_at"
|
74
|
+
t.string "error_message", limit: 255
|
75
|
+
t.string "delayed_reference_type", limit: 255
|
76
|
+
t.integer "delayed_reference_id", limit: 4
|
77
|
+
t.string "delayed_global_reference_id", limit: 255
|
74
78
|
end
|
75
79
|
|
80
|
+
add_index "delayed_jobs", ["delayed_global_reference_id"], name: "delayed_jobs_delayed_global_reference_id", using: :btree
|
81
|
+
add_index "delayed_jobs", ["delayed_reference_id"], name: "delayed_jobs_delayed_reference_id", using: :btree
|
82
|
+
add_index "delayed_jobs", ["delayed_reference_type"], name: "delayed_jobs_delayed_reference_type", using: :btree
|
76
83
|
add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority", using: :btree
|
84
|
+
add_index "delayed_jobs", ["queue"], name: "delayed_jobs_queue", using: :btree
|
77
85
|
|
78
86
|
create_table "exports", force: :cascade do |t|
|
79
87
|
t.integer "user_id", limit: 4
|
@@ -103,15 +111,6 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
103
111
|
|
104
112
|
add_index "imports", ["user_id"], name: "index_imports_on_user_id", using: :btree
|
105
113
|
|
106
|
-
create_table "job_relations", force: :cascade do |t|
|
107
|
-
t.string "type", limit: 255
|
108
|
-
t.string "owner_reference", limit: 255
|
109
|
-
t.string "job_id", limit: 255
|
110
|
-
t.datetime "created_at"
|
111
|
-
t.datetime "updated_at"
|
112
|
-
t.string "response_error", limit: 255
|
113
|
-
end
|
114
|
-
|
115
114
|
create_table "label_relations", force: :cascade do |t|
|
116
115
|
t.string "type", limit: 255
|
117
116
|
t.integer "domain_id", limit: 4
|
@@ -121,7 +120,7 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
121
120
|
end
|
122
121
|
|
123
122
|
add_index "label_relations", ["domain_id", "range_id", "type"], name: "ix_label_rel_dom_rng_type", using: :btree
|
124
|
-
add_index "label_relations", ["range_id"], name: "
|
123
|
+
add_index "label_relations", ["range_id"], name: "fk_rails_bb6dbc5289", using: :btree
|
125
124
|
add_index "label_relations", ["type"], name: "ix_label_relations_on_type", using: :btree
|
126
125
|
|
127
126
|
create_table "labelings", force: :cascade do |t|
|
@@ -133,7 +132,7 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
133
132
|
end
|
134
133
|
|
135
134
|
add_index "labelings", ["owner_id", "target_id", "type"], name: "ix_labelings_fk_type", using: :btree
|
136
|
-
add_index "labelings", ["target_id"], name: "
|
135
|
+
add_index "labelings", ["target_id"], name: "fk_rails_51629a50d5", using: :btree
|
137
136
|
add_index "labelings", ["type"], name: "ix_labelings_on_type", using: :btree
|
138
137
|
|
139
138
|
create_table "labels", force: :cascade do |t|
|
@@ -143,9 +142,9 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
143
142
|
t.string "value", limit: 1024
|
144
143
|
t.datetime "created_at"
|
145
144
|
t.datetime "updated_at"
|
146
|
-
t.date "published_at"
|
147
145
|
t.integer "rev", limit: 4, default: 1
|
148
146
|
t.integer "published_version_id", limit: 4
|
147
|
+
t.date "published_at"
|
149
148
|
t.integer "locked_by", limit: 4
|
150
149
|
t.date "expired_at"
|
151
150
|
t.date "follow_up"
|
@@ -156,7 +155,6 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
156
155
|
add_index "labels", ["language"], name: "ix_labels_on_language", using: :btree
|
157
156
|
add_index "labels", ["origin"], name: "ix_labels_on_origin", length: {"origin"=>255}, using: :btree
|
158
157
|
add_index "labels", ["published_version_id"], name: "ix_labels_on_published_v", using: :btree
|
159
|
-
add_index "labels", ["value"], name: "ix_labels_on_value", length: {"value"=>255}, using: :btree
|
160
158
|
|
161
159
|
create_table "matches", force: :cascade do |t|
|
162
160
|
t.integer "concept_id", limit: 4
|
@@ -216,7 +214,7 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
216
214
|
t.string "perishable_token", limit: 255
|
217
215
|
t.string "role", limit: 255
|
218
216
|
t.string "telephone_number", limit: 255
|
219
|
-
t.string "type", limit: 255
|
217
|
+
t.string "type", limit: 255, default: "User"
|
220
218
|
end
|
221
219
|
|
222
220
|
add_foreign_key "collection_members", "concepts", column: "collection_id", on_update: :cascade
|
@@ -230,8 +228,6 @@ ActiveRecord::Schema.define(version: 20150108154312) do
|
|
230
228
|
add_foreign_key "label_relations", "labels", column: "range_id", on_update: :cascade, on_delete: :cascade
|
231
229
|
add_foreign_key "labelings", "concepts", column: "owner_id", on_update: :cascade
|
232
230
|
add_foreign_key "labelings", "labels", column: "target_id", on_update: :cascade, on_delete: :cascade
|
233
|
-
add_foreign_key "labels", "labels", column: "published_version_id", on_update: :cascade, on_delete: :cascade
|
234
|
-
add_foreign_key "labels", "labels", column: "published_version_id", on_update: :cascade, on_delete: :cascade
|
235
231
|
add_foreign_key "matches", "concepts", on_update: :cascade, on_delete: :cascade
|
236
232
|
add_foreign_key "notations", "concepts", on_update: :cascade
|
237
233
|
add_foreign_key "note_annotations", "notes", on_update: :cascade, on_delete: :cascade
|
data/iqvoc_skosxl.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.license = 'Apache License 2.0'
|
14
14
|
s.description = 'iQvoc - a SKOS(-XL) vocabulary management system built on the Semantic Web'
|
15
15
|
|
16
|
-
s.add_dependency 'iqvoc', '>= 4.8.0', '~> 4.
|
16
|
+
s.add_dependency 'iqvoc', '>= 4.8.0', '~> 4.9'
|
17
17
|
s.add_development_dependency 'bundler', '~> 1.6'
|
18
18
|
|
19
19
|
s.files = %w(README.md Gemfile Gemfile.lock Rakefile iqvoc_skosxl.gemspec) +
|
data/lib/iqvoc/skosxl/version.rb
CHANGED
data/lib/iqvoc_skosxl.rb
CHANGED
@@ -21,6 +21,7 @@ module IqvocSKOSXL
|
|
21
21
|
|
22
22
|
Iqvoc::Concept.include_module_names << 'Concept::SKOSXL::Extension'
|
23
23
|
Iqvoc::Concept.pref_labeling_class_name = 'Labeling::SKOSXL::PrefLabel'
|
24
|
+
Iqvoc::Concept.alt_labeling_class_name = 'Labeling::SKOSXL::AltLabel'
|
24
25
|
|
25
26
|
# TODO
|
26
27
|
# Iqvoc.searchable_class_names = Iqvoc::Concept.labeling_class_names.keys +
|
@@ -36,7 +36,7 @@ class DashboardTest < ActionDispatch::IntegrationTest
|
|
36
36
|
login('administrator')
|
37
37
|
|
38
38
|
visit dashboard_path(lang: 'de', format: 'html')
|
39
|
-
click_link_or_button('
|
39
|
+
click_link_or_button('Neues Label')
|
40
40
|
assert_equal new_label_path(lang: 'de', format: 'html'), current_path
|
41
41
|
end
|
42
42
|
end
|
@@ -29,6 +29,18 @@ class LabelCreationTest < ActionDispatch::IntegrationTest
|
|
29
29
|
assert page.has_content? 'Das Label wurde erstellt.'
|
30
30
|
click_link_or_button 'Konsistenz prüfen'
|
31
31
|
assert page.has_content? 'Instanz ist konsistent.'
|
32
|
+
click_link_or_button 'Veröffentlichen'
|
33
|
+
assert page.has_content? 'Instanz wurde erfolgreich veröffentlicht.'
|
34
|
+
assert page.has_content? 'Testlabel'
|
35
|
+
|
36
|
+
# modify created version
|
37
|
+
click_link_or_button 'Neue Version erstellen'
|
38
|
+
fill_in 'Vorlageform', with: 'Testlabel_modified'
|
39
|
+
click_link_or_button 'Speichern'
|
40
|
+
assert page.has_content? 'Das Label wurde aktualisiert.'
|
41
|
+
assert page.has_content? 'Testlabel_modified'
|
42
|
+
click_link_or_button 'Veröffentlichen'
|
43
|
+
assert page.has_content? 'Instanz wurde erfolgreich veröffentlicht.'
|
32
44
|
end
|
33
45
|
|
34
46
|
test 'inconsistent label creation' do
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), '../test_helper')
|
4
|
+
|
5
|
+
class ConceptTest < ActiveSupport::TestCase
|
6
|
+
setup do
|
7
|
+
end
|
8
|
+
|
9
|
+
test 'exclusive pref label' do
|
10
|
+
monkey = RDFAPI.devour 'Monkey', 'a', 'skos:Concept'
|
11
|
+
monkey_label = Iqvoc::XLLabel.base_class.create(
|
12
|
+
language: 'en', value: 'Monkey', published_at: 3.days.ago)
|
13
|
+
|
14
|
+
monkey.pref_labels << monkey_label
|
15
|
+
assert monkey.save
|
16
|
+
assert monkey.publishable?
|
17
|
+
|
18
|
+
monkey.alt_labels << monkey_label
|
19
|
+
assert monkey.save
|
20
|
+
refute monkey.publishable?, 'There should be no duplicates between prefLabel/altLabel'
|
21
|
+
end
|
22
|
+
|
23
|
+
test 'unique alt labels' do
|
24
|
+
tiger = RDFAPI.devour 'Tiger', 'a', 'skos:Concept'
|
25
|
+
tiger_label = Iqvoc::XLLabel.base_class.create(
|
26
|
+
language: 'en', value: 'Tiger', published_at: 3.days.ago)
|
27
|
+
tiger_alt_label = Iqvoc::XLLabel.base_class.create(
|
28
|
+
language: 'en', value: 'Big Cat', published_at: 3.days.ago)
|
29
|
+
|
30
|
+
tiger.pref_labels << tiger_label
|
31
|
+
tiger.alt_labels << tiger_alt_label
|
32
|
+
assert tiger.save
|
33
|
+
assert tiger.publishable?
|
34
|
+
|
35
|
+
tiger.alt_labels << tiger_alt_label
|
36
|
+
assert tiger.save
|
37
|
+
refute tiger.publishable?, 'There should be no identical alt labels'
|
38
|
+
end
|
39
|
+
|
40
|
+
test 'concepts alt label language change' do
|
41
|
+
dog = RDFAPI.devour 'Dog', 'a', 'skos:Concept'
|
42
|
+
dog.pref_labels << Iqvoc::XLLabel.base_class.create(
|
43
|
+
language: 'en', value: 'Dog', published_at: 3.days.ago)
|
44
|
+
dog.alt_labels << Iqvoc::XLLabel.base_class.create(
|
45
|
+
language: 'en', value: 'Hound', published_at: 3.days.ago)
|
46
|
+
|
47
|
+
assert dog.save
|
48
|
+
assert dog.publish
|
49
|
+
|
50
|
+
alt_label = dog.alt_labels.first
|
51
|
+
assert_equal 'Hound', alt_label.value
|
52
|
+
assert_equal 'en', alt_label.language
|
53
|
+
|
54
|
+
# should be publishable with a german alt label
|
55
|
+
alt_label.value = 'Jagdhund'
|
56
|
+
alt_label.language = 'de'
|
57
|
+
assert alt_label.save
|
58
|
+
assert alt_label.publishable?
|
59
|
+
end
|
60
|
+
|
61
|
+
test 'concepts pref label language change' do
|
62
|
+
dog = RDFAPI.devour 'Dog', 'a', 'skos:Concept'
|
63
|
+
refute dog.publishable?
|
64
|
+
dog.pref_labels << Iqvoc::XLLabel.base_class.create(
|
65
|
+
language: 'en', value: 'Dog', published_at: 3.days.ago)
|
66
|
+
|
67
|
+
assert dog.save!
|
68
|
+
assert dog.publishable?
|
69
|
+
assert dog.publish!
|
70
|
+
pref_label = dog.pref_label
|
71
|
+
assert_equal 'Dog', pref_label.value
|
72
|
+
assert_equal 'en', pref_label.language
|
73
|
+
|
74
|
+
# should not be publishable with an german prefLabel
|
75
|
+
pref_label.value = 'Hund'
|
76
|
+
pref_label.language = 'de'
|
77
|
+
assert pref_label.save!
|
78
|
+
refute pref_label.publishable?, 'Label should not be publishable (no english pref Label)'
|
79
|
+
|
80
|
+
# no problem with a english prefLabel
|
81
|
+
pref_label.value = 'Dog'
|
82
|
+
pref_label.language = 'en'
|
83
|
+
assert pref_label.save!
|
84
|
+
assert pref_label.publishable?, 'Label should not be publishable (no english pref Label)'
|
85
|
+
end
|
86
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iqvoc_skosxl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Glaser
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-11-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: iqvoc
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 4.8.0
|
22
22
|
- - "~>"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '4.
|
24
|
+
version: '4.9'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
version: 4.8.0
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '4.
|
34
|
+
version: '4.9'
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: bundler
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- app/views/partials/label/relation/_edit_base.html.erb
|
93
93
|
- app/views/partials/label/skosxl/_edit_link_base.html.erb
|
94
94
|
- app/views/partials/label/skosxl/_new_link_base.html.erb
|
95
|
+
- app/views/partials/label/skosxl/_search_result.html.erb
|
95
96
|
- app/views/partials/labeling/skosxl/_base.html.erb
|
96
97
|
- app/views/partials/labeling/skosxl/_edit_base.html.erb
|
97
98
|
- app/views/partials/labeling/skosxl/_search_result.html.erb
|
@@ -101,6 +102,7 @@ files:
|
|
101
102
|
- config/database.template.yml
|
102
103
|
- config/database.yml
|
103
104
|
- config/database.yml.mysql
|
105
|
+
- config/database.yml.postgresql
|
104
106
|
- config/database.yml.sqlite
|
105
107
|
- config/engine.rb
|
106
108
|
- config/environment.rb
|
@@ -125,6 +127,7 @@ files:
|
|
125
127
|
- db/migrate/20110408121540_extend_label.rb
|
126
128
|
- db/migrate/20110408123644_add_label_relations.rb
|
127
129
|
- db/migrate/20150108154312_add_fk_contraints_iqvoc_skosxl.rb
|
130
|
+
- db/migrate/20150414083600_remove_fk_constraints_iqvoc_skosxl.rb
|
128
131
|
- db/schema.rb
|
129
132
|
- db/seeds.rb
|
130
133
|
- iqvoc_skosxl.gemspec
|
@@ -140,6 +143,7 @@ files:
|
|
140
143
|
- test/integration/label_creation_test.rb
|
141
144
|
- test/integration/labels_order_test.rb
|
142
145
|
- test/integration_test_helper.rb
|
146
|
+
- test/models/concept_test.rb
|
143
147
|
- test/models/label_test.rb
|
144
148
|
- test/models/skos_importer_test.rb
|
145
149
|
- test/test_helper.rb
|
@@ -163,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
167
|
version: '0'
|
164
168
|
requirements: []
|
165
169
|
rubyforge_project:
|
166
|
-
rubygems_version: 2.4.5
|
170
|
+
rubygems_version: 2.4.5.1
|
167
171
|
signing_key:
|
168
172
|
specification_version: 4
|
169
173
|
summary: iQvoc SKOS-XL extension
|
@@ -176,6 +180,7 @@ test_files:
|
|
176
180
|
- test/integration/label_creation_test.rb
|
177
181
|
- test/integration/labels_order_test.rb
|
178
182
|
- test/integration_test_helper.rb
|
183
|
+
- test/models/concept_test.rb
|
179
184
|
- test/models/label_test.rb
|
180
185
|
- test/models/skos_importer_test.rb
|
181
186
|
- test/test_helper.rb
|