Skip to content

Commit 2f79d65

Browse files
authored
Merge pull request #8 from AlexStack/alex_dev
Alex dev
2 parents e640a1e + f759446 commit 2f79d65

18 files changed

+207
-108
lines changed

src/Helpers/LaravelCmsHelper.php

+13
Original file line numberDiff line numberDiff line change
@@ -125,4 +125,17 @@ static public function assetUrl($file, $with_modify_time = true)
125125
}
126126
return '/' . $url;
127127
}
128+
129+
static public function activeMenuClass($menu_item, $current_page, $class = 'active')
130+
{
131+
$p = array_column($current_page->parent_flat_ary, 'id');
132+
133+
if ($menu_item->menu_enabled && $menu_item->parent_id && !empty($p)) {
134+
$p = array_diff($p, [$menu_item->parent_id]);
135+
}
136+
if ($menu_item->id == $current_page->id || in_array($menu_item->id, $p)) {
137+
return $class;
138+
}
139+
return '';
140+
}
128141
}

src/Http/Controllers/LaravelCmsPageAdminController.php

+34-6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use AlexStack\LaravelCms\Helpers\LaravelCmsHelper;
99
use Auth;
1010
use App\Http\Controllers\Controller;
11+
use DB;
1112

1213
class LaravelCmsPageAdminController extends Controller
1314
{
@@ -124,8 +125,24 @@ public function store(Request $request)
124125

125126
$all_file_data = [];
126127
$this->handleUpload($request, $form_data, $all_file_data);
128+
//LaravelCmsHelper::debug($form_data, 'no_exit');
127129

128-
$rs = LaravelCmsPage::create($form_data);
130+
131+
// DB::enableQueryLog();
132+
133+
// $rs = LaravelCmsPage::create($form_data); // create() not working ???
134+
135+
$rs = new LaravelCmsPage;
136+
foreach ($rs->fillable as $field) {
137+
if (isset($form_data[$field])) {
138+
$rs->$field = trim($form_data[$field]);
139+
}
140+
}
141+
$rs->save();
142+
//LaravelCmsHelper::debug($rs);
143+
144+
// $sql = DB::getQueryLog();
145+
// LaravelCmsHelper::debug($sql);
129146

130147
return redirect()->route(
131148
'LaravelCmsAdminPages.edit',
@@ -165,25 +182,36 @@ public function update(Request $request)
165182

166183
}
167184

185+
public function destroy(Request $request, $id)
186+
{
187+
$this->checkUser();
188+
$rs = LaravelCmsPage::find($id)->delete();
189+
190+
//LaravelCmsHelper::debug($rs);
191+
192+
return redirect()->route(
193+
'LaravelCmsAdminPages.index'
194+
);
195+
}
168196

169-
public function flattenArray($elements, $depth = 0)
197+
public function flattenArray($elements, $name = 'children', $depth = 0)
170198
{
171199
$result = array();
172200

173201
foreach ($elements as $element) {
174202
$element['depth'] = $depth;
175203

176-
if (isset($element['children'])) {
177-
$children = $element['children'];
178-
unset($element['children']);
204+
if (isset($element[$name])) {
205+
$children = $element[$name];
206+
unset($element[$name]);
179207
} else {
180208
$children = null;
181209
}
182210

183211
$result[] = $element;
184212

185213
if (isset($children)) {
186-
$result = array_merge($result, $this->flattenArray($children, $depth + 1));
214+
$result = array_merge($result, $this->flattenArray($children, $name, $depth + 1));
187215
}
188216
}
189217

src/Http/Controllers/LaravelCmsPageController.php

+33-14
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,20 @@ public function show($slug)
4242
}
4343
$data['page'] = LaravelCmsPage::with(['children' => function ($query) {
4444
return $query->take(120);
45-
}])->where($search_field, $slug)->first();
45+
}, 'parent:title,menu_title,id,parent_id,slug,redirect_url,menu_enabled'])->where($search_field, $slug)->first();
4646
if (!$data['page']) {
4747
return abort(404);
4848
}
4949
$template_file = $data['page']->template_file ?? 'page-detail-default';
50-
//$this->debug($data['page']->toArray());
50+
51+
if (isset($data['page']->parent)) {
52+
$data['page']->parent_flat_ary = array_reverse($this->flattenParentArray($data['page']->parent->toArray(), 'parent'));
53+
} else {
54+
$data['page']->parent_flat_ary = [];
55+
}
56+
57+
58+
//LaravelCmsHelper::debug($data['page']->parent->toArray(), 'no_exit');
5159

