Now pulls the fetch API URL from a dedicated <span> with a data attribute ('data-url', should pass HTML 5 validators for our future overlords)
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (function(SN, $) {
 | |
| 
 | |
| var origInit = SN.Init.NoticeFormSetup;
 | |
| SN.Init.NoticeFormSetup = function(form) {
 | |
|     origInit(form);
 | |
| 
 | |
|     // Only attach to traditional-style forms
 | |
|     var textarea = form.find('.notice_data-text:first');
 | |
|     if (textarea.length == 0) {
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     function fullName(row) {
 | |
|         if (typeof row.fullname == "string" && row.fullname != '') {
 | |
|             return row.nickname + ' (' + row.fullname + ')';
 | |
|         } else {
 | |
|             return row.nickname;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     var apiUrl = $('#autocomplete-api').attr('data-url');
 | |
|     textarea.autocomplete(apiUrl, {
 | |
|         multiple: true,
 | |
|         multipleSeparator: " ",
 | |
|         minChars: 1,
 | |
|         formatItem: function(row, i, max){
 | |
|             row = eval("(" + row + ")");
 | |
|             // the display:inline is because our INSANE stylesheets
 | |
|             // override the standard display of all img tags for no
 | |
|             // good reason.
 | |
|             var div = $('<div><img style="display:inline; vertical-align: middle"> <span></span></div>')
 | |
|                 .find('img').attr('src', row.avatar).end()
 | |
|                 .find('span').text(fullName(row)).end()
 | |
|             return div.html();
 | |
|         },
 | |
|         formatMatch: function(row, i, max){
 | |
|             row = eval("(" + row + ")");
 | |
|             return row.nickname;
 | |
|         },
 | |
|         formatResult: function(row){
 | |
|             row = eval("(" + row + ")");
 | |
|             switch(row.type)
 | |
|             {
 | |
|                 case 'user':
 | |
|                     return '@' + row.nickname;
 | |
|                 case 'group':
 | |
|                     return '!' + row.nickname;
 | |
|             }
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| })(SN, jQuery);
 |