|
1 | 1 | @import lib.Email.Addresses
|
2 | 2 | @import lib.model.MessageSummary
|
| 3 | +@import lib.model.PRMessageIdFinder.messageIdsByMostRecentUsageIn |
| 4 | +@import play.api.libs.json.JsString |
3 | 5 | @(mailType: lib.MailType, proposedMail: lib.ProposedMail, isDefault: Boolean, btnClass: String
|
4 | 6 | )(implicit req: GHPRRequest[_], prMailSettings: Form[lib.PRMailSettings], messages: Messages)
|
5 | 7 | @import helper._
|
|
50 | 52 | @fragments.mailIdent(MessageSummary("{{id}}", "{{subject}}", java.time.ZonedDateTime.now, Addresses("{{addresses.from}}"), "{{groupLink}}"))
|
51 | 53 | </script>
|
52 | 54 | <script>
|
53 |
| - var inReplyToFieldContainer = jQuery("#@mailType.slug-in-reply-to"); |
54 |
| - inReplyToFieldContainer.messageIdPicker({ |
55 |
| - hint: true, |
56 |
| - highlight: true, |
57 |
| - minLength: 3, |
58 |
| - classNames: {menu: 'tt-dropdown-menu'} |
59 |
| - }, { |
60 |
| - name: 'messageIds', |
61 |
| - source: new Bloodhound({ |
| 55 | + jQuery(function() { |
| 56 | + var inReplyToFieldContainer = jQuery("#@mailType.slug-in-reply-to"); |
| 57 | + var messageSuggestions = new Bloodhound({ |
62 | 58 | datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
|
63 | 59 | queryTokenizer: Bloodhound.tokenizers.whitespace,
|
64 | 60 | remote: {
|
65 | 61 | url: '@routes.Api.messageLookup(req.repo.id, "QUERY_STRING")',
|
66 | 62 | wildcard: 'QUERY_STRING'
|
67 | 63 | }
|
68 |
| - }), |
69 |
| - display: 'id', |
70 |
| - templates: { |
71 |
| - empty: '<div class="empty-message">Unable to find any Messages that match that Id</div>', |
72 |
| - suggestion: Handlebars.compile(jQuery("#entry-template").html()) |
73 |
| - } |
74 |
| - }); |
75 |
| - inReplyToFieldContainer.find(".input-group .typeahead").bind('typeahead:select', function (ev, suggestion) { |
76 |
| - jQuery("#@mailType.slug-subject-prefix input").changeVal(suggestion.suggestsPrefix); |
| 64 | + }); |
| 65 | + |
| 66 | + var messageSuggestionsWithDefaults = function(q, sync, async) { |
| 67 | + var fallback = @Html(JsString(messageIdsByMostRecentUsageIn(req.pr).headOption.getOrElse("")).toString) ; |
| 68 | + messageSuggestions.search( q === '' ? fallback : q, sync, async); |
| 69 | + }; |
| 70 | + |
| 71 | + inReplyToFieldContainer.messageIdPicker({ |
| 72 | + hint: true, |
| 73 | + highlight: true, |
| 74 | + minLength: 0, // To allow default suggestions |
| 75 | + classNames: {menu: 'tt-dropdown-menu'} |
| 76 | + }, { |
| 77 | + name: 'messageIds', |
| 78 | + source: messageSuggestionsWithDefaults, |
| 79 | + display: 'id', |
| 80 | + templates: { |
| 81 | + empty: '<div class="empty-message">Unable to find any Messages that match that Id</div>', |
| 82 | + suggestion: Handlebars.compile(jQuery("#entry-template").html()) |
| 83 | + } |
| 84 | + }); |
| 85 | + inReplyToFieldContainer.find(".input-group .typeahead").bind('typeahead:select', function (ev, suggestion) { |
| 86 | + jQuery("#@mailType.slug-subject-prefix input").changeVal(suggestion.suggestsPrefix); |
| 87 | + }); |
77 | 88 | });
|
| 89 | + |
78 | 90 | </script>
|
79 | 91 |
|
80 | 92 | @b3.submit('class -> s"btn $btnClass btn-lg", 'disabled -> proposedMail.errors.nonEmpty) {
|
|
0 commit comments