Подправить скрипт выбора города

  • 8 Ответов
  • 253 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

misteri27

Всем привет.
На форуме http://joomlaforum.ru/index.php/topic,322226.0.html нашел скриптик выбора города для сайта.
Код
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<style>
#modal_form {
    width: 700px;
    height: 340px;
    border-radius: 5px;
    background: #fff;
    position: fixed;
    top: 45%;
    left: 50%;
    margin-top: -170px;
    margin-left: -350px;
    display: none;
    opacity: 0;
    z-index: 5;
    padding: 20px 10px;
}

#modal_form #modal_close {
    width: 21px;
    height: 21px;
    position: absolute;
top: 10px;
right: 10px;
cursor: pointer;
display: block;
}

#overlay {
z-index: 3;
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
cursor: pointer;
display: none;
}
#insol-map-modal{width:315px; height:315px;float:right;margin:10px;}
#spisok-gorodov{width:345px;height:460px;margin:10px;float:left;}
#spisok-gorodov table{width:100%;}
#spisok-gorodov td{text-decoration:underline;cursor:pointer;}
</style>

<div id="select-city-go">выбор города</div>
<div id="modal_form">
<span id="modal_close">X</span>
<div id="spisok-gorodov">
<table>
<tr><td>Архангельск</td><td>Омск</td></tr>
<tr><td>Астрахань</td><td>Орел</td></tr>
<tr><td>Барнаул</td><td>Оренбург</td></tr>
<tr><td>Владивосток</td><td>Пенза</td></tr>
<tr><td>Волгоград</td><td>Пермь</td></tr>
<tr><td>Вологда</td><td>Петрозаводск</td></tr>
<tr><td>Воронеж</td><td>Ростов-на-Дону</td></tr>
<tr><td>Екатеринбург</td><td>Рязань</td></tr>
<tr><td>Ижевск</td><td>Самара</td></tr>
<tr><td>Иркутск</td><td>Санкт-Петербург</td></tr>
<tr><td>Казань</td><td>Саратов</td></tr>
<tr><td>Кемерово</td><td>Тольятти</td></tr>
<tr><td>Красноярск</td><td>Томск</td></tr>
<tr><td>Краснодар</td><td>Тула</td></tr>
<tr><td>Липецк</td><td>Тюмень</td></tr>
<tr><td>Махачкала</td><td>Ульяновск</td></tr>
<tr><td>Москва</td><td>Уфа</td></tr>
<tr><td>Набережные Челны</td><td>Хабаровск</td></tr>
<tr><td>Нижний Новгород</td><td>Челябинск</td></tr>
<tr><td>Новокузнецк</td><td>Ялта</td></tr>
<tr><td>Новосибирск</td><td>Ярославль</td></tr>
</table>
</div>
<div id="insol-map-modal"></div>
</div>
<div id="overlay"></div>

<script>

jQuery('#select-city-go').click(function() {
jQuery('#overlay').fadeIn(400,
function(){
jQuery('#modal_form')
.css('display', 'block')
.animate({opacity: 1, top: '50%'}, 200);
});

jQuery('#select-city-go').click( function(event){
event.preventDefault();
jQuery('#overlay').fadeIn(400,
function(){
jQuery('#modal_form')
.css('display', 'block')
.animate({opacity: 1, top: '50%'}, 200);
});
});

jQuery('#modal_close, #overlay').click( function(){
jQuery('#modal_form')
.animate({opacity: 0, top: '45%'}, 200,
function(){
jQuery(this).css('display', 'none');
jQuery('#overlay').fadeOut(400);
}
);
});
});

  function setCookie(name, value) {
    document.cookie = name + "=" + value;
  }
  function getCookie(name) {
    var r = document.cookie.match("(^|;)?" + name + "=([^;]*)(;|$)");
    if (r) return r[2];
    else return "";
  }
  function deleteCookie(name) {
    var date = new Date();
    date.setTime(date.getTime() - 1);
    document.cookie = name += "=; expires=" + date.toGMTString();
  }

//jQuery("#spisok-gorodov td").click(function(){ alert(jQuery(this).text()); });