5260

5361
$data['file_data'] = json_decode($data['page']->file_data);
@@ -63,18 +71,6 @@ public function show($slug)
6371
}
6472

6573

66-
static public function debug($data, $exit = 'exit')
67-
{
68-
if (is_a($data, 'Illuminate\Database\Eloquent\Collection')) {
69-
$data = $data->toArray();
70-
}
71-
echo '<pre>' . var_export($data, true) . '</pre>';
72-
echo '<hr>Debug Time: ' . date('Y-m-d H:i:s') . '<hr>';
73-
if ($exit != 'no_exit') {
74-
exit();
75-
}
76-
}
77-
7874
public function menus()
7975
{
8076
$data['menus'] = LaravelCmsPage::with('menus:title,menu_title,id,parent_id,slug,redirect_url,menu_enabled')
@@ -89,4 +85,27 @@ public function menus()
8985

9086
return $data['menus'];
9187
}
88+
89+
public function flattenParentArray($element, $name = 'parent', $depth = 0)
90+
{
91+
$result = array();
92+
93+
94+
$element['depth'] = $depth;
95+
96+
if (isset($element[$name])) {
97+
$children = $element[$name];
98+
unset($element[$name]);
99+
} else {
100+
$children = null;
101+
}
102+
103+
$result[] = $element;
104+
105+
if (isset($children)) {
106+
$result = array_merge($result, $this->flattenParentArray($children, $name, $depth + 1));
107+
}
108+
109+
return $result;
110+
}
92111
}

