Commit bf10913873ac01a116979d2c2b6655eddc4193c3
1 parent
af2f1d06
Exists in
staging
and in
4 other branches
dspace_plugin : improve viewing dspace item
Showing
8 changed files
with
199 additions
and
5 deletions
Show diff stats
@@ -0,0 +1,9 @@ | @@ -0,0 +1,9 @@ | ||
1 | +class DspacePluginController < PublicController | ||
2 | + append_view_path File.join(File.dirname(__FILE__) + '/../views') | ||
3 | + | ||
4 | + def view_item | ||
5 | + @collection = DspacePlugin::Collection.find(params[:collection_id]) | ||
6 | + @item = Dspace::Item.get_item_by_id 6 | ||
7 | + end | ||
8 | + | ||
9 | +end |
plugins/dspace/lib/dspace/collection.rb
@@ -23,7 +23,7 @@ class Dspace::Collection < Dspace::Resource | @@ -23,7 +23,7 @@ class Dspace::Collection < Dspace::Resource | ||
23 | metadata = item_metadata[3].attributes | 23 | metadata = item_metadata[3].attributes |
24 | if metadata != {} | 24 | if metadata != {} |
25 | metadata = Hash[[metadata.map{|k,v| v}]] | 25 | metadata = Hash[[metadata.map{|k,v| v}]] |
26 | - date_issued = metadata.has_key?('dc.date.issued') ? metadata['dc.date.issued'] : nil | 26 | + issue_date = metadata.has_key?('dc.date.issued') ? metadata['dc.date.issued'] : nil |
27 | end | 27 | end |
28 | 28 | ||
29 | item = DspacePlugin::Item.new | 29 | item = DspacePlugin::Item.new |
@@ -31,7 +31,7 @@ class Dspace::Collection < Dspace::Resource | @@ -31,7 +31,7 @@ class Dspace::Collection < Dspace::Resource | ||
31 | item.id = element.id | 31 | item.id = element.id |
32 | item.name = element.name | 32 | item.name = element.name |
33 | item.author = author | 33 | item.author = author |
34 | - item.date_issued = date_issued | 34 | + item.issue_date = issue_date |
35 | 35 | ||
36 | item_list << item | 36 | item_list << item |
37 | 37 |
plugins/dspace/lib/dspace/item.rb
@@ -6,4 +6,82 @@ class Dspace::Item < Dspace::Resource | @@ -6,4 +6,82 @@ class Dspace::Item < Dspace::Resource | ||
6 | result.metadata | 6 | result.metadata |
7 | end | 7 | end |
8 | 8 | ||
9 | + def self.get_item_by_id(item_id) | ||
10 | + self.site = 'http://dspace.maljr.net/rest/' | ||
11 | + result = self.find item_id, :params => { :expand => 'metadata' } | ||
12 | + | ||
13 | + item_metadata = Dspace::Item.get_all_item_metadata_from self.site, result.id | ||
14 | + | ||
15 | + # author | ||
16 | + metadata = item_metadata[0].attributes | ||
17 | + if metadata != {} | ||
18 | + metadata = Hash[[metadata.map{|k,v| v}]] | ||
19 | + author = metadata.has_key?('dc.contributor.author') ? metadata['dc.contributor.author'] : nil | ||
20 | + end | ||
21 | + | ||
22 | + # issue date | ||
23 | + metadata = item_metadata[3].attributes | ||
24 | + if metadata != {} | ||
25 | + metadata = Hash[[metadata.map{|k,v| v}]] | ||
26 | + issue_date = metadata.has_key?('dc.date.issued') ? metadata['dc.date.issued'] : nil | ||
27 | + end | ||
28 | + | ||
29 | + # uri | ||
30 | + metadata = item_metadata[4].attributes | ||
31 | + if metadata != {} | ||
32 | + metadata = Hash[[metadata.map{|k,v| v}]] | ||
33 | + uri = metadata.has_key?('dc.identifier.uri') ? metadata['dc.identifier.uri'] : nil | ||
34 | + end | ||
35 | + | ||
36 | + # description | ||
37 | + metadata = item_metadata[5].attributes | ||
38 | + if metadata != {} | ||
39 | + metadata = Hash[[metadata.map{|k,v| v}]] | ||
40 | + abstract = metadata.has_key?('dc.description') ? metadata['dc.description'] : nil | ||
41 | + end | ||
42 | + | ||
43 | + # abstract | ||
44 | + metadata = item_metadata[6].attributes | ||
45 | + if metadata != {} | ||
46 | + metadata = Hash[[metadata.map{|k,v| v}]] | ||
47 | + description = metadata.has_key?('dc.description.abstract') ? metadata['dc.description.abstract'] : nil | ||
48 | + end | ||
49 | + | ||
50 | + item = DspacePlugin::Item.new | ||
51 | + | ||
52 | + item.id = result.id | ||
53 | + item.name = result.name | ||
54 | + item.author = author | ||
55 | + item.issue_date = issue_date | ||
56 | + item.abstract = abstract | ||
57 | + item.description = description | ||
58 | + item.uri = uri | ||
59 | + | ||
60 | + ### BITSTREAMS | ||
61 | + | ||
62 | + item_bitstreams = self.find item_id, :params => { :expand => 'bitstreams' } | ||
63 | + | ||
64 | + bitstreams = item_bitstreams.bitstreams | ||
65 | + | ||
66 | + bitstreams.each do |bs| | ||
67 | + bitstream = DspacePlugin::Bitstream.new | ||
68 | + bitstream.id = bs.attributes[:id] | ||
69 | + bitstream.name = bs.attributes[:name] | ||
70 | + bitstream.description = bs.attributes[:description] | ||
71 | + bitstream.mimetype = bs.attributes[:mimeType] | ||
72 | + bitstream.size_bytes = bs.attributes[:sizeBytes] | ||
73 | + bitstream.retrieve_link = bs.attributes[:retrieveLink] | ||
74 | + bitstream.format = bs.attributes[:format] | ||
75 | + bitstream.link = bs.attributes[:link] | ||
76 | + | ||
77 | + #raise bitstream.to_yaml | ||
78 | + | ||
79 | + item.files << bitstream | ||
80 | + | ||
81 | + end | ||
82 | + | ||
83 | + item | ||
84 | + | ||
85 | + end | ||
86 | + | ||
9 | end | 87 | end |
plugins/dspace/lib/dspace_plugin/item.rb
plugins/dspace/public/style.css
@@ -21,3 +21,32 @@ | @@ -21,3 +21,32 @@ | ||
21 | #dspace_library div#actions { | 21 | #dspace_library div#actions { |
22 | margin: 10px 0; | 22 | margin: 10px 0; |
23 | } | 23 | } |
24 | + | ||
25 | +#dspace_library_item { | ||
26 | + /*8border: 1px solid green;*/ | ||
27 | +} | ||
28 | + | ||
29 | +.dspace_item_section { | ||
30 | + margin-left: 20px; | ||
31 | +} | ||
32 | + | ||
33 | +.dspace_item_section_title { | ||
34 | + margin: 0px; | ||
35 | + font-weight: bold; | ||
36 | + border-bottom: 1px solid #c0c0c0; | ||
37 | +} | ||
38 | + | ||
39 | +#dspace_library_item ul { | ||
40 | + list-style-type: none; | ||
41 | +} | ||
42 | + | ||
43 | +#dspace_library_item ul#item_files_list, | ||
44 | +#dspace_library_item ul.item_file_attributes_list { | ||
45 | + margin: 0; | ||
46 | + padding: 0; | ||
47 | +} | ||
48 | + | ||
49 | +#dspace_library_item ul#item_files_list > li { | ||
50 | + margin: 5px 0; | ||
51 | +} | ||
52 | + |
plugins/dspace/views/content_viewer/_item.html.erb
1 | <li class="item"> | 1 | <li class="item"> |
2 | - <span class="name"><%= item.name %></span><br /> | ||
3 | - <span class="authors"><%= item.author %></span> <span class="date_issued">(<%= item.date_issued %>)</span> | 2 | + <!--span class="name"><%#= item.name %></span><br /--> |
3 | + <span class="name"><%= link_to item.name, :controller => 'dspace_plugin', :action => 'view_item', :id => item.id, :collection_id => @page.id %></span><br /> | ||
4 | + <span class="authors"><%= item.author %></span> <span class="date_issued">(<%= item.issue_date %>)</span> | ||
4 | </li> | 5 | </li> |
@@ -0,0 +1,68 @@ | @@ -0,0 +1,68 @@ | ||
1 | +<% dspace_server_url = @collection.parent.parent.dspace_server_url %> | ||
2 | + | ||
3 | +<% if dspace_server_url =~ /\/$/ %> | ||
4 | + <% dspace_server_url.gsub!(/\/$/,'') %> | ||
5 | +<% end %> | ||
6 | + | ||
7 | +<div id="article-parent"> | ||
8 | + <%= button(:back, _('Go back to %s') % @collection.short_title, @collection.url) %> | ||
9 | +</div> | ||
10 | + | ||
11 | +<div id="dspace_library_item"> | ||
12 | + | ||
13 | + <div id="dspace_item_title"> | ||
14 | + <%= content_tag 'h1', @item.name, :class => 'title' %> | ||
15 | + </div> | ||
16 | + | ||
17 | + <br /> | ||
18 | + | ||
19 | + <div class="dspace_item_section"> | ||
20 | + <%= content_tag 'div', _('Authors:'), :class => 'dspace_item_section_title' %> | ||
21 | + <%= content_tag 'div', @item.author, :class => 'dspace_item_section_value' %> | ||
22 | + </div> | ||
23 | + | ||
24 | + <br /> | ||
25 | + | ||
26 | + <div class="dspace_item_section"> | ||
27 | + <%= content_tag 'div', _('Issue date:'), :class => 'dspace_item_section_title' %> | ||
28 | + <%= content_tag 'div', @item.issue_date, :class => 'dspace_item_section_value' %> | ||
29 | + </div> | ||
30 | + <br /> | ||
31 | + | ||
32 | + <div class="dspace_item_section"> | ||
33 | + <%= content_tag 'div', _('Abstract:'), :class => 'dspace_item_section_title' %> | ||
34 | + <%= content_tag 'div', @item.abstract, :class => 'dspace_item_section_value' %> | ||
35 | + </div> | ||
36 | + | ||
37 | + <br /> | ||
38 | + | ||
39 | + <div class="dspace_item_section"> | ||
40 | + <%= content_tag 'div', _('Description:'), :class => 'dspace_item_section_title' %> | ||
41 | + <%= content_tag 'div', @item.description, :class => 'dspace_item_section_value' %> | ||
42 | + </div> | ||
43 | + | ||
44 | + <br /> | ||
45 | + | ||
46 | + <div class="dspace_item_section"> | ||
47 | + <%= content_tag 'div', _('URI:'), :class => 'dspace_item_section_title' %> | ||
48 | + <%= content_tag 'div', link_to(@item.uri, @item.uri), :class => 'dspace_item_section_value' %> | ||
49 | + </div> | ||
50 | + | ||
51 | + <br /> | ||
52 | + | ||
53 | + <div class="dspace_item_section"> | ||
54 | + <%= content_tag 'div', _('Files in this item'), :class => 'dspace_item_section_title' %> | ||
55 | + <ul id="item_files_list"> | ||
56 | + <% @item.files.each do |file| %> | ||
57 | + <li> | ||
58 | + <ul class="item_file_attributes_list"> | ||
59 | + <li><span>File:</span> <%= link_to file.name, dspace_server_url + file.retrieve_link %></li> | ||
60 | + <li><span>Description:</span> <%= file.description %></li> | ||
61 | + <li><span>Size:</span> <%= number_to_human_size( file.size_bytes ) %></li> | ||
62 | + </ul> | ||
63 | + </li> | ||
64 | + <% end %> | ||
65 | + </ul> | ||
66 | + </div> | ||
67 | + | ||
68 | +<div> |