Skip to content

Commit 3d88169

Browse files
committed
[Software maintenance - Perfective]
* Create page view
1 parent 17e882a commit 3d88169

File tree

14 files changed

+444
-113
lines changed

14 files changed

+444
-113
lines changed

app/routes.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
$app->group('/painel', function() use ($app) {
77
$app->get('',App\Action\CMSAction::class . ':page')->setName('homepage');
88
$app->map(['GET', 'POST','DELETE','PUT'], '/menu', App\Action\CMSAction::class . ':page');
9-
$app->get('/page',App\Action\CMSAction::class . ':page');
9+
$app->map(['GET', 'POST','DELETE','PUT'], '/page', App\Action\CMSAction::class . ':page');
1010
$app->get('/page-details',App\Action\CMSAction::class . ':page');
11+
$app->get('/gallery',App\Action\CMSAction::class . ':page');
1112
$app->get('/img-video',App\Action\CMSAction::class . ':page');
1213
$app->get('/tag',App\Action\CMSAction::class . ':page');
1314
$app->get('/tag-values',App\Action\CMSAction::class . ':page');

app/src/Entity/Page.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ public function getId()
9494
return $this->id;
9595
}
9696

97+
public function setId($id){
98+
$this->id = $id;
99+
}
100+
97101
/**
98102
* Set name
99103
*
@@ -231,4 +235,5 @@ public function getBanners() {
231235
public function setBanners($banners) {
232236
$this->banners = $banners;
233237
}
238+
234239
}

app/src/Resource/MenuResource.php

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
class MenuResource extends AbstractResource{
2020

21-
protected $REPOSITORY = 'App\Entity\Menu';
21+
public static $REPOSITORY = 'App\Entity\Menu';
2222

2323
/**
2424
* MenuResource constructor.
@@ -28,6 +28,13 @@ public function __construct(EntityManager $entityManager) {
2828
$this->entityManager = $entityManager;
2929
}
3030

31+
/**
32+
* @param Request $request
33+
* @param Response $response
34+
* @param $args
35+
* @return mixed|string
36+
* @throws \Doctrine\ORM\OptimisticLockException
37+
*/
3138
public function service(Request $request, Response $response, $args) {
3239

3340
switch ($request->getMethod()){
@@ -87,7 +94,15 @@ function get(Request $request, $args) {
8794

8895
//$data->menuEdit = $menuEdit->toArray();
8996
}
90-
$menus = $this->entityManager->getRepository($this->REPOSITORY)->findAll();
97+
98+
$menus = $this->entityManager->getRepository(MenuResource::$REPOSITORY)->findAll();
99+
$data->menus = $menus;
100+
return $data;
101+
}
102+
103+
function getAll(\stdClass $stdClass){
104+
$data = $stdClass==null ? new \stdClass() : $stdClass;
105+
$menus = $this->entityManager->getRepository(MenuResource::$REPOSITORY)->findAll();
91106
$data->menus = $menus;
92107
return $data;
93108
}
@@ -105,7 +120,7 @@ function put(Request $request, $args) {
105120
$objMenu->setEnabled((bool)$request->getParam('chkStatus') ? 1 : 0);
106121

107122
if($request->getParam('txtMenu')){
108-
$menuEdit = $this->entityManager->getRepository($this->REPOSITORY)->findOneBy(array('id'=>$request->getParam('txtMenu')));
123+
$menuEdit = $this->entityManager->getRepository(MenuResource::$REPOSITORY)->findOneBy(array('id'=>$request->getParam('txtMenu')));
109124
$objMenu->setMenu($menuEdit);
110125
}
111126

@@ -124,7 +139,7 @@ function post(Request $request, $args) {
124139
$objMenu->setDescription($request->getParam('txtDescricao'));
125140
$objMenu->setEnabled($request->getParam('chkStatus') == 'A' ? true : false );
126141
if(intval($request->getParam('txtMenu')) != 0){
127-
$parent = $this->entityManager->getRepository($this->REPOSITORY)->findOneBy(array('id' => $request->getParam('txtMenu')));
142+
$parent = $this->entityManager->getRepository(MenuResource::$REPOSITORY)->findOneBy(array('id' => $request->getParam('txtMenu')));
128143
$objMenu->setMenu($parent);
129144
}
130145

@@ -141,7 +156,7 @@ function post(Request $request, $args) {
141156
* @throws \Doctrine\ORM\OptimisticLockException
142157
*/
143158
function delete(Request $request, $args) {
144-
$objMenu = $this->entityManager->getRepository($this->REPOSITORY)->findOneBy(array('id' => $request->getParam('id')));
159+
$objMenu = $this->entityManager->getRepository(MenuResource::$REPOSITORY)->findOneBy(array('id' => $request->getParam('id')));
145160
$this->entityManager->remove($objMenu);
146161
$this->entityManager->flush();
147162
}

app/src/Resource/PageResource.php

Lines changed: 84 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@
99
namespace App\Resource;
1010

1111

12+
use App\Entity\Page;
1213
use Doctrine\ORM\EntityManager;
14+
use Doctrine\ORM\Query\Expr\Join;
1315
use Slim\Http\Request;
1416
use Slim\Http\Response;
1517

1618
class PageResource extends AbstractResource{
1719

1820

21+
public static $REPOSITORY = 'App\Entity\Page';
22+
1923
/**
2024
* PageResource constructor.
2125
* @param EntityManager $entityManager
@@ -28,9 +32,37 @@ public function __construct(EntityManager $entityManager) {
2832
* @param Request $request
2933
* @param Response $response
3034
* @param $args
35+
* @return mixed|string
36+
* @throws \Doctrine\ORM\OptimisticLockException
3137
*/
3238
public function service(Request $request, Response $response, $args) {
33-
// TODO: Implement service() method.
39+
switch ($request->getMethod()){
40+
41+
case HTTP_POST:
42+
return $this->post($request,$args);
43+
break;
44+
45+
case HTTP_GET:
46+
return $this->get($request,$args);
47+
break;
48+
49+
case HTTP_PUT:
50+
return $this->put($request,$args);
51+
break;
52+
53+
case HTTP_DELETE:
54+
return $this->delete($request,$args);
55+
break;
56+
57+
case HTTP_PATCH:
58+
return $this->path($request,$args);
59+
break;
60+
61+
default:
62+
return "erro";
63+
64+
break;
65+
}
3466
}
3567

3668
/**
@@ -39,25 +71,73 @@ public function service(Request $request, Response $response, $args) {
3971
* @return mixed
4072
*/
4173
function get(Request $request, $args) {
42-
// TODO: Implement get() method.
74+
75+
$data = new \stdClass();
76+
77+
if($request->getParam('id')!=null){
78+
$queryBuilder = $this->entityManager->createQueryBuilder();
79+
$queryBuilder->select("p.id,p.name,p.name_clean, p.menu, p.enabled,")
80+
->from(PageResource::$REPOSITORY, 'p')
81+
->join(MenuResource::$REPOSITORY,'m', Join::WITH,'p.menu = m.id')
82+
->where('m.id = :id')->setParameter('id',$request->getParam('id'));
83+
84+
$query = $queryBuilder->getQuery();
85+
86+
$data->pageEdit = $query->getArrayResult();
87+
}
88+
89+
$data->menus = $this->entityManager->getRepository(MenuResource::$REPOSITORY)->findAll();
90+
$pages = $this->entityManager->getRepository(PageResource::$REPOSITORY)->findAll();
91+
$data->pages = $pages;
92+
93+
return $data;
94+
4395
}
4496

4597
/**
4698
* @param Request $request
4799
* @param $args
48100
* @return mixed
101+
* @throws \Doctrine\ORM\OptimisticLockException
49102
*/
50103
function put(Request $request, $args) {
51-
// TODO: Implement put() method.
104+
$objPage = new Page();
105+
$objPage->setId($request->getParam("txtPageEdit"));
106+
$objPage->setName($request->getParam('txtName'));
107+
$objPage->setNameClean($request->getParam('txtNameClean'));
108+
$objPage->setDescription($request->getParam('txtDescricao'));
109+
$objPage->setEnabled((bool)$request->getParam('chkStatus') ? 1 : 0);
110+
111+
if($request->getParam('txtMenu')){
112+
$menuEdit = $this->entityManager->getRepository($this->REPOSITORY)->findOneBy(array('id'=>$request->getParam('txtMenu')));
113+
$objPage->setMenu($menuEdit);
114+
}
115+
116+
$this->entityManager->merge($objPage);
117+
$this->entityManager->flush();
118+
52119
}
53120

54121
/**
55122
* @param Request $request
56123
* @param $args
57124
* @return mixed
125+
* @throws \Doctrine\ORM\OptimisticLockException
58126
*/
59127
function post(Request $request, $args) {
60-
// TODO: Implement post() method.
128+
$objPage = new Page();
129+
$objPage->setName($request->getParam('txtName'));
130+
$objPage->setNameClean($request->getParam('txtNameClean'));
131+
$objPage->setEnabled((bool)$request->getParam('chkStatus') ? 1 : 0);
132+
if(intval($request->getParam('txtMenu')) != 0){
133+
$menu = $this->entityManager->getRepository(MenuResource::$REPOSITORY)->findOneBy(array('id' => $request->getParam('txtMenu')));
134+
$objPage->setMenu($menu);
135+
}
136+
137+
$this->entityManager->persist($objPage);
138+
$this->entityManager->flush();
139+
140+
return $this->get($request,$args);
61141
}
62142

63143
/**

app/src/Resource/TagResource.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
namespace App\Resource;
1010

1111

12+
use Doctrine\ORM\EntityManager;
1213
use Slim\Http\Request;
1314
use Slim\Http\Response;
1415

app/templates/admin-cms/default/base-nav.twig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<ul class="child-list">
3131
<li><a href="/painel/page">P&Aacute;GINA</a></li>
3232
<li><a href="/painel/page-details">SE&Ccedil;&Atilde;O DA P&Aacute;GINA</a></li>
33+
<li ><a href="/painel/gallery">GALERIA</a></li>
3334
<li><a href="/painel/img-video">GALERIA DE IMAGENS/V&Iacute;DEOS</a></li>
3435
</ul>
3536
</li>
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
{% extends "base.html.twig" %}
2+
3+
{% block content %}
4+
<div class="row" id="mainPage">
5+
<div class="col-lg-12">
6+
7+
<section class="panel">
8+
<div class="panel-body">
9+
<header class="panel-heading ">
10+
Novo Registro
11+
<span class="tools pull-right">
12+
<a class="fa fa-repeat box-refresh" href="javascript:;"></a>
13+
<a class="t-collapse fa fa-chevron-down" href="javascript:;"></a>
14+
</span>
15+
</header>
16+
17+
<div class="panel-body">
18+
19+
<form role="form" id="formPage" enctype="multipart/form-data">
20+
21+
<div class="form-group">
22+
<label for="menu">Descri&ccedil;&atilde;o</label>
23+
<input type="text" class="form-control" id="txtDescription" name="txtDescription" placeholder="Informe uma descrição">
24+
</div>
25+
26+
<div class="form-group">
27+
<input id="chkStatus" type="checkbox" name="chkStatus" class="form-control js-switch-blue"
28+
checked/>
29+
<label for="chkStatus" class="control-label">Ativar/Inativar Registro</label>
30+
</div>
31+
32+
<input type="hidden" id="txtPageDetailEdit" name="txtPageDetailEdit"/>
33+
34+
<button class="btn btn-success" type="submit" id="btnSalvar">Salvar</button>
35+
36+
</form>
37+
38+
</div>
39+
40+
</div>
41+
42+
<!-- Modal -->
43+
<div class="modal fade" id="removeData" data-toggle="modal" tabindex="-1" role="dialog" aria-labelledby="removeData"
44+
aria-hidden="true">
45+
<div class="modal-dialog">
46+
<div class="modal-content">
47+
<div class="modal-header">
48+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;
49+
</button>
50+
<h4 class="modal-title">Cadastro::Page</h4>
51+
</div>
52+
<div class="modal-body">
53+
<p>O registro será deletado.</p>
54+
<p>Confirma operação?</p>
55+
<input type="hidden" id="data-id"/>
56+
</div>
57+
<div class="modal-footer">
58+
<button data-dismiss="modal" class="btn btn-send">Cancelar</button>
59+
<button class="btn btn-danger" id="btnRemover">Remover</button>
60+
</div>
61+
</div>
62+
</div>
63+
</div>
64+
<!-- modal -->
65+
66+
</section>
67+
68+
<section class="panel">
69+
<header class="panel-heading ">
70+
Lista de registros
71+
<span class="tools pull-right">
72+
<a class="fa fa-repeat box-refresh" href="javascript:;" onclick="resetForm('formPage')"></a>
73+
<a class="t-collapse fa fa-chevron-down" href="javascript:;"></a>
74+
</span>
75+
</header>
76+
<table class="table colvis-data-table data-table">
77+
<thead>
78+
<tr>
79+
<th width="5%">#</th>
80+
<th width="35%">DESCRI&Ccedil;&Atilde;O</th>
81+
<th width="5%">AÇÃO</th>
82+
</tr>
83+
</thead>
84+
<tbody>
85+
{% for detail in data.pageDetails %}
86+
<tr>
87+
<td>{{ detail.id }}</td>
88+
<td>{{ detail.description }}</td>
89+
<td>
90+
<button class="btn btn-primary btn-xs" id="btnEditPage" data-id="{{ page.id }}"><i class="fa fa-pencil"></i></button>
91+
<button class="btn btn-danger btn-xs" id="btnUpdatePage" data-id="{{ page.id }}"><i class="fa fa-trash-o "></i></button>
92+
</td>
93+
</tr>
94+
{% endfor %}
95+
</tbody>
96+
</table>
97+
</section>
98+
</div>
99+
</div>
100+
101+
{% endblock %}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{% include 'default-head.twig' %}

app/templates/admin-cms/partials/img-video.twig

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,18 @@
1515
<div class="panel-body">
1616

1717
<form role="form" id="formImgVideo" enctype="multipart/form-data">
18+
19+
20+
<div class="form-group">
21+
<label for="txtPage">Galeria</label>
22+
<select class="form-control select2" id="txtPage" name="txtGaleria">
23+
<option value="">Selecione uma opção</option>
24+
{% for menu in data.menus %}
25+
<option value="{{ menu.id }}" {{ selected }}>{{ menu.description }}</option>
26+
{% endfor %}
27+
</select>
28+
</div>
29+
1830
<div class="form-group">
1931
<label for="txtTipo">Tipo</label>
2032
<select class="form-control select" id="txtTipo">

0 commit comments

Comments
 (0)