77 lines
1.9 KiB
Ruby
77 lines
1.9 KiB
Ruby
class RepositoryPresenter < SimpleDelegator
|
|
attr_reader :repository
|
|
|
|
def initialize(repository, template)
|
|
super(template)
|
|
@repository = repository
|
|
end
|
|
|
|
def link_to_repository
|
|
link_to repository.name,
|
|
controller: 'repositories',
|
|
action: 'show',
|
|
id: repository.project,
|
|
repository_id: repository.identifier_param,
|
|
rev: nil,
|
|
path: nil
|
|
end
|
|
|
|
def git_urls_box
|
|
content_tag(:div, class: 'git_url_box', id: urls_container_id) do
|
|
render_git_urls +
|
|
render_git_url_text +
|
|
render_permissions +
|
|
render_clipboard_button
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def render_git_urls
|
|
content_tag(:ul, render_url_list, class: 'git_url_list')
|
|
end
|
|
|
|
def render_url_list
|
|
s = ''
|
|
repository.available_urls_sorted.each do |key, value|
|
|
s << content_tag(:li, link_to(key.upcase, 'javascript:void(0)').html_safe, options_for_git_url(key, value))
|
|
end
|
|
s.html_safe
|
|
end
|
|
|
|
def options_for_git_url(key, value)
|
|
{ class: 'git_url', data: { url: value[:url], target: element_name, committer: committer_label(value) } }
|
|
end
|
|
|
|
def render_git_url_text
|
|
content_tag(:input, '', class: 'git_url_text', id: url_text_container_id, readonly: 'readonly')
|
|
end
|
|
|
|
def render_permissions
|
|
content_tag(:div, content_tag(:span, '', id: permissions_container_id), class: 'git_url_permissions')
|
|
end
|
|
|
|
def render_clipboard_button
|
|
clipboardjs_button_for(url_text_container_id)
|
|
end
|
|
|
|
def committer_label(value)
|
|
Additionals.true?(value[:committer]) ? l(:label_read_write_permission) : l(:label_read_only_permission)
|
|
end
|
|
|
|
def element_name
|
|
"repository_#{repository.id}"
|
|
end
|
|
|
|
def urls_container_id
|
|
"git_url_box_#{element_name}"
|
|
end
|
|
|
|
def permissions_container_id
|
|
"git_url_permissions_#{element_name}"
|
|
end
|
|
|
|
def url_text_container_id
|
|
"git_url_text_#{element_name}"
|
|
end
|
|
end
|