aboutsummaryrefslogtreecommitdiff
path: root/js/insert.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/insert.js')
-rw-r--r--js/insert.js230
1 files changed, 230 insertions, 0 deletions
diff --git a/js/insert.js b/js/insert.js
new file mode 100644
index 0000000..63589a5
--- /dev/null
+++ b/js/insert.js
@@ -0,0 +1,230 @@
+// Init some stuff
+$(document).ready(function(){
+ $('#add-url, #add-keyword').keypress(function(e){
+ if (e.which == 13) {add_link();}
+ });
+ add_link_reset();
+ $('#new_url_form').attr('action', 'javascript:add_link();');
+
+ $('input.text').focus(function(){
+ $(this).select();
+ });
+
+ // this one actually has little impact, the .hasClass('disabled') in each edit_link_display(), remove() etc... fires faster
+ $(document).on( 'click', 'a.button', function() {
+ if( $(this).hasClass('disabled') ) {
+ return false;
+ }
+ });
+
+ // When Searching, explode search text in pieces -- see split_search_text_before_search()
+ $('#filter_form').submit( function(){
+ split_search_text_before_search();
+ return true;
+ });
+});
+
+// Create new link and add to table
+function add_link() {
+ if( $('#add-button').hasClass('disabled') ) {
+ return false;
+ }
+ var newurl = $("#add-url").val();
+ var nonce = $("#nonce-add").val();
+ if ( !newurl || newurl == 'http://' || newurl == 'https://' ) {
+ return;
+ }
+ var keyword = $("#add-keyword").val();
+ add_loading("#add-button");
+ $.getJSON(
+ ajaxurl,
+ {action:'add', url: newurl, keyword: keyword, nonce: nonce},
+ function(data){
+ if(data.status == 'success') {
+ $('#main_table tbody').prepend( data.html ).trigger("update");
+ $('#nourl_found').css('display', 'none');
+ zebra_table();
+ increment_counter();
+ toggle_share_fill_boxes( data.url.url, data.shorturl, data.url.title );
+ }
+
+ add_link_reset();
+ end_loading("#add-button");
+ end_disable("#add-button");
+
+ feedback(data.message, data.status);
+ }
+ );
+}
+
+function toggle_share_fill_boxes( url, shorturl, title ) {
+ $('#copylink').val( shorturl );
+ $('#titlelink').val( title );
+ $('#origlink').attr( 'href', url ).html( url );
+ $('#statlink').attr( 'href', shorturl+'+' ).html( shorturl+'+' );
+ var tweet = ( title ? title + ' ' + shorturl : shorturl );
+ $('#tweet_body').val( tweet ).keypress();
+ $('#shareboxes').slideDown( '300', function(){ init_clipboard(); } ); // clipboard re-initialized after slidedown to make sure the invisible Flash element is correctly positionned
+ $('#tweet_body').keypress();
+}
+
+// Display the edition interface
+function edit_link_display(id) {
+ if( $('#edit-button-'+id).hasClass('disabled') ) {
+ return false;
+ }
+ add_loading('#actions-'+id+' .button');
+ var keyword = $('#keyword_'+id).val();
+ var nonce = get_var_from_query( $('#edit-button-'+id).attr('href'), 'nonce' );
+ $.getJSON(
+ ajaxurl,
+ { action: "edit_display", keyword: keyword, nonce: nonce, id: id },
+ function(data){
+ $("#id-" + id).after( data.html );
+ $("#edit-url-"+ id).focus();
+ end_loading('#actions-'+id+' .button');
+ }
+ );
+}
+
+// Delete a link
+function remove_link(id) {
+ if( $('#delete-button-'+id).hasClass('disabled') ) {
+ return false;
+ }
+ if (!confirm('Really delete?')) {
+ return;
+ }
+ var keyword = $('#keyword_'+id).val();
+ var nonce = get_var_from_query( $('#delete-button-'+id).attr('href'), 'nonce' );
+ $.getJSON(
+ ajaxurl,
+ { action: "delete", keyword: keyword, nonce: nonce, id: id },
+ function(data){
+ if (data.success == 1) {
+ $("#id-" + id).fadeOut(function(){
+ $(this).remove();
+ if( $('#main_table tbody tr').length == 1 ) {
+ $('#nourl_found').css('display', '');
+ }
+
+ zebra_table();
+ });
+ decrement_counter();
+ decrease_total_clicks( id );
+ } else {
+ alert('something wrong happened while deleting :/');
+ }
+ }
+ );
+}
+
+// Redirect to stat page
+function go_stats(link) {
+ window.location=link;
+}
+
+// Cancel edition of a link
+function edit_link_hide(id) {
+ $("#edit-" + id).fadeOut(200, function(){
+ end_disable('#actions-'+id+' .button');
+ });
+}
+
+// Save edition of a link
+function edit_link_save(id) {
+ add_loading("#edit-close-" + id);
+ var newurl = encodeURI( $("#edit-url-" + id).val() );
+ var newkeyword = $("#edit-keyword-" + id).val();
+ var title = $("#edit-title-" + id).val();
+ var keyword = $('#old_keyword_'+id).val();
+ var nonce = $('#nonce_'+id).val();
+ var www = $('#yourls-site').val();
+ $.getJSON(
+ ajaxurl,
+ {action:'edit_save', url: newurl, id: id, keyword: keyword, newkeyword: newkeyword, title: title, nonce: nonce },
+ function(data){
+ if(data.status == 'success') {
+
+ if( data.url.title != '' ) {
+ var display_link = '<a href="' + data.url.url + '" title="' + data.url.title + '">' + data.url.display_title + '</a><br/><small><a href="' + data.url.url + '">' + data.url.display_url + '</a></small>';
+ } else {
+ var display_link = '<a href="' + data.url.url + '" title="' + data.url.url + '">' + data.url.display_url + '</a>';
+ }
+
+ $("#url-" + id).html(display_link);
+ $("#keyword-" + id).html('<a href="' + data.url.shorturl + '" title="' + data.url.shorturl + '">' + data.url.keyword + '</a>');
+ $("#edit-" + id).fadeOut(200, function(){
+ $('#main_table tbody').trigger("update");
+ });
+ $('#keyword_'+id).val( newkeyword );
+ $('#statlink-'+id).attr( 'href', data.url.shorturl+'+' );
+ }
+ feedback(data.message, data.status);
+ end_loading("#edit-close-" + id);
+ end_disable("#edit-close-" + id);
+ if(data.status == 'success') {
+ end_disable("#actions-" + id + ' .button');
+ }
+ }
+ );
+}
+
+// Prettify table with odd & even rows
+function zebra_table() {
+ $("#main_table tbody tr:even").removeClass('odd').addClass('even');
+ $("#main_table tbody tr:odd").removeClass('even').addClass('odd');
+ $('#main_table tbody').trigger("update");
+}
+
+// Ready to add another URL
+function add_link_reset() {
+ $('#add-url').val('').focus();
+ $('#add-keyword').val('');
+}
+
+// Increment URL counters
+function increment_counter() {
+ $('.increment').each(function(){
+ $(this).html( parseInt($(this).html()) + 1);
+ });
+}
+
+// Decrement URL counters
+function decrement_counter() {
+ $('.increment').each(function(){
+ $(this).html( parseInt($(this).html()) - 1 );
+ });
+}
+
+// Decrease number of total clicks
+function decrease_total_clicks( id ) {
+ var total_clicks = $("#overall_tracking strong:nth-child(2)");
+ total_clicks.html( parseInt( total_clicks.html() ) - parseInt( $('#clicks-' + id).html() ) );
+}
+
+// Toggle Share box
+function toggle_share(id) {
+ if( $('#share-button-'+id).hasClass('disabled') ) {
+ return false;
+ }
+ var link = $('#url-'+id+' a:first');
+ var longurl = link.attr('href');
+ var title = link.attr('title');
+ var shorturl = $('#keyword-'+id+' a:first').attr('href');
+
+ toggle_share_fill_boxes( longurl, shorturl, title );
+}
+
+// When "Search" is clicked, split search text to beat servers which don't like query string with "http://"
+// See https://github.com/YOURLS/YOURLS/issues/1576
+function split_search_text_before_search() {
+ // Add 2 hidden fields and populate them with parts of search text
+ $("<input type='hidden' name='search_protocol' />").appendTo('#filter_form');
+ $("<input type='hidden' name='search_slashes' />").appendTo('#filter_form');
+ var search = get_protocol_slashes_and_rest( $('#filter_form input[name=search]').val() );
+ $('#filter_form input[name=search]').val( search.rest );
+ $('#filter_form input[name=search_protocol]').val( search.protocol );
+ $('#filter_form input[name=search_slashes]').val( search.slashes );
+}
+