##// END OF EJS Templates
Specific order of downloaders ensures they will work as expected
Specific order of downloaders ensures they will work as expected

File last commit:

r1769:30b6f53c default
r1811:c2aa90c2 default
Show More
form.js
194 lines | 5.5 KiB | application/javascript | JavascriptLexer
neko259
Ability to switch file source field in posting form
r1461 var ITEM_FILE_SOURCE = 'fileSource';
neko259
Fixed sticker autocompletions. Localized 'too many files' message and added max file count there
r1766 var URL_STICKERS = '/api/stickers';
neko259
Image alias autocomplete
r1702 var MIN_INPUT_LENGTH = 3;
neko259
Fixed sticker autocompletions. Localized 'too many files' message and added max file count there
r1766 var URL_DELIMITER = '\n';
neko259
Ability to switch file source field in posting form
r1461
neko259
Updated form to a new style. Fixed mark manel
r680 $('input[name=image]').wrap($('<div class="file_wrap"></div>'));
neko259
Added a compact form to the thread.
r676
$('body').on('change', 'input[name=image]', function(event) {
neko259
Added image preview in the forms
r673 var file = event.target.files[0];
if(file.type.match('image.*')) {
var fileReader = new FileReader();
fileReader.addEventListener("load", function(event) {
neko259
Updated form to a new style. Fixed mark manel
r680 var wrapper = $('.file_wrap');
wrapper.find('.file-thumb').remove();
wrapper.append(
$('<div class="file-thumb" style="background-image: url('+event.target.result+')"></div>')
neko259
Added image preview in the forms
r673 );
});
fileReader.readAsDataURL(file);
}
neko259
Post message by ctrl-enter on the text field
r1005 });
var form = $('#form');
$('textarea').keypress(function(event) {
Fixed submitting form by hotkey in Chrome
r1577 if ((event.which == 10 || event.which == 13) && event.ctrlKey) {
neko259
Added PoW instead of 30-second captcha
r1428 form.find('input[type=submit]').click();
neko259
Post message by ctrl-enter on the text field
r1005 }
neko259
Added AJAX text preview to the form.
r1217 });
$('#preview-button').click(function() {
var data = {
neko259
Insert markup only to the text textarea
r1768 raw_text: $('textarea#id_text').val()
neko259
Added AJAX text preview to the form.
r1217 }
var diffUrl = '/api/preview/';
$.post(diffUrl,
data,
function(data) {
var previewTextBlock = $('#preview-text');
previewTextBlock.html(data);
previewTextBlock.show();
neko259
Add reflink popup to post preview text
r1717
addScriptsToPost(previewTextBlock);
neko259
Added AJAX text preview to the form.
r1217 })
neko259
Added PoW instead of 30-second captcha
r1428 });
/**
* Show text in the errors row of the form.
* @param form
* @param text
*/
function showAsErrors(form, text) {
form.children('.form-errors').remove();
if (text.length > 0) {
var errorList = $('<div class="form-errors">' + text + '<div>');
errorList.appendTo(form);
}
}
function addHiddenInput(form, name, value) {
form.find('input[name=' + name + ']').val(value);
}
neko259
Ability to switch file source field in posting form
r1461 function selectFileChoice() {
var file_input = $('#id_file');
var url_input = $('#id_file_url');
var file_input_row = file_input.parent().parent();
var url_input_row = url_input.parent().parent();
file_input_row.toggle();
url_input_row.toggle();
url_input.val('');
file_input.val('');
var source;
if (file_input_row.is(':visible')) {
source = 'file';
} else {
source = 'url';
}
localStorage.setItem(ITEM_FILE_SOURCE, source);
}
neko259
Refactoring of the scripts accessing textarea
r1769 function getPostTextarea() {
return $('textarea#id_text');
}
neko259
Added PoW instead of 30-second captcha
r1428 $(document).ready(function() {
var powDifficulty = parseInt($('body').attr('data-pow-difficulty'));
neko259
Check for shared worker support before enabling them
r1465 if (powDifficulty > 0 && typeof SharedWorker != 'undefined') {
neko259
Don't include pow and hasher scripts to both document and worker. Import...
r1468 var worker = new SharedWorker($('.post-form').attr('data-pow-script'));
neko259
Make pow script be a shared worker
r1462 worker.port.onmessage = function(e) {
neko259
Added PoW instead of 30-second captcha
r1428 var form = $('#form');
addHiddenInput(form, 'timestamp', e.data.timestamp);
addHiddenInput(form, 'iteration', e.data.iteration);
addHiddenInput(form, 'guess', e.data.guess);
form.submit();
neko259
Block the form while computing PoW.
r1451 $('.post-form-w').unblock();
neko259
Added PoW instead of 30-second captcha
r1428 };
neko259
Fixed capturing worker errors
r1466 worker.onerror = function(event){
throw new Error(event.message + " (" + event.filename + ":" + event.lineno + ")");
neko259
Add worker js errors to the console
r1464 };
neko259
Make pow script be a shared worker
r1462 worker.port.start();
neko259
Added PoW instead of 30-second captcha
r1428
var form = $('#form');
var submitButton = form.find('input[type=submit]');
submitButton.click(function() {
showAsErrors(form, gettext('Computing PoW...'));
neko259
Block the form while computing PoW.
r1451 $('.post-form-w').block({ message: gettext('Computing PoW...') })
neko259
Added PoW instead of 30-second captcha
r1428
neko259
Insert markup only to the text textarea
r1768 var msg = $('textarea#id_text').val().trim();
neko259
Added PoW instead of 30-second captcha
r1428
var data = {
msg: msg,
difficulty: parseInt($('body').attr('data-pow-difficulty')),
neko259
Don't include pow and hasher scripts to both document and worker. Import...
r1468 hasher: $('.post-form').attr('data-hasher')
neko259
Added PoW instead of 30-second captcha
r1428 };
neko259
Make pow script be a shared worker
r1462 worker.port.postMessage(data);
neko259
Added PoW instead of 30-second captcha
r1428
return false;
});
}
neko259
Ability to switch file source field in posting form
r1461
Opera Mini fixes
r1639 var $fileSourceButton = $('#file-source-button');
if (window.localStorage) {
var source = localStorage.getItem(ITEM_FILE_SOURCE);
if (source == null) {
source = 'file';
}
if (source == 'file') {
$('#id_file_url').parent().parent().hide();
} else {
$('#id_file').parent().parent().hide();
}
$fileSourceButton.click(function() {
selectFileChoice();
});
neko259
Ability to switch file source field in posting form
r1461 } else {
Opera Mini fixes
r1639 $fileSourceButton.hide();
neko259
Ability to switch file source field in posting form
r1461 }
neko259
Image alias autocomplete
r1702
neko259
Fixed sticker autocompletions. Localized 'too many files' message and added max file count there
r1766 // Stickers autocomplete
function split( val ) {
return val.split(URL_DELIMITER);
}
function extractLast( term ) {
return split(term).pop();
}
$('#id_file_1').autocomplete({
neko259
Image alias autocomplete
r1702 source: function( request, response ) {
$.getJSON(URL_STICKERS, {
neko259
Fixed sticker autocompletions. Localized 'too many files' message and added max file count there
r1766 term: extractLast( request.term )
neko259
Image alias autocomplete
r1702 }, response);
},
search: function() {
// custom minLength
neko259
Fixed sticker autocompletions. Localized 'too many files' message and added max file count there
r1766 var term = extractLast( this.value );
neko259
Image alias autocomplete
r1702 if (term.length < MIN_INPUT_LENGTH) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
neko259
Fixed sticker autocompletions. Localized 'too many files' message and added max file count there
r1766 var terms = split( this.value );
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.alias );
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(URL_DELIMITER);
neko259
Image alias autocomplete
r1702 return false;
}
})
.autocomplete( "instance" )._renderItem = function( ul, item ) {
return $( "<li>" )
.append( "<div>" + '<img src="' + item.thumb + '">' + '<br />' + item.alias + "</div>" )
.appendTo( ul );
};
neko259
Added PoW instead of 30-second captcha
r1428 });