add instance specific panel

This commit is contained in:
hakabahitoyo 2018-02-04 00:27:33 +09:00
parent 92289e545a
commit 95cba854f3
6 changed files with 42 additions and 5 deletions

View File

@ -2,6 +2,7 @@ import UserPanel from './components/user_panel/user_panel.vue'
import NavPanel from './components/nav_panel/nav_panel.vue' import NavPanel from './components/nav_panel/nav_panel.vue'
import Notifications from './components/notifications/notifications.vue' import Notifications from './components/notifications/notifications.vue'
import UserFinder from './components/user_finder/user_finder.vue' import UserFinder from './components/user_finder/user_finder.vue'
import InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'
import ChatPanel from './components/chat_panel/chat_panel.vue' import ChatPanel from './components/chat_panel/chat_panel.vue'
export default { export default {
@ -11,7 +12,8 @@ export default {
NavPanel, NavPanel,
Notifications, Notifications,
UserFinder, UserFinder,
ChatPanel ChatPanel,
InstanceSpecificPanel
}, },
data: () => ({ data: () => ({
mobileActivePanel: 'timeline' mobileActivePanel: 'timeline'
@ -24,7 +26,8 @@ export default {
logoStyle () { return { 'background-image': `url(${this.$store.state.config.logo})` } }, logoStyle () { return { 'background-image': `url(${this.$store.state.config.logo})` } },
style () { return { 'background-image': `url(${this.background})` } }, style () { return { 'background-image': `url(${this.background})` } },
sitename () { return this.$store.state.config.name }, sitename () { return this.$store.state.config.name },
chat () { return this.$store.state.chat.channel } chat () { return this.$store.state.chat.channel },
showInstanceSpecificPanel () { return this.$store.state.config.showInstanceSpecificPanel}
}, },
methods: { methods: {
activatePanel (panelName) { activatePanel (panelName) {

View File

@ -23,6 +23,7 @@
<div class="sidebar"> <div class="sidebar">
<user-panel></user-panel> <user-panel></user-panel>
<nav-panel></nav-panel> <nav-panel></nav-panel>
<instance-specific-panel v-if="showInstanceSpecificPanel"></instance-specific-panel>
<chat-panel v-if="currentUser && chat"></chat-panel> <chat-panel v-if="currentUser && chat"></chat-panel>
<notifications v-if="currentUser"></notifications> <notifications v-if="currentUser"></notifications>
</div> </div>

View File

@ -0,0 +1,9 @@
const InstanceSpecificPanel = {
computed: {
instanceSpecificPanelContent () {
return this.$store.state.config.instanceSpecificPanelContent
}
}
}
export default InstanceSpecificPanel

View File

@ -0,0 +1,15 @@
<template>
<div class="instance-specific-panel">
<div class="panel panel-default base01-background">
<div class="panel-body">
<div v-html="instanceSpecificPanelContent">
</div>
</div>
</div>
</div>
</template>
<script src="./instance_specific_panel.js" ></script>
<style lang="scss">
</style>

View File

@ -78,12 +78,13 @@ const i18n = new VueI18n({
window.fetch('/static/config.json') window.fetch('/static/config.json')
.then((res) => res.json()) .then((res) => res.json())
.then((data) => { .then((data) => {
const {name, theme, background, logo, registrationOpen} = data const {name, theme, background, logo, registrationOpen, showInstanceSpecificPanel} = data
store.dispatch('setOption', { name: 'name', value: name }) store.dispatch('setOption', { name: 'name', value: name })
store.dispatch('setOption', { name: 'theme', value: theme }) store.dispatch('setOption', { name: 'theme', value: theme })
store.dispatch('setOption', { name: 'background', value: background }) store.dispatch('setOption', { name: 'background', value: background })
store.dispatch('setOption', { name: 'logo', value: logo }) store.dispatch('setOption', { name: 'logo', value: logo })
store.dispatch('setOption', { name: 'registrationOpen', value: registrationOpen }) store.dispatch('setOption', { name: 'registrationOpen', value: registrationOpen })
store.dispatch('setOption', { name: 'showInstanceSpecificPanel', value: showInstanceSpecificPanel })
if (data['chatDisabled']) { if (data['chatDisabled']) {
store.dispatch('disableChat') store.dispatch('disableChat')
} }
@ -146,3 +147,10 @@ window.fetch('/api/pleroma/emoji.json')
), ),
(error) => console.log(error) (error) => console.log(error)
) )
window.fetch('/instance/panel.html')
.then((res) => res.text())
.then((html) => {
store.dispatch('setOption', { name: 'instanceSpecificPanelContent', value: html })
})

View File

@ -3,7 +3,8 @@
"theme": "pleroma-dark", "theme": "pleroma-dark",
"background": "/static/bg.jpg", "background": "/static/bg.jpg",
"logo": "/static/logo.png", "logo": "/static/logo.png",
"registrationOpen": false, "registrationOpen": true,
"defaultPath": "/main/all", "defaultPath": "/main/all",
"chatDisabled": false "chatDisabled": false,
"showInstanceSpecificPanel": false
} }