Skip to content

Commit

Permalink
Merge c777281 into 2dbced6
Browse files Browse the repository at this point in the history
  • Loading branch information
Gberzi01 committed Jan 31, 2019
2 parents 2dbced6 + c777281 commit 99e456a
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddPermanentColumnToRedirectsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('redirects', function (Blueprint $table) {
$table->integer('status')->default(301);
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('redirects', function (Blueprint $table) {
$table->dropColumn('status');
});
}
}
11 changes: 11 additions & 0 deletions resources/lang/en/redirect.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

return [
'status' => [
'name' => 'Status',
'301' => 'Permanent',
'302' => 'Temporary'
],
'from_url' => 'From url',
'to_url' => 'To url'
];
39 changes: 28 additions & 11 deletions src/Http/Controllers/Admin/RedirectsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Arbory\Base\Http\Controllers\Admin;

use Arbory\Base\Admin\Form;
use Arbory\Base\Admin\Form\Fields\Select;
use Arbory\Base\Admin\Form\Fields\Text;
use Arbory\Base\Admin\Grid;
use Arbory\Base\Admin\Traits\Crudify;
Expand All @@ -23,13 +24,20 @@ class RedirectsController extends Controller
* @param Model $model
* @return Form
*/
protected function form( Model $model )
protected function form(Model $model)
{
$form = $this->module()->form( $model, function( Form $form )
{
$form->addField( new Text( 'from_url' ) )->rules( 'required' );
$form->addField( new Text( 'to_url' ) )->rules( 'required' );
} );
$form = $this->module()->form($model, function (Form $form) {
$form->addField(new Text('from_url'))
->rules('required')
->setLabel(trans('arbory::redirect.from_url'));
$form->addField(new Text('to_url'))
->rules('required')
->setLabel(trans('arbory::redirect.to_url'));

$form->addField(new Select('status'))
->options($this->getStatusOptions())
->setLabel(trans('arbory::redirect.status.name'));
});

return $form;
}
Expand All @@ -39,12 +47,21 @@ protected function form( Model $model )
*/
public function grid()
{
$grid = $this->module()->grid( $this->resource(), function( Grid $grid )
{
$grid->column( 'from_url' );
$grid->column( 'to_url' );
} );
$grid = $this->module()->grid($this->resource(), function (Grid $grid) {
$grid->column('from_url', trans('arbory::redirect.from_url'));
$grid->column('to_url', trans('arbory::redirect.to_url'));
});

return $grid;
}

private function getStatusOptions()
{
$statusOptions = [];
foreach ($this->resource::AVAILABLE_STATUSES as $status) {
$statusOptions[$status] = trans('arbory::redirect.status.' . $status);
}

return $statusOptions;
}
}
18 changes: 9 additions & 9 deletions src/Http/Middleware/ArboryRouteRedirectMiddleware.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,20 @@ class ArboryRouteRedirectMiddleware
* @param \Closure $next
* @return RedirectResponse
*/
public function handle( $request, Closure $next )
public function handle($request, Closure $next)
{
$redirect = Redirect::query();

$redirect->where( 'from_url', $request->url() );
$redirect->orWhere( 'from_url', 'LIKE', '_' . $request->path() . '_' );

$redirect = $redirect->first( [ 'to_url' ] );
$redirect->where('from_url', $request->url());
$redirect->orWhere('from_url', 'LIKE', '_' . $request->path() . '_');

if( $redirect )
{
return \Redirect::to( $redirect->to_url, 301 );
$redirect = $redirect->first(['to_url', 'status']);

if ($redirect) {

return \Redirect::to($redirect->to_url, $redirect->status);
}

return $next( $request );
return $next($request);
}
}
10 changes: 8 additions & 2 deletions src/Pages/Redirect.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,25 @@

class Redirect extends Model
{
public const AVAILABLE_STATUSES = [
301,
302
];

/**
* @var array
*/
protected $fillable = [
'from_url',
'to_url'
'to_url',
'status'
];

/**
* @return string
*/
public function __toString()
{
return (string) $this->to_url;
return (string)$this->to_url;
}
}

0 comments on commit 99e456a

Please sign in to comment.