src/Models/LaravelCmsFile.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
*/
3333
class LaravelCmsFile extends Model
3434
{
35-
use SoftDeletes;
35+
//use SoftDeletes;
3636

3737
public $table = 'cms_files';
3838

src/Models/LaravelCmsPage.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
* @property string abstract
3434
* @property integer main_banner
3535
* @property integer main_image
36-
* @property string main_text
36+
* @property string sub_content
3737
* @property string main_content
3838
* @property integer sort_value
3939
* @property integer view_counts
@@ -47,7 +47,7 @@
4747
*/
4848
class LaravelCmsPage extends Model
4949
{
50-
use SoftDeletes;
50+
//use SoftDeletes;
5151

5252
public $table = 'cms_pages';
5353

@@ -73,7 +73,7 @@ class LaravelCmsPage extends Model
7373
'abstract',
7474
'main_banner',
7575
'main_image',
76-
'main_text',
76+
'sub_content',
7777
'main_content',
7878
'sort_value',
7979
'view_counts',
@@ -113,7 +113,7 @@ class LaravelCmsPage extends Model
113113
'abstract' => 'string',
114114
'main_banner' => 'integer',
115115
'main_image' => 'integer',
116-
'main_text' => 'string',
116+
'sub_content' => 'string',
117117
'main_content' => 'string',
118118
'sort_value' => 'integer',
119119
'view_counts' => 'integer',
@@ -196,7 +196,7 @@ public function user()
196196

197197
public function parent()
198198
{
199-
return $this->belongsTo(\AlexStack\LaravelCms\Models\LaravelCmsPage::class, 'parent_id')->whereNull('parent_id')->with('parent');
199+
return $this->belongsTo(\AlexStack\LaravelCms\Models\LaravelCmsPage::class, 'parent_id')->with('parent:title,menu_title,id,parent_id,slug,redirect_url,menu_enabled');
200200
}
201201

202202
public function children()

src/assets/frontend/css/main.css

+17
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,23 @@ body {
22
font-family: "Microsoft YaHei", "微软雅黑", "PingFang SC", "Arial"
33
}
44

5+
.dropdown-item.active,
6+
.dropdown-item:active {
7+
background-color: #e7eaec;
8+
color: black;
9+
}
10+
11+
.breadcrumb {
12+
background-color: unset;
13+
margin-top: 2rem;
14+
padding-left: 0;
15+
}
16+
17+
18+
.breadcrumb-item+.breadcrumb-item::before {
19+
content: ">"
20+
}
21+
522
/*
623
.top-nav .dropdown:hover .dropdown-menu {
724
display: block !important;

src/config/laravel-cms.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
| need to run "php artisan config:cache" after make a change
99
|
1010
*/
11-
'top_logo' => env('LARAVEL_CMS_TOP_LOGO', 'https://dummyimage.com/200x80/edeaed/010312.png&text=Laravel+CMS'),
11+
'top_logo' => env('LARAVEL_CMS_TOP_LOGO', 'https://raw.githubusercontent.com/AlexStack/Laravel-CMS/master/src/assets/frontend/images/top-logo.png'),
1212

1313
'page_top' => '<div class="row justify-content-end">
1414
<div class="col-md text-right text-secondary page_top">

src/database/migrations/2019_08_16_075501_create_cms_pages_table.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public function up()
2929
$table->text('abstract', 65535)->nullable();
3030
$table->integer('main_banner')->unsigned()->nullable()->index('main_banner');
3131
$table->integer('main_image')->unsigned()->nullable()->index('main_image');
32-
$table->text('main_text', 65535)->nullable();
32+
$table->text('sub_content', 65535)->nullable();
3333
$table->text('main_content', 65535)->nullable();
3434
$table->smallInteger('sort_value')->unsigned()->nullable()->index('sort_value');
3535
$table->integer('view_counts')->unsigned()->nullable()->index('view_counts');

src/database/seeds/CmsPagesTableSeeder.php

+8-8
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public function run()
3737
'abstract' => NULL,
3838
'main_banner' => NULL,
3939
'main_image' => NULL,
40-
'main_text' => NULL,
40+
'sub_content' => NULL,
4141
'main_content' => '<p>About Us example page</p><p><br></p><p><br></p><p><br></p>',
4242
'sort_value' => NULL,
4343
'view_counts' => NULL,
@@ -68,7 +68,7 @@ public function run()
6868
'abstract' => NULL,
6969
'main_banner' => NULL,
7070
'main_image' => NULL,
71-
'main_text' => NULL,
71+
'sub_content' => NULL,
7272
'main_content' => '<p>Contact us example page</p><p><br></p><p><br></p><p><br></p>',
7373
'sort_value' => NULL,
7474
'view_counts' => NULL,
@@ -99,7 +99,7 @@ public function run()
9999
'abstract' => NULL,
100100
'main_banner' => NULL,
101101
'main_image' => NULL,
102-
'main_text' => NULL,
102+
'sub_content' => NULL,
103103
'main_content' => '<p>Our Services main content example</p><p><br></p><p><br></p><p><br></p>',
104104
'sort_value' => NULL,
105105
'view_counts' => NULL,
@@ -130,7 +130,7 @@ public function run()
130130
'abstract' => NULL,
131131
'main_banner' => NULL,
132132
'main_image' => NULL,
133-
'main_text' => NULL,
133+
'sub_content' => NULL,
134134
'main_content' => '<p>Our Products example page</p><p><br></p><p>Our Products example page</p><p><br></p><p>Our Products example page</p><p><br></p><p><br></p>',
135135
'sort_value' => NULL,
136136
'view_counts' => NULL,
@@ -161,7 +161,7 @@ public function run()
161161
'abstract' => NULL,
162162
'main_banner' => NULL,
163163
'main_image' => NULL,
164-
'main_text' => NULL,
164+
'sub_content' => NULL,
165165
'main_content' => '<p>This is the home page main content. </p><p>You can change it <a href="/laravelCms/pages">in the cms backend</a>: </p><p>Please keep only one <span style="font-weight: bold;">slug </span>settings in the SEO tab as <span style="color: rgb(156, 0, 255); font-weight: bold;">homepage</span>.</p><p><a href="/laravelCms/pages">Click here go to the cms backend,</a> you will need to log in as the first user on the website.</p><p><br></p><p><br></p><p><br></p>',
166166
'sort_value' => NULL,
167167
'view_counts' => NULL,
@@ -192,7 +192,7 @@ public function run()
192192
'abstract' => NULL,
193193
'main_banner' => NULL,
194194
'main_image' => NULL,
195-
'main_text' => NULL,
195+
'sub_content' => NULL,
196196
'main_content' => '<p>Sub Product 1 example page</p><p><br></p><p><br></p><p><br></p>',
197197
'sort_value' => NULL,
198198
'view_counts' => NULL,
@@ -223,7 +223,7 @@ public function run()
223223
'abstract' => NULL,
224224
'main_banner' => NULL,
225225
'main_image' => NULL,
226-
'main_text' => NULL,
226+
'sub_content' => NULL,
227227
'main_content' => '<p>Sub Product 2 example page</p><p><br></p><p><br></p><p><br></p>',
228228
'sort_value' => NULL,
229229
'view_counts' => NULL,
@@ -254,7 +254,7 @@ public function run()
254254
'abstract' => NULL,
255255
'main_banner' => NULL,
256256
'main_image' => NULL,
257-
'main_text' => NULL,
257+
'sub_content' => NULL,
258258
'main_content' => '<p>Sub Product 3 example page</p><p><br></p><p><br></p><p><br></p>',
259259
'sort_value' => NULL,
260260
'view_counts' => NULL,

src/resources/views/backend/includes/page-form.blade.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,14 @@
3333

3434
@include('laravel-cms::' . config('laravel-cms.template_backend_dir') . '.includes.form-input', ['name' => "menu_title"])
3535

36-
@include('laravel-cms::' . config('laravel-cms.template_backend_dir') . '.includes.form-input', ['name' => "main_text"])
36+
@include('laravel-cms::' . config('laravel-cms.template_backend_dir') . '.includes.form-input', ['type'=>'file', 'name' => "main_banner", 'input_attributes'=>['class'=>'form-control input-main_image mb-3'] ])
3737

3838
@include('laravel-cms::' . config('laravel-cms.template_backend_dir') . '.includes.form-input', ['type'=>'textarea', 'name' => "main_content"])
3939

4040
@include('laravel-cms::' . config('laravel-cms.template_backend_dir') . '.includes.form-input', ['type'=>'file', 'name' => "main_image", 'input_attributes'=>['class'=>'form-control input-main_image mb-3'] ])
4141

42-
@include('laravel-cms::' . config('laravel-cms.template_backend_dir') . '.includes.form-input', ['type'=>'file', 'name' => "main_banner", 'input_attributes'=>['class'=>'form-control input-main_image mb-3'] ])
42+
43+
@include('laravel-cms::' . config('laravel-cms.template_backend_dir') . '.includes.form-input', ['type'=>'textarea', 'name' => "sub_content"])
4344

4445
</div>
4546

src/resources/views/backend/page-create.blade.php

+18-6
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,25 @@
2020
</div>
2121
</div>
2222
<script>
23+
function renderEditor(id, minHeight=120) {
24+
$(id).summernote({
25+
placeholder: '',
26+
tabsize: 2,
27+
minHeight: minHeight,
28+
maxHeight: 600
29+
});
30+
}
2331
$(document).ready(function() {
24-
$('textarea').summernote({
25-
placeholder: '',
26-
tabsize: 2,
27-
minHeight: 120,
28-
maxHeight: 600
29-
});
32+
renderEditor('#main_content',200);
33+
setTimeout(function(){
34+
renderEditor('#sub_content');
35+
}, 1500);
36+
setTimeout(function(){
37+
renderEditor('#abstract');
38+
renderEditor('#extra_content_1');
39+
renderEditor('#extra_content_2');
40+
renderEditor('#extra_content_3');
41+
}, 3000);
3042
});
3143
</script>
3244

0 commit comments

Comments
 (0)