--- /dev/null
+<?php
+
+namespace Oxbow\Http\Controllers;
+
+use Illuminate\Http\Request;
+
+use Oxbow\Http\Requests;
+use Oxbow\Http\Controllers\Controller;
+use Oxbow\Repos\BookRepo;
+use Oxbow\Services\ActivityService;
+use Oxbow\Services\Facades\Activity;
+
+class HomeController extends Controller
+{
+
+ protected $activityService;
+ protected $bookRepo;
+
+ /**
+ * HomeController constructor.
+ * @param ActivityService $activityService
+ * @param BookRepo $bookRepo
+ */
+ public function __construct(ActivityService $activityService, BookRepo $bookRepo)
+ {
+ $this->activityService = $activityService;
+ $this->bookRepo = $bookRepo;
+ }
+
+
+ /**
+ * Display the homepage.
+ *
+ * @return Response
+ */
+ public function index()
+ {
+ $books = $this->bookRepo->getAll();
+ $activity = $this->activityService->latest();
+ return view('home', ['books' => $books, 'activity' => $activity]);
+ }
+
+}
// Search
Route::get('/pages/search/all', 'PageController@searchAll');
- Route::get('/', function () {
- return view('home');
- });
- Route::get('/home', function () {
- return view('home');
- });
+ // Other Pages
+ Route::get('/', 'HomeController@index');
+ Route::get('/home', 'HomeController@index');
});
$this->user = Auth::user();
}
-
/**
* Add activity data to database.
* @para Entity $entity
$this->activity->save();
}
+ /**
+ * Gets the latest activity.
+ * @param int $count
+ * @param int $page
+ */
+ public function latest($count = 20, $page = 0)
+ {
+ return $this->activity->orderBy('created_at', 'desc')
+ ->skip($count*$page)->take($count)->get();
+ }
+
}
\ No newline at end of file
"tinymce-dist": "~4.2.1",
"bootstrap": "~3.3.5",
"jquery-sortable": "~0.9.13",
- "material-design-iconic-font": "~2.1.1"
+ "material-design-iconic-font": "~2.1.1",
+ "vue": "~0.12.10"
}
}
"laravel-elixir-livereload": "0.0.3"
},
"dependencies": {
- "laravel-elixir": "^2.0.0",
- "bootstrap-sass": "^3.0.0"
+ "bootstrap-sass": "^3.0.0",
+ "laravel-elixir": "^2.0.0"
}
}
}
.logo-container {
- padding: $-xl $-s $-l $-s;
+ padding: $-l $-s;
color: #CCC;
.logo {
+ display: block;
font-size: 2em;
font-weight: bold;
- margin-bottom: $-m;
+ padding: $-m 0;
}
i {
padding-right: $-s;
input {
width: 100%;
border-radius: 0;
- padding: $-s $-m;
+ padding: $-m;
background-color: rgba(0, 0, 0, 0.1);
border: none;
border-top: 1px solid #333;
border-bottom: 1px solid #333;
+ color: #EEE;
}
}
'book_create' => 'created book',
'book_update' => 'updated book',
'book_delete' => 'deleted book',
+ 'book_sort' => 'sorted book',
];
\ No newline at end of file
<script src="/bower/bootstrap/dist/js/bootstrap.js"></script>
<script src="/bower/jquery-sortable/source/js/jquery-sortable.js"></script>
<script src="/bower/dropzone/dist/min/dropzone.min.js"></script>
- <script src="http://cdnjs.cloudflare.com/ajax/libs/vue/0.12.10/vue.min.js"></script>
+ <script src="/bower/vue/dist/vue.min.js"></script>
<script>
$.fn.smoothScrollTo = function() {
if(this.length === 0) return;
<header>
<div class="padded row clearfix">
<div class="col-md-12 logo-container">
- {{--<div ><img class="logo float left" src="/bookstack.svg" alt="BookStack"></div>--}}
- <div class="logo">BookStack</div>
- <div><i class="zmdi zmdi-account"></i> {{ \Illuminate\Support\Facades\Auth::user()->name }}</div>
+ <a href="/" class="logo">BookStack</a>
+ <div><i class="zmdi zmdi-account"></i> {{ Auth::user()->name }}</div>
</div>
</div>
</header>
<div class="col-md-3 col-md-offset-1">
<div class="margin-top large"><br></div>
<h3>Recent Activity</h3>
- @include('partials/activity-list', ['entity' => $book])
+ @include('partials/activity-list', ['activity' => $book->recentActivity()])
</div>
</div>
@extends('base')
@section('content')
- <div id="container"></div>
-@stop
+ <div class="row">
+ <div class="col-md-6 col-md-offset-1">
+ <div class="page-content">
+ <h2>Books</h2>
+ @foreach($books as $book)
+ <div class="book">
+ <h3><a href="{{$book->getUrl()}}">{{$book->name}}</a></h3>
+ <p class="text-muted">{{$book->description}}</p>
+ </div>
+ <hr>
+ @endforeach
+ </div>
+ </div>
+ <div class="col-md-3 col-md-offset-1">
+ <div class="margin-top large"> </div>
+ <h3>Recent Activity</h3>
+ @include('partials/activity-list', ['activity' => $activity])
+ </div>
+ </div>
-@section('bottom')
- @include('pages/image-manager')
- <div id="image-manager-container"></div>
- <script src="/js/image-manager.js"></script>
- <script>
- window.ImageManager.show();
- </script>
@stop
\ No newline at end of file
@section('head')
<script src="/bower/tinymce-dist/tinymce.jquery.min.js"></script>
- <script src="/bower/dropzone/dist/min/dropzone.min.js"></script>
- <script src="/js/image-manager.js"></script>
@stop
@section('content')
@section('bottom')
@include('pages/image-manager')
+ <script src="/js/image-manager.js"></script>
@stop
\ No newline at end of file
@section('bottom')
@include('pages/image-manager')
- <div id="image-manager-container"></div>
<script src="/js/image-manager.js"></script>
@stop
\ No newline at end of file
{{--Requires an entity to be passed with the name $entity--}}
-@if(count($entity->recentActivity()) > 0)
+@if(count($activity) > 0)
<div class="activity-list">
- @foreach($entity->recentActivity() as $activity)
+ @foreach($activity as $activityItem)
<div class="activity-list-item">
- @include('partials/activity-item')
+ @include('partials/activity-item', ['activity' => $activityItem])
</div>
@endforeach
</div>