Quellcode durchsuchen

Use regular relative paths for assets if not using default static output path

shalvah vor 3 Jahren
Ursprung
Commit
f7fc4cc7e8
2 geänderte Dateien mit 15 neuen und 5 gelöschten Zeilen
  1. 5 5
      resources/views/themes/default/index.blade.php
  2. 10 0
      src/Writing/HtmlWriter.php

+ 5 - 5
resources/views/themes/default/index.blade.php

@@ -11,9 +11,9 @@
 
     <link href="https://fonts.googleapis.com/css?family=PT+Sans&display=swap" rel="stylesheet">
 
-    <link rel="stylesheet" href="../docs/css/theme-default.style.css" media="screen">
-    <link rel="stylesheet" href="../docs/css/theme-default.print.css" media="print">
-    <script src="{{ u::getVersionedAsset('../docs/js/theme-default.js') }}"></script>
+    <link rel="stylesheet" href="{!! $assetPathPrefix !!}css/theme-default.style.css" media="screen">
+    <link rel="stylesheet" href="{!! $assetPathPrefix !!}css/theme-default.print.css" media="print">
+    <script src="{{ u::getVersionedAsset($assetPathPrefix.'js/theme-default.js') }}"></script>
 
     <link rel="stylesheet"
           href="//unpkg.com/@highlightjs/cdn-assets@10.7.2/styles/obsidian.min.css">
@@ -25,7 +25,7 @@
     <script>
         var baseUrl = "{{ $tryItOut['base_url'] ?? config('app.url') }}";
     </script>
-    <script src="{{ u::getVersionedAsset('../docs/js/tryitout.js') }}"></script>
+    <script src="{{ u::getVersionedAsset($assetPathPrefix.'js/tryitout.js') }}"></script>
 @endif
 
 </head>
@@ -34,7 +34,7 @@
 <a href="#" id="nav-button">
       <span>
         MENU
-        <img src="../docs/images/navbar.png" alt="navbar-image" />
+        <img src="{!! $assetPathPrefix !!}images/navbar.png" alt="navbar-image" />
       </span>
 </a>
 <div class="tocify-wrapper">

+ 10 - 0
src/Writing/HtmlWriter.php

@@ -33,6 +33,15 @@ class HtmlWriter
         $appendFile = rtrim($sourceFolder, '/') . '/' . 'append.md';
         $append = file_exists($appendFile) ? $this->transformMarkdownFileToHTML($appendFile) : '';
 
+        // If they're using the default static path,
+        // then use '../docs/{asset}', so assets can work via Laravel app or via index.html
+        $assetPathPrefix = '../docs/';
+        if ($this->config->get('type') == 'static'
+            && rtrim($this->config->get('static.output_path', ''), '/') != 'public/docs'
+        ) {
+            $assetPathPrefix = './';
+        }
+
         $theme = $this->config->get('theme') ?? 'default';
         $output = View::make("scribe::themes.$theme.index", [
             'metadata' => $this->getMetadata(),
@@ -42,6 +51,7 @@ class HtmlWriter
             'auth' => $auth,
             'groupedEndpoints' => $groupedEndpoints,
             'append' => $append,
+            'assetPathPrefix' => $assetPathPrefix,
         ])->render();
 
         if (!is_dir($destinationFolder)) {