From 5a00e3e050aa1071d88ea71c3fb596d4920c7054 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 12 Apr 2014 20:15:56 +0400 Subject: [PATCH] =?UTF-8?q?AJAX=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=20=D1=82=D0=BE=D1=87=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/JsonController.php | 14 +++--- ground/views/indexTemplate.php | 20 ++++---- public/js/main.js | 71 ++++++++++++++++++++++++--- 3 files changed, 81 insertions(+), 24 deletions(-) diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index 2dbacac..b7667e5 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -73,13 +73,13 @@ class JsonController extends Controller { $errors = array(); - if(!( isset($_POST['name']) && $_POST['name'] && strlen($_POST['name']) > 1 )) $errors[]='Неверное название точки'; - if(!( isset($_POST['img']) && $_POST['img'] && strlen($_POST['img']) > 13 )) $errors[]='Плохая ссылка на изображение'; - if(!( isset($_POST['description']) && $_POST['description'] && strlen($_POST['description']) > 25 )) $errors[]='Слишком короткое описание'; - if(!( isset($_POST['categoryId']) && $_POST['categoryId'] )) $errors[]='Не задана категория точки'; - if(!( isset($_POST['source']) )) $errors[]='Не передано поле источкика информации. Допускается пустое значение.'; - if(!( isset($_POST['lat']) && $_POST['lat'] )) $errors[]='Ошибочное значение широты'; - if(!( isset($_POST['lng']) && $_POST['lng'] )) $errors[]='Ошибочное значение долготы'; + if(!( isset($_POST['name']) && $_POST['name'] && strlen($_POST['name']) > 1 )) $errors[1]='Неверное название точки'; + if(!( isset($_POST['img']) && $_POST['img'] && strlen($_POST['img']) > 13 )) $errors[2]='Плохая ссылка на изображение'; + if(!( isset($_POST['description']) && $_POST['description'] && strlen($_POST['description']) > 25 )) $errors[3]='Слишком короткое описание'; + if(!( isset($_POST['categoryId']) && $_POST['categoryId'] )) $errors[4]='Не задана категория точки'; + if(!( isset($_POST['source']) )) $errors[5]='Не передано поле источкика информации. Допускается пустое значение.'; + if(!( isset($_POST['lat']) && $_POST['lat'] )) $errors[6]='Ошибочное значение широты'; + if(!( isset($_POST['lng']) && $_POST['lng'] )) $errors[7]='Ошибочное значение долготы'; if (empty($errors)) { diff --git a/ground/views/indexTemplate.php b/ground/views/indexTemplate.php index 0d32b60..77eb1e1 100644 --- a/ground/views/indexTemplate.php +++ b/ground/views/indexTemplate.php @@ -18,7 +18,7 @@ - + @@ -34,21 +34,21 @@
- +
- +
- +
- @@ -56,17 +56,17 @@
- - + +
- - + +
diff --git a/public/js/main.js b/public/js/main.js index a389e28..df96c82 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -27,8 +27,8 @@ function init() { if ( $('#addPointButton').hasClass('btn-success') ) { coords = e.get('coordPosition'); - $('#lat').val(coords[0].toPrecision(11)); - $('#lng').val(coords[1].toPrecision(11)); + $('#addPointLat').val(coords[0].toPrecision(11)); + $('#addPointLng').val(coords[1].toPrecision(11)); $('#addPointModal').modal('show'); } } @@ -92,9 +92,7 @@ function initCategories() $.ajax({ url: "/json/categories/", success: function(data){ - for(var k in data) { - categories = categories + ''; - } + categories = data; } }); @@ -157,11 +155,70 @@ function showMeOnTheMap() }); } -function tryAddPoint(el) +function tryAddPoint() { - $(el).toggleClass('btn-success').toggleClass('btn-default'); + $('#addPointButton').toggleClass('btn-success').toggleClass('btn-default'); if ( $('#addPointButton').hasClass('btn-success') ) myMap.cursors.push('crosshair'); else myMap.cursors.push('arrow'); } + +function addPoint() +{ + $('.form-group').removeClass('has-error'); + $.ajax({ + type: "POST", + url: "/json/addpoint/", + data: { + name: $('#addPointName').val(), + img: $('#addPointImg').val(), + description: $('#addPointDescription').val(), + categoryId: $('#addPointCategoryId').val(), + source: $('#addPointSource').val(), + lat: $('#addPointLat').val(), + lng: $('#addPointLng').val() + }, + success: function(data) { + id = data; + points[id] = new ymaps.Placemark( + [$('#addPointLat').val(), $('#addPointLng').val()], { + hintContent: $('#addPointName').val(), + id: id + }, { + iconImageHref: categories[$('#addPointCategoryId').val()].icon, + iconImageSize: [32, 37], + openEmptyBalloon: true, + balloonCloseButton: false + }); + + points[id].events.add('click', function(e) { + showInfo(e.get('target').properties.get('id')); + }); + myMap.geoObjects.add(points[id]); + $('#addPointModal').modal('hide'); + $('#addPointButton').toggleClass('btn-success').toggleClass('btn-default'); + }, + error: function(data) { + response = data.responseJSON; + message = ''; + for (var k in response) { + if (typeof response[k] !== 'function') { + if (k == 1) + $('#addPointName').parent().addClass('has-error'); + else + if (k == 2) + $('#addPointImg').parent().addClass('has-error'); + else + if (k == 3) + $('#addPointDescription').parent().addClass('has-error'); + else + message += response[k] + '; '; + } + } + + if (message != '') + alert(message); + } + }); +}