Añade plugin Redmine Git Hosting 4.0.2
This commit is contained in:
parent
472cb1ea76
commit
bdd66d941f
494 changed files with 36768 additions and 0 deletions
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue