]> source.dussan.org Git - redmine.git/commitdiff
Repository browser does not render previews for audio/video files (#32153).
authorGo MAEDA <maeda@farend.jp>
Tue, 4 Feb 2020 05:32:04 +0000 (05:32 +0000)
committerGo MAEDA <maeda@farend.jp>
Tue, 4 Feb 2020 05:32:04 +0000 (05:32 +0000)
Patch by Mizuki ISHIKAWA.

git-svn-id: http://svn.redmine.org/redmine/trunk@19492 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/repositories_controller.rb
app/views/repositories/entry.html.erb
test/fixtures/repositories/subversion_repository.dump.gz
test/functional/repositories_subversion_controller_test.rb
test/unit/repository_subversion_test.rb

index 6994eb2946e2a7407b3b75ddf1db76279d4b114a..269bc70a0f264522ec35cda119cd5c5226007883 100644 (file)
@@ -131,6 +131,12 @@ class RepositoriesController < ApplicationController
 
   def entry
     entry_and_raw(false)
+    @raw_url = url_for(:action => 'raw',
+                       :id     => @project,
+                       :repository_id => @repository.identifier_param,
+                       :path   => @path,
+                       :rev    => @rev,
+                       :only_path => true)
   end
 
   def entry_and_raw(is_raw)
index 99c611104abba917c92872dc898f89f648d1234c..2cc1a08593e4388499b25e3db54b4daa0dfdce33 100644 (file)
@@ -9,11 +9,7 @@
 <%= render :partial => 'link_to_functions' %>
 
 <% if Redmine::MimeType.is_type?('image', @path) %>
-  <%= render :partial => 'common/image', :locals => {:path => url_for(:action => 'raw',
-                                                                      :id     => @project,
-                                                                      :repository_id => @repository.identifier_param,
-                                                                      :path   => @path,
-                                                                      :rev    => @rev), :alt => @path} %>
+  <%= render :partial => 'common/image', :locals => {:path => @raw_url, :alt => @path} %>
 <% elsif @content %>
   <%= render :partial => 'common/file', :locals => {:filename => @path, :content => @content} %>
 <% else %>
      end %>
   <%= render :partial => 'common/other',
              :locals => {
-               :path => (url_for(params.merge(:action => 'raw')) if @allow_download),
+               :path => (@raw_url if @repository.supports_cat?),
                :kind => kind,
                :download_link => @repository.supports_cat? ? link_to(
                  l(:label_no_preview_download),
-                 { :action => 'raw', :id => @project,
-                   :repository_id => @repository.identifier_param,
-                   :path => to_path_param(@path),
-                   :rev => @rev },
+                 @raw_url,
                 :class => 'icon icon-download') : nil } %>
 <% end %>
 
index b47542f174432006c3faa6affbe4d45954064f9a..f08858eed1707154d4b2f9084cc76124962c45f2 100644 (file)
Binary files a/test/fixtures/repositories/subversion_repository.dump.gz and b/test/fixtures/repositories/subversion_repository.dump.gz differ
index 30fcf20646d3066d893529b602458c4b28870533..b1ffd6fd9c32e06b286b65f97a5f364a98a0fbb6 100644 (file)
@@ -27,7 +27,7 @@ class RepositoriesSubversionControllerTest < Redmine::RepositoryControllerTest
            :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
 
   PRJ_ID = 3
-  NUM_REV = 11
+  NUM_REV = 12
 
   def setup
     super
@@ -78,7 +78,7 @@ class RepositoriesSubversionControllerTest < Redmine::RepositoryControllerTest
 
       assert_select 'table.changesets tbody' do
         assert_select 'tr', 10
-        assert_select 'tr td.id a', :text => '11'
+        assert_select 'tr td.id a', :text => '12'
       end
 
       assert_select 'input[name=rev]'
@@ -203,9 +203,9 @@ class RepositoriesSubversionControllerTest < Redmine::RepositoryControllerTest
         }
       )
       assert_response :success
-
       assert_select 'table.changesets tbody' do
-        assert_select 'tr', 6
+        assert_select 'tr', 7
+        assert_select 'tr td.id a', :text => '12'
         assert_select 'tr td.id a', :text => '10'
         assert_select 'tr td.id a', :text => '9'
         assert_select 'tr td.id a', :text => '7'
@@ -267,6 +267,19 @@ class RepositoriesSubversionControllerTest < Redmine::RepositoryControllerTest
       assert_select 'img[src=?]', "/projects/subproject1/repository/#{@repository.id}/raw/subversion_test/folder/subfolder/rubylogo.gif"
     end
 
+    def test_entry_should_preview_audio
+      get(
+        :entry,
+        :params => {
+          :id => PRJ_ID,
+          :repository_id => @repository.id,
+          :path => repository_path_hash(['subversion_test', 'folder', 'subfolder', 'chords.mp3'])[:param]
+        }
+      )
+      assert_response :success
+      assert_select 'audio[src=?]', "/projects/subproject1/repository/#{@repository.id}/raw/subversion_test/folder/subfolder/chords.mp3"
+    end
+
     def test_entry_at_given_revision
       assert_equal 0, @repository.changesets.count
       @repository.fetch_changesets
index df567f61fddaa8a19090b9e6409dddec45cac74e..94ac7483debabe6050c1c71afa28073b01775648 100644 (file)
@@ -24,7 +24,7 @@ class RepositorySubversionTest < ActiveSupport::TestCase
 
   include Redmine::I18n
 
-  NUM_REV = 11
+  NUM_REV = 12
 
   def setup
     User.current = nil
@@ -98,7 +98,7 @@ class RepositorySubversionTest < ActiveSupport::TestCase
       @project.reload
 
       assert_equal NUM_REV, @repository.changesets.count
-      assert_equal 20, @repository.filechanges.count
+      assert_equal 21, @repository.filechanges.count
       assert_equal 'Initial import.', @repository.changesets.find_by_revision('1').comments
     end
 
@@ -142,7 +142,7 @@ class RepositorySubversionTest < ActiveSupport::TestCase
 
       # with path
       changesets = @repository.latest_changesets('subversion_test/folder', nil)
-      assert_equal ["10", "9", "7", "6", "5", "2"], changesets.collect(&:revision)
+      assert_equal ["12", "10", "9", "7", "6", "5", "2"], changesets.collect(&:revision)
 
       # with path and revision
       changesets = @repository.latest_changesets('subversion_test/folder', 8)
@@ -278,7 +278,7 @@ class RepositorySubversionTest < ActiveSupport::TestCase
       @repository.fetch_changesets
       @project.reload
       assert_equal NUM_REV, @repository.changesets.count
-      changeset = @repository.find_changeset_by_name('11')
+      changeset = @repository.find_changeset_by_name('12')
       assert_nil changeset.next
     end
   else