diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index be130f9..f86dca6 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -75,6 +75,15 @@ class JsonController extends Controller $point->images = $tmp; } + $extraParams = $point->getExtraParams(); + if (!empty($extraParams)) { + $tmp = array(); + foreach ($extraParams as $extraParam) { + $tmp[] = array($extraParam->name, $extraParam->value); + } + $point->extraParams = $tmp; + } + $categories = Category::model()->getAll(array('order' => 'ord ASC', 'asArray' => true)); $point->categoryIcon = $categories[$point->categoryId]['icon']; @@ -183,6 +192,25 @@ class JsonController extends Controller $point->save(); } + ExtraParams::model()->delByPoint($id); + $params = isset($_POST['extraParamNames']) ? $_POST['extraParamNames'] : NULL; + $values = isset($_POST['extraParamValues']) ? $_POST['extraParamValues'] : NULL; + if ($params && $values) { + foreach ($params as $paramIndex => $param) { + $paramName = $param; + $paramValue = isset($values[$paramIndex]) ? $values[$paramIndex] : NULL; + + if ($paramName && $paramValue) { + ExtraParams::model()->add(array( + 'pointId' => $point->id, + 'name' => $paramName, + 'value' => $paramValue, + )); + } + } + } + + App::redirect('/?point=' . $id); } diff --git a/ground/models/ExtraParams.php b/ground/models/ExtraParams.php new file mode 100644 index 0000000..1fd2d4d --- /dev/null +++ b/ground/models/ExtraParams.php @@ -0,0 +1,22 @@ +_tableName_ = 'extraParams'; + parent::__construct($fromArray); + } + + static function model() + { + return new self(); + } + + public function delByPoint($pointId) + { + App::DB()->query('DELETE FROM `' . $this->_tableName_ . '` WHERE `pointId` = ' . $pointId); + } + +} diff --git a/ground/models/Point.php b/ground/models/Point.php index d0d7e89..792a0e2 100644 --- a/ground/models/Point.php +++ b/ground/models/Point.php @@ -106,4 +106,11 @@ class Point extends Model } } + public function getExtraParams() + { + return ExtraParams::model()->getAll(array( + 'where' => '`pointId` = '.$this->id, + 'order' => '`id` ASC', + )); + } } diff --git a/ground/views/modals/addPoint.php b/ground/views/modals/addPoint.php index 6aeb6e4..f7df02a 100644 --- a/ground/views/modals/addPoint.php +++ b/ground/views/modals/addPoint.php @@ -27,7 +27,11 @@
- + +
+ +
+
+ + diff --git a/public/css/style.css b/public/css/style.css index 4407528..4171e09 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -32,6 +32,13 @@ div.fotorama__caption div.fotorama__caption__wrap {padding: 0px 5px;} #addPointModal .extraImage .type.button:hover {background-color: #ddd;} #addPointModal .extraImage .input-group-addon.type.button {border-left: 0px;} +#addPointModal .extraParam .button {cursor: pointer; background-color: #eeeeee;} +#addPointModal .extraParam .remove:hover {background-color: #f4bfbf;} +#addPointModal .extraParam .add:hover {background-color: #bff4c8;} +#addPointModal .extraParam .type.button:hover {background-color: #ddd;} +#addPointModal .extraParam .input-group-addon.type.button {border-left: 0px;} +#addPointModal .extraParam input.form-control {width: 50%} + div.leaflet-popup-content div.control {margin-top: 7px;} div.leaflet-popup-content div.control a {min-width: 150px; color: #333; font-size: 14px; font-weight: normal;} div.leaflet-popup-content div.control a span.label {display: inline; font-size: 12px; font-weight: normal; color: #333;} diff --git a/public/js/app.js b/public/js/app.js index 3ef6fd8..ff41a96 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -399,6 +399,14 @@ function editPoint(id) addNewImage(pointsSources[id].img); } + if (pointsSources[id].extraParams != undefined) + { + for( var paramKey in pointsSources[id].extraParams ) + { + addNewExtraParam(pointsSources[id].extraParams[paramKey][0], pointsSources[id].extraParams[paramKey][1]) + } + } + closePopup(); $('#addPointModal').modal('show'); setStatus(statusEdit); diff --git a/public/js/map.js b/public/js/map.js index dad4a7b..8ccc8f5 100644 --- a/public/js/map.js +++ b/public/js/map.js @@ -369,6 +369,19 @@ function addNewImage(link) } } +function addNewExtraParam(name, value) +{ + if ($('.extraParam', '#addPointForm').length < 10) + { + $('.extraParam', '#newExtraParam').clone().appendTo('#extraParamsContainer').show(200); + if (name != undefined && value != undefined) + { + $('.form-control.names', '#addPointForm').last().val(name); + $('.form-control.values', '#addPointForm').last().val(value); + } + } +} + function removeInput(el) { container = $(el).parent().parent();