var SRL = {}; SRL.ajax = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); SRL.id = 0; SRL.relatedLeft = new Array(); SRL.relatedRight = new Array(); SRL.baseUrl = '../wp-content/plugins/simple-related-links/simple-related-links-backend.php'; SRL.pageIndex = 1; SRL.loadArchive = function (category, page, base) { try { WPOL.q('srl_archive_loading').style.display = 'block'; var url = base + '/wp-content/plugins/simple-related-links/simple-related-links-backend.php?action=get_archive&category=' + category + "&page=" + page; WPOL.send('GET', url, null, function() { if(WPOL.ajax.readyState == 4) { var result = JSON.parse(WPOL.ajax.responseText); var category = WPOL.q('srl_archive'); category.innerHTML = ''; var items = ''; var total = 0; for (var item in result) { if (result[item].url != undefined) { items += "
  • " + result[item].title + "
  • "; } else { total = parseInt(result[item]); } } category.innerHTML = items; // prepare navigation panel if (total > 1) { SRL.pageIndex = page; WPOL.q('srl_archive_navigation').style.display = 'block'; var pages = total / 10; if (Math.floor(pages) >= page) { WPOL.q('srl_archive_newer').style.display = (page > 1) ? 'block' : 'none'; WPOL.q('srl_archive_older').style.display = (page < Math.floor(pages)) ? 'block' : 'none'; } } WPOL.q('srl_archive_loading').style.display = 'none'; } }); } catch (e) { WPOL.debug(e); var loading = WPOL.q('srl_archive_loading'); if (loading) { loading.style.display = 'none'; } } }; SRL.load = function (type) { try { WPOL.loading(true); var action = (type == 1) ? 'get_categories' : 'get_posts'; var url = SRL.baseUrl + '?action=' + action; WPOL.send('GET', url, null, function() { if(WPOL.ajax.readyState == 4) { var result = JSON.parse(WPOL.ajax.responseText); var category = WPOL.q('srl_id'); category.innerHTML = ''; for (var item in result) { category.options[category.options.length] = new Option(result[item], item) } WPOL.loading(false); } }); } catch (e) { WPOL.debug(e); WPOL.loading(false); } }; SRL.setId = function(type) { var category = WPOL.q('srl_id'); if (category) { if (category.options[category.selectedIndex]) { var categoryId = category.options[category.selectedIndex].value; if (categoryId > 0) { SRL.id = categoryId; // clean data SRL.relatedLeft = new Array(); SRL.relatedRight = new Array(); SRL.render(2); SRL.render(1); // get data from server try { WPOL.loading(true); var action = (type == 1) ? 'get_category' : 'get_post'; var url = SRL.baseUrl + '?action=' + action + '&id=' + SRL.id; WPOL.send('GET', url, null, function() { if(WPOL.ajax.readyState == 4) { if (WPOL.ajax.responseText != '') { var parts = WPOL.ajax.responseText.split('^'); for (var x = 0; x < 2; x++) { var fixed = WPOL.replaceAll(parts[x], '\\', ''); var result = JSON.parse(fixed); if (result != null) { if (x == 0) { SRL.relatedLeft = result; SRL.render(1); } else { SRL.relatedRight = result; SRL.render(2); } } } } WPOL.loading(false); } }); } catch (e) { WPOL.debug(e); WPOL.loading(false); } } } } }; SRL.search = function() { try { var query = WPOL.q('srl_q'); var typeElement = WPOL.q('srl_where'); WPOL.loading(true); var type = typeElement.options[typeElement.selectedIndex].value; var url = SRL.baseUrl + '?action=search&type=' + type + '&q=' + query.value; WPOL.send('GET', url, null, function() { if(WPOL.ajax.readyState == 4) { var output = '

    Nebyl nalezen žádný obsah.

    '; if (WPOL.ajax.responseText != '[]') { output = SRL.renderSearchResult(JSON.parse(WPOL.ajax.responseText)); } WPOL.q('srl_search_results').innerHTML = output; WPOL.loading(false); } }); } catch (e) { WPOL.debug(e); WPOL.loading(false); } }; SRL.render = function (side) { if (side == 1) { WPOL.q('srl_panel_body_left').innerHTML = SRL.renderList(1, SRL.relatedLeft);; } else if (side == 2) { WPOL.q('srl_panel_body_right').innerHTML = SRL.renderList(2, SRL.relatedRight); } }; SRL.add = function (side, postID, title) { var category = WPOL.q('srl_id'); if (SRL.id > 0 || category.selectedIndex > 0) { var val = null; if (title == 'break') { var count = (side == 1) ? SRL.relatedLeft.length : SRL.relatedRight.length; val = (count + 1) + '|' + title; } else { val = postID + '|' + title; } if (side == 1) { if (!WPOL.searchArray(val, SRL.relatedLeft)) { SRL.relatedLeft.push(val); SRL.render(side); } else { alert('Tento odkaz je již přidán!'); } } else if (side == 2) { if (!WPOL.searchArray(val, SRL.relatedRight)) { SRL.relatedRight.push(val); SRL.render(side); } else { alert('Tento odkaz je již přidán!'); } } } else { alert('Zvolte rubriku, se kterou chcete pracovat.'); category.focus(); } }; SRL.removeLink = function (side, postID, title) { if (confirm('Opravdu si přejete odstranit tento odkaz?')) { var val = postID + '|' + title; if (side == 1) { if (WPOL.searchArray(val, SRL.relatedLeft)) { SRL.relatedLeft = WPOL.removeFromArray(val, SRL.relatedLeft); SRL.render(side); } } else if (side == 2) { if (WPOL.searchArray(val, SRL.relatedRight)) { SRL.relatedRight = WPOL.removeFromArray(val, SRL.relatedRight); SRL.render(side); } } } return false; }; SRL.removeBreak = function (side, index) { if (confirm('Opravdu si přejete odstranit tuto mezeru?')) { var val = index + '|break'; if (side == 1) { if (WPOL.searchArray(val, SRL.relatedLeft)) { SRL.relatedLeft = WPOL.removeFromArray(val, SRL.relatedLeft); SRL.render(side); } } else if (side == 2) { if (WPOL.searchArray(val, SRL.relatedRight)) { SRL.relatedRight = WPOL.removeFromArray(val, SRL.relatedRight); SRL.render(side); } } } return false; }; SRL.validateSave = function() { var category = WPOL.q('srl_id'); var retVal = true; if (category.selectedIndex <= 0 || SRL.id == 0) { alert('Zvolte rubriku, ve které se má obsah zobrazovat.'); category.focus(); retVal = false; } else { SRL.id = category.options[category.selectedIndex].value; } return retVal; }; SRL.save = function(type) { try { if (SRL.validateSave()) { WPOL.loading(true); // serialize to JSON var data = JSON.stringify(SRL.relatedLeft) + '^' + JSON.stringify(SRL.relatedRight); var action = (type == 1) ? 'add_category' : 'add_post'; var url = SRL.baseUrl + '?action=' + action + '&id=' + SRL.id; WPOL.send('POST', url, 'data=' + data, function() { if(WPOL.ajax.readyState == 4) { var result = WPOL.ajax.responseText; if (result == 'updated') { SRL.load(type); alert('Související/témata byla úspěšně uložena.'); } WPOL.loading(false); } }); } } catch (e) { WPOL.debug(e); WPOL.loading(false); } }; SRL.catchEnter = function (e) { if (!e) var e = window.event if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; if(code == 13) { SRL.search(); e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return false; } else { return true; } }; // helpers SRL.renderList = function (type, data) { var list = '
      '; var color = (type == 1) ? '#000' : '#fff'; for (var z = 0; z < data.length;z++) { var parts = data[z].split('|'); if (parts[1] == 'break') { list += '
    1. (mezera)
    2. '; } else { list += '
    3. ' + parts[1] + '
    4. '; } } return list + '
    '; }; SRL.renderSearchResult = function (data) { var list = '
      '; for (var id in data) { var item = data[id]; list += '
    1. '; list += ''; list += ''; list += ' ' + item.title + ''; list += '
    2. '; } return list + '
    '; };