Skip to content

Commit e9c0dbf

Browse files
committed
Section defaults for pages. Closes #63
1 parent 6115534 commit e9c0dbf

File tree

3 files changed

+109
-0
lines changed

3 files changed

+109
-0
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
<?php
2+
3+
namespace Statamic\Addons\SeoPro\Controllers;
4+
5+
use Statamic\API\File;
6+
use Statamic\API\YAML;
7+
use Statamic\API\Fieldset;
8+
use Illuminate\Http\Request;
9+
use Statamic\API\PageFolder;
10+
use Statamic\Addons\SeoPro\TranslatesFieldsets;
11+
12+
class PagesController extends Controller
13+
{
14+
use TranslatesFieldsets;
15+
16+
public function edit()
17+
{
18+
$fieldset = $this->fieldset();
19+
20+
$folder = $this->folder();
21+
22+
$data = $folder->get('seo');
23+
if ($data === false) {
24+
$data = ['enabled' => false];
25+
}
26+
27+
$data = $this->preProcessWithBlankFields($fieldset, $data);
28+
29+
return $this->view('edit', [
30+
'title' => translate_choice('cp.pages', 2) . ' SEO',
31+
'data' => $data,
32+
'fieldset' => $fieldset->toPublishArray(),
33+
'suggestions' => $this->getSuggestions($fieldset),
34+
'submitUrl' => route('seopro.pages.update'),
35+
]);
36+
}
37+
38+
public function update(Request $request)
39+
{
40+
if ($request->input('fields.enabled') === false) {
41+
$data = false;
42+
} else {
43+
$data = $this->processFields($this->fieldset(), array_except($request->fields, ['enabled']));
44+
}
45+
46+
$folder = $this->folder();
47+
48+
if ($data === false) {
49+
$folder->set('seo', false);
50+
} elseif (empty($data)) {
51+
$folder->remove('seo');
52+
} else {
53+
$folder->set('seo', $data);
54+
}
55+
56+
$folder->save();
57+
58+
return [
59+
'success' => true,
60+
'message' => trans('cp.saved_success'),
61+
'redirect' => route('seopro.pages.edit'),
62+
];
63+
}
64+
65+
protected function fieldset()
66+
{
67+
return $this->translateFieldset(Fieldset::create(
68+
'sections',
69+
YAML::parse(File::get($this->getDirectory().'/resources/fieldsets/sections.yaml'))
70+
));
71+
}
72+
73+
protected function folder()
74+
{
75+
$folder = PageFolder::whereHandle('/') ?: PageFolder::create();
76+
77+
// Workaround for a Statamic issue. If whereHandle returned an existing folder,
78+
// the path would have been the full path with pages/ and folder.yaml in it.
79+
// It saves to the wrong place. It should have just been a slash.
80+
$folder->path('/');
81+
82+
return $folder;
83+
}
84+
}

SeoPro/resources/views/sections.blade.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,24 @@
66
<h1 class="flex-1">{{ $title }}</h1>
77
</div>
88

9+
<div class="flex items-center mb-1">
10+
<h2 class="flex-1">{{ trans_choice('cp.pages', 2) }}</h2>
11+
</div>
12+
13+
<div class="card flush dossier">
14+
<div class="dossier-table-wrapper">
15+
<table class="dossier">
16+
<tbody>
17+
<tr>
18+
<td class="cell-title first-cell">
19+
<a class="" href="{{ route('seopro.pages.edit') }}">{{ trans_choice('cp.pages', 2) }}</a>
20+
</td>
21+
</tr>
22+
</tbody>
23+
</table>
24+
</div>
25+
</div>
26+
927
<div class="flex items-center mb-1">
1028
<h2 class="flex-1">{{ trans_choice('cp.collections', 2) }}</h2>
1129
</div>

SeoPro/routes.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ routes:
1414
uses: SectionController@index
1515
as: seopro.sections.index
1616

17+
sections/pages:
18+
uses: PagesController@edit
19+
as: seopro.pages.edit
20+
post@sections/pages:
21+
uses: PagesController@update
22+
as: seopro.pages.update
23+
1724
sections/collections/{collection}:
1825
uses: CollectionController@edit
1926
as: seopro.collections.edit

0 commit comments

Comments
 (0)