Module: RepositoriesHelper

Included in:
ProjectsController
Defined in:
app/helpers/repositories_helper.rb

Instance Method Summary

Instance Method Details

- (Object) bazaar_field_tags(form, repository)



175
176
177
# File 'app/helpers/repositories_helper.rb', line 175

def bazaar_field_tags(form, repository)
    ('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.new_record?)))
end

- (Object) cvs_field_tags(form, repository)



170
171
172
173
# File 'app/helpers/repositories_helper.rb', line 170

def cvs_field_tags(form, repository)
    ('p', form.text_field(:root_url, :label => 'CVSROOT', :size => 60, :required => true, :disabled => !repository.new_record?)) +
    ('p', form.text_field(:url, :label => 'Module', :size => 30, :required => true, :disabled => !repository.new_record?))
end

- (Object) darcs_field_tags(form, repository)



158
159
160
# File 'app/helpers/repositories_helper.rb', line 158

def darcs_field_tags(form, repository)
    ('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.new_record?)))
end

- (Object) filesystem_field_tags(form, repository)



179
180
181
# File 'app/helpers/repositories_helper.rb', line 179

def filesystem_field_tags(form, repository)
  ('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)))
end

- (Object) format_revision(txt)



21
22
23
# File 'app/helpers/repositories_helper.rb', line 21

def format_revision(txt)
  txt.to_s[0,8]
end

- (Object) git_field_tags(form, repository)



166
167
168
# File 'app/helpers/repositories_helper.rb', line 166

def git_field_tags(form, repository)
    ('p', form.text_field(:url, :label => 'Path to .git directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)))
end

- (Object) mercurial_field_tags(form, repository)



162
163
164
# File 'app/helpers/repositories_helper.rb', line 162

def mercurial_field_tags(form, repository)
    ('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)))
end

- (Object) render_changes_tree(tree)



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'app/helpers/repositories_helper.rb', line 73

def render_changes_tree(tree)
  return '' if tree.nil?
  
  output = ''
  output << '<ul>'
  tree.keys.sort.each do |file|
    s = !tree[file][:s].nil?
    c = tree[file][:c]
    
    style = 'change'
    style << ' folder' if s
    style << " change-#{c.action}" if c
    
    text = h(file)
    unless c.nil?
      path_param = to_path_param(@repository.relative_path(c.path))
      text = link_to(text, :controller => 'repositories',
                           :action => 'entry',
                           :id => @project,
                           :path => path_param,
                           :rev => @changeset.revision) unless s || c.action == 'D'
      text << " - #{c.revision}" unless c.revision.blank?
      text << ' (' + link_to('diff', :controller => 'repositories',
                                     :action => 'diff',
                                     :id => @project,
                                     :path => path_param,
                                     :rev => @changeset.revision) + ') ' if c.action == 'M'
      text << ' ' + ('span', c.from_path, :class => 'copied-from') unless c.from_path.blank?
    end
    output << "<li class='#{style}'>#{text}</li>"
    output << render_changes_tree(tree[file][:s]) if s
  end
  output << '</ul>'
  output
end

- (Object) render_changeset_changes



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'app/helpers/repositories_helper.rb', line 41

def render_changeset_changes
  changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change|
    case change.action
    when 'A'
      # Detects moved/copied files
      if !change.from_path.blank?
        change.action = @changeset.changes.detect {|c| c.action == 'D' && c.path == change.from_path} ? 'R' : 'C'
      end
      change
    when 'D'
      @changeset.changes.detect {|c| c.from_path == change.path} ? nil : change
    else
      change
    end
  end.compact
  
  tree = { }
  changes.each do |change|
    p = tree
    dirs = change.path.to_s.split('/').select {|d| !d.blank?}
    dirs.each do |dir|
      p[:s] ||= {}
      p = p[:s]
      p[dir] ||= {}
      p = p[dir]
    end
    p[:c] = change
  end
  
  render_changes_tree(tree[:s])
end

- (Object) render_properties(properties)



31
32
33
34
35
36
37
38
39
# File 'app/helpers/repositories_helper.rb', line 31

def render_properties(properties)
  unless properties.nil? || properties.empty?
    content = ''
    properties.keys.sort.each do |property|
      content << ('li', "<b>#{h property}</b>: <span>#{h properties[property]}</span>")
    end
    ('ul', content, :class => 'properties')
  end
end

- (Object) repository_field_tags(form, repository)



122
123
124
125
# File 'app/helpers/repositories_helper.rb', line 122

def repository_field_tags(form, repository)    
  method = repository.class.name.demodulize.underscore + "_field_tags"
  send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method) && method != 'repository_field_tags'
end

- (Object) scm_select_tag(repository)



127
128
129
130
131
132
133
134
135
136
137
138
# File 'app/helpers/repositories_helper.rb', line 127

def scm_select_tag(repository)
  scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']]
  Redmine::Scm::Base.all.each do |scm|
    scm_options << ["Repository::#{scm}".constantize.scm_name, scm] if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm)
  end
  
  select_tag('repository_scm', 
             options_for_select(scm_options, repository.class.name.demodulize),
             :disabled => (repository && !repository.new_record?),
             :onchange => remote_function(:url => { :controller => 'repositories', :action => 'edit', :id => @project }, :method => :get, :with => "Form.serialize(this.form)")
             )
end

- (Object) subversion_field_tags(form, repository)



148
149
150
151
152
153
154
155
156
# File 'app/helpers/repositories_helper.rb', line 148

def subversion_field_tags(form, repository)
    ('p', form.text_field(:url, :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)) +
                     '<br />(file:///, http://, https://, svn://, svn+[tunnelscheme]://)') +
    ('p', form.text_field(:login, :size => 30)) +
    ('p', form.password_field(:password, :size => 30, :name => 'ignore',
                                         :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)),
                                         :onfocus => "this.value=''; this.name='repository[password]';",
                                         :onchange => "this.name='repository[password]';"))
end

- (Object) to_utf8(str)



109
110
111
112
113
114
115
116
117
118
119
120
# File 'app/helpers/repositories_helper.rb', line 109

def to_utf8(str)
  return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii
  @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip)
  @encodings.each do |encoding|
    begin
      return Iconv.conv('UTF-8', encoding, str)
    rescue Iconv::Failure
      # do nothing here and try the next encoding
    end
  end
  str
end

- (Object) truncate_at_line_break(text, length = 255)



25
26
27
28
29
# File 'app/helpers/repositories_helper.rb', line 25

def truncate_at_line_break(text, length = 255)
  if text
    text.gsub(%r{^(.{#{length}}[^\n]*)\n.+$}m, '\\1...')
  end
end

- (Object) with_leading_slash(path)



140
141
142
# File 'app/helpers/repositories_helper.rb', line 140

def with_leading_slash(path)
  path.to_s.starts_with?('/') ? path : "/#{path}"
end

- (Object) without_leading_slash(path)



144
145
146
# File 'app/helpers/repositories_helper.rb', line 144

def without_leading_slash(path)
  path.gsub(%r{^/+}, '')
end