some changes to vehicles

This commit is contained in:
themohooks 2025-02-14 19:54:55 +03:00
parent dce7aa906a
commit 61c0e0cc9e
7 changed files with 412 additions and 7 deletions

View file

@ -16,6 +16,11 @@ class MainController
{
Page::set('Main');
}
public static function page()
{
Page::set('Page');
}
public static function about()
{
@ -47,11 +52,6 @@ class MainController
{
Page::set('Top30');
}
public static function vehicle()
{
Page::set('Vehicle');
}
public static function feed()
{

View file

@ -0,0 +1,23 @@
<?php
namespace App\Controllers;
use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class VehicleController
{
public static function i()
{
Page::set('Vehicle/Index');
}
public static function iedit()
{
Page::set('Vehicle/IndexEdit');
}
public static function dbedit()
{
Page::set('Vehicle/DBEdit');
}
}

View file

@ -17,12 +17,12 @@ class Routes
Router::get('/register', 'RegisterController@i');
Router::get('/photo/$id', 'PhotoController@i');
Router::get('/author/$id', 'ProfileController@i');
Router::get('/page/$id', 'MainController@page');
Router::post('/api/login', 'ApiController@login');
Router::post('/api/register', 'ApiController@register');
Router::get('/api/photo/stats', 'ApiController@photostats');
Router::get('/about', 'MainController@about');
Router::get('/rules', 'MainController@rules');
Router::get('/vehicle/$id', 'MainController@vehicle');
Router::get('/rules/pub', 'MainController@publicationRules');
Router::get('/rules/photo', 'MainController@photoRules');
Router::get('/rules/video', 'MainController@videoRules');
@ -41,6 +41,7 @@ class Routes
Router::get('/comments', 'MainController@comments');
if (Auth::userid() > 0) {
$user = new \App\Models\User(Auth::userid());
Router::get('/lk', 'ProfileController@lk');
Router::get('/lk/upload', 'ProfileController@upload');
Router::get('/lk/history', 'ProfileController@lkhistory');
@ -52,6 +53,8 @@ class Routes
Router::get('/fav', 'MainController@fav');
Router::get('/vehicle/edit', 'VehicleController@iedit');
Router::get('/vehicle/dbedit', 'VehicleController@dbedit');
Router::post('/api/upload', 'ApiController@upload');
Router::post('/api/profile/update', 'ApiController@updateprofile');
Router::post('/api/photo/comment', 'ApiController@photocomment');
@ -80,5 +83,6 @@ class Routes
} else {
Router::redirect('/login?return='.$_SERVER['HTTP_REFERER']);
}
Router::get('/vehicle/$id', 'VehicleController@i');
}
}

View file

