1st phase - Global CSS
Former-commit-id: 508c4ab746f994bb3f4f5e86ff1ca5e6dc873f3a [formerly 8a29c22f817f54abefe21116e46f21b24306b6b8] [formerly e23c1a85571f61877b67656ef361f1c15acfcb3d [formerly 67fb6f8a78
]]
Former-commit-id: 71e9024cf9107ef4e40f95bd388068fe052ea4f0 [formerly 7861ffe8d20f0777ae48c4f159efd7e32b2204d9]
Former-commit-id: 7db04ac5016d182f13ac56911d0a10871fb261f3
pull/726/head
parent
f51e2d5ba1
commit
c3b3099ebb
|
@ -91,6 +91,7 @@
|
|||
}
|
||||
}
|
||||
</style>
|
||||
<style title="global-css" type="text/css">{{ .CSS }}</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
|
|
@ -21,6 +21,12 @@
|
|||
<p><input type="submit" value="Save"></p>
|
||||
</form>
|
||||
|
||||
<form @submit="saveCSS">
|
||||
<h2>{{ $t('settings.customStylesheet') }}</h2>
|
||||
<textarea v-model="css"></textarea>
|
||||
<p><input type="submit" value="Save"></p>
|
||||
</form>
|
||||
|
||||
<form @submit="saveCommands">
|
||||
<h2>{{ $t('settings.commands') }}</h2>
|
||||
|
||||
|
@ -46,7 +52,8 @@ export default {
|
|||
data: function () {
|
||||
return {
|
||||
commands: [],
|
||||
staticGen: []
|
||||
staticGen: [],
|
||||
css: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
@ -65,8 +72,10 @@ export default {
|
|||
value: settings.commands[key].join('\n')
|
||||
})
|
||||
}
|
||||
|
||||
this.css = settings.css
|
||||
})
|
||||
.catch(error => { this.$showError(error) })
|
||||
.catch(this.$showError)
|
||||
},
|
||||
methods: {
|
||||
capitalize (name, where = '_') {
|
||||
|
@ -96,7 +105,19 @@ export default {
|
|||
|
||||
updateSettings(commands, 'commands')
|
||||
.then(() => { this.$showSuccess(this.$t('settings.commandsUpdated')) })
|
||||
.catch(error => { this.$showError(error) })
|
||||
.catch(this.$showError)
|
||||
},
|
||||
saveCSS (event) {
|
||||
event.preventDefault()
|
||||
|
||||
updateSettings(this.css, 'css')
|
||||
.then(() => {
|
||||
this.$showSuccess(this.$t('settings.settingsUpdated'))
|
||||
let style = document.querySelector('style[title="global-css"]')
|
||||
style.innerHTML = ''
|
||||
style.appendChild(document.createTextNode(this.css))
|
||||
})
|
||||
.catch(this.$showError)
|
||||
},
|
||||
saveStaticGen (event) {
|
||||
event.preventDefault()
|
||||
|
@ -117,7 +138,7 @@ export default {
|
|||
|
||||
updateSettings(staticGen, 'staticGen')
|
||||
.then(() => { this.$showSuccess(this.$t('settings.settingsUpdated')) })
|
||||
.catch(error => { this.$showError(error) })
|
||||
.catch(this.$showError)
|
||||
},
|
||||
parseStaticGen (staticgen) {
|
||||
for (let option of staticgen) {
|
||||
|
|
|
@ -74,6 +74,9 @@ type FileManager struct {
|
|||
// A map of events to a slice of commands.
|
||||
Commands map[string][]string
|
||||
|
||||
// Global stylesheet.
|
||||
CSS string
|
||||
|
||||
// NewFS should build a new file system for a given path.
|
||||
NewFS FSBuilder
|
||||
}
|
||||
|
@ -111,6 +114,16 @@ func (m *FileManager) Setup() error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Get the global CSS.
|
||||
err = m.Store.Config.Get("css", &m.CSS)
|
||||
if err != nil && err == ErrNotExist {
|
||||
err = m.Store.Config.Save("css", "")
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Tries to get the event commands from the database.
|
||||
// If they don't exist, initialize them.
|
||||
err = m.Store.Config.Get("commands", &m.Commands)
|
||||
|
|
|
@ -229,6 +229,7 @@ func renderFile(c *fm.Context, w http.ResponseWriter, file string) (int, error)
|
|||
"BaseURL": c.RootURL(),
|
||||
"NoAuth": c.NoAuth,
|
||||
"Version": fm.Version,
|
||||
"CSS": template.CSS(c.CSS),
|
||||
}
|
||||
|
||||
if c.StaticGen != nil {
|
||||
|
|
|
@ -13,6 +13,7 @@ import (
|
|||
type modifySettingsRequest struct {
|
||||
*modifyRequest
|
||||
Data struct {
|
||||
CSS string `json:"css"`
|
||||
Commands map[string][]string `json:"commands"`
|
||||
StaticGen map[string]interface{} `json:"staticGen"`
|
||||
} `json:"data"`
|
||||
|
@ -61,6 +62,7 @@ func settingsHandler(c *fm.Context, w http.ResponseWriter, r *http.Request) (int
|
|||
}
|
||||
|
||||
type settingsGetRequest struct {
|
||||
CSS string `json:"css"`
|
||||
Commands map[string][]string `json:"commands"`
|
||||
StaticGen []option `json:"staticGen"`
|
||||
}
|
||||
|
@ -73,6 +75,7 @@ func settingsGetHandler(c *fm.Context, w http.ResponseWriter, r *http.Request) (
|
|||
result := &settingsGetRequest{
|
||||
Commands: c.Commands,
|
||||
StaticGen: []option{},
|
||||
CSS: c.CSS,
|
||||
}
|
||||
|
||||
if c.StaticGen != nil {
|
||||
|
@ -114,6 +117,16 @@ func settingsPutHandler(c *fm.Context, w http.ResponseWriter, r *http.Request) (
|
|||
return http.StatusOK, nil
|
||||
}
|
||||
|
||||
// Update the global CSS.
|
||||
if mod.Which == "css" {
|
||||
if err := c.Store.Config.Save("css", mod.Data.CSS); err != nil {
|
||||
return http.StatusInternalServerError, err
|
||||
}
|
||||
|
||||
c.CSS = mod.Data.CSS
|
||||
return http.StatusOK, nil
|
||||
}
|
||||
|
||||
// Update the static generator options.
|
||||
if mod.Which == "staticGen" {
|
||||
err = mapstructure.Decode(mod.Data.StaticGen, c.StaticGen)
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
f6b2651e89474f0fcec0cfcc0bbfd11b023513d9
|
Loading…
Reference in New Issue