return [get_class($this), $this->id] === [get_class($entity), $entity->id];
}
+ /**
+ * Checks if an entity matches or contains another given entity.
+ * @param Entity $entity
+ * @return bool
+ */
+ public function matchesOrContains(Entity $entity)
+ {
+ $matches = [get_class($this), $this->id] === [get_class($entity), $entity->id];
+
+ if ($matches) return true;
+
+ if ($entity->isA('chapter') && $this->isA('book')) {
+ return $entity->book_id === $this->id;
+ }
+
+ if ($entity->isA('page') && $this->isA('book')) {
+ return $entity->book_id === $this->id;
+ }
+
+ if ($entity->isA('page') && $this->isA('chapter')) {
+ return $entity->chapter_id === $this->id;
+ }
+
+ return false;
+ }
+
/**
* Gets the activity objects for this entity.
* @return \Illuminate\Database\Eloquent\Relations\MorphMany
$search = $search->with('book');
}
- if(static::isA('page')) {
+ if (static::isA('page')) {
$search = $search->with('chapter');
}
color: $color-chapter;
}
.inset-list {
- display: block;
+ display: none;
overflow: hidden;
// padding-left: $-m;
margin-bottom: $-l;
margin: 0 0 $-l 0;
transition: all ease-in-out 180ms;
user-select: none;
- i {
+ i.zmdi-caret-right {
transition: all ease-in-out 180ms;
transform: rotate(0deg);
transform-origin: 25% 50%;
&.open {
margin-bottom: 0;
}
- &.open i {
+ &.open i.zmdi-caret-right {
transform: rotate(90deg);
}
}
background-color: rgba($color-chapter, 0.12);
}
}
+ .chapter-toggle {
+ padding-left: $-s;
+ }
.list-item-chapter {
border-left: 5px solid $color-chapter;
margin: 10px 10px;
background-color: rgba($color-page, 0.1);
}
}
+ .sub-menu {
+ display: none;
+ }
+ .sub-menu.open {
+ display: block;
+ }
}
// Sortable Lists
@endif
@if(count($chapter->pages) > 0 && !isset($hidePages))
- <p class="text-muted chapter-toggle open"><i class="zmdi zmdi-caret-right"></i> {{ count($chapter->pages) }} Pages</p>
+ <p class="text-muted chapter-toggle"><i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ count($chapter->pages) }} Pages</span></p>
<div class="inset-list">
@foreach($chapter->pages as $page)
<h4><a href="{{$page->getUrl()}}"><i class="zmdi zmdi-file-text"></i>{{$page->name}}</a></h4>
<h6 class="text-muted">Book Navigation</h6>
<ul class="sidebar-page-list menu">
<li class="book-header"><a href="{{$book->getUrl()}}" class="book {{ $current->matches($book)? 'selected' : '' }}"><i class="zmdi zmdi-book"></i>{{$book->name}}</a></li>
+
+
@foreach($sidebarTree as $bookChild)
- <li class="list-item-{{ $bookChild->getName() }}">
+ <li class="list-item-{{ $bookChild->getName() }} {{ $bookChild->getName() }}">
<a href="{{$bookChild->getUrl()}}" class="{{ $bookChild->getName() }} {{ $current->matches($bookChild)? 'selected' : '' }}">
@if($bookChild->isA('chapter'))<i class="zmdi zmdi-collection-bookmark"></i>@else <i class="zmdi zmdi-file-text"></i>@endif{{ $bookChild->name }}
</a>
@if($bookChild->isA('chapter') && count($bookChild->pages) > 0)
- <ul class="menu">
+ <p class="text-muted chapter-toggle @if($bookChild->matchesOrContains($current)) open @endif">
+ <i class="zmdi zmdi-caret-right"></i> <i class="zmdi zmdi-file-text"></i> <span>{{ count($bookChild->pages) }} Pages</span>
+ </p>
+ <ul class="menu sub-menu inset-list @if($bookChild->matchesOrContains($current)) open @endif">
@foreach($bookChild->pages as $childPage)
<li class="list-item-page">
<a href="{{$childPage->getUrl()}}" class="page {{ $current->matches($childPage)? 'selected' : '' }}">
@endforeach
</ul>
@endif
+
+
</li>
@endforeach
+
+
</ul>
</div>