/home/mip/mip/app/Modules/Client/Controllers/Pages/PagesController.php
<?php
namespace QxCMS\Modules\Client\Controllers\Pages;
use Auth;
use Datatables;
use Session;
use Illuminate\Http\Request;
use QxCMS\Http\Controllers\Controller;
use QxCMS\Modules\Client\Requests\Pages\PagesRequest;
use QxCMS\Modules\Client\Repositories\Settings\Roles\PermissionRepositoryInterface as Permission;
use QxCMS\Modules\Client\Repositories\Pages\PagesRepositoryInterface as Pages;
class PagesController extends Controller
{
protected $pages;
protected $permission;
protected $auth;
protected $prefix_name = '';
protected $module_id = 12;
public function __construct(Permission $permission, Pages $pages)
{
$this->pages = $pages;
$this->permission = $permission;
$this->auth = Auth::guard('client');
$this->prefix_name = config('modules.client');
$this->getDetails($this->module_id);
}
public function permissions()
{
return $this->permission->getPermission($this->module_id);
}
public function index()
{
$this->authorize('activated', $this->permissions());
$data['permissions'] = $this->permissions();
$data['userLogs'] = $this->pages->getUserLogs($this->module_id);
return view('Client::pages.index', $data);
}
public function create()
{
$this->authorize('create', $this->permissions());
$data['permissions'] = $this->permissions();
return view('Client::pages.create', $data, $this->getFormOptions());
}
public function store(PagesRequest $request)
{
$this->authorize('create', $this->permissions());
$pages = $this->pages->create($request);
session()->flash('success', 'Successfully added.');
return redirect($this->prefix_name.'/pages');
}
public function show($id)
{
//
}
public function edit($hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
$data['permissions'] = $this->permissions();
$data['page'] = $this->pages->findById($id);
$data['userLogs'] = $this->pages->getUserLogs($this->module_id, $id);
return view('Client::pages.edit', $data, $this->getFormOptions($data['page']));
}
public function update(PagesRequest $request, $hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
$pages = $this->pages->update($id, $request);
return redirect($this->prefix_name.'/pages');
}
public function destroy($hashid)
{
$this->authorize('delete', $this->permissions());
$id = decode($hashid);
return $this->pages->delete($id);
}
public function getPagesData(Request $request)
{
$pages = $this->pages->select('*')->where('post_type', '=', 'Page')->with('author');
$permissions = $this->permissions();
return Datatables::of($pages)
->filter(function ($query) use ($request) {
if ($request->has('title')) {
$query->where('title', 'like', "%{$request->get('title')}%");
}
})
->editColumn('author', function($row) {
if($row->author == null) return '';
else return $row->author->name;
})
->addColumn('action', function ($pages) use ($permissions){
$html = '';
if($this->auth->user()->can('update', $permissions)) {
$html .= '<a href="'.url('client').'/pages/edit/'.$pages->hashid.'"><button type="button" data-toggle="tooltip" title="Update" class="btn btn-warning btn-xs btn-flat edited"><span class="glyphicon glyphicon-pencil"></span></button></a>';
}
if($this->auth->user()->can('delete', $permissions)) {
$html .= ' <button type="button" data-toggle="tooltip" title="Delete" class="btn btn-danger btn-xs btn-flat deleted" data-action="'.url('client').'/pages/destroy/'.$pages->hashid.'"><span class="glyphicon glyphicon-trash"></span></button>';
}
return $html;
})
->make(true);
}
protected function getFormOptions($page = '')
{
$data['pages'] = $this->pages->pagesList($page ? $page->id : '');
$data['visibility'] = Array('Public' => 'Public', 'Private' => 'Private');
$data['status'] = Array('Publish' => 'Publish', 'Draft' => 'Draft', 'Inactive' => 'Inactive');
return $data;
}
}