Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function() {
- query = window.location.href.parseQuery();
- Event.observe(window, 'load', initialize);
- })();
- function initialize() {
- var current_new_word = '';
- per_page = 30;
- wordcount = 0;
- sort = 'desc';
- word_help_text = $F('new_word');
- sort_words();
- $('new_word').observe('focus', function(e) {
- var el = Event.element(e);
- if ( $F(el) == word_help_text ) {
- el.value = '';
- el.style.color = "black";
- el.style.border = "1px solid black";
- }
- }
- );
- $('new_word').observe('blur', function(e) {
- var el = Event.element(e);
- if ($F(el).blank()) {
- el.value = word_help_text;
- el.style.color = "grey";
- el.style.border = "1px solid #aaa";
- }
- }
- );
- $('new_word').observe('keydown', submit_new_word );
- $('languages').observe('change', function(e) {
- var el = Event.element(e);
- window.location.href="partners_edit.php?mode=ttsfilter&partnerid=" + query.partnerid + "&lang=" + $F(el);
- }
- );
- $('replace_word_static_container').observe('click', function(e) {
- var el = $('replace_word_static_container');
- el.style.display = "none";
- $('replace_word').style.display = "inline";
- $('replace_word').style.color = 'black';
- $('replace_word').select();
- $('replace_word').focus();
- }
- );
- $('replace_word').observe('blur', submit_replacement);
- $('replace_word').observe('keydown', submit_replacement);
- $$('.word_row').each( function(el) { el.observe('click', toggle_textbox_byevent ); });
- $$('input.word_edit').each( function(el) { el.observe('blur', submit_word_edit ); el.observe('keydown', submit_word_edit); });
- $$('.delete_word').each( function(el) { el.observe('click', delete_word); } );
- $('sort_trigger').observe('click', sort_words.curry(null));
- $('search_word').observe('keyup', filter_words);
- //new Form.Element.Observer($('search_word'), 2, filter_words);
- $('add_button').observe('click', submit_new_word );
- init_words();
- $$('.larr').first().observe('click', function() {
- if ($F('select_page_widget') > 1) {
- $('select_page_widget').selectedIndex--;
- init_words();
- }
- });
- $$('.rarr').first().observe('click', function() {
- if ($F('select_page_widget') < parseInt($('pages_total').innerHTML, 10) ) {
- $('select_page_widget').selectedIndex++;
- init_words();
- }
- });
- }
- function filter_words(e) {
- //alert('here');
- var el = Event.element(e);
- var str = $F(el).escapeHTML();
- if (wordcount > per_page || str.blank() )
- init_words();
- else {
- $$('.word_row').each( function(el) { el.style.display = 'none'; } );
- var filtered = $$('.word_row').findAll( function(el) { return (el.select('.display_word').first().innerHTML.startsWith(str)); } );
- filtered.each( function(el) { el.style.display = 'block'; } );
- }
- }
- function toggle_textbox_byevent (e) {
- var el = Event.element(e);
- toggle_textbox(el);
- }
- function toggle_textbox (el) {
- //alert (el);
- normalize_list();
- //alert ('after' + el);
- var id = el.id.substr(2);
- var in_id = 'in' + id;
- if ($(in_id)) {
- $('sp' + id).style.display = 'none';
- $(in_id).style.display = 'inline';
- $('dl' + id).style.display = 'inline';
- $(in_id).select();
- $(in_id).focus();
- }
- }
- function build_page_selector(pages, selected) {
- if ($('select_page_widget')) {
- $('select_page_widget').stopObserving('click');
- }
- $('page_selector').innerHTML = '';
- var html = '<select id="select_page_widget" name="page">';
- for (var i = 1; i <= pages; i++) {
- if (i != selected) {
- html += '<option value = "' + i + '">' + i + '</option>';
- }
- else {
- html += '<option value = "' + i + '" selected="yes">' + i + '</option>';
- }
- }
- html += '</select>';
- $('page_selector').innerHTML = html;
- $('select_page_widget').observe('change', init_words);
- }
- function clear_words() {
- $$('.word_row').each( function(el) { el.stopObserving('click', toggle_textbox_byevent ); });
- $$('input.word_edit').each( function(el) { el.stopObserving('blur', submit_word_edit ); el.stopObserving('keydown', submit_word_edit); });
- $$('.delete_word').each( function(el) { el.stopObserving('click', delete_word); } );
- $('rowlist').innerHTML = '';
- }
- function init_words() {
- var lang = query.lang || 1;
- var search = $F('search_word');
- var words_per_page = per_page;
- var page = $('select_page_widget') ? $F('select_page_widget') : 1;
- clear_words();
- var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
- new Ajax.Request(url, {
- parameters: {action: 'fetch', lang: lang, search: search, sortby: sort, items_per_page: words_per_page, page: page},
- asynchronous: false,
- onSuccess: function(resp) {
- var data = resp.responseText.evalJSON();
- wordcount = data['count'];
- if (data['count'] < 1) return;
- for (var id in data['words']) {
- display_new_word(id, data['words'][id], true, true);
- }
- var page_count = Math.ceil(parseFloat(data['count']) / parseFloat(words_per_page));
- $('pages_total').innerHTML = page_count;
- build_page_selector(page_count, page);
- sort_words(true);
- },
- onFailure: function () {
- alert(url + ' is not responding');
- }
- });
- }
- function submit_new_word(e) {
- var el = Event.element(e);
- if ( (Event.KEY_RETURN == (e.keyCode || e.which)
- || (e.type == 'click' && el.id == 'add_button'))
- && $F(el) != word_help_text
- ) {
- var el = $('new_word');
- el.value = $F(el).toLowerCase().escapeHTML();
- var blank = el.value.blank();
- var exists = word_exists(el.value);
- if ( !blank && !exists ) {
- langs = $('languages');
- var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
- new Ajax.Request(url, {
- parameters: {action: 'new', word: $F(el), lang: $F(langs)},
- asynchronous: false,
- onSuccess: add_new_word,
- onFailure: function () {
- alert(url + ' is not responding');
- }
- });
- }
- else {
- el.select();
- el.focus();
- if (exists) {
- new Effect.Appear('already_exists_message', {duration: 0.1})
- new Effect.Fade('already_exists_message', {duration: 0.2, queue: 'end', delay: 1});
- }
- if (blank) {
- new Effect.Appear('input_blank_message', {duration: 0.1})
- new Effect.Fade('input_blank_message', {duration: 0.2, queue: 'end', delay: 1});
- }
- }
- }
- }
- function add_new_word(resp) {
- var newid = parseInt(resp.responseText, 10);
- var newword = $('new_word').value;
- display_new_word(newid, newword);
- }
- function display_new_word(newid, newword, no_effect, no_focus) {
- 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+'"> <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>';
- if ( !($$('.word_row').first()) ) {
- $('rowlist').innerHTML = new_row;
- }
- else {
- $$('.word_row').first().insert({before: new_row});
- }
- $('row'+newid).observe('click', toggle_textbox_byevent );
- $('in'+newid).observe('blur', submit_word_edit ).observe('keydown', submit_word_edit);
- $('dl'+newid).observe('click', delete_word);
- current_new_word = '';
- if (!no_focus) {
- $('new_word').value = '';
- $('new_word').focus();
- }
- if (!no_effect)
- new Effect.Highlight('row' + newid);
- }
- function normalize_list() {
- $$('.word_edit').each( function(el) {el.style.display = 'none';} );
- $$('.delete_word').each( function(el) {el.style.display = 'none';} );
- $$('.display_word').each( function(el) {el.style.display = 'inline';} );
- }
- function find_next_word(el) {
- var next_row = $$('.word_row')[$$('input.word_edit').indexOf(el) + 1];
- while (!next_row || next_row.style.display == 'none') {
- if (!next_row) next_row = $$('.word_row').first();
- else next_row = $$('.word_row')[ $$('.word_row').indexOf(next_row) + 1 ];
- }
- return next_row.select('input.word_edit').first();
- }
- function find_prev_word(el) {
- var prev_row = $$('.word_row')[$$('input.word_edit').indexOf(el) - 1];
- while (!prev_row || prev_row.style.display == 'none') {
- if (!prev_row) prev_row = $$('.word_row').last();
- else prev_row = $$('.word_row')[ $$('.word_row').indexOf(prev_row) - 1 ];
- }
- return prev_row.select('input.word_edit').first();
- }
- function iterate(e) {
- var el = Event.element(e);
- if (Event.KEY_TAB == (e.keyCode || e.which)
- || (Event.KEY_DOWN == (e.keyCode || e.which))
- ) {
- e.stop();
- toggle_textbox( find_next_word(el) );
- }
- if (Event.KEY_UP == (e.keyCode || e.which)) {
- e.stop();
- toggle_textbox( find_prev_word(el) );
- }
- }
- function submit_word_edit(e) {
- if ( /*e.type == 'blur'
- || */(Event.KEY_RETURN == (e.keyCode || e.which))
- || (Event.KEY_TAB == (e.keyCode || e.which))
- || (Event.KEY_UP == (e.keyCode || e.which))
- || (Event.KEY_DOWN == (e.keyCode || e.which))
- || (Event.KEY_ESC == (e.keyCode || e.which))
- ) {
- //alert (e.type);
- var el = Event.element(e);
- el.value = $F(el).toLowerCase();
- var id = el.id.substr(2);
- var sp_id = 'sp' + id;
- if (Event.KEY_ESC == (e.keyCode || e.which)) {
- normalize_list();
- return;
- }
- var edited_word = $F(el).escapeHTML();
- if (word_exists(edited_word, id) ) {
- $('ms'+id).innerHTML = 'This word already exists.';
- $('in' + id).select();
- $('in' + id).focus();
- new Effect.Appear('ms' + id, {duration: 0.1});
- new Effect.Fade('ms' + id, {duration: 0.2, queue: 'end', delay: 1});
- }
- else if (edited_word.blank()) {
- $('ms'+id).innerHTML = 'Word shouldn\'t be blank.';
- $('in' + id).select();
- $('in' + id).focus();
- new Effect.Appear('ms' + id, {duration: 0.1})
- new Effect.Fade('ms' + id, {duration: 0.2, queue: 'end', delay: 1});
- }
- else if ($(sp_id)) {
- $(sp_id).innerHTML = edited_word;
- el.style.display = 'none';
- $(sp_id).style.display = 'inline';
- $('dl'+id).style.display = 'none';
- var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
- new Ajax.Request(url, {
- parameters: {action: 'edit', word: edited_word, id: id},
- asynchronous: true,
- onSuccess: function() {
- },
- onFailure: function () {
- alert(url + ' is not responding');
- }
- });
- iterate(e);
- }
- }
- }
- function word_exists(word, exclude_id) {
- var exists = 0;
- var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
- new Ajax.Request(url, {
- parameters: {action: 'exist', word: word, exclude: exclude_id, lang: $F('languages') },
- asynchronous: false,
- onSuccess: function(resp) {
- var yes = parseInt(resp.responseText);
- if (yes == 1) exists = 1;
- },
- onFailure: function () {
- alert(url + ' is not responding');
- }
- });
- return (exists == 1);
- /*var elem;
- if (exclude_id != null)
- elem = $$('input.word_edit').find( function(el) { return ( ($F(el) == word.unescapeHTML() ) && (el.id != ('in' + exclude_id)) ) } );
- else
- elem = $$('input.word_edit').find( function(el) { return $F(el) == word.unescapeHTML() } );
- return (elem?true:false);*/
- }
- function sort_words(no_change) {
- if (no_change == null) {
- if (sort == 'asc')
- sort = 'desc';
- else
- sort = 'asc';
- init_words();
- }
- var rows = $$('.word_row').sortBy( function(el) { return el.select('span.display_word').first().innerHTML; } );
- var list = $('rowlist');
- //list.innerHTML = '';
- if (sort == 'asc')
- rows.each ( function(el) { list.insert(el) } );
- else
- rows.each ( function(el) { list.insert( {'top': el} )} );
- rows = null;
- }
- function submit_replacement (e) {
- if (e.type == 'blur' || (Event.KEY_RETURN == (e.keyCode || e.which)) ) {
- var el = Event.element(e);
- var st_el = $('replace_word_static_container');
- $('replace_word_static').innerHTML = $F(el).escapeHTML();
- el.style.display = "none";
- st_el.style.display = "inline";
- var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
- new Ajax.Request(url, {
- parameters: {action: 'replace', word: $F(el).escapeHTML(), lang: $F('languages')},
- asynchronous: true,
- onSuccess: function() {
- },
- onFailure: function () {
- alert(url + ' is not responding');
- }
- });
- }
- }
- function delete_word(e) {
- var el = Event.element(e);
- var id = el.ancestors().first().id.substr(2);
- var url = 'partners_edit.php?mode=ttsfilter&partnerid=' + query.partnerid + '&rand=' + Math.floor(Math.random() * 1000000000);
- new Ajax.Request(url, {
- parameters: { action: 'delete', id: id },
- asynchronous: true,
- onSuccess: function() {
- },
- onFailure: function () {
- alert(url + ' is not responding');
- }
- });
- el.ancestors()[1].remove();
- }
Add Comment
Please, Sign In to add comment