sufia 0.0.3 → 0.0.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/Gemfile +1 -4
- data/README.md +1 -1
- data/app/assets/javascripts/sufia.js +5 -312
- data/app/assets/javascripts/sufia/permissions.js +216 -0
- data/app/assets/javascripts/sufia/tabs.js +58 -0
- data/app/assets/stylesheets/generic_files.css +4 -0
- data/app/assets/stylesheets/jquery-ui.css +474 -0
- data/app/assets/stylesheets/{sufia.css → sufia.css.scss} +4 -1
- data/app/controllers/directory_controller.rb +17 -11
- data/app/controllers/users_controller.rb +5 -3
- data/app/models/datastreams/file_content_datastream.rb +2 -53
- data/app/views/batch/_metadata.html.erb +0 -1
- data/app/views/batch_edits/_metadata.html.erb +0 -1
- data/app/views/batch_edits/edit.html.erb +0 -1
- data/app/views/dashboard/_facet_pagination.html.erb +20 -39
- data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +1 -1
- data/app/views/dashboard/facet.html.erb +29 -34
- data/app/views/generic_files/_descriptions.html.erb +0 -1
- data/app/views/generic_files/_groups_description.html.erb +5 -0
- data/app/views/generic_files/_multiple_upload.html.erb +135 -0
- data/app/views/generic_files/_permission.html.erb +2 -5
- data/app/views/generic_files/_versioning.html.erb +0 -1
- data/app/views/generic_files/edit.html.erb +0 -3
- data/app/views/generic_files/new.html.erb +2 -138
- data/app/views/layouts/hydra-head.html.erb +1 -0
- data/app/views/users/index.html.erb +6 -4
- data/config/locales/sufia.en.yml +2 -0
- data/lib/sufia.rb +1 -1
- data/lib/sufia/file_content.rb +8 -0
- data/lib/sufia/file_content/extract_metadata.rb +53 -0
- data/lib/sufia/file_content/versions.rb +23 -0
- data/lib/sufia/files_controller_behavior.rb +17 -33
- data/lib/sufia/generic_file.rb +0 -8
- data/lib/sufia/generic_file/characterization.rb +0 -1
- data/lib/sufia/generic_file/thumbnail.rb +2 -4
- data/lib/sufia/jobs/unzip_job.rb +0 -1
- data/lib/sufia/user.rb +0 -3
- data/lib/sufia/version.rb +1 -1
- data/spec/controllers/batch_controller_spec.rb +11 -12
- data/spec/controllers/catalog_controller_spec.rb +2 -3
- data/spec/controllers/generic_files_controller_spec.rb +14 -16
- data/spec/controllers/single_use_link_controller_spec.rb +0 -1
- data/spec/models/batch_update_job_spec.rb +2 -3
- data/spec/models/checksum_audit_log_spec.rb +1 -2
- data/spec/models/file_content_datastream_spec.rb +1 -6
- data/spec/models/generic_file_spec.rb +2 -9
- data/spec/models/single_use_link_spec.rb +0 -2
- data/spec/models/transcode_video_job_spec.rb +1 -1
- data/spec/support/Gemfile +3 -5
- data/sufia.gemspec +2 -2
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect-highlight.js +50 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.effect.js +1276 -0
- data/vendor/assets/javascripts/jquery-ui-1.9.2/jquery.ui.position.js +498 -0
- metadata +26 -21
- data/app/assets/stylesheets/font-awesome-ie7.css +0 -645
- data/app/assets/stylesheets/font-awesome.css +0 -303
- data/app/views/catalog/_facet_pagination.html.erb +0 -28
- data/app/views/catalog/facet.html.erb +0 -27
- data/public/robots.txt +0 -4
- data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
@@ -1,10 +1,13 @@
|
|
1
1
|
/* ...
|
2
2
|
*= require_self
|
3
3
|
*= require bootstrap.min
|
4
|
-
*= require font-awesome
|
5
4
|
*= require scholarsphere-bootstrap
|
6
5
|
*= require blacklight_more_facets
|
7
6
|
*= require batch_edit
|
8
7
|
*= require generic_files
|
9
8
|
*= require video-js
|
9
|
+
*= require jquery-ui
|
10
10
|
*/
|
11
|
+
|
12
|
+
@import 'font-awesome';
|
13
|
+
|
@@ -13,27 +13,33 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
class DirectoryController < ApplicationController
|
16
|
-
include Hydra::Controller::ControllerBehavior
|
17
16
|
|
18
|
-
#
|
17
|
+
# Stub method. Override this in your application if you want directory lookups
|
19
18
|
def user
|
20
|
-
render :json => User.directory_attributes(params[:uid])
|
19
|
+
#render :json => User.directory_attributes(params[:uid])
|
20
|
+
render :json => ""
|
21
21
|
end
|
22
22
|
|
23
|
+
# Stub method. Override this in your application if you want directory lookups
|
23
24
|
def user_attribute
|
24
|
-
if params[:attribute] == "groups"
|
25
|
-
|
26
|
-
else
|
27
|
-
|
28
|
-
end
|
29
|
-
render :json => res
|
25
|
+
# if params[:attribute] == "groups"
|
26
|
+
# res = User.groups(params[:uid])
|
27
|
+
# else
|
28
|
+
# res = User.directory_attributes(params[:uid], params[:attribute])
|
29
|
+
# end
|
30
|
+
# render :json => res
|
31
|
+
render :json => ""
|
30
32
|
end
|
31
33
|
|
34
|
+
# Stub method. Override this in your application if you want directory lookups
|
32
35
|
def user_groups
|
33
|
-
render :json => User.groups(params[:uid])
|
36
|
+
# render :json => User.groups(params[:uid])
|
37
|
+
render :json => []
|
34
38
|
end
|
35
39
|
|
40
|
+
# Stub method. Override this in your application if you want directory lookups
|
36
41
|
def group
|
37
|
-
Group.exists?(params[:cn])
|
42
|
+
#render :json => Group.exists?(params[:cn])
|
43
|
+
render :json => false
|
38
44
|
end
|
39
45
|
end
|
@@ -21,9 +21,11 @@ class UsersController < ApplicationController
|
|
21
21
|
def index
|
22
22
|
sort_val = get_sort
|
23
23
|
query = params[:uq].blank? ? nil : "%"+params[:uq].downcase+"%"
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
if query.blank?
|
25
|
+
@users = User.order(sort_val).page(params[:page]).per(10) if query.blank?
|
26
|
+
else
|
27
|
+
@users = User.where("(login like lower(?) OR display_name like lower(?))",query,query).order(sort_val).page(params[:page]).per(10)
|
28
|
+
end
|
27
29
|
end
|
28
30
|
|
29
31
|
# Display user profile
|
@@ -12,58 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
require 'open3'
|
16
15
|
class FileContentDatastream < ActiveFedora::Datastream
|
17
|
-
include
|
18
|
-
|
19
|
-
def to_tempfile &block
|
20
|
-
return if content.nil?
|
21
|
-
f = Tempfile.new("#{pid}-#{dsVersionID}")
|
22
|
-
f.binmode
|
23
|
-
if content.respond_to? :read
|
24
|
-
f.write(content.read)
|
25
|
-
else
|
26
|
-
f.write(content)
|
27
|
-
end
|
28
|
-
f.close
|
29
|
-
content.rewind if content.respond_to? :rewind
|
30
|
-
yield(f)
|
31
|
-
f.unlink
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
def extract_metadata
|
36
|
-
out = nil
|
37
|
-
to_tempfile do |f|
|
38
|
-
command = "#{fits_path} -i #{f.path}"
|
39
|
-
stdin, stdout, stderr = popen3(command)
|
40
|
-
stdin.close
|
41
|
-
out = stdout.read
|
42
|
-
stdout.close
|
43
|
-
err = stderr.read
|
44
|
-
stderr.close
|
45
|
-
raise "Unable to execute command \"#{command}\"\n#{err}" unless err.empty? or err.include? "Error parsing Exiftool XML Output"
|
46
|
-
end
|
47
|
-
out
|
48
|
-
end
|
49
|
-
|
50
|
-
# TODO: All the version functionality here + what's in the GF model should probably move into a mixin
|
51
|
-
def get_version(version_id)
|
52
|
-
self.versions.select { |v| v.versionID == version_id}.first
|
53
|
-
end
|
54
|
-
|
55
|
-
def latest_version
|
56
|
-
self.versions.first
|
57
|
-
end
|
58
|
-
|
59
|
-
def version_committer(version)
|
60
|
-
vc = VersionCommitter.where(:obj_id => version.pid,
|
61
|
-
:datastream_id => version.dsid,
|
62
|
-
:version_id => version.versionID)
|
63
|
-
return vc.empty? ? nil : vc.first.committer_login
|
64
|
-
end
|
65
|
-
|
66
|
-
def fits_path
|
67
|
-
Sufia::Engine.config.fits_path
|
68
|
-
end
|
16
|
+
include Sufia::FileContent::ExtractMetadata
|
17
|
+
include Sufia::FileContent::Versions
|
69
18
|
end
|
@@ -38,7 +38,6 @@ limitations under the License.
|
|
38
38
|
</div>
|
39
39
|
</div>
|
40
40
|
|
41
|
-
<%= hidden_field_tag('generic_file[terms_of_service]', '1') %>
|
42
41
|
<%= hidden_field_tag(:extra_description_count, "1") %>
|
43
42
|
<div id="descriptions_display">
|
44
43
|
<h2 class="non lower">Bulk Descriptions <small>(applied to all files just uploaded)</small> <small class="pull-right"><span class="error">*</span> indicates required fields</small></h2>
|
@@ -22,7 +22,6 @@
|
|
22
22
|
</div>
|
23
23
|
</div>
|
24
24
|
|
25
|
-
<%= hidden_field_tag('generic_file[terms_of_service]', '1') %>
|
26
25
|
<%= hidden_field_tag(:extra_description_count, "1") %>
|
27
26
|
<div id="descriptions_display">
|
28
27
|
<h2 class="non lower">Bulk Descriptions <small>(applied to all files just uploaded)</small> <small class="pull-right"><span class="error">*</span> indicates required fields</small></h2>
|
@@ -276,7 +276,6 @@ h2 small {
|
|
276
276
|
|
277
277
|
<div id="collapse_<%=key%>" class="accordion-body collapse scrolly">
|
278
278
|
<%= form_for @generic_file, :url=>batch_edits_path, :method=>:put, :remote => true, :html => { :id=>"form_"+key, :class=>"ajax-form"} do |f| %>
|
279
|
-
<%= hidden_field_tag('generic_file[terms_of_service]', '1') %>
|
280
279
|
<%= hidden_field_tag('update_type', 'update') %>
|
281
280
|
<%= hidden_field_tag('key', key) %>
|
282
281
|
<%= render :partial => "generic_files/field_form", :locals => { :generic_file => @show_file, :f =>f, :render_req => false, :key => key } %>
|
@@ -1,44 +1,25 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
See the License for the specific language governing permissions and
|
14
|
-
limitations under the License.
|
15
|
-
%>
|
16
|
-
|
17
|
-
<% if @pagination.has_previous? || @pagination.has_next? %>
|
18
|
-
<div class="prev_next_links">
|
19
|
-
<% if @pagination.has_previous? -%>
|
20
|
-
<%= link_to('« Previous', sufia.catalog_facet_path( @pagination.params_for_previous_url( params) ) , :class=>:prev_page) %>
|
21
|
-
<% else -%>
|
22
|
-
<span class="disabled ui-state-active prev_page">« Previous</span>
|
23
|
-
<% end -%>
|
24
|
-
|
25
|
-
<% if @pagination.has_next? -%>
|
26
|
-
<%= link_to('Next »', sufia.catalog_facet_path( @pagination.params_for_next_url(params)), :class => :next_page ) %>
|
27
|
-
<% else -%>
|
28
|
-
<span class="disabled ui-state-active next_page">Next »</span>
|
29
|
-
<% end -%>
|
30
|
-
|
1
|
+
<!-- This was copied from https://github.com/projectblacklight/blacklight/blob/master/app/views/catalog/_facet_pagination.html.erb
|
2
|
+
It implements the facets in the same manner as blacklight does for the main catalog for the individual's dashbord
|
3
|
+
-->
|
4
|
+
<div class="prev_next_links btn-group pull-left">
|
5
|
+
<%= link_to_previous_page @pagination, raw(t('views.pagination.previous')), :params => params, :param_name => Blacklight::Solr::FacetPaginator.request_keys[:page], :class => 'btn' do %>
|
6
|
+
<span class="disabled btn"><%= raw(t('views.pagination.previous')) %></span>
|
7
|
+
<% end %>
|
8
|
+
<%= link_to_next_page @pagination, raw(t('views.pagination.next')), :params => params, :param_name => Blacklight::Solr::FacetPaginator.request_keys[:page], :class => 'btn' do %>
|
9
|
+
|
10
|
+
<span class="disabled btn"><%= raw(t('views.pagination.next')) %></span>
|
11
|
+
<% end %>
|
12
|
+
|
31
13
|
</div>
|
32
|
-
|
33
|
-
|
34
|
-
<div class="sort_options">
|
14
|
+
|
15
|
+
<div class="sort_options btn-group pull-right">
|
35
16
|
<% if @pagination.sort == 'index' -%>
|
36
|
-
<span class="
|
37
|
-
|
17
|
+
<span class="active az btn"><%= t('blacklight.search.facets.sort.index') %></span><%= link_to_unless(@pagination.sort == 'count', t('blacklight.search.facets.sort.count'),
|
18
|
+
Sufia::Engine.routes.url_for(@pagination.params_for_resort_url('count', params).symbolize_keys.merge(:only_path=>true)),
|
19
|
+
:class => "sort_change numeric btn") %>
|
38
20
|
<% elsif @pagination.sort == 'count' -%>
|
39
|
-
<%= link_to(
|
40
|
-
|
21
|
+
<%= link_to(t('blacklight.search.facets.sort.index'),
|
22
|
+
Sufia::Engine.routes.url_for(@pagination.params_for_resort_url('index', params).symbolize_keys.merge(:only_path=>true)),
|
23
|
+
:class => "sort_change az btn") %><span class="active numeric btn"><%= t('blacklight.search.facets.sort.count') %></span>
|
41
24
|
<% end -%>
|
42
25
|
</div>
|
43
|
-
|
44
|
-
|
@@ -18,7 +18,7 @@ limitations under the License.
|
|
18
18
|
<%- width = 36 if width.blank? -%>
|
19
19
|
<% if (document['mime_type_t']) %>
|
20
20
|
<% if !(document['mime_type_t'] & ['image/jpeg', 'image/png', 'image/bmp', 'image/gif', 'image/jpg']).empty? %>
|
21
|
-
<%= link_to image_tag(download_path(document["id"], {:datastream_id => 'thumbnail'}), {:width=>width, :height=>height}), sufia.generic_file_path(document[:noid_s].first) %>
|
21
|
+
<%= link_to image_tag(sufia.download_path(document["id"], {:datastream_id => 'thumbnail'}), {:width=>width, :height=>height}), sufia.generic_file_path(document[:noid_s].first) %>
|
22
22
|
<% elsif !(document['mime_type_t'] & ['application/pdf']).empty? %>
|
23
23
|
<%= link_to image_tag(sufia.download_path(document["id"], {:datastream_id => 'thumbnail'}), {:width=>width,:height=>height}),sufia.generic_file_path(document[:noid_s].first) %>
|
24
24
|
<% elsif !(document['mime_type_t'] & ['video/mp4']).empty? %>
|
@@ -1,42 +1,37 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
1
|
+
<!-- This was copied from https://github.com/projectblacklight/blacklight/blob/master/app/views/catalog/facet.html.erb
|
2
|
+
It implements the facets in the same manner as blacklight does for the main catalog for the individual's dashbord
|
3
|
+
-->
|
4
|
+
<% sidebar_items << capture do %>
|
5
|
+
<p><%= link_back_to_catalog %></p>
|
6
|
+
<% end %>
|
9
7
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
See the License for the specific language governing permissions and
|
14
|
-
limitations under the License.
|
15
|
-
%>
|
8
|
+
<div class="facet_pagination top">
|
9
|
+
<%= render :partial=>'facet_pagination' %>
|
10
|
+
</div>
|
16
11
|
|
17
|
-
<div class="
|
18
|
-
|
19
|
-
<
|
20
|
-
|
12
|
+
<div class="modal-header">
|
13
|
+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
14
|
+
<h3><%= facet_field_labels[params[:id]] %></h3>
|
15
|
+
</div>
|
16
|
+
<div class="modal-body">
|
17
|
+
<div class="facet_extended_list">
|
21
18
|
|
22
|
-
|
23
|
-
|
19
|
+
<ul class="facet_extended_list">
|
20
|
+
<% @pagination.items.each do |item| %>
|
21
|
+
<li>
|
22
|
+
<% if facet_in_params?( params[:id], item.value ) %>
|
23
|
+
<%= render_selected_facet_value(params[:id], item) %>
|
24
|
+
<% else %>
|
25
|
+
<%= render_facet_value(params[:id], item) %>
|
26
|
+
<% end -%>
|
27
|
+
</li>
|
28
|
+
<% end %>
|
29
|
+
</ul>
|
24
30
|
</div>
|
31
|
+
</div>
|
25
32
|
|
26
|
-
|
27
|
-
|
28
|
-
<ul class="facet_extended_list">
|
29
|
-
<% @pagination.items.each do |item| %>
|
30
|
-
<li>
|
31
|
-
<% if facet_in_params?( params[:id], item.value ) %>
|
32
|
-
<%= render_selected_facet_value(params[:id], item) %>
|
33
|
-
<% else %>
|
34
|
-
<%= render_facet_value(params[:id], item) %>
|
35
|
-
<% end -%>
|
36
|
-
</li>
|
37
|
-
<% end %>
|
38
|
-
</ul>
|
39
|
-
|
33
|
+
<div class="modal-footer">
|
34
|
+
|
40
35
|
<div class="facet_pagination bottom">
|
41
36
|
<%= render :partial=>'facet_pagination' %>
|
42
37
|
</div>
|
@@ -15,7 +15,6 @@ limitations under the License.
|
|
15
15
|
%>
|
16
16
|
|
17
17
|
<%= form_for @generic_file, :url => sufia.generic_file_path, :html => {:multipart => true, :class => 'form-horizontal'} do |f| %>
|
18
|
-
<%= hidden_field_tag('generic_file[terms_of_service]', '1') %>
|
19
18
|
<%= hidden_field_tag('redirect_tab', 'descriptions') %>
|
20
19
|
<div id="descriptions_display">
|
21
20
|
<h2 class="non lower">Descriptions <small class="pull-right"><span class="error">*</span> indicates required fields</small> </h2>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<p>
|
2
|
+
The list of groups in the drop-down marked "Select a group" is a list of User Managed Groups that you are a member of, and are managed by <%=t('sufia.institution_name') %>'s ITS department. You may select a specific group and assign an access
|
3
|
+
level for a file within <%=t('sufia.product_name') %>, similarly to adding user access levels. However, management of these groups and their membership is handled centrally at <a href="http://umg.its.psu.edu" target="_blank">umg.its.psu.edu</a>.
|
4
|
+
</p>
|
5
|
+
|
@@ -0,0 +1,135 @@
|
|
1
|
+
<div class="alert">
|
2
|
+
<strong>Note:</strong> You must agree to <a href='/agreement/' target="_blank"><%= t('sufia.deposit_agreement') %></a> before starting your upload.
|
3
|
+
</div>
|
4
|
+
|
5
|
+
<div class="alert alert-info hide" id="redirect-loc" type="text/x-jquery-tmpl">
|
6
|
+
<%=sufia.batch_edit_path(@batch_noid)%>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div id="upload_tooltip"><%= t('sufia.upload_tooltip') %></div>
|
10
|
+
|
11
|
+
<div class="alert alert-info hide" id="success">
|
12
|
+
You have successfully uploaded some of your files. Either continue to upload or edit use the links below to abandon the rest of your added files.
|
13
|
+
<p>
|
14
|
+
<%= link_to 'Add Descriptions', sufia.batch_edit_path(@batch_noid), :class=>'btn' %>
|
15
|
+
</p>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="alert hide" id="fail">
|
19
|
+
There was a problem during upload. Please click the "Start Upload" button or <%= link_to 'start over', sufia.new_generic_file_path %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<div class="alert hide" id="partial_fail">
|
23
|
+
One or more files did not upload successfully. To continue using the files uploaded use one of the links below.<br />
|
24
|
+
<%= link_to 'Add Descriptions', sufia.batch_edit_path(@batch_noid), :class=>'btn' %>
|
25
|
+
</div>
|
26
|
+
|
27
|
+
<div class="alert hide" id="errmsg"> </div>
|
28
|
+
|
29
|
+
<!-- The file upload form used as target for the file upload widget -->
|
30
|
+
<%= form_for(@generic_file, :url => sufia.generic_files_path, :html => {:multipart => true, :class => 'form-horizontal well', :id => 'fileupload'}) do |f| %>
|
31
|
+
<%= hidden_field_tag(:total_upload_size, 0) %>
|
32
|
+
<%= hidden_field_tag(:relative_path) %>
|
33
|
+
<%= hidden_field_tag(:batch_id, @batch_noid) %>
|
34
|
+
<label class="checkbox">
|
35
|
+
<%= check_box_tag 'terms_of_service' %> I have read and do agree
|
36
|
+
to <%= link_to t('sufia.deposit_agreement'),
|
37
|
+
'/agreement/', :target => "_blank" %>.
|
38
|
+
</label>
|
39
|
+
<!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload -->
|
40
|
+
<div class="row fileupload-buttonbar">
|
41
|
+
<div class="span70">
|
42
|
+
<!-- The fileinput-button span is used to style the file input field as button -->
|
43
|
+
<span class="btn btn-success fileinput-button">
|
44
|
+
<i class="icon-plus icon-white"></i>
|
45
|
+
<span>Select files...</span>
|
46
|
+
<input type="file" name="files[]" multiple />
|
47
|
+
</span>
|
48
|
+
<% ua = request.env['HTTP_USER_AGENT'] %>
|
49
|
+
<% if !!(ua =~ /Chrome/) %>
|
50
|
+
<span class="btn btn-success fileinput-button">
|
51
|
+
<i class="icon-plus icon-white"></i>
|
52
|
+
<span>Select folder...</span>
|
53
|
+
<input type="file" name="files[]" directory webkitdirectory mozdirectory />
|
54
|
+
</span>
|
55
|
+
<% end %>
|
56
|
+
<span id="main_upload_start_span">
|
57
|
+
<button type="submit" class="btn btn-primary start" id='main_upload_start'>
|
58
|
+
<i class="icon-upload icon-white"></i>
|
59
|
+
<span>Start upload</span>
|
60
|
+
</button>
|
61
|
+
</span>
|
62
|
+
<button type="reset" class="btn btn-warning cancel">
|
63
|
+
<i class="icon-ban-circle icon-white"></i>
|
64
|
+
<span>Cancel upload</span>
|
65
|
+
</button>
|
66
|
+
</div>
|
67
|
+
<div class="span50">
|
68
|
+
<!-- The global progress bar -->
|
69
|
+
<div class="progress progress-success progress-striped active fade">
|
70
|
+
<div class="bar" style="width:0%;"></div>
|
71
|
+
</div>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
<!-- The loading indicator is shown during image processing -->
|
75
|
+
<div class="fileupload-loading"></div>
|
76
|
+
<br />
|
77
|
+
<!-- The table listing the files available for upload/download -->
|
78
|
+
<table id="file-table" class="table table-striped"><tbody class="files" data-toggle="modal-gallery" data-target="#modal-gallery"></tbody></table>
|
79
|
+
<% end %>
|
80
|
+
|
81
|
+
<!-- The template to display files available for upload -->
|
82
|
+
<script id="template-upload" type="text/x-jquery-tmpl">
|
83
|
+
{% for (var i=0, file; file=o.files[i]; i++) { %}
|
84
|
+
|
85
|
+
<tr class="template-upload fade">
|
86
|
+
<td class="preview"><span class="fade"></span></td>
|
87
|
+
<td class="name"><span>{%=file.name%}</span></td>
|
88
|
+
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
|
89
|
+
{% if (file.error) { %}
|
90
|
+
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
|
91
|
+
{% } else if (o.files.valid && !i) { %}
|
92
|
+
<td>
|
93
|
+
<div class="progress progress-success progress-striped active"><div class="bar" style="width:0%;"></div></div>
|
94
|
+
</td>
|
95
|
+
<td class="start">{% if (!o.options.autoUpload) { %}
|
96
|
+
<button class="btn btn-primary hide">
|
97
|
+
<i class="icon-upload icon-white"></i>
|
98
|
+
<span>{%=locale.fileupload.start%}</span>
|
99
|
+
</button>
|
100
|
+
{% } %}</td>
|
101
|
+
{% } else { %}
|
102
|
+
<td colspan="2"></td>
|
103
|
+
{% } %}
|
104
|
+
<td class="cancel">{% if (!i) { %}
|
105
|
+
<button class="btn btn-warning">
|
106
|
+
<i class="icon-ban-circle icon-white"></i>
|
107
|
+
<span>{%=locale.fileupload.cancel%}</span>
|
108
|
+
</button>
|
109
|
+
{% } %}</td>
|
110
|
+
</tr>
|
111
|
+
{% } %}
|
112
|
+
</script>
|
113
|
+
<!-- The template to display files available for download -->
|
114
|
+
<script id="template-download" type="text/x-jquery-tmpl">
|
115
|
+
{% for (var i=0, file; file=o.files[i]; i++) { %}
|
116
|
+
<tr class="template-download fade">
|
117
|
+
{% if (file.error) { %}
|
118
|
+
<td><span></span></td>
|
119
|
+
<td class="name"><span>{%=file.name%}</span></td>
|
120
|
+
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
|
121
|
+
<td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
|
122
|
+
{% } else { %}
|
123
|
+
<td class="preview">
|
124
|
+
{% if (file.thumbnail_url) { %} <span class="label label-success">Success</span> {% } %}
|
125
|
+
</td>
|
126
|
+
<td class="name">
|
127
|
+
{%=file.name%}
|
128
|
+
<!--a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}" target="_blank">{%=file.name%}</a-->
|
129
|
+
</td>
|
130
|
+
<td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
|
131
|
+
<td colspan="2"></td>
|
132
|
+
{% } %}
|
133
|
+
</tr>
|
134
|
+
{% } %}
|
135
|
+
</script>
|