]> BookStack Code Mirror - bookstack/commitdiff
Started work on subdirectory support
authorDan Brown <redacted>
Sat, 13 Aug 2016 16:56:20 +0000 (17:56 +0100)
committerDan Brown <redacted>
Sat, 13 Aug 2016 16:56:25 +0000 (17:56 +0100)
app/Book.php
app/Chapter.php
app/Page.php
app/User.php
app/helpers.php
config/app.php
resources/views/base.blade.php

index 919af80a59e746c099aee6f5c166f7998d068575..af6d59bfd8f28b35150ee45af9c73d42baaa3e3c 100644 (file)
@@ -11,7 +11,7 @@ class Book extends Entity
      */
     public function getUrl()
     {
-        return '/books/' . $this->slug;
+        return baseUrl('/books/' . $this->slug);
     }
 
     /*
index 08faef68e390e8bb2c547713826bdcee2d7ff0d0..250e323f5246557c4180481fda27392f00e6643b 100644 (file)
@@ -30,7 +30,7 @@ class Chapter extends Entity
     public function getUrl()
     {
         $bookSlug = $this->getAttribute('bookSlug') ? $this->getAttribute('bookSlug') : $this->book->slug;
-        return '/books/' . $bookSlug. '/chapter/' . $this->slug;
+        return baseUrl('/books/' . $bookSlug. '/chapter/' . $this->slug);
     }
 
     /**
index c6978d34ba935a163fe3b037037e77e2bca94f2a..5902f4f5abed53370ec146eaf15569df20895038 100644 (file)
@@ -63,7 +63,7 @@ class Page extends Entity
         $bookSlug = $this->getAttribute('bookSlug') ? $this->getAttribute('bookSlug') : $this->book->slug;
         $midText = $this->draft ? '/draft/' : '/page/';
         $idComponent = $this->draft ? $this->id : $this->slug;
-        return '/books/' . $bookSlug . $midText . $idComponent;
+        return baseUrl('/books/' . $bookSlug . $midText . $idComponent);
     }
 
     /**
index 74aec7e3a734fdf56394e98cb4451039e281ae35..6ab7ad3bf45cd314fe39e188cfcc100c5fdc0449 100644 (file)
@@ -138,8 +138,8 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
      */
     public function getAvatar($size = 50)
     {
-        if ($this->image_id === 0 || $this->image_id === '0' || $this->image_id === null) return '/user_avatar.png';
-        return $this->avatar->getThumb($size, $size, false);
+        if ($this->image_id === 0 || $this->image_id === '0' || $this->image_id === null) return baseUrl('/user_avatar.png');
+        return baseUrl($this->avatar->getThumb($size, $size, false));
     }
 
     /**
@@ -157,7 +157,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
      */
     public function getEditUrl()
     {
-        return '/settings/users/' . $this->id;
+        return baseUrl('/settings/users/' . $this->id);
     }
 
     /**
index 42e4c189476c8669a2d8bd336a7c9b84a7223df2..0b9a6afc6347a420185e917d6a7547921bd0fd84 100644 (file)
@@ -20,11 +20,11 @@ if (!function_exists('versioned_asset')) {
         }
 
         if (isset($manifest[$file])) {
-            return '/' . $manifest[$file];
+            return baseUrl($manifest[$file]);
         }
 
         if (file_exists(public_path($file))) {
-            return '/' . $file;
+            return baseUrl($file);
         }
 
         throw new InvalidArgumentException("File {$file} not defined in asset manifest.");
@@ -62,6 +62,17 @@ function setting($key, $default = false)
     return $settingService->get($key, $default);
 }
 
+/**
+ * Helper to create url's relative to the applications root path.
+ * @param $path
+ * @return string
+ */
+function baseUrl($path)
+{
+    $path = trim($path, '/');
+    return rtrim(config('app.url'), '/') . '/' . $path;
+}
+
 /**
  * Generate a url with multiple parameters for sorting purposes.
  * Works out the logic to set the correct sorting direction
index d305af3c02a81788f5e98399120c0ad49f52f7d1..6819fa4814e84477a3980878a1f144ff36397533 100644 (file)
@@ -31,7 +31,7 @@ return [
     |
     */
 
