Browse Source

adding

master
Björn 5 years ago
commit
ff939865be
12 changed files with 305 additions and 0 deletions
  1. +4
    -0
      .env.example
  2. +14
    -0
      .gitignore
  3. +75
    -0
      app/Controllers/PageController.php
  4. +48
    -0
      app/Repositories/PageRepository.php
  5. +31
    -0
      app/bootstrap.php
  6. +19
    -0
      composer.json
  7. +11
    -0
      public/index.php
  8. +37
    -0
      resources/views/layout.blade.php
  9. +3
    -0
      resources/views/page/404.blade.php
  10. +16
    -0
      resources/views/page/default.blade.php
  11. +47
    -0
      resources/views/partials/footer.blade.php
  12. +0
    -0
      storage/cache/.gitkeep

+ 4
- 0
.env.example View File

@ -0,0 +1,4 @@
APP_DEBUG=false
DIRECTUS_API_URL=
DIRECTUS_API_TOKEN=

+ 14
- 0
.gitignore View File

@ -0,0 +1,14 @@
composer.phar
/vendor/
/storage/cache/*
!/storage/cache/.gitkeep
/public/*
!/public/.htaccess
!/public/index.php
node_modules
.env
*.log
rysnc_exclude

+ 75
- 0
app/Controllers/PageController.php View File

@ -0,0 +1,75 @@
<?php
namespace App\Controllers;
use SuperGear\Directus\Controllers\ControllerAbstract;
use SuperGear\Repositories\Manager;
/**
* controller for page items from directus
*
*
*
* @author Björn Hase
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitlab.tentakelfabrik.de/super-gear/directus GitHub Repository
*
*/
class PageController extends ControllerAbstract
{
/** slug for home */
const HOME_SLUG = 'home';
/** default view */
protected $defaultView = 'page/default';
/**
* get home page from slug
*
*
*/
public function indexAction()
{
$repository = Manager::get('Page');
$page = $repository->findOneBySlug(self::HOME_SLUG);
if ($this->notFound($page)) {
$this->app->redirect('404');
}
$this->render($page);
}
/**
* get single page from slug
*
*
* @param string $slug
*/
public function getAction($slug)
{
$repository = Manager::get('Page');
$page = $repository->findOneBySlug($slug);
if ($this->notFound($page)) {
$this->app->redirect('404');
}
$this->render($page);
}
/**
* if page not found
*
*/
public function notFoundAction()
{
$page = [
'data' => [
'view' => 'page/404'
]
];
$this->render($page);
}
}

+ 48
- 0
app/Repositories/PageRepository.php View File

@ -0,0 +1,48 @@
<?php
namespace App\Repositories;
use SuperGear\Directus\Repositories\RepositoryAbstract;
/**
* request page items from directus
*
* @author Björn Hase
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitlab.tentakelfabrik.de/super-gear/directus GitHub Repository
*/
class PageRepository extends RepositoryAbstract
{
/** name of the collection */
protected $name = 'page';
/**
* find single page with a slug,
* page must be published
*
* @param string $slug
* @return array
*/
public function findOneBySlug($slug)
{
return $this->itemCollection->findOne($this->name, [
'filter[slug][eq]' => $slug,
'filter[status][eq]' => 'published'
]);
}
/**
* find single page with a slug,
* page must be published
*
* @param string $slug
* @return array
*/
public function findByView($view)
{
return $this->itemCollection->find($this->name, [
'filter[view][eq]' => $view,
'filter[status][eq]' => 'published'
]);
}
}

+ 31
- 0
app/bootstrap.php View File

@ -0,0 +1,31 @@
<?php
// adding functions
require_once(__DIR__.'/../src/SuperGear/Functions.php');
// adding env
$env = Dotenv\Dotenv::create(__DIR__.'/../');
$env->load();
// display all errors if debug is true
if (getenv('DEBUG') === true) {
error_reporting(E_ALL);
ini_set('display_errors', 1);
}
// create app
$app = Flight::app();
// setting view path
$app->set('flight.views.path', __DIR__.'/../resources/views');
// adding blade for templates
Flight::register('view', 'Jenssegers\Blade\Blade', [ $app->get('flight.views.path'), __DIR__.'/../resources/cache']);
Flight::map('render', function($view, $data) {
echo Flight::view()->make($view, $data);
});
// setting path
$app->set('basePath', __DIR__.'/../');
$app->set('publicPath', __DIR__.'/../public');
$app->set('storagePath', __DIR__.'/../storage');

