Auto-select paste URL

When creating a paste, we auto-select the resulting URL so that the user
only has to press CTRL+C to copy the link.
So you basically click "SEND" then press CTRL+C.

(cherry picked from commit 3feb4641c7892eeeaff2fe61c6e153919687b9c6)

Conflicts:
	css/zerobin.css
This commit is contained in:
Sebastien SAUVAGE 2013-02-23 15:11:45 +01:00 committed by El RIDO
parent 134d22c958
commit 315c45ed0c
2 changed files with 69 additions and 43 deletions

View File

@ -111,12 +111,14 @@ h3 {
#pasteresult a { color: #fff; } #pasteresult a { color: #fff; }
#pasteresult button { margin-left: 11px } #pasteresult button { margin-left: 11px; }
#deletelink { float: right; } #deletelink { float: right; }
#toolbar, #status { margin-bottom: 5px; } #toolbar, #status { margin-bottom: 5px; }
#copyhint { color: #666; font-size: 0.85em; }
button, .button, #expiration, #language { button, .button, #expiration, #language {
color: #fff; color: #fff;
background-color: #323b47; background-color: #323b47;

View File

@ -118,6 +118,7 @@ function decompress(data) {
function zeroCipher(key, message) { function zeroCipher(key, message) {
return sjcl.encrypt(key,compress(message)); return sjcl.encrypt(key,compress(message));
} }
/** /**
* Decrypt message with key, then decompress. * Decrypt message with key, then decompress.
* *
@ -288,22 +289,22 @@ function send_comment(parentid) {
}; };
$.post(scriptLocation(), data_to_send, 'json') $.post(scriptLocation(), data_to_send, 'json')
.error(function() { .error(function() {
showError('Comment could not be sent (serveur error or not responding).'); showError('Comment could not be sent (serveur error or not responding).');
}) })
.success(function(data) { .success(function(data) {
if (data.status == 0) { if (data.status == 0) {
showStatus('Comment posted.'); showStatus('Comment posted.');
location.reload(); location.reload();
} }
else if (data.status==1) { else if (data.status==1) {
showError('Could not post comment: '+data.message); showError('Could not post comment: '+data.message);
} }
else { else {
showError('Could not post comment.'); showError('Could not post comment.');
} }
}); });
} }
/** /**
* Send a new paste to server * Send a new paste to server
@ -321,33 +322,56 @@ function send_data() {
opendiscussion: $('input#opendiscussion').is(':checked') ? 1 : 0 opendiscussion: $('input#opendiscussion').is(':checked') ? 1 : 0
}; };
$.post(scriptLocation(), data_to_send, 'json') $.post(scriptLocation(), data_to_send, 'json')
.error(function() { .error(function() {
showError('Data could not be sent (serveur error or not responding).'); showError('Data could not be sent (serveur error or not responding).');
}) })
.success(function(data) { .success(function(data) {
if (data.status == 0) { if (data.status == 0) {
stateExistingPaste(); stateExistingPaste();
var url = scriptLocation() + "?" + data.id + '#' + randomkey; var url = scriptLocation() + "?" + data.id + '#' + randomkey;
var deleteUrl = scriptLocation() + "?pasteid=" + data.id + '&deletetoken=' + data.deletetoken; var deleteUrl = scriptLocation() + "?pasteid=" + data.id + '&deletetoken=' + data.deletetoken;
showStatus(''); showStatus('');
$('div#pastelink').html('Your paste is <a href="' + url + '">' + url + '</a>'); $('div#pastelink').html('Your paste is <a id="pasteurl" href="' + url + '">' + url + '</a> <span id="copyhint">(Hit CTRL+C to copy)</span>');
$('div#deletelink').html('<a href="' + deleteUrl + '">Delete link</a>'); $('div#deletelink').html('<a href="' + deleteUrl + '">Delete link</a>');
$('div#pasteresult').show(); $('div#pasteresult').show();
selectText('pasteurl'); // We pre-select the link so that the user only has to CTRL+C the link.
setElementText($('div#cleartext'), $('textarea#message').val()); setElementText($('div#cleartext'), $('textarea#message').val());
setElementText($('pre#prettyprint'), $('textarea#message').val()); setElementText($('pre#prettyprint'), $('textarea#message').val());
urls2links($('div#cleartext')); urls2links($('div#cleartext'));
showStatus(''); showStatus('');
prettyPrint(); prettyPrint();
} }
else if (data.status==1) { else if (data.status==1) {
showError('Could not create paste: '+data.message); showError('Could not create paste: '+data.message);
} }
else { else {
showError('Could not create paste.'); showError('Could not create paste.');
} }
}); });
}
/** Text range selection.
* From: http://stackoverflow.com/questions/985272/jquery-selecting-text-in-an-element-akin-to-highlighting-with-your-mouse
* @param string element : Indentifier of the element to select (id="").
*/
function selectText(element) {
var doc = document
, text = doc.getElementById(element)
, range, selection
;
if (doc.body.createTextRange) { //ms
range = doc.body.createTextRange();
range.moveToElementText(text);
range.select();
} else if (window.getSelection) { //all others
selection = window.getSelection();
range = doc.createRange();
range.selectNodeContents(text);
selection.removeAllRanges();
selection.addRange(range);
}
} }
/** /**