+++ /dev/null
-class CommitDecorator < ApplicationDecorator
- decorates :commit
-
- # Returns a string describing the commit for use in a link title
- #
- # Example
- #
- # "Commit: Alex Denisov - Project git clone panel"
- def link_title
- "Commit: #{author_name} - #{title}"
- end
-
- # Returns the commits title.
- #
- # Usually, the commit title is the first line of the commit message.
- # In case this first line is longer than 80 characters, it is cut off
- # after 70 characters and ellipses (`&hellp;`) are appended.
- def title
- title = safe_message
-
- return no_commit_message if title.blank?
-
- title_end = title.index(/\n/)
- if (!title_end && title.length > 80) || (title_end && title_end > 80)
- title[0..69] << "…".html_safe
- else
- title.split(/\n/, 2).first
- end
- end
-
- # Returns the commits description
- #
- # cut off, ellipses (`&hellp;`) are prepended to the commit message.
- def description
- description = safe_message
-
- title_end = description.index(/\n/)
- if (!title_end && description.length > 80) || (title_end && title_end > 80)
- "…".html_safe << description[70..-1]
- else
- description.split(/\n/, 2)[1].try(:chomp)
- end
- end
-
- # Returns a link to the commit author. If the author has a matching user and
- # is a member of the current @project it will link to the team member page.
- # Otherwise it will link to the author email as specified in the commit.
- #
- # options:
- # avatar: true will prepend the avatar image
- # size: size of the avatar image in px
- def author_link(options = {})
- person_link(options.merge source: :author)
- end
-
- # Just like #author_link but for the committer.
- def committer_link(options = {})
- person_link(options.merge source: :committer)
- end
-
- protected
-
- def no_commit_message
- "--no commit message"
- end
-
- # Private: Returns a link to a person. If the person has a matching user and
- # is a member of the current @project it will link to the team member page.
- # Otherwise it will link to the person email as specified in the commit.
- #
- # options:
- # source: one of :author or :committer
- # avatar: true will prepend the avatar image
- # size: size of the avatar image in px
- def person_link(options = {})
- source_name = send "#{options[:source]}_name".to_sym
- source_email = send "#{options[:source]}_email".to_sym
- text = if options[:avatar]
- avatar = h.image_tag h.gravatar_icon(source_email, options[:size]), class: "avatar #{"s#{options[:size]}" if options[:size]}", width: options[:size], alt: ""
- %Q{#{avatar} <span class="commit-#{options[:source]}-name">#{source_name}</span>}
- else
- source_name
- end
-
- user = User.where('name like ? or email like ?', source_name, source_email).first
-
- if user.nil?
- h.mail_to(source_email, text.html_safe, class: "commit-#{options[:source]}-link")
- else
- h.link_to(text.html_safe, h.user_path(user), class: "commit-#{options[:source]}-link")
- end
- end
-end
+++ /dev/null
-class TreeDecorator < ApplicationDecorator
- decorates :tree
-
- def breadcrumbs(max_links = 2)
- if path
- part_path = ""
- parts = path.split("\/")
-
- yield('..', nil) if parts.count > max_links
-
- parts.each do |part|
- part_path = File.join(part_path, part) unless part_path.empty?
- part_path = part if part_path.empty?
-
- next unless parts.last(2).include?(part) if parts.count > max_links
- yield(part, h.tree_join(ref, part_path))
- end
- end
- end
-
- def up_dir?
- path.present?
- end
-
- def up_dir_path
- file = File.join(path, "..")
- h.tree_join(ref, file)
- end
-
- def readme
- @readme ||= contents.find { |c| c.is_a?(Grit::Blob) and c.name =~ /^readme/i }
- end
-end