]> git.immae.eu Git - github/bastienwirtz/homer.git/commitdiff
Merge pull request #177 from luixal/multiple-pages
authorBastien Wirtz <bastien.wirtz@gmail.com>
Sun, 7 Mar 2021 06:09:58 +0000 (22:09 -0800)
committerGitHub <noreply@github.com>
Sun, 7 Mar 2021 06:09:58 +0000 (22:09 -0800)
Adds multiple pages based on different config files

docs/configuration.md
public/assets/page2.yml [new file with mode: 0644]
src/App.vue

index 5785e560f645d9269642bcc8380da403a52ec81b..75ce7cde1f13677274688a01e98ccf1cf2fc9a6e 100644 (file)
@@ -92,6 +92,11 @@ links:
   - name: "link 2"
     icon: "fas fa-book"
     url: "https://github.com/bastienwirtz/homer"
+  # 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
+  # see url field and assets/page.yml used in this example:
+  - name: "Second Page"
+    icon: "fas fa-file-alt"
+    url: "#page2"
 
 # Services
 # First level array represents a group.
diff --git a/public/assets/page2.yml b/public/assets/page2.yml
new file mode 100644 (file)
index 0000000..00001e9
--- /dev/null
@@ -0,0 +1,34 @@
+# this config is used by a page linked in the navbar
+# this pages will use the same configuration from config.yml, but will overwrite fields present here
+
+# this overwrites title and subtitle:
+title: "Page2"
+subtitle: "this is the second page"
+
+# this overwrites message config. Setting it to empty to remove message from this page and keep it only in the main one:
+message:
+
+# 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:
+links:
+  - name: "Home"
+    icon: "fas fa-home"
+    url: "/"
+  - name: "Contribute"
+    icon: "fab fa-github"
+    url: "https://github.com/bastienwirtz/homer"
+    target: "_blank" # optional html a tag target attribute
+  - name: "Wiki"
+    icon: "fas fa-book"
+    url: "https://www.wikipedia.org/"
+
+# 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:
+services:
+  - name: "NEW"
+    icon: "fas fa-cloud"
+    items:
+      - name: "Awesome app on a second page!"
+        logo: "assets/tools/sample.png"
+        subtitle: "Bookmark example"
+        tag: "app"
+        url: "https://www.reddit.com/r/selfhosted/"
+        target: "_blank"
index dc473cacf406671d4f3f38c15179cc6337163746..cd1d9ba2755d104d83c4a122d934f19846f65497 100644 (file)
@@ -13,7 +13,7 @@
       <section v-if="config.header" class="first-line">
         <div v-cloak class="container">
           <div class="logo">
-            <img v-if="config.logo" :src="config.logo" alt="dashboard logo" />
+            <a href="#"><img v-if="config.logo" :src="config.logo" alt="dashboard logo" /></a>
             <i v-if="config.icon" :class="config.icon"></i>
           </div>
           <div class="dashboard-title">
@@ -151,8 +151,16 @@ export default {
   created: async function () {
     const defaults = jsyaml.load(defaultConfig);
     let config;
+    window.onhashchange = function() { location.reload(); };
     try {
       config = await this.getConfig();
+      const path = (window.location.hash.substring(1) != '') ? window.location.hash.substring(1) : null;
+      if (path) {
+        let pathConfig = await this.getConfig(`assets/${path}.yml`); // the slash (/) is included in the pathname
+        for (const prop in pathConfig) config[prop] = pathConfig[prop];
+      }
+      // config = await this.getConfig(path ? `assets/${path}.yml` : null);
+      //config = await (path ? this.getConfig(`assets/${path}.yml`) : this.getConfig())
     } catch (error) {
       console.log(error);
       config = this.handleErrors("⚠️ Error loading configuration", error);