Added Networksection
This commit is contained in:
@@ -65,6 +65,7 @@
|
|||||||
<ul class="nav nav-pills navtab-bg nav-justified">
|
<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 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?>-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>
|
<li class="nav-item"><a class="nav-link" href="#net-detail-<?=$network->id?>-roles" data-toggle="tab" aria-expanded="false">Berechtigungen</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="tab-content">
|
<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>
|
<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>
|
||||||
|
|
||||||
|
<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">
|
<div id="net-detail-<?=$network->id?>-roles" class="tab-pane">
|
||||||
<h4>Berechtigungen</h4>
|
<h4>Berechtigungen</h4>
|
||||||
<div class="card">
|
<div class="card">
|
||||||
@@ -260,6 +293,11 @@
|
|||||||
|
|
||||||
//window.location.hash = "";
|
//window.location.hash = "";
|
||||||
|
|
||||||
|
function deleteSection(id) {
|
||||||
|
if(!confirm('Bauabschnitt wirklich löschen?')) return false;
|
||||||
|
|
||||||
|
window.location="<?=self::getUrl("Networksection","delete")?>/" + id;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<?php include(realpath(dirname(__FILE__)."/../")."/footer.php"); ?>
|
<?php include(realpath(dirname(__FILE__)."/../")."/footer.php"); ?>
|
||||||
@@ -5,6 +5,7 @@ class Network extends mfBaseModel {
|
|||||||
private $pops;
|
private $pops;
|
||||||
private $addresstypes;
|
private $addresstypes;
|
||||||
private $roles;
|
private $roles;
|
||||||
|
private $sections;
|
||||||
|
|
||||||
public function loadAddresstypes() {
|
public function loadAddresstypes() {
|
||||||
if(!$this->id) {
|
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);
|
$classname = ucfirst($name);
|
||||||
$idfield = $name."_id";
|
$idfield = $name."_id";
|
||||||
$this->$name = new $classname($this->$idfield);
|
$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;
|
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