Updated views for permissions and added notifications. Fixes #2 and #7

This commit is contained in:
Dan Brown 2015-08-29 16:00:19 +01:00
parent ae95d0a239
commit f37a886205
9 changed files with 141 additions and 14 deletions

View File

@ -3,6 +3,7 @@
use Illuminate\Support\Facades\Auth;
use Oxbow\Activity;
use Oxbow\Entity;
use Session;
class ActivityService
{
@ -35,6 +36,7 @@ class ActivityService
$this->activity->extra = $extra;
}
$entity->activity()->save($this->activity);
$this->setNotification($activityKey);
}
/**
@ -52,8 +54,10 @@ class ActivityService
$this->activity->extra = $extra;
}
$this->activity->save();
$this->setNotification($activityKey);
}
/**
* Removes the entity attachment from each of its activities
* and instead uses the 'extra' field with the entities name.
@ -84,4 +88,17 @@ class ActivityService
->skip($count*$page)->take($count)->get();
}
/**
* Flashes a notification message to the session if an appropriate message is available.
* @param $activityKey
*/
protected function setNotification($activityKey)
{
$notificationTextKey = 'activities.' . $activityKey . '_notification';
if (trans()->has($notificationTextKey)) {
$message = trans($notificationTextKey);
Session::flash('success', $message);
}
}
}

View File

@ -14,4 +14,27 @@
100% {
opacity: 1;
}
}
.anim.notification {
transform: translate3d(580px, 0, 0);
animation-name: notification;
animation-duration: 3s;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
}
@keyframes notification {
0% {
transform: translate3d(580px, 0, 0);
}
10% {
transform: translate3d(0, 0, 0);
}
90% {
transform: translate3d(0, 0, 0);
}
100% {
transform: translate3d(580px, 0, 0);
}
}

View File

@ -452,4 +452,37 @@ body.dragging, body.dragging * {
.avatar {
border-radius: 100%;
}
.notification {
position: fixed;
top: 0;
right: 0;
margin: $-xl*2 $-xl;
padding: $-l $-xl;
background-color: #EEE;
border-radius: 3px;
box-shadow: $bs-med;
z-index: 99999999;
display: table;
cursor: pointer;
max-width: 480px;
i, span {
display: table-cell;
}
i {
font-size: 2em;
padding-right: $-l;
}
span {
vertical-align: middle;
}
&.pos {
background-color: $positive;
color: #EEE;
}
&.neg {
background-color: $negative;
color: #EEE;
}
}

View File

@ -9,19 +9,30 @@ return [
// Pages
'page_create' => 'created page',
'page_create_notification' => 'Page Successfully Created',
'page_update' => 'updated page',
'page_update_notification' => 'Page Successfully Updated',
'page_delete' => 'deleted page',
'page_delete_notification' => 'Page Successfully Created',
'page_restore' => 'restored page',
'page_restore_notification' => 'Page Successfully Restored',
// Chapters
'chapter_create' => 'created chapter',
'chapter_create_notification' => 'Chapter Successfully Created',
'chapter_update' => 'updated chapter',
'chapter_update_notification' => 'Chapter Successfully Updated',
'chapter_delete' => 'deleted chapter',
'chapter_delete_notification' => 'Chapter Successfully Deleted',
// Books
'book_create' => 'created book',
'book_create_notification' => 'Book Successfully Created',
'book_update' => 'updated book',
'book_update_notification' => 'Book Successfully Updated',
'book_delete' => 'deleted book',
'book_delete_notification' => 'Book Successfully Deleted',
'book_sort' => 'sorted book',
'book_sort_notification' => 'Book Successfully Re-sorted',
];

View File

@ -2,12 +2,17 @@
<html>
<head>
<title>BookStack</title>
<!-- Meta-->
<meta name="viewport" content="width=device-width">
<meta name="token" content="{{ csrf_token() }}">
<!-- Styles and Fonts -->
<link rel="stylesheet" href="/css/app.css">
<link href='//fonts.googleapis.com/css?family=Roboto:400,400italic,500,500italic,700,700italic,300italic,100,300' rel='stylesheet' type='text/css'>
{{--<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">--}}
<link rel="stylesheet" href="/bower/material-design-iconic-font/dist/css/material-design-iconic-font.min.css">
<!-- Scripts -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="/bower/bootstrap/dist/js/bootstrap.js"></script>
<script src="/bower/jquery-sortable/source/js/jquery-sortable.js"></script>
@ -27,10 +32,23 @@
};
});
</script>
@yield('head')
</head>
<body>
@if(Session::has('success'))
<div class="notification anim pos">
<i class="zmdi zmdi-mood"></i> <span>{{ Session::get('success') }}</span>
</div>
@endif
@if(Session::has('error'))
<div class="notification anim neg">
<i class="zmdi zmdi-alert-circle"></i> <span>{{ Session::get('error') }}</span>
</div>
@endif
<section id="sidebar">
<div class="sidebar-bg"><div class="overlay"></div></div>
<header>
@ -69,5 +87,10 @@
</section>
@yield('bottom')
<script>
$('.notification').click(function() {
$(this).fadeOut(100);
});
</script>
</body>
</html>

