ld4l_virtual_collection 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +34 -0
- data/.travis.yml +14 -0
- data/CHANGES.md +12 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +14 -0
- data/README.md +128 -0
- data/Rakefile +34 -0
- data/app/assets/images/ld4l_virtual_collection/loading_spinner.gif +0 -0
- data/app/assets/javascripts/ld4l_virtual_collection/application.js +19 -0
- data/app/assets/javascripts/ld4l_virtual_collection/collections.js +2 -0
- data/app/assets/javascripts/ld4l_virtual_collection/items.js +2 -0
- data/app/assets/stylesheets/ld4l_virtual_collection/_bootstrap-custom.scss +50 -0
- data/app/assets/stylesheets/ld4l_virtual_collection/application.css.scss +22 -0
- data/app/assets/stylesheets/ld4l_virtual_collection/collections.css.scss +4 -0
- data/app/assets/stylesheets/ld4l_virtual_collection/items.css.scss +4 -0
- data/app/assets/stylesheets/ld4l_virtual_collection/my_virtual_collections.css.scss +4 -0
- data/app/assets/stylesheets/scaffold.css +56 -0
- data/app/controllers/ld4l_virtual_collection/application_controller.rb +9 -0
- data/app/controllers/ld4l_virtual_collection/collections_controller.rb +101 -0
- data/app/controllers/ld4l_virtual_collection/items_controller.rb +94 -0
- data/app/controllers/ld4l_virtual_collection/my_virtual_collections_controller.rb +189 -0
- data/app/controllers/ld4l_virtual_collection/notes_controller.rb +84 -0
- data/app/controllers/ld4l_virtual_collection/tags_controller.rb +105 -0
- data/app/helpers/ld4l_virtual_collection/application_helper.rb +4 -0
- data/app/helpers/ld4l_virtual_collection/collections_helper.rb +4 -0
- data/app/helpers/ld4l_virtual_collection/items_helper.rb +4 -0
- data/app/models/ld4l_virtual_collection/collection.rb +47 -0
- data/app/models/ld4l_virtual_collection/item.rb +50 -0
- data/app/models/ld4l_virtual_collection/note.rb +52 -0
- data/app/models/ld4l_virtual_collection/tag.rb +94 -0
- data/app/views/layouts/ld4l_virtual_collection/application.html.erb +14 -0
- data/app/views/ld4l_virtual_collection/collections/_form.html.erb +28 -0
- data/app/views/ld4l_virtual_collection/collections/edit.html.erb +13 -0
- data/app/views/ld4l_virtual_collection/collections/index.html.erb +30 -0
- data/app/views/ld4l_virtual_collection/collections/new.html.erb +12 -0
- data/app/views/ld4l_virtual_collection/collections/show.html.erb +43 -0
- data/app/views/ld4l_virtual_collection/items/_collection_info.html.erb +14 -0
- data/app/views/ld4l_virtual_collection/items/_form.html.erb +25 -0
- data/app/views/ld4l_virtual_collection/items/edit.html.erb +14 -0
- data/app/views/ld4l_virtual_collection/items/index.html.erb +24 -0
- data/app/views/ld4l_virtual_collection/items/new.html.erb +14 -0
- data/app/views/ld4l_virtual_collection/items/show.html.erb +23 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_collection_lists.html.erb +82 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_edit_collection_modal.html.erb +20 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_form_collection.html.erb +51 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_form_collection_item.html.erb +48 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_form_collection_items_query.html.erb +37 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_form_item_note.html.erb +31 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_form_item_tag.html.erb +30 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_modals.html.erb +8 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_new_collection_item_modal.html.erb +20 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_new_collection_items_by_query_modal.html.erb +20 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_new_collection_modal.html.erb +20 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_selected_collection_header.html.erb +17 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_selected_collection_items.html.erb +121 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/_selected_collection_range.html.erb +44 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/edit_collection_modal.js.erb +1 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/index.html.erb +4 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/new_collection_item_modal.js.erb +1 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/new_collection_items_by_query_modal.js.erb +1 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/new_collection_modal.js.erb +1 -0
- data/app/views/ld4l_virtual_collection/my_virtual_collections/show.html.erb +14 -0
- data/bin/rails +12 -0
- data/config/routes.rb +16 -0
- data/ld4l_virtual_collection.gemspec +50 -0
- data/lib/ld4l_virtual_collection.rb +34 -0
- data/lib/ld4l_virtual_collection/configuration.rb +86 -0
- data/lib/ld4l_virtual_collection/engine.rb +23 -0
- data/lib/ld4l_virtual_collection/version.rb +3 -0
- data/lib/tasks/ld4l_virtual_collection_tasks.rake +4 -0
- data/test/controllers/ld4l_virtual_collection/collections_controller_test.rb +51 -0
- data/test/controllers/ld4l_virtual_collection/items_controller_test.rb +51 -0
- data/test/controllers/ld4l_virtual_collection/my_virtual_collections_controller_test.rb +51 -0
- data/test/controllers/ld4l_virtual_collection/virtual_collections_controller_test.rb +51 -0
- data/test/dummy/Gemfile +20 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/images/.keep +0 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/controllers/concerns/.keep +0 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/mailers/.keep +0 -0
- data/test/dummy/app/models/.keep +0 -0
- data/test/dummy/app/models/concerns/.keep +0 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +78 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/rdf_repositories.rb +32 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/lib/assets/.keep +0 -0
- data/test/dummy/log/.keep +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/fixtures/ld4l_virtual_collection/collections.yml +11 -0
- data/test/fixtures/ld4l_virtual_collection/items.yml +11 -0
- data/test/fixtures/ld4l_virtual_collection/my_virtual_collections.yml +11 -0
- data/test/fixtures/ld4l_virtual_collection/virtual_collections.yml +9 -0
- data/test/helpers/ld4l_virtual_collection/collections_helper_test.rb +6 -0
- data/test/helpers/ld4l_virtual_collection/items_helper_test.rb +6 -0
- data/test/helpers/ld4l_virtual_collection/my_virtual_collections_helper_test.rb +6 -0
- data/test/helpers/ld4l_virtual_collection/virtual_collections_helper_test.rb +6 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/ld4l_virtual_collection_test.rb +7 -0
- data/test/models/ld4l_virtual_collection/collection_test.rb +9 -0
- data/test/models/ld4l_virtual_collection/item_test.rb +9 -0
- data/test/models/ld4l_virtual_collection/my_virtual_collection_test.rb +9 -0
- data/test/models/ld4l_virtual_collection/virtual_collection_test.rb +9 -0
- data/test/test_helper.rb +17 -0
- metadata +544 -0
@@ -0,0 +1,105 @@
|
|
1
|
+
require_dependency "ld4l_virtual_collection/application_controller"
|
2
|
+
|
3
|
+
module Ld4lVirtualCollection
|
4
|
+
class TagsController < ApplicationController
|
5
|
+
before_action :set_collection_and_item, only: [:new, :create, :index]
|
6
|
+
before_action :set_item, only: [:manage_all]
|
7
|
+
before_action :set_tag, only: [:show, :edit, :update, :destroy]
|
8
|
+
|
9
|
+
# GET /collections/1/tags
|
10
|
+
# GET /collections/1/items/1/tags
|
11
|
+
def index
|
12
|
+
@tags = Tag.all(@collection,@item)
|
13
|
+
end
|
14
|
+
|
15
|
+
# GET /tags/1
|
16
|
+
def show
|
17
|
+
end
|
18
|
+
|
19
|
+
# GET /collections/1/tags/new
|
20
|
+
# GET /collections/1/items/1/tags/new
|
21
|
+
def new
|
22
|
+
# puts("*** Entering CTRL: new tag")
|
23
|
+
@tag = Tag.new(@collection,@item)
|
24
|
+
end
|
25
|
+
|
26
|
+
# GET /tags/1/edit
|
27
|
+
def edit
|
28
|
+
# puts("*** Entering CTRL: edit tag")
|
29
|
+
end
|
30
|
+
|
31
|
+
# POST /collections/1/items/1/tags
|
32
|
+
def create
|
33
|
+
# puts("*** Entering CTRL: create tag")
|
34
|
+
@tag = Tag.new(@item, tag_params)
|
35
|
+
# TODO: Any error checking that the ones to delete are deleted and the ones to add are added?
|
36
|
+
if @tag.persist! == true
|
37
|
+
redirect_to my_virtual_collection_path(@collection.id.to_s), notice: 'Tag was successfully created.'
|
38
|
+
else
|
39
|
+
# TODO How to add error message about what failed to persist???
|
40
|
+
render :new
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# PATCH/PUT /item/1/tags
|
45
|
+
def manage_all
|
46
|
+
# puts("*** Entering CTRL: manage_all tag")
|
47
|
+
@tags = Tag.update_all(@item, tag_params)
|
48
|
+
@tags[:delete_list].each { |t| t.destroy! }
|
49
|
+
@tags[:add_list].each { |t| t.persist! }
|
50
|
+
# TODO: Any error checking that the ones to delete are deleted and the ones to add are added?
|
51
|
+
# if @tag.persist! == true
|
52
|
+
redirect_to my_virtual_collection_path(tag_params[:collection_id]), notice: 'Tags were successfully set.'
|
53
|
+
# else
|
54
|
+
# # TODO How to add error message about what failed to persist???
|
55
|
+
# render :new
|
56
|
+
# end
|
57
|
+
end
|
58
|
+
|
59
|
+
# PATCH/PUT /tags/1
|
60
|
+
def update
|
61
|
+
# puts("*** Entering CTRL: update tag")
|
62
|
+
@tag = Tag.update(@tag, tag_params)
|
63
|
+
if @tag.persist! == true
|
64
|
+
redirect_to my_virtual_collection_path(@collection.id.to_s), notice: 'Tag were successfully updated.'
|
65
|
+
else
|
66
|
+
# TODO How to add error message about what failed to persist???
|
67
|
+
render :edit
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# DELETE /tags/1
|
72
|
+
def destroy
|
73
|
+
# puts("*** Entering CTRL: destroy tag")
|
74
|
+
@tag.destroy
|
75
|
+
# if LD4L::OreRDF::DestroyProxy.call(@collection,@item.rdf_subject) == true
|
76
|
+
redirect_to my_virtual_collection_path(@collection.id.to_s), notice: 'Tag was successfully removed.'
|
77
|
+
# else
|
78
|
+
# # TODO Should it redirect to edit??? OR list??? OR where???
|
79
|
+
# # TODO How to add error message about what failed to be destroyed???
|
80
|
+
# render :edit
|
81
|
+
# end
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
# Use callbacks to share common setup or constraints between actions.
|
86
|
+
def set_tag
|
87
|
+
@tag = Tag.find(params[:id])
|
88
|
+
end
|
89
|
+
|
90
|
+
# Only allow a trusted parameter "white list" through.
|
91
|
+
def tag_params
|
92
|
+
params[:tag]
|
93
|
+
end
|
94
|
+
|
95
|
+
def set_collection_and_item
|
96
|
+
@collection = Collection.find(tag_params["collection_id"])
|
97
|
+
@item = Item.find(tag_params["item_id"])
|
98
|
+
@proxy_for = @item && @item.proxy_for && @item.proxy_for.first ? @item.proxy_for.first.rdf_subject : ""
|
99
|
+
end
|
100
|
+
|
101
|
+
def set_item
|
102
|
+
@item = Item.find(tag_params["item_id"])
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'ld4l/ore_rdf'
|
2
|
+
|
3
|
+
module Ld4lVirtualCollection
|
4
|
+
class Collection < ActiveRecord::Base
|
5
|
+
|
6
|
+
def self.all
|
7
|
+
LD4L::OreRDF::FindAggregations.call(
|
8
|
+
:properties => { :title => RDF::DC.title, :description => RDF::DC.description } )
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.new(*params)
|
12
|
+
Ld4lVirtualCollection::Engine.configuration.debug_logger.warn("*** Entering MODEL: new collection")
|
13
|
+
aggregation = LD4L::OreRDF::CreateAggregation.call
|
14
|
+
aggregation.title = params[0][:title] if params && params.size > 0 && params[0].has_key?('title')
|
15
|
+
aggregation.description = params[0][:description] if params && params.size > 0 && params[0].has_key?('description')
|
16
|
+
aggregation
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.update(*params)
|
20
|
+
Ld4lVirtualCollection::Engine.configuration.debug_logger.warn("*** Entering MODEL: update collection")
|
21
|
+
aggregation = LD4L::OreRDF::ResumeAggregation.call(params[0][:id])
|
22
|
+
aggregation.title = params[0][:title] if params && params.size > 0 && params[0].has_key?('title')
|
23
|
+
aggregation.description = params[0][:description] if params && params.size > 0 && params[0].has_key?('description')
|
24
|
+
aggregation
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.destroy
|
28
|
+
Ld4lVirtualCollection::Engine.configuration.debug_logger.warn("*** Entering MODEL: destroy collection")
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.find(uri)
|
32
|
+
Ld4lVirtualCollection::Engine.configuration.debug_logger.warn("*** Entering MODEL: find collection -- uri=#{uri}")
|
33
|
+
LD4L::OreRDF::ResumeAggregation.call(uri)
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.collections_for_droplist
|
37
|
+
Ld4lVirtualCollection::Engine.configuration.debug_logger.warn("*** Entering MODEL: collections_for_droplist")
|
38
|
+
full_collections = Collection.all
|
39
|
+
collections = []
|
40
|
+
full_collections.each do |id,collection|
|
41
|
+
collections << { :title => collection[:title].to_s, :id => id.to_s }
|
42
|
+
end
|
43
|
+
collections
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'ld4l/ore_rdf'
|
2
|
+
|
3
|
+
module Ld4lVirtualCollection
|
4
|
+
class Item < ActiveRecord::Base
|
5
|
+
|
6
|
+
def self.all(collection)
|
7
|
+
LD4L::OreRDF::FindProxies.call(
|
8
|
+
:aggregation => collection.id,
|
9
|
+
:properties => { :proxy_for => RDFVocabularies::ORE.proxyFor, :description => RDF::DC.description } )
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.new(collection, *params)
|
13
|
+
# puts("*** Entering MODEL: new item")
|
14
|
+
item_uri = params[0][:proxy_for].strip if params && params.size > 0 && params[0].has_key?('proxy_for')
|
15
|
+
if(item_uri && item_uri.start_with?("http://da-stg-ssolr.library.cornell.edu/solr/") )
|
16
|
+
add_items_by_query(collection, item_uri)
|
17
|
+
else
|
18
|
+
(item_uri && item_uri.size > 0) ? LD4L::OreRDF::AddAggregatedResource.call( collection, item_uri ) :
|
19
|
+
LD4L::OreRDF::ProxyResource.new
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.update(collection, item, *params)
|
24
|
+
# puts("*** Entering MODEL: update item")
|
25
|
+
item_uri = params[0][:proxy_for] if params && params.size > 0 && params[0].has_key?('proxy_for')
|
26
|
+
item.set_value('proxy_for', item_uri)
|
27
|
+
item
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.destroy(collection,item)
|
31
|
+
# puts("*** Entering MODEL: destroy item")
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.find(uri)
|
36
|
+
# puts("*** Entering MODEL: find item")
|
37
|
+
LD4L::OreRDF::ProxyResource.new(uri)
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
# TODO XXX
|
42
|
+
def self.add_items_by_query(collection, solr_query)
|
43
|
+
# puts("### Entering MODEL: add_items_by_query #{solr_query}")
|
44
|
+
metadata = LD4L::WorksRDF::GetMetadataFromSolrQuery.call(solr_query, nil)
|
45
|
+
metadata.each do |m|
|
46
|
+
LD4L::OreRDF::AddAggregatedResource.call(collection, m.uri)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Ld4lVirtualCollection
|
2
|
+
class Note < ActiveRecord::Base
|
3
|
+
|
4
|
+
def self.all(collection,item)
|
5
|
+
notes = []
|
6
|
+
item_uri = item.id
|
7
|
+
all_annotations_uris = LD4L::OpenAnnotationRDF::Annotation.find_by_target(item_uri)
|
8
|
+
all_annotations_uris.each do |uri|
|
9
|
+
anno = LD4L::OpenAnnotationRDF::Annotation.resume(uri)
|
10
|
+
notes << anno if anno.kind_of?(LD4L::OpenAnnotationRDF::CommentAnnotation)
|
11
|
+
end
|
12
|
+
notes
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.new(collection,item,*params)
|
16
|
+
# puts("*** Entering MODEL: new note")
|
17
|
+
item_uri = item.id
|
18
|
+
item_uri = RDF::URI(item_uri) unless item_uri.kind_of?(RDF::URI)
|
19
|
+
note = LD4L::OpenAnnotationRDF::CommentAnnotation.new(ActiveTriples::LocalName::Minter.generate_local_name(
|
20
|
+
LD4L::OpenAnnotationRDF::CommentAnnotation, 5, {:prefix=>'n'} ))
|
21
|
+
note.hasTarget = item_uri
|
22
|
+
note.setComment("") unless params && params.size > 0 && params[0][:new_value]
|
23
|
+
note.setComment(params[0][:new_value]) if params && params.size > 0 && params[0][:new_value]
|
24
|
+
# note.annotatedBy = p
|
25
|
+
note.setAnnotatedAtNow
|
26
|
+
note
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.update(note,*params)
|
30
|
+
# puts("*** Entering MODEL: update note")
|
31
|
+
item_uri = params.first[:item_id]
|
32
|
+
item_uri = RDF::URI(item_uri) unless item_uri.kind_of?(RDF::URI)
|
33
|
+
note.hasTarget = item_uri
|
34
|
+
comment = params.first[:new_value]
|
35
|
+
note.setComment(comment)
|
36
|
+
note.setAnnotatedAtNow
|
37
|
+
# note.annotatedBy = p
|
38
|
+
note
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.destroy(note)
|
42
|
+
# puts("*** Entering MODEL: destroy note")
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.find(uri)
|
47
|
+
# puts("*** Entering MODEL: find note")
|
48
|
+
LD4L::OpenAnnotationRDF::CommentAnnotation.new(uri)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
module Ld4lVirtualCollection
|
2
|
+
class Tag < ActiveRecord::Base
|
3
|
+
|
4
|
+
def self.all(collection,item)
|
5
|
+
# puts("*** Entering MODEL: all tags")
|
6
|
+
self.all_hash(item).to_a
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.all_hash(target)
|
10
|
+
# puts("*** Entering MODEL: all tags as hash")
|
11
|
+
tags = {}
|
12
|
+
target_uri = target.id
|
13
|
+
all_annotations_uris = LD4L::OpenAnnotationRDF::Annotation.find_by_target(target_uri)
|
14
|
+
all_annotations_uris.each do |uri|
|
15
|
+
anno = LD4L::OpenAnnotationRDF::Annotation.resume(uri)
|
16
|
+
tags[anno.getTag] = anno if anno.kind_of?(LD4L::OpenAnnotationRDF::TagAnnotation)
|
17
|
+
end
|
18
|
+
tags
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.all_values(target)
|
22
|
+
# puts("*** Entering MODEL: values for all tags")
|
23
|
+
self.all_hash(target).keys.join("; ")
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.update_all(target,*params)
|
27
|
+
# puts("*** Entering MODEL: update_all tags")
|
28
|
+
all_anno_hash = self.all_hash(target)
|
29
|
+
|
30
|
+
target_uri = target.id
|
31
|
+
target_uri = RDF::URI(target_uri) unless target_uri.kind_of?(RDF::URI)
|
32
|
+
|
33
|
+
old_tags = params.first[:old_tags]
|
34
|
+
new_tags = params.first[:new_tags]
|
35
|
+
|
36
|
+
old_tags = old_tags.split(";").collect { |tag_value| tag_value.strip }
|
37
|
+
new_tags = new_tags.split(";").collect { |tag_value| tag_value.strip }
|
38
|
+
|
39
|
+
delete_list = []
|
40
|
+
add_list = []
|
41
|
+
old_tags.each { |tag_value| delete_list << tag_value unless new_tags.include? tag_value }
|
42
|
+
new_tags.each { |tag_value| add_list << tag_value unless old_tags.include? tag_value }
|
43
|
+
|
44
|
+
delete_list.collect! { |tag_value| all_anno_hash[tag_value] }
|
45
|
+
add_list.collect! do |tag_value|
|
46
|
+
tag = LD4L::OpenAnnotationRDF::TagAnnotation.new(ActiveTriples::LocalName::Minter.generate_local_name(
|
47
|
+
LD4L::OpenAnnotationRDF::TagAnnotation, 5, {:prefix=>'n'} ))
|
48
|
+
tag.hasTarget = target_uri
|
49
|
+
tag.setTag(tag_value)
|
50
|
+
tag.setAnnotatedAtNow
|
51
|
+
# tag.annotatedBy = p
|
52
|
+
tag
|
53
|
+
end
|
54
|
+
{ :delete_list => delete_list, :add_list => add_list }
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.new(collection,item,*params)
|
58
|
+
# puts("*** Entering MODEL: new tag")
|
59
|
+
item_uri = item.id
|
60
|
+
item_uri = RDF::URI(item_uri) unless item_uri.kind_of?(RDF::URI)
|
61
|
+
tag = LD4L::OpenAnnotationRDF::TagAnnotation.new(ActiveTriples::LocalName::Minter.generate_local_name(
|
62
|
+
LD4L::OpenAnnotationRDF::TagAnnotation, 5, {:prefix=>'n'} ))
|
63
|
+
tag.hasTarget = item_uri
|
64
|
+
tag_value = params.first[:new_value] if params && params.size > 0 && params.has_key?(:new_value)
|
65
|
+
tag.setTag(tag_value) if tag_value
|
66
|
+
tag.setAnnotatedAtNow
|
67
|
+
# tag.annotatedBy = p
|
68
|
+
tag
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
def self.update(tag,*params)
|
73
|
+
# puts("*** Entering MODEL: update tag")
|
74
|
+
item_uri = params.first[:item_id]
|
75
|
+
item_uri = RDF::URI(item_uri) unless item_uri.kind_of?(RDF::URI)
|
76
|
+
tag.hasTarget = item_uri
|
77
|
+
tag_value = params.first[:new_value]
|
78
|
+
tag.setTag(tag_value)
|
79
|
+
tag.setAnnotatedAtNow
|
80
|
+
# tag.annotatedBy = p
|
81
|
+
tag
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.destroy(tag)
|
85
|
+
# puts("*** Entering MODEL: destroy tag")
|
86
|
+
end
|
87
|
+
|
88
|
+
def self.find(uri)
|
89
|
+
# puts("*** Entering MODEL: find tag")
|
90
|
+
LD4L::OpenAnnotationRDF::TagAnnotation.new(uri)
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Ld4lVirtualCollection</title>
|
5
|
+
<%= stylesheet_link_tag "ld4l_virtual_collection/application", media: "all" %>
|
6
|
+
<%= javascript_include_tag "ld4l_virtual_collection/application" %>
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
|
11
|
+
<%= yield %>
|
12
|
+
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<%= form_tag( {action: form_action}, method: form_method, id: form_id, class: form_class ) do %>
|
2
|
+
<% if @collection.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%= pluralize(@collection.errors.count, "error") %> prohibited this collection from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% @collection.errors.full_messages.each do |message| %>
|
8
|
+
<li><%= message %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<%= hidden_field( "collection", "id" ) %>
|
15
|
+
|
16
|
+
<div class="field">
|
17
|
+
<%= label_tag("collection_title", "Title") %>
|
18
|
+
<%= text_field "collection", "title", "size" => 20, "value" => @collection.title %>
|
19
|
+
</div>
|
20
|
+
<div class="field">
|
21
|
+
<%= label_tag("collection_description", "Description") %>
|
22
|
+
<%= text_area "collection", "description", "cols" => 80, "rows" => 8, "value" => @collection.description %>
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<div class="actions">
|
26
|
+
<%= submit_tag("Save") %>
|
27
|
+
</div>
|
28
|
+
<% end %>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<h1>Editing collection</h1>
|
2
|
+
|
3
|
+
<%=
|
4
|
+
render :partial =>'form',
|
5
|
+
:locals => {
|
6
|
+
:form_action => 'update',
|
7
|
+
:form_class => 'edit_collection',
|
8
|
+
:form_id => "edit_collection_#{@collection.id}",
|
9
|
+
:form_method => 'patch' }
|
10
|
+
%>
|
11
|
+
|
12
|
+
<%= link_to 'Show', collection_path(@collection.id.to_s) %>
|
13
|
+
<%= link_to 'Back', collections_path %>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<p id="notice"><%= notice %></p>
|
2
|
+
|
3
|
+
<h1>Listing collections</h1>
|
4
|
+
|
5
|
+
<table>
|
6
|
+
<thead>
|
7
|
+
<tr>
|
8
|
+
<th>Title</th>
|
9
|
+
<th>Description</th>
|
10
|
+
<th colspan="3"></th>
|
11
|
+
</tr>
|
12
|
+
</thead>
|
13
|
+
|
14
|
+
<tbody>
|
15
|
+
<% @collections.each do |id,collection| %>
|
16
|
+
<tr>
|
17
|
+
<td><%= collection[:title].to_s %></td>
|
18
|
+
<td><%= collection[:description].to_s %></td>
|
19
|
+
<td><%= link_to 'Show', collection_path(id.to_s) %></td>
|
20
|
+
<td><%= link_to 'Edit', edit_collection_path(id.to_s) %></td>
|
21
|
+
<td><%= link_to 'Destroy', collection_path(id.to_s), method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
22
|
+
</tr>
|
23
|
+
<% end %>
|
24
|
+
</tbody>
|
25
|
+
</table>
|
26
|
+
|
27
|
+
<br>
|
28
|
+
|
29
|
+
<%= link_to 'New Collection', new_collection_path %>
|
30
|
+
|