ymaps.ready(function () {
    geolocation = ymaps.geolocation;
    var myMapMod = new ymaps.Map('insol-map-modal', {
            center: [47.22, 39.71],
            zoom: 12,
            controls: []
        });

    geolocation.get({
        provider: 'yandex',
        mapStateAutoApply: true
    }).then(function (result) {
        result.geoObjects.options.set('preset', 'islands#blueIcon');
        myMapMod.geoObjects.add(result.geoObjects);
        var firstGeoObject = result.geoObjects.get(0);
        coords = firstGeoObject.geometry.getCoordinates();
        myMapMod.setZoom(12);
city_name=firstGeoObject.properties.get('name');
jQuery('#select-city-go').html(city_name);
        setCookie("city_name", city_name);
    });

jQuery("#spisok-gorodov td").click(function(){
city_click=jQuery(this).text();
jQuery('#select-city-go').html(city_click);
        setCookie("city_name", city_click);
    ymaps.geocode(city_click, { results: 1  }).then(function (res) {
            var firstGeoObject = res.geoObjects.get(0),
            coords = firstGeoObject.geometry.getCoordinates(),
            bounds = firstGeoObject.properties.get('boundedBy');
            myMapMod.geoObjects.add(firstGeoObject);
            myMapMod.setBounds(bounds, { checkZoomRange: true });
        });
});
   
        mySearchControl = new ymaps.control.SearchControl({
            options: {
                noPlacemark: true,
                position: { left: 0, top: 0 }
            }
        });
    // Результаты поиска будем помещать в коллекцию.
        mySearchResults = new ymaps.GeoObjectCollection(null, {
            hintContentLayout: ymaps.templateLayoutFactory.createClass('$[properties.name]')
        });
    myMapMod.controls.add(mySearchControl);
    myMapMod.geoObjects.add(mySearchResults);

    // Выбранный результат помещаем в коллекцию.
    mySearchControl.events.add('resultselect', function (e) {
        var index = e.get('index');
        var results = mySearchControl.getResultsArray(); coords = results[index].geometry.getCoordinates();
        myMapMod.setZoom(12);
        city_name=results[index].properties.get('name');
        jQuery('#select-city-go').html(city_name);
        setCookie("city_name", city_name);
        mySearchControl.getResult(index).then(function (res) {
           mySearchResults.add(res);
        });
        }).add('submit', function () {
            mySearchResults.removeAll();
        });
});
</script>
В принципе он мне нравиться, но при выборе города перейдя на другую страницу все сбивается и опять выскакивает город определенный по IP. И нужно как то по результатам выбора города потом выводить номер телефона . Но java я можно сказать вообще не знаю, по этому нужна помощь как его подправить. Если кто может подскажите? Если это только платно готов рассмотреть предложения .


*

misteri27

Re: Подправить скрипт выбора города
« Ответ #2 : 04.02.2017, 15:08:34 »
https://github.com/active-programming/mycityselector
При установке пишет
Код
Предупреждение

JInstaller: :Install: Файл не существует /var/www/xxxx/data/www/xxxxxxx.ru/tmp/install_5895a730aba7b/install_5895a731259c8/admin/robots.txt.php
Компонент Установить: Ошибка копирования файлов сайта.
Пакет Установить: В процессе установки произошла ошибка: com_mycityselector_v2024.zip
Не подскажите в чем проблема ? Неправильный путь не может быть. Другие расширения становятся без проблем .
« Последнее редактирование: 04.02.2017, 15:15:19 от misteri27 »

*

effrit

  • *****
  • 7438
  • [+]822 / [-]7
  • effrit.com
Re: Подправить скрипт выбора города
« Ответ #3 : 04.02.2017, 15:15:20 »
не подскажу. ставьте на локальный сервер, а потом разбирайтесь, что с хостингом, если на локалку встанет

*

beliyadm

  • ********
  • 8341
  • [+]1590 / [-]63
  • Севастополь == Россия
Re: Подправить скрипт выбора города
« Ответ #4 : 04.02.2017, 16:16:04 »
Но java я можно сказать вообще не знаю
Ну сколько можно, не путайте java и javascript - это разные языки.

А по вопросу - вам после перехода на другую страницу нужно из данных запроса (POST или GET) получать информацию и ставить активным нужную строку
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb

*

misteri27

