Añade plugin Redmine Git Hosting 4.0.2

This commit is contained in:
Manuel Cillero 2020-12-05 13:57:05 +01:00
parent 472cb1ea76
commit bdd66d941f
494 changed files with 36768 additions and 0 deletions

View file

@ -0,0 +1,14 @@
module ArchivedRepositoriesHelper
def link_to_revision2(revision, repository, options = {})
repository = repository.repository if repository.is_a?(Project)
text = options.delete(:text) { format_revision(revision) }
rev = revision.respond_to?(:identifier) ? revision.identifier : revision
link_to(
h(text),
{ controller: 'archived_repositories', action: 'revision', id: repository.project, repository_id: repository.identifier_param, rev: rev },
title: l(:label_revision_id, format_revision(revision))
)
end
end

View file

@ -0,0 +1,33 @@
module BootstrapKit::AjaxHelper
def render_flash_messages_as_js(target = '#flash-messages', opts = {})
js_render(target, render_flash_messages, opts).html_safe
end
def js_render_template(target, template, opts = {})
locals = opts.delete(:locals) { {} }
content = render(template: template, locals: locals)
js_render(target, content, opts)
end
def js_render_partial(target, partial, opts = {})
locals = opts.delete(:locals) { {} }
content = render(partial: partial, locals: locals)
js_render(target, content, opts)
end
def js_render(target, content, opts = {})
method = opts.delete(:method) { :inject }
"$('#{target}').#{js_rendering_method(method)}(\"#{escape_javascript(content)}\");\n".html_safe
end
def js_rendering_method(method)
case method
when :append
'append'
when :inject
'html'
when :replace
'replaceWith'
end
end
end

View file

@ -0,0 +1,8 @@
module BootstrapKit::PresenterHelper
def present(object, klass = nil, *args)
klass ||= "#{object.class.base_class}Presenter".constantize
presenter = klass.new(object, self, *args)
yield presenter if block_given?
presenter
end
end

View file

@ -0,0 +1,59 @@
module BootstrapKitHelper
include BootstrapKit::AjaxHelper
include BootstrapKit::PresenterHelper
def bootstrap_load_base
stylesheet_link_tag('bootstrap_custom', plugin: 'redmine_git_hosting') +
bs_include_css('bootstrap_custom')
end
def bootstrap_load_module(bs_module)
method = "load_bs_module_#{bs_module}"
send(method)
end
def checked_image_with_exclamation(checked = true)
checked ? image_tag('toggle_check.png') : image_tag('exclamation.png')
end
private
def bs_include_js(js)
javascript_include_tag "bootstrap/#{js}", plugin: 'redmine_git_hosting'
end
def bs_include_css(css)
stylesheet_link_tag "bootstrap/#{css}", plugin: 'redmine_git_hosting'
end
def load_bs_module_alerts
bs_include_js('bootstrap_alert') +
bs_include_js('bootstrap_alert_helper') +
bs_include_js('bootstrap_transitions') +
bs_include_css('bootstrap_alert') +
bs_include_css('bootstrap_animations') +
bs_include_css('bootstrap_close')
end
def load_bs_module_label
bs_include_css('bootstrap_label')
end
def load_bs_module_modals
bs_include_js('bootstrap_modal')
end
def load_bs_module_sortable
bs_include_js('bootstrap_sortable_helper')
end
def load_bs_module_tables
bs_include_css('bootstrap_tables')
end
def load_bs_module_tooltip
bs_include_js('bootstrap_tooltip') +
bs_include_js('bootstrap_tooltip_helper') +
bs_include_css('bootstrap_tooltip')
end
end

View file

