sufia 3.4.0 → 3.5.0
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.
- checksums.yaml +4 -4
 - data/.travis.yml +6 -1
 - data/Gemfile +7 -8
 - data/README.md +13 -0
 - data/SUFIA_VERSION +1 -1
 - data/app/controllers/mailbox_controller.rb +8 -8
 - data/app/jobs/ingest_local_file_job.rb +17 -13
 - data/app/views/catalog/_home_text.html.erb +0 -3
 - data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +5 -29
 - data/app/views/mailbox/index.html.erb +9 -21
 - data/app/views/users/_notify_link.html.erb +2 -17
 - data/config/routes.rb +5 -3
 - data/lib/sufia/files_controller_behavior.rb +45 -50
 - data/lib/sufia/version.rb +1 -1
 - data/lib/sufia/virus_found_error.rb +4 -0
 - data/spec/controllers/generic_files_controller_spec.rb +14 -79
 - data/spec/controllers/mailbox_controller_spec.rb +9 -13
 - data/spec/features/users_spec.rb +0 -3
 - data/spec/fixtures/sample_mpeg4.mp4 +0 -0
 - data/spec/jobs/import_url_job_spec.rb +8 -8
 - data/spec/jobs/ingest_local_file_job_spec.rb +13 -10
 - data/spec/models/fits_datastream_spec.rb +72 -21
 - data/spec/models/generic_file/actions_spec.rb +2 -17
 - data/spec/models/generic_file/web_form_spec.rb +4 -3
 - data/spec/models/generic_file_spec.rb +27 -0
 - data/spec/routing/route_spec.rb +15 -20
 - data/spec/spec_helper.rb +15 -2
 - data/sufia-models/app/models/datastreams/fits_datastream.rb +10 -1
 - data/sufia-models/lib/generators/sufia/models/install_generator.rb +1 -1
 - data/sufia-models/lib/sufia/models/generic_file.rb +3 -0
 - data/sufia-models/lib/sufia/models/generic_file/actions.rb +8 -11
 - data/sufia-models/lib/sufia/models/generic_file/characterization.rb +19 -4
 - data/sufia-models/lib/sufia/models/generic_file/virus_check.rb +33 -0
 - data/sufia-models/lib/sufia/models/generic_file/web_form.rb +2 -3
 - data/sufia-models/lib/sufia/models/jobs/import_url_job.rb +29 -31
 - data/sufia-models/lib/sufia/models/version.rb +1 -1
 - data/sufia.gemspec +1 -1
 - data/tasks/sufia-dev.rake +2 -1
 - metadata +10 -10
 - data/app/assets/images/rails.png +0 -0
 - data/app/assets/images/site_images/temp/guitar.jpg +0 -0
 - data/app/assets/images/splashscreen.png +0 -0
 - data/app/assets/images/video-still.png +0 -0
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 77cd255a8ab67cb2bcbd0bbfe17a9920d853251b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 528e7ca2aeb61cf7bcf5b10e370fcbfd8a51a1fc
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: acc4acc8293673da4aba37329ab6321be93241c9dfd2fd712a4bf5a3cf7218bfe25d5d6d8a99b1a45eb91934903dc31caacce9d7aa8311ebdfa9965075c5df4e
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 656b6f49ed4a1a4a603cae1b40a3c9320ac42a3aa4e806ba228439442ba87168fa8e0ed2b60e7957014b9297d1221ca9e97ad77605379402f2ffa472af2f816b
         
     | 
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -1,7 +1,12 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            language: ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            before_install:
         
     | 
| 
      
 3 
     | 
    
         
            +
              - sudo apt-get install libclamav-dev clamav-data
         
     | 
| 
       2 
4 
     | 
    
         
             
            rvm:
         
     | 
| 
       3 
5 
     | 
    
         
             
              - "1.9.3"
         
     | 
| 
       4 
6 
     | 
    
         
             
              - "2.0.0"
         
     | 
| 
      
 7 
     | 
    
         
            +
            env:
         
     | 
| 
      
 8 
     | 
    
         
            +
              global:
         
     | 
| 
      
 9 
     | 
    
         
            +
              - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
         
     | 
| 
       5 
10 
     | 
    
         
             
            notifications:
         
     | 
| 
       6 
11 
     | 
    
         
             
              email:
         
     | 
| 
       7 
12 
     | 
    
         
             
                recipients:
         
     | 
| 
         @@ -16,4 +21,4 @@ notifications: 
     | 
|
| 
       16 
21 
     | 
    
         
             
                template:
         
     | 
| 
       17 
22 
     | 
    
         
             
                  - "%{repository}//%{branch}@%{commit} by %{author}: %{message} - %{build_url}"
         
     | 