@ -112,7 +112,7 @@ if (NGALLERY['root']['registration']['emailverify'] === true && $user->i('status
<?php } ?>
<li><a href="/lk/history" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-images"></i></span><span class="mm-label">Журнал</span></a></li>
<li><a href="/lk/konkurs.php" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-compass"></i></span><span class="mm-label">Конкурс</span></a></li>
<li><a href="/lk/vehicles.php" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-folder-plus"></i></span><span class="mm-label"><b>Правка БД</b></span></a></li>
<li><a href="/vehicle/edit" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-folder-plus"></i></span><span class="mm-label"><b>Правка БД</b></span></a></li>
<li><a href="/lk/ticket.php" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-question-circle"></i></span><span class="mm-label">Мои заявки</span></a></li>
<li><a href="/lk/profile" class="mm-item"><span class="mm-icon"><i class="fas fa-sm fa-fw fa-cog"></i></span><span class="mm-label">Настройки профиля</span></a></li>
<li><a href="/search?id=<?=Auth::userid()?>" class="mm-item"><span class="mm-icon"><i class="far fa-sm fa-fw fa-images"></i></span><span class="mm-label">Мои фотографии</span></a></li>

View file

@ -0,0 +1,274 @@
<?php
use \App\Services\{Auth, DB, Date};
use \App\Models\{Vehicle, User};
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/LoadHead.php'); ?>
</head>
<body>
<div id="backgr"></div>
<table class="tmain">
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Navbar.php'); ?>
<tr>
<td class="main">
<h1>Внесение изменений в БД</h1>
<script src="/js/jquery-ui.js?1633005526"></script>
<script src="/js/selector.js?1730197663"></script>
<script>
addTexts({
'VF_MAXLENGTH': 'Буфер обмена содержит %s знаков, но значение в этом поле не может быть длиннее %s знаков!\nВероятно, вы пытаетесь вставить некорректные данные'
});
$(document).ready(function() {
$('#mname').autocompleteSelector('mid', '/api.php?action=get-models&type=2', {
minLength: 1,
defaultLabel: '(модель неизвестна)',
defaultValue: 632
});
$('#chname').autocompleteSelector('chid', '/api.php?action=get-chassis&type=2', {
minLength: 1,
defaultLabel: '(нет)'
});
$('#state, #service').change(function() {
$(this).attr('class', $('option:selected', this).attr('class'));
}).change();
$('#mform').on('submit', function() {
var built_y_len = $('#built_y').val().length;
var scrap_y_len = $('#scrap_y').val().length;
if (built_y_len > 1 && built_y_len < 4 ||
scrap_y_len > 1 && scrap_y_len < 4) {
alert('Неверное значение в поле «год» (0, 1 либо 4 символа).');
return false;
}
var source = $('#source');
if (source.val().trim().length < 4) {
alert('Не указан источник сведений. Пожалуйста, заполните соответствующее поле..');
source[0].focus();
return false;
}
$('input[type="submit"]', this).prop('disabled', true);
return true;
});
// Фильтрация вставляемых из буфера данных
$('#num, #gos, #zn, #vin, #cn, #start_y, #leave_y, #built_y, #scrap_y').on('paste', function(e) {
var field = $(this);
var text = e.originalEvent.clipboardData.getData('Text').trim();
var maxlength = parseInt(field.attr('maxlength'));
if (maxlength && text.length > maxlength)
alert(_text['VF_MAXLENGTH'].replace('%s', text.length).replace('%s', maxlength) + '.');
else field.insertAtCaret(text);
return false;
});
// Опции даты
$('.approx-aprx').css('font-weight', 'normal').on('change', function() {
$(this).attr('class', 'approx-aprx ' + $('option:selected', this).attr('class'))
}).change();
});
$.fn.insertAtCaret = function(myValue) {
return this.each(function() {
if (document.selection) {
// For browsers like Internet Explorer
this.focus();
var sel = document.selection.createRange();
sel.text = myValue;
this.focus();
} else
if (this.selectionStart || this.selectionStart == '0') {
// For browsers like Firefox and Webkit based
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos) + myValue + this.value.substring(endPos, this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
})
};
</script>
<form method="post" id="mform" action="?action=write">
<input type="hidden" name="cid" value="14">
<input type="hidden" name="type" value="2">
<input type="hidden" name="link_gos" value="0">
<input type="hidden" name="num" id="num" value="">
<h4>Какую запись вы хотите уточнить?</h4>
<div class="p20w">
<table>
<tbody>
<tr>
<th></th>
<th></th>
<th>Название</th>
</tr>
<tr class="s1">
<td class="ds"><input type="radio" name="base_nid" value="0" checked="checked" onclick="fillFields(0)"></td>
<td class="d" colspan="7">Никакую, я хочу добавить новое ТС</td>
</tr>
<?php
$entities = DB::query('SELECT * FROM entities_data WHERE entityid=:id AND (LOWER(title) LIKE :title) OR id=:title', array(':title'=>$_GET['num'], ':id'=>$_GET['type']));
foreach ($entities as $e) {
echo '<tr>
<td class="ds"><input type="radio" name="base_nid" id="n'.$e['id'].'" value="'.$e['id'].'" onclick="fillFields('.$e['id'].')"></td>
<td class="n"><a href="/vehicle/'.$e['id'].'" target="_blank">'.$e['id'].'</a></td>
<td class="ds">'.$e['title'].'</td>
</tr>';
}
?>
</tbody>
</table>
</div>
<br clear="all"><br>
<div class="p20" style="padding-left:5px; margin-bottom:15px">
<table class="nospaces" width="100%">
<input type="hidden" name="did" value="27">
<tbody>
<?php
$vehicle = DB::query('SELECT * FROM entities WHERE id=:id', array(':id' => $_GET['type']))[0];
$data = json_decode($vehicle['sampledata'], true);
$count = 1;
foreach ($data as $d) {
if ($d['important'] === "1") {
$imp = 'required';
}
echo '
<tr>
<td class="lcol">' . $d['name'] . '</td>
<td style="padding-bottom:15px"><input type="text" name="modelinput_'.$count.'" id="num" style="width:80px" maxlength="21" value=""></td>
</tr>';
$count++;
}
?>
<tr>
<td style="width: 10%"></td>
<script>
var vdata = {};
vdata[0] = [0, '', '', '', 632, '(модель неизвестна)', 0, '(нет)', 0, 1, '', '', '', 0, '', 0, 0, '', 0, '', 0, '', 0, '', 0, '', 0, '', ''];
vdata[594939] = [27, '48', '', '', 135, 'ПТЗ-5283', 0, '(нет)', 0, 5, '14', '', '', 11, '2002', 10, 0, '', 10, '2018-11-30', 10, '0000-00-00', 0, '0000-00-00', 0, '2022-00-00', 0, '', ''];
function setDateByYM(field, y, m, approx) {
$('#' + field + '_m').val(m == 0 ? '' : m);
$('#' + field + '_y').val(y == '0000' ? '' : y);
$('#' + field + '_approx_aprx').val(approx).change();
}
function setDateByDate(field, date, approx) {
var d = date.substring(8, 10);
var m = date.substring(5, 7);
var y = date.substring(0, 4);
$('#' + field + '_d').val(d == 0 ? '' : d);
$('#' + field + '_m').val(m == 0 ? '' : m);
$('#' + field + '_y').val(y == 0 ? '' : y);
$('#' + field + '_approx_aprx').val(approx).change();
}
function fillFields(nid) {
var i = 0;
$('#did').val(vdata[nid][i++]);
$('#num').val(vdata[nid][i++]);
$('#gos').val(vdata[nid][i++]);
$('#nu2').val(vdata[nid][i++]);
$('#mid').val(vdata[nid][i++]);
$('#mname').val(vdata[nid][i++]);
$('#chid').val(vdata[nid][i++]);
$('#chname').val(vdata[nid][i++]);
$('#service').val(vdata[nid][i++]).change();
$('#state').val(vdata[nid][i++]).change();
$('#zn').val(vdata[nid][i++]);
$('#cn').val(vdata[nid][i++]);
$('#vin').val(vdata[nid][i++]);
setDateByYM('built', vdata[nid][i + 1], vdata[nid][i], vdata[nid][i + 2]);
i += 3;
setDateByYM('scrap', vdata[nid][i + 1], vdata[nid][i], vdata[nid][i + 2]);
i += 3;
setDateByDate('start', vdata[nid][i], vdata[nid][i + 1]);
i += 2;
setDateByDate('launc', vdata[nid][i], vdata[nid][i + 1]);
i += 2;
setDateByDate('haltd', vdata[nid][i], vdata[nid][i + 1]);
i += 2;
setDateByDate('leave', vdata[nid][i], vdata[nid][i + 1]);
i += 2;
$('#note').val(vdata[nid][i++]);
$('#history').val(vdata[nid][i++]);
}
</script>
</tr>
<tr>
<td></td>
<td>
<br>
<input type="submit" value="&nbsp; &nbsp; &nbsp; Отправить &nbsp; &nbsp; &nbsp;">
</td>
</tr>
</tbody>
</table>
</div>
</form>
<div><a href="vehicles.php?cid=14&amp;type=2&amp;mid=632">Вернуться назад</a></div><br>
<div class="p20">
<h4>Правила заполнения формы</h4>
<ul class="straight">
<li>Обязательные для заполнения поля выделены жирным шрифтом.</li>
<li>Если какие-либо данные отсутствуют, оставьте соответствующее поле пустым. Пожалуйста, не вписывайте дефис и тому подобные знаки.</li>
<li>Если требуемой модели нет в списке укажите её в поле «Примечание». После публикации фотографии модель будет добавлена в список.</li>
<li>Если Вы обладаете информацией о приписке данного ТС, а поле «Депо/Парк» отсутствует, укажите эти данные в поле «Примечание».</li>
</ul>
</div>
</td>
</tr>
<tr>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Footer.php'); ?>
</tr>
</table>
</body>
</html>

View file

@ -0,0 +1,104 @@
<?php
use \App\Services\{Auth, DB, Date};
use \App\Models\{Vehicle, User};
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/LoadHead.php'); ?>
</head>
<body>
<div id="backgr"></div>
<table class="tmain">
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Navbar.php'); ?>
<tr><td class="main">
<h1>Внесение изменений в БД</h1>
<p>На этой странице Вы можете ввести данные о Сущности, которые отсутствуют в базе данных сайта, либо требуют уточнения.<br />Информация добавляется в базу после проверки редактором.</p>
<script src="/js/jquery-ui.js?1633005526"></script>
<script src="/js/selector.js?1730197663"></script>
<form action="dbedit" id="mform" method="get" class="p20" style="float:left">
<input type="hidden" name="action" value="add">
<h4>Добавить/редактировать Сущность</h4>
<table>
<tr>
<td class="lcol">Вид сущности:</td>
<td><select name="type" id="type">
<?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>
<td class="lcol">
<input type="radio" name="link_gos" id="link_gos0" value="0" checked="checked">
<label for="link_gos0">ID:</label>
</td>
<td style="padding-right:10px">
<input type="text" name="num" id="num" maxlength="20" style="width:80px" value=''> &nbsp;
<input type="radio" name="link_gos" id="link_gos1" value="1">
<label for="link_gos1">Название:</label>
<input type="text" name="gos" id="gos" maxlength="20" style="width:120px" value=''>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" id="submit" style="width:100px; margin-top:15px" value="Далее &gt;&gt;" disabled="disabled"></td>
</tr>
</table>
<input type="hidden" name="mid" value="0">
</form>
<br clear="all">
<br>
<script>
function numKeyUp()
{
$('#submit').prop('disabled', $('#num').val().trim() + $('#gos').val().trim() == '');
}
function radioClick()
{
$('#num').prop('disabled', $('#link_gos1').is(':checked'));
$('#gos').prop('disabled', $('#link_gos0').is(':checked'));
}
$(document).ready(function()
{
$('#cname').citySelector('cid', { params: { with_null: true } });
$('#type').change(function() { $(this).attr('class', $('option:selected', this).attr('class')); }).change();
$('#num, #gos').on('keyup', numKeyUp);
$('input[name="link_gos"]').on('click', radioClick);
numKeyUp();
radioClick();
});
</script>
</td></tr>
<tr>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/views/components/Footer.php'); ?>
</tr>
</table>
</body>
</html>