##// END OF EJS Templates
Limit only first posting by this session. Assume messages created by spam bots...
Limit only first posting by this session. Assume messages created by spam bots can be removed afterwards

File last commit:

r1468:14229bdf default
r1494:89a50a1d default
Show More
form.js
136 lines | 3.7 KiB | application/javascript | JavascriptLexer
neko259
Ability to switch file source field in posting form
r1461 var ITEM_FILE_SOURCE = 'fileSource';
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) {
neko259
Submit form only on ctrl-enter, not every enter
r1007 if (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 = {
raw_text: $('textarea').val()
}
var diffUrl = '/api/preview/';
$.post(diffUrl,
data,
function(data) {
var previewTextBlock = $('#preview-text');
previewTextBlock.html(data);
previewTextBlock.show();
})
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
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
var msg = $('textarea').val().trim();
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
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();
}
$('#file-source-button').click(function() {
selectFileChoice();
});
neko259
Added PoW instead of 30-second captcha
r1428 });