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 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 tag.ul(render_url_list, class: 'git_url_list') end def render_url_list s = '' repository.available_urls_sorted.each do |key, value| s << 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 tag.input '', class: 'git_url_text', id: url_text_container_id, readonly: 'readonly' end def render_permissions tag.div 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