On 8 September 2016 at 07:03, <[email protected]> wrote: > Repository: incubator-ponymail > Updated Branches: > refs/heads/coffee-and-cake d15294548 -> ae791c1a6 > > > add URL shortening > > this is a bit longer than the old format, and only shortens > if the generator is medium or full, to avoid duplicates. > > > Project: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/repo > Commit: > http://git-wip-us.apache.org/repos/asf/incubator-ponymail/commit/ae791c1a > Tree: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/tree/ae791c1a > Diff: http://git-wip-us.apache.org/repos/asf/incubator-ponymail/diff/ae791c1a > > Branch: refs/heads/coffee-and-cake > Commit: ae791c1a619fc965cca72f1f62edb87b07a088b9 > Parents: d152945 > Author: Daniel Gruno <[email protected]> > Authored: Thu Sep 8 08:02:50 2016 +0200 > Committer: Daniel Gruno <[email protected]> > Committed: Thu Sep 8 08:02:50 2016 +0200 > > ---------------------------------------------------------------------- > site/api/thread.lua | 6 +++++ > site/js/coffee/email_display_basic.coffee | 3 ++- > site/js/coffee/listview_basic.coffee | 3 ++- > site/js/coffee/listview_single_email.coffee | 4 ++- > site/js/coffee/misc.coffee | 31 ++++++++++++++++++++++++ > site/js/coffee/scaffolding.coffee | 2 +- > 6 files changed, 45 insertions(+), 4 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/ae791c1a/site/api/thread.lua > ---------------------------------------------------------------------- > diff --git a/site/api/thread.lua b/site/api/thread.lua > index aaaa9da..46e93c1 100644 > --- a/site/api/thread.lua > +++ b/site/api/thread.lua > @@ -126,6 +126,12 @@ function handle(r) > if #docs == 1 then > doc = docs[1] > end > + -- New shortening for medium/full generators > + if #docs == 0 and #eid == 24 then > + docs = elastic.find("mid:" .. r:escape(eid) .. "*", 1, "mbox") > + > + end > + -- old shortening format, bleh > if #docs == 0 and #eid == 18 then > docs = elastic.find("mid:" .. r:escape(eid) .. "*", 1, "mbox") > end > > http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/ae791c1a/site/js/coffee/email_display_basic.coffee > ---------------------------------------------------------------------- > diff --git a/site/js/coffee/email_display_basic.coffee > b/site/js/coffee/email_display_basic.coffee > index 708c373..73a60f6 100644 > --- a/site/js/coffee/email_display_basic.coffee > +++ b/site/js/coffee/email_display_basic.coffee > @@ -149,7 +149,8 @@ class BasicEmailDisplay > ### Action buttons ### > > ### Permalink ### > - pbutton = new HTML('a', { class: "label_yellow", href: > "thread.html/#{json.mid}"}, "Permalink") > + shortID = shortenURL(json.mid) > + pbutton = new HTML('a', { class: "label_yellow", href: > "thread.html/#{shortID}"}, "Permalink") > > ### Source ### > sbutton = new HTML('a', { class: "label_red", href: > "api/source.lua/#{json.mid}"}, "View source") > > http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/ae791c1a/site/js/coffee/listview_basic.coffee > ---------------------------------------------------------------------- > diff --git a/site/js/coffee/listview_basic.coffee > b/site/js/coffee/listview_basic.coffee > index f9bfe47..bd97dbf 100644 > --- a/site/js/coffee/listview_basic.coffee > +++ b/site/js/coffee/listview_basic.coffee > @@ -234,8 +234,9 @@ class BasicListView > > > ### Subject, PLUS a bit of the body with a break before ### > + sid = shortenURL(thread.tid) > subject = new HTML('div', {}, [ > - new HTML('a', { style: {fontWeight: readStyle}, href: > "thread.html/#{thread.tid}", onclick: > "readEmail(this.parentNode.parentNode.parentNode); this.style.fontWeight = > 'normal'; return false;"}, original.subject), > + new HTML('a', { style: {fontWeight: readStyle}, href: > "thread.html/#sid}", onclick: > "readEmail(this.parentNode.parentNode.parentNode); this.style.fontWeight = > 'normal'; return false;"}, original.subject), > new HTML('br'), > new HTML('span', {class: "listview_item_body"}, thread.body) > ]) > > http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/ae791c1a/site/js/coffee/listview_single_email.coffee > ---------------------------------------------------------------------- > diff --git a/site/js/coffee/listview_single_email.coffee > b/site/js/coffee/listview_single_email.coffee > index 5aa3e07..b3baff8 100644 > --- a/site/js/coffee/listview_single_email.coffee > +++ b/site/js/coffee/listview_single_email.coffee > @@ -102,9 +102,11 @@ class SingleListView extends BasicListView > if hasRead(original.id) > readStyle = "normal" > > + > ### Subject, PLUS a bit of the body with a break before ### > + sid = shortenURL(original.id) > subject = new HTML('div', {}, [ > - new HTML('a', { style: {fontWeight: readStyle}, href: > "thread.html/#{original.id}", onclick: > "readEmail(this.parentNode.parentNode.parentNode); this.style.fontWeight = > 'normal'; return false;"}, original.subject), > + new HTML('a', { style: {fontWeight: readStyle}, href: > "thread.html/#{sid}", onclick: > "readEmail(this.parentNode.parentNode.parentNode); this.style.fontWeight = > 'normal'; return false;"}, original.subject), > ]) > > > > http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/ae791c1a/site/js/coffee/misc.coffee > ---------------------------------------------------------------------- > diff --git a/site/js/coffee/misc.coffee b/site/js/coffee/misc.coffee > index 131748a..2ac684c 100644 > --- a/site/js/coffee/misc.coffee > +++ b/site/js/coffee/misc.coffee > @@ -93,3 +93,34 @@ ponymail_url_regex = new RegExp( > ponymail_quote_regex = new RegExp( > "((?:\r?\n)((on .+ wrote:[\r\n]+)|(sent from my .+)|(>+[ > \t]*[^\r\n]*\r?\n[^\n]*\n*)+)+)+", "mi" > ) > + > +shortBits = 3 > + > +shortenURL = (mid) -> > + arr = mid.split("@")
This function throws away the list id. However AFAIK the list id is essential to disambiguate messages which are sent to multiple lists. > + if arr.length == 2 and (pm_config and pm_config.shortenLinks) > + out = "" > + for i in [0..shortBits-1] > + a = arr[0].substr(i*8,8) > + num = parseInt(a, 16) > + res = num.toString(36) > + while res.length < 7 > + res = '0' + res > + out += res > + return "PZ" + out > + > + return mid > + > +unshortenURL = (mid) -> > + if mid.substr(0,2) == 'PZ' > + out = "" > + for i in [0..shortBits-1] > + num = parseInt(mid.substr(2+(i*7), 7), 36) > + res = num.toString(16) > + while res.length < 8 > + res = '0' + res > + out += res > + return out > + else > + return mid > + The functions need some documentation. > > http://git-wip-us.apache.org/repos/asf/incubator-ponymail/blob/ae791c1a/site/js/coffee/scaffolding.coffee > ---------------------------------------------------------------------- > diff --git a/site/js/coffee/scaffolding.coffee > b/site/js/coffee/scaffolding.coffee > index ec58fee..379b463 100644 > --- a/site/js/coffee/scaffolding.coffee > +++ b/site/js/coffee/scaffolding.coffee > @@ -118,7 +118,7 @@ threadScaffolding = () -> > > ### Make an API call to the preferences script, have it call back to > listView once done ### > mid = location.href.match(/thread\.html\/(.+)/)[1] > - r = new HTTPRequest("api/thread.lua?id=" + mid, { > + r = new HTTPRequest("api/thread.lua?id=" + unshortenURL(mid), { > callback: scaffoldingEmailCallback > > }) >
