Initial Draft
This commit is contained in:
		
							parent
							
								
									1c922be4c7
								
							
						
					
					
						commit
						88e148ba00
					
				| 
						 | 
					@ -18,8 +18,8 @@ use Illuminate\Http\Request;
 | 
				
			||||||
class HomeController extends Controller
 | 
					class HomeController extends Controller
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Display the homepage.
 | 
					    * Display the homepage.
 | 
				
			||||||
     */
 | 
					    */
 | 
				
			||||||
    public function index(Request $request, ActivityQueries $activities)
 | 
					    public function index(Request $request, ActivityQueries $activities)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $activity = $activities->latest(10);
 | 
					        $activity = $activities->latest(10);
 | 
				
			||||||
| 
						 | 
					@ -27,25 +27,25 @@ class HomeController extends Controller
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if ($this->isSignedIn()) {
 | 
					        if ($this->isSignedIn()) {
 | 
				
			||||||
            $draftPages = Page::visible()
 | 
					            $draftPages = Page::visible()
 | 
				
			||||||
                ->where('draft', '=', true)
 | 
					            ->where('draft', '=', true)
 | 
				
			||||||
                ->where('created_by', '=', user()->id)
 | 
					            ->where('created_by', '=', user()->id)
 | 
				
			||||||
                ->orderBy('updated_at', 'desc')
 | 
					            ->orderBy('updated_at', 'desc')
 | 
				
			||||||
                ->with('book')
 | 
					            ->with('book')
 | 
				
			||||||
                ->take(6)
 | 
					            ->take(6)
 | 
				
			||||||
                ->get();
 | 
					            ->get();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        $recentFactor = count($draftPages) > 0 ? 0.5 : 1;
 | 
					        $recentFactor = count($draftPages) > 0 ? 0.5 : 1;
 | 
				
			||||||
        $recents = $this->isSignedIn() ?
 | 
					        $recents = $this->isSignedIn() ?
 | 
				
			||||||
            (new RecentlyViewed())->run(12 * $recentFactor, 1)
 | 
					        (new RecentlyViewed())->run(12 * $recentFactor, 1)
 | 
				
			||||||
            : Book::visible()->orderBy('created_at', 'desc')->take(12 * $recentFactor)->get();
 | 
					        : Book::visible()->orderBy('created_at', 'desc')->take(12 * $recentFactor)->get();
 | 
				
			||||||
        $favourites = (new TopFavourites())->run(6);
 | 
					        $favourites = (new TopFavourites())->run(6);
 | 
				
			||||||
        $recentlyUpdatedPages = Page::visible()->with('book')
 | 
					        $recentlyUpdatedPages = Page::visible()->with('book')
 | 
				
			||||||
            ->where('draft', false)
 | 
					        ->where('draft', false)
 | 
				
			||||||
            ->orderBy('updated_at', 'desc')
 | 
					        ->orderBy('updated_at', 'desc')
 | 
				
			||||||
            ->take($favourites->count() > 0 ? 5 : 10)
 | 
					        ->take($favourites->count() > 0 ? 5 : 10)
 | 
				
			||||||
            ->select(Page::$listAttributes)
 | 
					        ->select(Page::$listAttributes)
 | 
				
			||||||
            ->get();
 | 
					        ->get();
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        $homepageOptions = ['default', 'books', 'bookshelves', 'page'];
 | 
					        $homepageOptions = ['default', 'books', 'bookshelves', 'page'];
 | 
				
			||||||
        $homepageOption = setting('app-homepage-type', 'default');
 | 
					        $homepageOption = setting('app-homepage-type', 'default');
 | 
				
			||||||
| 
						 | 
					@ -106,8 +106,8 @@ class HomeController extends Controller
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Show the view for /robots.txt.
 | 
					    * Show the view for /robots.txt.
 | 
				
			||||||
     */
 | 
					    */
 | 
				
			||||||
    public function robots()
 | 
					    public function robots()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $sitePublic = setting('app-public', false);
 | 
					        $sitePublic = setting('app-public', false);
 | 
				
			||||||
| 
						 | 
					@ -118,26 +118,90 @@ class HomeController extends Controller
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        return response()
 | 
					        return response()
 | 
				
			||||||
            ->view('misc.robots', ['allowRobots' => $allowRobots])
 | 
					        ->view('misc.robots', ['allowRobots' => $allowRobots])
 | 
				
			||||||
            ->header('Content-Type', 'text/plain');
 | 
					        ->header('Content-Type', 'text/plain');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Show the route for 404 responses.
 | 
					    * Show the route for 404 responses.
 | 
				
			||||||
     */
 | 
					    */
 | 
				
			||||||
    public function notFound()
 | 
					    public function notFound()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return response()->view('errors.404', [], 404);
 | 
					        return response()->view('errors.404', [], 404);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Serve the application favicon.
 | 
					    * Serve the application favicon.
 | 
				
			||||||
     * Ensures a 'favicon.ico' file exists at the web root location (if writable) to be served
 | 
					    * Ensures a 'favicon.ico' file exists at the web root location (if writable) to be served
 | 
				
			||||||
     * directly by the webserver in the future.
 | 
					    * directly by the webserver in the future.
 | 
				
			||||||
     */
 | 
					    */
 | 
				
			||||||
    public function favicon(FaviconHandler $favicons)
 | 
					    public function favicon(FaviconHandler $favicons)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $exists = $favicons->restoreOriginalIfNotExists();
 | 
					        $exists = $favicons->restoreOriginalIfNotExists();
 | 
				
			||||||
        return response()->file($exists ? $favicons->getPath() : $favicons->getOriginalPath());
 | 
					        return response()->file($exists ? $favicons->getPath() : $favicons->getOriginalPath());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					    * Serve the application manifest.
 | 
				
			||||||
 | 
					    * Ensures a 'manifest.json'
 | 
				
			||||||
 | 
					    */
 | 
				
			||||||
 | 
					    public function manifest()
 | 
				
			||||||
 | 
					    {   
 | 
				
			||||||
 | 
					        $manifest = [
 | 
				
			||||||
 | 
					            "name" => config('app.name' | 'BookStack'), 
 | 
				
			||||||
 | 
					            "short_name" => "bookstack", 
 | 
				
			||||||
 | 
					            "start_url" => "/", 
 | 
				
			||||||
 | 
					            "scope" => "/", 
 | 
				
			||||||
 | 
					            "display" => "standalone", 
 | 
				
			||||||
 | 
					            "background_color" => "#fff", 
 | 
				
			||||||
 | 
					            "description" => config('app.name' | 'BookStack'), 
 | 
				
			||||||
 | 
					            "categories" => [
 | 
				
			||||||
 | 
					                "productivity", 
 | 
				
			||||||
 | 
					                "lifestyle" 
 | 
				
			||||||
 | 
					            ], 
 | 
				
			||||||
 | 
					            "launch_handler" => [
 | 
				
			||||||
 | 
					                "client_mode" => "focus-existing" 
 | 
				
			||||||
 | 
					            ], 
 | 
				
			||||||
 | 
					            "orientation" => "portrait", 
 | 
				
			||||||
 | 
					            "icons" => [
 | 
				
			||||||
 | 
					                [
 | 
				
			||||||
 | 
					                    "src" => "/icon-64.png", 
 | 
				
			||||||
 | 
					                    "sizes" => "64x64", 
 | 
				
			||||||
 | 
					                    "type" => "image/png" 
 | 
				
			||||||
 | 
					                ], 
 | 
				
			||||||
 | 
					                [
 | 
				
			||||||
 | 
					                    "src" => "/icon-32.png", 
 | 
				
			||||||
 | 
					                    "sizes" => "32x32", 
 | 
				
			||||||
 | 
					                    "type" => "image/png" 
 | 
				
			||||||
 | 
					                ], 
 | 
				
			||||||
 | 
					                [
 | 
				
			||||||
 | 
					                    "src" => "/icon-128.png", 
 | 
				
			||||||
 | 
					                    "sizes" => "128x128", 
 | 
				
			||||||
 | 
					                    "type" => "image/png" 
 | 
				
			||||||
 | 
					                ], 
 | 
				
			||||||
 | 
					                [
 | 
				
			||||||
 | 
					                    "src" => "icon-180.png", 
 | 
				
			||||||
 | 
					                    "sizes" => "180x180", 
 | 
				
			||||||
 | 
					                    "type" => "image/png" 
 | 
				
			||||||
 | 
					                ], 
 | 
				
			||||||
 | 
					                [
 | 
				
			||||||
 | 
					                    "src" => "icon.png", 
 | 
				
			||||||
 | 
					                    "sizes" => "256x256", 
 | 
				
			||||||
 | 
					                    "type" => "image/png" 
 | 
				
			||||||
 | 
					                ], 
 | 
				
			||||||
 | 
					                [
 | 
				
			||||||
 | 
					                    "src" => "icon.ico", 
 | 
				
			||||||
 | 
					                    "sizes" => "48x48", 
 | 
				
			||||||
 | 
					                    "type" => "image/vnd.microsoft.icon" 
 | 
				
			||||||
 | 
					                ], 
 | 
				
			||||||
 | 
					                [
 | 
				
			||||||
 | 
					                    "src" => "favicon.ico", 
 | 
				
			||||||
 | 
					                    "sizes" => "48x48", 
 | 
				
			||||||
 | 
					                    "type" => "image/vnd.microsoft.icon" 
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        ]; 
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return response()->json($manifest);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,10 @@
 | 
				
			||||||
    <link rel="icon" type="image/png" sizes="64x64" href="{{ setting('app-icon-64') ?: url('/icon-64.png') }}">
 | 
					    <link rel="icon" type="image/png" sizes="64x64" href="{{ setting('app-icon-64') ?: url('/icon-64.png') }}">
 | 
				
			||||||
    <link rel="icon" type="image/png" sizes="32x32" href="{{ setting('app-icon-32') ?: url('/icon-32.png') }}">
 | 
					    <link rel="icon" type="image/png" sizes="32x32" href="{{ setting('app-icon-32') ?: url('/icon-32.png') }}">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- PWA -->
 | 
				
			||||||
 | 
					    <link rel="manifest" href="{{ url('/manifest.json') }}" />
 | 
				
			||||||
 | 
					    <meta name="mobile-web-app-capable" content="yes" /> 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @yield('head')
 | 
					    @yield('head')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- Custom Styles & Head Content -->
 | 
					    <!-- Custom Styles & Head Content -->
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,7 @@ use Illuminate\View\Middleware\ShareErrorsFromSession;
 | 
				
			||||||
Route::get('/status', [SettingControllers\StatusController::class, 'show']);
 | 
					Route::get('/status', [SettingControllers\StatusController::class, 'show']);
 | 
				
			||||||
Route::get('/robots.txt', [HomeController::class, 'robots']);
 | 
					Route::get('/robots.txt', [HomeController::class, 'robots']);
 | 
				
			||||||
Route::get('/favicon.ico', [HomeController::class, 'favicon']);
 | 
					Route::get('/favicon.ico', [HomeController::class, 'favicon']);
 | 
				
			||||||
 | 
					Route::get('/manifest.json', [HomeController::class, 'manifest']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Authenticated routes...
 | 
					// Authenticated routes...
 | 
				
			||||||
Route::middleware('auth')->group(function () {
 | 
					Route::middleware('auth')->group(function () {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue