From 9435ebd29ace6c84e3201ccceef1e0f9847dd814 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Thu, 13 Aug 2015 11:06:04 +0300 Subject: [PATCH 01/49] =?UTF-8?q?FIX=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=20=D0=B8?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D1=80=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/js/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/app.js b/public/js/app.js index 245e661..261a0e8 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -146,7 +146,7 @@ window.addEventListener('popstate', function(e) setStatus(statusMovingInHistory); if (e.state.hasOwnProperty('pointId')) { - points[e.state.pointId].openPopup(); + showInfo(e.state.pointId); } else if (e.state.hasOwnProperty('zoom')) { From 1b9c8aa2df0e8f413538a83288f46384dd0be4b2 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Thu, 13 Aug 2015 11:16:26 +0300 Subject: [PATCH 02/49] FIX pushToHistory --- public/js/app.js | 2 +- public/js/map.js | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/public/js/app.js b/public/js/app.js index 261a0e8..3ef6fd8 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -146,7 +146,7 @@ window.addEventListener('popstate', function(e) setStatus(statusMovingInHistory); if (e.state.hasOwnProperty('pointId')) { - showInfo(e.state.pointId); + showInfo(e.state.pointId, false, true); } else if (e.state.hasOwnProperty('zoom')) { diff --git a/public/js/map.js b/public/js/map.js index 6faf704..bd6b179 100644 --- a/public/js/map.js +++ b/public/js/map.js @@ -229,13 +229,14 @@ function initPoints(useBounds) * @param {type} id * @returns {Boolean} */ -function showInfo(id, mapClick) +function showInfo(id, mapClick,doNotPushToHistory) { if (!(id in points)) { return false; } mapClick = Boolean(mapClick !== undefined && mapClick === true); // true если это клик по маркеру на карте + doNotPushToHistory = Boolean(doNotPushToHistory !== undefined && doNotPushToHistory === true); // true если НЕ добавляем в history marker = points[id]; if (!(id in pointsSources)) { @@ -248,11 +249,11 @@ function showInfo(id, mapClick) } }); } else { - drawInfoPopup(id, !mapClick); + drawInfoPopup(id, !mapClick, doNotPushToHistory); } } -function drawInfoPopup(id, showPopup) { +function drawInfoPopup(id, showPopup, doNotPushToHistory) { data = pointsSources[id]; if (typeof (data.images) == 'object') { @@ -307,7 +308,10 @@ function drawInfoPopup(id, showPopup) { marker.openPopup(); } - history.pushState({pointId: id}, document.title, "/?point=" + id); + if (!doNotPushToHistory) { + history.pushState({pointId: id}, document.title, "/?point=" + id); + } + document.title = marker.options.title; }); From 1f5da44e7414784c235d62c1d482919ce9218a8d Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 15:14:04 +0300 Subject: [PATCH 03/49] ADD Logs --- .gitignore | 2 ++ ground/app.php | 13 +++++++++++++ ground/controllers/JsonController.php | 2 +- logs/.gitKeep | 0 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 logs/.gitKeep diff --git a/.gitignore b/.gitignore index 492fe9e..fe5fff8 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ public/photos/big/*.jpg public/photos/big/*.jpeg public/photos/big/*.png public/photos/big/*.gif + +logs/*.log \ No newline at end of file diff --git a/ground/app.php b/ground/app.php index 8bbddf3..9fa910d 100644 --- a/ground/app.php +++ b/ground/app.php @@ -205,4 +205,17 @@ class App ); } + public static function log($logName, $value) + { + $fileName = App::getBasedir() . + 'logs/' . + $logName . '.log'; + + return file_put_contents( + $fileName, date('d-m-Y H:i:s') . " - " . + print_r($value, true) . + "\n-------------------\n", FILE_APPEND + ); + } + } diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index 1238e2e..18730b0 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -351,7 +351,7 @@ class JsonController extends Controller curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $out = null; - $out = curl_exec($ch); // выполняем запрос curl - обращаемся к сервера php.su + $out = curl_exec($ch); if (!empty($out)) { $obj = simplexml_load_string($out); diff --git a/logs/.gitKeep b/logs/.gitKeep new file mode 100644 index 0000000..e69de29 From f90dbddd335ffd7b2a4948b1c239efa5c2c7cd44 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 15:20:14 +0300 Subject: [PATCH 04/49] YandexSearch logging --- ground/app.php | 2 +- ground/controllers/JsonController.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ground/app.php b/ground/app.php index 9fa910d..72fbea0 100644 --- a/ground/app.php +++ b/ground/app.php @@ -208,7 +208,7 @@ class App public static function log($logName, $value) { $fileName = App::getBasedir() . - 'logs/' . + '../logs/' . $logName . '.log'; return file_put_contents( diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index 18730b0..ef34bfc 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -354,6 +354,7 @@ class JsonController extends Controller $out = curl_exec($ch); if (!empty($out)) { + App::log('yandexSearch', $out); $obj = simplexml_load_string($out); if (isset($obj->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found)) { From b805a7749c1da3fc0eca80abab81499ab0a9edc9 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 15:34:05 +0300 Subject: [PATCH 05/49] =?UTF-8?q?FIX=20=D0=B3=D0=B5=D0=BE-=D0=BF=D0=BE?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=20=D0=B2=20=D1=8F=D0=BD=D0=B4=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/JsonController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index ef34bfc..632f120 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -336,6 +336,7 @@ class JsonController extends Controller $results = array(); if ($search) { + App::log('searchQueries', $search); // ====== POINTS ============ $points = Point::model()->searchByString($search); if (!empty($points)) { @@ -344,17 +345,16 @@ class JsonController extends Controller } } - if (count($results) < 10) { + if (count($results) < 10 && strlen($search) > 5) { // ====== YANDEX ============ $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, 'http://geocode-maps.yandex.ru/1.x/?geocode=' . urlencode($search)); + curl_setopt($ch, CURLOPT_URL, 'https://geocode-maps.yandex.ru/1.x/?geocode=' . urlencode($search)); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $out = null; $out = curl_exec($ch); if (!empty($out)) { - App::log('yandexSearch', $out); $obj = simplexml_load_string($out); if (isset($obj->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found)) { From 59a6279212f3bdbdbe8f88b7b47e702fbb77363e Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 16:24:49 +0300 Subject: [PATCH 06/49] =?UTF-8?q?ADD=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BC=D0=B0=D1=81=D1=88=D1=82=D0=B0=D0=B1=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BA=D0=B0=D1=80=D1=82=D0=B5=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B5=20=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/js/mapPoint.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/mapPoint.js b/public/js/mapPoint.js index a45867f..fdc028a 100644 --- a/public/js/mapPoint.js +++ b/public/js/mapPoint.js @@ -42,7 +42,7 @@ ymaps.ready(function () { * @returns true */ function init(lat, lng) { - myMap = L.map('map', {zoomControl: false}).setView([lat, lng], defaultZoom); + myMap = L.map('map', {zoomControl: true}).setView([lat, lng], defaultZoom); markers = new L.MarkerClusterGroup({showCoverageOnHover: false, maxClusterRadius: 45}); layers['quest'] = L.tileLayer('http://otile1.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png', {attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA, Imagery © Mapbox', maxZoom: 18}); From 1348709a62f7c27f697b4d75510b373ca4d0ef8e Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 18:09:29 +0300 Subject: [PATCH 07/49] ADD Logo for APP --- source/logoApp.png | Bin 0 -> 46990 bytes source/logoApp.svg | 76 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 source/logoApp.png create mode 100644 source/logoApp.svg diff --git a/source/logoApp.png b/source/logoApp.png new file mode 100644 index 0000000000000000000000000000000000000000..9523da5c882e9d8f03f170388c008bd36b9a68b1 GIT binary patch literal 46990 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

>(iY}A9Lu{v_V$;X|){i5GDOlb^b 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ōdC|mwr0d8md_~X_o(?!#)sCcU3Onh9N=jGt(7SwIz zFcIPqlLx{oDF{muGCVSb7;#mr8<@du5L&Kkg|@8nJsS5<<2K5pga{$^{x3N+yg${R zzCZ-d=;fm|HE$9n=b-F{{xZL^*{1+!Dc;90kB3cR_m>GJ01kX1I4ISA_q(798YOb) zs2jiK%FD|EUP6Rb82A}!T59D2Tib27wcEB5=^2_*fo9HDpp#?pH+iE&|K&>A3`*_r zpFiCx4~#e>Dv>66aLv%54Ddx>& zzEGr@PnDIzs(aj<)B0k*hb3HrW=AG!!Gg5c$Crl8P zdX$c#En_Dr^QBM`#N$DMPHO1lcNMcBb?+w{n

ykq>0MegF)MxQdU*1dhKO#(5;T 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ðRS&i2#{NR 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 dy=EF;g1@a0m%5zvp8-8@p + + + + + + + + + image/svg+xml + + + + + + + + + + + + + From f50413b1d428ae24df89335bd9e75e49ada716c7 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 18:50:05 +0300 Subject: [PATCH 08/49] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB=20=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D1=83=20?= =?UTF-8?q?=D1=81=D1=81=D1=8B=D0=BB=D0=BE=D0=BA=20=D0=B2=20wiki-=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=BC=D0=B5=D1=82=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/classes/Helper.php | 31 +++++++++++++++++++++------ ground/controllers/JsonController.php | 2 +- ground/controllers/PageController.php | 4 ++-- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/ground/classes/Helper.php b/ground/classes/Helper.php index 404d866..86d2a8f 100644 --- a/ground/classes/Helper.php +++ b/ground/classes/Helper.php @@ -8,9 +8,15 @@ class Helper return (bool) $var; } - public static function replaceLinks($string, $linkTemplate = '/page/point/id/') + /** + * TYPES: 'clear','html','js' + * @param type $string + * @param type $replaceType + * @return type + */ + public static function replaceLinks($string, $replaceType = 'clear') { - preg_match_all("(\[#(\d+)[>\|](.*?)\])", $string, $links); + preg_match_all("((\[#(\d+)[>\|](.*?)\])|(\[#(\d+)\]))", $string, $links); $links = isset($links[0]) ? $links[0] : FALSE; if ($links) { foreach ($links as $link) { @@ -19,13 +25,26 @@ class Helper $idAndLink = explode($delimiter, $idAndLink); $linkId = $idAndLink[0]; - $linkName = isset($idAndLink[1]) ? $idAndLink[1] : ''; + $linkName = isset($idAndLink[1]) ? $idAndLink[1] : ''; if ($linkId) { $linkPoint = Point::model()->getByPK($linkId); - if ($linkPoint->id) { - $linkPoint->name = str_replace('"', 'ʺ', $linkPoint->name); - $string = str_replace($link, '' . $linkName . '', $string); + if ($linkPoint && $linkPoint->id) { + $linkTitle = str_replace('"', 'ʺ', $linkPoint->name); + + switch ($replaceType) { + case 'html': + $linkName = $linkName ? $linkName : ''; + $string = str_replace($link, '' . $linkName . '', $string); + break; + case 'js': + $linkName = $linkName ? $linkName : ''; + $string = str_replace($link, '' . $linkName . '', $string); + break; + default: + $string = str_replace($link, $linkName, $string); + break; + } } } } diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index 632f120..fbb15ce 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -53,7 +53,7 @@ class JsonController extends Controller $point = Point::model()->getByPK($id); $point->descriptionHtml = nl2br($point->description); - $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml, '/?point='); + $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml, 'js'); $point->name = htmlspecialchars($point->name); $point->moderate = $point->moderate ? 'show' : 'hide'; $imgs = $point->photos; diff --git a/ground/controllers/PageController.php b/ground/controllers/PageController.php index 7f558c5..928778f 100644 --- a/ground/controllers/PageController.php +++ b/ground/controllers/PageController.php @@ -124,7 +124,7 @@ class PageController extends Controller $point->categoryIcon = $categories[$point->categoryId]['icon']; $point->categoryName = $categories[$point->categoryId]['name']; - $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml); + $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml, 'html'); // preg_match_all("/.*?(([.?!](?:\s|$))|$)/s", $point->descriptionHtml, $items); preg_match_all("/.*?((([^.?!\s]{3,}?)[.?!](?:\s|$))|$)/s", $point->descriptionHtml, $items); $point->inFavorites = Favorite::model()->checkIsMy($pointId); @@ -220,7 +220,7 @@ class PageController extends Controller $categories = Category::model()->getAll(array('order' => 'ord ASC', 'asArray' => true)); - $point->descriptionHtml = Helper::replaceLinks($point->descriptionHtml); + $point->description = Helper::replaceLinks($point->description); self::renderPartial('vkPoint.php', array( 'point' => $point, From 1fe03b22407068437da0516230bf29ff70b6139c Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 18:52:45 +0300 Subject: [PATCH 09/49] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D1=83?= =?UTF-8?q?=20vkpoint=20-=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B0=D0=BD=D0=B3=D0=BB=D0=B8=D0=B9=D1=81=D0=BA=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=85=D1=8D=D1=88-=D1=82=D1=8D=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/views/vkPoint.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/views/vkPoint.php b/ground/views/vkPoint.php index 3e10837..6b0988e 100644 --- a/ground/views/vkPoint.php +++ b/ground/views/vkPoint.php @@ -9,4 +9,4 @@ foreach ($photos as $photo) {
Продолжить чтение и посмотреть на карте: http://wikipoints.ru/page/point/id/id ?>

-#wikipoints #выходные #путешествия #туризм # # # # +#wikipoints # # # # # # # # # # # # # # # # #выходные #путешествия #путешествие #туризм #weekend #travels #journey #tourism From 17478e1cb07455167b65fbb92fcbc22e71c68c26 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 29 Aug 2015 18:58:06 +0300 Subject: [PATCH 10/49] =?UTF-8?q?FIX=20-=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=BE=D1=85=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BC=D0=B0=D1=80=D1=88=D1=80?= =?UTF-8?q?=D1=83=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/JsonController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index fbb15ce..f0f66a5 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -254,6 +254,10 @@ class JsonController extends Controller static function actionSaveRoute() { + if (!(isset($_POST['name']) && $_POST['name'] && isset($_POST['points']) && $_POST['points'])) { + App::error404('Неправильное значение!'); + } + $request = array( 'author' => App::$user->id, 'date' => time(), From 7e1f42570423fb8fa37535844faf0b6ba7e23fcf Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sun, 30 Aug 2015 11:19:57 +0300 Subject: [PATCH 11/49] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20=D1=83=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20=D1=81=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=B9=20-=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/ArticlesController.php | 100 ++++++++++++++++++++++ ground/controllers/PageController.php | 14 +++ ground/views/articles/edit.php | 35 ++++++++ ground/views/articles/index.php | 31 +++++++ 4 files changed, 180 insertions(+) create mode 100644 ground/controllers/ArticlesController.php create mode 100644 ground/views/articles/edit.php create mode 100644 ground/views/articles/index.php diff --git a/ground/controllers/ArticlesController.php b/ground/controllers/ArticlesController.php new file mode 100644 index 0000000..7bd51f2 --- /dev/null +++ b/ground/controllers/ArticlesController.php @@ -0,0 +1,100 @@ +isAdmin) { + App::error404(); + } + // ------------------------------------------ + + $res = App::DB()->query("SELECT COUNT(`id`) pointsCount FROM `points`")->fetch(PDO::FETCH_ASSOC); + App::setConfig('title', $res['pointsCount'] . ' или даже больше поводов не сидеть дома'); + + self::render('articles/index.php', array( + 'categories' => $categories, + 'user' => App::$user, + 'articles' => Article::model()->getAll(), + 'randomPoint' => Point::model()->getRandom(), + )); + } + + static function actionEdit() + { + if (!App::$user || !App::$user->isAdmin) { + App::error404(); + } + + $articleId = (int) App::getParam('id'); + + self::$layout = 'layoutPage.php'; + self::addScript('/js/jquery-2.1.0.min.js'); + self::addScript('/js/jquery-ui-1.10.4.custom.min.js'); + self::addScript('/js/bootstrap.min.js'); + self::addScript('/js/app.js?ver=' . App::getConfig('version')); + self::addScript('http://cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.3/fotorama.js'); + self::addStyle('/css/style.css?ver=' . App::getConfig('version')); + self::addStyle('/css/pageStyle.css?ver=' . App::getConfig('version')); + self::addStyle('/css/bootstrap.min.css'); + self::addStyle('/css/bootstrap-theme.min.css'); + self::addStyle('http://cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.3/fotorama.css'); + + $article = Article::model()->getByPK($articleId); + + if (!$article) { + App::error404(); + } + + App::setConfig('title', $article->title . ' - wikipoints.ru'); + + self::render('articles/edit.php', array( + 'article' => $article, + 'randomPoint' => Point::model()->getRandom(), + )); + } + + static function actionSave() + { + if (!App::$user || !App::$user->isAdmin) { + App::error404(); + } + + if (!(isset($_POST['id']) && isset($_POST['title']) && isset($_POST['text']))) { + App::error404(); + } + + $id = (int) $_POST['id']; + $title = $_POST['title']; + $text = $_POST['text']; + $allowComments = (int) isset($_POST['allowComments']); + + $article = $id ? Article::model()->getByPK($id) : new Article(); + + if (!$article) { + App::error404(); + } + + if ($id == 0) { + $article->author = App::$user->id; + } + + $article->title = $title; + $article->text = $text; + $article->allowComments = $allowComments; + $article->save(); + + App::redirect('/articles'); + } + +} diff --git a/ground/controllers/PageController.php b/ground/controllers/PageController.php index 928778f..d753933 100644 --- a/ground/controllers/PageController.php +++ b/ground/controllers/PageController.php @@ -193,6 +193,7 @@ class PageController extends Controller } App::setConfig('title', $article->title . ' - wikipoints.ru'); + $article->text = nl2br(Helper::replaceLinks($article->text, 'html')); self::render('article.php', array( 'article' => $article, @@ -205,6 +206,19 @@ class PageController extends Controller } } + static function actionMyprofile() + { + $userId = App::$user ? App::$user->id : 0; + + die($userId); + } + +// static function actionProfile() +// { +// $userId = (int) App::getParam('user'); +// +// } + static function actionVkpoint() { $pointId = (int) App::getParam('id'); diff --git a/ground/views/articles/edit.php b/ground/views/articles/edit.php new file mode 100644 index 0000000..6da8dc8 --- /dev/null +++ b/ground/views/articles/edit.php @@ -0,0 +1,35 @@ +

+ +
+
+
+

Редактирование статьи

+
+ Вернуться: к списку статей / на карту. +
+
+
+ + +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+
+
+
+
diff --git a/ground/views/articles/index.php b/ground/views/articles/index.php new file mode 100644 index 0000000..a823bc1 --- /dev/null +++ b/ground/views/articles/index.php @@ -0,0 +1,31 @@ +
+ +
+
+ +
+ +
From a8e78d22ab7c074aef3bee20247c0368319d0588 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sun, 30 Aug 2015 12:45:52 +0300 Subject: [PATCH 12/49] =?UTF-8?q?=D0=A1=D1=81=D1=8B=D0=BB=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D1=82=D0=B0=D1=82=D1=8C=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D1=81=D0=BA=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=B0=D0=BA=D0=BA=D0=B0=D1=83=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/views/indexTemplate.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ground/views/indexTemplate.php b/ground/views/indexTemplate.php index d810ec0..9f3b638 100644 --- a/ground/views/indexTemplate.php +++ b/ground/views/indexTemplate.php @@ -36,6 +36,9 @@ if (App::$user) { Как пользоваться
Легенда
Список точек
+ isAdmin): ?> + Статьи
+
Случайная точка From bb58d29fecb0fd7cd7739841135ddc5943879fd5 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sun, 30 Aug 2015 12:56:02 +0300 Subject: [PATCH 13/49] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=81=D1=81=D1=8B=D0=BB=D0=BA=D0=B8=20=D0=BD=D0=B0=20=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=B3=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D1=84=D0=BE=D1=82=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/models/Photo.php | 9 +++++++++ ground/views/point.php | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ground/models/Photo.php b/ground/models/Photo.php index 26d04fc..3446570 100644 --- a/ground/models/Photo.php +++ b/ground/models/Photo.php @@ -16,4 +16,13 @@ class Photo extends Model return new self(); } + /** + * Возвращает ссылку на исходное изображение (если она есть) + * @return type + */ + function getOriginalLink() + { + $link = $this->link; + return $link ? $link->url : ''; + } } diff --git a/ground/views/point.php b/ground/views/point.php index 6158161..a9cfaaa 100644 --- a/ground/views/point.php +++ b/ground/views/point.php @@ -45,7 +45,7 @@ $index = 0; - + From d204f1835309032722deab007952200f6388cd42 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sun, 30 Aug 2015 13:21:36 +0300 Subject: [PATCH 14/49] =?UTF-8?q?FIX=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BB=D0=B8=D1=88=D0=BD=D1=8F=D1=8F=20=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/ArticlesController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/ground/controllers/ArticlesController.php b/ground/controllers/ArticlesController.php index 7bd51f2..5813beb 100644 --- a/ground/controllers/ArticlesController.php +++ b/ground/controllers/ArticlesController.php @@ -23,7 +23,6 @@ class ArticlesController extends Controller App::setConfig('title', $res['pointsCount'] . ' или даже больше поводов не сидеть дома'); self::render('articles/index.php', array( - 'categories' => $categories, 'user' => App::$user, 'articles' => Article::model()->getAll(), 'randomPoint' => Point::model()->getRandom(), From 88e9dffd5115e35a726c55f4ca014797e9447244 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sun, 30 Aug 2015 15:55:49 +0300 Subject: [PATCH 15/49] =?UTF-8?q?=D0=97=D0=B0=D0=BA=D0=BE=D0=BD=D1=87?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BA=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B2=20=D1=81=D1=82=D0=B0=D1=82=D1=8C=D1=8F=D1=85=20-=20?= =?UTF-8?q?=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=20=D0=BF=D0=BE=D1=80=D0=B5=D1=84?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D1=82=D1=8C,=20=D0=BD?= =?UTF-8?q?=D0=BE=20=D1=83=D0=B6=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/classes/Helper.php | 32 ++++++++++++++ ground/classes/Image.php | 6 ++- ground/classes/Model.php | 6 ++- ground/controllers/ImagesController.php | 28 ++++++++++++ ground/controllers/JsonController.php | 18 ++++++++ ground/controllers/PageController.php | 4 +- ground/models/ArticlePhotos.php | 18 ++++++++ ground/views/articles/edit.php | 59 ++++++++++++++++++++++++- public/css/style.css | 2 + 9 files changed, 168 insertions(+), 5 deletions(-) create mode 100644 ground/models/ArticlePhotos.php diff --git a/ground/classes/Helper.php b/ground/classes/Helper.php index 86d2a8f..9e217fd 100644 --- a/ground/classes/Helper.php +++ b/ground/classes/Helper.php @@ -53,6 +53,38 @@ class Helper return $string; } + public static function replaceImgs($string, $replaceType = 'clear') + { + preg_match_all("(\[img[\|]#(\d+)\])", $string, $images); + $images = isset($images[0]) ? $images[0] : FALSE; + if ($images) { + foreach ($images as $img) { + $imgAndId = mb_substr($img, 2, -1); + $imgAndId = explode('#', $imgAndId); + + $imgId = $imgAndId[1]; + + $imgObj = ArticlePhotos::model()->getByPK($imgId); + + if ($imgObj) { + switch ($replaceType) { + case 'html': + $imgObj->caption = $linkTitle = str_replace('"', 'ʺ', $imgObj->caption); + $imgTag = '
'; + $string = str_replace($img, $imgTag, $string); + break; + default: + $imgTag = ''; + $string = str_replace($img, $imgTag, $string); + break; + } + } + } + } + + return $string; + } + public static function buildOG($point) { $og = array(); diff --git a/ground/classes/Image.php b/ground/classes/Image.php index 6a29456..cd61dd4 100644 --- a/ground/classes/Image.php +++ b/ground/classes/Image.php @@ -29,15 +29,17 @@ class Image * Создаёт все требуемые размеры изображения и раскладывает их по папкам. * @param type $imgName */ - public static function createAllSizes($imgName) + public static function createAllSizes($imgName, $noWatermark = false, $folder = '') { $sizes = App::getConfig('images'); $pathInfo = pathinfo($_SERVER['SCRIPT_FILENAME']); - $uploaddir = $pathInfo['dirname'] . '/photos/'; + $uploaddir = $pathInfo['dirname'] . '/photos/' . $folder; $watermarkDir = App::getBasedir() . 'watermarks/'; foreach ($sizes as $dir => $size) { $watermark = isset($size[3]) ? $watermarkDir . $size[3] : ''; + $watermark = $noWatermark ? '' : $watermark; + self::imgResize( $uploaddir . $imgName, // Source - original image $uploaddir . $dir . '/' . $imgName, // Destination diff --git a/ground/classes/Model.php b/ground/classes/Model.php index d2850fa..2533b6d 100644 --- a/ground/classes/Model.php +++ b/ground/classes/Model.php @@ -154,7 +154,11 @@ abstract class Model $calledClass = get_called_class(); while ($res && $row = $res->fetch(PDO::FETCH_ASSOC)) { - $ready[$row[$this->_primaryKey_]] = isset($params['asArray']) && $params['asArray'] ? $row : new $calledClass($row); + if (isset($params['noKeys'])) { + $ready[] = isset($params['asArray']) && $params['asArray'] ? $row : new $calledClass($row); + } else { + $ready[$row[$this->_primaryKey_]] = isset($params['asArray']) && $params['asArray'] ? $row : new $calledClass($row); + } } return (isset($params['limit']) && $params['limit'] == 1) ? array_shift($ready) : $ready; diff --git a/ground/controllers/ImagesController.php b/ground/controllers/ImagesController.php index 860ea85..81f9f8e 100644 --- a/ground/controllers/ImagesController.php +++ b/ground/controllers/ImagesController.php @@ -45,4 +45,32 @@ class ImagesController extends Controller // print $photo; } + static function actionLoadPhoto() + { + if (isset($_FILES) && !empty($_FILES) && App::$user) { + $userId = App::$user->id; + $uploaddir = App::getBasedir() . '../public/photos/articles/'; + $fileName = (string)$_FILES['photo']['name']; + $temp = pathinfo($fileName); + $extension = strtolower($temp['extension']) ? strtolower($temp['extension']) : 'jpg'; + $photo = $userId . strtolower('_' . substr(md5($fileName . time()), 0, 5) . '.' . $extension); + if (move_uploaded_file($_FILES['photo']['tmp_name'], $uploaddir . $photo)) { + ArticlePhotos::model()->add(array( + 'name' => $photo, + 'owner' => $userId, + 'caption' => isset($_POST['caption'])?$_POST['caption']:'', + 'uploaded' => time(), + )); + + Image::createAllSizes($photo, true, 'articles/'); + + die($photo); + } + } else { + App::error404(); + } + + die; + } + } diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index f0f66a5..545e977 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -413,4 +413,22 @@ class JsonController extends Controller )); } + static function actionGetmyartphotos() + { + if (!App::$user) { + App::error404(); + } + + self::renderPartial('json.php', array( + 'data' => ArticlePhotos::model()->getAll( + array( + 'where'=>'`owner` = '.(int) App::$user->id, + 'order' => '`id` DESC', + 'asArray'=>true, + 'noKeys'=>true + ) + ) + )); + } + } diff --git a/ground/controllers/PageController.php b/ground/controllers/PageController.php index d753933..627870c 100644 --- a/ground/controllers/PageController.php +++ b/ground/controllers/PageController.php @@ -193,7 +193,9 @@ class PageController extends Controller } App::setConfig('title', $article->title . ' - wikipoints.ru'); - $article->text = nl2br(Helper::replaceLinks($article->text, 'html')); + $article->text = Helper::replaceLinks($article->text, 'html'); + $article->text = Helper::replaceImgs($article->text, 'html'); + $article->text = nl2br($article->text); self::render('article.php', array( 'article' => $article, diff --git a/ground/models/ArticlePhotos.php b/ground/models/ArticlePhotos.php new file mode 100644 index 0000000..e70f7f0 --- /dev/null +++ b/ground/models/ArticlePhotos.php @@ -0,0 +1,18 @@ +_tableName_ = 'articlePhotos'; + parent::__construct($fromArray); + $this->setRelation('authorUser', 'owner', 'User', 'id', self::TO_ONE); + } + + static function model() + { + return new self(); + } + +} diff --git a/ground/views/articles/edit.php b/ground/views/articles/edit.php index 6da8dc8..441fea2 100644 --- a/ground/views/articles/edit.php +++ b/ground/views/articles/edit.php @@ -1,3 +1,43 @@ +
@@ -18,7 +58,7 @@
- +
@@ -31,5 +71,22 @@
+
+
+ +
+ + +
+
+ +
+
+ +
+
+
+
+ diff --git a/public/css/style.css b/public/css/style.css index 7f746ce..ee0a3eb 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -92,6 +92,8 @@ div#box {background-image: url('/img/back.png'); background-repeat: no-repeat; b .pagePoinsNearCards {display: inline-block; overflow: hidden; padding: 0 2px 4px 2px;width: 186px; height: 139px;} .pagePoinsNearCardsImg {width: 186px; height: 139px;} +#photobank img {margin: 2px; border: solid 1px white;} +img.imageInArticle {border: solid 3px white;} /* -------------------------------------------*/ /* ------------- ADAPTIVE --------------------*/ From f0b9093f5b45acbeeec2ac2bdc02d938201cdce8 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sun, 30 Aug 2015 16:25:29 +0300 Subject: [PATCH 16/49] =?UTF-8?q?=D0=A7=D1=83=D1=82=D1=8C=20=D1=83=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=B5=D0=B5=20=D0=B4=D0=BB=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/views/articles/edit.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ground/views/articles/edit.php b/ground/views/articles/edit.php index 441fea2..0210a8b 100644 --- a/ground/views/articles/edit.php +++ b/ground/views/articles/edit.php @@ -1,5 +1,7 @@ - diff --git a/ground/views/layout.php b/ground/views/layout.php index e64d533..d60c943 100644 --- a/ground/views/layout.php +++ b/ground/views/layout.php @@ -4,58 +4,61 @@ prefix="og: http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#" xmlns:og="http://ogp.me/ns#"> - - <?= App::getConfig('title') ?> + + <?= App::getConfig('title') ?> - - - - - - - - - - - + + + + + + + + + + + + - - - - - - -
- -
- - - - + + + + + + +
+ +
- + + + - - - - - + - - - - - - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ground/views/layoutPage.php b/ground/views/layoutPage.php index 98c095a..531dc21 100644 --- a/ground/views/layoutPage.php +++ b/ground/views/layoutPage.php @@ -4,72 +4,74 @@ prefix="og: http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#" xmlns:og="http://ogp.me/ns#"> - - <?= App::getConfig('title') ?> + + <?= App::getConfig('title') ?> - - - - - + + + + + - - - - - + + + + + - - - + + + - - - - - - - - + + + + + + + + - + - - - - - - -
- -
- - - - - - \ No newline at end of file + height = width / 4 * 3; + $('.pagePoinsNearCards').width(width); + $('.pagePoinsNearCardsImg').width(width); + $('.pagePoinsNearCards').height(height); + $('.pagePoinsNearCardsImg').height(height); + } + + setSizeForAdditional(); + + $(window).resize(function () { + setSizeForAdditional(); + }); + + \ No newline at end of file diff --git a/ground/views/layoutPrint.php b/ground/views/layoutPrint.php index 1e59113..2ab78d4 100644 --- a/ground/views/layoutPrint.php +++ b/ground/views/layoutPrint.php @@ -1,32 +1,27 @@ - - <?= App::getConfig('title') ?> - - - - - - - - - - - - - - - - - + + <?= App::getConfig('title') ?> + + + + + - - - + + + + + + + + + +

WikiPoints.ru


diff --git a/ground/views/modals/addPoint.php b/ground/views/modals/addPoint.php index f5e2020..6aeb6e4 100644 --- a/ground/views/modals/addPoint.php +++ b/ground/views/modals/addPoint.php @@ -74,71 +74,3 @@ - diff --git a/public/js/map.js b/public/js/map.js index 5cb2ecb..8ed7e35 100644 --- a/public/js/map.js +++ b/public/js/map.js @@ -353,3 +353,91 @@ function showPointagreement() } }); } + +// =============== ADD POINT + +function addNewImage(link) +{ + if ($('.extraImage', '#addPointForm').length < 10) + { + $('.extraImage', '#newIm').clone().appendTo('#imgsContainer').show(200); + if (link != undefined) + { + $('.form-control.images', '#addPointForm').last().attr('readonly', 'readonly').val(link); + $('.input-group-addon.type.button', '#addPointForm').remove(); + } + } +} + +function removeInput(el) +{ + container = $(el).parent().parent(); + container.hide(300, function () { + container.remove() + }); +} + +function switchType(el) +{ + container = $(el).parent().parent(); + if (container.hasClass('asLink')) + { + $('.ordering', container).val('FILE'); + $('.ico span', container).removeClass('glyphicon-link').addClass('glyphicon-paperclip'); + $('.form-control.images', container).attr('type', 'file').attr('name', 'photos[]'); + $('.form-control.photoLinks', container).show(); + container.removeClass('asLink'); + el.attr('title', 'Указать ссылку на изображение'); + $('.input-group-addon.type.ico', container).attr('title', 'Загрузите файл с изображением'); + $('.input-group-addon.type.preview', container).hide(); + } + else + { + $('.ordering', container).val('LINK'); + $('.ico span', container).removeClass('glyphicon-paperclip').addClass('glyphicon-link'); + $('.form-control.images', container).attr('type', 'text').attr('name', 'imgs[]'); + $('.form-control.photoLinks', container).hide(); + container.addClass('asLink'); + el.attr('title', 'Загрузить файл'); + $('.input-group-addon.type.ico', container).attr('title', 'Укажите ссылку на изображение'); + $('.input-group-addon.type.preview', container).show(); + } +} + +function showPreview(el) { + img = $('input.images', el.parent()).val(); + + if ($('input.ordering', el.parent()).val() == 'FILE' || img.length < 12) { + return true; + } + + if (img.toLowerCase().indexOf('http') == -1) { + img = '/photos/small/' + img; + } + + $('#imgPreview').attr('src', img); + $('#imgPreview').show(); +} + +function hidePerview() { + $('#imgPreview').hide(); +} + +// ======================= VK Button + +$(document).ready(function () { + if ($.cookie('doNotShowVKgroup')) { + $('#vkBigLogo').remove(); + } else { + setTimeout(function () { + $('#vkBigLogo').css({'display': 'block'}).animate({'margin-left': "-225px"}, 1500); + }, 10000); + } +}) + +function hideBigLogo() { + $.cookie('doNotShowVKgroup', true, {expires: 100, path: '/'}); + $('#vkBigLogo').animate({'margin-left': "285px"}, 1500, function () { + $('#vkBigLogo').remove(); + }); +} From ce4c3904e2d2ef2c55c034fe95fa81205005f3eb Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Fri, 11 Sep 2015 15:59:39 +0300 Subject: [PATCH 36/49] =?UTF-8?q?FIX=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=20sitemap.xml=20-=20=D0=B4=D0=B0=D1=82=D1=8B=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=82=D0=BE=D1=87=D0=BA=D0=B8,=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=81=D1=81=D1=8B?= =?UTF-8?q?=D0=BB=D0=BA=D1=83=20=D0=BD=D0=B0=20=D0=B3=D0=BB=D0=B0=D0=B2?= =?UTF-8?q?=D0=BD=D1=83=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/IndexController.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ground/controllers/IndexController.php b/ground/controllers/IndexController.php index a5e3208..0a4f6c5 100644 --- a/ground/controllers/IndexController.php +++ b/ground/controllers/IndexController.php @@ -148,6 +148,12 @@ class IndexController extends Controller { $xml = new SimpleXMLElement(''); + $url = $xml->addChild('url'); + $url->addChild('loc', 'http://wikipoints.ru/'); + $url->addChild('lastmod', date("Y-m-d")); + $url->addChild('changefreq', "daily"); + $url->addChild('priority', "0.9"); + $articles = Article::model()->getAll(array('order' => 'ID DESC', 'asArray' => true)); foreach ($articles as $article) { $url = $xml->addChild('url'); @@ -161,7 +167,7 @@ class IndexController extends Controller foreach ($points as $point) { $url = $xml->addChild('url'); $url->addChild('loc', 'http://wikipoints.ru/page/point/id/' . $point['id']); - $url->addChild('lastmod', date("Y-m-d", $point['date'])); + $url->addChild('lastmod', date("Y-m-d", $point['dateEdit'])); $url->addChild('changefreq', "weekly"); $url->addChild('priority', "0.8"); } From 7454aa005fad6d13aac8e097c25ead5d065a4c28 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Fri, 11 Sep 2015 17:26:20 +0300 Subject: [PATCH 37/49] =?UTF-8?q?=D0=9E=D0=B1=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=B0=D1=80=D1=82=D0=B8=D0=BD=D0=BE=D0=BA=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=81=D1=82=D0=B0=D1=82=D0=B5=D0=B9;=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=B6=D0=B0=D0=B5=D0=BC=D1=8B=D1=85=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2-=D0=BA=D0=B0=D1=80=D1=82=D0=B8?= =?UTF-8?q?=D0=BD=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/ImagesController.php | 8 +++- ground/views/articles/edit.php | 53 ++++++++++++++----------- 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/ground/controllers/ImagesController.php b/ground/controllers/ImagesController.php index 81f9f8e..28671d9 100644 --- a/ground/controllers/ImagesController.php +++ b/ground/controllers/ImagesController.php @@ -52,7 +52,13 @@ class ImagesController extends Controller $uploaddir = App::getBasedir() . '../public/photos/articles/'; $fileName = (string)$_FILES['photo']['name']; $temp = pathinfo($fileName); - $extension = strtolower($temp['extension']) ? strtolower($temp['extension']) : 'jpg'; + $extension = strtolower($temp['extension']); + + if (array_search($extension, array('jpg','jpeg','png')) === FALSE || getimagesize($_FILES['photo']['tmp_name']) === false) { + print 'error'; + die; + } + $photo = $userId . strtolower('_' . substr(md5($fileName . time()), 0, 5) . '.' . $extension); if (move_uploaded_file($_FILES['photo']['tmp_name'], $uploaddir . $photo)) { ArticlePhotos::model()->add(array( diff --git a/ground/views/articles/edit.php b/ground/views/articles/edit.php index 3cd0638..05a483d 100644 --- a/ground/views/articles/edit.php +++ b/ground/views/articles/edit.php @@ -1,5 +1,10 @@
@@ -76,10 +81,10 @@ function insertAtCursor(myField, myValue) {
- +
- - + +
@@ -90,6 +95,6 @@ function insertAtCursor(myField, myValue) {
- +
From bc5ef80d6c1d4a2066cd6945b805ae753c726531 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Fri, 11 Sep 2015 17:52:36 +0300 Subject: [PATCH 38/49] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D0=B0=D0=BB=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8.=20=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B8=D1=82=D1=81=D1=8F?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BB-=D0=B2=D0=BE=20=D1=82=D0=BE=D1=87=D0=B5?= =?UTF-8?q?=D0=BA=20=D0=BD=D0=B0=20=D0=BA=D0=B0=D1=80=D1=82=D0=B5=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/app.php | 1 + ground/classes/Helper.php | 4 ++-- ground/controllers/ArticlesController.php | 3 +-- ground/controllers/IndexController.php | 13 +++++-------- ground/controllers/PageController.php | 3 +-- public/js/map.js | 4 ++-- 6 files changed, 12 insertions(+), 16 deletions(-) diff --git a/ground/app.php b/ground/app.php index 72fbea0..5787c6b 100644 --- a/ground/app.php +++ b/ground/app.php @@ -33,6 +33,7 @@ class App private static $DB = null; public static $user = null; public static $request = array(); + public static $defaultTitle = 'Лучшие выходные – это выходные в путешествии! – wikipoints.ru'; /** * Разбивает урл на контроллер, метод и выбирает параметры. diff --git a/ground/classes/Helper.php b/ground/classes/Helper.php index abe474f..833039d 100644 --- a/ground/classes/Helper.php +++ b/ground/classes/Helper.php @@ -115,7 +115,7 @@ class Helper $og['title'] = str_replace('"', 'ʺ', $point->name) . ' [wikipoints.ru]'; $point->description = str_replace('"', 'ʺ', $point->description); $og['description'] = mb_substr($point->description, 0, 99, 'UTF-8') . '…'; - $og['site_name'] = 'WikiPoints: Лучшие выходные - это выходные в путешествии!'; + $og['site_name'] = App::$defaultTitle; $og['type'] = 'website'; $og['url'] = 'http://wikipoints.ru/?point=' . $point->id; $og['image'] = $point->getImg('middle'); @@ -129,7 +129,7 @@ class Helper $og['title'] = str_replace('"', 'ʺ', $article->title) . ' [wikipoints.ru]'; $article->text = Markdown::getClear(str_replace('"', 'ʺ', $article->text)); $og['description'] = mb_substr($article->text, 0, 99, 'UTF-8') . '…'; - $og['site_name'] = 'WikiPoints: Лучшие выходные - это выходные в путешествии!'; + $og['site_name'] = App::$defaultTitle; $og['type'] = 'website'; $og['url'] = 'http://wikipoints.ru/page/article/id/' . $article->id; $og['image'] = $article->getImg('middle'); diff --git a/ground/controllers/ArticlesController.php b/ground/controllers/ArticlesController.php index beb4162..230c0da 100644 --- a/ground/controllers/ArticlesController.php +++ b/ground/controllers/ArticlesController.php @@ -19,8 +19,7 @@ class ArticlesController extends Controller } // ------------------------------------------ - $res = App::DB()->query("SELECT COUNT(`id`) pointsCount FROM `points`")->fetch(PDO::FETCH_ASSOC); - App::setConfig('title', $res['pointsCount'] . ' или даже больше поводов не сидеть дома'); + App::setConfig('title', App::$defaultTitle); self::render('articles/index.php', array( 'user' => App::$user, diff --git a/ground/controllers/IndexController.php b/ground/controllers/IndexController.php index 0a4f6c5..c8221c8 100644 --- a/ground/controllers/IndexController.php +++ b/ground/controllers/IndexController.php @@ -56,12 +56,9 @@ class IndexController extends Controller $favorites = Favorite::model()->getAllMy(); } + App::setConfig('title', App::$defaultTitle); + self::addVar('isAdmin', (int) (App::$user && App::$user->isAdmin == 1)); - - $res = App::DB()->query("SELECT COUNT(`id`) pointsCount FROM `points` where `moderate` = 1")->fetch(PDO::FETCH_ASSOC); - App::setConfig('title', $res['pointsCount'] . ' или даже больше поводов не сидеть дома'); - self::addVar('pointsCount', $res['pointsCount']); - self::addVar('pointLat', 0); self::addVar('pointLng', 0); @@ -86,11 +83,11 @@ class IndexController extends Controller self::addVar('pointLng', $point->lng); } else if (isset($_GET['point']) && $_GET['point'] && strtolower($_GET['point']) == 'random') { $og['title'] = 'Случайная точка на wikipoints.ru'; - $og['description'] = 'Загляните сюда: http://vk.com/wikipoints Случайная точка на карте - лучший способ узнать что-то новое!'; - $og['site_name'] = 'WikiPoints - ' . $res['pointsCount'] . ' или даже больше поводов не сидеть дома'; + $og['description'] = 'Случайная точка на карте – это лучший способ узнать что-то новое! - wikipoints.ru'; + $og['site_name'] = App::$defaultTitle; $og['type'] = 'article'; $og['url'] = 'http://wikipoints.ru/?point=random'; - $og['image'] = 'http://wikipoints.ru/img/compas.jpg'; + $og['image'] = 'http://wikipoints.ru/img/logo.png'; } self::render('indexTemplate.php', array( diff --git a/ground/controllers/PageController.php b/ground/controllers/PageController.php index edfaba1..dd71681 100644 --- a/ground/controllers/PageController.php +++ b/ground/controllers/PageController.php @@ -63,8 +63,7 @@ class PageController extends Controller $result[$id]['categoryIcon'] = $categories[$point->categoryId]->icon; } - $res = App::DB()->query("SELECT COUNT(`id`) pointsCount FROM `points`")->fetch(PDO::FETCH_ASSOC); - App::setConfig('title', $res['pointsCount'] . ' или даже больше поводов не сидеть дома'); + App::setConfig('title', App::$defaultTitle); self::render('pointsTemplate.php', array( 'categories' => $categories, diff --git a/public/js/map.js b/public/js/map.js index 8ed7e35..a910370 100644 --- a/public/js/map.js +++ b/public/js/map.js @@ -111,7 +111,7 @@ function init(lat, lng) { myMap.on('moveend', function (e) { if (!myMap._popup && $('#boxRoute').css('display') == 'none' && status != statusMovingInHistory) { - document.title = pointsCount + ' или даже больше поводов не сидеть дома'; + document.title = 'Лучшие выходные – это выходные в путешествии! – wikipoints.ru'; history.pushState({lat: myMap.getCenter().lat, lng: myMap.getCenter().lng, zoom: myMap.getZoom()}, document.title, "/?lat=" + myMap.getCenter().lat + "&lng=" + myMap.getCenter().lng + "&zoom=" + myMap.getZoom()); } @@ -312,7 +312,7 @@ function drawInfoPopup(id, showPopup, doNotPushToHistory) { history.pushState({pointId: id}, document.title, "/?point=" + id); } - document.title = marker.options.title; + document.title = marker.options.title + ' – wikipoints.ru'; }); return true; From 265f4ac87df690a962050cf357604666a7bb7ef0 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Fri, 11 Sep 2015 17:59:08 +0300 Subject: [PATCH 39/49] =?UTF-8?q?=D0=95=D1=89=D1=91=20=D0=BF=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/config_template.php | 2 +- ground/controllers/ArticlesController.php | 2 +- ground/controllers/IndexController.php | 4 ++-- ground/controllers/PageController.php | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ground/config_template.php b/ground/config_template.php index e54ae8e..dba4557 100644 --- a/ground/config_template.php +++ b/ground/config_template.php @@ -1,7 +1,7 @@ 'Интересные выходные вместе с wikipoints.ru', + 'title' => 'Лучшие выходные – это выходные в путешествии! – wikipoints.ru', 'DB' => array( 'host' => 'localhost', 'user' => 'root', diff --git a/ground/controllers/ArticlesController.php b/ground/controllers/ArticlesController.php index 230c0da..7cf0f0a 100644 --- a/ground/controllers/ArticlesController.php +++ b/ground/controllers/ArticlesController.php @@ -54,7 +54,7 @@ class ArticlesController extends Controller App::error404(); } - App::setConfig('title', $article->title . ' :: Статьи на wikipoints.ru'); + App::setConfig('title', 'Редактирование статьи – ' . $article->title . ' – wikipoints.ru'); self::render('articles/edit.php', array( 'article' => $article, diff --git a/ground/controllers/IndexController.php b/ground/controllers/IndexController.php index c8221c8..0c28402 100644 --- a/ground/controllers/IndexController.php +++ b/ground/controllers/IndexController.php @@ -82,8 +82,8 @@ class IndexController extends Controller self::addVar('pointLat', $point->lat); self::addVar('pointLng', $point->lng); } else if (isset($_GET['point']) && $_GET['point'] && strtolower($_GET['point']) == 'random') { - $og['title'] = 'Случайная точка на wikipoints.ru'; - $og['description'] = 'Случайная точка на карте – это лучший способ узнать что-то новое! - wikipoints.ru'; + $og['title'] = 'Случайная точка на карте wikipoints.ru'; + $og['description'] = 'Случайная точка на карте – это лучший способ узнать что-то новое! – wikipoints.ru'; $og['site_name'] = App::$defaultTitle; $og['type'] = 'article'; $og['url'] = 'http://wikipoints.ru/?point=random'; diff --git a/ground/controllers/PageController.php b/ground/controllers/PageController.php index dd71681..4189fba 100644 --- a/ground/controllers/PageController.php +++ b/ground/controllers/PageController.php @@ -114,7 +114,7 @@ class PageController extends Controller $point->descriptionHtml = nl2br($point->description); $point->name = htmlspecialchars($point->name); - App::setConfig('title', $point->name . ' - wikipoints.ru'); + App::setConfig('title', $point->name . ' – wikipoints.ru'); self::addVar('pointLat', $point->lat); self::addVar('pointLng', $point->lng); self::addVar('pointId', $point->id); @@ -191,7 +191,7 @@ class PageController extends Controller App::error404(); } - App::setConfig('title', $article->title . ' - wikipoints.ru'); + App::setConfig('title', $article->title . ' – wikipoints.ru'); $article->html = Helper::replaceLinks($article->html, 'html'); $article->html = Helper::replaceImgs($article->html, 'html'); From 67fea7e73888e2303670e46f15691b01eda651dd Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Fri, 11 Sep 2015 18:27:57 +0300 Subject: [PATCH 40/49] NEW favicon.ico --- public/favicon.ico | Bin 4946 -> 2238 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index 5d0cd5e46bd2f638509876b0edf742eb5ad46da8..f4c8eaf692dd08e1571013328c932598c66fb849 100644 GIT binary patch literal 2238 zcmeH|ODvpG6vzK)y{grxw))bC8Xc;bcBtw+=xArEooP#}!wlwzc*HC52$mudJ0cQ0 zB+`&rcr7e!#Unx@Vj(P$*bxgBUOnggW~vf)P1}V#`Of*D-~WDd?>+NnKERDWK|!GC zjUV1X000GDgrKF1`AH)rBm@eD0->RyP%4!O3kySdcsL>=A`lf7h3M#Ls8lMb)oR4V z#2_{{7IATL&}cN!YPHbmbkOVdNJvOPVqzi;1_O*nBTOa}l9Q8RHk)CwSdfyE0;|;u zo6QEh-HxoREI1qvT1-~)S$Mu7Ik%XsIRX_Lqh`^8ynHo)P&~dX0)`lptZFXZEbC6 zZ*NCOM+Z7PJJHqEh3@Wd^z`(gx3?F4eSPTf@5jKv00svKF*G!U;o)J7jErD(bQEJ_ zV;CPF$Hc@0CMPE`H8q9l>1oW&%wTqQ7ISlRn4h1=!omU;7ZWDL?JNAMb$pFNWh1 z9W36p6)hG14p+t5#OJ={A~(1)x+>0*Ox(W9D47dH{N~$zB=kx~Po%=zemKD(5!{i8 z^^9D-IrQ(##66u+oLnI2m!IL`M0!ToorOn+Yl5B$|0#zOv2Y=sK$^{Sf*D!d0iP@( zqDcFEVG``T-{wh0ptwuXBr^RdMT?shJ#F%YB+`f#I*QN5TP{+>3r9jzA zcublaX=WBC`PsfC&r!Q?Q~q?8f=-BR?wD^jPxwd*3KD#9Ue}A)eZMN^jtbh-!Q&|O)u+p}0fss%#!&OO(^CaD@LL@R%O3cWTPAZKM)(Jv9 zH`IxGAcT zBkHtqEg?Q&*RelBOSscZ<|YZE?zC|&?mno^fMXZ?K~)Cad#ggW93L{AYjO2KZ3a|~ z$*|K5yJ35_ApCHANYnd*&b=|kLHh($Nh;y3@<%CkPq~sFE)ZIY+@T<+-F7W0p}b) zC#X_YnW}6@v$dQZ9`kUvIrsQr_w(4nCbnU~vVG7pNrg|eXTyo4-o|a%rZhf8vIE0m z!Gz765SLUl#@bC8QDbZvv6k30e!+5>u*nPNCKG-l*v40E!+_;5VH1a-%8tFcH&Xd@ z^K_|LIYG)-jF%fr$J+IWYo|&5)|q{dm&0ccV8TY^=pXsS@BYqt^0D@&v{ql0hEuzx zEI%Zri$_b%#`He<;NioJng9CANquenI=Vi$$&&-i?3g^>koHF({P1t*Pn5=U`+vc; z_NMfVwAWY4%i~4%d@x6m=FYVF;Xhb2MXL5J_>E6IN|%k7_PRS#U%XK2iZT<%Cx5Ty zjg+sgZ(JX~eQK3!i$+P+`gD0vlp~28KQScNUR^ls@~PAu%$HlsQ{=_ASqU9K{L0mn zrDA=S{OIX%eRx-S$&SnOEm^(Bp8kI3pJ$!nsz^Y#@Bp$m%J@MZ|7WR`#aYM)}!m1hlUfa^uuTT zcMB#-^O-%;rq5e<=NFgHGr^i1jceNd@UcM*SpV-7=E(bpmxcAOr@Kp=Y8}1*cLYjs8sLE z>-Ak2Pd?)he;+(5Uh>cQ=6z6iw9uXd)@AbHU&WtXAO<`S=DUdX*_$Kb^(gTV_T~F0 z+}7Wmd-yQ<{`ueEpa1*&yHEQM;ua4v&nosh#2$7)#a@U#QKbEs*@yWpBksR+$*`0g zP~ihUu^000KSO%%S3$=nwqdyYPxu}mlJuI{6LDWWMV@0DhIjw1cs+jX75P3# Date: Fri, 11 Sep 2015 18:49:56 +0300 Subject: [PATCH 41/49] NEW favicon.ico --- public/favicon.ico | Bin 2238 -> 1150 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index f4c8eaf692dd08e1571013328c932598c66fb849..5fbf510624d24ff7f44840c26a23976548571b3b 100644 GIT binary patch literal 1150 zcmbW0u};G<5QeV;39)rzg^`g&%F;0pkUT>=v1Us)k~{<|PeUJ~LpL6v9V2x}W&F9h zVnvQXTy(Z`zW?{#`7E-q-*PE-e3I8&kp~fZwrWk*apo+YP=x5C7}+daIb#YGvxWzH+d}ru#)vY<&*P$+>R7 zEK74d9u2}8MGl99TdN-!Vjw4Lb1~yP41@Cz4ea4Fa-6kR{1cy^D`E^95_~ilYMSTy z9y~d!D4tn4b&pwV1D5+4@uB!RA93gU$z06W z__eR5^&8!OCgm78{rYhSQ560A{^$YQw;R6(S}$@%kwE`!z#^gkt*T1<#IV+wIcM6x t$}z?<`+mqX^nP3r>ht+)-NzRU*l$?2Iw}AF literal 2238 zcmeH|ODvpG6vzK)y{grxw))bC8Xc;bcBtw+=xArEooP#}!wlwzc*HC52$mudJ0cQ0 zB+`&rcr7e!#Unx@Vj(P$*bxgBUOnggW~vf)P1}V#`Of*D-~WDd?>+NnKERDWK|!GC zjUV1X000GDgrKF1`AH)rBm@eD0->RyP%4!O3kySdcsL>=A`lf7h3M#Ls8lMb)oR4V z#2_{{7IATL&}cN!YPHbmbkOVdNJvOPVqzi;1_O*nBTOa}l9Q8RHk)CwSdfyE0;|;u zo6QEh-HxoREI1qvT1-~)S$Mu7Ik%XsIRX_Lqh`^8ynHo)P&~dX0)`lptZFXZEbC6 zZ*NCOM+Z7PJJHqEh3@Wd^z`(gx3?F4eSPTf@5jKv00svKF*G!U;o)J7jErD(bQEJ_ zV;CPF$Hc@0CMPE`H8q9l>1oW&%wTqQ7ISlRn4h1=!omU;7ZWDL?JNAMb$pFNWh1 z9W36p6)hG14p+t5#OJ={A~(1)x+>0*Ox(W9D47dH{N~$zB=kx~Po%=zemKD(5!{i8 z^^9D-IrQ(##66u+oLnI2m!IL`M0!ToorOn+Yl5B$|0#zOv2Y=sK$^{Sf*D!d0iP@( zqDcFEVG``T-{wh0ptwuXBr^RdMT?shJ#F%YB+`f#I*QN5TP{+>3r9jzA zcublaX=WBC`PsfC&r!Q?Q~q?8f=-BR?wD^jPxwd*3KD#9Ue}A)eZMN^jtbh-!Q&|O)u+p}0fss%#!&OO(^CaD@LL@R%O3cWTPAZKM)(Jv9 z Date: Sat, 12 Sep 2015 10:36:41 +0300 Subject: [PATCH 42/49] =?UTF-8?q?ADD=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5,=20?= =?UTF-8?q?=D0=BA=D0=B0=D0=BA=20=D0=B2=20Ghost=20-=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D0=B0=D0=BB=D0=BB=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=BB=D0=B8=D1=81=D1=82=D1=8B=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5,=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=20=D0=BE=D1=82?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BC=D0=B0=D1=80=D0=BA?= =?UTF-8?q?-=D0=B4=D0=B0=D1=83=D0=BD=20=D1=82=D0=B5=D0=BA=D1=81=D1=82?= =?UTF-8?q?=D0=B0=20=D1=81=20=D0=BD=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=B7=D0=B0=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=BE?= =?UTF-8?q?=D0=B9=20(300=D0=BC=D1=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/ArticlesController.php | 17 ++++++++- ground/views/articles/edit.php | 43 +++++++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/ground/controllers/ArticlesController.php b/ground/controllers/ArticlesController.php index 7cf0f0a..31b8a7f 100644 --- a/ground/controllers/ArticlesController.php +++ b/ground/controllers/ArticlesController.php @@ -76,7 +76,7 @@ class ArticlesController extends Controller $title = strip_tags($_POST['title']); $text = str_replace(array('<','>'), array('<','>'), $_POST['text']); - $html = strip_tags($_POST['text']); + $html = strip_tags($_POST['text']); $html = str_replace(array('<','>',"'"), array('<','>','′'), $html); $html = Markdown::processing($html); $html = nl2br($html); @@ -103,4 +103,19 @@ class ArticlesController extends Controller App::redirect('/articles'); } + static function actionMarkdown() + { + if (isset($_POST['text']) ){ + $html = strip_tags($_POST['text']); + $html = str_replace(array('<','>',"'"), array('<','>','′'), $html); + $html = Markdown::processing($html); + $html = nl2br($html); + $html = Helper::replaceLinks($html, 'html'); + $html = Helper::replaceImgs($html, 'html'); + + print $html; + } + + die; + } } diff --git a/ground/views/articles/edit.php b/ground/views/articles/edit.php index 05a483d..8e283a4 100644 --- a/ground/views/articles/edit.php +++ b/ground/views/articles/edit.php @@ -47,7 +47,7 @@
-
+

Редактирование статьи

@@ -64,8 +64,18 @@
- - + + + + + +
+ + + +
+
+ *текст* **текст** ***текст*** http://ссылка.ру # заголвок1 ## заголовк2 ### заголовк3 [#512|ссылка на точку 512]
@@ -98,3 +108,30 @@
+ From 84ec7e2268fa4e0f0959bec7d6c538ae252ea0e6 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 12 Sep 2015 12:59:19 +0300 Subject: [PATCH 43/49] =?UTF-8?q?=D0=9E=D0=BF=D1=8F=D1=82=D1=8C=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BA=D0=BE=D0=BD=20=D0=B8=20=D0=B8=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D0=BA=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BB?= =?UTF-8?q?=D0=B0=D0=BD=D1=88=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/favicon.ico | Bin 1150 -> 3774 bytes public/img/touch-icon-ipad-retina.png | Bin 8834 -> 10042 bytes public/img/touch-icon-ipad.png | Bin 4234 -> 4705 bytes public/img/touch-icon-iphone-retina.png | Bin 6857 -> 7762 bytes public/img/touch-icon-iphone.png | Bin 3070 -> 3413 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/public/favicon.ico b/public/favicon.ico index 5fbf510624d24ff7f44840c26a23976548571b3b..a13252a58c94e01f6c34b6c4befe01ccdc741741 100644 GIT binary patch literal 3774 zcmds3XH*nf7XI9I5$JBZyNaL)GN1$zMNB9nDhL8%08zn!7(iEtQ5Y3i7R;Cvq6Aqa zIieUq6c7*tU<)0dIqNYUbI#eV>Z)o{$3OdT_Vuaz?z{K9;nlnMRRhhKU+2zXs6Gmf z08;=C%)^Kf&OEIAXT#Fc5>{4Lu(q~_jg1Z3wQC1kTU*%K*}>l49u5u;Xy3j)9336e zp+g5aIXR(Y$ByXKsS})?ote0u;o{(^`1tr>;J|_K z_4S3HpCA1F{V{0JAOr*iVDR9<7&2rCh7KKyVZ(+YFfb57K|vTkd^m!GgE3;n2#g## z5~D_qLP$smLPJ9_dh}?F88ZfB$BxCgapMpc7KZWT$0IyE91|u?z{H6YF=^5yOrAU$ z5fKrHjEuyTDN`_Y>QqddHVxCKPe)W#6lTnrftfRBB04%6F)=ZiHER}T&z_ArbLJp6 zHWqPlafpwPM?yjZ5)%`Vl$3Ee?As0Sb&8K7h=((MOeIeF_M#$v1G{- zEM2-3%a$#}^5x61V#NxqTD1zRSFgsJHEXbT?OLo`w+<;ODOkULJyKIsv0=joY}~jJ zX=!OlPftfiMg}r7GqGvYCS+x0Av-%8n>TMpPEHPTb90fGmxuiPd=wNEV9S;**t&Hq z3JVLdZQC|%-@YA1MMc=LV+VHa+J)lcVw9AWptQ6Ud-v|ezJ2>pR#t}c@^VyERAB%9 z{iv+0L{(K4s;jGU;J^VKJa`a?4jsbb!-sL?$Pv`m)}pSi4)yi*IC}Ib6bc0z8XC~p z*a)Rk36)9(wOS30Mgu|!jvqgc6DLmK@5-wl9j4M~J;Of<@xOVLtu3x{78#iv?=FOY9b?X*x-@c7IckbZs-MhGV z?;h^ozmEqG9^m1_hj{ep5gtE&j3-Z?;OWz+c=qfWoH&MSZhu zs$%#SAqUh;40$0Xr72M>3lkAV%f7?$OUbY5!C71NIFGWnev-C?DV4l7w1-*KC_28Q zBG~6x-?#vpHt95`fE>{KTO(6a>qSzcTIORd#AqF7&&P9E;aC;bsxeSPwJu?R^%1ia z%(Um9VGJeHjOALGj9$9Cjhr)<%`EOywNVz-QWV2NR2r5NwTdAJJtzkkIZYY)2syg536f_UvY1HI zoT~n1vpYi*CEzK89X~?9N|Zw#80mUbTY7 zVOI+_g35J}R-y^rX%eIuXZoX16Sfu4@qF>izjE zW5fF!EhZXefUH~)YiCvIPB(4mh?)iSiha=@_GbD95@xT2q)81t5(}$zHMQMbkLyQc z$#@>mOf~t*&pf(YT}($HTsHaNzYNOWco{Zq%f&Fvip_y5!TxI*buRd3KSW-h-kB2-)M+Z zsy*OegovzG6-LQA6;`*993C#AeT3@f?EYxMxTk6J%=FbdM+y3^Lsg{S#G5n((sYxI zlrh^Pxq2|RFl@yaA&LKo*CxhRVb7GmCQ@u$qjOZyOvK+lG$jq@t8gxzbc{tb_!cl! zJzwmv!|(AG?h=|V#AJ`tzqu-BjZftUHRKnX0V3B~7_EW{)P) z5tWww7g*}MhCd7@DKkqOsasKbW$C{u+R@yYg~+@~DRH7Lc=wDz^tJX_q1-@UU!N&< m-XARvCB$2I{p-wr&QLMQLNY%GHPx62z4Dj&qxOHA=zjq-Gmp~% literal 1150 zcmbW0u};G<5QeV;39)rzg^`g&%F;0pkUT>=v1Us)k~{<|PeUJ~LpL6v9V2x}W&F9h zVnvQXTy(Z`zW?{#`7E-q-*PE-e3I8&kp~fZwrWk*apo+YP=x5C7}+daIb#YGvxWzH+d}ru#)vY<&*P$+>R7 zEK74d9u2}8MGl99TdN-!Vjw4Lb1~yP41@Cz4ea4Fa-6kR{1cy^D`E^95_~ilYMSTy z9y~d!D4tn4b&pwV1D5+4@uB!RA93gU$z06W z__eR5^&8!OCgm78{rYhSQ560A{^$YQw;R6(S}$@%kwE`!z#^gkt*T1<#IV+wIcM6x t$}z?<`+mqX^nP3r>ht+)-NzRU*l$?2Iw}AF diff --git a/public/img/touch-icon-ipad-retina.png b/public/img/touch-icon-ipad-retina.png index 43caae497a4b22eff2f58000a2b8023713ffd6d4..91514cf68a6c7f6c85df420efefcdb722fb79073 100644 GIT binary patch literal 10042 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 B3UvSg literal 8834 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 delta 4179 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 literal 6857 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 EAKSS?Z2$lO diff --git a/public/img/touch-icon-iphone.png b/public/img/touch-icon-iphone.png index a50631739b1ecd8945dcf01073ea96d209c2f292..afdb7dec02ac3fcfb4a211aa426e54507c6a67c6 100644 GIT binary patch delta 3352 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 delta 3006 zcmV;v3qkbN8vYlMI|~CK0009Z0ZZeP^pQpTYU71mIdA4Zgc74Zj({E#0qFyH+H=IsnK^WF@Ody-BoSg8`tyU|?TgA4ziE zx^>LU%j29mbNYv7^dA5wKT<%m+5AV1Mq_&vZ~(Y!)hgPhw6v5qn~hCPP1Nah_Sx(O zkOe^JS3m#(VPRp19~Bq?Mnpugy}g|$PMly@SC(n~M7v#$U!%A2uEP!T~8ekB`S^pM8dtCr`R_ zH&YOV3v$I)UUCrFwTzP*DmzGPief_(x6pfwte|MIqzS6_XVTCJ7c+NJ%Q zZ@ytnObmDL-tE-h)YQb8GiUk&c@lu$Ye0j+u)`b2K|w(*EG#5RW@ctmf1}ZG`}XZF zAihddQxivx8s%%C+Tj%-fH+YURbK^DrcB{4zx*N(s<*e7SFc`uXgHEgPfsTRKJmm8 z{Q2jfxnRKpRX{-y`T;~M0s_#POs2*uQ>HK|C`i%a7hing7Z`Wa*Vo6bTeq^ZvXUhE z;K2jVn>Wv!S^QBEP?Dr9e@T*T4Gj%EbLI?9CX+{J?>to5rbAr?R7?!!LmA z*RQ9|W>dAZM_m=Q00?veG#ZVY0I`xgQ3;k-m0ssqaX-;{`u$G-{0>SD7$oac5=dm2|RxM zxT@{kxpN7CNl8guvSf)GV8d|0g#cJoRK$XU0$#dwi8h;!D_5?h!C)W&o;r1EL=cX7 z<#5@!aU)G8lYD|uf0A3bZn3Paj3n9C*5*wz5G@1h_4@r`VPSmm;DM9V#>PhZhRDcB zo;`ckXTaeval2GiRZ)^8E?c(DXP+dwa^*@jz)d6}3W6ZoY_{ZMuWU94KQ3U;wrEVy><8hn*IckbZGks~hcX=!Qb@9#%)e{!Dz~?{k7x#O+_=Fp zW5y`WpcQ}#09Gmiu2`|c#d&vkH#cwI%!Gsl?%cVP*RNmqIFS4I?^BW_=I7^=9DF$T zfxYs|DeZ|H?6c1@F)@+V)zzwf zIZ8}Sj1u5cNRrg0Hr2lDm5UcIa`x=mE#etZ>U3aWfID{VkduUnhzJf049M3H9y~~3u#AzNoz0$} zo)N*3S5D?Jm$sjB&%&RQJla!T}5dar0TIAGTU0qE83=IusNlA&%er+}z z&!0cf($Z2+pFUj)unIbz?ye_;v17-M2&}28e~D|>tdZ-PI-QQ^&!3mCuUogyX@#Vv zrFs2cCCQqa8gHYh1v;JXx+jB>kPx51Zr!@Y_uqe?fq{Y4Xf%wCjpfr%KP~&4J9n{Rs%c>n(tyb>dy_<^{FJ@+DCXXFE zf5y(vPLkwz-+kxSZ(d#=w`|$MXP$Y+sXabEo>f&ai>n5QUgo} zfZutuo=1{(^z`)5XfzT4M~@!O+qZA?f9ln%)M~ZdvSo|gdv4#p&HVg)zWnmboH%hJ zi;9Xo`p?M7P#gCP01%}Hmz0#m#>PgU0Uej;zJ2@T_O)x*GA=Go_5Qne@3OeK*y)&N zwOZxhF)=YTnM|GvWPJdF06@@aG#+0S0GOMb>oXkrzvUSpAMaFiX>M+&(P$jee@P-a zIhoPX(ag%qA^`5%wTrd2wTz348$RxHbU4u$DgllgH_qo8OmA;5jYcCSNs@C?N6E;@ za4GYvNoQxLQ$g5dGRb-Cz`y`2Dk_+nnQ6bi%MtJewPmVws&FSqjvOHXzW3gHZm+ks zwYe?xtBJ*8k?S+5si~}}s9;V`e-3Rn8~ghDc;LVRd+M1&$EsRTP|y`6z{to*e(=Eu zT(M$>(?0Md@4WL4AA9UEwzjrwaVE`dU`td?AgQFvu86kHI=oswVX9; zRy}|#82X68u`asan`jDvhYufC97KPAKh0*dQ(*CzY~H-tW1Oh0tn3D0e*>_FZVJDl zqA04KES`JrIo0#p$&)8JZ{9qwin(gi)z!u9>}+;)bg-nP#AEiN*XtP+6x0LY7Tgtn zhal6{0L^AI>+0$h2bGbL!P?r|hlV4`<;#~70K>z>85S1i%?kUI6Vot2jaI9zQgad( z7RK`Oa*}kLB!BzR;{ z!29>_`whxb3JVK;0bK0DGrVC4a<30gDM=FB+S(opq`$wPd-v{TUS1x_!IbUw*I)Mq z?r&~cJOBm(IODDJ(W6K6+i$;h3M!{hpZ4kRwc_Gp*HGJQB1vms5 zA&R2nXItUn;XHi!FmrQr84?oWa=oyykoEQTa_Qskx8EiJPM$oOB_$>N=%bIAn3(AH zUN7_-fQgC>N*9M9e}9F+cZ=Ij?Ee{FxNw0jEiGKSbg5fAQ55<3uSlxaDE*~>0if}Ef85?0I)El)Fqvg^baZ!7 zQIQ-yQ&UqPCD>H}2|kb4*Bgc)bpSR3Xa~UQ)2H{m_S$QY3hV}eKfs4iC?6Wo0o07a z&yIcmV9yKv4}c7K_(aQF6+8t6UqlcDBY+eDivhd{VC)E8UB+NAD<)a-&;tYf1L)#Z z5TY Date: Sat, 12 Sep 2015 13:16:35 +0300 Subject: [PATCH 44/49] =?UTF-8?q?=D0=A7=D1=83=D1=82=D1=8C=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BB=20=D0=BF=D0=B0=D1=80?= =?UTF-8?q?=D1=81=D0=B5=D1=80=20=D1=83=D1=80=D0=BB=D0=BE=D0=B2=20-=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D1=82=D0=BE=D1=87=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=86=D0=B5=20=D1=83=D1=80?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=B8=D0=B3=D0=BD=D0=BE=D1=80=D0=B8=D1=82=D1=81?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/classes/Markdown.php | 2 +- ground/views/articles/edit.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ground/classes/Markdown.php b/ground/classes/Markdown.php index aa4cff1..251067e 100644 --- a/ground/classes/Markdown.php +++ b/ground/classes/Markdown.php @@ -57,7 +57,7 @@ class Markdown static private function replaceUrls($string) { - $pr = '((https{0,1}:\/\/[\da-z\.-]+\.[a-z]{2,6})[\/\w\?=&#%+\.,-]*\/?)'; + $pr = '((https{0,1}:\/\/[\da-z\.-]+\.[a-z]{2,6})([\/\w\?=&#%+,-]|(\.[^\s]))*\/?)'; $rep = '$1'; return preg_replace($pr, $rep, $string); } diff --git a/ground/views/articles/edit.php b/ground/views/articles/edit.php index 8e283a4..98509fe 100644 --- a/ground/views/articles/edit.php +++ b/ground/views/articles/edit.php @@ -71,7 +71,7 @@ -
+
From 430ea5df5ac87861754a3a4dec4b4a0b17fd8c78 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 12 Sep 2015 23:15:30 +0300 Subject: [PATCH 45/49] =?UTF-8?q?FIX=20-=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=B8=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=B5=20=D0=BF=D0=BE=20=D0=BA=D0=BE=D0=BE=D1=80=D0=B4=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0=D1=82=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/controllers/JsonController.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php index 48afdde..be130f9 100644 --- a/ground/controllers/JsonController.php +++ b/ground/controllers/JsonController.php @@ -313,10 +313,13 @@ class JsonController extends Controller $res = @file_get_contents('http://geocode-maps.yandex.ru/1.x/?format=json&geocode=' . urlencode($address)); $res = json_decode($res, true); - if (isset($res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos'])) + if (isset($res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos'])) { $point = explode(' ', $res['response']['GeoObjectCollection']['featureMember'][0]['GeoObject']['Point']['pos']); - else + } else if (isset($res['response']['GeoObjectCollection']['metaDataProperty']['GeocoderResponseMetaData']['Point']['pos'])) { + $point = explode(' ', $res['response']['GeoObjectCollection']['metaDataProperty']['GeocoderResponseMetaData']['Point']['pos']); + } else { $point = array(0, 0); + } $coords = array(); $coords['lat'] = $point[1]; From 1f437e193deb755e4555ccb76fc18e497581298c Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 12 Sep 2015 23:16:21 +0300 Subject: [PATCH 46/49] =?UTF-8?q?=D0=9D=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B0=20?= =?UTF-8?q?=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D1=8C=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/views/articles/edit.php | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/ground/views/articles/edit.php b/ground/views/articles/edit.php index 98509fe..6cf3e52 100644 --- a/ground/views/articles/edit.php +++ b/ground/views/articles/edit.php @@ -22,6 +22,7 @@ articleText = document.getElementById('articleText'); imgText = '\n[img|#' + $(this).attr('photoid') + ']\n'; insertAtCursor(articleText, imgText); + markdown(); }); }); } @@ -68,10 +69,11 @@ - + - -
+ + +
@@ -111,12 +113,17 @@ From 1ae53539de29e165ff0a05cb01cd32e78041c534 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sat, 12 Sep 2015 23:27:17 +0300 Subject: [PATCH 47/49] =?UTF-8?q?FIX=20-=20=D0=B2=D0=B5=D1=80=D0=BD=D1=83?= =?UTF-8?q?=D0=BB=20=D0=9B=D0=B5=D0=B3=D0=B5=D0=BD=D0=B4=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/views/indexTemplate.php | 1 + 1 file changed, 1 insertion(+) diff --git a/ground/views/indexTemplate.php b/ground/views/indexTemplate.php index 90d8bf7..89effcb 100644 --- a/ground/views/indexTemplate.php +++ b/ground/views/indexTemplate.php @@ -114,6 +114,7 @@ if (App::$user) {
$categories), true) : '' ?> + $categories), true) : '' ?> From 70f77cbec9eab1e4a2e72dc4b8661949d2f70bf6 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sun, 13 Sep 2015 08:57:07 +0300 Subject: [PATCH 48/49] =?UTF-8?q?FIX=20=D0=9B=D0=B5=D0=B3=D0=B5=D0=BD?= =?UTF-8?q?=D0=B4=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=BD=D0=B5=D0=B7=D0=B0?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=B8=D0=BD=D0=B5=D0=BD=D0=BD=D1=8B=D1=85=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5?= =?UTF-8?q?=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ground/views/indexTemplate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ground/views/indexTemplate.php b/ground/views/indexTemplate.php index 89effcb..f945aba 100644 --- a/ground/views/indexTemplate.php +++ b/ground/views/indexTemplate.php @@ -114,7 +114,7 @@ if (App::$user) { $categories), true) : '' ?> - $categories), true) : '' ?> + $categories), true) ?> From 963839444ec3f0dcf5d07855b66cd9cbe286a1c9 Mon Sep 17 00:00:00 2001 From: Krivchikov Dmitry Date: Sun, 13 Sep 2015 08:57:41 +0300 Subject: [PATCH 49/49] =?UTF-8?q?=D0=A3=D0=BC=D0=B5=D0=BD=D1=8C=D1=88?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B4=D0=B8=D0=B0=D0=BC=D0=B5=D1=82=D1=80=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B8=20=D1=81=D0=BE=D1=81=D0=B5=D0=B4=D0=BD?= =?UTF-8?q?=D0=B8=D1=85=20=D1=82=D0=BE=D1=87=D0=B5=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/js/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/map.js b/public/js/map.js index a910370..bfccb70 100644 --- a/public/js/map.js +++ b/public/js/map.js @@ -63,7 +63,7 @@ ymaps.ready(function () { */ function init(lat, lng) { myMap = L.map('map', {zoomControl: false}).setView([lat, lng], defaultZoom); - markers = new L.MarkerClusterGroup({showCoverageOnHover: false, maxClusterRadius: 45}); + markers = new L.MarkerClusterGroup({showCoverageOnHover: false, maxClusterRadius: 30}); layers['quest'] = L.tileLayer('http://otile1.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png', {attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA, Imagery © Mapbox', maxZoom: 18}); layers['osm'] = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {attribution: 'Map data © OpenStreetMap contributors, CC-BY-SA, Imagery ©', maxZoom: 18});