diff --git a/CHANGELOG.md b/CHANGELOG.md
index 197596031b8..d11761e0607 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,7 +4,6 @@ entry.
## 12.9.2 (2020-03-31)
-- No changes.
### Fixed (5 changes)
- Ensure import by URL works after a failed import. !27546
diff --git a/app/assets/javascripts/blob/pipeline_tour_success_modal.vue b/app/assets/javascripts/blob/pipeline_tour_success_modal.vue
index 0739b4d5e39..179a515e5ca 100644
--- a/app/assets/javascripts/blob/pipeline_tour_success_modal.vue
+++ b/app/assets/javascripts/blob/pipeline_tour_success_modal.vue
@@ -3,6 +3,9 @@ import { GlModal, GlSprintf, GlLink } from '@gitlab/ui';
import { sprintf, s__, __ } from '~/locale';
import Cookies from 'js-cookie';
import { glEmojiTag } from '~/emoji';
+import Tracking from '~/tracking';
+
+const trackingMixin = Tracking.mixin();
export default {
beginnerLink:
@@ -23,6 +26,7 @@ export default {
GlSprintf,
GlLink,
},
+ mixins: [trackingMixin],
props: {
goToPipelinesPath: {
type: String,
@@ -32,8 +36,21 @@ export default {
type: String,
required: true,
},
+ humanAccess: {
+ type: String,
+ required: true,
+ },
+ },
+ data() {
+ return {
+ tracking: {
+ label: 'congratulate_first_pipeline',
+ property: this.humanAccess,
+ },
+ };
},
mounted() {
+ this.track();
this.disableModalFromRenderingAgain();
},
methods: {
diff --git a/app/assets/javascripts/pages/groups/registry/repositories/index.js b/app/assets/javascripts/pages/groups/registry/repositories/index.js
index 47fea2be189..cdafe838994 100644
--- a/app/assets/javascripts/pages/groups/registry/repositories/index.js
+++ b/app/assets/javascripts/pages/groups/registry/repositories/index.js
@@ -1,9 +1,10 @@
-import initRegistryImages from '~/registry/list/index';
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/blob/show/index.js b/app/assets/javascripts/pages/projects/blob/show/index.js
index 4d308d6b07a..9ff68a88f95 100644
--- a/app/assets/javascripts/pages/projects/blob/show/index.js
+++ b/app/assets/javascripts/pages/projects/blob/show/index.js
@@ -45,12 +45,13 @@ document.addEventListener('DOMContentLoaded', () => {
new Vue({
el: successPipelineEl,
render(createElement) {
- const { commitCookie, pipelinesPath: goToPipelinesPath } = this.$el.dataset;
+ const { commitCookie, goToPipelinesPath, humanAccess } = this.$el.dataset;
return createElement(PipelineTourSuccessModal, {
props: {
goToPipelinesPath,
commitCookie,
+ humanAccess,
},
});
},
diff --git a/app/assets/javascripts/pages/projects/registry/repositories/index.js b/app/assets/javascripts/pages/projects/registry/repositories/index.js
index 73469e287ed..cdafe838994 100644
--- a/app/assets/javascripts/pages/projects/registry/repositories/index.js
+++ b/app/assets/javascripts/pages/projects/registry/repositories/index.js
@@ -1,9 +1,6 @@
-import initRegistryImages from '~/registry/list/index';
import registryExplorer from '~/registry/explorer/index';
document.addEventListener('DOMContentLoaded', () => {
- initRegistryImages();
-
const explorer = registryExplorer();
if (explorer) {
diff --git a/app/assets/javascripts/registry/list/components/app.vue b/app/assets/javascripts/registry/list/components/app.vue
deleted file mode 100644
index c555c2b04d1..00000000000
--- a/app/assets/javascripts/registry/list/components/app.vue
+++ /dev/null
@@ -1,153 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ s__('ContainerRegistry|Container Registry') }}
-
-
-
-
-
-
-
diff --git a/app/assets/javascripts/registry/list/components/collapsible_container.vue b/app/assets/javascripts/registry/list/components/collapsible_container.vue
deleted file mode 100644
index 9786a1a3f75..00000000000
--- a/app/assets/javascripts/registry/list/components/collapsible_container.vue
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
-
-
-
- {{ repo.name }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ s__('ContainerRegistry|Remove repository') }}
-
- {{ __('Remove') }}
-
-
-
diff --git a/app/assets/javascripts/registry/list/components/group_empty_state.vue b/app/assets/javascripts/registry/list/components/group_empty_state.vue
deleted file mode 100644
index 7885fd2146d..00000000000
--- a/app/assets/javascripts/registry/list/components/group_empty_state.vue
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/app/assets/javascripts/registry/list/components/project_empty_state.vue b/app/assets/javascripts/registry/list/components/project_empty_state.vue
deleted file mode 100644
index 900498ed03d..00000000000
--- a/app/assets/javascripts/registry/list/components/project_empty_state.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
- {{ s__('ContainerRegistry|Quick Start') }}
-
-
-
-
-
-
-
-
-
- {{
- s__(
- 'ContainerRegistry|You can add an image to this registry with the following commands:',
- )
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/assets/javascripts/registry/list/components/table_registry.vue b/app/assets/javascripts/registry/list/components/table_registry.vue
deleted file mode 100644
index 4e14db7f578..00000000000
--- a/app/assets/javascripts/registry/list/components/table_registry.vue
+++ /dev/null
@@ -1,289 +0,0 @@
-
-
-
-
-
-
-
-
- {{ modalAction }}
- {{ modalAction }}
-
-
-
-
diff --git a/app/assets/javascripts/registry/list/constants.js b/app/assets/javascripts/registry/list/constants.js
deleted file mode 100644
index e55ea9cc9d9..00000000000
--- a/app/assets/javascripts/registry/list/constants.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import { __ } from '~/locale';
-
-export const FETCH_REGISTRY_ERROR_MESSAGE = __(
- 'Something went wrong while fetching the registry list.',
-);
-export const FETCH_REPOS_ERROR_MESSAGE = __('Something went wrong while fetching the projects.');
-export const DELETE_REPO_ERROR_MESSAGE = __('Something went wrong on our end.');
-export const DELETE_REGISTRY_ERROR_MESSAGE = __('Something went wrong on our end.');
diff --git a/app/assets/javascripts/registry/list/index.js b/app/assets/javascripts/registry/list/index.js
deleted file mode 100644
index e8e54fda169..00000000000
--- a/app/assets/javascripts/registry/list/index.js
+++ /dev/null
@@ -1,44 +0,0 @@
-import Vue from 'vue';
-import registryApp from './components/app.vue';
-import Translate from '~/vue_shared/translate';
-
-Vue.use(Translate);
-
-export default () => {
- const el = document.getElementById('js-vue-registry-images');
-
- if (!el) {
- return null;
- }
-
- return new Vue({
- el,
- components: {
- registryApp,
- },
- data() {
- const { dataset } = el;
- return {
- registryData: {
- endpoint: dataset.endpoint,
- characterError: Boolean(dataset.characterError),
- helpPagePath: dataset.helpPagePath,
- noContainersImage: dataset.noContainersImage,
- containersErrorImage: dataset.containersErrorImage,
- repositoryUrl: dataset.repositoryUrl,
- isGroupPage: dataset.isGroupPage,
- personalAccessTokensHelpLink: dataset.personalAccessTokensHelpLink,
- registryHostUrlWithPort: dataset.registryHostUrlWithPort,
- twoFactorAuthHelpLink: dataset.twoFactorAuthHelpLink,
- },
- };
- },
- render(createElement) {
- return createElement('registry-app', {
- props: {
- ...this.registryData,
- },
- });
- },
- });
-};
diff --git a/app/assets/javascripts/registry/list/stores/actions.js b/app/assets/javascripts/registry/list/stores/actions.js
deleted file mode 100644
index 6afba618486..00000000000
--- a/app/assets/javascripts/registry/list/stores/actions.js
+++ /dev/null
@@ -1,46 +0,0 @@
-import axios from '~/lib/utils/axios_utils';
-import createFlash from '~/flash';
-import * as types from './mutation_types';
-import { FETCH_REPOS_ERROR_MESSAGE, FETCH_REGISTRY_ERROR_MESSAGE } from '../constants';
-
-export const fetchRepos = ({ commit, state }) => {
- commit(types.TOGGLE_MAIN_LOADING);
-
- return axios
- .get(state.endpoint)
- .then(({ data }) => {
- commit(types.TOGGLE_MAIN_LOADING);
- commit(types.SET_REPOS_LIST, data);
- })
- .catch(() => {
- commit(types.TOGGLE_MAIN_LOADING);
- createFlash(FETCH_REPOS_ERROR_MESSAGE);
- });
-};
-
-export const fetchList = ({ commit }, { repo, page }) => {
- commit(types.TOGGLE_REGISTRY_LIST_LOADING, repo);
- return axios
- .get(repo.tagsPath, { params: { page } })
- .then(response => {
- const { headers, data } = response;
-
- commit(types.TOGGLE_REGISTRY_LIST_LOADING, repo);
- commit(types.SET_REGISTRY_LIST, { repo, resp: data, headers });
- })
- .catch(() => {
- commit(types.TOGGLE_REGISTRY_LIST_LOADING, repo);
- createFlash(FETCH_REGISTRY_ERROR_MESSAGE);
- });
-};
-
-export const deleteItem = (_, item) => axios.delete(item.destroyPath);
-export const multiDeleteItems = (_, { path, items }) =>
- axios.delete(path, { params: { ids: items } });
-
-export const setMainEndpoint = ({ commit }, data) => commit(types.SET_MAIN_ENDPOINT, data);
-export const setIsDeleteDisabled = ({ commit }, data) => commit(types.SET_IS_DELETE_DISABLED, data);
-export const toggleLoading = ({ commit }) => commit(types.TOGGLE_MAIN_LOADING);
-
-// prevent babel-plugin-rewire from generating an invalid default during karma tests
-export default () => {};
diff --git a/app/assets/javascripts/registry/list/stores/getters.js b/app/assets/javascripts/registry/list/stores/getters.js
deleted file mode 100644
index ac90bde1b2a..00000000000
--- a/app/assets/javascripts/registry/list/stores/getters.js
+++ /dev/null
@@ -1,6 +0,0 @@
-export const isLoading = state => state.isLoading;
-export const repos = state => state.repos;
-export const isDeleteDisabled = state => state.isDeleteDisabled;
-
-// prevent babel-plugin-rewire from generating an invalid default during karma tests
-export default () => {};
diff --git a/app/assets/javascripts/registry/list/stores/index.js b/app/assets/javascripts/registry/list/stores/index.js
deleted file mode 100644
index 1bb06bd6e81..00000000000
--- a/app/assets/javascripts/registry/list/stores/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import Vue from 'vue';
-import Vuex from 'vuex';
-import * as actions from './actions';
-import * as getters from './getters';
-import mutations from './mutations';
-import createState from './state';
-
-Vue.use(Vuex);
-
-export default new Vuex.Store({
- state: createState(),
- actions,
- getters,
- mutations,
-});
diff --git a/app/assets/javascripts/registry/list/stores/mutation_types.js b/app/assets/javascripts/registry/list/stores/mutation_types.js
deleted file mode 100644
index 6740bfede1a..00000000000
--- a/app/assets/javascripts/registry/list/stores/mutation_types.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export const SET_MAIN_ENDPOINT = 'SET_MAIN_ENDPOINT';
-export const SET_IS_DELETE_DISABLED = 'SET_IS_DELETE_DISABLED';
-
-export const SET_REPOS_LIST = 'SET_REPOS_LIST';
-export const TOGGLE_MAIN_LOADING = 'TOGGLE_MAIN_LOADING';
-
-export const SET_REGISTRY_LIST = 'SET_REGISTRY_LIST';
-export const TOGGLE_REGISTRY_LIST_LOADING = 'TOGGLE_REGISTRY_LIST_LOADING';
diff --git a/app/assets/javascripts/registry/list/stores/mutations.js b/app/assets/javascripts/registry/list/stores/mutations.js
deleted file mode 100644
index 419de848883..00000000000
--- a/app/assets/javascripts/registry/list/stores/mutations.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import * as types from './mutation_types';
-import { parseIntPagination, normalizeHeaders } from '~/lib/utils/common_utils';
-
-export default {
- [types.SET_MAIN_ENDPOINT](state, endpoint) {
- state.endpoint = endpoint;
- },
-
- [types.SET_IS_DELETE_DISABLED](state, isDeleteDisabled) {
- state.isDeleteDisabled = isDeleteDisabled;
- },
-
- [types.SET_REPOS_LIST](state, list) {
- state.repos = list.map(el => ({
- canDelete: Boolean(el.destroy_path),
- destroyPath: el.destroy_path,
- id: el.id,
- isLoading: false,
- list: [],
- location: el.location,
- name: el.path,
- tagsPath: el.tags_path,
- projectId: el.project_id,
- }));
- },
-
- [types.TOGGLE_MAIN_LOADING](state) {
- state.isLoading = !state.isLoading;
- },
-
- [types.SET_REGISTRY_LIST](state, { repo, resp, headers }) {
- const listToUpdate = state.repos.find(el => el.id === repo.id);
-
- const normalizedHeaders = normalizeHeaders(headers);
- const pagination = parseIntPagination(normalizedHeaders);
-
- listToUpdate.pagination = pagination;
-
- listToUpdate.list = resp.map(element => ({
- tag: element.name,
- revision: element.revision,
- shortRevision: element.short_revision,
- size: element.total_size,
- layers: element.layers,
- location: element.location,
- createdAt: element.created_at,
- destroyPath: element.destroy_path,
- canDelete: Boolean(element.destroy_path),
- }));
- },
-
- [types.TOGGLE_REGISTRY_LIST_LOADING](state, list) {
- const listToUpdate = state.repos.find(el => el.id === list.id);
-
- listToUpdate.isLoading = !listToUpdate.isLoading;
- },
-};
diff --git a/app/assets/javascripts/registry/list/stores/state.js b/app/assets/javascripts/registry/list/stores/state.js
deleted file mode 100644
index 724c64b4994..00000000000
--- a/app/assets/javascripts/registry/list/stores/state.js
+++ /dev/null
@@ -1,27 +0,0 @@
-export default () => ({
- isLoading: false,
- endpoint: '', // initial endpoint to fetch the repos list
- isDeleteDisabled: false, // controls the delete buttons in the registry
- /**
- * Each object in `repos` has the following strucure:
- * {
- * name: String,
- * isLoading: Boolean,
- * tagsPath: String // endpoint to request the list
- * destroyPath: String // endpoit to delete the repo
- * list: Array // List of the registry images
- * }
- *
- * Each registry image inside `list` has the following structure:
- * {
- * tag: String,
- * revision: String
- * shortRevision: String
- * size: Number
- * layers: Number
- * createdAt: String
- * destroyPath: String // endpoit to delete each image
- * }
- */
- repos: [],
-});
diff --git a/app/assets/javascripts/sidebar/components/lock/lock_issue_sidebar.vue b/app/assets/javascripts/sidebar/components/lock/lock_issue_sidebar.vue
index 012a4f4ad89..728f655d33d 100644
--- a/app/assets/javascripts/sidebar/components/lock/lock_issue_sidebar.vue
+++ b/app/assets/javascripts/sidebar/components/lock/lock_issue_sidebar.vue
@@ -106,17 +106,17 @@ export default {
{{ sprintf(__('Lock %{issuableDisplayName}'), { issuableDisplayName: issuableDisplayName }) }}
-
+