@@ -0,0 +1,15 | |||
|
1 | <h2><%=h @attachment.filename %></h2> | |
|
2 | ||
|
3 | <div class="attachments"> | |
|
4 | <p><%= h("#{@attachment.description} - ") unless @attachment.description.blank? %> | |
|
5 | <span class="author"><%= @attachment.author %>, <%= format_time(@attachment.created_on) %></span></p> | |
|
6 | <p><%= link_to l(:button_download), {:controller => 'attachments', :action => 'download', :id => @attachment } -%> | |
|
7 | <span class="size">(<%= number_to_human_size @attachment.filesize %>)</span></p> | |
|
8 | ||
|
9 | </div> | |
|
10 | | |
|
11 | <%= render :partial => 'common/file', :locals => {:content => @content, :filename => @attachment.filename} %> | |
|
12 | ||
|
13 | <% content_for :header_tags do -%> | |
|
14 | <%= stylesheet_link_tag "scm" -%> | |
|
15 | <% end -%> |
|
1 | NO CONTENT: new file 100644, binary diff hidden |
@@ -0,0 +1,13 | |||
|
1 | Index: trunk/app/controllers/issues_controller.rb | |
|
2 | =================================================================== | |
|
3 | --- trunk/app/controllers/issues_controller.rb (r�vision 1483) | |
|
4 | +++ trunk/app/controllers/issues_controller.rb (r�vision 1484) | |
|
5 | @@ -149,7 +149,7 @@ | |
|
6 | attach_files(@issue, params[:attachments]) | |
|
7 | flash[:notice] = l(:notice_successful_create) | |
|
8 | Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') | |
|
9 | - redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project | |
|
10 | + redirect_to :controller => 'issues', :action => 'show', :id => @issue | |
|
11 | return | |
|
12 | end | |
|
13 | end |
@@ -0,0 +1,10 | |||
|
1 | # The Greeter class | |
|
2 | class Greeter | |
|
3 | def initialize(name) | |
|
4 | @name = name.capitalize | |
|
5 | end | |
|
6 | ||
|
7 | def salute | |
|
8 | puts "Hello #{@name}!" | |
|
9 | end | |
|
10 | end |
@@ -0,0 +1,59 | |||
|
1 | # redMine - project management software | |
|
2 | # Copyright (C) 2006-2008 Jean-Philippe Lang | |
|
3 | # | |
|
4 | # This program is free software; you can redistribute it and/or | |
|
5 | # modify it under the terms of the GNU General Public License | |
|
6 | # as published by the Free Software Foundation; either version 2 | |
|
7 | # of the License, or (at your option) any later version. | |
|
8 | # | |
|
9 | # This program is distributed in the hope that it will be useful, | |
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
12 | # GNU General Public License for more details. | |
|
13 | # | |
|
14 | # You should have received a copy of the GNU General Public License | |
|
15 | # along with this program; if not, write to the Free Software | |
|
16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
|
17 | ||
|
18 | require File.dirname(__FILE__) + '/../test_helper' | |
|
19 | require 'attachments_controller' | |
|
20 | ||
|
21 | # Re-raise errors caught by the controller. | |
|
22 | class AttachmentsController; def rescue_action(e) raise e end; end | |
|
23 | ||
|
24 | ||
|
25 | class AttachmentsControllerTest < Test::Unit::TestCase | |
|
26 | fixtures :users, :projects, :issues, :attachments | |
|
27 | ||
|
28 | def setup | |
|
29 | @controller = AttachmentsController.new | |
|
30 | @request = ActionController::TestRequest.new | |
|
31 | @response = ActionController::TestResponse.new | |
|
32 | Attachment.storage_path = "#{RAILS_ROOT}/test/fixtures/files" | |
|
33 | User.current = nil | |
|
34 | end | |
|
35 | ||
|
36 | def test_show_diff | |
|
37 | get :show, :id => 5 | |
|
38 | assert_response :success | |
|
39 | assert_template 'diff' | |
|
40 | end | |
|
41 | ||
|
42 | def test_show_text_file | |
|
43 | get :show, :id => 4 | |
|
44 | assert_response :success | |
|
45 | assert_template 'file' | |
|
46 | end | |
|
47 | ||
|
48 | def test_show_other | |
|
49 | get :show, :id => 6 | |
|
50 | assert_response :success | |
|
51 | assert_equal 'application/octet-stream', @response.content_type | |
|
52 | end | |
|
53 | ||
|
54 | def test_download_text_file | |
|
55 | get :download, :id => 4 | |
|
56 | assert_response :success | |
|
57 | assert_equal 'application/x-ruby', @response.content_type | |
|
58 | end | |
|
59 | end |
@@ -23,7 +23,10 class AttachmentsController < ApplicationController | |||
|
23 | 23 | if @attachment.is_diff? |
|
24 | 24 | @diff = File.new(@attachment.diskfile, "rb").read |
|
25 | 25 | render :action => 'diff' |
|
26 | else | |
|
26 | elsif @attachment.is_text? | |
|
27 | @content = File.new(@attachment.diskfile, "rb").read | |
|
28 | render :action => 'file' | |
|
29 | elsif | |
|
27 | 30 | download |
|
28 | 31 | end |
|
29 | 32 | end |
@@ -38,9 +41,9 class AttachmentsController < ApplicationController | |||
|
38 | 41 | private |
|
39 | 42 | def find_project |
|
40 | 43 | @attachment = Attachment.find(params[:id]) |
|
41 | render_404 and return false unless File.readable?(@attachment.diskfile) | |
|
44 | #render_404 and return false unless File.readable?(@attachment.diskfile) | |
|
42 | 45 | @project = @attachment.project |
|
43 | rescue | |
|
44 | render_404 | |
|
46 | #rescue | |
|
47 | # render_404 | |
|
45 | 48 | end |
|
46 | 49 | end |
@@ -15,6 +15,9 | |||
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | require 'coderay' | |
|
19 | require 'coderay/helpers/file_type' | |
|
20 | ||
|
18 | 21 | module ApplicationHelper |
|
19 | 22 | include Redmine::WikiFormatting::Macros::Definitions |
|
20 | 23 | |
@@ -116,6 +119,11 module ApplicationHelper | |||
|
116 | 119 | l(:actionview_datehelper_select_month_names).split(',')[month-1] |
|
117 | 120 | end |
|
118 | 121 | |
|
122 | def syntax_highlight(name, content) | |
|
123 | type = CodeRay::FileType[name] | |
|
124 | type ? CodeRay.scan(content, type).html : h(content) | |
|
125 | end | |
|
126 | ||
|
119 | 127 | def pagination_links_full(paginator, count=nil, options={}) |
|
120 | 128 | page_param = options.delete(:page_param) || :page |
|
121 | 129 | url_param = params.dup |
@@ -15,16 +15,9 | |||
|
15 | 15 | # along with this program; if not, write to the Free Software |
|
16 | 16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
17 | 17 | |
|
18 | require 'coderay' | |
|
19 | require 'coderay/helpers/file_type' | |
|
20 | 18 | require 'iconv' |
|
21 | 19 | |
|
22 | 20 | module RepositoriesHelper |
|
23 | def syntax_highlight(name, content) | |
|
24 | type = CodeRay::FileType[name] | |
|
25 | type ? CodeRay.scan(content, type).html : h(content) | |
|
26 | end | |
|
27 | ||
|
28 | 21 | def format_revision(txt) |
|
29 | 22 | txt.to_s[0,8] |
|
30 | 23 | end |
@@ -88,6 +88,10 class Attachment < ActiveRecord::Base | |||
|
88 | 88 | self.filename =~ /\.(jpe?g|gif|png)$/i |
|
89 | 89 | end |
|
90 | 90 | |
|
91 | def is_text? | |
|
92 | Redmine::MimeType.is_type?('text', filename) | |
|
93 | end | |
|
94 | ||
|
91 | 95 | def is_diff? |
|
92 | 96 | self.filename =~ /\.(patch|diff)$/i |
|
93 | 97 | end |
@@ -36,4 +36,40 attachments_003: | |||
|
36 | 36 | filename: logo.gif |
|
37 | 37 | description: This is a logo |
|
38 | 38 | author_id: 2 |
|
39 | No newline at end of file | |
|
39 | attachments_004: | |
|
40 | created_on: 2006-07-19 21:07:27 +02:00 | |
|
41 | container_type: Issue | |
|
42 | container_id: 3 | |
|
43 | downloads: 0 | |
|
44 | disk_filename: 060719210727_source.rb | |
|
45 | digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 | |
|
46 | id: 4 | |
|
47 | filesize: 153 | |
|
48 | filename: source.rb | |
|
49 | author_id: 2 | |
|
50 | description: This is a Ruby source file | |
|
51 | content_type: application/x-ruby | |
|
52 | attachments_005: | |
|
53 | created_on: 2006-07-19 21:07:27 +02:00 | |
|
54 | container_type: Issue | |
|
55 | container_id: 3 | |
|
56 | downloads: 0 | |
|
57 | disk_filename: 060719210727_changeset.diff | |
|
58 | digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 | |
|
59 | id: 5 | |
|
60 | filesize: 687 | |
|
61 | filename: changeset.diff | |
|
62 | author_id: 2 | |
|
63 | content_type: text/x-diff | |
|
64 | attachments_006: | |
|
65 | created_on: 2006-07-19 21:07:27 +02:00 | |
|
66 | container_type: Issue | |
|
67 | container_id: 3 | |
|
68 | downloads: 0 | |
|
69 | disk_filename: 060719210727_archive.zip | |
|
70 | digest: b91e08d0cf966d5c6ff411bd8c4cc3a2 | |
|
71 | id: 6 | |
|
72 | filesize: 157 | |
|
73 | filename: archive.zip | |
|
74 | author_id: 2 | |
|
75 | content_type: application/octet-stream |
@@ -40,6 +40,8 class DocumentsControllerTest < Test::Unit::TestCase | |||
|
40 | 40 | |
|
41 | 41 | def test_new_with_one_attachment |
|
42 | 42 | @request.session[:user_id] = 2 |
|
43 | set_tmp_attachments_directory | |
|
44 | ||
|
43 | 45 | post :new, :project_id => 'ecookbook', |
|
44 | 46 | :document => { :title => 'DocumentsControllerTest#test_post_new', |
|
45 | 47 | :description => 'This is a new document', |
@@ -361,6 +361,8 class IssuesControllerTest < Test::Unit::TestCase | |||
|
361 | 361 | end |
|
362 | 362 | |
|
363 | 363 | def test_post_edit_with_attachment_only |
|
364 | set_tmp_attachments_directory | |
|
365 | ||
|
364 | 366 | # anonymous user |
|
365 | 367 | post :edit, |
|
366 | 368 | :id => 1, |
@@ -1,3 +1,20 | |||
|
1 | # redMine - project management software | |
|
2 | # Copyright (C) 2006-2008 Jean-Philippe Lang | |
|
3 | # | |
|
4 | # This program is free software; you can redistribute it and/or | |
|
5 | # modify it under the terms of the GNU General Public License | |
|
6 | # as published by the Free Software Foundation; either version 2 | |
|
7 | # of the License, or (at your option) any later version. | |
|
8 | # | |
|
9 | # This program is distributed in the hope that it will be useful, | |
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
12 | # GNU General Public License for more details. | |
|
13 | # | |
|
14 | # You should have received a copy of the GNU General Public License | |
|
15 | # along with this program; if not, write to the Free Software | |
|
16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
|
17 | ||
|
1 | 18 | require "#{File.dirname(__FILE__)}/../test_helper" |
|
2 | 19 | |
|
3 | 20 | class IssuesTest < ActionController::IntegrationTest |
@@ -47,6 +64,7 class IssuesTest < ActionController::IntegrationTest | |||
|
47 | 64 | # add then remove 2 attachments to an issue |
|
48 | 65 | def test_issue_attachements |
|
49 | 66 | log_user('jsmith', 'jsmith') |
|
67 | set_tmp_attachments_directory | |
|
50 | 68 | |
|
51 | 69 | post 'issues/edit/1', |
|
52 | 70 | :notes => 'Some notes', |
@@ -57,6 +57,12 class Test::Unit::TestCase | |||
|
57 | 57 | def test_uploaded_file(name, mime) |
|
58 | 58 | ActionController::TestUploadedFile.new(Test::Unit::TestCase.fixture_path + "/files/#{name}", mime) |
|
59 | 59 | end |
|
60 | ||
|
61 | # Use a temporary directory for attachment related tests | |
|
62 | def set_tmp_attachments_directory | |
|
63 | Dir.mkdir "#{RAILS_ROOT}/tmp/test/attachments" unless File.directory?("#{RAILS_ROOT}/tmp/test/attachments") | |
|
64 | Attachment.storage_path = "#{RAILS_ROOT}/tmp/test/attachments" | |
|
65 | end | |
|
60 | 66 | end |
|
61 | 67 | |
|
62 | 68 |
General Comments 0
You need to be logged in to leave comments.
Login now