Removed bugs in models (syntx errors) and changed Position to use abstract classes

This commit is contained in:
Christian Wolf 2019-04-18 14:45:07 +02:00
parent 6e1326240b
commit 47c81d3ce9
5 changed files with 27 additions and 134 deletions

View File

@ -1,108 +1,21 @@
<?php <?php
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Router\Route;
// No direct access. // No direct access.
defined('_JEXEC') or die; defined('_JEXEC') or die;
class ClubsControllerPosition extends BaseController class ClubsControllerPosition extends AbstractClubsController
{ {
protected function getNameOfElement()
function new()
{ {
$app = Factory::getApplication(); return 'position';
$input = $app->input;
$p = ClubsPosition::createPosition();
// Fetch the posted data
$name = $input->post->getString('name');
// Check the input data
$error = false;
// Check existence of the other fields
$fields = array('name'=>'Bezeichnung');
foreach ($fields as $f => $fname)
{
$fvalue = $$f;
if(! isset($fvalue) || empty(trim($fvalue)))
{
$app->enqueueMessage("Das Feld $fname ist obligatorisch.", 'error');
$error = true;
}
}
if($error)
{
$data = array();
foreach(array('name') as $i)
$data[$i] = $$i;
$urldata = urlencode(json_encode($data));
$this->setRedirect(Route::_('index.php?option=com_clubs&view=position&id=new&data=' . $urldata, false));
return;
}
$p->setName($name);
// Do the actual work
$p->save();
$this->setRedirect(Route::_('index.php?option=com_clubs&view=positions', false));
} }
function change() protected function getDataMapping()
{ {
$app = Factory::getApplication(); return array(
$input = $app->input; 'name'=>array('required'=>true, 'filter'=>'string', 'name'=>'Bezeichung')
$id = (int) $input->post->getInt('id'); );
$p = ClubsPosition::loadPosition((int) $id);
// Fetch the posted data
$name = $input->post->getString('name');
// Check the input data
$error = false;
// Check existence of the other fields
$fields = array('name'=>'Bezeichnung');
foreach ($fields as $f => $fname)
{
$fvalue = $$f;
if(! isset($fvalue) || empty(trim($fvalue)))
{
$app->enqueueMessage("Das Feld $fname ist obligatorisch.", 'error');
$error = true;
}
}
if($error)
{
$data = array();
foreach(array('name') as $i)
$data[$i] = $$i;
$urldata = urlencode(json_encode($data));
$this->setRedirect(Route::_('index.php?option=com_clubs&view=offer&id=' . $id . '&data=' . $urldata, false));
return;
}
$p->setName($name);
// Do the actual work
$p->save();
$this->setRedirect(Route::_('index.php?option=com_clubs&view=positions', false));
}
function delete()
{
$app = Factory::getApplication();
$id = $app->input->get->getInt('id');
$app->enqueueMessage("Removal of position with id $id.");
$user = ClubsPosition::loadPosition($id);
$user->delete();
$this->setRedirect(Route::_('index.php?option=com_clubs&view=positions', false));
} }
} }

View File

@ -4,7 +4,7 @@
defined('_JEXEC') or die; defined('_JEXEC') or die;
class ClubsPlace extends ClubsAbstractModel class ClubsPlace extends AbstractClubsModel
{ {
protected $name; protected $name;
protected $address; protected $address;

View File

@ -3,7 +3,7 @@
// No direct access. // No direct access.
defined('_JEXEC') or die; defined('_JEXEC') or die;
class ClubsPosition extends ClubsAbstractModel class ClubsPosition extends AbstractClubsModel
{ {
protected $name; protected $name;

View File

@ -8,16 +8,16 @@ defined('_JEXEC') or die;
?> ?>
<form method="post" action="<?php echo $this->address; ?>"> <form method="post" action="<?php echo $this->address; ?>">
<input type='hidden' name='id' value='<?php echo $this->position->getId(); ?>'> <input type='hidden' name='id' value='<?php echo $this->object->getId(); ?>'>
<table> <table>
<tr> <tr>
<td>Bezeichnung</td> <td>Bezeichnung</td>
<td><input type='text' name='name' value='<?php echo htmlentities($this->position->getName()); ?>'></td> <td><input type='text' name='name' value='<?php echo htmlentities($this->object->getName()); ?>'></td>
</tr> </tr>
<?php if(! $this->isNew): ?> <?php if(! $this->isNew): ?>
<tr> <tr>
<td>ID</td> <td>ID</td>
<td><?php echo $this->position->getId(); ?></td> <td><?php echo $this->object->getId(); ?></td>
</tr> </tr>
<?php endif; ?> <?php endif; ?>
</table> </table>

View File

@ -1,46 +1,26 @@
<?php <?php
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\View\HtmlView;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Toolbar\ToolbarHelper; use Joomla\CMS\Toolbar\ToolbarHelper;
// No direct access. // No direct access.
defined('_JEXEC') or die; defined('_JEXEC') or die;
class ClubsViewPosition extends HtmlView JLoader::register("ClubsControllerPosition", JPATH_ROOT . "/administrator/components/com_clubs/controllers/position.php");
class ClubsViewPosition extends AbstractClubsViewSingle
{ {
protected function getViewName()
{
return 'position';
}
protected function getElementController()
{
return new ClubsControllerPosition();
}
function display($tpl = null) function display($tpl = null)
{ {
$input = Factory::getApplication()->input;
$id = $input->get->get('id');
if($id === 'new')
{
$this->address = Route::_('index.php?option=com_clubs&task=position.new');
$this->position = ClubsPosition::createPosition();
$this->isNew = true;
}
else if(is_numeric($id))
{
$this->address = Route::_('index.php?option=com_clubs&task=position.change');
$this->position = ClubsPosition::loadPosition((int) $id);
$this->isNew = false;
}
else
throw new Exception('Need a position id.');
if($input->get->get('data', null, 'json') != null)
{
// Restore previous data
$dataurl = $input->get->get('data', null, 'json');
$data = json_decode($dataurl, true);
$this->position->setName($data['name']);
}
ToolbarHelper::title('Club-Management - Position'); ToolbarHelper::title('Club-Management - Position');
parent::display($tpl); parent::display($tpl);
} }