View File

@ -7,7 +7,9 @@
<div class="col-md-6"></div>
<div class="col-md-6 faded">
<div class="action-buttons">
<a href="/books/create" class="text-pos"><i class="zmdi zmdi-plus"></i>Add new book</a>
@if($currentUser->can('book-create'))
<a href="/books/create" class="text-pos"><i class="zmdi zmdi-plus"></i>Add new book</a>
@endif
</div>
</div>
</div>

View File

@ -6,11 +6,19 @@
<div class="col-md-6"></div>
<div class="col-md-6">
<div class="action-buttons faded">
<a href="{{$book->getUrl() . '/page/create'}}" class="text-pos"><i class="zmdi zmdi-plus"></i> New Page</a>
<a href="{{$book->getUrl() . '/chapter/create'}}" class="text-pos"><i class="zmdi zmdi-plus"></i> New Chapter</a>
<a href="{{$book->getEditUrl()}}" class="text-primary"><i class="zmdi zmdi-edit"></i>Edit</a>
<a href="{{ $book->getUrl() }}/sort" class="text-primary"><i class="zmdi zmdi-sort"></i>Sort</a>
<a href="{{ $book->getUrl() }}/delete" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete</a>
@if($currentUser->can('page-create'))
<a href="{{$book->getUrl() . '/page/create'}}" class="text-pos"><i class="zmdi zmdi-plus"></i> New Page</a>
@endif
@if($currentUser->can('chapter-create'))
<a href="{{$book->getUrl() . '/chapter/create'}}" class="text-pos"><i class="zmdi zmdi-plus"></i> New Chapter</a>
@endif
@if($currentUser->can('book-update'))
<a href="{{$book->getEditUrl()}}" class="text-primary"><i class="zmdi zmdi-edit"></i>Edit</a>
<a href="{{ $book->getUrl() }}/sort" class="text-primary"><i class="zmdi zmdi-sort"></i>Sort</a>
@endif
@if($currentUser->can('book-delete'))
<a href="{{ $book->getUrl() }}/delete" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete</a>
@endif
</div>
</div>
</div>

View File

@ -10,9 +10,15 @@
</div>
<div class="col-md-6 faded">
<div class="action-buttons">
<a href="{{$chapter->getUrl() . '/create-page'}}" class="text-pos"><i class="zmdi zmdi-plus"></i>New Page</a>
<a href="{{$chapter->getUrl() . '/edit'}}" class="text-primary"><i class="zmdi zmdi-edit"></i>Edit</a>
<a href="{{$chapter->getUrl() . '/delete'}}" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete</a>
@if($currentUser->can('chapter-create'))
<a href="{{$chapter->getUrl() . '/create-page'}}" class="text-pos"><i class="zmdi zmdi-plus"></i>New Page</a>
@endif
@if($currentUser->can('chapter-update'))
<a href="{{$chapter->getUrl() . '/edit'}}" class="text-primary"><i class="zmdi zmdi-edit"></i>Edit</a>
@endif
@if($currentUser->can('chapter-delete'))
<a href="{{$chapter->getUrl() . '/delete'}}" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete</a>
@endif
</div>
</div>
</div>
@ -33,7 +39,7 @@
</a>
</h3>
<p class="text-muted">
{{$page->getExcerpt()}}
{{$page->getExcerpt(180)}}
</p>
</div>
<hr>

View File

@ -17,9 +17,13 @@
</div>
<div class="col-md-6 faded">
<div class="action-buttons">
<a href="{{$page->getUrl() . '/revisions'}}" class="text-primary"><i class="zmdi zmdi-replay"></i>Revisions</a>
<a href="{{$page->getUrl() . '/edit'}}" class="text-primary" ><i class="zmdi zmdi-edit"></i>Edit</a>
<a href="{{$page->getUrl() . '/delete'}}" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete</a>
@if($currentUser->can('page-update'))
<a href="{{$page->getUrl() . '/revisions'}}" class="text-primary"><i class="zmdi zmdi-replay"></i>Revisions</a>
<a href="{{$page->getUrl() . '/edit'}}" class="text-primary" ><i class="zmdi zmdi-edit"></i>Edit</a>
@endif
@if($currentUser->can('page-delete'))
<a href="{{$page->getUrl() . '/delete'}}" class="text-neg"><i class="zmdi zmdi-delete"></i>Delete</a>
@endif
</div>
</div>
</div>