-    'url' => env('APP_URL', 'http://localhost'),
+    'url' => env('APP_URL', '') === 'http://bookstack.dev' ? '' : env('APP_URL', ''),
 
     /*
     |--------------------------------------------------------------------------
index d09912c37d97d3963fea869a4b752e92f2fd770c..e9ed436c5e8058b226715a381cc9ba23565307ee 100644 (file)
     <!-- Styles and Fonts -->
     <link rel="stylesheet" href="{{ versioned_asset('css/styles.css') }}">
     <link rel="stylesheet" media="print" href="{{ versioned_asset('css/print-styles.css') }}">
-    <link rel="stylesheet" href="/libs/material-design-iconic-font/css/material-design-iconic-font.min.css">
+    <link rel="stylesheet" href="{{ baseUrl('/libs/material-design-iconic-font/css/material-design-iconic-font.min.css') }}">
 
     <!-- Scripts -->
-    <script src="/libs/jquery/jquery.min.js?version=2.1.4"></script>
-    <script src="/libs/jquery/jquery-ui.min.js?version=1.11.4"></script>
+    <script src="{{ baseUrl('/libs/jquery/jquery.min.js?version=2.1.4') }}"></script>
+    <script src="{{ baseUrl('/libs/jquery/jquery-ui.min.js?version=1.11.4') }}"></script>
 
     @yield('head')
 
         <div class="container">
             <div class="row">
                 <div class="col-lg-4 col-sm-4" ng-non-bindable>
-                    <a href="/" class="logo">
+                    <a href="{{ baseUrl('/') }}" class="logo">
                         @if(setting('app-logo', '') !== 'none')
-                            <img class="logo-image" src="{{ setting('app-logo', '') === '' ? '/logo.png' : setting('app-logo', '') }}" alt="Logo">
+                            <img class="logo-image" src="{{ setting('app-logo', '') === '' ? baseUrl('/logo.png') : baseUrl(setting('app-logo', '')) }}" alt="Logo">
                         @endif
                         <span class="logo-text">{{ setting('app-name', 'BookStack') }}</span>
                     </a>
                 </div>
                 <div class="col-lg-4 col-sm-3 text-center">
-                    <form action="/search/all" method="GET" class="search-box">
+                    <form action="{{ baseUrl('/search/all') }}" method="GET" class="search-box">
                         <input id="header-search-box-input" type="text" name="term" tabindex="2" value="{{ isset($searchTerm) ? $searchTerm : '' }}">
                         <button id="header-search-box-button" type="submit" class="text-button"><i class="zmdi zmdi-search"></i></button>
                     </form>
                 <div class="col-lg-4 col-sm-5">
                     <div class="float right">
                         <div class="links text-center">
-                            <a href="/books"><i class="zmdi zmdi-book"></i>Books</a>
+                            <a href="{{ baseUrl('/books') }}"><i class="zmdi zmdi-book"></i>Books</a>
                             @if(isset($currentUser) && userCan('settings-manage'))
-                                <a href="/settings"><i class="zmdi zmdi-settings"></i>Settings</a>
+                                <a href="{{ baseUrl('/settings') }}"><i class="zmdi zmdi-settings"></i>Settings</a>
                             @endif
                             @if(!isset($signedIn) || !$signedIn)
-                                <a href="/login"><i class="zmdi zmdi-sign-in"></i>Sign In</a>
+                                <a href="{{ baseUrl('/login') }}"><i class="zmdi zmdi-sign-in"></i>Sign In</a>
                             @endif
                         </div>
                         @if(isset($signedIn) && $signedIn)
                                 </span>
                                 <ul>
                                     <li>
-                                        <a href="/user/{{$currentUser->id}}" class="text-primary"><i class="zmdi zmdi-account zmdi-hc-fw zmdi-hc-lg"></i>View Profile</a>
+                                        <a href="{{ baseUrl("/user/{$currentUser->id}") }}" class="text-primary"><i class="zmdi zmdi-account zmdi-hc-fw zmdi-hc-lg"></i>View Profile</a>
                                     </li>
                                     <li>
-                                        <a href="/settings/users/{{$currentUser->id}}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-fw zmdi-hc-lg"></i>Edit Profile</a>
+                                        <a href="{{ baseUrl("/settings/users/{$currentUser->id}") }}" class="text-primary"><i class="zmdi zmdi-edit zmdi-hc-fw zmdi-hc-lg"></i>Edit Profile</a>
                                     </li>
                                     <li>
-                                        <a href="/logout" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-fw zmdi-hc-lg"></i>Logout</a>
+                                        <a href="{{ baseUrl('/logout') }}" class="text-neg"><i class="zmdi zmdi-run zmdi-hc-fw zmdi-hc-lg"></i>Logout</a>
                                     </li>
                                 </ul>
                             </div>
Morty Proxy This is a proxified and sanitized view of the page, visit original site.