From 31a40cfc446c9586f89a4aa69ef76d76d469e5a4 Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Mon, 16 Jul 2018 13:24:18 +0200 Subject: Bake : setup and create empty CustomTheme --- .../src/Template/Bake/Element/Controller/add.twig | 46 +++++++++++++ .../src/Template/Bake/Element/Controller/edit.twig | 49 +++++++++++++ .../Template/Bake/Element/Controller/index.twig | 33 +++++++++ .../src/Template/Bake/Element/form.twig | 80 ++++++++++++++++++++++ 4 files changed, 208 insertions(+) create mode 100644 fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/add.twig create mode 100644 fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/edit.twig create mode 100644 fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/index.twig create mode 100644 fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/form.twig (limited to 'fai_gestion/plugins/CustomTheme/src/Template/Bake/Element') diff --git a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/add.twig b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/add.twig new file mode 100644 index 0000000..1c67f5e --- /dev/null +++ b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/add.twig @@ -0,0 +1,46 @@ +{# +/** + * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) + * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * For full copyright and license information, please see the LICENSE.txt + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://cakephp.org CakePHP(tm) Project + * @since 2.0.0 + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ +#} +{% set compact = ["'#{singularName}'"] %} + + /** + * Add method + * + * @return \Cake\Http\Response|null Redirects on successful add, renders view otherwise. + */ + public function add() + { + ${{ singularName }} = $this->{{ currentModelName }}->newEntity(); + if ($this->request->is('post')) { + ${{ singularName }} = $this->{{ currentModelName }}->patchEntity(${{ singularName }}, $this->request->getData()); + if ($this->{{ currentModelName }}->save(${{ singularName }})) { + $this->Flash->success(__('The {{ singularHumanName|lower }} has been saved.')); + + return $this->redirect(['action' => 'index']); + } + $this->Flash->error(__('The {{ singularHumanName|lower }} could not be saved. Please, try again.')); + } +{% set associations = Bake.aliasExtractor(modelObj, 'BelongsTo') %} +{% set associations = associations|merge(Bake.aliasExtractor(modelObj, 'BelongsToMany')) %} + +{%- for assoc in associations %} + {%- set otherName = Bake.getAssociatedTableAlias(modelObj, assoc) %} + {%- set otherPlural = otherName|variable %} + ${{ otherPlural }} = $this->{{ currentModelName }}->{{ otherName }}->find('list', ['limit' => 200]); + {{- "\n" }} + {%- set compact = compact|merge(["'#{otherPlural}'"]) %} +{% endfor %} + $this->set(compact({{ compact|join(', ')|raw }})); + } diff --git a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/edit.twig b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/edit.twig new file mode 100644 index 0000000..d06cb9c --- /dev/null +++ b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/edit.twig @@ -0,0 +1,49 @@ +{# +/** + * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) + * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * For full copyright and license information, please see the LICENSE.txt + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://cakephp.org CakePHP(tm) Project + * @since 2.0.0 + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ +#} +{% set belongsTo = Bake.aliasExtractor(modelObj, 'BelongsTo') %} +{% set belongsToMany = Bake.aliasExtractor(modelObj, 'belongsToMany') %} +{% set compact = ["'#{singularName}'"] %} + + /** + * Edit method + * + * @param string|null $id {{ singularHumanName }} id. + * @return \Cake\Http\Response|null Redirects on successful edit, renders view otherwise. + * @throws \Cake\Network\Exception\NotFoundException When record not found. + */ + public function edit($id = null) + { + ${{ singularName }} = $this->{{ currentModelName }}->get($id, [ + 'contain' => [{{ Bake.stringifyList(belongsToMany, {'indent': false})|raw }}] + ]); + if ($this->request->is(['patch', 'post', 'put'])) { + ${{ singularName }} = $this->{{ currentModelName }}->patchEntity(${{ singularName }}, $this->request->getData()); + if ($this->{{ currentModelName }}->save(${{ singularName }})) { + $this->Flash->success(__('The {{ singularHumanName|lower }} has been saved.')); + + return $this->redirect(['action' => 'index']); + } + $this->Flash->error(__('The {{ singularHumanName|lower }} could not be saved. Please, try again.')); + } +{% for assoc in belongsTo|merge(belongsToMany) %} + {%- set otherName = Bake.getAssociatedTableAlias(modelObj, assoc) %} + {%- set otherPlural = otherName|variable %} + ${{ otherPlural }} = $this->{{ currentModelName }}->{{ otherName }}->find('list', ['limit' => 200]); + {{- "\n" }} + {%- set compact = compact|merge(["'#{otherPlural}'"]) %} +{% endfor %} + $this->set(compact({{ compact|join(', ')|raw }})); + } diff --git a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/index.twig b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/index.twig new file mode 100644 index 0000000..181e830 --- /dev/null +++ b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/Controller/index.twig @@ -0,0 +1,33 @@ +{# +/** + * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) + * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * For full copyright and license information, please see the LICENSE.txt + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://cakephp.org CakePHP(tm) Project + * @since 2.0.0 + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ +#} + + /** + * Index method + * + * @return \Cake\Http\Response|void + */ + public function index() + { +{% set belongsTo = Bake.aliasExtractor(modelObj, 'BelongsTo') %} +{% if belongsTo %} + $this->paginate = [ + 'contain' => [{{ Bake.stringifyList(belongsTo, {'indent': false})|raw }}] + ]; +{% endif %} + ${{ pluralName }} = $this->paginate($this->{{ currentModelName }}); + + $this->set(compact('{{ pluralName }}')); + } diff --git a/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/form.twig b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/form.twig new file mode 100644 index 0000000..b2d9e50 --- /dev/null +++ b/fai_gestion/plugins/CustomTheme/src/Template/Bake/Element/form.twig @@ -0,0 +1,80 @@ +{# +/** + * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) + * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * For full copyright and license information, please see the LICENSE.txt + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://cakephp.org CakePHP(tm) Project + * @since 2.0.0 + * @license http://www.opensource.org/licenses/mit-license.php MIT License + */ +#} +{% set fields = Bake.filterFields(fields, schema, modelObject) %} + +
+ Form->create(${{ singularVar }}) ?> +
+ + Form->control('{{ field }}', ['options' => ${{ keyFields[field] }}, 'empty' => true]); + {{- "\n" }} + {%- else %} + echo $this->Form->control('{{ field }}', ['options' => ${{ keyFields[field] }}]); + {{- "\n" }} + {%- endif %} + {%- elseif field not in ['created', 'modified', 'updated'] %} + {%- set fieldData = Bake.columnData(field, schema) %} + {%- if fieldData.type in ['date', 'datetime', 'time'] and fieldData.null %} + echo $this->Form->control('{{ field }}', ['empty' => true]); + {{- "\n" }} + {%- else %} + echo $this->Form->control('{{ field }}'); + {{- "\n" }} + {%- endif %} + {%- endif %} +{%- endfor %} + +{%- if associations.BelongsToMany %} + {%- for assocName, assocData in associations.BelongsToMany %} + echo $this->Form->control('{{ assocData.property }}._ids', ['options' => ${{ assocData.variable }}]); + {{- "\n" }} + {%- endfor %} +{% endif %} + ?> +
+ Form->button(__('Submit')) ?> + Form->end() ?> +
-- cgit v1.1