Browse Source

Split up html templates and added extra slots for easy customization and extension.

pull/1/head
Simon Eisenmann 12 years ago
parent
commit
26d2c18764
  1. 3
      .gitignore
  2. 2
      html/extra.html
  3. 11
      html/head.html
  4. 1
      html/logo.html
  5. 19
      html/main.html
  6. 2
      server.conf.in
  7. 29
      src/app/spreed-speakfreely-server/main.go
  8. 4
      src/styles/components/_bar.scss

3
.gitignore vendored

@ -21,4 +21,5 @@ debian/tmp @@ -21,4 +21,5 @@ debian/tmp
vendor/*
/dist_*
/build/out/
/.sass-cache
/.sass-cache
/extra

2
html/extra.html

@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
<%define "extra-body"%><%end%>
<%define "extra-head"%><%end%>

11
html/head.html

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
<%define "head"%><title>Spreed Speak Freely</title>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<base href="/">
<link rel="stylesheet" type="text/css" href="<%.Cfg.S%>/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="<%.Cfg.S%>/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="<%.Cfg.S%>/css/main.min.css">
<%template "extra-head" .%>
<script id="globalcontext" type="application/json"><%$%></script><%end%>

1
html/logo.html

@ -0,0 +1 @@ @@ -0,0 +1 @@
<%define "logo"%><span class="logo" title="Spreed Speak Freely"><span><a target="_blank" href="https://github.com/strukturag/spreed-speakfreely">Speak Freely</a></span><%end%>

19
html/main.html

@ -1,16 +1,7 @@ @@ -1,16 +1,7 @@
<!doctype html>
<%define "mainPage"%><!doctype html>
<html class="no-js" lang="<% index .Languages 0%>" itemscope="itemscope" itemtype="http://schema.org/WebPage">
<head>
<title>Spreed Speak Freely</title>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<base href="/">
<link rel="stylesheet" type="text/css" href="<%.Cfg.S%>/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="<%.Cfg.S%>/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="<%.Cfg.S%>/css/main.min.css">
<script id="globalcontext" type="application/json"><%$%></script>
<%template "head" .%>
</head>
<body ng-controller="MediastreamController">
<div id="background"></div>
@ -20,7 +11,7 @@ @@ -20,7 +11,7 @@
</div>
<div id="bar">
<div class="left">
<a target="_blank" href="https://github.com/strukturag/spreed-speakfreely" class="logo" title="Spreed Speak Freely" style="background-image: url('<%.Cfg.S%>/img/logo-small.png')"><span>Speak Freely</span></a>
<%template "logo" .%>
</div>
<status-message ng-controller="StatusmessageController"></status-message>
<div class="ng-cloak right">
@ -49,6 +40,6 @@ @@ -49,6 +40,6 @@
<div class="ng-cloak" id="chat"><chat/></div>
<script data-main="<%.Cfg.S%>/js/<%.App%>" src="<%.Cfg.S%>/js/libs/require/require.js"></script>
<div class="ng-cloak" id="details">{{id}}</div>
<%extraHTML%>
<%template "extra-body" .%>
</body>
</html>
</html><%end%>

2
server.conf.in

@ -14,7 +14,7 @@ listen = 127.0.0.1:8080 @@ -14,7 +14,7 @@ listen = 127.0.0.1:8080
sessionSecret = the-default-secret-do-not-keep
#tokenFile = tokens.txt # If set, everyone needs to give one of the tokens to launch the web client. One token per line in the file.
#globalRoom = global # Enables a global room. Users in that room are in all rooms.
#extraHTML = <div>Rendered directly before closing body tag.</div>
#extra = /usr/share/spreed-speakfreely-server/extra # Extra templates directory. Add .html files to define extra-* template slots here.
[log]
#logfile = /var/log/spreed-speakfreely-server.log

29
src/app/spreed-speakfreely-server/main.go

@ -112,7 +112,7 @@ func handleRoomView(room string, w http.ResponseWriter, r *http.Request) { @@ -112,7 +112,7 @@ func handleRoomView(room string, w http.ResponseWriter, r *http.Request) {
context := &Context{Cfg: config, App: htmlApp, Host: r.Host, Ssl: ssl, Languages: langs}
// Render the template.
err := templates.ExecuteTemplate(w, "main.html", context)
err := templates.ExecuteTemplate(w, "mainPage", &context)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
@ -194,11 +194,6 @@ func runner(runtime phoenix.Runtime) error { @@ -194,11 +194,6 @@ func runner(runtime phoenix.Runtime) error {
stunURIs := strings.Split(stunURIsString, " ")
trimAndRemoveDuplicates(&stunURIs)
extraHTMLString, err := runtime.GetString("app", "extraHTML")
if err != nil {
extraHTMLString = ""
}
globalRoomid, err := runtime.GetString("app", "globalRoom")
if err != nil {
// Global room is disabled.
@ -219,17 +214,25 @@ func runner(runtime phoenix.Runtime) error { @@ -219,17 +214,25 @@ func runner(runtime phoenix.Runtime) error {
tt := template.New("")
tt.Delims("<%", "%>")
// Add some functions.
extraHTML := template.HTML(extraHTMLString)
tt.Funcs(template.FuncMap{"extraHTML": func() template.HTML {
return extraHTML
}})
templates, err = tt.ParseFiles(path.Join(rootFolder, "html", "main.html"))
templates, err = tt.ParseGlob(path.Join(rootFolder, "html", "*.html"))
if err != nil {
return fmt.Errorf("Failed to load templates: %s", err)
}
// Load extra templates folder
extraFolder, err := runtime.GetString("app", "extra")
if err == nil {
if !httputils.HasDirPath(extraFolder) {
return fmt.Errorf("Configured extra '%s' is not a directory.", extraFolder)
}
templates, err = templates.ParseGlob(path.Join(extraFolder, "*.html"))
if err != nil {
return fmt.Errorf("Failed to load extra templates: %s", err)
} else {
log.Printf("Loaded extra templates from: %s", extraFolder);
}
}
// Create our hub instance.
hub := NewHub(runtimeVersion, config, sessionSecret, turnSecret)

4
src/styles/components/_bar.scss

@ -56,6 +56,7 @@ width:106px; @@ -56,6 +56,7 @@ width:106px;
height:32px;
background-size:106px 32px;
background-repeat:no-repeat;
background-image:url(../img/logo-small.png);
display: inline-block;
text-align:left;
}
@ -65,6 +66,9 @@ left: 38px; @@ -65,6 +66,9 @@ left: 38px;
top: 26px;
font-style: italic;
}
#bar .logo > span a {
color:#222;
}
#bar > .right {
position: absolute;
right:0px;

Loading…
Cancel
Save