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);
 |