#29: Number of improvements to Labels to show the count and thumbnail correctly based on the allowed albums
This commit is contained in:
parent
3254ca1500
commit
d9d43e9c29
@ -9,7 +9,11 @@ use Illuminate\Support\Facades\Auth;
|
|||||||
|
|
||||||
class DbHelper
|
class DbHelper
|
||||||
{
|
{
|
||||||
|
private static $allowedAlbumIDs = null;
|
||||||
|
|
||||||
public static function getAlbumIDsForCurrentUser()
|
public static function getAlbumIDsForCurrentUser()
|
||||||
|
{
|
||||||
|
if (is_null(self::$allowedAlbumIDs))
|
||||||
{
|
{
|
||||||
$query = self::getAlbumsForCurrentUser_NonPaged();
|
$query = self::getAlbumsForCurrentUser_NonPaged();
|
||||||
$query->select('albums.id');
|
$query->select('albums.id');
|
||||||
@ -21,7 +25,10 @@ class DbHelper
|
|||||||
$ids[] = $album->id;
|
$ids[] = $album->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $ids;
|
self::$allowedAlbumIDs = $ids;
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$allowedAlbumIDs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getAlbumsForCurrentUser($parentID = -1)
|
public static function getAlbumsForCurrentUser($parentID = -1)
|
||||||
|
@ -15,7 +15,14 @@ class LabelController extends Controller
|
|||||||
{
|
{
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$labels = Label::withCount('photos')->orderBy('name')->get();
|
$labels = Label::orderBy('name')->get();
|
||||||
|
|
||||||
|
/** @var Label $label */
|
||||||
|
foreach ($labels as $label)
|
||||||
|
{
|
||||||
|
$label->photos_count = $label->photoCount();
|
||||||
|
}
|
||||||
|
|
||||||
return Theme::render('gallery.labels', ['labels' => $labels]);
|
return Theme::render('gallery.labels', ['labels' => $labels]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,9 +69,46 @@ class GlobalConfiguration
|
|||||||
{
|
{
|
||||||
$NUMBER_TO_SHOW_IN_NAVBAR = 5;
|
$NUMBER_TO_SHOW_IN_NAVBAR = 5;
|
||||||
$labelCount = Label::count();
|
$labelCount = Label::count();
|
||||||
$labels = Label::withCount('photos')->orderBy('photos_count', 'desc')->limit($NUMBER_TO_SHOW_IN_NAVBAR)->get();
|
$labels = Label::all();
|
||||||
|
$labelsToAdd = [];
|
||||||
|
|
||||||
View::share('g_labels', $labels);
|
/** @var Label $label */
|
||||||
|
foreach ($labels as $label)
|
||||||
|
{
|
||||||
|
$label->photos_count = $label->photoCount();
|
||||||
|
$labelsToAdd[] = $label;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sort my photo count, then name
|
||||||
|
usort($labelsToAdd, function(Label $a, Label $b)
|
||||||
|
{
|
||||||
|
if ($a->photos_count == $b->photos_count)
|
||||||
|
{
|
||||||
|
if ($a->name == $b->name)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if ($a->name < $b->name)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if ($a->name > $b->name)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($a->photos_count < $b->photos_count)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if ($a->photos_count > $b->photos_count)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$labelsToAdd = array_slice(array_reverse($labelsToAdd), 0, $NUMBER_TO_SHOW_IN_NAVBAR);
|
||||||
|
|
||||||
|
View::share('g_labels', $labelsToAdd);
|
||||||
View::share('g_more_labels', $labelCount - $NUMBER_TO_SHOW_IN_NAVBAR);
|
View::share('g_more_labels', $labelCount - $NUMBER_TO_SHOW_IN_NAVBAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App;
|
namespace App;
|
||||||
|
|
||||||
|
use App\Helpers\DbHelper;
|
||||||
use App\Helpers\MiscHelper;
|
use App\Helpers\MiscHelper;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
@ -21,6 +22,11 @@ class Label extends Model
|
|||||||
$this->url_alias = preg_replace('/[^a-z0-9\-]/', '-', strtolower($this->name));
|
$this->url_alias = preg_replace('/[^a-z0-9\-]/', '-', strtolower($this->name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function photoCount()
|
||||||
|
{
|
||||||
|
return $this->photos()->whereIn('album_id', DbHelper::getAlbumIDsForCurrentUser())->count();
|
||||||
|
}
|
||||||
|
|
||||||
public function photos()
|
public function photos()
|
||||||
{
|
{
|
||||||
return $this->belongsToMany(Photo::class, 'photo_labels');
|
return $this->belongsToMany(Photo::class, 'photo_labels');
|
||||||
@ -29,6 +35,7 @@ class Label extends Model
|
|||||||
public function thumbnailUrl($thumbnailName)
|
public function thumbnailUrl($thumbnailName)
|
||||||
{
|
{
|
||||||
$photo = $this->photos()
|
$photo = $this->photos()
|
||||||
|
->whereIn('album_id', DbHelper::getAlbumIDsForCurrentUser())
|
||||||
->inRandomOrder()
|
->inRandomOrder()
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
<span style="font-size: 1.3em;">
|
<span style="font-size: 1.3em;">
|
||||||
<a href="{{ $label->url() }}">{{ $label->name }}</a>
|
<a href="{{ $label->url() }}">{{ $label->name }}</a>
|
||||||
</span><br/>
|
</span><br/>
|
||||||
<p style="margin-bottom: 0;"><b>{{ $label->photos_count }}</b> {{ trans_choice('gallery.photos', $label->photos_count) }}</p>
|
<p style="margin-bottom: 0;"><b>{{ number_format($label->photos_count, 0) }}</b> {{ trans_choice('gallery.photos', $label->photos_count) }}</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
</li>
|
</li>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@if ($g_labels->count() > 0)
|
@if (count($g_labels) > 0)
|
||||||
<li class="nav-item dropdown ml-2">
|
<li class="nav-item dropdown ml-2">
|
||||||
<a class="nav-link dropdown-toggle" href="{{ url('/') }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
<a class="nav-link dropdown-toggle" href="{{ url('/') }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<i class="fa fa-tags"></i> @lang('navigation.navbar.labels')
|
<i class="fa fa-tags"></i> @lang('navigation.navbar.labels')
|
||||||
|
Loading…
Reference in New Issue
Block a user