]> Cypherpunks.ru repositories - gostls13.git/commitdiff
godoc: use shorter titles for tabs
authorRobert Griesemer <gri@golang.org>
Wed, 21 Mar 2012 18:29:30 +0000 (11:29 -0700)
committerRobert Griesemer <gri@golang.org>
Wed, 21 Mar 2012 18:29:30 +0000 (11:29 -0700)
In a browser with many open tabs, the tab titles become short
and uninformative because they all start with the same prefix
("Package ", "Directory ", etc.).

Permit use of shorter tab titles that start with the relevant
information first.

Fixes #3365.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5865056

lib/godoc/godoc.html
src/cmd/godoc/codewalk.go
src/cmd/godoc/godoc.go
src/cmd/godoc/main.go

index 7efed83b922a3b209a1285b39d24aaa51ecb5606..feb96e50f46715939a1aacb37593e9a21696583e 100644 (file)
@@ -2,7 +2,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-{{with .Title}}
+{{with .Tabtitle}}
   <title>{{html .}} - The Go Programming Language</title>
 {{else}}
   <title>The Go Programming Language</title>
index 3e38162a487edbd1611064ceff502ea25e2f4e9d..f7f51d0a028451cd3bec31265d07e944ccb11b5a 100644 (file)
@@ -69,7 +69,7 @@ func codewalk(w http.ResponseWriter, r *http.Request) {
        }
 
        b := applyTemplate(codewalkHTML, "codewalk", cw)
-       servePage(w, "Codewalk: "+cw.Title, "", "", b)
+       servePage(w, cw.Title, "Codewalk: "+cw.Title, "", "", b)
 }
 
 // A Codewalk represents a single codewalk read from an XML file.
@@ -200,7 +200,7 @@ func codewalkDir(w http.ResponseWriter, r *http.Request, relpath, abspath string
        }
 
        b := applyTemplate(codewalkdirHTML, "codewalkdir", v)
-       servePage(w, "Codewalks", "", "", b)
+       servePage(w, "", "Codewalks", "", "", b)
 }
 
 // codewalkFileprint serves requests with ?fileprint=f&lo=lo&hi=hi.
index 67f023ff71a31a2c33639147f76ecea26efae9d0..26814d2fa3d96246c2b921d699f5765695c4f08b 100644 (file)
@@ -546,8 +546,12 @@ func readTemplates() {
 // ----------------------------------------------------------------------------
 // Generic HTML wrapper
 
-func servePage(w http.ResponseWriter, title, subtitle, query string, content []byte) {
+func servePage(w http.ResponseWriter, tabtitle, title, subtitle, query string, content []byte) {
+       if tabtitle == "" {
+               tabtitle = title
+       }
        d := struct {
+               Tabtitle  string
                Title     string
                Subtitle  string
                SearchBox bool
@@ -556,6 +560,7 @@ func servePage(w http.ResponseWriter, title, subtitle, query string, content []b
                Menu      []byte
                Content   []byte
        }{
+               tabtitle,
                title,
                subtitle,
                *indexEnabled,
@@ -630,7 +635,7 @@ func serveHTMLDoc(w http.ResponseWriter, r *http.Request, abspath, relpath strin
                src = buf.Bytes()
        }
 
-       servePage(w, meta.Title, meta.Subtitle, "", src)
+       servePage(w, "", meta.Title, meta.Subtitle, "", src)
 }
 
 func applyTemplate(t *template.Template, name string, data interface{}) []byte {
@@ -666,7 +671,7 @@ func serveTextFile(w http.ResponseWriter, r *http.Request, abspath, relpath, tit
        FormatText(&buf, src, 1, pathpkg.Ext(abspath) == ".go", r.FormValue("h"), rangeSelection(r.FormValue("s")))
        buf.WriteString("</pre>")
 
-       servePage(w, title+" "+relpath, "", "", buf.Bytes())
+       servePage(w, relpath, title+" "+relpath, "", "", buf.Bytes())
 }
 
 func serveDirectory(w http.ResponseWriter, r *http.Request, abspath, relpath string) {
@@ -681,7 +686,7 @@ func serveDirectory(w http.ResponseWriter, r *http.Request, abspath, relpath str
        }
 
        contents := applyTemplate(dirlistHTML, "dirlistHTML", list)
-       servePage(w, "Directory "+relpath, "", "", contents)
+       servePage(w, relpath, "Directory "+relpath, "", "", contents)
 }
 
 func serveFile(w http.ResponseWriter, r *http.Request) {
@@ -1073,30 +1078,41 @@ func (h *docServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
                return
        }
 
-       var title, subtitle string
+       var tabtitle, title, subtitle string
        switch {
        case info.PAst != nil:
-               title = "Package " + info.PAst.Name.Name
+               tabtitle = info.PAst.Name.Name
+               title = "Package " + tabtitle
        case info.PDoc != nil:
-               switch {
-               case info.IsPkg:
-                       title = "Package " + info.PDoc.Name
-               case info.PDoc.Name == fakePkgName:
+               if info.PDoc.Name == fakePkgName {
                        // assume that the directory name is the command name
-                       _, pkgname := pathpkg.Split(relpath)
-                       title = "Command " + pkgname
-               default:
-                       title = "Command " + info.PDoc.Name
+                       _, tabtitle = pathpkg.Split(relpath)
+               } else {
+                       tabtitle = info.PDoc.Name
+               }
+               if info.IsPkg {
+                       title = "Package " + tabtitle
+               } else {
+                       title = "Command " + tabtitle
                }
        default:
-               title = "Directory " + info.Dirname
+               tabtitle = info.Dirname
+               title = "Directory " + tabtitle
                if *showTimestamps {
                        subtitle = "Last update: " + info.DirTime.String()
                }
        }
 
+       // special cases for top-level package/command directories
+       switch tabtitle {
+       case "/src/pkg":
+               tabtitle = "Packages"
+       case "/src/cmd":
+               tabtitle = "Commands"
+       }
+
        contents := applyTemplate(packageHTML, "packageHTML", info)
-       servePage(w, title, subtitle, "", contents)
+       servePage(w, tabtitle, title, subtitle, "", contents)
 }
 
 // ----------------------------------------------------------------------------
@@ -1186,7 +1202,7 @@ func search(w http.ResponseWriter, r *http.Request) {
        }
 
        contents := applyTemplate(searchHTML, "searchHTML", result)
-       servePage(w, title, "", query, contents)
+       servePage(w, query, title, "", query, contents)
 }
 
 // ----------------------------------------------------------------------------
index 10a14b9a8bfa34e45b4bae6dbd8744b6e1b42e00..23f712ab3e4f74090e3198fcb26ff5cae6cc4a74 100644 (file)
@@ -73,7 +73,7 @@ var (
 func serveError(w http.ResponseWriter, r *http.Request, relpath string, err error) {
        contents := applyTemplate(errorHTML, "errorHTML", err) // err may contain an absolute path!
        w.WriteHeader(http.StatusNotFound)
-       servePage(w, "File "+relpath, "", "", contents)
+       servePage(w, relpath, "File "+relpath, "", "", contents)
 }
 
 func usage() {