add option to switch to apple maps links

This commit is contained in:
Ted Unangst 2019-11-16 18:50:50 -05:00
parent 7e191dea0e
commit 22b40b5935
8 changed files with 39 additions and 3 deletions

View File

@ -2,6 +2,8 @@ changelog
-- next
+ Option to switch map links to Apple.
-- 0.8.2
++ Import command to preserve those embarssassing old posts from Twitter.

View File

@ -164,6 +164,15 @@ It also allows the import of external objects via URL, either individual
posts or actor URLs, in which case their recent outbox is imported.
.Ss Account
It's all about you.
.Pp
Some options to customize the site appearance:
.Bl -tag -width skinny
.It skinny
Use a narrower column for the main display.
.It apple
Prefer Apple links for maps.
The default is OpenStreetMap.
.El
.Sh ENVIRONMENT
.Nm
is designed to work with most browsers, but for optimal results it is

View File

@ -48,6 +48,7 @@ type WhatAbout struct {
type UserOptions struct {
SkinnyCSS bool `json:",omitempty"`
Avatar string `json:",omitempty"`
MapLink string `json:",omitempty"`
}
type KeyInfo struct {

View File

@ -10,6 +10,8 @@
<p><textarea name="whatabout">{{ .User.About }}</textarea>
<p><label class="button" for="skinny">skinny layout:</label>
<input tabindex=1 type="checkbox" id="skinny" name="skinny" value="skinny" {{ if .User.Options.SkinnyCSS }}checked{{ end }}><span></span>
<p><label class="button" for="maps">apple map links:</label>
<input tabindex=1 type="checkbox" id="maps" name="maps" value="apple" {{ if eq "apple" .User.Options.MapLink }}checked{{ end }}><span></span>
<p><button>update settings</button>
</form>
</div>

View File

@ -1,6 +1,7 @@
<article class="honk {{ .Honk.Style }}" data-convoy="{{ .Honk.Convoy }}">
{{ $bonkcsrf := .BonkCSRF }}
{{ $IsPreview := .IsPreview }}
{{ $maplink := .MapLink }}
{{ with .Honk }}
<header>
{{ if $bonkcsrf }}
@ -60,7 +61,7 @@ in reply to: <a href="{{ .RID }}" rel=noreferrer>{{ .RID }}</a>
{{ if .Duration }}<br>Duration: {{ .Duration }}{{ end }}
{{ end }}
{{ with .Place }}
<p>Location: {{ with .Url }}<a href="{{ . }}" rel=noreferrer>{{ end }}{{ .Name }}{{ if .Url }}</a>{{ end }}{{ if or .Latitude .Longitude }} <a href="https://www.openstreetmap.org/?mlat={{ .Latitude }}&mlon={{ .Longitude}}#map=16/{{ .Latitude }}/{{ .Longitude }}" rel=noreferrer>{{ .Latitude }} {{ .Longitude }}</a>{{ end }}
<p>Location: {{ with .Url }}<a href="{{ . }}" rel=noreferrer>{{ end }}{{ .Name }}{{ if .Url }}</a>{{ end }}{{ if or .Latitude .Longitude }} <a href="{{ if eq $maplink "apple" }}https://maps.apple.com/?q={{ or .Name "here" }}&z=16&ll={{ .Latitude }},{{ .Longitude }}{{ else }}https://www.openstreetmap.org/?mlat={{ .Latitude }}&mlon={{ .Longitude}}#map=16/{{ .Latitude }}/{{ .Longitude }}{{ end }}" rel=noreferrer>{{ .Latitude }} {{ .Longitude }}</a>{{ end }}
{{ end }}
{{ range .Donks }}
{{ if .Local }}

View File

@ -1,8 +1,9 @@
<div>{{ .TopHID }}</div>
{{ $BonkCSRF := .HonkCSRF }}
{{ $MapLink := .MapLink }}
<div><p>{{ .ServerMessage }}</div>
<div>
{{ range .Honks }}
{{ template "honk.html" map "Honk" . "BonkCSRF" $BonkCSRF }}
{{ template "honk.html" map "Honk" . "MapLink" .MapLink "BonkCSRF" $BonkCSRF }}
{{ end }}
</div>

View File

@ -22,8 +22,9 @@
<div>
{{ $BonkCSRF := .HonkCSRF }}
{{ $IsPreview := .IsPreview }}
{{ $MapLink := .MapLink }}
{{ range .Honks }}
{{ template "honk.html" map "Honk" . "BonkCSRF" $BonkCSRF "IsPreview" $IsPreview }}
{{ template "honk.html" map "Honk" . "MapLink" $MapLink "BonkCSRF" $BonkCSRF "IsPreview" $IsPreview }}
{{ end }}
</div>
</div>

19
web.go
View File

@ -59,6 +59,18 @@ func getuserstyle(u *login.UserInfo) template.CSS {
return ""
}
func getmaplink(u *login.UserInfo) string {
if u == nil {
return "osm"
}
user, _ := butwhatabout(u.Username)
ml := user.Options.MapLink
if ml == "" {
ml = "osm"
}
return ml
}
func getInfo(r *http.Request) map[string]interface{} {
u := login.GetUserInfo(r)
templinfo := make(map[string]interface{})
@ -1032,6 +1044,7 @@ func honkpage(w http.ResponseWriter, u *login.UserInfo, honks []*Honk, templinfo
}
reverbolate(userid, honks)
templinfo["Honks"] = honks
templinfo["MapLink"] = getmaplink(u)
if templinfo["TopHID"] == nil {
if len(honks) > 0 {
templinfo["TopHID"] = honks[0].ID
@ -1056,6 +1069,9 @@ func saveuser(w http.ResponseWriter, r *http.Request) {
if r.FormValue("skinny") == "skinny" {
options.SkinnyCSS = true
}
if r.FormValue("maps") == "apple" {
options.MapLink = "apple"
}
j, err := jsonify(options)
if err == nil {
_, err = db.Exec("update users set about = ?, options = ? where username = ?", whatabout, j, u.Username)
@ -1271,6 +1287,7 @@ func edithonkpage(w http.ResponseWriter, r *http.Request) {
templinfo := getInfo(r)
templinfo["HonkCSRF"] = login.GetCSRF("honkhonk", r)
templinfo["Honks"] = honks
templinfo["MapLink"] = getmaplink(u)
templinfo["Noise"] = noise
templinfo["SavedPlace"] = honk.Place
templinfo["ServerMessage"] = "honk edit"
@ -1557,6 +1574,7 @@ func submithonk(w http.ResponseWriter, r *http.Request, isAPI bool) {
templinfo := getInfo(r)
templinfo["HonkCSRF"] = login.GetCSRF("honkhonk", r)
templinfo["Honks"] = honks
templinfo["MapLink"] = getmaplink(userinfo)
templinfo["InReplyTo"] = r.FormValue("rid")
templinfo["Noise"] = r.FormValue("noise")
templinfo["SavedFile"] = donkxid
@ -2027,6 +2045,7 @@ func webhydra(w http.ResponseWriter, r *http.Request) {
}
reverbolate(userid, honks)
templinfo["Honks"] = honks
templinfo["MapLink"] = getmaplink(u)
w.Header().Set("Content-Type", "text/html; charset=utf-8")
err := readviews.Execute(w, "honkfrags.html", templinfo)
if err != nil {