+ 19
- 0
composer.json View File

@ -0,0 +1,19 @@
{
"name": "super-gear/directus-boilerplate",
"version": "1.0.0",
"type": "boilerplate",
"license": "MIT",
"authors": [
{ "name": "Björn Hase", "email": "me@tentakelfabrik.de" }
],
"require": {
"php": "^7.0",
"vlucas/phpdotenv": "^3.3",
"jenssegers/blade": "^1.2"
},
"autoload": {
"psr-4": {
"App\\": "app/"
}
}
}

+ 11
- 0
public/index.php View File

@ -0,0 +1,11 @@
<?php
require __DIR__.'/../vendor/autoload.php';
require __DIR__.'/../app/bootstrap.php';
// add routes
$app->route('GET /', array(new App\Controllers\PageController, 'indexAction'));
$app->route('GET /@slug', array(new App\Controllers\PageController, 'getAction'));
$app->route('GET /404', array(new App\Controllers\PageController, 'notFoundAction'));
$app->start();

+ 37
- 0
resources/views/layout.blade.php View File

@ -0,0 +1,37 @@
@inject('pageRepository', 'App\Repositories\PagenRepository')
<!doctype html>
<html lang="de-DE" class="no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Super Gear - Directus Boilerplate | {{ $page['data']['title'] }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="{{ (isset($_SERVER['HTTPS']) ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] }}" rel="canonical">
<link href="/css/styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<header id="header" class="site-header">
<nav class="group group--horizontal navbar__inner">
<ul class="group__section">
@foreach ($homeSection['data'] as $index => $data)
<li class="group__item @if ($index === 0) .current @endif">
<a href="/#{{ $data['slug'] }}">
<i class="icon icon-{{ $data['icon'] }}"></i> {{ $data['title'] }}
</a>
</li>
@endforeach
</ul>
</nav>
</header>
@section('content')
@show
@include('partials.footer')
<script src="/js/index.js"></script>
</body>
</html>

+ 3
- 0
resources/views/page/404.blade.php View File

@ -0,0 +1,3 @@
@extends('layout')
404

+ 16
- 0
resources/views/page/default.blade.php View File

@ -0,0 +1,16 @@
@extends('layout')
@inject('markdownHelper', 'SuperGear\Helpers\MarkdownHelper')
@section('content')
<main>
<header class="page__header">
<h1 class="page__title">
{{ $page['data']['title'] }}
</h1>
</header>
<div class="content">
{!! $markdownHelper->text($page['data']['content']) !!}
</div>
</main>
@endsection

+ 47
- 0
resources/views/partials/footer.blade.php View File

@ -0,0 +1,47 @@
@inject('pageRepository', 'App\Repositories\PageRepository')
@php
$pages = $pageRepository->findByView('page/page');
@endphp
<footer id="footer" class="site-footer">
<div class="site-footer__links">
<div class="container">
<div class="grid">
<div class="col-md-3">
<div class="group">
<ul class="group__section">
@foreach ($pages['data'] as $data)
<li class="group__item">
<a href="/{{ $data['slug'] }}">{{ $data['title'] }}</a>
</li>
@endforeach
</ul>
</div>
</div>
<div class="col-md-9">
<div class="group group--social-media">
<ul class="group__section">
<li class="group__item">
<a href="https://twitter.com/WarpCoreCafe" target="_blank">
<i class="icon icon-twitter"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="site-footer__note">
<div class="container">
<div class="grid">
<div class="col-12">
<p class="text-center">
Diese Seite wird durch <a href="https://directus.io/" target="_blank">Directus</a> und dem Directus PHP Client der <a href="https://tentakelfabrik.de" target="_blank">Tentakelfabrik</a> angezeigt
</p>
</div>
</div>
</div>
</div>
</footer>

+ 0
- 0
storage/cache/.gitkeep View File


Loading…
Cancel
Save