| 
       18 
23 
     | 
    
         
             
            services:
         
     | 
| 
       19 
     | 
    
         
            -
              - redis-server
         
     | 
| 
      
 24 
     | 
    
         
            +
              - redis-server
         
     | 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -8,18 +8,17 @@ gem 'kaminari', github: 'harai/kaminari', branch: 'route_prefix_prototype' 
     | 
|
| 
       8 
8 
     | 
    
         
             
            gem 'sufia-models', path: './sufia-models'
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
            group :development, :test do
         
     | 
| 
      
 11 
     | 
    
         
            +
              gem 'devise'
         
     | 
| 
      
 12 
     | 
    
         
            +
            #  gem 'byebug'
         
     | 
| 
      
 13 
     | 
    
         
            +
              gem 'clamav'
         
     | 
| 
       11 
14 
     | 
    
         
             
              gem 'sqlite3'
         
     | 
| 
       12 
     | 
    
         
            -
              gem ' 
     | 
| 
       13 
     | 
    
         
            -
              gem ' 
     | 
| 
       14 
     | 
    
         
            -
              gem ' 
     | 
| 
       15 
     | 
    
         
            -
              gem 'database_cleaner'
         
     | 
| 
       16 
     | 
    
         
            -
              gem 'capybara', '~>2.1.0'
         
     | 
| 
       17 
     | 
    
         
            -
              gem 'bcrypt-ruby'
         
     | 
| 
      
 15 
     | 
    
         
            +
              gem 'rspec-rails'
         
     | 
| 
      
 16 
     | 
    
         
            +
              gem 'launchy' unless ENV['TRAVIS']
         
     | 
| 
      
 17 
     | 
    
         
            +
              gem 'capybara'
         
     | 
| 
       18 
18 
     | 
    
         
             
              gem "jettywrapper"
         
     | 
| 
       19 
     | 
    
         
            -
              gem "factory_girl_rails" 
     | 
| 
      
 19 
     | 
    
         
            +
              gem "factory_girl_rails"
         
     | 
| 
       20 
20 
     | 
    
         
             
              gem "devise"
         
     | 
| 
       21 
21 
     | 
    
         
             
              gem 'jquery-rails'
         
     | 
| 
       22 
     | 
    
         
            -
              gem 'sass-rails'
         
     | 
| 
       23 
22 
     | 
    
         
             
              gem 'turbolinks'
         
     | 
| 
       24 
23 
     | 
    
         
             
              gem "bootstrap-sass"
         
     | 
| 
       25 
24 
     | 
    
         
             
              gem "simplecov", :require => false
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -146,3 +146,16 @@ rake fixtures 
     | 
|
| 
       146 
146 
     | 
    
         
             
            rake clean spec
         
     | 
| 
       147 
147 
     | 
    
         
             
            bundle exec cucumber features
         
     | 
| 
       148 
148 
     | 
    
         
             
            ```
         
     | 
| 
      
 149 
     | 
    
         
            +
            ### Change validation behavior
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            To change what happens to files that fail validation add an after_validation hook
         
     | 
| 
      
 152 
     | 
    
         
            +
            ```
         
     | 
| 
      
 153 
     | 
    
         
            +
                after_validation :dump_infected_files
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                def dump_infected_files
         
     | 
| 
      
 156 
     | 
    
         
            +
                  if Array(errors.get(:content)).any? { |msg| msg =~ /A virus was found/ }
         
     | 
| 
      
 157 
     | 
    
         
            +
                    content.content = errors.get(:content)
         
     | 
| 
      
 158 
     | 
    
         
            +
                    save
         
     | 
| 
      
 159 
     | 
    
         
            +
                  end
         
     | 
| 
      
 160 
     | 
    
         
            +
                end
         
     | 