Re: Подправить скрипт выбора города
« Ответ #5 : 05.02.2017, 23:57:30 »
Ну сколько можно, не путайте java и javascript - это разные языки.

А по вопросу - вам после перехода на другую страницу нужно из данных запроса (POST или GET) получать информацию и ставить активным нужную строку
Вы сами пишите сколько можно путать языки, я писал что я не знаю этот язык . И вы мне пишите такой ответ :) Как думаете, я понял как это сделать?

*

misteri27

Re: Подправить скрипт выбора города
« Ответ #6 : 21.02.2017, 15:46:48 »
Скрипт был переделан и работает во всех браузерах, кроме IE (EDGE) в них он сохраняет названия в другой кодировке, короче выводиться название города в виде
Цитировать
? ? ? ? ? ? ? ?
, и по этому дальнейшая их обработка не выходит. Привожу ниже сам скрипт и метод которым я его вызываю дальше для обработки.
Код
<div class="geolocation" style="float: left; padding: 3px 0px 0px;">
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<div style="float:left;">Ваш регион:&nbsp;&nbsp;</div><div style="float:left;" id="select-city-go">  выбор города</div>
<div id="modal_form">
<span id="modal_close">X</span>
<div id="spisok-gorodov">
<table>
<tr><td>Архангельск</td><td>Омск</td></tr>
<tr><td>Астрахань</td><td>Орел</td></tr>
<tr><td>Алматы</td><td>Оренбург</td></tr>
<tr><td>Владивосток</td><td>Пенза</td></tr>
<tr><td>Волгоград</td><td>Пермь</td></tr>
<tr><td>Вологда</td><td>Петрозаводск</td></tr>
<tr><td>Воронеж</td><td>Ростов-на-Дону</td></tr>
<tr><td>Екатеринбург</td><td>Рязань</td></tr>
<tr><td>Ижевск</td><td>Самара</td></tr>
<tr><td>Иркутск</td><td>Санкт-Петербург</td></tr>
<tr><td>Казань</td><td>Саратов</td></tr>
<tr><td>Кемерово</td><td>Тольятти</td></tr>
<tr><td>Красноярск</td><td>Томск</td></tr>
<tr><td>Краснодар</td><td>Тула</td></tr>
<tr><td>Липецк</td><td>Тюмень</td></tr>
<tr><td>Махачкала</td><td>Ульяновск</td></tr>
<tr><td>Москва</td><td>Уфа</td></tr>
<tr><td>Набережные Челны</td><td>Хабаровск</td></tr>
<tr><td>Нижний Новгород</td><td>Челябинск</td></tr>
<tr><td>Новокузнецк</td><td>Ялта</td></tr>
<tr><td>Новосибирск</td><td>Ярославль</td></tr>
</table>
<a class="button_geo" href=javascript:document.location.reload()>ВЫБРАТЬ</a>
</div>
<div id="insol-map-modal"></div>
</div>
<div id="overlay"></div>
 
<script charset="utf-8">
 var sBounds = [];
jQuery('#select-city-go').click(function() {
    jQuery('#overlay').fadeIn(400,
            function(){
                jQuery('#modal_form')
                    .css('display', 'block')
                    .animate({opacity: 1,}, 200,null,function() {
                        if (sBounds.length) myMapMod.setBounds(sBounds, { checkZoomRange: true });
                        sBounds = [];
                    });
        });
        
    jQuery('#select-city-go').click( function(event){
        event.preventDefault();
        jQuery('#overlay').fadeIn(400,
            function(){
                jQuery('#modal_form')
                    .css('display', 'block')
                    .animate({opacity: 1, top: '4%'}, 200);
        });
    });
 
    jQuery('#modal_close, #overlay').click( function(){
        jQuery('#modal_form')
            .animate({opacity: 0, top: '4%'}, 200,
                function(){
                    jQuery(this).css('display', 'none');
                    jQuery('#overlay').fadeOut(400);
                }
            );
    });
});
 
  function setCookie(name, value, seconds = 2592000) {
  var date = new Date(new Date().getTime() + seconds * 1000);
  document.cookie = name + "=" + value + ";path=/;expires=" + date.toUTCString();
}
  function getCookie(name) {
    var r = document.cookie.match("(^|;)?" + name + "=([^;]*)(;|$)");
    if (r) return r[2];
    else return "";
  }
  function deleteCookie(name) {
    var date = new Date();
    date.setTime(date.getTime() - 1);
    document.cookie = name += "=; expires=" + date.toGMTString();
  }
 
