diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-19 09:35:24 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-19 09:35:24 +0000 |
commit | 1d20d43661f3e98bde2bb5dc163a45fd90f8ac88 (patch) | |
tree | 53feb6983348a364ed4f52a4108866bf4ff0a599 /app/assets/javascripts/pages/projects | |
parent | 2774ddc308f96f49a0f26871ff544681229f4eee (diff) | |
download | gitlab-ce-1d20d43661f3e98bde2bb5dc163a45fd90f8ac88.tar.gz |
Add latest changes from gitlab-org/gitlab@12-9-stable-ee
Diffstat (limited to 'app/assets/javascripts/pages/projects')
17 files changed, 137 insertions, 38 deletions
diff --git a/app/assets/javascripts/pages/projects/blob/new/index.js b/app/assets/javascripts/pages/projects/blob/new/index.js index 189053f3ed7..720cb249052 100644 --- a/app/assets/javascripts/pages/projects/blob/new/index.js +++ b/app/assets/javascripts/pages/projects/blob/new/index.js @@ -1,3 +1,12 @@ import initBlobBundle from '~/blob_edit/blob_bundle'; +import initPopover from '~/blob/suggest_gitlab_ci_yml'; -document.addEventListener('DOMContentLoaded', initBlobBundle); +document.addEventListener('DOMContentLoaded', () => { + initBlobBundle(); + + const suggestEl = document.querySelector('.js-suggest-gitlab-ci-yml'); + + if (suggestEl) { + initPopover(suggestEl); + } +}); diff --git a/app/assets/javascripts/pages/projects/blob/show/index.js b/app/assets/javascripts/pages/projects/blob/show/index.js index caf9a8c0b64..4d308d6b07a 100644 --- a/app/assets/javascripts/pages/projects/blob/show/index.js +++ b/app/assets/javascripts/pages/projects/blob/show/index.js @@ -4,6 +4,7 @@ import BlobViewer from '~/blob/viewer/index'; import initBlob from '~/pages/projects/init_blob'; import GpgBadges from '~/gpg_badges'; import '~/sourcegraph/load'; +import PipelineTourSuccessModal from '~/blob/pipeline_tour_success_modal.vue'; document.addEventListener('DOMContentLoaded', () => { new BlobViewer(); // eslint-disable-line no-new @@ -35,4 +36,25 @@ document.addEventListener('DOMContentLoaded', () => { // eslint-disable-next-line promise/catch-or-return import('~/code_navigation').then(m => m.default()); } + + if (gon.features?.suggestPipeline) { + const successPipelineEl = document.querySelector('.js-success-pipeline-modal'); + + if (successPipelineEl) { + // eslint-disable-next-line no-new + new Vue({ + el: successPipelineEl, + render(createElement) { + const { commitCookie, pipelinesPath: goToPipelinesPath } = this.$el.dataset; + + return createElement(PipelineTourSuccessModal, { + props: { + goToPipelinesPath, + commitCookie, + }, + }); + }, + }); + } + } }); diff --git a/app/assets/javascripts/pages/projects/clusters/index/index.js b/app/assets/javascripts/pages/projects/clusters/index/index.js index 30d519d0e37..744be65bfbe 100644 --- a/app/assets/javascripts/pages/projects/clusters/index/index.js +++ b/app/assets/javascripts/pages/projects/clusters/index/index.js @@ -1,6 +1,8 @@ import PersistentUserCallout from '~/persistent_user_callout'; +import initClustersListApp from '~/clusters_list'; document.addEventListener('DOMContentLoaded', () => { const callout = document.querySelector('.gcp-signup-offer'); PersistentUserCallout.factory(callout); + initClustersListApp(); }); diff --git a/app/assets/javascripts/pages/projects/labels/components/promote_label_modal.vue b/app/assets/javascripts/pages/projects/labels/components/promote_label_modal.vue index bb95f33c838..dadb20e511b 100644 --- a/app/assets/javascripts/pages/projects/labels/components/promote_label_modal.vue +++ b/app/assets/javascripts/pages/projects/labels/components/promote_label_modal.vue @@ -1,5 +1,5 @@ <script> -import _ from 'underscore'; +import { escape as esc } from 'lodash'; import axios from '~/lib/utils/axios_utils'; import createFlash from '~/flash'; import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue'; @@ -48,7 +48,7 @@ export default { const label = `<span class="label color-label" style="background-color: ${this.labelColor}; color: ${this.labelTextColor};" - >${_.escape(this.labelTitle)}</span>`; + >${esc(this.labelTitle)}</span>`; return sprintf( s__('Labels|<span>Promote label</span> %{labelTitle} <span>to Group Label?</span>'), diff --git a/app/assets/javascripts/pages/projects/logs/index.js b/app/assets/javascripts/pages/projects/logs/index.js new file mode 100644 index 00000000000..36747069ebb --- /dev/null +++ b/app/assets/javascripts/pages/projects/logs/index.js @@ -0,0 +1,3 @@ +import logsBundle from '~/logs'; + +document.addEventListener('DOMContentLoaded', logsBundle); diff --git a/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue b/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue index bb490919a9a..3a0d9c17228 100644 --- a/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue +++ b/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue @@ -1,6 +1,4 @@ <script> -import _ from 'underscore'; - export default { props: { initialCronInterval: { @@ -24,7 +22,7 @@ export default { }, computed: { intervalIsPreset() { - return _.contains(this.cronIntervalPresets, this.cronInterval); + return Object.values(this.cronIntervalPresets).includes(this.cronInterval); }, // The text input is editable when there's a custom interval, or when it's // a preset interval and the user clicks the 'custom' radio button diff --git a/app/assets/javascripts/pages/projects/pipelines/init_pipelines.js b/app/assets/javascripts/pages/projects/pipelines/init_pipelines.js index ade6908c4a5..5fd3fce88aa 100644 --- a/app/assets/javascripts/pages/projects/pipelines/init_pipelines.js +++ b/app/assets/javascripts/pages/projects/pipelines/init_pipelines.js @@ -13,19 +13,21 @@ export default () => { }); } + const pipelineTabLink = document.querySelector('.js-pipeline-tab-link a'); const { controllerAction } = document.querySelector('.js-pipeline-container').dataset; - const pipelineStatusUrl = `${document - .querySelector('.js-pipeline-tab-link a') - .getAttribute('href')}/status.json`; - // eslint-disable-next-line no-new - new Pipelines({ - initTabs: true, - pipelineStatusUrl, - tabsOptions: { - action: controllerAction, - defaultAction: 'pipelines', - parentEl: '.pipelines-tabs', - }, - }); + if (pipelineTabLink) { + const pipelineStatusUrl = `${pipelineTabLink.getAttribute('href')}/status.json`; + + // eslint-disable-next-line no-new + new Pipelines({ + initTabs: true, + pipelineStatusUrl, + tabsOptions: { + action: controllerAction, + defaultAction: 'pipelines', + parentEl: '.pipelines-tabs', + }, + }); + } }; diff --git a/app/assets/javascripts/pages/projects/registry/repositories/index.js b/app/assets/javascripts/pages/projects/registry/repositories/index.js index 47fea2be189..73469e287ed 100644 --- a/app/assets/javascripts/pages/projects/registry/repositories/index.js +++ b/app/assets/javascripts/pages/projects/registry/repositories/index.js @@ -3,7 +3,11 @@ import registryExplorer from '~/registry/explorer/index'; document.addEventListener('DOMContentLoaded', () => { initRegistryImages(); - const { attachMainComponent, attachBreadcrumb } = registryExplorer(); - attachBreadcrumb(); - attachMainComponent(); + + const explorer = registryExplorer(); + + if (explorer) { + explorer.attachBreadcrumb(); + explorer.attachMainComponent(); + } }); diff --git a/app/assets/javascripts/pages/projects/releases/show/index.js b/app/assets/javascripts/pages/projects/releases/show/index.js new file mode 100644 index 00000000000..4e17e6ff311 --- /dev/null +++ b/app/assets/javascripts/pages/projects/releases/show/index.js @@ -0,0 +1,3 @@ +import initShowRelease from '~/releases/mount_show'; + +document.addEventListener('DOMContentLoaded', initShowRelease); diff --git a/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js b/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js index b4aac8eea2b..7f865f4cfb6 100644 --- a/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js +++ b/app/assets/javascripts/pages/projects/settings/ci_cd/show/index.js @@ -2,6 +2,9 @@ import initSettingsPanels from '~/settings_panels'; import SecretValues from '~/behaviors/secret_values'; import AjaxVariableList from '~/ci_variable_list/ajax_variable_list'; import registrySettingsApp from '~/registry/settings/registry_settings_bundle'; +import initVariableList from '~/ci_variable_list'; +import DueDateSelectors from '~/due_date_select'; +import initDeployKeys from '~/deploy_keys'; document.addEventListener('DOMContentLoaded', () => { // Initialize expandable settings panels @@ -15,15 +18,19 @@ document.addEventListener('DOMContentLoaded', () => { runnerTokenSecretValue.init(); } - const variableListEl = document.querySelector('.js-ci-variable-list-section'); - // eslint-disable-next-line no-new - new AjaxVariableList({ - container: variableListEl, - saveButton: variableListEl.querySelector('.js-ci-variables-save-button'), - errorBox: variableListEl.querySelector('.js-ci-variable-error-box'), - saveEndpoint: variableListEl.dataset.saveEndpoint, - maskableRegex: variableListEl.dataset.maskableRegex, - }); + if (gon.features.newVariablesUi) { + initVariableList(); + } else { + const variableListEl = document.querySelector('.js-ci-variable-list-section'); + // eslint-disable-next-line no-new + new AjaxVariableList({ + container: variableListEl, + saveButton: variableListEl.querySelector('.js-ci-variables-save-button'), + errorBox: variableListEl.querySelector('.js-ci-variable-error-box'), + saveEndpoint: variableListEl.dataset.saveEndpoint, + maskableRegex: variableListEl.dataset.maskableRegex, + }); + } // hide extra auto devops settings based checkbox state const autoDevOpsExtraSettings = document.querySelector('.js-extra-settings'); @@ -34,5 +41,9 @@ document.addEventListener('DOMContentLoaded', () => { autoDevOpsExtraSettings.classList.toggle('hidden', !target.checked); }); + // eslint-disable-next-line no-new + new DueDateSelectors(); + registrySettingsApp(); + initDeployKeys(); }); diff --git a/app/assets/javascripts/pages/projects/settings/integrations/show/index.js b/app/assets/javascripts/pages/projects/settings/integrations/show/index.js new file mode 100644 index 00000000000..f2cf2eb9b28 --- /dev/null +++ b/app/assets/javascripts/pages/projects/settings/integrations/show/index.js @@ -0,0 +1,6 @@ +import PersistentUserCallout from '~/persistent_user_callout'; + +document.addEventListener('DOMContentLoaded', () => { + const callout = document.querySelector('.js-webhooks-moved-alert'); + PersistentUserCallout.factory(callout); +}); diff --git a/app/assets/javascripts/pages/projects/settings/operations/show/index.js b/app/assets/javascripts/pages/projects/settings/operations/show/index.js index a32c188909c..721d4a31fe4 100644 --- a/app/assets/javascripts/pages/projects/settings/operations/show/index.js +++ b/app/assets/javascripts/pages/projects/settings/operations/show/index.js @@ -7,5 +7,7 @@ document.addEventListener('DOMContentLoaded', () => { mountErrorTrackingForm(); mountOperationSettings(); mountGrafanaIntegration(); - initSettingsPanels(); + if (!IS_EE) { + initSettingsPanels(); + } }); diff --git a/app/assets/javascripts/pages/projects/settings/repository/form.js b/app/assets/javascripts/pages/projects/settings/repository/form.js index 3e02893f24c..fa6d17f0729 100644 --- a/app/assets/javascripts/pages/projects/settings/repository/form.js +++ b/app/assets/javascripts/pages/projects/settings/repository/form.js @@ -3,7 +3,6 @@ import ProtectedTagCreate from '~/protected_tags/protected_tag_create'; import ProtectedTagEditList from '~/protected_tags/protected_tag_edit_list'; import initSettingsPanels from '~/settings_panels'; -import initDeployKeys from '~/deploy_keys'; import ProtectedBranchCreate from '~/protected_branches/protected_branch_create'; import ProtectedBranchEditList from '~/protected_branches/protected_branch_edit_list'; import DueDateSelectors from '~/due_date_select'; @@ -12,7 +11,6 @@ import fileUpload from '~/lib/utils/file_upload'; export default () => { new ProtectedTagCreate(); new ProtectedTagEditList(); - initDeployKeys(); initSettingsPanels(); new ProtectedBranchCreate(); new ProtectedBranchEditList(); diff --git a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue index 6994f83bce0..faaa65b1a16 100644 --- a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue +++ b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue @@ -165,6 +165,16 @@ export default { showContainerRegistryPublicNote() { return this.visibilityLevel === visibilityOptions.PUBLIC; }, + + repositoryHelpText() { + if (this.visibilityLevel === visibilityOptions.PRIVATE) { + return s__('ProjectSettings|View and edit files in this project'); + } + + return s__( + 'ProjectSettings|View and edit files in this project. Non-project members will only have read access', + ); + }, }, watch: { @@ -225,6 +235,7 @@ export default { <div> <div class="project-visibility-setting"> <project-setting-row + ref="project-visibility-settings" :help-path="visibilityHelpPath" :label="s__('ProjectSettings|Project visibility')" > @@ -270,6 +281,7 @@ export default { </div> <div :class="{ 'highlight-changes': highlightChangesClass }" class="project-feature-settings"> <project-setting-row + ref="issues-settings" :label="s__('ProjectSettings|Issues')" :help-text="s__('ProjectSettings|Lightweight issue tracking system for this project')" > @@ -280,8 +292,9 @@ export default { /> </project-setting-row> <project-setting-row + ref="repository-settings" :label="s__('ProjectSettings|Repository')" - :help-text="s__('ProjectSettings|View and edit files in this project')" + :help-text="repositoryHelpText" > <project-feature-setting v-model="repositoryAccessLevel" @@ -291,6 +304,7 @@ export default { </project-setting-row> <div class="project-feature-setting-group"> <project-setting-row + ref="merge-request-settings" :label="s__('ProjectSettings|Merge requests')" :help-text="s__('ProjectSettings|Submit changes to be merged upstream')" > @@ -302,6 +316,7 @@ export default { /> </project-setting-row> <project-setting-row + ref="fork-settings" :label="s__('ProjectSettings|Forks')" :help-text=" s__('ProjectSettings|Allow users to make copies of your repository to a new project') @@ -315,6 +330,7 @@ export default { /> </project-setting-row> <project-setting-row + ref="pipeline-settings" :label="s__('ProjectSettings|Pipelines')" :help-text="s__('ProjectSettings|Build, test, and deploy your changes')" > @@ -327,6 +343,7 @@ export default { </project-setting-row> <project-setting-row v-if="registryAvailable" + ref="container-registry-settings" :help-path="registryHelpPath" :label="s__('ProjectSettings|Container registry')" :help-text=" @@ -348,6 +365,7 @@ export default { </project-setting-row> <project-setting-row v-if="lfsAvailable" + ref="git-lfs-settings" :help-path="lfsHelpPath" :label="s__('ProjectSettings|Git Large File Storage')" :help-text=" @@ -362,6 +380,7 @@ export default { </project-setting-row> <project-setting-row v-if="packagesAvailable" + ref="package-settings" :help-path="packagesHelpPath" :label="s__('ProjectSettings|Packages')" :help-text=" @@ -376,6 +395,7 @@ export default { </project-setting-row> </div> <project-setting-row + ref="wiki-settings" :label="s__('ProjectSettings|Wiki')" :help-text="s__('ProjectSettings|Pages for project documentation')" > @@ -386,6 +406,7 @@ export default { /> </project-setting-row> <project-setting-row + ref="snippet-settings" :label="s__('ProjectSettings|Snippets')" :help-text="s__('ProjectSettings|Share code pastes with others out of Git repository')" > @@ -397,6 +418,7 @@ export default { </project-setting-row> <project-setting-row v-if="pagesAvailable && pagesAccessControlEnabled" + ref="pages-settings" :help-path="pagesHelpPath" :label="s__('ProjectSettings|Pages')" :help-text=" @@ -410,7 +432,7 @@ export default { /> </project-setting-row> </div> - <project-setting-row v-if="canDisableEmails" class="mb-3"> + <project-setting-row v-if="canDisableEmails" ref="email-settings" class="mb-3"> <label class="js-emails-disabled"> <input :value="emailsDisabled" type="hidden" name="project[emails_disabled]" /> <input v-model="emailsDisabled" type="checkbox" /> diff --git a/app/assets/javascripts/pages/projects/snippets/show/index.js b/app/assets/javascripts/pages/projects/snippets/show/index.js index 738bf08f1bf..d8fbb851ffb 100644 --- a/app/assets/javascripts/pages/projects/snippets/show/index.js +++ b/app/assets/javascripts/pages/projects/snippets/show/index.js @@ -14,5 +14,6 @@ document.addEventListener('DOMContentLoaded', () => { snippetEmbed(); } else { initSnippetsApp(); + initNotes(); } }); diff --git a/app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue b/app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue index 2176309ac84..6af346ace67 100644 --- a/app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue +++ b/app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue @@ -1,5 +1,5 @@ <script> -import _ from 'underscore'; +import { escape as esc } from 'lodash'; import { GlModal, GlModalDirective } from '@gitlab/ui'; import { s__, sprintf } from '~/locale'; @@ -38,7 +38,7 @@ export default { return sprintf( s__('WikiPageConfirmDelete|Delete page %{pageTitle}?'), { - pageTitle: _.escape(this.pageTitle), + pageTitle: esc(this.pageTitle), }, false, ); diff --git a/app/assets/javascripts/pages/projects/wikis/wikis.js b/app/assets/javascripts/pages/projects/wikis/wikis.js index 6b02a074abf..93afdc54ce1 100644 --- a/app/assets/javascripts/pages/projects/wikis/wikis.js +++ b/app/assets/javascripts/pages/projects/wikis/wikis.js @@ -1,6 +1,13 @@ import { GlBreakpointInstance as bp } from '@gitlab/ui/dist/utils'; import { s__, sprintf } from '~/locale'; +const MARKDOWN_LINK_TEXT = { + markdown: '[Link Title](page-slug)', + rdoc: '{Link title}[link:page-slug]', + asciidoc: 'link:page-slug[Link title]', + org: '[[page-slug]]', +}; + export default class Wikis { constructor() { this.sidebarEl = document.querySelector('.js-wiki-sidebar'); @@ -28,6 +35,15 @@ export default class Wikis { window.addEventListener('resize', () => this.renderSidebar()); this.renderSidebar(); + + const changeFormatSelect = document.querySelector('#wiki_format'); + const linkExample = document.querySelector('.js-markup-link-example'); + + if (changeFormatSelect) { + changeFormatSelect.addEventListener('change', e => { + linkExample.innerHTML = MARKDOWN_LINK_TEXT[e.target.value]; + }); + } } handleWikiTitleChange(e) { |