aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBastien Wirtz <bastien.wirtz@gmail.com>2021-03-06 22:09:58 -0800
committerGitHub <noreply@github.com>2021-03-06 22:09:58 -0800
commit00b46a6ddebcbbe581f201bd4089c38f6d666fb9 (patch)
treee26dd615b3adf273b99e58329b8caa2050c1d308
parentcc7ff885527283d97f32347210b0370e8477c4ff (diff)
parentc6267296ec03db24ff40959ef58eedcec904c39b (diff)
downloadhomer-00b46a6ddebcbbe581f201bd4089c38f6d666fb9.tar.gz
homer-00b46a6ddebcbbe581f201bd4089c38f6d666fb9.tar.zst
homer-00b46a6ddebcbbe581f201bd4089c38f6d666fb9.zip
Merge pull request #177 from luixal/multiple-pages
Adds multiple pages based on different config files
-rw-r--r--docs/configuration.md5
-rw-r--r--public/assets/page2.yml34
-rw-r--r--src/App.vue10
3 files changed, 48 insertions, 1 deletions
diff --git a/docs/configuration.md b/docs/configuration.md
index 5785e56..75ce7cd 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -92,6 +92,11 @@ links:
92 - name: "link 2" 92 - name: "link 2"
93 icon: "fas fa-book" 93 icon: "fas fa-book"
94 url: "https://github.com/bastienwirtz/homer" 94 url: "https://github.com/bastienwirtz/homer"
95 # this will link to a second homer page that will load config from page2.yml and keep default config values as in config.yml file
96 # see url field and assets/page.yml used in this example:
97 - name: "Second Page"
98 icon: "fas fa-file-alt"
99 url: "#page2"
95 100
96# Services 101# Services
97# First level array represents a group. 102# First level array represents a group.
diff --git a/public/assets/page2.yml b/public/assets/page2.yml
new file mode 100644
index 0000000..00001e9
--- /dev/null
+++ b/public/assets/page2.yml
@@ -0,0 +1,34 @@
1# this config is used by a page linked in the navbar
2# this pages will use the same configuration from config.yml, but will overwrite fields present here
3
4# this overwrites title and subtitle:
5title: "Page2"
6subtitle: "this is the second page"
7
8# this overwrites message config. Setting it to empty to remove message from this page and keep it only in the main one:
9message:
10
11# as we want to include a differente link here (so we can get back to home page), we need to replicate all links or they will be revome when overwriting the links field:
12links:
13 - name: "Home"
14 icon: "fas fa-home"
15 url: "/"
16 - name: "Contribute"
17 icon: "fab fa-github"
18 url: "https://github.com/bastienwirtz/homer"
19 target: "_blank" # optional html a tag target attribute
20 - name: "Wiki"
21 icon: "fas fa-book"
22 url: "https://www.wikipedia.org/"
23
24# we keep the first group from the main page, but remove the second group. We need to replicate that first group or it will be removed:
25services:
26 - name: "NEW"
27 icon: "fas fa-cloud"
28 items:
29 - name: "Awesome app on a second page!"
30 logo: "assets/tools/sample.png"
31 subtitle: "Bookmark example"
32 tag: "app"
33 url: "https://www.reddit.com/r/selfhosted/"
34 target: "_blank"
diff --git a/src/App.vue b/src/App.vue
index dc473ca..cd1d9ba 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -13,7 +13,7 @@
13 <section v-if="config.header" class="first-line"> 13 <section v-if="config.header" class="first-line">
14 <div v-cloak class="container"> 14 <div v-cloak class="container">
15 <div class="logo"> 15 <div class="logo">
16 <img v-if="config.logo" :src="config.logo" alt="dashboard logo" /> 16 <a href="#"><img v-if="config.logo" :src="config.logo" alt="dashboard logo" /></a>
17 <i v-if="config.icon" :class="config.icon"></i> 17 <i v-if="config.icon" :class="config.icon"></i>
18 </div> 18 </div>
19 <div class="dashboard-title"> 19 <div class="dashboard-title">
@@ -151,8 +151,16 @@ export default {
151 created: async function () { 151 created: async function () {
152 const defaults = jsyaml.load(defaultConfig); 152 const defaults = jsyaml.load(defaultConfig);
153 let config; 153 let config;
154 window.onhashchange = function() { location.reload(); };
154 try { 155 try {
155 config = await this.getConfig(); 156 config = await this.getConfig();
157 const path = (window.location.hash.substring(1) != '') ? window.location.hash.substring(1) : null;
158 if (path) {
159 let pathConfig = await this.getConfig(`assets/${path}.yml`); // the slash (/) is included in the pathname
160 for (const prop in pathConfig) config[prop] = pathConfig[prop];
161 }
162 // config = await this.getConfig(path ? `assets/${path}.yml` : null);
163 //config = await (path ? this.getConfig(`assets/${path}.yml`) : this.getConfig())
156 } catch (error) { 164 } catch (error) {
157 console.log(error); 165 console.log(error);
158 config = this.handleErrors("⚠️ Error loading configuration", error); 166 config = this.handleErrors("⚠️ Error loading configuration", error);