//jQuery("#spisok-gorodov td").click(function(){ alert(jQuery(this).text()); });
var myMapMod;
ymaps.ready(function () {
    geolocation = ymaps.geolocation;
    myMapMod = new ymaps.Map('insol-map-modal', {
            center: [47.22, 39.71],
            zoom: 12,
            controls: []
        });
    var city = getCookie('city_name');
    if (!city) {
        geolocation.get({
        provider: 'yandex',
        mapStateAutoApply: true
    }).then(function (result) {
        result.geoObjects.options.set('preset', 'islands#blueIcon');
        myMapMod.geoObjects.add(result.geoObjects);
        var firstGeoObject = result.geoObjects.get(0);
        coords = firstGeoObject.geometry.getCoordinates();
        myMapMod.setZoom(12);
        city_name=firstGeoObject.properties.get('name');
        jQuery('#select-city-go').html(city_name);
        setCookie("city_name", city_name);
    });
    } else {
        jQuery('#select-city-go').html(city);
        ymaps.geocode(city, { results: 1  }).then(function (res) {
            var firstGeoObject = res.geoObjects.get(0),
            coords = firstGeoObject.geometry.getCoordinates();
            sBounds = firstGeoObject.properties.get('boundedBy');
            myMapMod.geoObjects.add(firstGeoObject);
        });
    }
    
jQuery("#spisok-gorodov td").click(function(){
        city_click=jQuery(this).text();
        jQuery('#select-city-go').html(city_click);
        setCookie("city_name", city_click);
        ymaps.geocode(city_click, { results: 1  }).then(function (res) {
            var firstGeoObject = res.geoObjects.get(0),
            coords = firstGeoObject.geometry.getCoordinates(),
            bounds = firstGeoObject.properties.get('boundedBy');
            myMapMod.geoObjects.add(firstGeoObject);
            myMapMod.setBounds(bounds, { checkZoomRange: true });
        });
});
    
        mySearchControl = new ymaps.control.SearchControl({
            options: {
                noPlacemark: true,
                position: { left: 0, top: 0 }
            }
        });
    // Результаты поиска будем помещать в коллекцию.
        mySearchResults = new ymaps.GeoObjectCollection(null, {
            hintContentLayout: ymaps.templateLayoutFactory.createClass('$[properties.name]')
        });
    myMapMod.controls.add(mySearchControl);
    myMapMod.geoObjects.add(mySearchResults);
 
    // Выбранный результат помещаем в коллекцию.
    mySearchControl.events.add('resultselect', function (e) {
        var index = e.get('index');
        var results = mySearchControl.getResultsArray(); coords = results[index].geometry.getCoordinates();
        myMapMod.setZoom(12);
        city_name=results[index].properties.get('name');
        jQuery('#select-city-go').html(city_name);
        setCookie("city_name", city_name);
        mySearchControl.getResult(index).then(function (res) {
           mySearchResults.add(res);
        });
        }).add('submit', function () {
            mySearchResults.removeAll();
        });
});
</script>
</div>

Вызов в php
Код
$_COOKIE['city_name']
Кто подскажет как можно его заставить работать в IE ?  На сколько понял нужно либо кодировать, декодировать . Но как не могу сделать.

*

Septdir

  • *******
  • 2099
  • [+]106 / [-]0
  • JoomlaZen
Re: Подправить скрипт выбора города
« Ответ #7 : 21.02.2017, 15:49:42 »
Ну для начала получать его так
Код: php
JFactory::getApplication()->input->cookie->get('city_name');
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

misteri27

Re: Подправить скрипт выбора города
« Ответ #8 : 21.02.2017, 20:47:13 »
Ну для начала получать его так
Код: php
JFactory::getApplication()->input->cookie->get('city_name');
Ну если дамп массива с куками
Код
var_dump($_COOKIE)
выдает во всех нормально, а только в IE "���������" то я думаю, что его сохраняет уже так .