Commit 98de0935 authored by Nick Thomas's avatar Nick Thomas

Merge branch 'master' into 'missing-indexes-to-geo-event-log'

# Conflicts:
#   db/schema.rb
parents 74afe7ef 76d1b79b
......@@ -654,10 +654,15 @@ GitLabDropdown = (function() {
if (!selected) {
fieldName = this.options.fieldName;
field = this.dropdown.parent().find("input[name='" + fieldName + "'][value='" + value + "']");
if (value) {
field = this.dropdown.parent().find(`input[name='${fieldName}'][value='${value}']`);
if (field.length) {
selected = true;
}
} else {
field = this.dropdown.parent().find(`input[name='${fieldName}']`);
selected = !field.length;
}
}
// Set URL
if (this.options.url != null) {
......
......@@ -757,6 +757,7 @@
button {
border-radius: 0;
padding: 8px 16px;
white-space: normal;
// make sure the text color is not overriden
&.text-danger {
......
......@@ -9,16 +9,18 @@
margin-bottom: 20px;
}
.user-callout-copy {
max-width: 700px;
margin-left: auto;
margin-right: auto;
}
.bordered-box {
padding: 20px;
border-color: $border-color;
background-color: $white-light;
align-items: flex-start;
.user-callout-copy {
max-width: 700px;
}
.close {
.dismiss-icon {
......@@ -40,6 +42,10 @@
}
}
.user-callout.promotion-callout.promotion-empty-page {
margin-top: 56px;
}
.promotion-modal {
.modal-dialog {
......
......@@ -190,6 +190,8 @@ input[type="checkbox"]:hover {
}
.search-holder {
@include new-style-dropdown;
@media (min-width: $screen-sm-min) {
display: -webkit-flex;
display: flex;
......
......@@ -69,4 +69,8 @@ class Groups::HooksController < Groups::ApplicationController
:wiki_page_events
)
end
def check_group_webhooks_available!
render_404 unless @group.feature_available?(:group_webhooks) || LicenseHelper.show_promotions?(current_user)
end
end
......@@ -35,6 +35,8 @@ module Geo
Array([message, details].compact.join("\n"))
end
rescue OpenSSL::Cipher::CipherError
['Error decrypting the Geo secret from the database. Check that the primary uses the correct db_key_base.']
rescue HTTParty::Error, Timeout::Error, SocketError, Errno::ECONNRESET, Errno::ECONNREFUSED => e
[e.message]
end
......
......@@ -28,9 +28,6 @@ module Projects
return @project
end
# EE-only: Repository size limit comes as MB from the view
set_repository_size_limit_as_bytes
set_project_name_from_path
# get namespace id
......@@ -107,11 +104,6 @@ module Projects
system_hook_service.execute_hooks_for(@project, :create)
setup_authorizations
# EE-only
create_predefined_push_rule
@project.group&.refresh_members_authorized_projects
end
# Refresh the current user's authorizations inline (so they can access the
......@@ -161,11 +153,6 @@ module Projects
end
end
def set_repository_size_limit_as_bytes
limit = params.delete(:repository_size_limit)
@project.repository_size_limit = Gitlab::Utils.try_megabytes_to_bytes(limit) if limit
end
def set_project_name_from_path
# Set project name from path
if @project.name.present? && @project.path.present?
......@@ -179,16 +166,5 @@ module Projects
@project.path = @project.name.dup.parameterize
end
end
def create_predefined_push_rule
return unless project.feature_available?(:push_rules)
predefined_push_rule = PushRule.find_by(is_sample: true)
if predefined_push_rule
push_rule = predefined_push_rule.dup.tap { |gh| gh.is_sample = false }
project.push_rule = push_rule
end
end
end
end
= render "groups/settings_head"
.row.prepend-top-default
- if @group.feature_available?(:group_webhooks)
.row.prepend-top-default
.col-lg-3
%h4.prepend-top-0
= page_title
......@@ -22,3 +23,5 @@
- else
%p.settings-message.text-center.append-bottom-0
No webhooks found, add one in the form above.
- elsif show_promotions?
= render 'shared/promotions/promote_group_webhooks'
......@@ -35,8 +35,7 @@
%ul
- if can_update_issue
%li= link_to 'Edit', edit_project_issue_path(@project, @issue)
/ TODO: simplify condition back #36860
- if @issue.author && current_user != @issue.author
- unless current_user == @issue.author
%li= link_to 'Report abuse', new_abuse_report_path(user_id: @issue.author.id, ref_url: issue_url(@issue))
- if can_update_issue
%li= link_to 'Close issue', issue_path(@issue, issue: { state_event: :close }, format: 'json'), class: "btn-close #{issue_button_visibility(@issue, true)}", title: 'Close issue'
......
<svg xmlns="http://www.w3.org/2000/svg" width="78" height="82" viewBox="0 0 78 82"><g fill="none" fill-rule="evenodd"><path fill="#F9F9F9" d="M2.12 42c-.08.99-.12 1.99-.12 3 0 20.435 16.565 37 37 37s37-16.565 37-37c0-1.01-.04-2.01-.12-3C74.353 61.032 58.425 76 39 76 19.575 76 3.647 61.032 2.12 42z"/><path fill="#EEE" fill-rule="nonzero" d="M39 78C17.46 78 0 60.54 0 39S17.46 0 39 0s39 17.46 39 39-17.46 39-39 39zm0-4c19.33 0 35-15.67 35-35S58.33 4 39 4 4 19.67 4 39s15.67 35 35 35z"/><path fill="#E1DBF2" d="M25 50a6 6 0 1 0 12 0V38h4v12a6 6 0 1 0 12 0h-2a1 1 0 0 1-.8-1.6l4-5.333a1 1 0 0 1 1.6 0l4 5.333A1 1 0 0 1 59 50h-2c0 5.523-4.477 10-10 10a9.985 9.985 0 0 1-8-3.999A9.985 9.985 0 0 1 31 60c-5.523 0-10-4.477-10-10h-2a1 1 0 0 1-.8-1.6l4-5.333a1 1 0 0 1 1.6 0l4 5.333A1 1 0 0 1 27 50h-2z"/><path fill="#6B4FBB" d="M42 19h1a6 6 0 0 1 6 6v9a6 6 0 0 1-6 6h-8a6 6 0 0 1-6-6v-9a6 6 0 0 1 6-6h1v-1a3 3 0 0 1 6 0v1zm-7 4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-8z"/></g></svg>
\ No newline at end of file
......@@ -9,7 +9,6 @@
class: "hidden-xs hidden-sm btn btn-grouped btn-reopen #{issuable_button_visibility(issuable, false)}", title: "Reopen #{display_issuable_type}"
- elsif can_update && !is_current_user
= render 'shared/issuable/close_reopen_report_toggle', issuable: issuable
- elsif issuable.author
/ TODO: change back to else #36860
- else
= link_to 'Report abuse', new_abuse_report_path(user_id: issuable.author.id, ref_url: issuable_url(issuable)),
class: 'hidden-xs hidden-sm btn btn-grouped btn-close-color', title: 'Report abuse'
......@@ -37,8 +37,6 @@
%li.divider.droplab-item-ignore
/ TODO: remove condition #36860
- if issuable.author
%li.report-item{ data: { text: 'Report abuse', url: new_abuse_report_path(user_id: issuable.author.id, ref_url: issuable_url(issuable)),
button_class: "#{button_class} btn-close-color", toggle_class: "#{toggle_class} btn-close-color", method: '' } }
%button.btn.btn-transparent
......
---
title: 'Geo: Gracefully catch incorrect db key on primary'
merge_request: 2819
author:
type: fixed
---
title: Migrate issues authored by deleted user to the Ghost user
merge_request:
author:
type: fixed
class MigrateIssuesToGhostUser < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
class User < ActiveRecord::Base
self.table_name = 'users'
end
class Issue < ActiveRecord::Base
self.table_name = 'issues'
include ::EachBatch
end
def reset_column_in_migration_models
ActiveRecord::Base.clear_cache!
::User.reset_column_information
end
def up
reset_column_in_migration_models
# we use the model method because rewriting it is too complicated and would require copying multiple methods
ghost_id = ::User.ghost.id
Issue.where('NOT EXISTS (?)', User.unscoped.select(1).where('issues.author_id = users.id')).each_batch do |relation|
relation.update_all(author_id: ghost_id)
end
end
def down
end
end
class AddForeignKeyToIssueAuthor < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
def up
add_concurrent_foreign_key(:issues, :users, column: :author_id, on_delete: :nullify)
end
def down
remove_foreign_key(:issues, column: :author_id)
end
end
......@@ -2075,6 +2075,7 @@ ActiveRecord::Schema.define(version: 20170905202320) do
add_foreign_key "issue_links", "issues", column: "target_id", name: "fk_e71bb44f1f", on_delete: :cascade
add_foreign_key "issue_metrics", "issues", on_delete: :cascade
add_foreign_key "issues", "projects", name: "fk_899c8f3231", on_delete: :cascade
add_foreign_key "issues", "users", column: "author_id", name: "fk_05f1e72feb", on_delete: :cascade
add_foreign_key "label_priorities", "labels", on_delete: :cascade
add_foreign_key "label_priorities", "projects", on_delete: :cascade
add_foreign_key "labels", "namespaces", column: "group_id", on_delete: :cascade
......
......@@ -4,11 +4,15 @@ module EE
def execute
raise NotImplementedError unless defined?(super)
limit = params.delete(:repository_size_limit)
mirror = params.delete(:mirror)
mirror_user_id = params.delete(:mirror_user_id)
mirror_trigger_builds = params.delete(:mirror_trigger_builds)
super do |project|
# Repository size limit comes as MB from the view
project.repository_size_limit = ::Gitlab::Utils.try_megabytes_to_bytes(limit) if limit
if mirror && project.feature_available?(:repository_mirrors)
project.mirror = mirror unless mirror.nil?
project.mirror_trigger_builds = mirror_trigger_builds unless mirror_trigger_builds.nil?
......@@ -16,6 +20,29 @@ module EE
end
end
end
private
def after_create_actions
raise NotImplementedError unless defined?(super)
super
create_predefined_push_rule
@project.group&.refresh_members_authorized_projects
end
def create_predefined_push_rule
return unless project.feature_available?(:push_rules)
predefined_push_rule = PushRule.find_by(is_sample: true)
if predefined_push_rule
push_rule = predefined_push_rule.dup.tap { |gh| gh.is_sample = false }
project.push_rule = push_rule
end
end
end
end
end
......@@ -4,7 +4,7 @@
%span
LDAP Group
- if @group.feature_available?(:group_webhooks)
- if @group.feature_available?(:group_webhooks) || show_promotions?
= nav_link(path: 'hooks#index') do
= link_to group_hooks_path(@group), title: 'Webhooks' do
%span
......
.center.promotion-backdrop
.center.user-callout.promotion-callout
.svg-container
= custom_icon('icon_contribution_analytics')
.user-callout-copy
%h4
- if current_application_settings.should_check_namespace_plan?
Upgrade your plan to activate Contribution Analytics.
= _('Upgrade your plan to activate Contribution Analytics.')
- else
Track activity with Contribution Analytics.
= _('Track activity with Contribution Analytics.')
%p
With contribution analytics you can have an overview for the activity of issues, merge requests and push events of your organization and its members.
= link_to 'Read more', help_page_path('user/analytics/contribution_analytics.html'), target: '_blank'
= _('With contribution analytics you can have an overview for the activity of issues, merge requests and push events of your organization and its members.')
= link_to _('Read more'), help_page_path('user/analytics/contribution_analytics.md'), target: '_blank'
= render 'shared/promotions/promotion_link_project'
.center.user-callout.promotion-callout.promotion-empty-page
.svg-container
= custom_icon('icon_group_webhook')
.user-callout-copy
%h4
- if current_application_settings.should_check_namespace_plan?
= _('Upgrade your plan to activate Group Webhooks.')
- else
= _('Add Group Webhooks and GitLab Enterprise Edition.')
%p
= _('Webhooks allow you to trigger a URL if, for example, new code is pushed or a new issue is created. You can configure webhooks to listen for specific events like pushes, issues or merge requests. Group webhooks will apply to all projects in a group, allowing you to standardize webhook functionality across your entire group.')
= link_to _('Read more'), help_page_path('user/project/integrations/webhooks.html'), target: '_blank'
.prepend-top-15
= render 'shared/promotions/promotion_link_project'
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 10:02-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: Bulgarian\n"
"Language: bg_BG\n"
......@@ -515,15 +515,6 @@ msgstr "Представяме Ви анализа на циклите"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "Задачи за последния месец"
msgid "Jobs for last week"
msgstr "Задачи за последната седмица"
msgid "Jobs for last year"
msgstr "Задачи за последната година"
msgid "LFSStatus|Disabled"
msgstr "Изключено"
......@@ -764,6 +755,15 @@ msgstr "Схеми"
msgid "Pipelines charts"
msgstr "Графики за схемите"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "всички"
......@@ -1285,3 +1285,4 @@ msgid "parent"
msgid_plural "parents"
msgstr[0] "родител"
msgstr[1] "родители"
This diff is collapsed.
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 09:53-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: Esperanto\n"
"Language: eo_UY\n"
......@@ -515,15 +515,6 @@ msgstr "Ni prezentas al vi la ciklan analizon"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "Taskoj po la lasta monato"
msgid "Jobs for last week"
msgstr "Taskoj po la lasta semajno"
msgid "Jobs for last year"
msgstr "Taskoj po la lasta jaro"
msgid "LFSStatus|Disabled"
msgstr "Malŝaltita"
......@@ -764,6 +755,15 @@ msgstr "Ĉenstabloj"
msgid "Pipelines charts"
msgstr "Ĉenstablaj diagramoj"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "ĉiuj"
......@@ -1285,3 +1285,4 @@ msgid "parent"
msgid_plural "parents"
msgstr[0] "patro"
msgstr[1] "patroj"
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 09:37-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
......@@ -515,15 +515,6 @@ msgstr "Introducción a Cycle Analytics"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "Trabajos del mes pasado"
msgid "Jobs for last week"
msgstr "Trabajos de la semana pasada"
msgid "Jobs for last year"
msgstr "Trabajos del año pasado"
msgid "LFSStatus|Disabled"
msgstr "Deshabilitado"
......@@ -764,6 +755,15 @@ msgstr ""
msgid "Pipelines charts"
msgstr "Gráficos de los pipelines"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "todos"
......@@ -1285,3 +1285,4 @@ msgid "parent"
msgid_plural "parents"
msgstr[0] "padre"
msgstr[1] "padres"
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 09:53-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: French\n"
"Language: fr_FR\n"
......@@ -515,15 +515,6 @@ msgstr "Introduction à l'analyseur de cycle"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "Tâches pour le mois dernier"
msgid "Jobs for last week"
msgstr "Tâches pour la semaine dernière"
msgid "Jobs for last year"
msgstr "Tâches pour l'année dernière"
msgid "LFSStatus|Disabled"
msgstr "Désactivé"
......@@ -764,6 +755,15 @@ msgstr ""
msgid "Pipelines charts"
msgstr "Graphique des pipelines"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "Tous"
......@@ -1285,3 +1285,4 @@ msgid "parent"
msgid_plural "parents"
msgstr[0] ""
msgstr[1] ""
......@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-08-24 09:29+0200\n"
"POT-Creation-Date: 2017-09-06 08:32+0200\n"
"PO-Revision-Date: 2017-09-06 08:32+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
......@@ -59,9 +59,18 @@ msgstr ""
msgid "About auto deploy"
msgstr ""
msgid "Abuse Reports"
msgstr ""
msgid "Access Tokens"
msgstr ""
msgid "Access to failing storages has been temporarily disabled to allow the mount to recover. Reset storage information after the issue has been resolved to allow access again."
msgstr ""
msgid "Account"
msgstr ""
msgid "Active"
msgstr ""
......@@ -86,6 +95,12 @@ msgstr ""
msgid "All"
msgstr ""
msgid "Appearances"
msgstr ""
msgid "Applications"
msgstr ""
msgid "Archived project! Repository is read-only"
msgstr ""
......@@ -107,6 +122,63 @@ msgstr ""
msgid "Attach a file by drag &amp; drop or %{upload_link}"
msgstr ""
msgid "Authentication log"
msgstr ""
msgid "Billing"
msgstr ""
msgid "BillingPlans|%{group_name} is currently on the %{plan_link} plan."
msgstr ""
msgid "BillingPlans|Automatic downgrade and upgrade to some plans is currently not available."
msgstr ""
msgid "BillingPlans|Current plan"
msgstr ""
msgid "BillingPlans|Customer Support"
msgstr ""
msgid "BillingPlans|Learn more about each plan by reading our %{faq_link}."
msgstr ""
msgid "BillingPlans|Manage plan"
msgstr ""
msgid "BillingPlans|Please contact %{customer_support_link} in that case."
msgstr ""
msgid "BillingPlans|See all %{plan_name} features"
msgstr ""
msgid "BillingPlans|This group uses the plan associated with its parent group."
msgstr ""
msgid "BillingPlans|To manage the plan for this group, visit the billing section of %{parent_billing_page_link}."
msgstr ""
msgid "BillingPlans|Upgrade"
msgstr ""
msgid "BillingPlans|You are currently on the %{plan_link} plan."
msgstr ""
msgid "BillingPlans|frequently asked questions"
msgstr ""
msgid "BillingPlans|monthly"
msgstr ""
msgid "BillingPlans|paid annually at %{price_per_year}"
msgstr ""
msgid "BillingPlans|per user"
msgstr ""
msgid "Billinglans|Downgrade"
msgstr ""
msgid "Branch"
msgid_plural "Branches"
msgstr[0] ""
......@@ -139,6 +211,9 @@ msgstr ""
msgid "ByAuthor|by"
msgstr ""
msgid "CI / CD"
msgstr ""
msgid "CI configuration"
msgstr ""
......@@ -166,6 +241,9 @@ msgstr ""
msgid "Charts"
msgstr ""
msgid "Chat"
msgstr ""
msgid "Cherry-pick this commit"
msgstr ""
......@@ -261,12 +339,18 @@ msgstr ""
msgid "Compare"
msgstr ""
msgid "Container Registry"
msgstr ""
msgid "Contribution guide"
msgstr ""
msgid "Contributors"
msgstr ""
msgid "Copy SSH public key to clipboard"
msgstr ""
msgid "Copy URL to clipboard"
msgstr ""
......@@ -353,6 +437,9 @@ msgid_plural "Deploys"
msgstr[0] ""
msgstr[1] ""
msgid "Deploy Keys"
msgstr ""
msgid "Description"
msgstr ""
......@@ -401,6 +488,9 @@ msgstr ""
msgid "Edit Pipeline Schedule %{id}"
msgstr ""
msgid "Emails"
msgstr ""
msgid "EventFilterBy|Filter by all"
msgstr ""
......@@ -466,6 +556,12 @@ msgstr ""
msgid "From merge request merge until deploy to production"
msgstr ""
msgid "GPG Keys"
msgstr ""
msgid "Geo Nodes"
msgstr ""
msgid "Git storage health information has been reset"
msgstr ""
......@@ -478,6 +574,9 @@ msgstr ""
msgid "GoToYourFork|Fork"
msgstr ""
msgid "Group overview"
msgstr ""
msgid "Health Check"
msgstr ""
......@@ -499,6 +598,9 @@ msgstr ""
msgid "Home"
msgstr ""
msgid "Hooks"
msgstr ""
msgid "Housekeeping successfully started"
msgstr ""
......@@ -517,12 +619,18 @@ msgstr ""
msgid "Issue events"
msgstr ""
msgid "Issues"
msgstr ""
msgid "LFSStatus|Disabled"
msgstr ""
msgid "LFSStatus|Enabled"
msgstr ""
msgid "Labels"
msgstr ""
msgid "Last %d day"
msgid_plural "Last %d days"
msgstr[0] ""
......@@ -555,20 +663,38 @@ msgstr ""
msgid "Leave project"
msgstr ""
msgid "License"
msgstr ""
msgid "Limited to showing %d event at most"
msgid_plural "Limited to showing %d events at most"
msgstr[0] ""
msgstr[1] ""
msgid "Locked Files"
msgstr ""
msgid "Median"
msgstr ""
msgid "Members"
msgstr ""
msgid "Merge Requests"
msgstr ""
msgid "Merge events"
msgstr ""
msgid "Messages"
msgstr ""
msgid "MissingSSHKeyWarningLink|add an SSH key"
msgstr ""
msgid "Monitoring"
msgstr ""
msgid "More information is available|here"
msgstr ""
......@@ -670,6 +796,9 @@ msgstr ""
msgid "NotificationLevel|Watch"
msgstr ""
msgid "Notifications"
msgstr ""
msgid "OfSearchInADropdown|Filter"
msgstr ""
......@@ -679,9 +808,15 @@ msgstr ""
msgid "Options"
msgstr ""
msgid "Overview"
msgstr ""
msgid "Owner"
msgstr ""
msgid "Password"
msgstr ""
msgid "Pipeline"
msgstr ""
......@@ -694,6 +829,9 @@ msgstr ""
msgid "Pipeline Schedules"
msgstr ""
msgid "Pipeline quota"
msgstr ""
msgid "PipelineCharts|Failed:"
msgstr ""
......@@ -778,6 +916,12 @@ msgstr ""
msgid "Pipeline|with stages"
msgstr ""
msgid "Preferences"
msgstr ""
msgid "Profile Settings"
msgstr ""
msgid "Project"
msgstr ""
......@@ -814,6 +958,9 @@ msgstr ""
msgid "Project home"
msgstr ""
msgid "Project overview"
msgstr ""
msgid "ProjectActivityRSS|Subscribe"
msgstr ""
......@@ -838,6 +985,9 @@ msgstr ""
msgid "ProjectNetworkGraph|Graph"
msgstr ""
msgid "Push Rules"
msgstr ""
msgid "Push events"
msgstr ""
......@@ -898,6 +1048,9 @@ msgstr ""
msgid "Revert this merge request"
msgstr ""
msgid "SSH Keys"
msgstr ""
msgid "Save pipeline schedule"
msgstr ""
......@@ -922,6 +1075,9 @@ msgstr ""
msgid "Select target branch"
msgstr ""
msgid "Service Templates"
msgstr ""
msgid "Set a password on your account to pull or push via %{protocol}."
msgstr ""
......@@ -937,14 +1093,23 @@ msgstr ""
msgid "SetPasswordToCloneLink|set a password"
msgstr ""
msgid "Settings"
msgstr ""
msgid "Showing %d event"
msgid_plural "Showing %d events"
msgstr[0] ""
msgstr[1] ""
msgid "Snippets"
msgstr ""
msgid "Source code"
msgstr ""
msgid "Spam Logs"
msgstr ""
msgid "Specify the following URL during the Runner setup:"
msgstr ""
......@@ -1221,6 +1386,9 @@ msgstr ""
msgid "We don't have enough data to show this stage."
msgstr ""
msgid "Wiki"
msgstr ""
msgid "Withdraw Access Request"
msgstr ""
......
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 10:25-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: Italian\n"
"Language: it_IT\n"
......@@ -515,15 +515,6 @@ msgstr "Introduzione delle Analisi Cicliche"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "Jobs dell'ultimo mese"
msgid "Jobs for last week"
msgstr "Jobs dell'ultima settimana"
msgid "Jobs for last year"
msgstr "Jobs dell'ultimo anno"
msgid "LFSStatus|Disabled"
msgstr "Disabilitato"
......@@ -764,6 +755,15 @@ msgstr "Pipeline"
msgid "Pipelines charts"
msgstr "Grafici pipeline"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "tutto"
......@@ -1285,3 +1285,4 @@ msgid "parent"
msgid_plural "parents"
msgstr[0] ""
msgstr[1] ""
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 10:14-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
......@@ -45,7 +45,7 @@ msgstr ""
msgid "1 pipeline"
msgid_plural "%d pipelines"
msgstr[0] "1 個のパイプライン"
msgstr[0] "%d 個のパイプライン"
msgid "A collection of graphs regarding Continuous Integration"
msgstr "CIについてのグラフ"
......@@ -507,15 +507,6 @@ msgstr "サイクル分析のご紹介"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "先月のジョブ"
msgid "Jobs for last week"
msgstr "先週のジョブ"
msgid "Jobs for last year"
msgstr "昨年のジョブ"
msgid "LFSStatus|Disabled"
msgstr "無効"
......@@ -753,6 +744,15 @@ msgstr "パイプライン"
msgid "Pipelines charts"
msgstr "パイプラインチャート"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "全件"
......@@ -1268,3 +1268,4 @@ msgstr "メール通知"
msgid "parent"
msgid_plural "parents"
msgstr[0] "親"
This diff is collapsed.
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 10:14-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
......@@ -515,15 +515,6 @@ msgstr "Apresentando a Análise de Ciclo"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "Jobs no último mês"
msgid "Jobs for last week"
msgstr "Jobs na última semana"
msgid "Jobs for last year"
msgstr "Jobs no último ano"
msgid "LFSStatus|Disabled"
msgstr "Desabilitado"
......@@ -764,6 +755,15 @@ msgstr ""
msgid "Pipelines charts"
msgstr "Gráficos de pipelines"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "todos"
......@@ -1285,3 +1285,4 @@ msgid "parent"
msgid_plural "parents"
msgstr[0] "pai"
msgstr[1] "pais"
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 09:41-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
......@@ -95,7 +95,7 @@ msgid "Are you sure you want to delete this pipeline schedule?"
msgstr "Вы действительно хотите удалить это расписание конвейера?"
msgid "Are you sure you want to discard your changes?"
msgstr ""
msgstr "Вы уверены, что Вы хотите отменить Ваши изменения?"
msgid "Are you sure you want to reset registration token?"
msgstr ""
......@@ -104,7 +104,7 @@ msgid "Are you sure you want to reset the health check token?"
msgstr ""
msgid "Are you sure?"
msgstr ""
msgstr "Вы уверены?"
msgid "Attach a file by drag &amp; drop or %{upload_link}"
msgstr "Приложить файл через drag &amp; drop или %{upload_link}"
......@@ -149,7 +149,7 @@ msgid "Cancel"
msgstr "Отмена"
msgid "Cancel edit"
msgstr ""
msgstr "Отменить редактирование"
msgid "ChangeTypeActionLabel|Pick into branch"
msgstr "Выбрать в ветке"
......@@ -230,7 +230,7 @@ msgid "CiStatus|running"
msgstr "выполняется"
msgid "Comments"
msgstr ""
msgstr "Комментарии"
msgid "Commit"
msgid_plural "Commits"
......@@ -281,7 +281,7 @@ msgid "Create New Directory"
msgstr "Создать директорию"
msgid "Create a new branch"
msgstr ""
msgstr "Создать новую ветку"
msgid "Create a personal access token on your account to pull or push via %{protocol}."
msgstr "Создать личный токен на аккаунте для получения или отправки через %{protocol}."
......@@ -368,7 +368,7 @@ msgid "Directory name"
msgstr "Каталог"
msgid "Discard changes"
msgstr ""
msgstr "Отменить изменения"
msgid "Don't show again"
msgstr "Не показывать снова"
......@@ -476,7 +476,7 @@ msgid "Git storage health information has been reset"
msgstr ""
msgid "GitLab Runner section"
msgstr ""
msgstr "Секция Gitlab Runner"
msgid "Go to your fork"
msgstr "Перейти к вашему форку"
......@@ -512,7 +512,7 @@ msgid "Import repository"
msgstr "Импорт репозитория"
msgid "Install a Runner compatible with GitLab CI"
msgstr ""
msgstr "Установите Gitlab Runner совместимый с Gitlab CI"
msgid "Interval Pattern"
msgstr "Шаблон интервала"
......@@ -523,15 +523,6 @@ msgstr "Внедрение Цикла Аналитик"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "Работы за прошлый месяц"
msgid "Jobs for last week"
msgstr "Работы за прошлую неделю"
msgid "Jobs for last year"
msgstr "Работы за прошлый год"
msgid "LFSStatus|Disabled"
msgstr "Отключено"
......@@ -775,6 +766,15 @@ msgstr "Конвейер"
msgid "Pipelines charts"
msgstr "Диаграмма конвейера"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "все"
......@@ -1302,3 +1302,4 @@ msgid_plural "parents"
msgstr[0] "источник"
msgstr[1] "источники"
msgstr[2] "источники"
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gitlab-ee\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-18 14:15+0530\n"
"PO-Revision-Date: 2017-08-23 09:49-0400\n"
"POT-Creation-Date: 2017-08-24 09:29+0200\n"
"PO-Revision-Date: 2017-09-06 02:28-0400\n"
"Last-Translator: gitlab <mbartlett+crowdin@gitlab.com>\n"
"Language-Team: Ukrainian\n"
"Language: uk_UA\n"
......@@ -523,15 +523,6 @@ msgstr "Представляємо аналітику циклу"
msgid "Issue events"
msgstr ""
msgid "Jobs for last month"
msgstr "Кількість завдань за останній місяць"
msgid "Jobs for last week"
msgstr "Кількість завдань за останній тиждень"
msgid "Jobs for last year"
msgstr "Кількість завдань за останній рік"
msgid "LFSStatus|Disabled"
msgstr "Вимкнено"
......@@ -775,6 +766,15 @@ msgstr "Конвеєри"
msgid "Pipelines charts"
msgstr "Чарти Конвеєрів"
msgid "Pipelines for last month"
msgstr ""
msgid "Pipelines for last week"
msgstr ""
msgid "Pipelines for last year"
msgstr ""
msgid "Pipeline|all"
msgstr "всі"
......@@ -1302,3 +1302,4 @@ msgid_plural "parents"
msgstr[0] "джерело"
msgstr[1] "джерела"
msgstr[2] "джерел"
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -40,18 +40,4 @@ feature 'Issue Detail', :js do
end
end
end
context 'when authored by a user who is later deleted' do
before do
issue.update_attribute(:author_id, nil)
sign_in(user)
visit project_issue_path(project, issue)
end
it 'shows the issue' do
page.within('.issuable-details') do
expect(find('h2')).to have_content(issue.title)
end
end
end
end
......@@ -249,4 +249,19 @@ describe 'Promotions', js: true do
expect(find('.user-callout-copy')).to have_content 'Track activity with Contribution Analytics.'
end
end
describe 'for group webhooks' do
before do
allow(License).to receive(:current).and_return(nil)
stub_application_setting(check_namespace_plan: false)
group.add_owner(user)
sign_in(user)
end
it 'should appear on the page' do
visit group_hooks_path(group)
expect(find('.user-callout-copy')).to have_content 'Add Group Webhooks'
end
end
end
......@@ -4,7 +4,10 @@ import '~/gl_dropdown';
import '~/lib/utils/common_utils';
import '~/lib/utils/url_utility';
(() => {
describe('glDropdown', function describeDropdown() {
preloadFixtures('static/gl_dropdown.html.raw');
loadJSONFixtures('projects.json');
const NON_SELECTABLE_CLASSES = '.divider, .separator, .dropdown-header, .dropdown-menu-empty-link';
const SEARCH_INPUT_SELECTOR = '.dropdown-input-field';
const ITEM_SELECTOR = `.dropdown-content li:not(${NON_SELECTABLE_CLASSES})`;
......@@ -39,10 +42,6 @@ import '~/lib/utils/url_utility';
remoteCallback = callback.bind({}, data);
};
describe('Dropdown', function describeDropdown() {
preloadFixtures('static/gl_dropdown.html.raw');
loadJSONFixtures('projects.json');
function initDropDown(hasRemote, isFilterable, extraOpts = {}) {
const options = Object.assign({
selectable: true,
......@@ -52,9 +51,8 @@ import '~/lib/utils/url_utility';
fields: ['name']
},
text: project => (project.name_with_namespace || project.name),
id: project => project.id
id: project => project.id,
}, extraOpts);
this.dropdownButtonElement = $('#js-project-dropdown', this.dropdownContainerElement).glDropdown(options);
}
......@@ -222,5 +220,39 @@ import '~/lib/utils/url_utility';
.trigger('focus');
expect($searchInput.val()).toEqual('g');
});
describe('renderItem', () => {
describe('without selected value', () => {
let dropdown;
beforeEach(() => {
const dropdownOptions = {
};
const $dropdownDiv = $('<div />');
$dropdownDiv.glDropdown(dropdownOptions);
dropdown = $dropdownDiv.data('glDropdown');
});
it('marks items without ID as active', () => {
const dummyData = { };
const html = dropdown.renderItem(dummyData, null, null);
const link = html.querySelector('a');
expect(link).toHaveClass('is-active');
});
it('does not mark items with ID as active', () => {
const dummyData = {
id: 'ea'
};
const html = dropdown.renderItem(dummyData, null, null);
const link = html.querySelector('a');
expect(link).not.toHaveClass('is-active');
});
});
});
})();
});
require 'spec_helper'
require Rails.root.join('db', 'migrate', '20170825104051_migrate_issues_to_ghost_user.rb')
describe MigrateIssuesToGhostUser, :migration do
describe '#up' do
let(:projects) { table(:projects) }
let(:issues) { table(:issues) }
let(:users) { table(:users) }
before do
projects.create!(name: 'gitlab')
user = users.create(email: 'test@example.com')
issues.create(title: 'Issue 1', author_id: nil, project_id: 1)
issues.create(title: 'Issue 2', author_id: user.id, project_id: 1)
end
context 'when ghost user exists' do
let!(:ghost) { users.create(ghost: true, email: 'ghost@example.com') }
it 'does not create a new user' do
expect { schema_migrate_up! }.not_to change { User.count }
end
it 'migrates issues where author = nil to the ghost user' do
schema_migrate_up!
expect(issues.first.reload.author_id).to eq(ghost.id)
end
it 'does not change issues authored by an existing user' do
expect { schema_migrate_up! }.not_to change { issues.second.reload.author_id}
end
end
context 'when ghost user does not exist' do
it 'creates a new user' do
expect { schema_migrate_up! }.to change { User.count }.by(1)
end
it 'migrates issues where author = nil to the ghost user' do
schema_migrate_up!
expect(issues.first.reload.author_id).to eq(User.ghost.id)
end
it 'does not change issues authored by an existing user' do
expect { schema_migrate_up! }.not_to change { issues.second.reload.author_id}
end
end
end
end
......@@ -52,5 +52,15 @@ describe Geo::NodeStatusService do
expect(status.health).to eq("Could not connect to Geo node - HTTP Status Code: 401 Unauthorized\n")
end
it 'returns meaningful error message when primary uses incorrect db key' do
secondary # create it before mocking GeoNode#secret_access_key
allow_any_instance_of(GeoNode).to receive(:secret_access_key).and_raise(OpenSSL::Cipher::CipherError)
status = subject.call(secondary)
expect(status.health).to eq('Error decrypting the Geo secret from the database. Check that the primary uses the correct db_key_base.')
end
end
end
......@@ -134,12 +134,4 @@ describe Issues::ExportCsvService do
expect(csv[0]['Labels']).to eq nil
end
end
it 'succeeds when author is non-existent' do
issue.author_id = 99999999
issue.save(validate: false)
expect(csv[0]['Author']).to eq nil
expect(csv[0]['Author Username']).to eq nil
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment