diff --git a/gmap/class.gmap.php b/gmap/class.gmap.php index 8106e64..d9fc3b2 100644 --- a/gmap/class.gmap.php +++ b/gmap/class.gmap.php @@ -54,6 +54,167 @@ class Gmap * ФУНКЦИИ АДМИНИСТРАТИВНОЙ ЧАСТИ */ + + /** + * КАТЕГОРИИ - СОЗДАНИЕ - ДОБАВЛЕНИЕ - РЕДАКТИРОВАНИЕ + */ + + + // Просмотр существующих категорий в админ панели + + function gmapCategoryShow($tpl_dir) + { + global $AVE_DB, $AVE_Template; + $gcats = array(); + $sql = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_gmap_category + + "); + //$row_gcat = $sql->FetchRow(); + while($row = $sql->FetchAssocArray()) + { + array_push($gcats, $row); + } + + + + + + $AVE_Template->assign('gcats', $gcats); + $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_gmap_category.tpl')); + + } + + // Редактирование маркеров + + function gmapMarkerEdit($tpl_dir, $id) + { + global $AVE_DB, $AVE_Template; + $gmarkers = array(); + $sql = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_gmap_markers + WHERE id = '" . (int)$id. "' + "); + + while($row = $sql->FetchAssocArray()) + { + array_push($gmarkers, $row); + } + + $gcats = array(); + $sql = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_gmap_category + + "); + //$row_gcat = $sql->FetchRow(); + while($row = $sql->FetchAssocArray()) + { + array_push($gcats, $row); + } + + + $AVE_Template->assign('gcats', $gcats); + + $AVE_Template->assign('gmarkers', $gmarkers); + $AVE_Template->assign('content', $AVE_Template->fetch($tpl_dir . 'admin_gmap_edit_marker.tpl')); + + } + + // Сохранение отредактированного маркера + + function gmapMarkerEditSave($id){ + if (isset($_POST['e_marker'])) + { + global $AVE_DB; + + + $markerDataE = $_POST['e_marker']; + $sql = "UPDATE " . PREFIX . "_module_gmap_markers + SET + id = '" . $markerDataE['id'] . "', + gmap_id = '" . $markerDataE['gmap_id'] . "', + latitude = '" . $markerDataE['latitude'] . "', + longitude = '" . $markerDataE['longitude'] . "', + title = '" . $markerDataE['title'] . "', + title_link = '" . $markerDataE['title_link'] . "', + marker_cat_id = '" . $markerDataE['marker_cat_id'] . "', + marker_cat_title = '" . $markerDataE['marker_cat_title'] . "', + marker_cat_link = '" . $markerDataE['marker_cat_link'] . "', + img_title = '" . $markerDataE['img_title'] . "', + marker_city = '" . $markerDataE['marker_city'] . "', + marker_street = '" . $markerDataE['marker_street'] . "', + marker_building = '" . $markerDataE['marker_building'] . "', + marker_dopfield = '" . $markerDataE['marker_dopfield'] . "', + marker_phone = '" . $markerDataE['marker_phone'] . "', + marker_www = '" . $markerDataE['marker_www'] . "', + image = '" . $markerDataE['image']. "' + WHERE id = '" . (int)$id. "' + "; + $AVE_DB->Query($sql); + //$markerDataE['id'] = $AVE_DB->InsertId(); + + echo json_encode($markerDataE); + exit; + } + + } + + // Добавление и сохранение новых категорий в админ панели модуля и вывод категории при создании + + function gmapCategoryNewAdd(){ + if (isset($_POST['category'])) + { + global $AVE_DB; + + + $categoryData = $_POST['category']; + $sql = " + INSERT + INTO " . PREFIX . "_module_gmap_category + SET + id = '', + gcat_title = '" . $categoryData['gcatnewadd'] . "', + gcat_link = '" . $categoryData['gct_link'] . "' + "; + $AVE_DB->Query($sql); + $categoryData['id'] = $AVE_DB->InsertId(); + + $sql = $AVE_DB->Query(" + SELECT gcat_title + FROM " . PREFIX . "_module_gmap_category + ORDER BY id DESC + LIMIT 1 + "); + $row_gcat = $sql->FetchRow(); + $categoryData['gcat_title'] = $row_gcat->gcat_title; + echo json_encode($categoryData); + exit; + } + + } + + /** + * Удаление категории + * + * @param int $id - идентификатор категории + */ + + function gmapCategoryDel($id){ + global $AVE_DB; + + $sql = "DELETE FROM " . PREFIX . "_module_gmap_category WHERE id = '" . (int)$id. "'"; + $AVE_DB->Query("DELETE FROM " . PREFIX . "_module_gmap_markers WHERE marker_cat_id = '" . (int)$id . "'"); + + $AVE_DB->Query($sql); + echo $id; + exit; + + + } + /** * Просмотр маркеров карты и добавление новых в админке * @@ -143,9 +304,25 @@ class Gmap $page_nav = ''; } + $gcats = array(); + $sql = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_module_gmap_category - - $AVE_Template->assign('api_key', GOOGLE_MAP_API_KEY); + "); + //$row_gcat = $sql->FetchRow(); + while($row = $sql->FetchAssocArray()) + { + array_push($gcats, $row); + } + + + + + + $AVE_Template->assign('gcats', $gcats); + $AVE_Template->assign('gcats_id', $row['id']); + $AVE_Template->assign('api_key', GOOGLE_MAP_API_KEY); $AVE_Template->assign('page_nav', $page_nav); $AVE_Template->assign('gmap', $row_gs); $AVE_Template->assign('gmap_id', $row_gs['id']); @@ -239,6 +416,17 @@ class Gmap latitude = '" . $markerData['latitude'] . "', longitude = '" . $markerData['longitude'] . "', title = '" . $markerData['title'] . "', + title_link = '" . $markerData['title_link'] . "', + marker_cat_id = '" . $markerData['marker_cat_id'] . "', + marker_cat_title = '" . $markerData['marker_cat_title'] . "', + marker_cat_link = '" . $markerData['marker_cat_link'] . "', + img_title = '" . $markerData['img_title'] . "', + marker_city = '" . $markerData['marker_city'] . "', + marker_street = '" . $markerData['marker_street'] . "', + marker_building = '" . $markerData['marker_building'] . "', + marker_dopfield = '" . $markerData['marker_dopfield'] . "', + marker_phone = '" . $markerData['marker_phone'] . "', + marker_www = '" . $markerData['marker_www'] . "', image = '" . $markerData['image']. "' "; $AVE_DB->Query($sql); @@ -307,11 +495,48 @@ class Gmap WHERE id = '" . $id . "' "); $row_gs = $sql->FetchRow(); - - echo $row_gs->title; + echo "
"; + if ($row_gs->img_title != '/modules/gmap/img/no_image.png'){ + echo ""; + } else { + echo ""; + } + echo ""; + + + + + + echo ""; + } + echo "
"; exit; - - } /** @@ -412,8 +637,6 @@ class Gmap header('Location:index.php?do=modules&action=modedit&mod=gmap&moduleaction=1&cp=' . SESSION); exit; } - - } ?> \ No newline at end of file diff --git a/gmap/fm.gmap.php b/gmap/fm.gmap.php new file mode 100644 index 0000000..48b03fb --- /dev/null +++ b/gmap/fm.gmap.php @@ -0,0 +1,491 @@ +"; + print_r($o); +} +function logger($cmd, $voumes, $result) { + $log = $cmd.": [".date("d.m H:s")."] ".$voumes[0]->id()." "; + + if (isset($voumes[1])) { + $log .= $voumes[1]->id()." "; + } + switch ($cmd) { + case "mkdir": + case "mkfile": + case "upload": + $log .= $result["added"][0]["name"]; + break; + case "rename": + $log .= "from ".$result["removedDetails"][0]["name"]." to ".$result["added"][0]["name"]; + break; + case "duplicate": + $log .= "src: ".$result["src"]["name"]." copy: ".$result["added"][0]["name"]; + break; + case "rm": + $log .= $result["removedDetails"][0]["name"]; + break; + default: + $log = ""; + } + if ($log && is_dir("../../../../cache/redactor") || @mkdir("../../../../cache/redactor")) { + $fp = fopen("../../../../cache/redactor/log.txt", "a"); + if ($fp) { + fwrite($fp, $log."\n"); + fclose($fp); + } + } + return $result; +} +class elFinderSimpleLogger { + public function write($cmd, $voumes, $result) { + $log = $cmd.": [".date("d.m H:s")."] ".$voumes[0]->id()." "; + + if (isset($voumes[1])) { + $log .= $voumes[1]->id()." "; + } + switch ($cmd) { + case "mkdir": + case "mkfile": + case "upload": + case "paste": + $log .= $result["added"][0]["name"]; + break; + case "rename": + $log .= "from ".$result["removedDetails"][0]["name"]." to ".$result["added"][0]["name"]; + break; + case "duplicate": + $log .= "src: ".$result["src"]["name"]." copy: ".$result["added"][0]["name"]; + break; + case "rm": + $log .= $result["removedDetails"][0]["name"]; + break; + default: + $log = ""; + } + if ($log && is_dir("../../../../cache/redactor") || @mkdir("../../../../cache/redactor")) { + $fp = fopen("../../../../cache/redactor/log.txt", "a"); + if ($fp) { + fwrite($fp, $log."\n"); + fclose($fp); + } + } + return $result; + } +} // END class +function access($attr, $path, $data, $volume) { + return strpos(basename($path), ".") === 0 + ? !($attr == "read" || $attr == "write") + : $attr == "read" || $attr == "write"; +} +class elFinderTestACL { + public function fsAccess($attr, $path, $data, $volume) { + + if ($volume->name() == "localfilesystem") { + return strpos(basename($path), ".") === 0 + ? !($attr == "read" || $attr == "write") + : $attr == "read" || $attr == "write"; + } + return true; + } +} +$acl = new elFinderTestACL(); +function validName($name) { + return strpos($name, ".") !== 0; +} +$opts = array( + "locale" => "en_US.UTF-8", + "bind" => array( + "mkdir mkfile rename duplicate upload rm paste" => array(new elFinderSimpleLogger(), "write"), + ), + "debug" => true, + "roots" => array( + array( + // "id" => "x5", + "driver" => "LocalFileSystem", // driver for accessing file system (REQUIRED) + "path" => "../../../../".UPLOAD_DIR, // path to files (REQUIRED) + "URL" => "/".UPLOAD_DIR."/", // URL to files (REQUIRED) + "alias" => UPLOAD_DIR, + "disabled" => array(), + "acceptedName" => "validName", + "uploadAllow" => array("all"), + "uploadDeny" => array("all"), + "uploadOrder" => "deny,allow", + "uploadOverwrite" => false, + "uploadMaxSize" => "128m", + "copyOverwrite" => false, + "copyJoin" => true, + "mimeDetect" => "internal", + "tmbCrop" => false, + "imgLib" => "gd", + "utf8fix" => true, + "attributes" => array( + array( + "pattern" => "/^\/\./", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => true + ), + array( + "pattern" => "/.tmb/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/\.php$/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/.quarantine/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/\.htaccess$/", + "write" => false, + "locked" => false, + "hidden" => true + ), + array( + "pattern" => "/.uploader/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/.temp/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ) + ), + ) + ) +); +header("Access-Control-Allow-Origin: *"); +$connector = new elFinderConnector(new elFinder($opts), true); +$connector->run(); +?>'; + + $gfo = fopen(BASE_DIR . "/lib/redactor/elfinder/php/connector_module_gmap.php", "w"); + flock($gfo,2); + fwrite($gfo, $gmfmen); + flock($gfo,3); + fclose($gfo); + chmod(BASE_DIR . "/lib/redactor/elfinder/php/connector_module_gmap.php", 0755); + +} + +if ($fmgmap == 'dir_uplgmi') +{ + $gmfmen = '"; + print_r($o); +} +function logger($cmd, $voumes, $result) { + $log = $cmd.": [".date("d.m H:s")."] ".$voumes[0]->id()." "; + + if (isset($voumes[1])) { + $log .= $voumes[1]->id()." "; + } + switch ($cmd) { + case "mkdir": + case "mkfile": + case "upload": + $log .= $result["added"][0]["name"]; + break; + case "rename": + $log .= "from ".$result["removedDetails"][0]["name"]." to ".$result["added"][0]["name"]; + break; + case "duplicate": + $log .= "src: ".$result["src"]["name"]." copy: ".$result["added"][0]["name"]; + break; + case "rm": + $log .= $result["removedDetails"][0]["name"]; + break; + default: + $log = ""; + } + if ($log && is_dir("../../../../cache/redactor") || @mkdir("../../../../cache/redactor")) { + $fp = fopen("../../../../cache/redactor/log.txt", "a"); + if ($fp) { + fwrite($fp, $log."\n"); + fclose($fp); + } + } + return $result; +} +class elFinderSimpleLogger { + public function write($cmd, $voumes, $result) { + $log = $cmd.": [".date("d.m H:s")."] ".$voumes[0]->id()." "; + + if (isset($voumes[1])) { + $log .= $voumes[1]->id()." "; + } + switch ($cmd) { + case "mkdir": + case "mkfile": + case "upload": + case "paste": + $log .= $result["added"][0]["name"]; + break; + case "rename": + $log .= "from ".$result["removedDetails"][0]["name"]." to ".$result["added"][0]["name"]; + break; + case "duplicate": + $log .= "src: ".$result["src"]["name"]." copy: ".$result["added"][0]["name"]; + break; + case "rm": + $log .= $result["removedDetails"][0]["name"]; + break; + default: + $log = ""; + } + if ($log && is_dir("../../../../cache/redactor") || @mkdir("../../../../cache/redactor")) { + $fp = fopen("../../../../cache/redactor/log.txt", "a"); + if ($fp) { + fwrite($fp, $log."\n"); + fclose($fp); + } + } + return $result; + } +} // END class +function access($attr, $path, $data, $volume) { + return strpos(basename($path), ".") === 0 + ? !($attr == "read" || $attr == "write") + : $attr == "read" || $attr == "write"; +} +class elFinderTestACL { + public function fsAccess($attr, $path, $data, $volume) { + + if ($volume->name() == "localfilesystem") { + return strpos(basename($path), ".") === 0 + ? !($attr == "read" || $attr == "write") + : $attr == "read" || $attr == "write"; + } + return true; + } +} +$acl = new elFinderTestACL(); +function validName($name) { + return strpos($name, ".") !== 0; +} +$opts = array( + "locale" => "en_US.UTF-8", + "bind" => array( + "mkdir mkfile rename duplicate upload rm paste" => array(new elFinderSimpleLogger(), "write"), + ), + "debug" => true, + "roots" => array( + array( + // "id" => "x5", + "driver" => "LocalFileSystem", // driver for accessing file system (REQUIRED) + "path" => "../../../../".UPLOAD_DIR, // path to files (REQUIRED) + "URL" => "/".UPLOAD_DIR."/", // URL to files (REQUIRED) + "alias" => UPLOAD_DIR, + "disabled" => array(), + "acceptedName" => "validName", + "uploadAllow" => array("all"), + "uploadDeny" => array("all"), + "uploadOrder" => "deny,allow", + "uploadOverwrite" => false, + "uploadMaxSize" => "128m", + "copyOverwrite" => false, + "copyJoin" => true, + "mimeDetect" => "internal", + "tmbCrop" => false, + "imgLib" => "gd", + "utf8fix" => true, + "attributes" => array( + array( + "pattern" => "/^\/\./", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => true + ), + array( + "pattern" => "/.tmb/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/\.php$/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/.quarantine/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/\.htaccess$/", + "write" => false, + "locked" => false, + "hidden" => true + ), + array( + "pattern" => "/.uploader/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/.temp/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ) + ), + ), + array( + // "id" => "x5", + "driver" => "LocalFileSystem", // driver for accessing file system (REQUIRED) + "path" => "../../../../modules/gmap/images", // path to files (REQUIRED) + "URL" => "/modules/gmap/images/", // URL to files (REQUIRED) + "alias" => "modules/gmap/images", + "disabled" => array(), + "acceptedName" => "validName", + "uploadAllow" => array("all"), + "uploadDeny" => array("all"), + "uploadOrder" => "deny,allow", + "uploadOverwrite" => false, + "uploadMaxSize" => "128m", + "copyOverwrite" => false, + "copyJoin" => true, + "mimeDetect" => "internal", + "tmbCrop" => false, + "imgLib" => "gd", + "utf8fix" => true, + "attributes" => array( + array( + "pattern" => "/^\/\./", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => true + ), + array( + "pattern" => "/.tmb/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/\.php$/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/.quarantine/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/\.htaccess$/", + "write" => false, + "locked" => false, + "hidden" => true + ), + array( + "pattern" => "/.uploader/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/.temp/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ) + ), + ), + ) +); +header("Access-Control-Allow-Origin: *"); +$connector = new elFinderConnector(new elFinder($opts), true); +$connector->run(); +?>'; + + $gfo = fopen(BASE_DIR . "/lib/redactor/elfinder/php/connector_module_gmap.php", "w"); + flock($gfo,2); + fwrite($gfo, $gmfmen); + flock($gfo,3); + fclose($gfo); + chmod(BASE_DIR . "/lib/redactor/elfinder/php/connector_module_gmap.php", 0755); +} + +if ($fmgmap != 'dir_upl' || $fmgmap != 'dir_uplgmi') +{ + header('Location:/index.php'); + exit; +} + + +?> \ No newline at end of file diff --git a/gmap/img/no_image.png b/gmap/img/no_image.png new file mode 100644 index 0000000..4b8a39a Binary files /dev/null and b/gmap/img/no_image.png differ diff --git a/gmap/img/phone.png b/gmap/img/phone.png new file mode 100644 index 0000000..27c1366 Binary files /dev/null and b/gmap/img/phone.png differ diff --git a/gmap/img/url.png b/gmap/img/url.png new file mode 100644 index 0000000..cedef23 Binary files /dev/null and b/gmap/img/url.png differ diff --git a/gmap/js/filemanager_gmap.js b/gmap/js/filemanager_gmap.js new file mode 100644 index 0000000..cec478a --- /dev/null +++ b/gmap/js/filemanager_gmap.js @@ -0,0 +1,22 @@ +$(function loadFM() { + // отдельный файловый менеджер + $('#finder').elfinder({ + url : ave_path+'lib/redactor/elfinder/php/connector_module_gmap.php', + lang : 'ru', + height : 300, + title : 'Файловый менеджер' + }).elfinder('instance'); + + $('#elFinder a').hover( + function () { + $('#elFinder a').animate({ + 'background-position' : '0 -45px' + }, 300); + }, + function () { + $('#elFinder a').delay(400).animate({ + 'background-position' : '0 0' + }, 300); + } + ); +}); diff --git a/gmap/js/filemanager_template.js b/gmap/js/filemanager_template.js new file mode 100644 index 0000000..3819291 --- /dev/null +++ b/gmap/js/filemanager_template.js @@ -0,0 +1,22 @@ +$(function() { + // отдельный файловый менеджер + $('#finder').elfinder({ + url : ave_path+'lib/redactor/elfinder/php/connector_template.php', + lang : 'ru', + height : 500, + title : 'Файловый менеджер' + }).elfinder('instance'); + + $('#elFinder a').hover( + function () { + $('#elFinder a').animate({ + 'background-position' : '0 -45px' + }, 300); + }, + function () { + $('#elFinder a').delay(400).animate({ + 'background-position' : '0 0' + }, 300); + } + ); +}); diff --git a/gmap/lang/ru.txt b/gmap/lang/ru.txt index 5353f56..fe0f188 100644 --- a/gmap/lang/ru.txt +++ b/gmap/lang/ru.txt @@ -18,16 +18,19 @@ CpTag = "Тег в системе" GmapMainAddress = "Адрес для центрирования карты" SetMarkerOnClick = "Создавать маркер по клику" GmapZoom = "Масштаб" -AddMarkers = "Действия с маркерами - добавить, удалить, изменить или удалить описание маркеров" -AddMarkerButton = "Добавить маркер" +AddMarkers = "Установка маркеров на карту" +AddMarkerButton = "Добавить и сохранить маркер" MarkerParam = "Параметры маркера" -MarkerSetVal = "Значения" -MarkerAdress = "Адрес" -MarkerDesc = "Описание" +MarkerSetVal = "Действия:" +MarkerAdress = "Местоположение *" +MarkerDesc = "Категория маркера" +Markercat_h = "Выберите категорию из выпадающего списка и нажмите Применить" +Markerimg_t = "Добавьте миниатюру изображения объекта маркера предпочтительны размеры 64х64px" Save = "Сохранить" Delete = "Удалить" -MarkerImage = "Изображение" -MarkerView = "Настройки маркеров на карте" +MarkerImage = "Изображение - маркер на карте *" +MarkerView = "Установка маркеров на карту" +MarkerAddmap = "Создание маркеров" EditGmap = "Редактирование настроек карты" DeleteGmap = "Удалить карту" DeleteGmapC = "Вы уверены, что хотите удалить данную карту?" @@ -45,6 +48,7 @@ SaveSuccess = "Успешно сохранены" SaveError = "Вызвали ошибку, попробуйте сохранить еще раз..." Gmap_edit = "Перейти в раздел управления маркерами" Gmap_esave = "Сохранить изменения" +Gmap_return_page = "На предыдущую страницу" Gmap_return = "Вернуться к списку карт" Gmap_maredit = "Управление маркерами" Gmap_mapedit = "Настройки карты" @@ -52,13 +56,71 @@ Gmap_marcount_no = "Маркеров нет" Gmap_marcount_info = "Количество маркеров на карте" Gmap_marcount_yes = "Маркеров на карте: " Gmap_copy_buf = "Скопировать тег в буфер обмена" -Gmap_edi_mark ="Настройки маркеров на карте" -Gmap_sv_mark ="Маркер" -Gmap_sv_mark1 ="успешно создан и сохранен" -Gmap_sv_mark2 ="Данные успешно сохранены" -Gmap_sv_mark3 ="выбранный маркер успешно удален!" -Gmap_api_key_no ="В системе не установлен GOOGLE MAP API KEY. Пожалуйста, установите ключ в системных настройках." -Gmap_api_key ="Используется GOOGLE MAP API KEY : " -Gmap_link_set_api_key ="Перейти в системные настройки и установить GOOGLE MAP API KEY
После установки ключа в систему, Вы можете начать работу с модулем." -Gmap_link_get_api_key ="Перейти в Google Maps API и получить API KEY" -Gmap_link_get_api_info ="Переход по внешней ссылке, откроется в новом окне." \ No newline at end of file +Gmap_edi_mark = "Установка маркеров на карту" +Gmap_sv_mark = "Маркер" +Gmap_sv_mark1 = "успешно создан и сохранен" +Gmap_sv_mark2 = "Данные успешно сохранены" +Gmap_sv_mark3 = "выбранный маркер успешно удален!" +Gmap_api_key_no = "В системе не установлен GOOGLE MAP API KEY. Пожалуйста, установите ключ в системных настройках." +Gmap_api_key = "Используется GOOGLE MAP API KEY : " +Gmap_link_set_api_key = "Перейти в системные настройки и установить GOOGLE MAP API KEY
После установки ключа в систему, Вы можете начать работу с модулем." +Gmap_link_get_api_key = "Перейти в Google Maps API и получить API KEY" +Gmap_link_get_api_info = "Переход по внешней ссылке, откроется в новом окне." +Gmap_fm_inf = "Настройки файлового менеджера. Клик по кнопке - запомнить и подключить только директорию" +Gmap_fm_inf1 = "UPLOADS" +Gmap_fm_inf2 = "или директории" +Gmap_fm_inf3 = "UPLOADS + modules/gmap/images" +Gmap_fm = "Файловый менеджер" +Gmap_img_title = "Изображение объекта маркера" +Gmap_load_img_title = "Посмотреть на сервере" +Gmap_doc_title = "Документ маркера" +Gmap_btn_doc_title = "Связать с документом" +Gmap_link_single_marker = "Ссылка на документ, принадлежащий этому маркеру. Например: маркер на карте указывает на Московский зоопарк, далее вы создаете (или уже создали) документ Московский зоопарк, затем выбираете этот документ кликом по кнопке Связать с документом. Также вы можете просто ввести название с клавиатуры в это поле." +Gmap_link_single_image = "Изображение объекта маркера. Корневой директорией для хранения изображений является директория UPLOADS - в ней вы можете с помощью файлового менеджера создавать поддиректории и хранить там файлы изображений. Помните, что , при выводе маркера на карте , размер изображения в нем , будет 64х64 пикселя." +Gmap_link_category = "Это поле доступно только для ввода значений из выпадающего списка!
Если вы хотите ввести здесь просто название, без ссылки на конкретный документ-категорию, перейдите в раздел 'Редактирование категорий' и создайте категорию с нужным вам названием и без ссылки на документ. После этого созданная вами категория будет доступна в выпадающем списке." +Gmap_cat_sel = "Выбрать категорию" +Gmap_cat_create = "Создать категории" +Gmap_cat_edit = "Редактировать категории" +Gmap_cat_manage = "Управление категориями" +Gmap_cat_list = "Список категорий" +Gmap_cat_add = "Добавить категорию" +Gmap_cat_cs = "Выберите категорию!" +Gmap_cat_cnf = "Применить" +Gmap_cat_name = "Название категории" +Gmap_cat_save = "Сохранить" +Gmap_cat_nca = "Добавлена новая категория:" +Gmap_cat_i = "Категория" +Gmap_cat_in = "Успешно создана и сохранена" +Gmap_cat_ind = "категория и принадлежащие ей маркеры успешно удалены." +Gmap_cat_del = "Удалить категорию" +Gmap_cat_delconf = "Вы действительно хотите удалить категорию?" +Gmap_warndelcat1 = "В данном разделе, вы можете создавать или удалять категории к которым принадлежат маркеры.
Не забывайте, что, при удалении категории, все маркеры, принадлежащие данной категории, будут так же удалены." +Gmap_cat_inf_dop = "Вывести при клике на маркер следующую информацию:" +Gmap_cat_inf_t = "Город или населенный пункт *" +Gmap_cat_inf_tn = "Город или населенный пункт" +Gmap_cat_inf_tp = "Москва" +Gmap_cat_inf_stp = "Тверская" +Gmap_cat_inf_blp = "15, 77" +Gmap_cat_inf_dopfi = "Дополнительная информация" +Gmap_cat_inf_telp = "В произвольном формате" +Gmap_cat_inf_tt = "Это поле обязательно для заполнения !
" +Gmap_cat_inf_st = "Улица (это поле является ключом)" +Gmap_cat_inf_bi = "Строение, офис" +Gmap_cat_inf_ap = "Дополнительная информация" +Gmap_cat_inf_phone = "Телефон" +Gmap_cat_inf_www = "Вебсайт" +Gmap_cat_inf_wwwf = "Формат поля, например https://mysite.ru" +Gmap_cat_inf_wwwi = "Обязательно указывайте протокол
http:// или https://" +Gmap_not_mark_a = "Выберите изображение маркера!" +Gmap_not_mark_all = "Маркер не может быть сохранен, заполните обязательные поля: ' Местоположение '' и ' Город или населенный пункт! '" +Gmap_not_mark_t = "Маркер не может быть сохранен, заполните обязательное поле ' Город или населенный пункт! '" +Gmap_narker_edit = "Редактировать" +Gmap_narker_edit_not = "Это поле недоступно для редактирования" +MarkerAdress_not = "Местоположение" +MarkerAdress_e_brc = "Редактирование маркера ID " +MarkerAdress_m_e = "Раздел редактирования маркера" +Gmap_field_reset = "Сбросить значения всех полей" +Gmap_mar_map_ret = "Закончить редактирование и вернуться на карту" +Gmap_mar_map_retry = "Вернуться к созданию маркеров" +Gmap_mar_editsave = "Сохранить изменения" +Gmap_mar_key_street = "Это поле является ключом! Если оно заполнено - в маркере будет включен вывод строки, состоящей из полей: Город или населенный пункт, Улица, Строение-офис. Если это поле (Улица) незаполнено - перечисленные поля выводиться не будут!" diff --git a/gmap/module.php b/gmap/module.php index 91592c2..4a1c8a1 100644 --- a/gmap/module.php +++ b/gmap/module.php @@ -14,10 +14,10 @@ if (defined('ACP')) { $modul['ModuleName'] = 'GMap'; $modul['ModuleSysName'] = 'gmap'; - $modul['ModuleVersion'] = '1.0.6'; + $modul['ModuleVersion'] = '1.0.8b'; $modul['ModuleDescription'] = 'Gmap
Для того, чтобы осуществить просмотр карты, необходимо разместить системный тег [mod_gmap:XXX] в теле какого-либо документа'; - $modul['ModuleAutor'] = 'OcPh upgrade Repellent'; - $modul['ModuleCopyright'] = '© 2016 OcPh & AVE.cms Team'; + $modul['ModuleAutor'] = 'OcPh | Project Manager Duncan | Upgrade module Repellent'; + $modul['ModuleCopyright'] = '© 2016-2017 OcPh & AVE.cms Team'; $modul['ModuleIsFunction'] = 1; $modul['ModuleAdminEdit'] = 1; $modul['ModuleFunction'] = 'mod_gmap'; @@ -67,8 +67,29 @@ if (defined('ACP') && !empty($_REQUEST['moduleaction'])) break; case 'show': // Просмотр маркеров карты + $_SESSION['use_editor'] = get_settings('use_editor'); $gmap->gmapMarkersShow($tpl_dir, intval($_REQUEST['id'])); break; + + case 'showcategory': // Просмотр категорий + $gmap->gmapCategoryShow($tpl_dir); + break; + case 'editmarker': // Редактирование маркера + $gmap->gmapMarkerEdit($tpl_dir, intval($_REQUEST['id'])); + break; + + case 'saveeditmarker': // Сохранение отредактированного маркера + $gmap->gmapMarkerEditSave(intval($_REQUEST['id'])); + break; + + case 'addnewcategory': // Добавление новой категории + $gmap->gmapCategoryNewAdd(intval($_REQUEST['id'])); + break; + + case 'gcatdel': // Удаление категории + $gmap->gmapCategoryDel(intval($_REQUEST['id'])); + break; + case 'addmarker': // Добавление маркера $gmap->gmapMarkersAdd(intval($_REQUEST['id'])); break; @@ -97,5 +118,204 @@ if (defined('ACP') && !empty($_REQUEST['moduleaction'])) } } +// подключаем файловый менеджер проверяем , если файла нет - создаем, если есть ничего не делаем +$filename = BASE_DIR . '/lib/redactor/elfinder/php/connector_module_gmap.php'; +if (!file_exists($filename)) { +$gmfmen = '"; + print_r($o); +} +function logger($cmd, $voumes, $result) { + $log = $cmd.": [".date("d.m H:s")."] ".$voumes[0]->id()." "; + + if (isset($voumes[1])) { + $log .= $voumes[1]->id()." "; + } + switch ($cmd) { + case "mkdir": + case "mkfile": + case "upload": + $log .= $result["added"][0]["name"]; + break; + case "rename": + $log .= "from ".$result["removedDetails"][0]["name"]." to ".$result["added"][0]["name"]; + break; + case "duplicate": + $log .= "src: ".$result["src"]["name"]." copy: ".$result["added"][0]["name"]; + break; + case "rm": + $log .= $result["removedDetails"][0]["name"]; + break; + default: + $log = ""; + } + if ($log && is_dir("../../../../cache/redactor") || @mkdir("../../../../cache/redactor")) { + $fp = fopen("../../../../cache/redactor/log.txt", "a"); + if ($fp) { + fwrite($fp, $log."\n"); + fclose($fp); + } + } + return $result; +} +class elFinderSimpleLogger { + public function write($cmd, $voumes, $result) { + $log = $cmd.": [".date("d.m H:s")."] ".$voumes[0]->id()." "; + + if (isset($voumes[1])) { + $log .= $voumes[1]->id()." "; + } + switch ($cmd) { + case "mkdir": + case "mkfile": + case "upload": + case "paste": + $log .= $result["added"][0]["name"]; + break; + case "rename": + $log .= "from ".$result["removedDetails"][0]["name"]." to ".$result["added"][0]["name"]; + break; + case "duplicate": + $log .= "src: ".$result["src"]["name"]." copy: ".$result["added"][0]["name"]; + break; + case "rm": + $log .= $result["removedDetails"][0]["name"]; + break; + default: + $log = ""; + } + if ($log && is_dir("../../../../cache/redactor") || @mkdir("../../../../cache/redactor")) { + $fp = fopen("../../../../cache/redactor/log.txt", "a"); + if ($fp) { + fwrite($fp, $log."\n"); + fclose($fp); + } + } + return $result; + } +} // END class +function access($attr, $path, $data, $volume) { + return strpos(basename($path), ".") === 0 + ? !($attr == "read" || $attr == "write") + : $attr == "read" || $attr == "write"; +} +class elFinderTestACL { + public function fsAccess($attr, $path, $data, $volume) { + + if ($volume->name() == "localfilesystem") { + return strpos(basename($path), ".") === 0 + ? !($attr == "read" || $attr == "write") + : $attr == "read" || $attr == "write"; + } + return true; + } +} +$acl = new elFinderTestACL(); +function validName($name) { + return strpos($name, ".") !== 0; +} +$opts = array( + "locale" => "en_US.UTF-8", + "bind" => array( + "mkdir mkfile rename duplicate upload rm paste" => array(new elFinderSimpleLogger(), "write"), + ), + "debug" => true, + "roots" => array( + array( + // "id" => "x5", + "driver" => "LocalFileSystem", // driver for accessing file system (REQUIRED) + "path" => "../../../../".UPLOAD_DIR, // path to files (REQUIRED) + "URL" => "/".UPLOAD_DIR."/", // URL to files (REQUIRED) + "alias" => UPLOAD_DIR, + "disabled" => array(), + "acceptedName" => "validName", + "uploadAllow" => array("all"), + "uploadDeny" => array("all"), + "uploadOrder" => "deny,allow", + "uploadOverwrite" => false, + "uploadMaxSize" => "128m", + "copyOverwrite" => false, + "copyJoin" => true, + "mimeDetect" => "internal", + "tmbCrop" => false, + "imgLib" => "gd", + "utf8fix" => true, + "attributes" => array( + array( + "pattern" => "/^\/\./", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => true + ), + array( + "pattern" => "/.tmb/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/\.php$/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/.quarantine/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/\.htaccess$/", + "write" => false, + "locked" => false, + "hidden" => true + ), + array( + "pattern" => "/.uploader/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ), + array( + "pattern" => "/.temp/", + "read" => false, + "write" => false, + "hidden" => true, + "locked" => false + ) + ), + ) + ) +); +header("Access-Control-Allow-Origin: *"); +$connector = new elFinderConnector(new elFinder($opts), true); +$connector->run(); +?>'; + $gfo = fopen(BASE_DIR . "/lib/redactor/elfinder/php/connector_module_gmap.php", "w"); + flock($gfo,2); + fwrite($gfo, $gmfmen); + flock($gfo,3); + fclose($gfo); + chmod(BASE_DIR . "/lib/redactor/elfinder/php/connector_module_gmap.php", 0755); +} + ?> \ No newline at end of file diff --git a/gmap/sql.php b/gmap/sql.php index 806156a..f5ef663 100644 --- a/gmap/sql.php +++ b/gmap/sql.php @@ -14,10 +14,11 @@ $module_sql_install = array(); $module_sql_deinstall = array(); - +$module_sql_update = array(); //Удаление модуля $module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_gmap;"; +$module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_gmap_category;"; $module_sql_deinstall[] = "DROP TABLE IF EXISTS CPPREFIX_module_gmap_markers;"; //Установка модуля @@ -32,14 +33,43 @@ $module_sql_install[] = "CREATE TABLE `CPPREFIX_module_gmap` ( PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;"; +$module_sql_install[] = "CREATE TABLE `CPPREFIX_module_gmap_category` ( + `id` int(10) unsigned NOT NULL auto_increment, + `gcat_title` varchar(255) NOT NULL default '', + `gcat_link` varchar(255) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;"; + $module_sql_install[] = "CREATE TABLE `CPPREFIX_module_gmap_markers` ( `id` int(10) unsigned NOT NULL auto_increment, `gmap_id` int(10) unsigned NOT NULL default '0', + `marker_cat_id` int(10) unsigned NOT NULL default '0', `latitude` decimal(10,7) NOT NULL, `longitude` decimal(10,7) NOT NULL, - `title` varchar(255) NOT NULL, + `img_title` varchar(255) NOT NULL default '', + `title` varchar(255) NOT NULL default '', + `title_link` varchar(255) NOT NULL default '', + `marker_cat_title` varchar(255) NOT NULL default '', + `marker_cat_link` varchar(255) NOT NULL default '', + `marker_city` varchar(255) NOT NULL, + `marker_street` varchar(255) NOT NULL default '', + `marker_building` varchar(255) NOT NULL default '', + `marker_dopfield` varchar(255) NOT NULL default '', + `marker_phone` varchar(255) NOT NULL default '', + `marker_www` varchar(255) NOT NULL default '', `image` text NOT NULL, PRIMARY KEY (`id`), KEY `gmap_id` (`gmap_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;"; + +$module_sql_update[] = " + UPDATE `CPPREFIX_module` + SET + ModuleAveTag = '" . $modul['ModuleAveTag'] . "', + ModulePHPTag = '" . $modul['ModulePHPTag'] . "', + ModuleVersion = '" . $modul['ModuleVersion'] . "' + WHERE + ModuleSysName = '" . $modul['ModuleSysName'] . "' + LIMIT 1; +"; ?> \ No newline at end of file diff --git a/gmap/templates/admin_gmap_category.tpl b/gmap/templates/admin_gmap_category.tpl new file mode 100644 index 0000000..b4770ce --- /dev/null +++ b/gmap/templates/admin_gmap_category.tpl @@ -0,0 +1,170 @@ +{literal} + +{/literal} +
{#ModName#}
+
+
+ {#Gmap_warndelcat1#} +
+
+ +
+
{#Gmap_cat_list#}
+ + + + + +{foreach from=$gcats item=gcat key=k} + +{if $k%4 == 3}{/if} +{/foreach} +
{$gcat.gcat_title}
+
+
+
+ + + + + + + +
{#Gmap_cat_add#} + +
+
+ + + + + + + + + diff --git a/gmap/templates/admin_gmap_edit_marker.tpl b/gmap/templates/admin_gmap_edit_marker.tpl new file mode 100644 index 0000000..41dbc6b --- /dev/null +++ b/gmap/templates/admin_gmap_edit_marker.tpl @@ -0,0 +1,293 @@ +{foreach from=$gmarkers item=gmarker} +
{#ModName#} - {#MarkerAdress_e_brc#}{$gmarker.id}
+ +
+
+ {#MarkerAdress_m_e#} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {if $gmarker.marker_city !=''} + + + {else} + + + {/if} + + + + + + + + + + + + + + + + + + + + + + + + + +
{#MarkerParam#}
{#MarkerSetVal#}
{#MarkerAdress_not#}  +    + + +
{#MarkerDesc#}  + + +   +    + {#Gmap_cat_cnf#}  +
{#Gmap_doc_title#}  +   + + +
{#Gmap_img_title#}  +
+ +
+
+   +   +
{#Gmap_cat_inf_dop#}
{#Gmap_cat_inf_tn#}  + + {#Gmap_cat_inf_t#}  + +
{#Gmap_cat_inf_st#}  + +
{#Gmap_cat_inf_bi#} + +
{#Gmap_cat_inf_ap#} + +
{#Gmap_cat_inf_phone#} + +
{#Gmap_cat_inf_www#}  + +
+    + {#Gmap_field_reset#}   + {#Gmap_mar_map_ret#} +
+ +{/foreach} + + + + + diff --git a/gmap/templates/admin_gmap_markers.tpl b/gmap/templates/admin_gmap_markers.tpl index 2bb1f1e..d8c7284 100644 --- a/gmap/templates/admin_gmap_markers.tpl +++ b/gmap/templates/admin_gmap_markers.tpl @@ -1,3 +1,11 @@ + {if check_permission('adminpanel')} + + + + + + {/if} + -
{#ModName#}
+
{#ModName#} - {#MarkerAddmap#}
@@ -27,6 +35,24 @@
+
+
+
{#Gmap_fm#}
+
+
+ +
+
finder
+
+
+
+ +
{#Gmap_edi_mark#} {$gmap_title}
@@ -36,24 +62,93 @@ - {#MarkerParam#} - {#MarkerSetVal#} +
{#MarkerParam#}
+
{#MarkerSetVal#}
- {#MarkerAdress#} - - + {#MarkerAdress#}  + +    - {#MarkerDesc#} + {#MarkerDesc#}  + + + +   +    + {#Gmap_cat_cnf#}  + {if $gcat.id !=''}{#Gmap_cat_edit#}{else}{#Gmap_cat_create#}{/if} + + + + {#Gmap_doc_title#}  + +   + + + + + + {#Gmap_img_title#}  + +
+ +
+
+   +   + + + +
{#Gmap_cat_inf_dop#}
+ + + {#Gmap_cat_inf_t#}  + + + + + + {#Gmap_cat_inf_st#}  + + + + + + {#Gmap_cat_inf_bi#} + + + + + + {#Gmap_cat_inf_ap#} - + + + {#Gmap_cat_inf_phone#} + + + + + + {#Gmap_cat_inf_www#}  + + + + + {#MarkerImage#} @@ -64,77 +159,27 @@ - -    - {#Gmap_return#} - - + +    + {if $gcat.id !=''}{#Gmap_cat_edit#}{else}{#Gmap_cat_create#}{/if}   + {#Gmap_return#} + +
- + - - + +
{#SetMarkerOnClick#}
{#SetMarkerOnClick#}
  
-{if $page_nav} - -{/if} -
- - - - - - - - - - - - - - - - - {foreach from=$markers item=marker} - - - - - - - - {/foreach} - -
ID{#MarkerImage#}{#MarkerTitle#}
- - - {$marker.id} - -
-
-
-
- -
-
+ +
-{if $page_nav} - -{/if} \ No newline at end of file + + + + + + + + diff --git a/gmap/templates/map.tpl b/gmap/templates/map.tpl index be08bba..5f01fe7 100644 --- a/gmap/templates/map.tpl +++ b/gmap/templates/map.tpl @@ -58,7 +58,12 @@ $(document).ready(function(){ldelim} map{$gmap.id} = new google.maps.Map(document.getElementById("myMap{$gmap.id}"), myOptions{$gmap.id}); // create new info window for marker detail pop-up - infowindow{$gmap.id} = new google.maps.InfoWindow(); + infowindow{$gmap.id} = new google.maps.InfoWindow( + {ldelim} + maxWidth: 700 + {rdelim} + + ); // load markers loadMarkers{$gmap.id}(); @@ -87,17 +92,105 @@ $(document).ready(function(){ldelim} function loadMarker{$gmap.id}(markerData){ldelim} // create new marker location - var myLatlng = new google.maps.LatLng(markerData['latitude'],markerData['longitude']); + var myLatlng = new google.maps.LatLng(markerData['latitude'],markerData['longitude']); // create new marker - var image = '/modules/gmap/images/'+markerData['image']+'.png'; - - var content = markerData['title']; + var image = '/modules/gmap/images/'+markerData['image']+'.png'; + + if (markerData['img_title'] != '/modules/gmap/img/no_image.png') + {ldelim} + var a_stimg = ""; + {rdelim} else {ldelim} + var a_stimg = ""; + {rdelim}; + + if (markerData['marker_cat_title'] != '') + {ldelim} + if (markerData['marker_cat_link'] == '/' || markerData['marker_cat_link'] == 'javascript:void(0);'){ldelim} + var a_categ = "
  • "+markerData['marker_cat_title']+"
  • "; + {rdelim} + else {ldelim} + var a_categ = "
  • "+markerData['marker_cat_title']+"
  • "; + {rdelim} + {rdelim} + else + {ldelim} + var a_categ=''; + {rdelim}; + + + if (markerData['title'] != '') + {ldelim} + if (markerData['title_link'] == '/' || markerData['title_link'] == 'javascript:void(0);'){ldelim} + var a_title = "
  • "+markerData['title']+"
  • "; + {rdelim} + else {ldelim} + var a_title = "
  • "+markerData['title']+"
  • "; + {rdelim} + {rdelim} + else + {ldelim} + var a_title=''; + {rdelim}; + + + if (markerData['marker_street'] != '') + {ldelim} + var a_city = "
  • "+markerData['marker_city']+", "+markerData['marker_street']+", "+markerData['marker_building']+"
  • "; + {rdelim} + else + {ldelim} + var a_city=''; + {rdelim}; + + if (markerData['marker_dopfield'] != '') + {ldelim} + var a_dopfield = "
  • "+markerData['marker_dopfield']+"
  • "; + {rdelim} + else + {ldelim} + var a_dopfield=''; + {rdelim}; + + + if (markerData['marker_phone'] != '') + {ldelim} + var a_phone = "
  • "+markerData['marker_phone']+"
  • "; + {rdelim} + else + {ldelim} + var a_phone=''; + {rdelim}; + + if (markerData['marker_www'] != '') + {ldelim} + var a_placeholders = new Array('http://www.', 'https://www.', 'http://', 'https://'); + var a_www = "
  • "+str_replace(a_placeholders, 'www.', markerData['marker_www'])+"
  • "; + {rdelim} + else + {ldelim} + var a_www=''; + {rdelim}; + + // ПОЗИЦИОНИРУЕМ ЭЛЕМЕНТЫ МАРКЕРА + + // div контейнер + var a_divs = "
    "; + var a_dive = "
    "; + // список включающий категорию, ссылку на документ и адрес + var a_uls = ""; + + // ФОРМИРУЕМ КОНТЕНТ МАРКЕРА + var content = a_divs+a_stimg+a_uls+a_categ+a_title+a_city+a_dopfield+a_ule+a_ultws+a_phone+a_www+a_ule+a_dive; - var marker = new google.maps.Marker({ldelim} + var marker = new google.maps.Marker({ldelim} id: markerData['id'], map: map{$gmap.id}, - title: content, + content: content, icon:image, position: myLatlng {rdelim}); @@ -124,10 +217,41 @@ $(document).ready(function(){ldelim} // check if marker was found if( marker ){ldelim} - infowindow{$gmap.id}.setContent(marker.title); + infowindow{$gmap.id}.setContent(marker.content); infowindow{$gmap.id}.open(map{$gmap.id},marker); {rdelim}else{ldelim} alert('Error marker not found: ' + markerId); {rdelim} {rdelim} - \ No newline at end of file + + function str_replace ( search, replace, subject ) {ldelim} + if(!(replace instanceof Array)){ldelim} + replace=new Array(replace); + if(search instanceof Array){ldelim} + while(search.length>replace.length){ldelim} + replace[replace.length]=replace[0]; + {rdelim} + {rdelim} + {rdelim} + if(!(search instanceof Array))search=new Array(search); + while(search.length>replace.length){ldelim} + replace[replace.length]=''; + {rdelim} + if(subject instanceof Array){ldelim} + for(k in subject){ldelim} + subject[k]=str_replace(search,replace,subject[k]); + {rdelim} + return subject; + {rdelim} + for(var k=0; k-1){ldelim} + subject = subject.replace(search[k], replace[k]); + i = subject.indexOf(search[k],i); + {rdelim} + {rdelim} + return subject; +{rdelim} + + +