Commit 724cca8d authored by Phil Hughes's avatar Phil Hughes

Fixes the web IDE link in tree list opening the wrong URL

Closes #44477
parent aa2a97b5
...@@ -43,6 +43,7 @@ export default { ...@@ -43,6 +43,7 @@ export default {
'file-open': this.isBlob && this.file.opened, 'file-open': this.isBlob && this.file.opened,
'file-active': this.isBlob && this.file.active, 'file-active': this.isBlob && this.file.active,
folder: this.isTree, folder: this.isTree,
'is-open': this.file.opened,
}; };
}, },
}, },
......
...@@ -54,7 +54,8 @@ const router = new VueRouter({ ...@@ -54,7 +54,8 @@ const router = new VueRouter({
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
if (to.params.namespace && to.params.project) { if (to.params.namespace && to.params.project) {
store.dispatch('getProjectData', { store
.dispatch('getProjectData', {
namespace: to.params.namespace, namespace: to.params.namespace,
projectId: to.params.project, projectId: to.params.project,
}) })
...@@ -67,26 +68,45 @@ router.beforeEach((to, from, next) => { ...@@ -67,26 +68,45 @@ router.beforeEach((to, from, next) => {
branchId: to.params.branch, branchId: to.params.branch,
}); });
store.dispatch('getFiles', { store
.dispatch('getFiles', {
projectId: fullProjectId, projectId: fullProjectId,
branchId: to.params.branch, branchId: to.params.branch,
}) })
.then(() => { .then(() => {
if (to.params[0]) { if (to.params[0]) {
const treeEntry = store.state.entries[to.params[0]]; const path =
to.params[0].slice(-1) === '/'
? to.params[0].slice(0, -1)
: to.params[0];
const treeEntry = store.state.entries[path];
if (treeEntry) { if (treeEntry) {
store.dispatch('handleTreeEntryAction', treeEntry); store.dispatch('handleTreeEntryAction', treeEntry);
} }
} }
}) })
.catch((e) => { .catch(e => {
flash('Error while loading the branch files. Please try again.', 'alert', document, null, false, true); flash(
'Error while loading the branch files. Please try again.',
'alert',
document,
null,
false,
true,
);
throw e; throw e;
}); });
} }
}) })
.catch((e) => { .catch(e => {
flash('Error while loading the project data. Please try again.', 'alert', document, null, false, true); flash(
'Error while loading the project data. Please try again.',
'alert',
document,
null,
false,
true,
);
throw e; throw e;
}); });
} }
......
import { import { decorateData, sortTree } from '../utils';
decorateData,
sortTree,
} from '../utils';
self.addEventListener('message', (e) => { self.addEventListener('message', e => {
const { data, projectId, branchId, tempFile = false, content = '', base64 = false } = e.data; const {
data,
projectId,
branchId,
tempFile = false,
content = '',
base64 = false,
} = e.data;
const treeList = []; const treeList = [];
let file; let file;
...@@ -15,7 +19,9 @@ self.addEventListener('message', (e) => { ...@@ -15,7 +19,9 @@ self.addEventListener('message', (e) => {
if (pathSplit.length > 0) { if (pathSplit.length > 0) {
pathSplit.reduce((pathAcc, folderName) => { pathSplit.reduce((pathAcc, folderName) => {
const parentFolder = acc[pathAcc[pathAcc.length - 1]]; const parentFolder = acc[pathAcc[pathAcc.length - 1]];
const folderPath = `${(parentFolder ? `${parentFolder.path}/` : '')}${folderName}`; const folderPath = `${
parentFolder ? `${parentFolder.path}/` : ''
}${folderName}`;
const foundEntry = acc[folderPath]; const foundEntry = acc[folderPath];
if (!foundEntry) { if (!foundEntry) {
...@@ -25,9 +31,11 @@ self.addEventListener('message', (e) => { ...@@ -25,9 +31,11 @@ self.addEventListener('message', (e) => {
id: folderPath, id: folderPath,
name: folderName, name: folderName,
path: folderPath, path: folderPath,
url: `/${projectId}/tree/${branchId}/${folderPath}`, url: `/${projectId}/tree/${branchId}/${folderPath}/`,
type: 'tree', type: 'tree',
parentTreeUrl: parentFolder ? parentFolder.url : `/${projectId}/tree/${branchId}/`, parentTreeUrl: parentFolder
? parentFolder.url
: `/${projectId}/tree/${branchId}/`,
tempFile, tempFile,
changed: tempFile, changed: tempFile,
opened: tempFile, opened: tempFile,
...@@ -62,7 +70,9 @@ self.addEventListener('message', (e) => { ...@@ -62,7 +70,9 @@ self.addEventListener('message', (e) => {
path, path,
url: `/${projectId}/blob/${branchId}/${path}`, url: `/${projectId}/blob/${branchId}/${path}`,
type: 'blob', type: 'blob',
parentTreeUrl: fileFolder ? fileFolder.url : `/${projectId}/blob/${branchId}`, parentTreeUrl: fileFolder
? fileFolder.url
: `/${projectId}/blob/${branchId}`,
tempFile, tempFile,
changed: tempFile, changed: tempFile,
content, content,
......
...@@ -62,8 +62,7 @@ ...@@ -62,8 +62,7 @@
return `${gon.sprite_file_icons}#${iconName}`; return `${gon.sprite_file_icons}#${iconName}`;
}, },
folderIconName() { folderIconName() {
// We don't have a open folder icon yet return this.opened ? 'folder-open' : 'folder';
return this.opened ? 'folder' : 'folder';
}, },
iconSizeClass() { iconSizeClass() {
return this.size ? `s${this.size}` : ''; return this.size ? `s${this.size}` : '';
......
...@@ -77,7 +77,7 @@ ...@@ -77,7 +77,7 @@
= render 'projects/find_file_link' = render 'projects/find_file_link'
= succeed " " do = succeed " " do
= link_to ide_edit_path(@project, @id), class: 'btn btn-default' do = link_to ide_edit_path(@project, @id, ""), class: 'btn btn-default' do
= _('Web IDE') = _('Web IDE')
= render 'projects/buttons/download', project: @project, ref: @ref = render 'projects/buttons/download', project: @project, ref: @ref
---
title: Fixed IDE button opening the wrong URL in tree list
merge_request:
author:
type: fixed
...@@ -25,4 +25,18 @@ feature 'Projects tree' do ...@@ -25,4 +25,18 @@ feature 'Projects tree' do
expect(page).to have_selector('.label-lfs', text: 'LFS') expect(page).to have_selector('.label-lfs', text: 'LFS')
end end
end end
context 'web IDE', :js do
before do
visit project_tree_path(project, File.join('master', 'bar'))
click_link 'Web IDE'
find('.ide-file-list')
end
it 'opens folder in IDE' do
expect(page).to have_selector('.is-open', text: 'bar')
end
end
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