2024-07-05 06:58:17 +03:00
< ? php
2024-07-08 13:46:00 +03:00
2024-07-05 06:58:17 +03:00
use \App\Services\ { Auth , DB };
use \App\Models\User ;
2024-07-08 13:46:00 +03:00
2024-07-05 06:58:17 +03:00
$user = new User ( Auth :: userid ());
?>
<! DOCTYPE html >
< html lang = " ru " >
< head >
2024-07-08 13:46:00 +03:00
< ? php include ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/views/components/LoadHead.php' ); ?>
2024-07-05 06:58:17 +03:00
2024-07-08 13:46:00 +03:00
< link rel = " stylesheet " href = " https://unpkg.com/leaflet@1.7.1/dist/leaflet.css " />
2024-07-05 06:58:17 +03:00
</ head >
< body >
< div id = " backgr " ></ div >
< table class = " tmain " >
2024-07-08 13:46:00 +03:00
< ? php include ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/views/components/Navbar.php' ); ?>
2024-07-05 06:58:17 +03:00
< tr >
2024-10-15 20:39:44 +03:00
< script src = " https://cdn.jsdelivr.net/npm/@tensorflow/tfjs " ></ script >
< script src = " https://cdn.jsdelivr.net/npm/@tensorflow-models/blazeface " ></ script >
2024-07-08 13:46:00 +03:00
< link rel = " stylesheet " href = " https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.css " />
< script src = " https://unpkg.com/leaflet@1.7.1/dist/leaflet.js " ></ script >
< script src = " https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js " ></ script >
< script src = " https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Cesium.js " ></ script >
< link href = " https://cesium.com/downloads/cesiumjs/releases/1.83/Build/Cesium/Widgets/widgets.css " rel = " stylesheet " >
< script src = " https://cdnjs.cloudflare.com/ajax/libs/leaflet-indoor/0.4.2/leaflet.indoor.min.js " ></ script >
< link rel = " stylesheet " href = " https://cdnjs.cloudflare.com/ajax/libs/leaflet-indoor/0.4.2/leaflet.indoor.min.css " />
<!-- Подключение плагина Leaflet . markercluster -->
< link rel = " stylesheet " href = " https://unpkg.com/leaflet.markercluster/dist/MarkerCluster.css " >
< link rel = " stylesheet " href = " https://unpkg.com/leaflet.markercluster/dist/MarkerCluster.Default.css " >
< script src = " https://unpkg.com/leaflet.markercluster/dist/leaflet.markercluster.js " ></ script >
<!-- Подключение плагина Leaflet - Geoman -->
< link rel = " stylesheet " href = " https://unpkg.com/leaflet-geoman-free/dist/leaflet-geoman.css " >
< script src = " https://unpkg.com/leaflet-geoman-free/dist/leaflet-geoman.min.js " ></ script >
<!-- Подключение плагина Leaflet - 3 d - model -->
< script src = " https://unpkg.com/leaflet-3d-model/dist/leaflet-3d-model.min.js " ></ script >
2024-10-11 21:54:40 +03:00
< script >
var pub_pid = 0 ;
2024-10-15 20:39:44 +03:00
</ script >
2024-07-05 06:58:17 +03:00
< td class = " main " >
2024-07-21 01:39:54 +03:00
< h1 > Предложить медиа на публикацию </ h1 >
2024-07-08 13:46:00 +03:00
< p > Ваш текущий индекс загрузки : < b >< ? = $user -> i ( 'uploadindex' ) ?> </b></p>
2024-07-05 06:58:17 +03:00
< div id = " formtable " >
2024-07-08 20:10:00 +03:00
< ? php
if ( NGALLERY [ 'root' ][ 'photo' ][ 'upload' ][ 'premoderation' ] === true ) {
2024-07-18 18:22:00 +03:00
if ( $user -> content ( 'premoderation' ) === " true " ) {
2024-07-08 20:10:00 +03:00
echo ' <div style="float:left; border:solid 1px #3b7dc1; padding:6px 10px 7px; margin-bottom:13px; background-color:#0199ff44"><b>Поздравляем, ' . $user -> i ( 'username' ) . '!</b><br>Администрацией ' . NGALLERY [ 'root' ][ 'title' ] . ' была одобрена возможность прямой загрузки фотографий для В а с .<br>Вы можете моментально загрузить любую фотографию, минуя премодерацию. Enjoy!</div>' ;
}
}
?>
2024-07-05 06:58:17 +03:00
< div class = " new_vehicle_template new_vehicle " >
< input type = " hidden " name = " nv_cid[] " value = " 0 " >
< input type = " hidden " name = " nv_type[] " value = " 0 " >
< table >
< tbody class = " tbody_nv_num " style = " display:none " >
< tr >
< td class = " lcol " > Бортовой № :</ td >
< td >< input type = " text " name = " nv_num[] " style = " width:80px " maxlength = " 21 " value = " " ></ td >
</ tr >
</ tbody >
< tbody class = " tbody_nv_gos " style = " display:none " >
< tr >
< td class = " lcol " > Госномер :</ td >
< td >< input type = " text " name = " nv_gos[] " style = " width:120px " maxlength = " 21 " value = " " ></ td >
</ tr >
</ tbody >
< tbody class = " tbody_nv_did " style = " display:none " >
< tr >
< td class = " lcol " > Депо / Парк :</ td >
< td >< select name = " nv_did[] " class = " did " ></ select ></ td >
</ tr >
</ tbody >
< tbody >
< tr >
< td class = " lcol " > Модель :</ td >
< td >
< input type = " hidden " name = " nv_mid[] " value = " 0 " >
< input type = " text " class = " mname " style = " width:250px; padding-left:3px " value = " (модель неизвестна) " >
</ td >
</ tr >
< tr >
< td class = " lcol " > Шасси :</ td >
< td >
< input type = " hidden " name = " nv_chid[] " value = " 0 " >
< input type = " text " class = " chname " style = " width:250px; padding-left:3px " value = " (нет) " >
</ td >
</ tr >
< tr >
< td class = " lcol " > Назначение :</ td >
< td >
< select name = " nv_service[] " onchange = " changeColor(this) " >
< option value = " 0 " class = " s0 " selected > Пассажирский </ option >
< option value = " 1 " class = " s3 " > Служебный </ option >
< option value = " 2 " class = " s7 " > Музейный </ option >
</ select >
</ td >
</ tr >
< tr >
< td class = " lcol " > Текущее состояние :</ td >
< td class = " sm " >
< select name = " nv_state[] " onchange = " changeColor(this) " >
< option value = " 1 " class = " s0 " selected > Эксплуатируется </ option >
< option value = " 2 " class = " s2 " > Н е был в эксплуатации в этом городе </ option >
< option value = " 3 " class = " s3 " > Н е эксплуатируется </ option >
< option value = " 4 " class = " s4 " > Выведен из эксплуатации / ожидание исключения </ option >
< option value = " 5 " class = " s5 " > Списан </ option >
< option value = " 6 " class = " s6 " > Местонахождение и судьба неизвестны </ option >
< option value = " 7 " class = " s7 " > К В Р / модернизация ( смена модели ) </ option >
< option value = " 8 " class = " s8 " > Перенумерован / передан в пределах города </ option >
< option value = " 9 " class = " s9 " > Передан в другой город </ option >
< option value = " 21 " class = " s21 " > Смена госномера ( в пределах предприятия ) </ option >
</ select > & nbsp ; < span class = " nw " style = " color:#888 " > Состояние Т С < u > на сегодняшний день </ u ></ span >
</ td >
</ tr >
< tr >
< td class = " lcol " > Заводской № :</ td >
< td >< input type = " text " name = " nv_zn[] " size = " 10 " maxlength = " 12 " value = " " ></ td >
</ tr >
< tr >
< td class = " lcol " > VIN :</ td >
< td >< input type = " text " name = " nv_vin[] " size = " 20 " maxlength = " 17 " value = " " ></ td >
</ tr >
< tr >
< td class = " lcol " > № шасси :</ td >
< td >< input type = " text " name = " nv_cn[] " size = " 20 " maxlength = " 17 " value = " " ></ td >
</ tr >
< tr >
< td class = " lcol " > Построен :</ td >
< td class = " sm " style = " padding-left:31px " >
< input type = " text " name = " nv_built_m[] " id = " nv_built_m_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_built_y[] " id = " nv_built_y_ " style = " font-weight:bold; width:50px; text-align:center; margin-right:-1px " maxlength = " 4 " value = " " >& emsp ; < select name = " nv_built_approx_aprx[] " id = " nv_built_approx_aprx_ " class = " approx-aprx " style = " margin-right:-1px " >
< option value = " 0 " class = " s0 " selected > точная дата </ option >
< option value = " 1 " class = " s3 " > приблизительно ( & asymp ;) </ option >
< option value = " 2 " class = " s7 " > не позднее ( & le ;) </ option >
< option value = " 3 " class = " s7 " > не ранее ( & ge ;) </ option >
< option value = " 4 " class = " s9 " > начало ... г г .</ option >
< option value = " 5 " class = " s9 " > середина ... г г .</ option >
< option value = " 6 " class = " s9 " > конец ... г г .</ option >
< option value = " 7 " class = " s9 " >... г г .</ option >
</ select > & nbsp ; < span class = " nw " style = " color:#888 " > М М . ГГГГ — дата постройки Т С по табличке / документам </ span >
</ td >
</ tr >
< tr >
< td class = " lcol " > Актуально c ...</ td >
< td class = " sm " >
< input type = " text " name = " nv_start_d[] " id = " nv_start_d_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_start_m[] " id = " nv_start_m_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_start_y[] " id = " nv_start_y_ " style = " font-weight:bold; width:50px; text-align:center; margin-right:-1px " maxlength = " 4 " value = " " >& emsp ; < select name = " nv_start_approx_aprx[] " id = " nv_start_approx_aprx_ " class = " approx-aprx " style = " margin-right:-1px " >
< option value = " 0 " class = " s0 " selected > точная дата </ option >
< option value = " 1 " class = " s3 " > приблизительно ( & asymp ;) </ option >
< option value = " 2 " class = " s7 " > не позднее ( & le ;) </ option >
< option value = " 3 " class = " s7 " > не ранее ( & ge ;) </ option >
< option value = " 4 " class = " s9 " > начало ... г г .</ option >
< option value = " 5 " class = " s9 " > середина ... г г .</ option >
< option value = " 6 " class = " s9 " > конец ... г г .</ option >
< option value = " 7 " class = " s9 " >... г г .</ option >
</ select > & nbsp ; < span class = " nw " style = " color:#888 " > ДД . М М . ГГГГ — дата поступления или присвоения номера </ span >
</ td >
</ tr >
< tr >
< td class = " lcol " > Начало работы </ td >
< td class = " sm " >
< input type = " text " name = " nv_launc_d[] " id = " nv_launc_d_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_launc_m[] " id = " nv_launc_m_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_launc_y[] " id = " nv_launc_y_ " style = " font-weight:bold; width:50px; text-align:center; margin-right:-1px " maxlength = " 4 " value = " " >& emsp ; < select name = " nv_launc_approx_aprx[] " id = " nv_launc_approx_aprx_ " class = " approx-aprx " style = " margin-right:-1px " >
< option value = " 0 " class = " s0 " selected > точная дата </ option >
< option value = " 1 " class = " s3 " > приблизительно ( & asymp ;) </ option >
< option value = " 2 " class = " s7 " > не позднее ( & le ;) </ option >
< option value = " 3 " class = " s7 " > не ранее ( & ge ;) </ option >
< option value = " 4 " class = " s9 " > начало ... г г .</ option >
< option value = " 5 " class = " s9 " > середина ... г г .</ option >
< option value = " 6 " class = " s9 " > конец ... г г .</ option >
< option value = " 7 " class = " s9 " >... г г .</ option >
</ select > & nbsp ; < span class = " nw " style = " color:#888 " > ДД . М М . ГГГГ — первый выход c пассажирами , если известен </ span >
</ td >
</ tr >
< tr >
< td class = " lcol " > Отставлен :</ td >
< td class = " sm " >
< input type = " text " name = " nv_haltd_d[] " id = " nv_haltd_d_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_haltd_m[] " id = " nv_haltd_m_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_haltd_y[] " id = " nv_haltd_y_ " style = " font-weight:bold; width:50px; text-align:center; margin-right:-1px " maxlength = " 4 " value = " " >& emsp ; < select name = " nv_haltd_approx_aprx[] " id = " nv_haltd_approx_aprx_ " class = " approx-aprx " style = " margin-right:-1px " >
< option value = " 0 " class = " s0 " selected > точная дата </ option >
< option value = " 1 " class = " s3 " > приблизительно ( & asymp ;) </ option >
< option value = " 2 " class = " s7 " > не позднее ( & le ;) </ option >
< option value = " 3 " class = " s7 " > не ранее ( & ge ;) </ option >
< option value = " 4 " class = " s9 " > начало ... г г .</ option >
< option value = " 5 " class = " s9 " > середина ... г г .</ option >
< option value = " 6 " class = " s9 " > конец ... г г .</ option >
< option value = " 7 " class = " s9 " >... г г .</ option >
</ select > & nbsp ; < span class = " nw " style = " color:#888 " > ДД . М М . ГГГГ — последний выход c пассажирами , если известен </ span >
</ td >
</ tr >
< tr >
< td class = " lcol " > Ушёл ( или списан ) :</ td >
< td class = " sm " >
< input type = " text " name = " nv_leave_d[] " id = " nv_leave_d_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_leave_m[] " id = " nv_leave_m_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_leave_y[] " id = " nv_leave_y_ " style = " font-weight:bold; width:50px; text-align:center; margin-right:-1px " maxlength = " 4 " value = " " >& emsp ; < select name = " nv_leave_approx_aprx[] " id = " nv_leave_approx_aprx_ " class = " approx-aprx " style = " margin-right:-1px " >
< option value = " 0 " class = " s0 " selected > точная дата </ option >
< option value = " 1 " class = " s3 " > приблизительно ( & asymp ;) </ option >
< option value = " 2 " class = " s7 " > не позднее ( & le ;) </ option >
< option value = " 3 " class = " s7 " > не ранее ( & ge ;) </ option >
< option value = " 4 " class = " s9 " > начало ... г г .</ option >
< option value = " 5 " class = " s9 " > середина ... г г .</ option >
< option value = " 6 " class = " s9 " > конец ... г г .</ option >
< option value = " 7 " class = " s9 " >... г г .</ option >
</ select > & nbsp ; < span class = " nw " style = " color:#888 " > ДД . М М . ГГГГ — дата продажи / списания / убытия </ span >
</ td >
</ tr >
< tr >
< td class = " lcol " > Утилизирован :</ td >
< td class = " sm " style = " padding-left:31px " >
< input type = " text " name = " nv_scrap_m[] " id = " nv_scrap_m_ " style = " font-weight:bold; width:30px; text-align:center; margin-right:-1px " maxlength = " 2 " value = " " >< input type = " text " name = " nv_scrap_y[] " id = " nv_scrap_y_ " style = " font-weight:bold; width:50px; text-align:center; margin-right:-1px " maxlength = " 4 " value = " " >& emsp ; < select name = " nv_scrap_approx_aprx[] " id = " nv_scrap_approx_aprx_ " class = " approx-aprx " style = " margin-right:-1px " >
< option value = " 0 " class = " s0 " selected > точная дата </ option >
< option value = " 1 " class = " s3 " > приблизительно ( & asymp ;) </ option >
< option value = " 2 " class = " s7 " > не позднее ( & le ;) </ option >
< option value = " 3 " class = " s7 " > не ранее ( & ge ;) </ option >
< option value = " 4 " class = " s9 " > начало ... г г .</ option >
< option value = " 5 " class = " s9 " > середина ... г г .</ option >
< option value = " 6 " class = " s9 " > конец ... г г .</ option >
< option value = " 7 " class = " s9 " >... г г .</ option >
</ select > & nbsp ; < span class = " nw " style = " color:#888 " > М М . ГГГГ — фактическая дата полной порезки / разборки Т С </ span >
</ td >
</ tr >
< tr >
< td class = " lcol " > Примечание :</ td >
< td >< input type = " text " name = " nv_note[] " maxlength = " 150 " style = " width:450px " value = " " ></ td >
</ tr >
< tr >
< td class = " lcol " > Информация :</ td >
< td >< textarea name = " nv_history[] " rows = " 4 " style = " width:450px " ></ textarea ></ td >
</ tr >
</ tbody >
</ table >
</ div >
< form id = " mform " method = " post " enctype = " multipart/form-data " action = " ?action=write " >
< input type = " hidden " name = " creative " id = " creative " value = " " >
2024-07-06 08:26:29 +03:00
< input type = " hidden " name = " lat " id = " markerLat " value = " 20971520 " >
< input type = " hidden " name = " lng " id = " markerLng " id = " creative " value = " " >
2024-07-05 06:58:17 +03:00
< table width = " 100% " >
< col width = " 190 " >
< tbody class = " p20 " >
< tr >
< td colspan = " 2 " id = " step1 " class = " narrow " style = " font-size:20px; padding:10px 15px 7px " >
2024-07-21 01:39:54 +03:00
Шаг 1. < b > Выберите фотографию или видео для загрузки и укажите дату съёмки :</ b > </ td >
2024-07-05 06:58:17 +03:00
</ tr >
< tr >
2024-07-08 13:46:00 +03:00
2024-07-06 08:05:10 +03:00
2024-07-05 06:58:17 +03:00
< td ></ td >
< td style = " padding:2px 15px 5px 2px " >
2024-07-08 13:46:00 +03:00
2024-07-05 06:58:17 +03:00
< label class = " button " >
2024-07-21 04:43:25 +03:00
Выбрать файл ... < input type = " file " name = " image " id = " image " accept = " image/*, video/* " >
2024-07-05 06:58:17 +03:00
</ label >
& nbsp ; < span id = " filename " ></ span >
< div style = " padding:5px 0 10px " class = " sm " > Принимаемые форматы :< br >
2024-07-21 01:39:54 +03:00
JPG , JPEG , PNG , GIF , WEBP , MP4 , AVI , 3 GP , MKV < br >
Для наибольшей совместимости , ваше видео будет обработано в формат MP4 в кодеке H264
2024-10-08 22:10:53 +03:00
</ div >
2024-10-15 20:39:44 +03:00
</ td >
</ tr >
< tr id = " tableFaces " style = " display: none; " >
< td ></ td >
< td style = " padding:2px 15px 5px 2px " >
< div id = " faceNotify " >
</ div >
2024-07-05 06:58:17 +03:00
</ td >
</ tr >
2024-10-15 20:39:44 +03:00
< tr id = " tableFaces2 " style = " display: none; " >
< td ></ td >
< td style = " padding:2px 15px 5px 2px " >
< br >
< div id = " facesCanvas " ></ div >
< br >< br >
< div id = " inputFields " ></ div >
</ td >
</ tr >
< script >
const imageUpload = document . getElementById ( 'image' );
const inputFieldsContainer = document . getElementById ( 'inputFields' );
let model ;
async function loadModel () {
model = await blazeface . load ();
console . log ( " BlazeFace model loaded " );
}
async function detectFaces ( image ) {
const predictions = await model . estimateFaces ( image , false );
return predictions ;
}
loadModel ();
imageUpload . addEventListener ( 'change' , async () => {
const file = imageUpload . files [ 0 ];
const img = new Image ();
img . src = URL . createObjectURL ( file );
img . onload = async () => {
inputFieldsContainer . innerHTML = '' ;
const predictions = await detectFaces ( img );
if ( predictions . length > 0 ) {
const facesTable = document . getElementById ( 'tableFaces' );
const facesTable2 = document . getElementById ( 'tableFaces2' );
if ( facesTable ) {
facesTable . removeAttribute ( 'style' );
}
if ( facesTable2 ) {
facesTable2 . removeAttribute ( 'style' );
}
$ ( '#faceNotify' ) . html ( ' <div style="float:left; border:solid 1px #8C4800; padding:6px 10px 7px; margin-bottom:13px; background-color:#FADD90"><b>Обнаружены лица на фотографии</b><br>Будьте внимательны, фотография будет отклонена, если: <br>· Она нацелена на травлю, буллинг<br>· Ведёт в заблуждение пользователей<br>· Содержит в с е б е оскорбления<br><br><b>В случае намеренной публикации фотографий, нарушающих правила портала,<br> администрация оставляет за собой право в выдачи ограничений<br> вплоть до полной блокировки аккаунта. Спасибо за понимание</b></div>' );
$ ( '#facesCanvas' ) . html ( '<canvas style="width: 500px;" id="canvas"></canvas>' );
const canvas = document . getElementById ( 'canvas' );
const ctx = canvas . getContext ( '2d' );
canvas . width = img . width ;
canvas . height = img . height ;
ctx . drawImage ( img , 0 , 0 );
predictions . forEach (( prediction , index ) => {
const [ x , y , width , height ] = prediction . topLeft . concat ( prediction . bottomRight ) . flat ();
ctx . beginPath ();
ctx . rect ( x , y , width - x , height - y );
ctx . lineWidth = 3 ;
ctx . strokeStyle = 'white' ;
ctx . stroke ();
ctx . fillStyle = 'white' ;
ctx . font = '16px Arial' ;
ctx . fillText ( `Лицо ${index + 1}` , x , y > 10 ? y - 10 : 10 );
const inputField = document . createElement ( 'input' );
inputField . type = 'text' ;
inputField . name = `facename_${index + 1}` ; // Добавляем динамический name
inputField . placeholder = `Имя участника №${index + 1}` ;
inputFieldsContainer . appendChild ( inputField );
inputFieldsContainer . appendChild ( document . createElement ( 'br' ));
});
} else {
$ ( '#faceNotify' ) . html ( '' );
$ ( '#facesCanvas' ) . html ( '' );
}
};
});
</ script >
2024-07-05 06:58:17 +03:00
< tr >
< td class = " lcol " > Дата съёмки :</ td >
< td style = " padding-bottom:12px " >
< span style = " display:inline-block; margin-bottom:3px " >< select name = " day " id = " day " style = " width:48px " >
< option value = " 0 " selected > ? ? </ option >
< option value = " 1 " > 01 </ option >
< option value = " 2 " > 02 </ option >
< option value = " 3 " > 03 </ option >
< option value = " 4 " > 04 </ option >
< option value = " 5 " > 05 </ option >
< option value = " 6 " > 06 </ option >
< option value = " 7 " > 07 </ option >
< option value = " 8 " > 08 </ option >
< option value = " 9 " > 09 </ option >
< option value = " 10 " > 10 </ option >
< option value = " 11 " > 11 </ option >
< option value = " 12 " > 12 </ option >
< option value = " 13 " > 13 </ option >
< option value = " 14 " > 14 </ option >
< option value = " 15 " > 15 </ option >
< option value = " 16 " > 16 </ option >
< option value = " 17 " > 17 </ option >
< option value = " 18 " > 18 </ option >
< option value = " 19 " > 19 </ option >
< option value = " 20 " > 20 </ option >
< option value = " 21 " > 21 </ option >
< option value = " 22 " > 22 </ option >
< option value = " 23 " > 23 </ option >
< option value = " 24 " > 24 </ option >
< option value = " 25 " > 25 </ option >
< option value = " 26 " > 26 </ option >
< option value = " 27 " > 27 </ option >
< option value = " 28 " > 28 </ option >
< option value = " 29 " > 29 </ option >
< option value = " 30 " > 30 </ option >
< option value = " 31 " > 31 </ option >
</ select >< select name = " month " id = " month " style = " width:160px; margin:0 -1px " >
< option value = " 0 " selected > ? ? & mdash ; Неизвестно </ option >
< option value = " 1 " > 01 & mdash ; Январь </ option >
< option value = " 2 " > 02 & mdash ; Февраль </ option >
< option value = " 3 " > 03 & mdash ; Март </ option >
< option value = " 4 " > 04 & mdash ; Апрель </ option >
< option value = " 5 " > 05 & mdash ; Май </ option >
< option value = " 6 " > 06 & mdash ; Июнь </ option >
< option value = " 7 " > 07 & mdash ; Июль </ option >
< option value = " 8 " > 08 & mdash ; Август </ option >
< option value = " 9 " > 09 & mdash ; Сентябрь </ option >
< option value = " 10 " > 10 & mdash ; Октябрь </ option >
< option value = " 11 " > 11 & mdash ; Ноябрь </ option >
< option value = " 12 " > 12 & mdash ; Декабрь </ option >
</ select >< select name = " year " id = " year " style = " width:65px " >
< option value = " 0 " selected > ? ? ? ? </ option >
< option value = " 2024 " > 2024 </ option >
< option value = " 2023 " > 2023 </ option >
< option value = " 2022 " > 2022 </ option >
< option value = " 2021 " > 2021 </ option >
< option value = " 2020 " > 2020 </ option >
< option value = " 2019 " > 2019 </ option >
< option value = " 2018 " > 2018 </ option >
< option value = " 2017 " > 2017 </ option >
< option value = " 2016 " > 2016 </ option >
< option value = " 2015 " > 2015 </ option >
< option value = " 2014 " > 2014 </ option >
< option value = " 2013 " > 2013 </ option >
< option value = " 2012 " > 2012 </ option >
< option value = " 2011 " > 2011 </ option >
< option value = " 2010 " > 2010 </ option >
< option value = " 2009 " > 2009 </ option >
< option value = " 2008 " > 2008 </ option >
< option value = " 2007 " > 2007 </ option >
< option value = " 2006 " > 2006 </ option >
< option value = " 2005 " > 2005 </ option >
< option value = " 2004 " > 2004 </ option >
< option value = " 2003 " > 2003 </ option >
< option value = " 2002 " > 2002 </ option >
< option value = " 2001 " > 2001 </ option >
< option value = " 2000 " > 2000 </ option >
< option value = " 1999 " > 1999 </ option >
< option value = " 1998 " > 1998 </ option >
< option value = " 1997 " > 1997 </ option >
< option value = " 1996 " > 1996 </ option >
< option value = " 1995 " > 1995 </ option >
< option value = " 1994 " > 1994 </ option >
< option value = " 1993 " > 1993 </ option >
< option value = " 1992 " > 1992 </ option >
< option value = " 1991 " > 1991 </ option >
< option value = " 1990 " > 1990 </ option >
< option value = " 1989 " > 1989 </ option >
< option value = " 1988 " > 1988 </ option >
< option value = " 1987 " > 1987 </ option >
< option value = " 1986 " > 1986 </ option >
< option value = " 1985 " > 1985 </ option >
< option value = " 1984 " > 1984 </ option >
< option value = " 1983 " > 1983 </ option >
< option value = " 1982 " > 1982 </ option >
< option value = " 1981 " > 1981 </ option >
< option value = " 1980 " > 1980 </ option >
< option value = " 1979 " > 1979 </ option >
< option value = " 1978 " > 1978 </ option >
< option value = " 1977 " > 1977 </ option >
< option value = " 1976 " > 1976 </ option >
< option value = " 1975 " > 1975 </ option >
< option value = " 1974 " > 1974 </ option >
< option value = " 1973 " > 1973 </ option >
< option value = " 1972 " > 1972 </ option >
< option value = " 1971 " > 1971 </ option >
< option value = " 1970 " > 1970 </ option >
< option value = " 1969 " > 1969 </ option >
< option value = " 1968 " > 1968 </ option >
< option value = " 1967 " > 1967 </ option >
< option value = " 1966 " > 1966 </ option >
< option value = " 1965 " > 1965 </ option >
< option value = " 1964 " > 1964 </ option >
< option value = " 1963 " > 1963 </ option >
< option value = " 1962 " > 1962 </ option >
< option value = " 1961 " > 1961 </ option >
< option value = " 1960 " > 1960 </ option >
< option value = " 1959 " > 1959 </ option >
< option value = " 1958 " > 1958 </ option >
< option value = " 1957 " > 1957 </ option >
< option value = " 1956 " > 1956 </ option >
< option value = " 1955 " > 1955 </ option >
< option value = " 1954 " > 1954 </ option >
< option value = " 1953 " > 1953 </ option >
< option value = " 1952 " > 1952 </ option >
< option value = " 1951 " > 1951 </ option >
< option value = " 1950 " > 1950 </ option >
< option value = " 1949 " > 1949 </ option >
< option value = " 1948 " > 1948 </ option >
< option value = " 1947 " > 1947 </ option >
< option value = " 1946 " > 1946 </ option >
< option value = " 1945 " > 1945 </ option >
< option value = " 1944 " > 1944 </ option >
< option value = " 1943 " > 1943 </ option >
< option value = " 1942 " > 1942 </ option >
< option value = " 1941 " > 1941 </ option >
< option value = " 1940 " > 1940 </ option >
< option value = " 1939 " > 1939 </ option >
< option value = " 1938 " > 1938 </ option >
< option value = " 1937 " > 1937 </ option >
< option value = " 1936 " > 1936 </ option >
< option value = " 1935 " > 1935 </ option >
< option value = " 1934 " > 1934 </ option >
< option value = " 1933 " > 1933 </ option >
< option value = " 1932 " > 1932 </ option >
< option value = " 1931 " > 1931 </ option >
< option value = " 1930 " > 1930 </ option >
< option value = " 1929 " > 1929 </ option >
< option value = " 1928 " > 1928 </ option >
< option value = " 1927 " > 1927 </ option >
< option value = " 1926 " > 1926 </ option >
< option value = " 1925 " > 1925 </ option >
< option value = " 1924 " > 1924 </ option >
< option value = " 1923 " > 1923 </ option >
< option value = " 1922 " > 1922 </ option >
< option value = " 1921 " > 1921 </ option >
< option value = " 1920 " > 1920 </ option >
< option value = " 1919 " > 1919 </ option >
< option value = " 1918 " > 1918 </ option >
< option value = " 1917 " > 1917 </ option >
< option value = " 1916 " > 1916 </ option >
< option value = " 1915 " > 1915 </ option >
< option value = " 1914 " > 1914 </ option >
< option value = " 1913 " > 1913 </ option >
< option value = " 1912 " > 1912 </ option >
< option value = " 1911 " > 1911 </ option >
< option value = " 1910 " > 1910 </ option >
< option value = " 1909 " > 1909 </ option >
< option value = " 1908 " > 1908 </ option >
< option value = " 1907 " > 1907 </ option >
< option value = " 1906 " > 1906 </ option >
< option value = " 1905 " > 1905 </ option >
< option value = " 1904 " > 1904 </ option >
< option value = " 1903 " > 1903 </ option >
< option value = " 1902 " > 1902 </ option >
< option value = " 1901 " > 1901 </ option >
< option value = " 1900 " > 1900 </ option >
< option value = " 1899 " > 1899 </ option >
< option value = " 1898 " > 1898 </ option >
< option value = " 1897 " > 1897 </ option >
< option value = " 1896 " > 1896 </ option >
< option value = " 1895 " > 1895 </ option >
< option value = " 1894 " > 1894 </ option >
< option value = " 1893 " > 1893 </ option >
< option value = " 1892 " > 1892 </ option >
< option value = " 1891 " > 1891 </ option >
< option value = " 1890 " > 1890 </ option >
< option value = " 1889 " > 1889 </ option >
< option value = " 1888 " > 1888 </ option >
< option value = " 1887 " > 1887 </ option >
< option value = " 1886 " > 1886 </ option >
< option value = " 1885 " > 1885 </ option >
< option value = " 1884 " > 1884 </ option >
< option value = " 1883 " > 1883 </ option >
< option value = " 1882 " > 1882 </ option >
< option value = " 1881 " > 1881 </ option >
< option value = " 1880 " > 1880 </ option >
< option value = " 1879 " > 1879 </ option >
< option value = " 1878 " > 1878 </ option >
< option value = " 1877 " > 1877 </ option >
< option value = " 1876 " > 1876 </ option >
< option value = " 1875 " > 1875 </ option >
< option value = " 1874 " > 1874 </ option >
< option value = " 1873 " > 1873 </ option >
< option value = " 1872 " > 1872 </ option >
< option value = " 1871 " > 1871 </ option >
< option value = " 1870 " > 1870 </ option >
< option value = " 1869 " > 1869 </ option >
< option value = " 1868 " > 1868 </ option >
< option value = " 1867 " > 1867 </ option >
< option value = " 1866 " > 1866 </ option >
< option value = " 1865 " > 1865 </ option >
< option value = " 1864 " > 1864 </ option >
< option value = " 1863 " > 1863 </ option >
< option value = " 1862 " > 1862 </ option >
< option value = " 1861 " > 1861 </ option >
< option value = " 1860 " > 1860 </ option >
< option value = " 1859 " > 1859 </ option >
< option value = " 1858 " > 1858 </ option >
< option value = " 1857 " > 1857 </ option >
< option value = " 1856 " > 1856 </ option >
< option value = " 1855 " > 1855 </ option >
< option value = " 1854 " > 1854 </ option >
< option value = " 1853 " > 1853 </ option >
< option value = " 1852 " > 1852 </ option >
< option value = " 1851 " > 1851 </ option >
< option value = " 1850 " > 1850 </ option >
2024-10-08 22:10:53 +03:00
</ select >& nbsp ; </ span >& nbsp ; < span id = " dateLoaded " style = " position:relative; top:2px; padding:2px 6px; display:none " class = " nw label-green " > Установлена дата из EXIF </ span >< span id = " dateAbsent " style = " position:relative; top:2px; padding:2px 6px; display:none " class = " nw label-orange " > Укажите дату съёмки ( нет в EXIF ) </ span >& nbsp ; < span class = " sm nw " >< a href = " # " class = " dot " onclick = " setDate(<?= (new DateTime())->format('d,m,Y'); ?>); return false " > Сегодня </ a > & middot ; < a href = " # " class = " dot " onclick = " setDate(<?= (new DateTime('yesterday'))->format('d,m,Y'); ?>); return false " > Вчера </ a > & middot ; < a href = " # " class = " dot " onclick = " setDate(0,0,0); return false " > Неизвестно </ a ></ span >
2024-07-05 06:58:17 +03:00
</ td >
</ tr >
2024-10-08 22:10:53 +03:00
< tr class = " lnk-gallery " >
< td class = " lcol " > Галерея :</ td >
2024-10-09 21:59:15 +03:00
< td style = " padding-right:15px " >
< select name = " gallery " id = " search_gid " >
< option value = " 0 " > Общая </ option >
< ? php
$galleries = DB :: query ( 'SELECT * FROM galleries' );
foreach ( $galleries as $g ) {
2024-10-15 20:39:44 +03:00
echo '<option value="' . $g [ 'id' ] . '">' . $g [ 'title' ] . '</option>' ;
2024-10-09 21:59:15 +03:00
}
?>
</ select >
</ td >
2024-10-08 22:10:53 +03:00
</ tr >
< tr class = " lnk-gallery " style = " display:none " >
< td ></ td >
< td style = " padding-right:15px " >< input type = " button " id = " addGalleryBtn " value = " Добавить " ></ td >
</ tr >< br >
2024-07-05 06:58:17 +03:00
</ tbody >
< tbody >
< tr >
< td colspan = " 2 " style = " height:10px " ></ td >
</ tr >
</ tbody >
2024-07-08 13:46:00 +03:00
2024-10-08 22:10:53 +03:00
< tbody class = " p20 " >
< tr >
< td colspan = " 2 " id = " step2 " class = " narrow " style = " font-size:20px; padding:10px 15px 5px " > Шаг 2. < b > Укажите объект , присутствующие на медиа </ b ></ td >
</ tr >
2024-07-05 06:58:17 +03:00
2024-10-08 22:10:53 +03:00
< tr class = " lnk-vehicle " >
< td class = " lcol " > Вид сущности :</ td >
< td style = " padding-right:15px " >< select name = " search_type " id = " search_type " class = " s5 " >
< ? php
$entities = DB :: query ( 'SELECT * FROM entities' );
foreach ( $entities as $e ) {
echo ' <option value="' . $e [ 'id' ] . '" style="background-color: ' . $e [ 'color' ] . '">' . $e [ 'title' ] . '</option>' ;
}
?>
</ select ></ td >
</ tr >
< tr class = " lnk-vehicle " >
< td class = " lcol " > ID / Название модели :</ td >
< td style = " padding-right:15px " >
< table >
< tbody >
< tr >
< td style = " padding:0; vertical-align:middle " >
2024-10-15 20:39:44 +03:00
< input type = " text " name = " search_num " id = " search_num " maxlength = " 15 " style = " width:150px; height:22px " onfocus = " showHint('num') " onblur = " hideHint('num') " >< input type = " button " id = " searchVehiclesByNumBtn " class = " searchVehiclesBtn " style = " height:22px; padding-top:0; position:relative; left:-1px " onclick = " searchVehicles(0) " value = " Найти в БД " >
2024-10-08 22:10:53 +03:00
</ td >
< td style = " padding:0; position:relative; vertical-align:top " >
< div style = " border: 1px dashed rgb(255, 151, 151); color: red; background-color: rgb(255, 255, 153); padding: 2px 4px 3px; margin: 0px 5px; white-space: nowrap; position: absolute; display: none; " id = " num_hint " >< small > Введите название модели , или её уникальный ID на сервере < ? = NGALLERY [ 'root' ][ 'title' ] ?> .</small></div>
</ td >
</ tr >
</ tbody >
</ table >
2024-10-15 20:39:44 +03:00
< div style = " position:relative; z-index:2000; padding-top:4px " >< div id = " vlist " class = " shadow " ></ div ></ div >
2024-10-08 22:10:53 +03:00
</ td >
</ tr >
2024-10-15 20:39:44 +03:00
< tr >
< td style = " padding-top:15px; width:200px " class = " lcol " > Привязка :</ td >
< td style = " width:90%; padding:13px 15px 8px 2px " >
< div id = " views-selector " style = " position:absolute; z-index:2000; padding:7px; display:none " class = " p20 shadow " >
< table id = " views " >
< tbody >< tr >
< td colspan = " 3 " style = " text-align:center " >< input type = " checkbox " name = " view_top " value = " 20 " id = " v20 " > < label for = " v20 " > Вид сверху </ label ></ td >
< td ></ td >
</ tr >
< tr >
< td >< input type = " radio " name = " view_s " value = " 4 " title = " Сзади-слева (окна) " class = " views-radio-single " style = " position:relative; top:7px; left:7px " ></ td >
< td style = " text-align:center " >
< input type = " radio " name = " view_s " value = " 8 " title = " Левый борт " class = " views-radio-single " >
</ td >
< td >< input type = " radio " name = " view_s " value = " 2 " title = " Спереди-слева (окна) " style = " position:relative; top:7px; left:-7px " ></ td >
< td style = " padding:0 35px; line-height:23px " rowspan = " 3 " >
< div >< input type = " radio " name = " view_s " value = " 12 " id = " v12 " > < label for = " v12 " > Заводская табличка </ label ></ div >
< div >< input type = " radio " name = " view_s " value = " 13 " id = " v13 " > < label for = " v13 " > Отдельные элементы Т С </ label ></ div >
< div class = " twoside-old " >< input type = " radio " name = " view_s " value = " 14 " id = " v14 " > < label for = " v14 " > Н е определяется ( двухстороннее Т С ) </ label ></ div >
< div >< input type = " radio " name = " view_s " value = " 0 " id = " v0 " > < label for = " v0 " >< span class = " s5 " >& nbsp ; Н е указан & nbsp ; </ span ></ label ></ div >
< div class = " sm " style = " margin-top:15px " >< a href = " # " class = " views-toggle-link dot " > Переключить на : < span class = " twoside-single " > Одностороннее Т С </ span >< span class = " twoside-twoside " > Двухстороннее Т С </ span ></ a ></ div >
</ td >
</ tr >
< tr >
< td style = " padding:0 2px " >< input type = " radio " name = " view_s " value = " 7 " title = " Вид строго сзади " class = " views-radio-single " ></ td >
< td class = " views-image " >
< table style = " width:138px; height:82px " >
< tbody >< tr >
< td style = " text-align:left; padding-left:25px " >
< input type = " radio " name = " view_s " value = " 9 " title = " Салон, вид вперёд " >
</ td >
< td style = " text-align:right; padding:0 " >
< input type = " radio " name = " view_s " value = " 10 " title = " Салон, вид назад " class = " views-radio-single " >
< input type = " radio " name = " view_s " value = " 11 " title = " Кабина " style = " position:relative; top:-7px " >
</ td >
</ tr >
</ tbody ></ table >
</ td >
< td style = " padding:0 2px " >< input type = " radio " name = " view_s " value = " 5 " title = " Вид строго спереди " ></ td >
</ tr >
< tr >
< td >< input type = " radio " name = " view_s " value = " 3 " title = " Сзади-справа (двери) " class = " views-radio-single " style = " position:relative; top:-7px; left:7px " ></ td >
< td style = " text-align:center " >
< input type = " radio " name = " view_s " value = " 6 " title = " Правый борт " >
</ td >
< td >< input type = " radio " name = " view_s " value = " 1 " title = " Спереди-справа (двери) " style = " position:relative; top:-7px; left:-7px " ></ td >
</ tr >
< tr >
< td colspan = " 3 " style = " text-align:center " >< input type = " checkbox " name = " view_bottom " value = " 40 " id = " v40 " > < label for = " v40 " > Вид снизу </ label ></ td >
< td ></ td >
</ tr >
</ tbody ></ table >
< script >
function openViewSelector ( val , el , twoside )
{
var selector = $ ( '#views-selector' );
var view = val % 20 ;
var modifier = val - view ;
$ ( 'input[value="' + view + '"]' , selector ) . prop ( 'checked' , true );
$ ( '#v20' ) . prop ( 'checked' , modifier == 20 );
$ ( '#v40' ) . prop ( 'checked' , modifier == 40 );
if ( view != 14 )
{
selector . attr ( 'data-twoside' , twoside );
$ ( '.twoside-old' ) . hide ();
}
else
{
selector . attr ( 'data-twoside' , 1 );
$ ( '.twoside-old' ) . show ();
}
var p = el . offset ();
selector . css ( 'left' , p . left + 'px' ) . css ( 'top' , ( p . top + el . height () + 3 ) + 'px' ) . show ();
}
function setViewSelectorCallback ( func )
{
var selector = $ ( '#views-selector' );
$ ( 'input[type="radio"]' , selector ) . on ( 'click' , function ( e )
{
var view = parseInt ( $ ( 'input[type="radio"]:checked' , selector ) . val ());
var modifier = parseInt ( $ ( 'input[type="checkbox"]:checked' , selector ) . val ());
if ( isNaN ( modifier )) modifier = 0 ;
var label = view || ! modifier ? views [ view ] : '' ;
if ( label != '' && modifier ) label += ' + ' ;
if ( modifier ) label += views [ modifier ];
func ( e , view , modifier , label );
selector . hide ();
});
$ ( 'input[type="checkbox"]' , selector ) . on ( 'click' , function ()
{
if ( $ ( this ) . is ( '#v20:checked' )) $ ( '#v40' ) . prop ( 'checked' , false ); else
if ( $ ( this ) . is ( '#v40:checked' )) $ ( '#v20' ) . prop ( 'checked' , false );
});
}
$ ( document ) . ready ( function ()
{
$ ( '.views-toggle-link' ) . on ( 'click' , function ()
{
var selector = $ ( '#views-selector' );
var twoside = selector . attr ( 'data-twoside' );
selector . attr ( 'data-twoside' , twoside == 1 ? 0 : 1 );
return false ;
});
});
</ script >
</ div >
< div class = " no-links " style = " padding-top:2px; margin-bottom:7px " >< i > Фотография ни к чему не привязана .</ i ></ div >
< div id = " links " >
< table id = " conn_veh " style = " margin-bottom:7px; display:none " >
</ table >
< table id = " conn_gid " style = " margin-bottom:7px; display:none " >
</ table >
</ div >
</ td >
</ tr >
2024-10-08 22:10:53 +03:00
< tr >
< td ></ td >
< td class = " sm " style = " padding:14px 15px 21px 2px; color:#888 " > Совет : модель сущности не обязательно привязывать , если она не учавствует в главном лице Фотографии или Видео .</ td >
</ tr >
</ tbody >
2024-07-05 06:58:17 +03:00
< tbody >
< tr >
< td colspan = " 2 " style = " height:10px " ></ td >
</ tr >
</ tbody >
< tbody class = " p20 " >
< tr >
2024-10-08 22:10:53 +03:00
< td colspan = " 2 " id = " step3 " class = " narrow " style = " font-size:20px; padding:10px 15px 7px " > Шаг 3. < b > Введите подпись для медиафайла :</ b ></ td >
2024-07-05 06:58:17 +03:00
</ tr >
< tr >
< td class = " lcol " > Место съёмки :</ td >
< td style = " padding-right:15px " >
< table width = " 100% " >
< tr >
< td style = " padding:0; vertical-align:middle " >
< input type = " text " name = " place " id = " place " maxlength = " 255 " style = " width:506px " onfocus = " showHint('place') " onblur = " hideHint('place') " value = " " >
</ td >
< td style = " padding:0; position:relative; vertical-align:top " width = " 100% " >
< div style = " border:1px dashed #FF9797; color:red; background-color:#ffff99; padding:2px 4px 3px; margin:0 5px; display:none; position:absolute " id = " place_hint " >< small >< strong > Без сокращений </ strong > ( кроме < strong > «к / ст» </ strong > , < strong > «л / ст» </ strong > ) .< br /> Если указана улица , < strong > остановку </ strong > пишем в примечании ( не обязательно ) .< br />< strong > В кавычках :</ strong > названия к / ст , колец , остановок , станций метро .< br />< strong > Без кавычек :</ strong > ж / д платформы и станции .< br /> Если на фото < strong > салон </ strong > , место можно не указывать .</ small ></ div >
</ td >
</ tr >
</ table >
</ td >
</ tr >
< tr >
< td class = " lcol " >
Описание :
< div class = " sm " style = " color:#999; margin:3px 5px 0 0; white-space:normal " > ( если требуются ) </ div >
</ td >
< td style = " padding-right:15px " >
< table >
< tr >
< td style = " padding:0; vertical-align:middle " >< textarea name = " descr " onfocus = " showHint('descr') " onblur = " hideHint('descr') " style = " width:506px; height:100px; margin-bottom:7px " ></ textarea ></ td >
< td style = " padding:0; position:relative; vertical-align:top " width = " 100% " >
< div style = " border:1px dashed #FF9797; color:red; background-color:#ffff99; padding:2px 4px 3px; margin:0 5px; display:none; position:absolute " id = " descr_hint " >< small > Текстовое описание изображения в произвольной форме :< br > пояснения , дополнения и т . п . , если необходимы ..</ small ></ div >
</ td >
</ tr >
</ table >
</ td >
</ tr >
2024-07-08 13:46:00 +03:00
2024-07-05 06:58:17 +03:00
< tr >
< td colspan = " 2 " style = " height:7px " ></ td >
< tr >
</ tbody >
< tbody >
< tr >
< td colspan = " 2 " style = " height:10px " ></ td >
</ tr >
</ tbody >
2024-07-08 13:46:00 +03:00
2024-07-05 06:58:17 +03:00
< tbody >
< tr >
< td colspan = " 2 " style = " height:10px " ></ td >
</ tr >
</ tbody >
2024-07-06 08:05:10 +03:00
2024-07-05 06:58:17 +03:00
< tbody class = " p20 " >
< tr >
2024-10-08 22:10:53 +03:00
< td colspan = " 2 " id = " step4 " class = " narrow " style = " font-size:20px; padding:10px 15px 0 " > Шаг 4. < b > Отметьте точку , с которой было сделано медиа на карте :</ b ></ td >
2024-07-05 06:58:17 +03:00
</ tr >
< tr >
< td ></ td >
2024-07-08 13:46:00 +03:00
< td style = " padding:7px 2px " >
< input type = " checkbox " name = " nomap " id = " nomap " value = " 1 " onclick = " switchMap() " > < label for = " nomap " > Н е указывать координаты </ label >
</ td >
</ tr >
< tr class = " upl-map " >
< td class = " lcol " > Точка съёмки :</ td >
< td >
< div id = " map_frame " class = " s11 p20 " style = " display:inline-block; padding:3px " >
< div id = " map_canvas " style = " width:600px; height:300px; overflow:hidden " ></ div >
< div >
< label for = " mapSelector " > Выберите карту :</ label >
< select id = " mapSelector " >
< option value = " osm " > OpenStreetMap </ option >
< option value = " hot " > Humanitarian OpenStreetMap Team </ option >
< option value = " opnv " > OPNVKarte </ option >
< option value = " 2gis " > 2 ГИС ( только Россия ) </ option >
< option value = " google " > Google Maps </ option >
</ select >
< div >
< label for = " railwayCheckbox " > Железная дорога от OpenRailwayMap :</ label >
< input type = " checkbox " id = " railwayCheckbox " >
</ div >
</ div >
</ div >
</ td >
</ tr >
2024-10-08 22:10:53 +03:00
2024-07-05 06:58:17 +03:00
</ tbody >
2024-07-08 13:46:00 +03:00
</ tr >
< tr >
< td colspan = " 2 " style = " height:7px " ></ td >
2024-07-05 06:58:17 +03:00
</ tr >
2024-07-08 13:46:00 +03:00
< tr >
</ tr >
</ tbody >
< script >
var map = L . map ( 'map_canvas' ) . setView ([ 55.7558 , 37.6176 ], 13 );
var marker ;
var geocoder ;
// Инициализация базовых слоев Leaflet.js
var baseLayers = {
" osm " : L . tileLayer ( 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' , {
maxZoom : 19
}),
" hot " : L . tileLayer ( 'https://tile-{s}.openstreetmap.fr/hot/{z}/{x}/{y}.png' , {
maxZoom : 19
}),
" opnv " : L . tileLayer ( 'https://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png' , {
maxZoom : 19 ,
attribution : 'Map data © <a href="https://www.thunderforest.com/">Thunderforest</a>'
}),
" 2gis " : L . tileLayer ( 'https://tile2.maps.2gis.com/tiles?x={x}&y={y}&z={z}&v=1' , {
maxZoom : 19 ,
attribution : '© 2GIS'
}),
" yandex " : L . tileLayer ( 'https://vec0{s}.maps.yandex.net/tiles?l=map&v=4.53.2&z={z}&x={x}&y={y}&scale=1&lang=ru_RU' , {
subdomains : [ '01' , '02' , '03' , '04' ],
maxZoom : 19
}),
" yandex-satellite " : L . tileLayer ( 'https://sat0{s}.maps.yandex.net/tiles?l=sat&v=3.827.0&z={z}&x={x}&y={y}&scale=1&lang=ru_RU' , {
subdomains : [ '01' , '02' , '03' , '04' ],
maxZoom : 19
}),
" google " : L . tileLayer ( 'https://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}' , {
subdomains : [ 'mt0' , 'mt1' , 'mt2' , 'mt3' ],
maxZoom : 19 ,
attribution : '© Google Maps'
}),
" openrailway " : L . tileLayer ( 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png' , {
maxZoom : 19 ,
attribution : '© OpenRailwayMap'
})
};
document . getElementById ( 'railwayCheckbox' ) . addEventListener ( 'change' , function () {
if ( this . checked ) {
baseLayers [ " openrailway " ] . addTo ( map );
} else {
map . removeLayer ( baseLayers [ " openrailway " ]);
}
});
// Инициализация карты Leaflet.js с выбранным базовым слоем по умолчанию
baseLayers [ " osm " ] . addTo ( map );
// Добавляем элемент управления выбора карты
document . getElementById ( 'mapSelector' ) . addEventListener ( 'change' , function () {
var selectedLayer = this . value ;
// Удаляем текущий слой карты Leaflet.js
map . eachLayer ( function ( layer ) {
map . removeLayer ( layer );
});
// Добавляем выбранный слой карты Leaflet.js
baseLayers [ selectedLayer ] . addTo ( map );
// Добавляем разметку внутри зданий для выбранных карт
if ( selectedLayer === " osm " || selectedLayer === " hot " || selectedLayer === " opnv " ) {
addIndoorLayer ( selectedLayer );
} else {
// Очищаем слой indoor, если выбран другой тип карты
clearIndoorLayer ();
}
});
// Функция добавления слоя разметки внутри зданий (Indoor)
function addIndoorLayer ( selectedLayer ) {
// Очищаем предыдущий indoor слой, если он был добавлен
clearIndoorLayer ();
// Пример добавления indoor слоя с использованием Leaflet Indoor.js
// Ваш код для загрузки и отображения indoor карты
// Ниже приведён пример заглушки
// Создаём новый indoor слой
map . indoorLayer = new L . Indoor ();
// Добавляем е г о на карту
map . indoorLayer . addTo ( map );
// Загрузка и отображение indoor карты с помощью Indoor.js
// Пример заглушки: добавление одного здания с этажами и метками
var building = {
name : " Пример здания " ,
floors : [{
level : 0 ,
plan : {
imageUrl : " path/to/indoor/plan.png " , // URL изображения плана здания
width : 800 , // Ширина изображения в пикселях
height : 600 // Высота изображения в пикселях
},
markers : [{
latLng : [ 51.505 , - 0.09 ], // Координаты метки на плане
label : " Метка на плане "
}]
}]
};
// Добавляем здание на indoor слой
map . indoorLayer . addLevel ( building );
// Пример настройки интерактивности для меток
building . floors . forEach ( function ( floor ) {
floor . markers . forEach ( function ( marker ) {
var markerIcon = L . divIcon ({
className : 'indoor-marker' ,
html : marker . label
});
L . marker ( marker . latLng , {
icon : markerIcon
}) . addTo ( map . indoorLayer . getLevel ( floor . level ));
});
});
}
// Функция очистки indoor слоя
function clearIndoorLayer () {
if ( map . indoorLayer ) {
map . removeLayer ( map . indoorLayer );
delete map . indoorLayer ;
}
}
// Добавляем обработчик клика на карту Leaflet.js
map . on ( 'click' , function ( e ) {
if ( marker ) {
map . removeLayer ( marker );
}
marker = L . marker ( e . latlng ) . addTo ( map );
document . getElementById ( 'markerLat' ) . value = e . latlng . lat ;
document . getElementById ( 'markerLng' ) . value = e . latlng . lng ;
});
// Инициализация поискового элемента управления Leaflet.js
geocoder = L . Control . geocoder ({
defaultMarkGeocode : false
}) . on ( 'markgeocode' , function ( e ) {
var latlng = e . geocode . center ;
if ( marker ) {
map . removeLayer ( marker );
}
marker = L . marker ( latlng ) . addTo ( map );
map . setView ( latlng , 13 );
document . getElementById ( 'markerLat' ) . value = latlng . lat ;
document . getElementById ( 'markerLng' ) . value = latlng . lng ;
var bbox = e . geocode . bbox ;
if ( bbox . isValid ()) {
var poly = L . polygon ([
bbox . getSouthEast (),
bbox . getNorthEast (),
bbox . getNorthWest (),
bbox . getSouthWest ()
]) . addTo ( map );
map . fitBounds ( poly . getBounds ());
}
}) . addTo ( map );
</ script >
< tbody class = " p20 " >
< tr >
2024-10-08 22:10:53 +03:00
< td colspan = " 2 " class = " narrow " style = " font-size:20px; padding:10px 15px 5px " > Шаг 5. < b > Выберите опции загрузки :</ b ></ td >
2024-07-08 13:46:00 +03:00
</ tr >
< tr >
</ tr >
< tr >
< td class = " lcol " > Лицензия :</ td >
< td style = " padding-bottom:7px " >
< select name = " license " >
< option value = " 0 " > Н е указана </ option >
< option value = " 1 " selected > Copyright & copy ; </ option >
< option value = " 2 " > Атрибуция ( BY ) </ option >
< option value = " 3 " > Атрибуция — С сохранением условий ( BY - SA ) </ option >
< option value = " 4 " > Атрибуция — Некоммерческое использование ( BY - NC ) </ option >
< option value = " 5 " > Атрибуция — Некоммерческое использование — С сохранением условий ( BY - NC - SA ) </ option >
< option value = " 6 " > Атрибуция — Без производных работ ( BY - ND ) </ option >
< option value = " 7 " > Атрибуция — Некоммерческое использование — Без производных работ ( BY - NC - ND ) </ option >
< option value = " 8 " > Передача в общественное достояние ( Zero ) </ option >
< option value = " 9 " > Нет авторских прав ( Mark ) </ option >
</ select > & nbsp ; & nbsp ; < a href = " https://creativecommons.org/licenses/?lang=ru " target = " _blank " class = " und sm " > Информация о лицензиях </ a >
2024-10-01 06:31:32 +03:00
</ td >< br >
2024-10-08 22:10:53 +03:00
2024-07-08 13:46:00 +03:00
</ tr >
2024-10-01 06:31:32 +03:00
< tr >
2024-10-08 22:10:53 +03:00
< td class = " lcol " ></ td >
< td style = " padding:7px 2px " >
2024-10-09 21:59:15 +03:00
< input type = " checkbox " name = " disablecomments " id = " disablecomments " value = " 1 " > < label for = " disablecomments " > Отключить комментарии </ label >
2024-10-08 22:10:53 +03:00
</ td >
</ tr >
< tr >
< td class = " lcol " ></ td >
< td class = " sm " style = " color:#888 " > Комментирование Вашего медиа будет ограничено , однако Вы сможете добавлять к нему свои аннотации вне зависимости от настройки .</ td >
</ tr >
2024-10-15 20:39:44 +03:00
2024-10-08 22:10:53 +03:00
< tr >
< td class = " lcol " ></ td >
< td style = " padding:7px 2px " >
2024-10-09 21:59:15 +03:00
< input type = " checkbox " name = " disablerating " id = " disablerating " value = " 1 " > < label for = " disablerating " > Отключить оценку фотографии </ label >
2024-10-08 22:10:53 +03:00
</ td >
</ tr >
< tr >
< td class = " lcol " ></ td >
< td class = " sm " style = " color:#888 " > Никто не сможет оценивать Ваше медиа , однако оно не сможет продвинуться в конкурс .</ td >
</ tr >
< tr >
< td class = " lcol " ></ td >
< td style = " padding:7px 2px " >
2024-10-09 21:59:15 +03:00
< input type = " checkbox " name = " disableshowtop " id = " disableshowtop " value = " 1 " > < label for = " disableshowtop " > Н е продвигать в общем топе </ label >
2024-10-15 20:39:44 +03:00
2024-10-08 22:10:53 +03:00
</ td >
</ tr >
< tr >
< td class = " lcol " ></ td >
< td class = " sm " style = " color:#888 " > Медиа не будет отображаться в следующих топах : < br > Самые популярные за 24 часа < br > 30 самых просматриваемых фото за 24 часа < br > Случайные фотографии < br > Лента фотография </ td >
2024-10-12 13:40:58 +03:00
</ tr >
< tr >
< td class = " lcol " ></ td >
< td style = " padding:7px 2px " >
< input type = " checkbox " name = " disableexif " id = " disableexif " value = " 1 " > < label for = " disableexif " > Скрыть EXIF </ label >
</ td >
</ tr >
< tr >
< td class = " lcol " ></ td >
< td class = " sm " style = " color:#888 " > EXIF ( параметры съёмки ) фотографии будет скрыт на странице .</ td >
2024-10-08 22:10:53 +03:00
</ tr >
< tr >
< td class = " lcol " ></ td >
< td style = " padding:7px 2px " >
2024-10-09 21:59:15 +03:00
< input type = " checkbox " name = " disablesubsnotify " id = " disablesubsnotify " value = " 1 " > < label for = " disablesubsnotify " > Н е уведомлять подписчиков о новом медиа </ label >
2024-10-08 22:10:53 +03:00
</ td >
</ tr >
2024-10-12 13:40:58 +03:00
2024-10-08 22:10:53 +03:00
< tr >
< td class = " lcol " ></ td >
< td class = " sm " style = " color:#888 " > Ваши подписчики не получат уведомление о публикации Медиа , но они всегда смогут е г о увидеть из общих топов ( если таковая настройка не была отключена </ td >
</ tr > < br >
2024-10-15 20:39:44 +03:00
2024-10-08 22:10:53 +03:00
< tr >
< td class = " lcol " ></ td >
< td class = " sm " style = " color:#888 " >< b > Вы можете всегда в любое время изменить эти настройки .</ b ></ td >
</ tr >
< style >
. w3 - green ,
. w3 - hover - green : hover {
color : #fff !important;
background - color : #000 !important;
}
. w3 - center {
text - align : center ! important ;
}
. w3 - container ,
. w3 - panel {
padding : 0.01 em 16 px ;
}
. w3 - light - grey ,
. w3 - hover - light - grey : hover ,
. w3 - light - gray ,
. w3 - hover - light - gray : hover {
color : #000 !important;
background - color : #f1f1f1 !important;
}
. w3 - container : after ,
. w3 - container : before ,
. w3 - panel : after ,
. w3 - panel : before ,
. w3 - row : after ,
. w3 - row : before ,
. w3 - row - padding : after ,
. w3 - row - padding : before ,
. w3 - cell - row : before ,
. w3 - cell - row : after ,
. w3 - clear : after ,
. w3 - clear : before ,
. w3 - bar : before ,
. w3 - bar : after {
content : " " ;
display : table ;
clear : both ;
}
</ style >
2024-07-08 13:46:00 +03:00
< tr >
< td ></ td >
< td style = " padding:20px 2px 12px " >
2024-07-21 01:39:54 +03:00
< button id = " submitbtn " href = " # " class = " progress-button " data - loading = " Идёт загрузка... " data - finished = " Обработка... " type = " submit " > Опубликовать </ button > & nbsp ; & nbsp ; & nbsp ;
2024-07-08 13:46:00 +03:00
< span id = " statusbox " class = " narrow " style = " font-size:20px; font-weight:bold; position:relative; top:-12px " ></ span >
< div id = " errorsbox " style = " display:none; color:red; margin-top:15px; font-weight:bold; " ></ div >
2024-07-21 02:59:40 +03:00
< div style = " margin-top: 20px; max-width: 50% !important; " id = " prgb " class = " w3-light-grey " >
2024-10-08 22:10:53 +03:00
</ div >
2024-07-08 13:46:00 +03:00
</ td >
</ tr >
</ tbody >
</ table >
</ form >
</ div >< br >
< div id = " loadtable " class = " p20 " style = " display:none; padding-bottom:20px; margin-bottom:15px " >
< h4 > Загруженные фотографии </ h4 >
< div id = " loadbox " style = " display:flex; flex-wrap:wrap; gap:10px " ></ div >
</ div >
</ td >
</ tr >
2024-07-08 20:10:00 +03:00
< tr >
2024-10-08 22:10:53 +03:00
< ? php include ( $_SERVER [ 'DOCUMENT_ROOT' ] . '/views/components/Footer.php' ); ?>
2024-07-08 20:10:00 +03:00
</ tr >
2024-07-05 06:58:17 +03:00
</ table >
2024-07-05 07:59:53 +03:00
< script >
2024-07-08 13:46:00 +03:00
$ ( '#mform' ) . submit ( function ( e ) {
e . preventDefault ();
var formData = new FormData ( this );
var bar = $ ( '.bar' );
var percent = $ ( '.percent' );
var status = $ ( '#status' );
var continuepost = 0 ;
2024-07-09 00:00:18 +03:00
$ ( '#submitbtn' ) . prop ( " disabled " , true );
2024-07-08 13:46:00 +03:00
$ . ajax ({
type : " POST " ,
url : '/api/upload' ,
data : formData ,
2024-10-08 22:10:53 +03:00
2024-07-08 13:46:00 +03:00
xhr : function () {
2024-07-21 02:59:40 +03:00
$ ( '#prgb' ) . html ( '<div id="myBar" class="w3-container w3-green w3-center" style="width:0%">0%</div>' );
2024-07-08 13:46:00 +03:00
// Добавляем спиннер и блокируем кнопку во время загрузки
//$("#r").html('<button type="submit" id="register" name="loginaccount" class="btn btn-block btn-primary py-2 ripple-handler mt-1 mb-3" disabled><div class="plus-button-reflection"></div>Опубликовать</button>');
var xhr = new window . XMLHttpRequest ();
xhr . upload . addEventListener ( " progress " , function ( evt ) {
if ( evt . lengthComputable ) {
var percentComplete = parseInt ((( evt . loaded / evt . total ) * 100 ));
console . log ( evt . total );
2024-10-08 22:10:53 +03:00
var elem = document . getElementById ( " myBar " );
elem . style . width = percentComplete + '%' ;
elem . innerHTML = percentComplete + '%' ;
2024-07-08 13:46:00 +03:00
scrollProgressBarWidth ( percentComplete );
}
}, false );
return xhr ;
},
success : function ( response ) {
2024-07-21 02:59:40 +03:00
$ ( '#prgb' ) . html ( '' );
2024-07-08 13:46:00 +03:00
try {
var jsonData = JSON . parse ( response );
} catch ( err ) {
//$("#r").html('<button id="uploadbtn" style="margin-right: 15px; background: none; border: none; color: aliceblue; " type="submit" name="createpost" class="mb-3 mt-3"><i style="position:relative; font-size: 25px; margin-right: 10px; color: aliceblue; top: 4px;" class="ti ti-message-share uploadbtn"></i>Опубликовать</button>');
$ ( " #prgtd " ) . html ( '' );
$ ( " #prgrsg " ) . html ( '' );
//$("#prgrsg").html('<div id="prgrs" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar" aria-valuenow="0" aria-valuemin="100" aria-valuemax="100" style="width: 100%">100%</div>');
Notify . noty ( 'danger' , escapeHtml ( err . message ));
$ ( " #r " ) . html ( '<button type="submit" id="register" name="loginaccount" class="btn btn-block btn-primary py-2 ripple-handler mt-1 mb-3">Опубликовать<span class="ripple-mask"><span class="ripple" style=""></span></span></button>' );
scrollProgressBarWidth ( 0 );
2024-07-09 00:00:18 +03:00
$ ( '#submitbtn' ) . prop ( " disabled " , false );
2024-07-08 13:46:00 +03:00
}
if ( jsonData . errorcode == " 1 " ) {
$ ( " #r " ) . html ( '<button type="submit" id="register" name="loginaccount" class="btn btn-block btn-primary py-2 ripple-handler mt-1 mb-3">Опубликовать<span class="ripple-mask"><span class="ripple" style=""></span></span></button>' );
//$("#r").html('<button id="uploadbtn" style="margin-right: 15px; background: none; border: none; color: aliceblue; " type="submit" name="createpost" class="mb-3 mt-3"><i style="position:relative; font-size: 25px; margin-right: 10px; color: aliceblue; top: 4px;" class="ti ti-message-share uploadbtn"></i>Опубликовать</button>');
$ ( " #prgtd " ) . html ( '' );
$ ( " #prgrsg " ) . html ( '' );
//$("#prgrsg").html('<div id="prgrs" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar" aria-valuenow="0" aria-valuemin="100" aria-valuemax="100" style="width: 100%">100%</div>');
Notify . noty ( 'danger' , 'В посте нет контента!' );
scrollProgressBarWidth ( 0 );
2024-07-09 00:00:18 +03:00
$ ( '#submitbtn' ) . prop ( " disabled " , false );
2024-07-08 13:46:00 +03:00
} else if ( jsonData . errorcode == " 101 " ) {
$ ( " #r " ) . html ( '<button type="submit" id="register" name="loginaccount" class="btn btn-block btn-primary py-2 ripple-handler mt-1 mb-3">Опубликовать<span class="ripple-mask"><span class="ripple" style=""></span></span></button>' );
//$("#r").html('<button id="uploadbtn" style="margin-right: 15px; background: none; border: none; color: aliceblue; " type="submit" name="createpost" class="mb-3 mt-3"><i style="position:relative; font-size: 25px; margin-right: 10px; color: aliceblue; top: 4px;" class="ti ti-message-share uploadbtn"></i>Опубликовать</button>');
$ ( " #prgtd " ) . html ( '' );
$ ( " #prgrsg " ) . html ( '' );
//$("#prgrsg").html('<div id="prgrs" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar" aria-valuenow="0" aria-valuemin="100" aria-valuemax="100" style="width: 100%">100%</div>');
Notify . noty ( 'danger' , 'В посте больше 10 медиафайлов' );
2024-07-09 00:00:18 +03:00
$ ( '#submitbtn' ) . prop ( " disabled " , false );
2024-07-08 13:46:00 +03:00
scrollProgressBarWidth ( 0 );
} else if ( jsonData . errorcode == " 0 " ) {
Notify . noty ( 'success' , 'Успешная публикация!' );
$ ( " #r " ) . html ( '<button type="submit" id="register" name="loginaccount" class="btn btn-block btn-primary py-2 ripple-handler mt-1 mb-3" disabled>Опубликовать<span class="ripple-mask"><span class="ripple" style=""></span></span></button>' );
//$("#r").html('<button id="uploadbtn" style="margin-right: 15px; background: none; border: none; color: aliceblue; " type="submit" name="createpost" class="mb-3 mt-3"><i style="position:relative; font-size: 25px; margin-right: 10px; color: aliceblue; top: 4px;" class="ti ti-message-share uploadbtn"></i>Опубликовать</button>');
$ ( " #prgtd " ) . html ( '' );
$ ( " #prgrsg " ) . html ( '' );
/* let positionData = {
id : jsonData . id ,
user_id : jsonData . user_id ,
text : jsonData . text ,
user_flname : jsonData . user_flname ,
username : jsonData . username ,
user_photo : jsonData . user_photo
};
ws . send ( JSON . stringify ( positionData )); */
setTimeout ( function () {
window . location . replace ( " /photo/ " + jsonData . id );
scrollProgressBarWidth ( 0 );
}, 1000 );
} else if ( jsonData . errorcode == " LIMITEXCEEDED " ) {
$ ( " #r " ) . html ( '<button type="submit" id="register" name="loginaccount" class="btn btn-block btn-primary py-2 ripple-handler mt-1 mb-3">Опубликовать<span class="ripple-mask"><span class="ripple" style=""></span></span></button>' );
$ ( " #prgtd " ) . html ( '' );
$ ( " #prgrsg " ) . html ( '' );
//$("#prgrsg").html('<div id="prgrs" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar" aria-valuenow="0" aria-valuemin="100" aria-valuemax="100" style="width: 100%">100%</div>');
//alert('З а последнюю минуту вы отправили слишком много запросов. Повторите попытку позже.');
createModal ( 'NONE' , 'NONE' , 'NONE' , 'LIMITEXCEEDED' , 'limit' );
scrollProgressBarWidth ( 0 );
} else {
$ ( " #r " ) . html ( '<button type="submit" id="register" name="loginaccount" class="btn btn-block btn-primary py-2 ripple-handler mt-1 mb-3">Опубликовать<span class="ripple-mask"><span class="ripple" style=""></span></span></button>' );
$ ( " #prgtd " ) . html ( '' );
$ ( " #prgrsg " ) . html ( '' );
//$("#prgrsg").html('<div id="prgrs" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar" aria-valuenow="0" aria-valuemin="100" aria-valuemax="100" style="width: 100%">100%</div>');
Notify . noty ( 'danger' , 'Неизвестная ошибка' );
scrollProgressBarWidth ( 0 );
2024-07-09 00:00:18 +03:00
$ ( '#submitbtn' ) . prop ( " disabled " , false );
2024-07-08 13:46:00 +03:00
}
},
error : function ( xhr , status , error ) {
2024-07-21 02:59:40 +03:00
$ ( '#prgb' ) . html ( '' );
2024-07-08 13:46:00 +03:00
$ ( " #r " ) . html ( '<button type="submit" id="register" name="loginaccount" class="btn btn-block btn-primary py-2 ripple-handler mt-1 mb-3">Опубликовать<span class="ripple-mask"><span class="ripple" style=""></span></span></button>' );
$ ( " #prgtd " ) . html ( '' );
$ ( " #prgrsg " ) . html ( '' );
//$("#prgrsg").html('<div id="prgrs" class="progress-bar progress-bar-striped progress-bar-animated bg-danger" role="progressbar" aria-valuenow="0" aria-valuemin="100" aria-valuemax="100" style="width: 100%">100%</div>');
Notify . noty ( 'danger' , 'Н е удалось опубликовать пост' );
scrollProgressBarWidth ( 0 );
2024-07-09 00:00:18 +03:00
$ ( '#submitbtn' ) . prop ( " disabled " , false );
2024-07-08 13:46:00 +03:00
},
cache : false ,
contentType : false ,
processData : false
});
});
</ script >
2024-07-05 06:58:17 +03:00
</ body >
</ html >