@ -0,0 +1,81 @@
module ExtendProjectsHelper
def render_feature(repository, feature)
method = "#{feature}_feature"
label, css_class, enabled = send(method, repository)
# Get css class
base_class = ['icon-git']
base_class << css_class
base_class << 'icon-git-disabled' unless enabled
# Get label
base_label = []
base_label << label
base_label << "(#{l(:label_disabled)})" unless enabled
content_tag(:i, '', title: base_label.join(' '), class: base_class)
end
def deployment_credentials_feature(repository)
label = l(:label_deployment_credentials)
css_class = 'fas fa-lock'
enabled = repository.deployment_credentials.active.any?
[label, css_class, enabled]
end
def post_receive_urls_feature(repository)
label = l(:label_post_receive_urls)
css_class = 'fas fa-external-link-alt'
enabled = repository.post_receive_urls.active.any?
[label, css_class, enabled]
end
def mirrors_feature(repository)
label = l(:label_repository_mirrors)
css_class = 'fas fa-cloud-upload-alt'
enabled = repository.mirrors.active.any?
[label, css_class, enabled]
end
def git_daemon_feature(repository)
label = l(:label_git_daemon)
css_class = 'fab fa-git'
enabled = repository.git_access_available?
[label, css_class, enabled]
end
def git_http_feature(repository)
label = l(:label_smart_http)
css_class = 'fas fa-cloud-download-alt'
enabled = repository.smart_http_enabled?
[label, css_class, enabled]
end
def git_notify_feature(repository)
label = l(:label_git_notify)
css_class = 'fas fa-bullhorn'
enabled = repository.git_notification_enabled?
[label, css_class, enabled]
end
def protected_branch_feature(repository)
label = l(:label_protected_branch)
css_class = 'fas fa-shield-alt'
enabled = repository.protected_branches_available?
[label, css_class, enabled]
end
def git_annex_feature(repository)
label = l(:label_git_annex)
css_class = 'fas fa-cloud-upload-alt'
enabled = repository.git_annex_enabled?
[label, css_class, enabled]
end
def public_repo_feature(repository)
label = l(:label_public_repo)
css_class = 'fas fa-users'
enabled = repository.public_repo?
[label, css_class, enabled]
end
end

View file

@ -0,0 +1,67 @@
module ExtendRepositoriesHelper
def encoding_field(form, repository)
content_tag(:p) do
form.select(
:path_encoding, [nil] + Setting::ENCODINGS,
label: l(:field_scm_path_encoding)
) + '<br />'.html_safe + l(:text_scm_path_encoding_note)
end
end
def available_download_format(repository, rev = nil)
%w[zip tar tar.gz].map { |f| [f, download_git_revision_repository_path(repository, rev: rev, download_format: f)] }
end
def create_readme_field(form, repository)
return unless repository.new_record?
content_tag(:p) do
hidden_field_tag('repository[create_readme]', 'false', id: '') +
content_tag(:label, l(:label_init_repo_with_readme), for: 'repository_create_readme') +
check_box_tag('repository[create_readme]', 'true', RedmineGitHosting::Config.init_repositories_on_create?)
end
end
def enable_git_annex_field(form, repository)
return unless repository.new_record?
content_tag(:p) do
hidden_field_tag('repository[enable_git_annex]', 'false', id: '') +
content_tag(:label, l(:label_init_repo_with_git_annex), for: 'repository_enable_git_annex') +
check_box_tag('repository[enable_git_annex]', 'true')
end
end
def repository_branches_list(branches)
options_for_select branches.collect { |b| [b.to_s, b.to_s] }, selected: branches.find(&:is_default).to_s
end
def render_repository_quick_jump(repository)
options = repository.project.repositories.map { |r| [r.redmine_name, edit_repository_path(r)] }
select_tag('repository_quick_jump_box',
options_for_select(options, selected: edit_repository_path(repository)),
onchange: 'if (this.value != \'\') { window.location = this.value; }')
end
def link_to_repository(repo, current_repo)
css_class = ['repository', (repo == current_repo ? 'selected' : ''), current_repo.type.split('::')[1].downcase].join(' ')
link_to h(repo.name),
{ controller: 'repositories', action: 'show', id: @project, repository_id: repo.identifier_param, rev: nil, path: nil },
class: css_class
end
def icon_for_url_type(url_type)
font_awesome_icon(RepositoryGitExtra::URLS_ICONS[url_type][:icon])
end
def label_for_url_type(url_type)
RepositoryGitExtra::URLS_ICONS[url_type][:label]
end
def render_options_for_move_repo_select_box(project)
projects = Project.active
.where(Project.allowed_to_condition(User.current, :manage_repository))
.where.not(id: project.id)
project_tree_options_for_select(projects, selected: project) if projects.any?
end
end