| 
      
 161 
     | 
    
         
            +
            ```
         
     | 
    
        data/SUFIA_VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            3. 
     | 
| 
      
 1 
     | 
    
         
            +
            3.5.0
         
     | 
| 
         @@ -4,7 +4,7 @@ class MailboxController < ApplicationController 
     | 
|
| 
       4 
4 
     | 
    
         
             
              def index
         
     | 
| 
       5 
5 
     | 
    
         
             
                if user_signed_in?
         
     | 
| 
       6 
6 
     | 
    
         
             
                  @messages = current_user.mailbox.inbox
         
     | 
| 
       7 
     | 
    
         
            -
                   
     | 
| 
      
 7 
     | 
    
         
            +
                  @messages.each{|m| m.mark_as_read(current_user)}
         
     | 
| 
       8 
8 
     | 
    
         
             
                else
         
     | 
| 
       9 
9 
     | 
    
         
             
                  @messages =[]
         
     | 
| 
       10 
10 
     | 
    
         
             
                end 
         
     | 
| 
         @@ -15,20 +15,20 @@ class MailboxController < ApplicationController 
     | 
|
| 
       15 
15 
     | 
    
         
             
                    delete_message(msg)
         
     | 
| 
       16 
16 
     | 
    
         
             
                 end
         
     | 
| 
       17 
17 
     | 
    
         
             
                 empty_trash(current_user)
         
     | 
| 
       18 
     | 
    
         
            -
                 redirect_to sufia. 
     | 
| 
      
 18 
     | 
    
         
            +
                 redirect_to sufia.notifications_path
         
     | 
| 
       19 
19 
     | 
    
         
             
              end
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
              def  
     | 
| 
       22 
     | 
    
         
            -
                if  
     | 
| 
       23 
     | 
    
         
            -
                  msg = Conversation.find(params[: 
     | 
| 
      
 21 
     | 
    
         
            +
              def destroy
         
     | 
| 
      
 22 
     | 
    
         
            +
                if current_user
         
     | 
| 
      
 23 
     | 
    
         
            +
                  msg = Conversation.find(params[:id])
         
     | 
| 
       24 
24 
     | 
    
         
             
                  if (msg.participants[0] == current_user) || (msg.participants[1] == current_user)
         
     | 
| 
       25 
25 
     | 
    
         
             
                     delete_message(msg)
         
     | 
| 
       26 
26 
     | 
    
         
             
                     empty_trash(msg.participants[0])
         
     | 
| 
       27 
27 
     | 
    
         
             
                  end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 28 
     | 
    
         
            +
                else 
         
     | 
| 
       29 
29 
     | 
    
         
             
                  flash[:alert] = "You do not have privileges to delete the notification..."
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                redirect_to sufia.notifications_path
         
     | 
| 
       32 
32 
     | 
    
         
             
              end
         
     | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            private 
         
     | 
| 
         @@ -1,34 +1,38 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            class IngestLocalFileJob
         
     | 
| 
      
 2 
     | 
    
         
            +
              attr_accessor :directory, :filename, :user_key, :generic_file_id
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       2 
4 
     | 
    
         
             
              def queue_name
         
     | 
| 
       3 
5 
     | 
    
         
             
                :ingest
         
     | 
| 
       4 
6 
     | 
    
         
             
              end
         
     | 
| 
       5 
7 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
              attr_accessor :directory, :filename, :user_key, :generic_file_id
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
8 
     | 
    
         
             
              def initialize(generic_file_id, directory, filename, user_key)
         
     | 
| 
       9 
9 
     | 
    
         
             
                self.generic_file_id = generic_file_id
         
     | 
| 
       10 
10 
     | 
    
         
             
                self.directory = directory
         
     | 
| 
       11 
     | 
    
         
            -
                self.filename = filename 
     | 
| 
      
 11 
     | 
    
         
            +
                self.filename = filename
         
     | 
| 
       12 
12 
     | 
    
         
             
                self.user_key = user_key
         
     | 
| 
       13 
13 
     | 
    
         
             
              end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
              def run
         
     | 
| 
       16 
     | 
    
         
            -
                filedata = File.new( File.join(directory, filename) )
         
     | 
| 
       17 
     | 
    
         
            -
                generic_file = GenericFile.find(generic_file_id)
         
     | 
| 
       18 
16 
     | 
    
         
             
                user = User.find_by_user_key(user_key)
         
     | 
| 
       19 
17 
     | 
    
         
             
                raise "Unable to find user for #{user_key}" unless user
         
     | 
| 
       20 
     | 
    
         
            -
                
         
     | 
| 
       21 
     | 
    
         
            -
                 
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                raise "Virus checking did not pass for #{File.basename(filedata.path)} status = #{virus_stat}" unless virus_stat == 0
         
     | 
| 
       24 
     | 
    
         
            -
                
         
     | 
| 
      
 18 
     | 
    
         
            +
                generic_file = GenericFile.find(generic_file_id)
         
     | 
| 
      
 19 
     | 
    
         
            +
                path = File.join(directory, filename)
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       25 
21 
     | 
    
         
             
                generic_file.label = File.basename(filename)
         
     | 
| 
       26 
     | 
    
         
            -
                generic_file.add_file(File.open( 
     | 
| 
      
 22 
     | 
    
         
            +
                generic_file.add_file(File.open(path), 'content', generic_file.label)
         
     | 
| 
       27 
23 
     | 
    
         
             
                generic_file.record_version_committer(user)
         
     | 
| 
       28 
24 
     | 
    
         
             
                generic_file.save!
         
     | 
| 
       29 
25 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
                 
     | 
| 
      
 26 
     | 
    
         
            +
                FileUtils.rm(path)
         
     | 
| 
       31 
27 
     | 
    
         
             
                Sufia.queue.push(ContentDepositEventJob.new(generic_file.pid, user_key))
         
     | 
| 
       32 
     | 
    
         
            -
                 
     | 
| 
      
 28 
     | 
    
         
            +
                # add message to user for downloaded file
         
     | 
| 
      
 29 
     | 
    
         
            +
                message = "The file (#{File.basename(filename)}) was successfully deposited."
         
     | 
| 
      
 30 
     | 
    
         
            +
                job_user.send_message(user, message, 'Local file ingest')
         
     | 
| 
      
 31 
     | 
    
         
            +
              rescue => error
         
     | 
| 
      
 32 
     | 
    
         
            +
                job_user.send_message(user, error.message, 'Local file ingest error')
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              def job_user
         
     | 
| 
      
 36 
     | 
    
         
            +
                User.batchuser
         
     | 
| 
       33 
37 
     | 
    
         
             
              end
         
     | 
| 
       34 
38 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,6 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <!--<h1>Getting Started</h1>
         
     | 
| 
       2 
     | 
    
         
            -
            <img src="/assets/splashscreen.png" width="450" height="259" alt="just a place holder" />
         
     | 
| 
       3 
     | 
    
         
            -
                  <br/><br/> -->
         
     | 
| 
       4 
1 
     | 
    
         
             
                  <h2 class="heading1">What is <%=t('sufia.product_name') %>?</h2>
         
     | 
| 
       5 
2 
     | 
    
         
             
                  <p>
         
     | 
| 
       6 
3 
     | 
    
         
             
                  <%=t('sufia.product_name') %> is a secure repository service enabling the <%=t('sufia.institution_name') %> community to share its research and scholarly work with a worldwide audience. 
         
     | 
| 
         @@ -1,31 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       5 
     | 
    
         
            -
            you may not use this file except in compliance with the License.
         
     | 
| 
       6 
     | 
    
         
            -
            You may obtain a copy of the License at
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            Unless required by applicable law or agreed to in writing, software
         
     | 
| 
       11 
     | 
    
         
            -
            distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
       12 
     | 
    
         
            -
            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
       13 
     | 
    
         
            -
            See the License for the specific language governing permissions and
         
     | 
| 
       14 
     | 
    
         
            -
            limitations under the License.
         
     | 
| 
       15 
     | 
    
         
            -
            %>
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            <%- height = 42 if height.blank? -%>
         
     | 
| 
       18 
     | 
    
         
            -
            <%- width = 36 if width.blank? -%>
         
     | 
| 
       19 
     | 
    
         
            -
            <% if (document.mime_type) %>
         
     | 
| 
       20 
     | 
    
         
            -
              <% if document.image? %>
         
     | 
| 
       21 
     | 
    
         
            -
                <%= link_to image_tag(sufia.download_path(document["id"], {:datastream_id => 'thumbnail'}), {:width=>width}), sufia.generic_file_path(document.noid) %>
         
     | 
| 
       22 
     | 
    
         
            -
              <% elsif document.pdf? %>
         
     | 
| 
       23 
     | 
    
         
            -
                <%= link_to image_tag(sufia.download_path(document["id"], {:datastream_id => 'thumbnail'}), {:width=>width}),sufia.generic_file_path(document.noid) %>
         
     | 
| 
       24 
     | 
    
         
            -
              <% elsif document.video? %>
         
     | 
| 
       25 
     | 
    
         
            -
                <%= link_to image_tag(sufia.download_path(document["id"], {:datastream_id => 'thumbnail'}), {:width=>width}),sufia.generic_file_path(document.noid) %>
         
     | 
| 
       26 
     | 
    
         
            -
              <% else %>
         
     | 
| 
       27 
     | 
    
         
            -
                <%= link_to image_tag("/assets/default.png", {:width=>width}), sufia.generic_file_path(document) %>
         
     | 
| 
       28 
     | 
    
         
            -
              <% end %>
         
     | 
| 
      
 1 
     | 
    
         
            +
            <% width = 36 if width.blank? %>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <%  if document.image? || document.pdf? || document.video? %>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <% path = sufia.download_path(document["id"], {datastream_id: 'thumbnail'}) %>
         
     | 
| 
       29 
4 
     | 
    
         
             
            <% else %>
         
     | 
| 
       30 
     | 
    
         
            -
              
     | 
| 
      
 5 
     | 
    
         
            +
              <% path = "/assets/default.png" %>
         
     | 
| 
       31 
6 
     | 
    
         
             
            <% end %>
         
     | 
| 
      
 7 
     | 
    
         
            +
            <%= link_to image_tag(path, {width: width}), sufia.generic_file_path(document) %>
         
     | 
| 
         @@ -1,21 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <%#
         
     | 
| 
       2 
     | 
    
         
            -
            Copyright © 2012 The Pennsylvania State University
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       5 
     | 
    
         
            -
            you may not use this file except in compliance with the License.
         
     | 
| 
       6 
     | 
    
         
            -
            You may obtain a copy of the License at
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            Unless required by applicable law or agreed to in writing, software
         
     | 
| 
       11 
     | 
    
         
            -
            distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
       12 
     | 
    
         
            -
            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
       13 
     | 
    
         
            -
            See the License for the specific language governing permissions and
         
     | 
| 
       14 
     | 
    
         
            -
            limitations under the License.
         
     | 
| 
       15 
     | 
    
         
            -
            %>
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
1 
     | 
    
         
             
            <h1>User Notifications</h1>
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
            <%= link_to raw('<i class="icon-trash icon-large"> </i>Delete All'),
         
     | 
| 
      
 3 
     | 
    
         
            +
                sufia.delete_all_notifications_path, method: :delete, class: 'btn',
         
     | 
| 
      
 4 
     | 
    
         
            +
                title: 'Delete all user notifications' %>
         
     | 
| 
       19 
5 
     | 
    
         
             
            <div id="Data">
         
     | 
| 
       20 
6 
     | 
    
         
             
                <table class="table table-striped"> 
         
     | 
| 
       21 
7 
     | 
    
         
             
                    <thead> 
         
     | 
| 
         @@ -27,10 +13,12 @@ limitations under the License. 
     | 
|
| 
       27 
13 
     | 
    
         
             
                    <tbody> 
         
     | 
| 
       28 
14 
     | 
    
         
             
                        <% @messages.each do |msg| %> 
         
     | 
| 
       29 
15 
     | 
    
         
             
                            <tr class="<%= cycle("","zebra") %>"> 
         
     | 
| 
       30 
     | 
    
         
            -
                               <td 
     | 
| 
       31 
     | 
    
         
            -
                               <td 
     | 
| 
       32 
     | 
    
         
            -
                               <td 
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
                               <td><%= msg.last_message.subject.html_safe  %></td> 
         
     | 
| 
      
 17 
     | 
    
         
            +
                               <td><%= msg.last_message.body.html_safe  %></td> 
         
     | 
| 
      
 18 
     | 
    
         
            +
                               <td><%= link_to raw('<i class="icon-trash icon-large"></i>'),
         
     | 
| 
      
 19 
     | 
    
         
            +
                                 sufia.notification_path(msg.id), :class=> 'itemicon itemtrash',
         
     | 
| 
      
 20 
     | 
    
         
            +
                                 :title => 'Delete File', :method => :delete %>
         
     | 
| 
      
 21 
     | 
    
         
            +
                               </td>
         
     | 
| 
       34 
22 
     | 
    
         
             
                            </tr> 
         
     | 
| 
       35 
23 
     | 
    
         
             
                        <% end %> 
         
     | 
| 
       36 
24 
     | 
    
         
             
                    </tbody> 
         
     | 
| 
         @@ -1,21 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            Copyright © 2012 The Pennsylvania State University
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
       5 
     | 
    
         
            -
            you may not use this file except in compliance with the License.
         
     | 
| 
       6 
     | 
    
         
            -
            You may obtain a copy of the License at
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            Unless required by applicable law or agreed to in writing, software
         
     | 
| 
       11 
     | 
    
         
            -
            distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
       12 
     | 
    
         
            -
            WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
       13 
     | 
    
         
            -
            See the License for the specific language governing permissions and
         
     | 
| 
       14 
     | 
    
         
            -
            limitations under the License.
         
     | 
| 
       15 
     | 
    
         
            -
            %>
         
     | 
| 
       16 
     | 
    
         
            -
            <a id="notify_link"  href="<%= sufia.mailbox_path %>" class="icon-btn btn btn-small" title="click for User Notifications">
         
     | 
| 
      
 1 
     | 
    
         
            +
            <%= link_to sufia.notifications_path, id: "notify_link", class: "icon-btn btn btn-small", title: "User Notifications" do %>
         
     | 
| 
       17 
2 
     | 
    
         
             
             <%= render :partial => 'users/notify_number' %>
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
            <% end %>  
         
     | 
| 
       19 
4 
     | 
    
         
             
            <div class='hide'> 
         
     | 
| 
       20 
5 
     | 
    
         
             
              <%= link_to "notify", sufia.user_notify_path, :remote => true, :id => 'notify_update_link' %>
         
     | 
| 
       21 
6 
     | 
    
         
             
            </div> 
         
     | 
    
        data/config/routes.rb
    CHANGED
    
    | 
         @@ -27,9 +27,11 @@ Sufia::Engine.routes.draw do 
     | 
|
| 
       27 
27 
     | 
    
         
             
              resources :downloads, :only => "show"
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
              # Messages
         
     | 
| 
       30 
     | 
    
         
            -
               
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 30 
     | 
    
         
            +
              resources :notifications, only: [:destroy, :index], controller: :mailbox do
         
     | 
| 
      
 31 
     | 
    
         
            +
                collection do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  delete 'delete_all'
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
       33 
35 
     | 
    
         | 
| 
       34 
36 
     | 
    
         
             
              # User profile & follows
         
     | 
| 
       35 
37 
     | 
    
         
             
              resources :users, only: [:index, :show, :edit, :update], as: :profiles
         
     | 
| 
         @@ -79,7 +79,7 @@ module Sufia 
     | 
|
| 
       79 
79 
     | 
    
         
             
                def create_from_url(params)
         
     | 
| 
       80 
80 
     | 
    
         
             
                  params[:dropbox_urls].each do |db_file|
         
     | 
| 
       81 
81 
     | 
    
         
             
                    next if db_file.blank?
         
     | 
| 
       82 
     | 
    
         
            -
                    # do not remove :: 
     | 
| 
      
 82 
     | 
    
         
            +
                    # do not remove ::
         
     | 
| 
       83 
83 
     | 
    
         
             
                    @generic_file = ::GenericFile.new
         
     | 
| 
       84 
84 
     | 
    
         
             
                    @generic_file.import_url = db_file
         
     | 
| 
       85 
85 
     | 
    
         
             
                    @generic_file.label = File.basename(db_file)
         
     | 
| 
         @@ -90,27 +90,25 @@ module Sufia 
     | 
|
| 
       90 
90 
     | 
    
         
             
                end
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
       92 
92 
     | 
    
         
             
                def create_from_upload(params)
         
     | 
| 
       93 
     | 
    
         
            -
                   
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
                     
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
                     
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                     
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
                     
     | 
| 
       105 
     | 
    
         
            -
                      process_file(file)
         
     | 
| 
       106 
     | 
    
         
            -
                    end
         
     | 
| 
       107 
     | 
    
         
            -
                  rescue => error
         
     | 
| 
       108 
     | 
    
         
            -
                    logger.error "GenericFilesController::create rescued #{error.class}\n\t#{error.to_s}\n #{error.backtrace.join("\n")}\n\n"
         
     | 
| 
       109 
     | 
    
         
            -
                    json_error "Error occurred while creating generic file."
         
     | 
| 
       110 
     | 
    
         
            -
                  ensure
         
     | 
| 
       111 
     | 
    
         
            -
                    # remove the tempfile (only if it is a temp file)
         
     | 
| 
       112 
     | 
    
         
            -
                    file.tempfile.delete if file.respond_to?(:tempfile)
         
     | 
| 
      
 93 
     | 
    
         
            +
                  # check error condition No files
         
     | 
| 
      
 94 
     | 
    
         
            +
                  return json_error("Error! No file to save") if !params.has_key?(:files)
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                  file = params[:files].detect {|f| f.respond_to?(:original_filename) }
         
     | 
| 
      
 97 
     | 
    
         
            +
                  if !file
         
     | 
| 
      
 98 
     | 
    
         
            +
                    json_error "Error! No file for upload", 'unknown file', :status => :unprocessable_entity
         
     | 
| 
      
 99 
     | 
    
         
            +
                  elsif (empty_file?(file))
         
     | 
| 
      
 100 
     | 
    
         
            +
                    json_error "Error! Zero Length File!", file.original_filename
         
     | 
| 
      
 101 
     | 
    
         
            +
                  elsif (!terms_accepted?)
         
     | 
| 
      
 102 
     | 
    
         
            +
                    json_error "You must accept the terms of service!", file.original_filename
         
     | 
| 
      
 103 
     | 
    
         
            +
                  else
         
     | 
| 
      
 104 
     | 
    
         
            +
                    process_file(file)
         
     | 
| 
       113 
105 
     | 
    
         
             
                  end
         
     | 
| 
      
 106 
     | 
    
         
            +
                rescue => error
         
     | 
| 
      
 107 
     | 
    
         
            +
                  logger.error "GenericFilesController::create rescued #{error.class}\n\t#{error.to_s}\n #{error.backtrace.join("\n")}\n\n"
         
     | 
| 
      
 108 
     | 
    
         
            +
                  json_error "Error occurred while creating generic file."
         
     | 
| 
      
 109 
     | 
    
         
            +
                ensure
         
     | 
| 
      
 110 
     | 
    
         
            +
                  # remove the tempfile (only if it is a temp file)
         
     | 
| 
      
 111 
     | 
    
         
            +
                  file.tempfile.delete if file.respond_to?(:tempfile)
         
     | 
| 
       114 
112 
     | 
    
         
             
                end
         
     | 
| 
       115 
113 
     | 
    
         | 
| 
       116 
114 
     | 
    
         
             
                # routed to /files/:id/citation
         
     | 
| 
         @@ -145,10 +143,8 @@ module Sufia 
     | 
|
| 
       145 
143 
     | 
    
         | 
| 
       146 
144 
     | 
    
         
             
                  if params.has_key?(:filedata)
         
     | 
| 
       147 
145 
     | 
    
         
             
                    file = params[:filedata]
         
     | 
| 
       148 
     | 
    
         
            -
                    return unless virus_check(file) == 0
         
     | 
| 
       149 
146 
     | 
    
         
             
                    @generic_file.add_file(file, datastream_id, file.original_filename)
         
     | 
| 
       150 
147 
     | 
    
         
             
                    version_event = true
         
     | 
| 
       151 
     | 
    
         
            -
                    Sufia.queue.push(ContentNewVersionEventJob.new(@generic_file.pid, current_user.user_key))
         
     | 
| 
       152 
148 
     | 
    
         
             
                  end
         
     | 
| 
       153 
149 
     | 
    
         | 
| 
       154 
150 
     | 
    
         
             
                  # only update metadata if there is a generic_file object which is not the case for version updates
         
     | 
| 
         @@ -157,12 +153,20 @@ module Sufia 
     | 
|
| 
       157 
153 
     | 
    
         
             
                  #always save the file so the new version or metadata gets recorded
         
     | 
| 
       158 
154 
     | 
    
         
             
                  if @generic_file.save
         
     | 
| 
       159 
155 
     | 
    
         
             
                    # do not trigger an update event if a version event has already been triggered
         
     | 
| 
       160 
     | 
    
         
            -
                     
     | 
| 
      
 156 
     | 
    
         
            +
                    if version_event
         
     | 
| 
      
 157 
     | 
    
         
            +
                      Sufia.queue.push(ContentNewVersionEventJob.new(@generic_file.pid, current_user.user_key)) if params.has_key?(:filedata)
         
     | 
| 
      
 158 
     | 
    
         
            +
                    else
         
     | 
| 
      
 159 
     | 
    
         
            +
                      Sufia.queue.push(ContentUpdateEventJob.new(@generic_file.pid, current_user.user_key))
         
     | 
| 
      
 160 
     | 
    
         
            +
                    end
         
     | 
| 
       161 
161 
     | 
    
         
             
                    @generic_file.record_version_committer(current_user)
         
     | 
| 
       162 
162 
     | 
    
         
             
                    redirect_to sufia.edit_generic_file_path(:tab => params[:redirect_tab]), :notice => render_to_string(:partial=>'generic_files/asset_updated_flash', :locals => { :generic_file => @generic_file })
         
     | 
| 
       163 
163 
     | 
    
         
             
                  else
         
     | 
| 
       164 
164 
     | 
    
         
             
                    render action: 'edit'
         
     | 
| 
       165 
165 
     | 
    
         
             
                  end
         
     | 
| 
      
 166 
     | 
    
         
            +
                rescue => error
         
     | 
| 
      
 167 
     | 
    
         
            +
                  flash[:error] = error.message
         
     | 
| 
      
 168 
     | 
    
         
            +
                  logger.error "GenericFilesController::update rescued #{error.class}\n\t#{error.message}\n #{error.backtrace.join("\n")}\n\n"
         
     | 
| 
      
 169 
     | 
    
         
            +
                  render action: 'edit'
         
     | 
| 
       166 
170 
     | 
    
         
             
                end
         
     | 
| 
       167 
171 
     | 
    
         | 
| 
       168 
172 
     | 
    
         
             
                protected
         
     | 
| 
         @@ -179,27 +183,26 @@ module Sufia 
     | 
|
| 
       179 
183 
     | 
    
         
             
                end
         
     | 
| 
       180 
184 
     | 
    
         | 
| 
       181 
185 
     | 
    
         
             
                def process_file(file)
         
     | 
| 
       182 
     | 
    
         
            -
                   
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
             
     | 
| 
       186 
     | 
    
         
            -
             
     | 
| 
       187 
     | 
    
         
            -
                     
     | 
| 
       188 
     | 
    
         
            -
                       
     | 
| 
       189 
     | 
    
         
            -
             
     | 
| 
       190 
     | 
    
         
            -
             
     | 
| 
       191 
     | 
    
         
            -
             
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
       193 
     | 
    
         
            -
                       
     | 
| 
       194 
     | 
    
         
            -
             
     | 
| 
       195 
     | 
    
         
            -
                      }
         
     | 
| 
       196 
     | 
    
         
            -
                    end
         
     | 
| 
       197 
     | 
    
         
            -
                  else
         
     | 
| 
       198 
     | 
    
         
            -
                    render :json => [{:error => "Error creating generic file."}]
         
     | 
| 
      
 186 
     | 
    
         
            +
                  @generic_file = ::GenericFile.new
         
     | 
| 
      
 187 
     | 
    
         
            +
                  update_metadata_from_upload_screen
         
     | 
| 
      
 188 
     | 
    
         
            +
                  create_metadata(@generic_file)
         
     | 
| 
      
 189 
     | 
    
         
            +
                  Sufia::GenericFile::Actions.create_content(@generic_file, file, file.original_filename, datastream_id, current_user)
         
     | 
| 
      
 190 
     | 
    
         
            +
                  respond_to do |format|
         
     | 
| 
      
 191 
     | 
    
         
            +
                    format.html {
         
     | 
| 
      
 192 
     | 
    
         
            +
                      render :json => [@generic_file.to_jq_upload],
         
     | 
| 
      
 193 
     | 
    
         
            +
                      :content_type => 'text/html',
         
     | 
| 
      
 194 
     | 
    
         
            +
                      :layout => false
         
     | 
| 
      
 195 
     | 
    
         
            +
                    }
         
     | 
| 
      
 196 
     | 
    
         
            +
                    format.json {
         
     | 
| 
      
 197 
     | 
    
         
            +
                      render :json => [@generic_file.to_jq_upload]
         
     | 
| 
      
 198 
     | 
    
         
            +
                    }
         
     | 
| 
       199 
199 
     | 
    
         
             
                  end
         
     | 
| 
      
 200 
     | 
    
         
            +
                rescue ActiveFedora::RecordInvalid => af
         
     | 
| 
      
 201 
     | 
    
         
            +
                  flash[:error] = af.message
         
     | 
| 
      
 202 
     | 
    
         
            +
                  json_error "Error creating generic file: #{af.message}"
         
     | 
| 
       200 
203 
     | 
    
         
             
                end
         
     | 
| 
       201 
204 
     | 
    
         | 
| 
       202 
     | 
    
         
            -
                # override this method if you want to change how the terms are accepted on upload. 
     | 
| 
      
 205 
     | 
    
         
            +
                # override this method if you want to change how the terms are accepted on upload.
         
     | 
| 
       203 
206 
     | 
    
         
             
                def terms_accepted?
         
     | 
| 
       204 
207 
     | 
    
         
             
                  params[:terms_of_service] == '1'
         
     | 
| 
       205 
208 
     | 
    
         
             
                end
         
     | 
| 
         @@ -231,14 +234,6 @@ module Sufia 
     | 
|
| 
       231 
234 
     | 
    
         
             
                  @generic_file.date_modified = DateTime.now
         
     | 
| 
       232 
235 
     | 
    
         
             
                end
         
     | 
| 
       233 
236 
     | 
    
         | 
| 
       234 
     | 
    
         
            -
             
     | 
| 
       235 
     | 
    
         
            -
                def virus_check( file)
         
     | 
| 
       236 
     | 
    
         
            -
                  stat = Sufia::GenericFile::Actions.virus_check(file)
         
     | 
| 
       237 
     | 
    
         
            -
                  flash[:error] = "Virus checking did not pass for #{File.basename(file.path)} status = #{stat}" unless stat == 0
         
     | 
| 
       238 
     | 
    
         
            -
                  stat
         
     | 
| 
       239 
     | 
    
         
            -
                end
         
     | 
| 
       240 
     | 
    
         
            -
             
     | 
| 
       241 
     | 
    
         
            -
             
     | 
| 
       242 
237 
     | 
    
         
             
                def create_metadata(file)
         
     | 
| 
       243 
238 
     | 
    
         
             
                  Sufia::GenericFile::Actions.create_metadata(file, current_user, params[:batch_id])
         
     | 
| 
       244 
239 
     | 
    
         
             
                end
         
     | 
    
        data/lib/sufia/version.rb
    CHANGED