daily pastebin goal
25%
SHARE
TWEET

Untitled

a guest Apr 17th, 2018 64 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function() {
  2.     query = window.location.href.parseQuery();
  3.     Event.observe(window, 'load', initialize);
  4. })();
  5.  
  6. function initialize() {
  7.     var current_new_word = '';
  8.     per_page = 30;
  9.     wordcount = 0;
  10.     sort = 'desc';
  11.     word_help_text = $F('new_word');
  12.     sort_words();
  13.     $('new_word').observe('focus', function(e) {
  14.             var el = Event.element(e);
  15.             if ( $F(el) == word_help_text ) {
  16.                 el.value = '';
  17.                 el.style.color = "black";
  18.                 el.style.border = "1px solid black";
  19.             }
  20.         }
  21.     );
  22.    
  23.     $('new_word').observe('blur', function(e) {
  24.             var el = Event.element(e);
  25.             if ($F(el).blank()) {
  26.                 el.value = word_help_text;
  27.                 el.style.color = "grey";
  28.                 el.style.border = "1px solid #aaa";
  29.             }
  30.         }
  31.     );
  32.    
  33.     $('new_word').observe('keydown', submit_new_word );
  34.    
  35.     $('languages').observe('change', function(e) {
  36.             var el = Event.element(e);
  37.             window.location.href="partners_edit.php?mode=ttsfilter&partnerid=" + query.partnerid + "&lang=" + $F(el);
  38.         }
  39.     );
  40.    
  41.     $('replace_word_static_container').observe('click', function(e) {
  42.             var el = $('replace_word_static_container');
  43.             el.style.display = "none";
  44.             $('replace_word').style.display = "inline";
  45.             $('replace_word').style.color = 'black';
  46.             $('replace_word').select();
  47.             $('replace_word').focus();
  48.         }
  49.     );
  50.    
  51.     $('replace_word').observe('blur', submit_replacement);
  52.     $('replace_word').observe('keydown', submit_replacement);
  53.    
  54.     $$('.word_row').each( function(el) { el.observe('click', toggle_textbox_byevent );  });
  55.     $$('input.word_edit').each( function(el) { el.observe('blur', submit_word_edit ); el.observe('keydown', submit_word_edit);  });
  56.     $$('.delete_word').each( function(el) {  el.observe('click', delete_word);  } );
  57.        
  58.     $('sort_trigger').observe('click', sort_words.curry(null));
  59.     $('search_word').observe('keyup', filter_words);
  60.     //new Form.Element.Observer($('search_word'), 2, filter_words);
  61.     $('add_button').observe('click', submit_new_word );
  62.    
  63.     init_words();
  64.    
  65.     $$('.larr').first().observe('click', function() {
  66.         if ($F('select_page_widget') > 1) {
  67.             $('select_page_widget').selectedIndex--;
  68.             init_words();
  69.         }
  70.     });
  71.    
  72.     $$('.rarr').first().observe('click', function() {
  73.         if ($F('select_page_widget') < parseInt($('pages_total').innerHTML, 10) ) {
  74.             $('select_page_widget').selectedIndex++;
  75.             init_words();
  76.         }
  77.     });
  78. }
  79.  
  80. function filter_words(e) {
  81.     //alert('here');
  82.     var el = Event.element(e);
  83.     var str = $F(el).escapeHTML();
  84.    
  85.     if (wordcount > per_page || str.blank() )
  86.         init_words();
  87.     else { 
  88.         $$('.word_row').each( function(el) { el.style.display = 'none'; } );
  89.         var filtered = $$('.word_row').findAll( function(el) { return (el.select('.display_word').first().innerHTML.startsWith(str)); } );
  90.         filtered.each( function(el) { el.style.display = 'block'; } );
  91.     }
  92. }
  93.  
  94. function toggle_textbox_byevent (e) {
  95.     var el = Event.element(e);
  96.     toggle_textbox(el);
  97. }
  98.  
  99. function toggle_textbox (el) {
  100.     //alert (el);
  101.     normalize_list();
  102.     //alert ('after' + el);
  103.     var id = el.id.substr(2);
  104.     var in_id = 'in' + id;
  105.    
  106.     if ($(in_id)) {
  107.         $('sp' + id).style.display = 'none';
  108.         $(in_id).style.display = 'inline';
  109.         $('dl' + id).style.display = 'inline';
  110.         $(in_id).select();
  111.         $(in_id).focus();
  112.     }
  113. }
  114.  
  115. function build_page_selector(pages, selected) {
  116.     if ($('select_page_widget')) {
  117.         $('select_page_widget').stopObserving('click');
  118.     }
  119.     $('page_selector').innerHTML = '';
  120.    
  121.     var html = '<select id="select_page_widget" name="page">';
  122.    
  123.     for (var i = 1; i <= pages; i++) {
  124.         if (i != selected) {
  125.             html += '<option value = "' + i + '">' + i + '</option>';
  126.         }
  127.         else {
  128.             html += '<option value = "' + i + '" selected="yes">' + i + '</option>';
  129.         }
  130.     }
  131.  
  132.     html += '</select>';
  133.    
  134.     $('page_selector').innerHTML = html;
  135.    
  136.     $('select_page_widget').observe('change', init_words);
  137.    
  138. }
  139.  
  140. function clear_words() {
  141.     $$('.word_row').each( function(el) { el.stopObserving('click', toggle_textbox_byevent );  });
  142.     $$('input.word_edit').each( function(el) { el.stopObserving('blur', submit_word_edit ); el.stopObserving('keydown', submit_word_edit);  });
  143.     $$('.delete_word').each( function(el) {  el.stopObserving('click', delete_word);  } );
  144.    
  145.     $('rowlist').innerHTML = '';
  146. }
  147.  
  148. function init_words() {
  149.     var lang = query.lang || 1;
  150.     var search = $F('search_word');
  151.     var words_per_page = per_page;
  152.     var page = $('select_page_widget') ? $F('select_page_widget') : 1;
  153.    
  154.     clear_words();
  155.    
  156.     var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
  157.     new Ajax.Request(url, {
  158.         parameters:  {action: 'fetch', lang: lang, search: search, sortby: sort, items_per_page: words_per_page, page: page},
  159.         asynchronous: false,
  160.         onSuccess:  function(resp) {
  161.             var data = resp.responseText.evalJSON();
  162.             wordcount = data['count'];
  163.             if (data['count'] < 1) return;
  164.             for (var id in data['words']) {
  165.                 display_new_word(id, data['words'][id], true, true);
  166.             }
  167.             var page_count = Math.ceil(parseFloat(data['count']) / parseFloat(words_per_page));
  168.             $('pages_total').innerHTML = page_count;
  169.             build_page_selector(page_count, page);
  170.             sort_words(true);
  171.         },
  172.         onFailure: function () {
  173.             alert(url + ' is not responding');
  174.         }
  175.     });
  176.    
  177. }
  178.  
  179.  
  180.  
  181. function submit_new_word(e) {
  182.     var el = Event.element(e);
  183.     if ( (Event.KEY_RETURN == (e.keyCode || e.which)  
  184.     || (e.type == 'click' && el.id == 'add_button'))
  185.     && $F(el) != word_help_text
  186.     ) {
  187.         var el = $('new_word');
  188.         el.value = $F(el).toLowerCase().escapeHTML();
  189.         var blank = el.value.blank();
  190.         var exists = word_exists(el.value);
  191.        
  192.         if ( !blank && !exists ) {
  193.             langs = $('languages');
  194.             var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
  195.            
  196.             new Ajax.Request(url, {
  197.                 parameters:  {action: 'new', word: $F(el), lang: $F(langs)},
  198.                 asynchronous: false,
  199.                 onSuccess:  add_new_word,
  200.                 onFailure: function () {
  201.                     alert(url + ' is not responding');
  202.                 }
  203.             });
  204.         }
  205.         else {
  206.             el.select();
  207.             el.focus();
  208.             if (exists) {
  209.                 new Effect.Appear('already_exists_message', {duration: 0.1})
  210.                 new Effect.Fade('already_exists_message', {duration: 0.2, queue: 'end', delay: 1});
  211.             }
  212.             if (blank) {
  213.                 new Effect.Appear('input_blank_message', {duration: 0.1})
  214.                 new Effect.Fade('input_blank_message', {duration: 0.2, queue: 'end', delay: 1});
  215.             }
  216.         }
  217.     }
  218. }
  219.  
  220. function add_new_word(resp) {
  221.     var newid = parseInt(resp.responseText, 10);
  222.     var newword = $('new_word').value;
  223.    
  224.     display_new_word(newid, newword);
  225. }
  226.  
  227.  
  228. function display_new_word(newid, newword, no_effect, no_focus) {
  229.     var new_row = '<li class="word_row" id ="row' + newid + '"><input class = "word_edit" id="in' + newid + '" value="' + newword + '" type="text" size="30" style="display: none; border: 1px black solid; color: black;"><span class="delete_word" style="display: none;" id="dl'+newid+'">&nbsp;&nbsp;<a href="javascript:void(0)">delete</a></span><span class="display_word" id="sp' + newid + '" style="color: black; cursor: pointer" >' + newword + '</span><span id="ms' + newid + '" style="color: red; display: none"></span></li>';
  230.     if ( !($$('.word_row').first()) ) {
  231.         $('rowlist').innerHTML = new_row;
  232.     }
  233.     else {
  234.         $$('.word_row').first().insert({before: new_row});
  235.     }
  236.    
  237.     $('row'+newid).observe('click', toggle_textbox_byevent );
  238.     $('in'+newid).observe('blur', submit_word_edit ).observe('keydown', submit_word_edit);
  239.     $('dl'+newid).observe('click', delete_word);
  240.    
  241.     current_new_word = '';
  242.    
  243.     if (!no_focus) {
  244.         $('new_word').value = '';
  245.         $('new_word').focus();
  246.     }
  247.    
  248.     if (!no_effect)
  249.         new Effect.Highlight('row' + newid);
  250. }
  251.  
  252. function normalize_list() {
  253.     $$('.word_edit').each( function(el) {el.style.display = 'none';} );
  254.     $$('.delete_word').each( function(el) {el.style.display = 'none';} );
  255.     $$('.display_word').each( function(el) {el.style.display = 'inline';} );
  256. }
  257.  
  258. function find_next_word(el) {
  259.     var next_row = $$('.word_row')[$$('input.word_edit').indexOf(el) + 1];
  260.    
  261.     while (!next_row || next_row.style.display == 'none') {
  262.         if (!next_row) next_row = $$('.word_row').first();
  263.         else next_row = $$('.word_row')[ $$('.word_row').indexOf(next_row) + 1 ];
  264.     }
  265.    
  266.     return next_row.select('input.word_edit').first();
  267. }
  268.  
  269. function find_prev_word(el) {
  270.     var prev_row = $$('.word_row')[$$('input.word_edit').indexOf(el) - 1];
  271.    
  272.     while (!prev_row || prev_row.style.display == 'none') {
  273.         if (!prev_row) prev_row = $$('.word_row').last();
  274.         else prev_row = $$('.word_row')[ $$('.word_row').indexOf(prev_row) - 1 ];
  275.     }
  276.    
  277.     return prev_row.select('input.word_edit').first();
  278. }
  279.  
  280. function iterate(e) {
  281.     var el = Event.element(e);
  282.     if (Event.KEY_TAB == (e.keyCode || e.which)
  283.         || (Event.KEY_DOWN == (e.keyCode || e.which))
  284.     ) {
  285.         e.stop();
  286.         toggle_textbox( find_next_word(el) );
  287.     }
  288.    
  289.     if (Event.KEY_UP == (e.keyCode || e.which)) {  
  290.         e.stop();
  291.         toggle_textbox( find_prev_word(el) );
  292.     }
  293. }
  294.  
  295.  
  296. function submit_word_edit(e) {
  297.     if (    /*e.type == 'blur'
  298.             || */(Event.KEY_RETURN == (e.keyCode || e.which))
  299.             || (Event.KEY_TAB == (e.keyCode || e.which))
  300.             || (Event.KEY_UP == (e.keyCode || e.which))
  301.             || (Event.KEY_DOWN == (e.keyCode || e.which))
  302.             || (Event.KEY_ESC == (e.keyCode || e.which))
  303.     ) {
  304.         //alert (e.type);
  305.         var el = Event.element(e);
  306.         el.value = $F(el).toLowerCase();
  307.         var id = el.id.substr(2);
  308.         var sp_id = 'sp' + id;
  309.        
  310.         if (Event.KEY_ESC == (e.keyCode || e.which)) {
  311.             normalize_list();
  312.             return;
  313.         }
  314.        
  315.         var edited_word = $F(el).escapeHTML();
  316.        
  317.         if (word_exists(edited_word, id) ) {
  318.             $('ms'+id).innerHTML = 'This word already exists.';
  319.             $('in' + id).select();
  320.             $('in' + id).focus();
  321.             new Effect.Appear('ms' + id, {duration: 0.1});
  322.             new Effect.Fade('ms' + id, {duration: 0.2, queue: 'end', delay: 1});
  323.         }
  324.         else if (edited_word.blank()) {
  325.             $('ms'+id).innerHTML = 'Word shouldn\'t be blank.';
  326.             $('in' + id).select();
  327.             $('in' + id).focus();
  328.             new Effect.Appear('ms' + id, {duration: 0.1})
  329.             new Effect.Fade('ms' + id, {duration: 0.2, queue: 'end', delay: 1});
  330.         }
  331.         else if ($(sp_id)) {
  332.             $(sp_id).innerHTML = edited_word;
  333.             el.style.display = 'none';
  334.             $(sp_id).style.display = 'inline';
  335.             $('dl'+id).style.display = 'none';
  336.            
  337.             var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
  338.             new Ajax.Request(url, {
  339.                 parameters:  {action: 'edit', word: edited_word, id: id},
  340.                 asynchronous: true,
  341.                 onSuccess:  function() {
  342.                 },
  343.                 onFailure: function () {
  344.                     alert(url + ' is not responding');
  345.                 }
  346.             });
  347.             iterate(e);
  348.         }
  349.     }
  350. }
  351.  
  352.  
  353.  
  354. function word_exists(word, exclude_id) {
  355.     var exists = 0;
  356.     var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
  357.     new Ajax.Request(url, {
  358.         parameters:  {action: 'exist', word: word, exclude: exclude_id, lang: $F('languages') },
  359.         asynchronous: false,
  360.         onSuccess:  function(resp) {
  361.             var yes = parseInt(resp.responseText);
  362.             if (yes == 1) exists = 1;
  363.         },
  364.         onFailure: function () {
  365.             alert(url + ' is not responding');
  366.         }
  367.     });
  368.    
  369.     return (exists == 1);
  370.     /*var elem;
  371.     if (exclude_id != null)
  372.         elem = $$('input.word_edit').find( function(el) { return ( ($F(el) == word.unescapeHTML() ) && (el.id != ('in' + exclude_id)) ) }  );
  373.     else
  374.         elem = $$('input.word_edit').find( function(el) { return $F(el) == word.unescapeHTML() }  );
  375.     return (elem?true:false);*/
  376. }
  377.  
  378. function sort_words(no_change) {
  379.     if (no_change == null) {
  380.         if (sort == 'asc')
  381.             sort = 'desc';
  382.         else
  383.             sort = 'asc';
  384.        
  385.         init_words();
  386.     }
  387.    
  388.     var rows = $$('.word_row').sortBy( function(el) { return el.select('span.display_word').first().innerHTML; } );
  389.     var list = $('rowlist');
  390.     //list.innerHTML = '';
  391.     if (sort == 'asc')
  392.         rows.each ( function(el) { list.insert(el) } );
  393.     else
  394.         rows.each ( function(el) { list.insert( {'top': el} )} );
  395.     rows = null;
  396. }
  397.  
  398. function submit_replacement (e) {
  399.     if (e.type == 'blur' || (Event.KEY_RETURN == (e.keyCode || e.which)) ) {
  400.         var el = Event.element(e);
  401.         var st_el = $('replace_word_static_container');
  402.         $('replace_word_static').innerHTML = $F(el).escapeHTML();
  403.         el.style.display = "none";
  404.         st_el.style.display = "inline";
  405.        
  406.         var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
  407.         new Ajax.Request(url, {
  408.             parameters:  {action: 'replace', word: $F(el).escapeHTML(), lang: $F('languages')},
  409.             asynchronous: true,
  410.             onSuccess:  function() {
  411.             },
  412.             onFailure: function () {
  413.                 alert(url + ' is not responding');
  414.             }
  415.         });
  416.     }
  417. }
  418.  
  419. function delete_word(e) {
  420.     var el = Event.element(e);
  421.     var id = el.ancestors().first().id.substr(2);
  422.  
  423.     var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
  424.     new Ajax.Request(url, {
  425.         parameters: { action: 'delete', id: id },
  426.         asynchronous: true,
  427.         onSuccess:  function() {
  428.         },
  429.         onFailure: function () {
  430.             alert(url + ' is not responding');
  431.         }
  432.     });
  433.    
  434.     el.ancestors()[1].remove();
  435. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top