diff --git a/static/default.css b/static/default.css index 29b44640..739d4723 100644 --- a/static/default.css +++ b/static/default.css @@ -656,11 +656,33 @@ kbd { display: block; padding: 0 .5rem; } +.top-bar__highlight-new { + display: block; +} +.top-bar__highlight-new-input { + padding-left: 0.5rem; + padding-right: 0; + + margin-top: 0.35rem; + max-height: 1.3rem; + margin-bottom: 0.35rem; +} +.auth-links__admin-box { + flex-shrink: 0 +} +.top-bar__search { + display: inline-block; + height: 100%; +} .top-bar__search-bar { - border: 0; - vertical-align: -webkit-baseline-middle; /* You have no idea how sorry I am. This is a non-standard value. Seems to work in Safari, Opera and mobile Chrome. We need a jedi and a knight in shiny armor to replace it with something more standard. */ - width: 100%; + display: inline-block; + + padding-left: 0.5rem; + padding-right: 0; + + margin-top: 4.4%; + height: 65%; } @media (prefers-color-scheme: dark) { @@ -699,10 +721,6 @@ kbd { display: none; } - .top-bar__search-bar { - width: 100%; - } - .auth-links { display: flex; justify-content: flex-end; @@ -751,7 +769,8 @@ kbd { margin-right: 0; } .auth-links__link, - .top-bar__highlight-link { + .top-bar__highlight-link, + .top-bar__highlight-new { padding-left: 1rem; } .top-bar__section_hidden-on-mobile { diff --git a/views/stuff.go b/views/stuff.go new file mode 100644 index 00000000..de219d90 --- /dev/null +++ b/views/stuff.go @@ -0,0 +1,17 @@ +package views + +import ( + "fmt" +) + +// inputSize returns the size in chars for an html input element +// (as a string) given the placeholder string. +func inputSize(placeholder string) string { + charCount := len(placeholder) + // Because size="0" is invalid, clamp above 1 + min := 1 + if charCount <= min { + charCount = min + } + return fmt.Sprint(charCount) +} diff --git a/views/stuff.qtpl b/views/stuff.qtpl index b1e2b20d..1dd2d6d4 100644 --- a/views/stuff.qtpl +++ b/views/stuff.qtpl @@ -29,7 +29,7 @@
  • @@ -58,7 +58,13 @@
  • `) -//line views/stuff.qtpl:72 +//line views/stuff.qtpl:78 qw422016.N().S(body) -//line views/stuff.qtpl:72 +//line views/stuff.qtpl:78 qw422016.N().S(` `) -//line views/stuff.qtpl:84 +//line views/stuff.qtpl:90 StreamCommonScripts(qw422016) -//line views/stuff.qtpl:84 +//line views/stuff.qtpl:90 qw422016.N().S(` `) -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 } -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 func WriteBaseHTML(qq422016 qtio422016.Writer, title, body string, lc *l18n.Localizer, u *user.User, headElements ...string) { -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 StreamBaseHTML(qw422016, title, body, lc, u, headElements...) -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 } -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 func BaseHTML(title, body string, lc *l18n.Localizer, u *user.User, headElements ...string) string { -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 WriteBaseHTML(qb422016, title, body, lc, u, headElements...) -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 return qs422016 -//line views/stuff.qtpl:88 +//line views/stuff.qtpl:94 } -//line views/stuff.qtpl:90 +//line views/stuff.qtpl:96 func StreamTitleSearchHTML(qw422016 *qt422016.Writer, query string, generator func(string) <-chan string, lc *l18n.Localizer) { -//line views/stuff.qtpl:90 +//line views/stuff.qtpl:96 qw422016.N().S(`

    `) -//line views/stuff.qtpl:93 +//line views/stuff.qtpl:99 qw422016.E().S(lc.Get("ui.search_results_query", &l18n.Replacements{"query": query})) -//line views/stuff.qtpl:93 +//line views/stuff.qtpl:99 qw422016.N().S(`

    `) -//line views/stuff.qtpl:94 +//line views/stuff.qtpl:100 qw422016.E().S(lc.Get("ui.search_results_desc")) -//line views/stuff.qtpl:94 +//line views/stuff.qtpl:100 qw422016.N().S(`

    `) -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 } -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 func WriteTitleSearchHTML(qq422016 qtio422016.Writer, query string, generator func(string) <-chan string, lc *l18n.Localizer) { -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 StreamTitleSearchHTML(qw422016, query, generator, lc) -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 } -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 func TitleSearchHTML(query string, generator func(string) <-chan string, lc *l18n.Localizer) string { -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 WriteTitleSearchHTML(qb422016, query, generator, lc) -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 return qs422016 -//line views/stuff.qtpl:103 +//line views/stuff.qtpl:109 } // It outputs a poorly formatted JSON, but it works and is valid. -//line views/stuff.qtpl:106 +//line views/stuff.qtpl:112 func StreamTitleSearchJSON(qw422016 *qt422016.Writer, query string, generator func(string) <-chan string) { -//line views/stuff.qtpl:106 +//line views/stuff.qtpl:112 qw422016.N().S(` `) -//line views/stuff.qtpl:108 +//line views/stuff.qtpl:114 // Lol counter := 0 -//line views/stuff.qtpl:110 +//line views/stuff.qtpl:116 qw422016.N().S(` { "source_query": "`) -//line views/stuff.qtpl:112 +//line views/stuff.qtpl:118 qw422016.E().S(query) -//line views/stuff.qtpl:112 +//line views/stuff.qtpl:118 qw422016.N().S(`", "results": [ `) -//line views/stuff.qtpl:114 +//line views/stuff.qtpl:120 for hyphaName := range generator(query) { -//line views/stuff.qtpl:114 +//line views/stuff.qtpl:120 qw422016.N().S(` `) -//line views/stuff.qtpl:115 +//line views/stuff.qtpl:121 if counter > 0 { -//line views/stuff.qtpl:115 +//line views/stuff.qtpl:121 qw422016.N().S(`, `) -//line views/stuff.qtpl:115 +//line views/stuff.qtpl:121 } -//line views/stuff.qtpl:115 +//line views/stuff.qtpl:121 qw422016.N().S(`{ "canonical_name": "`) -//line views/stuff.qtpl:116 +//line views/stuff.qtpl:122 qw422016.E().S(hyphaName) -//line views/stuff.qtpl:116 +//line views/stuff.qtpl:122 qw422016.N().S(`", "beautiful_name": "`) -//line views/stuff.qtpl:117 +//line views/stuff.qtpl:123 qw422016.E().S(util.BeautifulName(hyphaName)) -//line views/stuff.qtpl:117 +//line views/stuff.qtpl:123 qw422016.N().S(`", "url": "`) -//line views/stuff.qtpl:118 +//line views/stuff.qtpl:124 qw422016.E().S(cfg.URL + "/hypha/" + hyphaName) -//line views/stuff.qtpl:118 +//line views/stuff.qtpl:124 qw422016.N().S(`" }`) -//line views/stuff.qtpl:119 +//line views/stuff.qtpl:125 counter++ -//line views/stuff.qtpl:119 +//line views/stuff.qtpl:125 qw422016.N().S(` `) -//line views/stuff.qtpl:120 +//line views/stuff.qtpl:126 } -//line views/stuff.qtpl:120 +//line views/stuff.qtpl:126 qw422016.N().S(` ] } `) -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 } -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 func WriteTitleSearchJSON(qq422016 qtio422016.Writer, query string, generator func(string) <-chan string) { -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 StreamTitleSearchJSON(qw422016, query, generator) -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 } -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 func TitleSearchJSON(query string, generator func(string) <-chan string) string { -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 WriteTitleSearchJSON(qb422016, query, generator) -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 return qs422016 -//line views/stuff.qtpl:123 +//line views/stuff.qtpl:129 } -//line views/stuff.qtpl:125 +//line views/stuff.qtpl:131 func StreamBacklinksHTML(qw422016 *qt422016.Writer, query string, generator func(string) <-chan string, lc *l18n.Localizer) { -//line views/stuff.qtpl:125 +//line views/stuff.qtpl:131 qw422016.N().S(`

    `) -//line views/stuff.qtpl:128 +//line views/stuff.qtpl:134 qw422016.E().S(lc.Get("ui.backlinks_query", &l18n.Replacements{"query": query})) -//line views/stuff.qtpl:128 +//line views/stuff.qtpl:134 qw422016.N().S(`

    `) -//line views/stuff.qtpl:129 +//line views/stuff.qtpl:135 qw422016.E().S(lc.Get("ui.backlinks_desc")) -//line views/stuff.qtpl:129 +//line views/stuff.qtpl:135 qw422016.N().S(`

    `) -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 } -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 func WriteBacklinksHTML(qq422016 qtio422016.Writer, query string, generator func(string) <-chan string, lc *l18n.Localizer) { -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 StreamBacklinksHTML(qw422016, query, generator, lc) -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 } -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 func BacklinksHTML(query string, generator func(string) <-chan string, lc *l18n.Localizer) string { -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 WriteBacklinksHTML(qb422016, query, generator, lc) -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 return qs422016 -//line views/stuff.qtpl:138 +//line views/stuff.qtpl:144 } -//line views/stuff.qtpl:140 +//line views/stuff.qtpl:146 func StreamHelpHTML(qw422016 *qt422016.Writer, content, lang string, lc *l18n.Localizer) { -//line views/stuff.qtpl:140 +//line views/stuff.qtpl:146 qw422016.N().S(`
    `) -//line views/stuff.qtpl:144 +//line views/stuff.qtpl:150 qw422016.N().S(content) -//line views/stuff.qtpl:144 +//line views/stuff.qtpl:150 qw422016.N().S(`
    `) -//line views/stuff.qtpl:147 +//line views/stuff.qtpl:153 qw422016.N().S(helpTopicsHTML(lang, lc)) -//line views/stuff.qtpl:147 +//line views/stuff.qtpl:153 qw422016.N().S(`
    `) -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 } -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 func WriteHelpHTML(qq422016 qtio422016.Writer, content, lang string, lc *l18n.Localizer) { -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 StreamHelpHTML(qw422016, content, lang, lc) -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 } -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 func HelpHTML(content, lang string, lc *l18n.Localizer) string { -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 WriteHelpHTML(qb422016, content, lang, lc) -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 return qs422016 -//line views/stuff.qtpl:149 +//line views/stuff.qtpl:155 } -//line views/stuff.qtpl:151 +//line views/stuff.qtpl:157 func StreamHelpEmptyErrorHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) { -//line views/stuff.qtpl:151 +//line views/stuff.qtpl:157 qw422016.N().S(`

    `) -//line views/stuff.qtpl:152 +//line views/stuff.qtpl:158 qw422016.E().S(lc.Get("help.empty_error_title")) -//line views/stuff.qtpl:152 +//line views/stuff.qtpl:158 qw422016.N().S(`

    `) -//line views/stuff.qtpl:153 +//line views/stuff.qtpl:159 qw422016.E().S(lc.Get("help.empty_error_line_1")) -//line views/stuff.qtpl:153 +//line views/stuff.qtpl:159 qw422016.N().S(`

    `) -//line views/stuff.qtpl:154 +//line views/stuff.qtpl:160 qw422016.E().S(lc.Get("help.empty_error_line_2a")) -//line views/stuff.qtpl:154 +//line views/stuff.qtpl:160 qw422016.N().S(` `) -//line views/stuff.qtpl:154 +//line views/stuff.qtpl:160 qw422016.E().S(lc.Get("help.empty_error_link")) -//line views/stuff.qtpl:154 +//line views/stuff.qtpl:160 qw422016.N().S(` `) -//line views/stuff.qtpl:154 +//line views/stuff.qtpl:160 qw422016.E().S(lc.Get("help.empty_error_line_2b")) -//line views/stuff.qtpl:154 +//line views/stuff.qtpl:160 qw422016.N().S(`

    `) -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 } -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 func WriteHelpEmptyErrorHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) { -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 StreamHelpEmptyErrorHTML(qw422016, lc) -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 } -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 func HelpEmptyErrorHTML(lc *l18n.Localizer) string { -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 WriteHelpEmptyErrorHTML(qb422016, lc) -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 return qs422016 -//line views/stuff.qtpl:155 +//line views/stuff.qtpl:161 } -//line views/stuff.qtpl:157 +//line views/stuff.qtpl:163 func streamhelpTopicsHTML(qw422016 *qt422016.Writer, lang string, lc *l18n.Localizer) { -//line views/stuff.qtpl:157 +//line views/stuff.qtpl:163 qw422016.N().S(` `) -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 } -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 func writehelpTopicsHTML(qq422016 qtio422016.Writer, lang string, lc *l18n.Localizer) { -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 streamhelpTopicsHTML(qw422016, lang, lc) -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 } -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 func helpTopicsHTML(lang string, lc *l18n.Localizer) string { -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 writehelpTopicsHTML(qb422016, lang, lc) -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 return qs422016 -//line views/stuff.qtpl:193 +//line views/stuff.qtpl:199 } -//line views/stuff.qtpl:195 +//line views/stuff.qtpl:201 func streamhelpTopicBadgeHTML(qw422016 *qt422016.Writer, lang, topic string) { -//line views/stuff.qtpl:195 +//line views/stuff.qtpl:201 qw422016.N().S(` ? `) -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 } -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 func writehelpTopicBadgeHTML(qq422016 qtio422016.Writer, lang, topic string) { -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 streamhelpTopicBadgeHTML(qw422016, lang, topic) -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 } -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 func helpTopicBadgeHTML(lang, topic string) string { -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 writehelpTopicBadgeHTML(qb422016, lang, topic) -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 return qs422016 -//line views/stuff.qtpl:197 +//line views/stuff.qtpl:203 } -//line views/stuff.qtpl:199 +//line views/stuff.qtpl:205 func StreamUserListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) { -//line views/stuff.qtpl:199 +//line views/stuff.qtpl:205 qw422016.N().S(`

    `) -//line views/stuff.qtpl:202 +//line views/stuff.qtpl:208 qw422016.E().S(lc.Get("ui.users_heading")) -//line views/stuff.qtpl:202 +//line views/stuff.qtpl:208 qw422016.N().S(`

    `) -//line views/stuff.qtpl:204 +//line views/stuff.qtpl:210 var ( admins = make([]string, 0) moderators = make([]string, 0) @@ -871,47 +893,17 @@ func StreamUserListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) { sort.Strings(moderators) sort.Strings(editors) -//line views/stuff.qtpl:222 +//line views/stuff.qtpl:228 qw422016.N().S(`

    `) -//line views/stuff.qtpl:224 - qw422016.E().S(lc.Get("ui.users_admins")) -//line views/stuff.qtpl:224 - qw422016.N().S(`

    -
      `) -//line views/stuff.qtpl:225 - for _, name := range admins { -//line views/stuff.qtpl:225 - qw422016.N().S(` -
    1. `) -//line views/stuff.qtpl:226 - qw422016.E().S(name) -//line views/stuff.qtpl:226 - qw422016.N().S(`
    2. - `) -//line views/stuff.qtpl:227 - } -//line views/stuff.qtpl:227 - qw422016.N().S(`
    -
    -
    -

    `) //line views/stuff.qtpl:230 - qw422016.E().S(lc.Get("ui.users_moderators")) + qw422016.E().S(lc.Get("ui.users_admins")) //line views/stuff.qtpl:230 qw422016.N().S(`

      `) //line views/stuff.qtpl:231 - for _, name := range moderators { + for _, name := range admins { //line views/stuff.qtpl:231 qw422016.N().S(`
      1. `) //line views/stuff.qtpl:237 - for _, name := range editors { + for _, name := range moderators { //line views/stuff.qtpl:237 qw422016.N().S(`
      2. +
          `) +//line views/stuff.qtpl:243 + for _, name := range editors { +//line views/stuff.qtpl:243 + qw422016.N().S(` +
        1. `) +//line views/stuff.qtpl:244 + qw422016.E().S(name) +//line views/stuff.qtpl:244 + qw422016.N().S(`
        2. + `) +//line views/stuff.qtpl:245 + } +//line views/stuff.qtpl:245 + qw422016.N().S(`
        +
    `) -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 } -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 func WriteUserListHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) { -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 StreamUserListHTML(qw422016, lc) -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 } -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 func UserListHTML(lc *l18n.Localizer) string { -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 WriteUserListHTML(qb422016, lc) -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 return qs422016 -//line views/stuff.qtpl:243 +//line views/stuff.qtpl:249 } -//line views/stuff.qtpl:245 +//line views/stuff.qtpl:251 func StreamHyphaListHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) { -//line views/stuff.qtpl:245 +//line views/stuff.qtpl:251 qw422016.N().S(`

    `) -//line views/stuff.qtpl:248 +//line views/stuff.qtpl:254 qw422016.E().S(lc.Get("ui.list_heading")) -//line views/stuff.qtpl:248 +//line views/stuff.qtpl:254 qw422016.N().S(`

    `) -//line views/stuff.qtpl:249 +//line views/stuff.qtpl:255 qw422016.E().S(lc.GetPlural("ui.list_desc", hyphae.Count())) -//line views/stuff.qtpl:249 +//line views/stuff.qtpl:255 qw422016.N().S(`

    `) -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 } -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 func WriteHyphaListHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) { -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 StreamHyphaListHTML(qw422016, lc) -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 } -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 func HyphaListHTML(lc *l18n.Localizer) string { -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 WriteHyphaListHTML(qb422016, lc) -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 return qs422016 -//line views/stuff.qtpl:271 +//line views/stuff.qtpl:277 } -//line views/stuff.qtpl:273 +//line views/stuff.qtpl:279 func StreamAboutHTML(qw422016 *qt422016.Writer, lc *l18n.Localizer) { -//line views/stuff.qtpl:273 +//line views/stuff.qtpl:279 qw422016.N().S(`

    `) -//line views/stuff.qtpl:277 +//line views/stuff.qtpl:283 qw422016.E().S(lc.Get("ui.about_title", &l18n.Replacements{"name": cfg.WikiName})) -//line views/stuff.qtpl:277 +//line views/stuff.qtpl:283 qw422016.N().S(`

    • `) -//line views/stuff.qtpl:279 +//line views/stuff.qtpl:285 qw422016.N().S(lc.Get("ui.about_version", &l18n.Replacements{"pre": "", "post": ""})) -//line views/stuff.qtpl:279 +//line views/stuff.qtpl:285 qw422016.N().S(` 1.7.0
    • `) -//line views/stuff.qtpl:280 +//line views/stuff.qtpl:286 if cfg.UseAuth { -//line views/stuff.qtpl:280 +//line views/stuff.qtpl:286 qw422016.N().S(`
    • `) -//line views/stuff.qtpl:281 +//line views/stuff.qtpl:287 qw422016.E().S(lc.Get("ui.about_usercount")) -//line views/stuff.qtpl:281 +//line views/stuff.qtpl:287 qw422016.N().S(` `) -//line views/stuff.qtpl:281 +//line views/stuff.qtpl:287 qw422016.N().DUL(user.Count()) -//line views/stuff.qtpl:281 +//line views/stuff.qtpl:287 qw422016.N().S(`
    • `) -//line views/stuff.qtpl:282 +//line views/stuff.qtpl:288 qw422016.E().S(lc.Get("ui.about_homepage")) -//line views/stuff.qtpl:282 +//line views/stuff.qtpl:288 qw422016.N().S(` `) -//line views/stuff.qtpl:282 +//line views/stuff.qtpl:288 qw422016.E().S(cfg.HomeHypha) -//line views/stuff.qtpl:282 +//line views/stuff.qtpl:288 qw422016.N().S(`
    • `) -//line views/stuff.qtpl:283 +//line views/stuff.qtpl:289 qw422016.E().S(lc.Get("ui.about_admins")) -//line views/stuff.qtpl:283 +//line views/stuff.qtpl:289 qw422016.N().S(``) -//line views/stuff.qtpl:283 +//line views/stuff.qtpl:289 for i, username := range user.ListUsersWithGroup("admin") { -//line views/stuff.qtpl:284 +//line views/stuff.qtpl:290 if i > 0 { -//line views/stuff.qtpl:284 +//line views/stuff.qtpl:290 qw422016.N().S(` `) -//line views/stuff.qtpl:285 +//line views/stuff.qtpl:291 } -//line views/stuff.qtpl:285 +//line views/stuff.qtpl:291 qw422016.N().S(` `) -//line views/stuff.qtpl:286 +//line views/stuff.qtpl:292 qw422016.E().S(username) -//line views/stuff.qtpl:286 +//line views/stuff.qtpl:292 qw422016.N().S(``) -//line views/stuff.qtpl:286 +//line views/stuff.qtpl:292 } -//line views/stuff.qtpl:286 +//line views/stuff.qtpl:292 qw422016.N().S(`
    • `) -//line views/stuff.qtpl:287 +//line views/stuff.qtpl:293 } else { -//line views/stuff.qtpl:287 +//line views/stuff.qtpl:293 qw422016.N().S(`
    • `) -//line views/stuff.qtpl:288 +//line views/stuff.qtpl:294 qw422016.E().S(lc.Get("ui.about_noauth")) -//line views/stuff.qtpl:288 +//line views/stuff.qtpl:294 qw422016.N().S(`
    • `) -//line views/stuff.qtpl:289 +//line views/stuff.qtpl:295 } -//line views/stuff.qtpl:289 +//line views/stuff.qtpl:295 qw422016.N().S(`

    `) -//line views/stuff.qtpl:291 +//line views/stuff.qtpl:297 qw422016.N().S(lc.Get("ui.about_hyphae", &l18n.Replacements{"link": "/list"})) -//line views/stuff.qtpl:291 +//line views/stuff.qtpl:297 qw422016.N().S(`

    `) -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 } -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 func WriteAboutHTML(qq422016 qtio422016.Writer, lc *l18n.Localizer) { -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 StreamAboutHTML(qw422016, lc) -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 } -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 func AboutHTML(lc *l18n.Localizer) string { -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 WriteAboutHTML(qb422016, lc) -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 return qs422016 -//line views/stuff.qtpl:295 +//line views/stuff.qtpl:301 } -//line views/stuff.qtpl:297 +//line views/stuff.qtpl:303 func StreamCommonScripts(qw422016 *qt422016.Writer) { -//line views/stuff.qtpl:297 +//line views/stuff.qtpl:303 qw422016.N().S(` `) -//line views/stuff.qtpl:298 +//line views/stuff.qtpl:304 for _, scriptPath := range cfg.CommonScripts { -//line views/stuff.qtpl:298 +//line views/stuff.qtpl:304 qw422016.N().S(` `) -//line views/stuff.qtpl:300 +//line views/stuff.qtpl:306 } -//line views/stuff.qtpl:300 +//line views/stuff.qtpl:306 qw422016.N().S(` `) -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 } -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 func WriteCommonScripts(qq422016 qtio422016.Writer) { -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 qw422016 := qt422016.AcquireWriter(qq422016) -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 StreamCommonScripts(qw422016) -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 qt422016.ReleaseWriter(qw422016) -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 } -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 func CommonScripts() string { -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 qb422016 := qt422016.AcquireByteBuffer() -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 WriteCommonScripts(qb422016) -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 qs422016 := string(qb422016.B) -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 qt422016.ReleaseByteBuffer(qb422016) -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 return qs422016 -//line views/stuff.qtpl:301 +//line views/stuff.qtpl:307 } diff --git a/web/stuff.go b/web/stuff.go index f94d3565..ad9c0c2e 100644 --- a/web/stuff.go +++ b/web/stuff.go @@ -35,6 +35,14 @@ func initStuff(r *mux.Router) { r.HandleFunc("/favicon.ico", func(w http.ResponseWriter, rq *http.Request) { http.Redirect(w, rq, "/static/favicon.ico", http.StatusSeeOther) }) + r.HandleFunc("/new", func(w http.ResponseWriter, rq *http.Request) { + new_path := rq.URL.Query().Get("new-path") + if new_path != "" { + http.Redirect(w, rq, "/hypha/"+new_path, http.StatusSeeOther) + } else { + w.WriteHeader(http.StatusNoContent) + } + }) } // handlerHelp gets the appropriate documentation or tells you where you (personally) have failed.