Регулярное выражение
This commit is contained in:
@@ -51,9 +51,9 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
<div class="test-users">
|
<div class="test-users">
|
||||||
<h3><i class="fas fa-users"></i> Управление задачами 0.9</h3>
|
<h3><i class="fas fa-users"></i> Управление задачами {{APP_VERSION}}</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong><i class="fas fa-school"></i> @2025</strong> МАОУ - СОШ № 25</li>
|
<li><strong><i class="fas fa-school"></i> @2025</strong> {{SCHOOL_NAME}}</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
<div class="header-top">
|
<div class="header-top">
|
||||||
<div style="display: flex; align-items: center; justify-content: center; gap: 20px; margin-bottom: 20px;">
|
<div style="display: flex; align-items: center; justify-content: center; gap: 20px; margin-bottom: 20px;">
|
||||||
<img src="login2.png" alt="School CRM Logo" style="max-width: 200px; max-height: 110px; flex-shrink: 0;">
|
<img src="login2.png" alt="School CRM Logo" style="max-width: 200px; max-height: 110px; flex-shrink: 0;">
|
||||||
<h1 style="margin: 0;"> School CRM - Управление задачами</h1>
|
<h1 style="margin: 0;"> {{SCHOOL_NAME}} - Управление задачами</h1>
|
||||||
<img src="login2.png" alt="School CRM Logo" style="max-width: 200px; max-height: 110px; flex-shrink: 0;">
|
<img src="login2.png" alt="School CRM Logo" style="max-width: 200px; max-height: 110px; flex-shrink: 0;">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -34,9 +34,9 @@ function startAutoUpdate() {
|
|||||||
// Запускаем новый интервал (каждые 15 секунд)
|
// Запускаем новый интервал (каждые 15 секунд)
|
||||||
updateInterval = setInterval(() => {
|
updateInterval = setInterval(() => {
|
||||||
autoUpdateTasks();
|
autoUpdateTasks();
|
||||||
}, 15000); // 15000 мс = 15 секунд
|
}, 120000); // 120000 мс = 2 минуты
|
||||||
|
|
||||||
console.log('🔄 Автообновление задач запущено (каждые 15 сек)');
|
console.log('🔄 Автообновление задач запущено (каждые 2 минуты)');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Остановка автоматического обновления
|
// Остановка автоматического обновления
|
||||||
|
|||||||
21
server.js
21
server.js
@@ -37,6 +37,27 @@ let serverReady = false;
|
|||||||
let adminRouter = null;
|
let adminRouter = null;
|
||||||
let upload = null;
|
let upload = null;
|
||||||
|
|
||||||
|
let cachedHtml = null;
|
||||||
|
app.get('/', (req, res) => {
|
||||||
|
if (cachedHtml) {
|
||||||
|
// Заменяем плейсхолдеры в закешированном HTML (на случай, если переменные окружения изменились – но обычно они не меняются во время работы)
|
||||||
|
let modifiedHtml = cachedHtml
|
||||||
|
.replace(/{{APP_NAME}}/g, process.env.APP_NAME)
|
||||||
|
.replace(/{{APP_VERSION}}/g, process.env.APP_VERSION)
|
||||||
|
.replace(/{{SCHOOL_NAME}}/g, process.env.SCHOOL_NAME);
|
||||||
|
return res.send(modifiedHtml);
|
||||||
|
}
|
||||||
|
|
||||||
|
const filePath = path.join(__dirname, 'public', 'index.html');
|
||||||
|
fs.readFile(filePath, 'utf8', (err, html) => {
|
||||||
|
if (err) {
|
||||||
|
return res.status(500).send('Ошибка');
|
||||||
|
}
|
||||||
|
cachedHtml = html;
|
||||||
|
// ... отправка
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Инициализируем multer сразу с настройками по умолчанию
|
// Инициализируем multer сразу с настройками по умолчанию
|
||||||
const uploadsDir = path.join(__dirname, 'data', 'uploads');
|
const uploadsDir = path.join(__dirname, 'data', 'uploads');
|
||||||
const createDirIfNotExists = (dirPath) => {
|
const createDirIfNotExists = (dirPath) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user