View file

@ -0,0 +1,6 @@
module GitHostingUsersHelper
def user_settings_tabs
tabs = super
tabs << { name: 'keys', partial: 'gitolite_public_keys/view', label: :label_public_keys }
end
end

View file

@ -0,0 +1,102 @@
module GitolitePluginSettingsHelper
def render_gitolite_params_status(params)
content_tag(:ul, class: 'list-unstyled') do
content = ''
params.each do |param, installed|
content << content_tag(:li, style: 'padding: 2px;') do
image_tag(image_for_param(installed), style: 'vertical-align: bottom; padding-right: 5px;') +
content_tag(:em, label_for_param(param, installed))
end
end
content.html_safe
end
end
def label_for_param(param, install_status)
install_status == 2 ? "#{param} (#{l(:label_gitolite_hook_untouched)})" : param
end
def image_for_param(install_status)
case install_status
when 0, true
'true.png'
when 1, false
'exclamation.png'
else
'warning.png'
end
end
def render_gitolite_version(version)
if version.nil?
css_class = 'label label-important'
label = l(:label_unknown_gitolite_version)
else
css_class = 'label label-success'
label = version
end
content_tag(:span, label, class: css_class)
end
def render_temp_dir_writeable(state, label)
css_class = state ? 'label label-success' : 'label label-important'
content_tag(:span, label, class: css_class)
end
def gitolite_plugin_settings_tabs
[
{ name: 'gitolite_config_ssh', partial: 'settings/redmine_git_hosting/gitolite_config_ssh', label: :label_tab_ssh },
{ name: 'gitolite_config_storage', partial: 'settings/redmine_git_hosting/gitolite_config_storage', label: :label_tab_storage },
{ name: 'gitolite_config_file', partial: 'settings/redmine_git_hosting/gitolite_config_file', label: :label_tab_config_file },
{ name: 'gitolite_config_global', partial: 'settings/redmine_git_hosting/gitolite_config_global', label: :label_tab_global },
{ name: 'gitolite_config_access', partial: 'settings/redmine_git_hosting/gitolite_config_access', label: :label_tab_access },
{ name: 'gitolite_config_hooks', partial: 'settings/redmine_git_hosting/gitolite_config_hooks', label: :label_tab_hooks },
{ name: 'gitolite_config_cache', partial: 'settings/redmine_git_hosting/gitolite_config_cache', label: :label_tab_cache },
{ name: 'gitolite_config_notify', partial: 'settings/redmine_git_hosting/gitolite_config_notify', label: :label_tab_notify },
{ name: 'gitolite_redmine_config', partial: 'settings/redmine_git_hosting/redmine_config', label: :label_tab_redmine },
{ name: 'gitolite_sidekiq_interface', partial: 'settings/redmine_git_hosting/sidekiq_interface', label: :label_tab_sidekiq_interface },
{ name: 'gitolite_config_test', partial: 'settings/redmine_git_hosting/gitolite_config_test', label: :label_tab_config_test },
{ name: 'gitolite_recycle_bin', partial: 'settings/redmine_git_hosting/gitolite_recycle_bin', label: :label_tab_gitolite_recycle_bin },
{ name: 'gitolite_rescue', partial: 'settings/redmine_git_hosting/gitolite_rescue', label: :label_tab_gitolite_rescue }
]
end
def git_cache_options
[
['Cache Disabled', '0'],
['Until next commit', '-1'],
['1 Minute or until next commit', '60'],
['15 Minutes or until next commit', '900'],
['1 Hour or until next commit', '3600'],
['1 Day or until next commit', '86400']
]
end
def log_level_options
RedmineGitHosting::Logger::LOG_LEVELS.map { |level| [l("label_#{level}"), level] }
end
def render_rugged_mandatory_features
content = ''
RedmineGitHosting::Config.rugged_mandatory_features.each do |feature|
opts = if RedmineGitHosting::Config.rugged_features.include?(feature)
{ class: 'label label-success' }
else
{ class: 'label label-important' }
end
content << content_tag(:span, feature, opts) + "\n"
end
content.html_safe
end
def render_rugged_optional_features
content = ''
RedmineGitHosting::Config.rugged_features.each do |feature|
unless RedmineGitHosting::Config.rugged_mandatory_features.include?(feature)
opts = { class: 'label label-success' }
content << content_tag(:span, feature, opts)
end
end
content.html_safe
end
end

