better collection handlich in backend

This commit is contained in:
Arno Kaimbacher 2018-10-04 16:41:29 +02:00
parent 324eacf061
commit 50bcae442e
24 changed files with 623 additions and 68 deletions

View file

@ -92,13 +92,12 @@ class HomeController extends Controller
/**
* show page by $page_slug.
*/
public function showPage($slug)
public function showPage($slug): View
{
// $result = $pages->findBySlug($slug);
if (!is_null(Page::query()->wherePage_slug($slug)->firstOrFail())) {
$result = Page::query()->wherePage_slug($slug)->firstOrFail();
return view('frontend.pages.index')
->withpage($result);
if (!is_null(Page::query()->where('page_slug', $slug)->firstOrFail())) {
$result = Page::query()->where('page_slug', $slug)->firstOrFail();
return view('frontend.pages.index')->withpage($result);
} else {
throw new GeneralException(trans('exceptions.backend.access.pages.not_found'));
}

View file

@ -5,6 +5,8 @@ use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Models\Collection;
use App\Models\CollectionRole;
use App\Http\Requests\Collection\CollectionRequest;
class CollectionController extends Controller
{
@ -52,12 +54,17 @@ class CollectionController extends Controller
/**
* Display the specified resource.
*
* @param int $id
* @param Collection $collection
* @return \Illuminate\Http\Response
*/
public function show($id)
public function show(Collection $collection)
{
//
$collection = Collection::findOrFail($collection->id);
//get child collections
$collections = $collection
->children()
->paginate(10);
return view('settings.collection.collection', compact('collections'));
}
/**
@ -68,7 +75,9 @@ class CollectionController extends Controller
*/
public function edit($id)
{
//
$collection = Collection::findOrFail($id);
$collectionroles = CollectionRole::pluck('name', 'id');
return view('settings.collection.edit', compact('collection', 'collectionroles'));
}
/**
@ -78,9 +87,20 @@ class CollectionController extends Controller
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
public function update(CollectionRequest $request, $id)
{
//
$collection = Collection::findOrFail($id);
$input = $request->all();
//$input = $request->except('licenses', 'titles');
$collection->update($input);
session()->flash('flash_message', 'You have updated the collection "' . $collection->name . '"!');
if ($collection->parent()->exists()) {
return redirect()->route('settings.collection.show', $collection->parent);
} else {
$test = $collection->collectionrole;
return redirect()->route('settings.collectionrole.show', $collection->collectionrole);
}
//return redirect()->route('settings.collectionrole.index');
}
/**

View file

@ -0,0 +1,148 @@
<?php
namespace App\Http\Controllers\Settings;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\CollectionRole;
use App\Models\Collection;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
class CollectionRoleController extends Controller
{
public function __construct()
{
//
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//$collections = Collection::take(10)->get();
//$collections = Collection::get();
$collectionroles = CollectionRole::query() //with('collections')
->with(['collections' => function ($query) {
$query->whereNull('parent_id');
}])
->get();
return view('settings.collectionrole.index', compact('collectionroles'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param CollectionRole $collectionrole
* @return \Illuminate\Http\Response
*/
public function show(CollectionRole $collectionrole)
{
$collectionrole = CollectionRole::findOrFail($collectionrole->id);
//$collections = Collection::query()
$collections = $collectionrole
->collections()
->whereNull('parent_id')
// ->where('role_id', '=', $id)
->paginate(10);
return view('settings.collectionrole.show', compact('collections'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$collectionrole = CollectionRole::findOrFail($id);
return view('settings.collectionrole.edit', compact('collectionrole'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return RedirectResponse
*/
public function update(Request $request, $id): RedirectResponse
{
$project = CollectionRole::findOrFail($id);
$input = $request->all();
$project->update($input);
session()->flash('flash_message', 'You have updated the collection role!');
return redirect()->route('settings.collectionrole.index');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete($id)
{
//
}
/**
* deactivate author, submitter etc....
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function hide($id): RedirectResponse
{
$collectionrole = CollectionRole::findOrFail($id);
$collectionrole->update(['visible' => 0]);
session()->flash(
'flash_message',
'Visibility of collection role "' . $collectionrole->name . '" has changed successfully.'
);
return redirect()->route('settings.collectionrole.index');
}
/**
* activatew author, submitter etc....
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function up($id): RedirectResponse
{
// $dateNow = time();
$collectionrole = CollectionRole::findOrFail($id);
$collectionrole->update(['visible' => 1]);
session()->flash(
'flash_message',
'Visibility of collection role "' . $collectionrole->name . '" has changed successfully.'
);
return redirect()->route('settings.collectionrole.index');
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace App\Http\Requests\Collection;
use App\Http\Requests\Request;
/**
* Class UpdatePageRequest.
*/
class CollectionRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;//return access()->allow('edit-page');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:255',
'role_id' => 'required',
];
}
}

View file

@ -25,7 +25,7 @@ class PersonRequest extends Request
return [
'academic_title' => 'nullable|min:2|max:255',
'last_name' => 'required|min:3|max:255',
'first_name' => 'nullable|min:3|max:255',
'first_name' => 'required|min:3|max:255',
'email' => 'nullable|email|max:100',
'identifier_orcid' => 'nullable|min:19|max:50',
'status' => 'required|boolean'

View file

@ -25,8 +25,8 @@ class ProjectRequest extends Request
return [
'name' => 'required|min:3|max:255',
'label' => 'required|min:3|max:10'
'label' => 'required|min:3|max:10',
'description' => 'required'
];
}
}

View file

@ -7,9 +7,34 @@ use App\Models\Dataset;
class Collection extends Model
{
public $timestamps = false;
protected $fillable = [
'name',
'role_id',
];
public function documents()
{
return $this->belongsToMany(Dataset::class, 'link_documents_collections', 'collection_id', 'document_id');
}
#region self join
public function parent()
{
return $this->belongsTo(self::class, 'parent_id');
}
public function children()
{
return $this->hasMany(self::class, 'parent_id');
}
#endregion
/**
* Get the collection role that the dataset belongs to.
*/
public function collectionrole()
{
return $this->belongsTo(CollectionRole::class, 'role_id', 'id');
}
}

View file

@ -0,0 +1,29 @@
<?php
namespace App\Models;
use App\Models\Collection;
use App\Models\Dataset;
use Illuminate\Database\Eloquent\Model;
class CollectionRole extends Model
{
protected $table = 'collections_roles';
public $timestamps = false;
protected $fillable = [
'name',
'oai_name',
'visible',
];
// public function documents()
// {
// return $this->belongsToMany(Dataset::class, 'link_documents_collections', 'role_id', 'document_id');
// }
public function collections()
{
//model, foreign key on the Collection model is role_id, local id of this is id
return $this->hasMany(Collection::class, 'role_id', 'id');
}
}

View file

@ -62,6 +62,12 @@ class Dataset extends Model
->belongsToMany(Collection::class, 'link_documents_collections', 'document_id', 'collection_id');
}
// public function collectionRoles()
// {
// return $this
// ->belongsToMany(CollectionRole::class, 'link_documents_collections', 'document_id', 'role_id');
// }
#region [person table]
//return all persons attached to this film

View file

@ -12,7 +12,7 @@ class Project extends Model
// for using $input = $request->all();
//$project = Project::create($input);
protected $fillable = [
'name', 'label'
'name', 'label', 'description'
];