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
>
>      })
>

Reply via email to