View file

@ -0,0 +1,16 @@
module GitolitePublicKeysHelper
def keylabel(key)
key.user == User.current ? "#{key.title}" : "#{key.user.login}@#{key.title}"
end
def can_create_deployment_keys_for_some_project(theuser = User.current)
return true if theuser.admin?
theuser.projects_by_role.each_key do |role|
return true if role.allowed_to?(:create_repository_deployment_credentials)
end
return false
end
end

View file

@ -0,0 +1,19 @@
module RepositoryDeploymentCredentialsHelper
def build_list_of_keys(user_keys, other_keys, disabled_keys)
option_array = [[l(:label_deployment_credential_select_deploy_key), -1]]
option_array += user_keys.map { |key| [keylabel(key), key.id] }
if !other_keys.empty?
option_array2 = other_keys.map { |key| [keylabel(key), key.id] }
maxlen = (option_array + option_array2).map { |x| x.first.length }.max
extra = ([maxlen - l(:select_other_keys).length - 2, 6].max) / 2
option_array += [[('-' * extra) + ' ' + l(:select_other_keys) + ' ' + ('-' * extra), -2]]
option_array += option_array2
end
options_for_select(option_array, selected: -1, disabled: [-2] + disabled_keys.map(&:id))
end
end

View file

@ -0,0 +1,10 @@
module RepositoryGitConfigKeysHelper
def git_config_key_options
[
[l(:label_git_key_type_config), 'RepositoryGitConfigKey::GitConfig'],
[l(:label_git_key_type_option), 'RepositoryGitConfigKey::Option']
]
end
end

View file

@ -0,0 +1,45 @@
module RepositoryMirrorsHelper
# Mirror Mode
def mirror_mode(mirror)
[l(:label_mirror_full_mirror), l(:label_mirror_forced_update), l(:label_mirror_fast_forward)][mirror.push_mode]
end
# Refspec for mirrors
def refspec(mirror, max_refspec = 0)
if mirror.mirror_mode?
l(:all_references)
else
result = []
result << l(:all_branches) if mirror.include_all_branches
result << l(:all_tags) if mirror.include_all_tags
result << mirror.explicit_refspec if (max_refspec == 0) || ((1..max_refspec) === mirror.explicit_refspec.length)
result << l(:explicit) if (max_refspec > 0) && (mirror.explicit_refspec.length > max_refspec)
result.join(',<br />')
end
end
def mirrors_options
[
[l(:label_mirror_full_mirror), 0],
[l(:label_mirror_forced_update), 1],
[l(:label_mirror_fast_forward), 2]
]
end
def render_push_state(mirror, error)
if error
status = l(:label_mirror_push_fail)
status_css = 'important'
else
status = l(:label_mirror_push_sucess)
status_css = 'success'
end
l(:label_mirror_push_info_html, mirror_url: mirror.url, status: status, status_css: status_css).html_safe
end
end

View file

@ -0,0 +1,15 @@
module RepositoryPostReceiveUrlsHelper
# Post-receive Mode
def post_receive_mode(prurl)
label = []
if prurl.github_mode?
label << l(:label_github_post)
label << "(#{l(:label_split_payloads)})" if prurl.split_payloads?
else
label << l(:label_empty_get)
end
label.join(' ')
end
end