FEATURE #1370: add form for creating new static page

This commit is contained in:
Michal Kváček
2016-01-27 14:55:59 +01:00
parent c75effd10c
commit 195ba54005
8 changed files with 291 additions and 97 deletions
@@ -1,10 +1,46 @@
<?php <?php
namespace Modules\StaticPages\Http\Controllers\Admin; namespace Modules\StaticPages\Http\Controllers\Admin;
use App\Models\Content;
use Modules\StaticPages\Http\Requests\CreateNewStaticPageRequest;
class CreateNewStaticPage extends Controller class CreateNewStaticPage extends Controller
{ {
/**
* Display form for new static page
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function getNew() public function getNew()
{ {
return view('staticpages::index'); return view('staticpages::admin.new', ['contentStates' => []]);
}
/**
* Save new static page
*
* @param CreateNewStaticPageRequest $request
*
* @return \Illuminate\Http\RedirectResponse
*/
public function postNew(CreateNewStaticPageRequest $request)
{
$page = new Content();
// @todo add module_handler
$page->user_id = \Auth::user()->id;
$page->title = $request->title;
$page->published_from = $request->publishedFrom;
$page->published_to = $request->publishedTo;
$page->meta_keywords = $request->meta_description;
$page->meta_description = $request->meta_description;
$page->content = $request->pageContent;
$page->save();
return redirect()
->route('staticpages.new')
->with('success', trans('admin.successfullyCreated'));
} }
} }
@@ -0,0 +1,25 @@
<?php
namespace Modules\StaticPages\Http\Requests;
use App\Http\Requests\Request;
class CreateNewStaticPageRequest extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required',
'url' => 'required|unique:contents,url',
'published_from' => 'date',
'published_to' => 'date',
'title_photo' => 'exists:files,id',
'module_settings' => 'json',
'status' => 'required|in:draft,protected,public'
];
}
}
+10
View File
@@ -15,10 +15,20 @@ Route::group([
'prefix' => 'admin/pages', 'prefix' => 'admin/pages',
'namespace' => 'Modules\StaticPages\Http\Controllers\Admin' 'namespace' => 'Modules\StaticPages\Http\Controllers\Admin'
], function () { ], function () {
// list of all static pages
Route::get('overview', 'StaticPageOverview@getOverview') Route::get('overview', 'StaticPageOverview@getOverview')
->name('staticpage.overview'); ->name('staticpage.overview');
// form for creating new static page
Route::get('new', 'CreateNewStaticPage@getNew') Route::get('new', 'CreateNewStaticPage@getNew')
->name('staticpage.new'); ->name('staticpage.new');
// form for editing existing static page
Route::get('edit/{id}', 'EditStaticPage@getEdit') Route::get('edit/{id}', 'EditStaticPage@getEdit')
->name('staticpage.edit'); ->name('staticpage.edit');
// post method for creating new static page
Route::post('new', 'CreateNewStaticPage@getNew')
->name('staticpage.newPost');
}); });
@@ -1,10 +1,9 @@
<?php namespace Modules\Staticpages\Providers; <?php namespace Modules\Staticpages\Providers;
use Illuminate\Support\Facades\Lang;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
class StaticPagesServiceProvider extends ServiceProvider { class StaticPagesServiceProvider extends ServiceProvider
{
/** /**
* Indicates if loading of the provider is deferred. * Indicates if loading of the provider is deferred.
* *
@@ -51,9 +50,7 @@ class StaticPagesServiceProvider extends ServiceProvider {
$this->publishes([ $this->publishes([
__DIR__ . '/../Config/config.php' => config_path('staticpages.php'), __DIR__ . '/../Config/config.php' => config_path('staticpages.php'),
]); ]);
$this->mergeConfigFrom( $this->mergeConfigFrom(__DIR__ . '/../Config/config.php', 'staticpages');
__DIR__.'/../Config/config.php', 'staticpages'
);
} }
/** /**
@@ -93,7 +90,6 @@ class StaticPagesServiceProvider extends ServiceProvider {
*/ */
public function provides() public function provides()
{ {
return array(); return [];
} }
} }
@@ -1,5 +1,7 @@
<?php <?php
return [ return [
'overview' => 'List of all static pages', 'overview' => 'List of all static pages',
'new' => 'Create new static page' 'new' => 'Create new static page',
'content' => 'Page content',
'save' => 'Save new page'
]; ];
@@ -0,0 +1,15 @@
@extends('admin.layout')
@section('pageName', @trans('staticpages::admin.new'))
@section('content')
<div class="row">
<h2>@lang('staticpages::admin.new')</h2>
</div>
<div class="row">
@include('staticpages::admin.newForm')
</div>
@stop
@@ -0,0 +1,121 @@
@if (session('success'))
<div data-alert class="callout success">
<strong>{{ session('success') }}</strong>
</div>
@endif
@if (session('error'))
<div data-alert class="callout alert">
<strong>{{ session('error') }}</strong>
</div>
@endif
<form method="POST" action="{{route('staticpage.newPost')}}">
{!! csrf_field() !!}
<ul class="tabs" data-tabs id="static-page-controls">
<li class="tabs-title is-active">
<a href="#basic-info" aria-selected="true">@lang('staticpages::admin.basicInfo')</a>
</li>
<li class="tabs-title">
<a href="#meta">@lang('staticpages::admin.metaOptions')</a>
</li>
<li class="tabs-title">
<a href="#publication">@lang('staticpages::admin.publicationOptions')</a>
</li>
</ul>
<div class="tabs-content" data-tabs-content="static-page-controls">
<div class="tabs-panel is-active" id="basic-info">
<div class="row">
<div class="columns large-6">
<label>
@lang('staticpages::admin.field_title')
<input type="text" name="title" placeholder="@lang('staticpages::admin.field_title')"
value="{{old('title')}}" />
</label>
</div>
<div class="columns large-6">
<label>
@lang('staticpages::admin.field_url')
<input type="text" name="url" placeholder="@lang('staticpages::admin.field_url')"
value="{{old('url')}}" />
</label>
</div>
</div>
<div class="row">
<div class="columns large-12">
</div>
</div>
</div>
<div class="tabs-panel" id="publication">
<div class="row">
<div class="columns large-6">
<label>
@lang('staticpages::admin.field_published_from')
<input type="datetime" name="published_from" value="{{old('published_from')}}"
placeholder="@lang('staticpages::admin.field_published_from')" />
</label>
</div>
<div class="columns large-6">
<label>
@lang('staticpages::admin.field_published_to')
<input type="datetime" name="published_to" value="{{old('published_to')}}"
placeholder="@lang('staticpages::admin.field_published_to')" />
</label>
</div>
</div>
</div>
<div class="tabs-panel" id="meta">
<div class="row">
<div class="columns large-12">
<label>
@lang('staticpages::admin.field_meta_keywords')
<input type="text" name="meta_keywords" value="{{old('meta_keywords')}}"
placeholder="@lang('staticpages::admin.field_meta_keywords')" />
</label>
</div>
</div>
<div class="row">
<div class="columns large-12">
<label>
@lang('staticpages::admin.field_meta_description')
<textarea name="meta_description"
placeholder="@lang('staticpages::admin.field_meta_description')" rows="5">{{old('meta_description')}}
</textarea>
</label>
</div>
</div>
</div>
</div>
<div class="row">
<div class="columns large-12">
<label>
@lang('staticpages::admin.content')
<textarea placeholder="@lang('staticpages::admin.content')" name="pageContent" id="pageContent"
class="wysiwyg-editor">{{old('pageContent')}}</textarea>
</label>
</div>
</div>
<div class="row">
<div class="columns large-12">
<button type="submit" class="button success">@lang('staticpages::admin.save')</button>
</div>
</div>
</form>
@@ -1,11 +0,0 @@
@extends('staticpages::layouts.master')
@section('content')
<h1>Hello World</h1>
<p>
This view is loaded from module: {!! config('staticpages.name') !!}
</p>
@stop