Commit 710f2ec5 authored by Robert Speicher's avatar Robert Speicher

Merge branch 'ce-5606-issues-and-mr-autocomplete-in-epics' into 'master'

CE backport of gitlab-ee!8936

See merge request gitlab-org/gitlab-ce!23976
parents 1924a13e 12b3a203
...@@ -221,13 +221,13 @@ class GfmAutoComplete { ...@@ -221,13 +221,13 @@ class GfmAutoComplete {
displayTpl(value) { displayTpl(value) {
let tmpl = GfmAutoComplete.Loading.template; let tmpl = GfmAutoComplete.Loading.template;
if (value.title != null) { if (value.title != null) {
tmpl = GfmAutoComplete.Issues.templateFunction(value.id, value.title); tmpl = GfmAutoComplete.Issues.templateFunction(value);
} }
return tmpl; return tmpl;
}, },
data: GfmAutoComplete.defaultLoadingData, data: GfmAutoComplete.defaultLoadingData,
// eslint-disable-next-line no-template-curly-in-string insertTpl: GfmAutoComplete.Issues.insertTemplateFunction,
insertTpl: '${atwho-at}${id}', skipSpecialCharacterTest: true,
callbacks: { callbacks: {
...this.getDefaultCallbacks(), ...this.getDefaultCallbacks(),
beforeSave(issues) { beforeSave(issues) {
...@@ -238,6 +238,7 @@ class GfmAutoComplete { ...@@ -238,6 +238,7 @@ class GfmAutoComplete {
return { return {
id: i.iid, id: i.iid,
title: sanitize(i.title), title: sanitize(i.title),
reference: i.reference,
search: `${i.iid} ${i.title}`, search: `${i.iid} ${i.title}`,
}; };
}); });
...@@ -287,13 +288,13 @@ class GfmAutoComplete { ...@@ -287,13 +288,13 @@ class GfmAutoComplete {
displayTpl(value) { displayTpl(value) {
let tmpl = GfmAutoComplete.Loading.template; let tmpl = GfmAutoComplete.Loading.template;
if (value.title != null) { if (value.title != null) {
tmpl = GfmAutoComplete.Issues.templateFunction(value.id, value.title); tmpl = GfmAutoComplete.Issues.templateFunction(value);
} }
return tmpl; return tmpl;
}, },
data: GfmAutoComplete.defaultLoadingData, data: GfmAutoComplete.defaultLoadingData,
// eslint-disable-next-line no-template-curly-in-string insertTpl: GfmAutoComplete.Issues.insertTemplateFunction,
insertTpl: '${atwho-at}${id}', skipSpecialCharacterTest: true,
callbacks: { callbacks: {
...this.getDefaultCallbacks(), ...this.getDefaultCallbacks(),
beforeSave(merges) { beforeSave(merges) {
...@@ -304,6 +305,7 @@ class GfmAutoComplete { ...@@ -304,6 +305,7 @@ class GfmAutoComplete {
return { return {
id: m.iid, id: m.iid,
title: sanitize(m.title), title: sanitize(m.title),
reference: m.reference,
search: `${m.iid} ${m.title}`, search: `${m.iid} ${m.title}`,
}; };
}); });
...@@ -397,7 +399,7 @@ class GfmAutoComplete { ...@@ -397,7 +399,7 @@ class GfmAutoComplete {
displayTpl(value) { displayTpl(value) {
let tmpl = GfmAutoComplete.Loading.template; let tmpl = GfmAutoComplete.Loading.template;
if (value.title != null) { if (value.title != null) {
tmpl = GfmAutoComplete.Issues.templateFunction(value.id, value.title); tmpl = GfmAutoComplete.Issues.templateFunction(value);
} }
return tmpl; return tmpl;
}, },
...@@ -596,8 +598,12 @@ GfmAutoComplete.Labels = { ...@@ -596,8 +598,12 @@ GfmAutoComplete.Labels = {
}; };
// Issues, MergeRequests and Snippets // Issues, MergeRequests and Snippets
GfmAutoComplete.Issues = { GfmAutoComplete.Issues = {
templateFunction(id, title) { insertTemplateFunction(value) {
return `<li><small>${id}</small> ${_.escape(title)}</li>`; // eslint-disable-next-line no-template-curly-in-string
return value.reference || '${atwho-at}${id}';
},
templateFunction({ id, title, reference }) {
return `<li><small>${reference || id}</small> ${_.escape(title)}</li>`;
}, },
}; };
// Milestones // Milestones
......
...@@ -205,4 +205,40 @@ describe('GfmAutoComplete', function() { ...@@ -205,4 +205,40 @@ describe('GfmAutoComplete', function() {
expect(GfmAutoComplete.isLoading({ title: 'Foo' })).toBe(false); expect(GfmAutoComplete.isLoading({ title: 'Foo' })).toBe(false);
}); });
}); });
describe('Issues.insertTemplateFunction', function() {
it('should return default template', function() {
expect(GfmAutoComplete.Issues.insertTemplateFunction({ id: 5, title: 'Some Issue' })).toBe(
'${atwho-at}${id}', // eslint-disable-line no-template-curly-in-string
);
});
it('should return reference when reference is set', function() {
expect(
GfmAutoComplete.Issues.insertTemplateFunction({
id: 5,
title: 'Some Issue',
reference: 'grp/proj#5',
}),
).toBe('grp/proj#5');
});
});
describe('Issues.templateFunction', function() {
it('should return html with id and title', function() {
expect(GfmAutoComplete.Issues.templateFunction({ id: 5, title: 'Some Issue' })).toBe(
'<li><small>5</small> Some Issue</li>',
);
});
it('should replace id with reference if reference is set', function() {
expect(
GfmAutoComplete.Issues.templateFunction({
id: 5,
title: 'Some Issue',
reference: 'grp/proj#5',
}),
).toBe('<li><small>grp/proj#5</small> Some Issue</li>');
});
});
}); });
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