Added Networksection
This commit is contained in:
@@ -65,6 +65,7 @@
|
||||
<ul class="nav nav-pills navtab-bg nav-justified">
|
||||
<li class="nav-item"><a class="nav-link active" href="#net-detail-<?=$network->id?>-detail" data-toggle="tab" aria-expanded="false">Details</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#net-detail-<?=$network->id?>-pops" data-toggle="tab" aria-expanded="false">POPs</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#net-detail-<?=$network->id?>-sections" data-toggle="tab" aria-expanded="false">Bauabschnitte</a></li>
|
||||
<li class="nav-item"><a class="nav-link" href="#net-detail-<?=$network->id?>-roles" data-toggle="tab" aria-expanded="false">Berechtigungen</a></li>
|
||||
</ul>
|
||||
<div class="tab-content">
|
||||
@@ -123,6 +124,38 @@
|
||||
<a class="btn btn-primary" href="<?=self::getUrl("Pop", "add", ['network_id' => $network->id])?>"><i class="fas fa-plus"></i> Neuen POP anlegen</a>
|
||||
</div>
|
||||
|
||||
<div id="net-detail-<?=$network->id?>-sections" class="tab-pane show active">
|
||||
<h4>Bauabschnitte in <strong><?=$network->name?></strong></h4>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form method="post" action="<?=self::getUrl("Networksection", "save")?>">
|
||||
<input type="hidden" name="network_id" value="<?=$network->id?>" />
|
||||
<table class="table table-bordered">
|
||||
<tr>
|
||||
<?php $i=1; foreach($network->sections as $section): ?>
|
||||
<td>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="sections[<?=$section->id?>]" value="<?=$section->name?>" />
|
||||
<div class="input-group-append">
|
||||
<button type="button" class="btn btn-danger" onclick="deleteSection(<?=$section->id?>)"><i class="fas fa-trash-alt"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<?php if($i > 0 && $i % 3 == 0): ?>
|
||||
</tr><tr>
|
||||
<?php endif; ?>
|
||||
<?php $i++; endforeach; ?>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3"><input type="text" class="form-control" name="sections[new]" value="" placeholder="Neuer Bauabschnitt" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="submit" class="btn btn-primary" value="Speichern" />
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="net-detail-<?=$network->id?>-roles" class="tab-pane">
|
||||
<h4>Berechtigungen</h4>
|
||||
<div class="card">
|
||||
@@ -260,6 +293,11 @@
|
||||
|
||||
//window.location.hash = "";
|
||||
|
||||
function deleteSection(id) {
|
||||
if(!confirm('Bauabschnitt wirklich löschen?')) return false;
|
||||
|
||||
window.location="<?=self::getUrl("Networksection","delete")?>/" + id;
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php include(realpath(dirname(__FILE__)."/../")."/footer.php"); ?>
|
||||
@@ -5,6 +5,7 @@ class Network extends mfBaseModel {
|
||||
private $pops;
|
||||
private $addresstypes;
|
||||
private $roles;
|
||||
private $sections;
|
||||
|
||||
public function loadAddresstypes() {
|
||||
if(!$this->id) {
|
||||
@@ -53,6 +54,15 @@ class Network extends mfBaseModel {
|
||||
}
|
||||
}
|
||||
|
||||
if($name == "sections") {
|
||||
if($this->id) {
|
||||
$this->sections = NetworksectionModel::search(['network_id' => $this->id]);
|
||||
return $this->sections;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
$classname = ucfirst($name);
|
||||
$idfield = $name."_id";
|
||||
$this->$name = new $classname($this->$idfield);
|
||||
|
||||
22
application/Networksection/Networksection.php
Normal file
22
application/Networksection/Networksection.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
class Networksection extends mfBaseModel {
|
||||
private $network;
|
||||
|
||||
public function getProperty($name) {
|
||||
if($this->$name == null) {
|
||||
|
||||
$classname = ucfirst($name);
|
||||
$idfield = $name."_id";
|
||||
$this->$name = new $classname($this->$idfield);
|
||||
|
||||
if($this->$name->id) {
|
||||
return $this->$name;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return $this->$name;
|
||||
}
|
||||
}
|
||||
64
application/Networksection/NetworksectionController.php
Normal file
64
application/Networksection/NetworksectionController.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
class NetworksectionController extends mfBaseController {
|
||||
|
||||
protected function saveAction() {
|
||||
$r = $this->request;
|
||||
//var_dump($r);exit;
|
||||
if(!$r->network_id) {
|
||||
$this->layout()->setFlash("Netzgebiet nicht gefunden", "error");
|
||||
$this->redirect("Network", "Index");
|
||||
}
|
||||
|
||||
$network_id = $r->network_id;
|
||||
$network = new Network($network_id);
|
||||
if(!$network->id) {
|
||||
$this->layout()->setFlash("Netzgebiet nicht gefunden", "error");
|
||||
$this->redirect("Network", "Index");
|
||||
}
|
||||
|
||||
$sections = $r->sections;
|
||||
|
||||
if(!is_array($sections) || !count($sections)) {
|
||||
$this->redirect("Network", "Index", [], "view=sections&net=".$network_id);
|
||||
|
||||
|
||||
}
|
||||
//var_dump($sections);exit;
|
||||
|
||||
foreach($sections as $section_id => $name) {
|
||||
if($section_id == "new") {
|
||||
$section = NetworksectionModel::create(["network_id" => $network_id, "name" => $name]);
|
||||
//var_dump($section);exit;
|
||||
$section->save();
|
||||
}
|
||||
}
|
||||
|
||||
$this->redirect("Network", "Index", [], "view=sections&net=".$network_id);
|
||||
|
||||
}
|
||||
|
||||
protected function deleteAction() {
|
||||
$id = $this->request->id;
|
||||
|
||||
if(!is_numeric($id) || !$id) {
|
||||
$this->layout()->setFlash("Bauabschnitt nicht gefunden", "error");
|
||||
$this->redirect("Network", "Index");
|
||||
}
|
||||
|
||||
$section = new Networksection($id);
|
||||
if(!$section->id) {
|
||||
$this->layout()->setFlash("Bauabschnitt nicht gefunden", "error");
|
||||
$this->redirect("Network", "Index");
|
||||
}
|
||||
|
||||
|
||||
|
||||
$network_id = $section->network_id;
|
||||
|
||||
$section->delete();
|
||||
|
||||
$this->layout()->setFlash("Bauabschnitt gelöscht", "success");
|
||||
$this->redirect("Network", "Index", [], "view=sections&net=".$network_id);
|
||||
}
|
||||
}
|
||||
121
application/Networksection/NetworksectionModel.php
Normal file
121
application/Networksection/NetworksectionModel.php
Normal file
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
class NetworksectionModel {
|
||||
public $network_id = null;
|
||||
public $name = null;
|
||||
|
||||
public $create_by = null;
|
||||
public $edit_by = null;
|
||||
public $create = null;
|
||||
public $edit = null;
|
||||
|
||||
public static function find($data) {
|
||||
|
||||
}
|
||||
|
||||
public static function create(Array $data) {
|
||||
$model = new Networksection();
|
||||
|
||||
foreach($data as $field => $value) {
|
||||
if(property_exists(get_called_class(), $field)) {
|
||||
$model->$field = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$me = new User();
|
||||
$me->loadMe();
|
||||
|
||||
if($model->create_by === null) {
|
||||
$model->create_by = $me->id;
|
||||
}
|
||||
if($model->edit_by === null) {
|
||||
$model->edit_by = $me->id;
|
||||
}
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
public static function getOne($id) {
|
||||
if(!is_numeric($id) || !$id) {
|
||||
throw new Exception("Invalid number", 400);
|
||||
}
|
||||
$item = [];
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$res = $db->select("Networksection", "*", "id=$id LIMIT 1");
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
$item = new Networksection($data);
|
||||
}
|
||||
return $item;
|
||||
}
|
||||
|
||||
public static function getAll() {
|
||||
$items = [];
|
||||
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$res = $db->select("Networksection", "*");
|
||||
if($db->num_rows($res)) {
|
||||
while($data = $db->fetch_object($res)) {
|
||||
$items[] = new Networksection($data);
|
||||
}
|
||||
}
|
||||
return $items;
|
||||
|
||||
}
|
||||
|
||||
public static function getFirst($filter) {
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$res = $db->select("Networksection", "*", "$where ORDER BY network_id, name");
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
$item = new Networksection($data);
|
||||
if($item->id) {
|
||||
return $item;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static function search($filter) {
|
||||
$items = [];
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$res = $db->select("Networksection", "*", "$where ORDER BY network_id, name");
|
||||
if($db->num_rows($res)) {
|
||||
while($data = $db->fetch_object($res)) {
|
||||
$items[] = new Networksection($data);
|
||||
}
|
||||
}
|
||||
return $items;
|
||||
}
|
||||
|
||||
private function getSqlFilter($filter) {
|
||||
$where = "1=1 ";
|
||||
|
||||
//var_dump($filter);exit;
|
||||
if(array_key_exists("network_id", $filter)) {
|
||||
$networkid = $filter['network_id'];
|
||||
if(is_numeric($networkid)) {
|
||||
$where .= " AND network_id=$networkid";
|
||||
}
|
||||
}
|
||||
|
||||
if(array_key_exists("name", $filter)) {
|
||||
$name = FronkDB::singleton()->escape($filter['name']);
|
||||
if($name) {
|
||||
$where .= " AND name='$name'";
|
||||
}
|
||||
}
|
||||
|
||||
//var_dump($filter, $where);exit;
|
||||
return $where;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -34,6 +34,16 @@ class PopModel {
|
||||
}
|
||||
}
|
||||
|
||||
$me = new User();
|
||||
$me->loadMe();
|
||||
|
||||
if($model->create_by === null) {
|
||||
$model->create_by = $me->id;
|
||||
}
|
||||
if($model->edit_by === null) {
|
||||
$model->edit_by = $me->id;
|
||||
}
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
|
||||
10
contrib/migrations/2021-07-20-networksection.sql
Normal file
10
contrib/migrations/2021-07-20-networksection.sql
Normal file
@@ -0,0 +1,10 @@
|
||||
CREATE TABLE `Networksection` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`network_id` int(11) NOT NULL,
|
||||
`name` varchar(1024) COLLATE utf8mb4_unicode_520_ci NOT NULL,
|
||||
`create_by` int(11) NOT NULL,
|
||||
`edit_by` int(11) NOT NULL,
|
||||
`create` int(10) NOT NULL,
|
||||
`edit` int(10) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci
|
||||
Reference in New Issue
Block a user