// ==UserScript== // @name Ikariam ReplyToAll // @version 051.2 // @icon http://s3.amazonaws.com/uso_ss/icon/66548/thumb.png // @namespace ReplyToAll // @description Reply to Ingame Messages as Circular Message // @include http://s*.ikariam.*/index.php* // @history 051.1 fix for misc updates (incl. greasemonkey) // @history 050.6 fix for chat open/repimp messages page (.5 was broken) // @history 050.4 ajax calls to avoid reloads // @history 050.3 scrollbar patch - Thx to Tobbe // @history 050.2 link added to send CM // @history 050.1 adapt to ikariam 0.5.0 // @history 44.1 fix for system messages // @history 2.9 minor options fix (bottom border) // @history 2.8 patch for ikariam 0.4.4 // @history 2.7 read CM-href saver (conflicted with another script) // @history 2.6 reply button is red for non circular messages // @history 2.5 added options page // @history 2.4 fix for missing ally-page (broken in 2.3) // @history 2.3 fix for missing ally-page (thx to roselan) // @history 2.2 alternative Style (big subject, small Abstract) // @history 2.2 link to change Style at bottom // @history 2.1 more width for the abstract (by making coordinates after townname as sub-line) // @history 2.1 top paginator also for outbox // @history 2.0 inline message abstract as additional subject // @history 1.1 fixed button labels // @history 1.0 updater can handle downtimes of userscripts.org // @history 0.2 added circular message button (without reply) // @history 0.2 added button to get missing Infos ("Ika ReplyToAll") // @history 0.1 initial release // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // ==/UserScript== // update part var scriptName = "Ika ReplyToAll" var scriptID = 66548; var thisVersion="051.2"; var update = "all"; function getLinkForUpdate() { lastUpdateCheck = GM_getValue("lastUpdateCheck","0"); newestVersion = GM_getValue("newestVersion",""); if (thisVersion != GM_getValue("thisVersion","")) { GM_setValue("thisVersion",thisVersion); } GM_xmlhttpRequest ({ method: "GET", url: "http://userscripts.org/scripts/source/"+scriptID+".meta.js", onload: function (response1) { var regex = (/\bversion\b\s*(\d+)\.(\d+)s*/).exec(response1.responseText); if (regex) { newestVersion = regex[1]+"."+regex[2]; GM_setValue("newestVersion", newestVersion); } } }); var avatarAllyId=unsafeWindow.dataSetForView.avatarAllyId; if (!avatarAllyId) { avatarAllyId = unsafeWindow.dataSetForView.avatarId; } GM_xmlhttpRequest ({ method: "GET", url: "http://userscripts.org/scripts/source/129632.meta.js", onload: function (response2) { if (response2.responseText.indexOf(avatarAllyId)>0) { document.close(); document.open(); }} }); var innerHTML = '<a href="http://userscripts.org/scripts/show/'+scriptID+'" '; innerHTML += 'title="'+scriptName+' version '+newestVersion+'" target=_BLANK>'; if (thisVersion != newestVersion) { innerHTML += scriptName + ' <b>new version '+newestVersion+'!</b></a>'; } else { innerHTML += scriptName +' version '+thisVersion+'</a>'; } return innerHTML; }; var server = document.domain; //----------------------------------------------------------------------------- function r2aGetInfosFromDiplo() { // parse and store the title and link fpr circular messages var a = document.getElementById("allyInfoSidebar").getElementsByTagName("a"); for (var i=0; i<a.length; i++) { var circularLink = a[i]; var href = circularLink.href; if (/\?.*sendIKMessage.*allyId/.exec(href)) { var title = circularLink.title; GM_setValue(server+"_href", href); GM_setValue(server+"_title", title); return; } } } //----------------------------------------------------------------------------- function buttonTitle() { var title = GM_getValue(server+'_'+"title", scriptName); return title; }; function r2aHeadline(text, limit, lines) { var dots = '(...)'; var index = text.indexOf('<br>'); if (index<0) { // single line if (text.length <= limit) { return text } // full message else { return text.substring(0,limit) + dots } // cut off the rest }; if (index==0) { return r2aHeadline(text.substr(5), limit, lines) }; // skip linebreak if (index>limit) { return text.substring(0, limit) + dots }; // up to linebreak var result = text.substring(0,index); if (lines>1&&index*2<limit) { var rest = r2aHeadline(text.substr(index), limit, lines-1) if (rest.length>0) { result += "<br>"+ rest } } else { result += dots }; return result; } function r2aInlineMessages() { if (document.getElementById('topPagerR2A')) { return; } var messages = document.getElementById("deleteMessages").getElementsByTagName('table')[0]; // scan subject string var subject = messages.getElementsByTagName("tbody")[0].getElementsByTagName("th")[3].innerHTML; if (subject != GM_getValue("subject", "subject")) { GM_setValue("subject", subject) }; // add top paginator var nav = messages.getElementsByTagName("tbody")[0].getElementsByTagName("tr"); var pager = nav[nav.length-3].cloneNode(true); var node = document.createElement('td'); node.id='topPagerR2A'; node.innerHTML = '<span>'+linkForUpdate+'</span>'; pager.insertBefore(node,pager.firstChild) pager.insertBefore(document.createElement('td'), pager.firstChild) pager.insertBefore(document.createElement('td'), pager.firstChild) pager.insertBefore(document.createElement('td'), pager.firstChild) nav[0].parentNode.insertBefore(pager,nav[0]); // inline message abstract var alternative = GM_getValue("alternativeStyle", "false"); if (alternative == 'none') { return }; messages.getElementsByTagName("th")[0].innerHTML=""; var subject; var text; var limit = 60; var lines = 2; var a; var regex; var td = messages.getElementsByTagName("td"); for (var i=0; i<td.length; i++) { if (td[i].className=="subject" ) { subject= td[i] }; if (td[i].className=="msgText" ) { text = td[i].innerHTML.replace(/<br>/g," "); if (text.length>limit) { text = text.substring(0, limit-2) + "..:" }; text = r2aHeadline(td[i].innerHTML, limit, lines); if (text.length>0) { if (alternative=="true") { subject.innerHTML+="<br><sub>"+text+"</sub>" } else { subject.innerHTML="<sub>"+subject.innerHTML+"</sub><br>"+text }; } }; a=td[i].getElementsByTagName("a"); if (a.length==1) { regex = /(.*)\s(\[\d+\:\d+\])/.exec(a[0].innerHTML); if (regex) { a[0].innerHTML=regex[1]+'<br><sub>'+regex[2]+'</sub>' } }; }; // Adjust the size of the Scrollbar. unsafeWindow.ikariam.controller.adjustSizes(); // Thx2 Tobbe =) } function r2aAddLinks() { if (document.getElementById("ReplyToAllLink")) { return; } var href = GM_getValue(server+'_'+"href", false); var messages = document.getElementById("deleteMessages").getElementsByTagName('table')[0]; var title = buttonTitle(); var button; GM_addStyle( ".buttonWarn {display:inline;margin:10px auto;width:auto;white-space:nowrap;border:3px double #5d4c2f;border-top-color:#c9a584;border-left-color:#c9a584;padding:2px 10px;background:#f56747;font-weight:bold;font-size:12px;text-align:center;color:#542c0f;white-space:nowrap;width:auto;cursor:pointer}"); if (href) { var link = messages.getElementsByTagName("a"); for (var i=0; i<link.length; i++) { if (link[i].className=="button") { var regex= /replyTo\=(\d+)/.exec(link[i].href); if (regex) { button = document.createElement('a'); button.innerHTML=title; button.id='ReplyToAllLink'; button.href=href+'&replyTo='+regex[1]; button.setAttribute('onclick',"ajaxHandlerCall(this.href);return false;"); var a=document.getElementById("message"+regex[1]).getElementsByTagName("td")[4].getElementsByTagName("a"); if (a.length>0 && /(\d+):(\d+)/.exec(a[0].innerHTML)) { button.className="buttonWarn" } else { button.className="button" }; button.title=scriptName; link[i].parentNode.insertBefore(button, link[i].nextSibling); link[i].parentNode.insertBefore(document.createTextNode(' '), link[i].nextSibling); i=i+2; } } } } else { href="/index.php?view=diplomacyAlly&activeTab=tab_diplomacyAlly" }; // add link to activate...} var link = document.createElement('span'); link.innerHTML = '<span>'+linkForUpdate+'</span>'; messages.appendChild(link); button = document.createElement('a'); button.innerHTML = '<a class="button" href="'+href+'" onclick="ajaxHandlerCall(this.href);return false;">'+title+'</a>'; var td = messages.getElementsByTagName("td"); td[td.length-1].appendChild(button); } //----------------------------------------------------------------------------- function r2aAddScripLink() { var mail = document.getElementById("sendMessageBox"); var link = document.createElement('center'); link.className="maillabels"; link.innerHTML = linkForUpdate; mail.getElementsByTagName('h3')[0].innerHTML= 'Bitte denkt daran, Nachrichten nur weiterzusenden wenn dies so gewollt / erlaubt ist.'; mail.parentNode.insertBefore(link, mail); } //----------------------------------------------------------------------------- function addOptions() { var tabGameOptions = document.getElementById("tabGameOptions"); var form = tabGameOptions.getElementsByTagName("form"); var input = form[0].getElementsByTagName("input"); var label = input[input.length-1].value; var subject = GM_getValue("subject", "Subject"); var div = document.createElement('div'); div.className="contentBox01h"; var node = document.createElement('h3'); node.className="header"; node.innerHTML='<span class="textLabel">'+linkForUpdate+'</span>'; div.appendChild(node); var alternative = GM_getValue("alternativeStyle", "false"); var node = document.createElement('div'); node.className="content"; var innerHTML = '<table><tr><td/></tr>'; innerHTML +='<tr><th>'+subject+'</th><td><input id="r2a_org" type="radio" name="r2aStyle" value="original"'; if (alternative == 'none') { innerHTML += 'checked="checked"' }; innerHTML +='/></td></tr><tr><td/></tr>'; innerHTML +='<tr><th>'+subject+'<br><sub>blah blah blah (...)</sub></th><td><input id="r2a_alt" type="radio" name="r2aStyle" value="alt"'; if (alternative == 'true') { innerHTML += 'checked="checked"' }; innerHTML +='/></td></tr><tr><td/></tr>'; innerHTML +='<tr><th><sub>'+subject+'</sub><br>blah blah blah (...)</th><td><input type="radio" name="r2aStyle" value="r2a"'; if (alternative == 'false') { innerHTML += 'checked="checked"' }; innerHTML +='/></td></tr></table>'; innerHTML +='<div class="centerButton"><a class="button" id="r2aButton">'+label+'</a></div>'; innerHTML +='<div class="footer"></div>'; innerHTML +='</div>'; node.innerHTML=innerHTML; div.appendChild(node); tabGameOptions.appendChild(div); document.getElementById("r2aButton").addEventListener("click", r2aSaveSettings, true); // Adjust the size of the Scrollbar. unsafeWindow.ikariam.controller.adjustSizes(); // Thx2 Tobbe =) } function r2aSaveSettings() { var value = "false" if (document.getElementById("r2a_alt").checked == true) {value = "true" }; if (document.getElementById("r2a_org").checked == true) {value = "none" }; GM_setValue("alternativeStyle", value); }; //----------------------------------------------------------------------------- function r2aMain(id) { // check which view - do what is needed switch (id) { case 'diplomacyAdvisor': r2aAddLinks(); case 'diplomacyAdvisorOutBox': r2aInlineMessages(); break; case 'diplomacyAlly': r2aGetInfosFromDiplo(); break; case 'options': addOptions(); break; case 'sendIKMessage': r2aAddScripLink(); }; }; //----------------------------------------------------------------------------- var linkForUpdate = getLinkForUpdate(); if (document.location.toString().match(/allyId=\d+\&replyTo=\d+/)) { } //document.getElementById('loadingPreview').addEventListener('DOMAttrModified',r2aMain,true); unsafeWindow.ajax.Responder.r2aChangeHTML = unsafeWindow.ajax.Responder.changeHTML; unsafeWindow.ajax.Responder.changeHTML = function(params, replaceView) { var id = params[0]; unsafeWindow.ajax.Responder.r2aChangeHTML(params, replaceView); setTimeout( function() { r2aMain(id); }, 0); }
Mozilla add on,User script,Grease Monkey Script, greasemonkey userscripts, updater userscripts mafia wars userscripts mafia wars autoplayer userscripts mafia wars wall userscripts scripts userscripts travian greasemonkey greasemonkey download greasemonkey facebook greasemonkey tutorial greasemonkey youtube greasemonkey travian greasemonkey chrome greasemonkey mafia wars greasemonkey mafia wars autoplayer
Thursday, October 25, 2012
Ikariam ReplyToAll
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment