// MailtoComposeInZimbra // version 0.1 // 2005-03-28 // Copyright (c) 2005, Julien Couvreur // Released under the GPL license // http://www.gnu.org/copyleft/gpl.html // -------------------------------------------------------------------- // // This is a Greasemonkey user script. // // To install, you need Greasemonkey: http://greasemonkey.mozdev.org/ // Then restart Firefox and revisit this script. // Under Tools, there will be a new menu item to "Install User Script". // Accept the default configuration and install. // // To uninstall, go to Tools/Manage User Scripts, // select "Mailto Compose In GMail", and click Uninstall. // // Aaron Boodman also has a similar script, at: // http://youngpup.net/userscripts/gmailto.user.js // In his approach, the links are re-written at the time that you click // on them. One benefit is that the link still looks like mailto:x // when you hover over it. // -------------------------------------------------------------------- // // WHAT IT DOES: // After the page is loaded, look for "mailto:" links and hooks their onclick // event to go to Zimbra's compose page, passing all the usual parameters // (to, cc, subject, body,...). // -------------------------------------------------------------------- // // ==UserScript== // @name Mailto Compose In Zimbra // @namespace http://blog.monstuff.com/archives/000238.html // @description Rewrites "mailto:" links to Zimbra compose links // @include * // @exclude http://zimbra.bring.out.ba/zimbra/h/search?action=compose // ==/UserScript== (function() { var processMailtoLinks = function() { var xpath = "//a[starts-with(@href,'mailto:')]"; var res = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); var linkIndex, mailtoLink; for (linkIndex = 0; linkIndex < res.snapshotLength; linkIndex++) { mailtoLink = res.snapshotItem(linkIndex); //alert(mailtoLink.href); var m = mailtoLink.href; var matches = m.match(/^mailto:([^\?]+)(\?([^?]*))?/); var emailTo, params, emailCC, emailSubject, emailBody; emailTo = matches[1]; //alert("Found to=" + emailTo); params = matches[3]; if (params) { var splitQS = params.split('&'); var paramIndex, param; for (paramIndex = 0; paramIndex < splitQS.length; paramIndex++) { param = splitQS[paramIndex]; nameValue = param.match(/([^=]+)=(.*)/); if (nameValue && nameValue.length == 3) { // depending on name, store value in a pre-defined location switch(nameValue[1]) { case "to": emailTo = emailTo + "%2C%20" + nameValue[2]; break; case "cc": emailCC = nameValue[2]; //alert("Found CC=" + emailCC); break; case "subject": emailSubject = nameValue[2]; //alert("Found subject=" + emailSubject); break; case "body": emailBody = nameValue[2]; //alert("Found body=" + emailBody); break; } } } } mailtoLink.href = "http://zimbra.bring.out.ba/zimbra/h/search?action=compose" + (emailTo ? ("&to=" + emailTo) : "") + (emailCC ? ("&cc=" + emailCC) : "") + (emailSubject ? ("&subject=" + emailSubject) : "") + (emailBody ? ("&body=" + emailBody) : ""); // mailtoLink.onclick = function() { location.href = newUrl; return false; }; } } window.addEventListener("load", processMailtoLinks, false); })();