diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 7076aabcb..db7fab7ce 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1040,9 +1040,6 @@ function inlineAutoComplete(element) { // do not attach if Tribute is already initialized if (element.dataset.tribute === 'true') {return;} - const issuesUrl = element.dataset.issuesUrl; - const usersUrl = element.dataset.usersUrl; - const remoteSearch = function(url, cb) { const xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () @@ -1060,31 +1057,57 @@ function inlineAutoComplete(element) { xhr.send(); }; - const tribute = new Tribute({ - trigger: '#', - values: function (text, cb) { - if (event.target.type === 'text' && $(element).attr('autocomplete') != 'off') { - $(element).attr('autocomplete', 'off'); + const AutoCompleteIssueId = + { + trigger: '#', + values: function (text, cb) { + if (event.target.type === 'text' && $(element).attr('autocomplete') != 'off') { + $(element).attr('autocomplete', 'off'); + } + remoteSearch(element.dataset.issuesUrl + text, function (issues) { + return cb(issues); + }); + }, + lookup: 'label', + fillAttr: 'label', + requireLeadingSpace: true, + selectTemplate: function (issue) { + return '#' + issue.original.id; + }, + noMatchTemplate: function () { + return ''; } - remoteSearch(issuesUrl + text, function (issues) { - return cb(issues); - }); - }, - lookup: 'label', - fillAttr: 'label', - requireLeadingSpace: true, - selectTemplate: function (issue) { - return '#' + issue.original.id; - }, - noMatchTemplate: function () { - return ''; } - }); + const AutoCompleteWikiSyntax = + { + trigger: '{{', + values: [ + {name: 'collapse', value: '{{collapse\nThis is a block of text that is collapsed by default.\n}}'}, + {name: 'child_pages', value: '{{child_pages}}'}, + {name: 'include', value: '{{include(WikiPageName)}}'}, + {name: 'thumbnail', value: '{{thumbnail(image.png, size=300, title=Thumbnail)}}'}, + {name: 'issue', value: '{{issue(123, subject=true, project=true)}}'} + ], + lookup: 'name', + fillAttr: 'value', + requireLeadingSpace: true, + selectTemplate: function(item) { + return item.original.value; + }, + noMatchTemplate: function () { + return ''; + } + } + + const tribute = new Tribute({ + collection: [ + AutoCompleteIssueId, + ($(element).closest('.jstEditor').length ? AutoCompleteWikiSyntax : {}) + ]}); tribute.attach(element); } - $(document).ready(setupAjaxIndicator); $(document).ready(hideOnLoad); $(document).ready(addFormObserversForDoubleSubmit);