Telegram-Kategorie-Checkboxen: Nutzer koennen bei Lage-Erstellung einzelne Telegram-Quellkategorien auswaehlen
Dieser Commit ist enthalten in:
@@ -502,6 +502,12 @@ const App = {
|
||||
document.getElementById('archive-incident-btn').addEventListener('click', () => this.handleArchive());
|
||||
document.getElementById('inc-international').addEventListener('change', () => updateSourcesHint());
|
||||
document.getElementById('inc-visibility').addEventListener('change', () => updateVisibilityHint());
|
||||
// Telegram-Kategorien Toggle
|
||||
const tgCheckbox = document.getElementById('inc-telegram');
|
||||
if (tgCheckbox) {
|
||||
tgCheckbox.addEventListener('change', function() { toggleTgCategories(this.checked); });
|
||||
}
|
||||
|
||||
|
||||
// Feedback
|
||||
document.getElementById('feedback-form').addEventListener('submit', (e) => this.submitFeedback(e));
|
||||
@@ -1453,6 +1459,9 @@ const App = {
|
||||
retention_days: parseInt(document.getElementById('inc-retention').value) || 0,
|
||||
international_sources: document.getElementById('inc-international').checked,
|
||||
include_telegram: document.getElementById('inc-telegram').checked,
|
||||
telegram_categories: document.getElementById('inc-telegram').checked
|
||||
? Array.from(document.querySelectorAll('.tg-cat-cb:checked')).map(cb => cb.value)
|
||||
: null,
|
||||
visibility: document.getElementById('inc-visibility').checked ? 'public' : 'private',
|
||||
};
|
||||
},
|
||||
@@ -1807,6 +1816,15 @@ const App = {
|
||||
document.getElementById('inc-retention').value = incident.retention_days;
|
||||
document.getElementById('inc-international').checked = incident.international_sources !== false && incident.international_sources !== 0;
|
||||
document.getElementById('inc-telegram').checked = !!incident.include_telegram;
|
||||
// Telegram-Kategorien wiederherstellen
|
||||
toggleTgCategories(!!incident.include_telegram);
|
||||
if (incident.telegram_categories) {
|
||||
let cats = incident.telegram_categories;
|
||||
if (typeof cats === 'string') { try { cats = JSON.parse(cats); } catch(e) { cats = []; } }
|
||||
document.querySelectorAll('.tg-cat-cb').forEach(cb => {
|
||||
cb.checked = cats.includes(cb.value);
|
||||
});
|
||||
}
|
||||
document.getElementById('inc-visibility').checked = incident.visibility !== 'private';
|
||||
updateVisibilityHint();
|
||||
updateSourcesHint();
|
||||
@@ -2596,6 +2614,7 @@ const App = {
|
||||
document.getElementById('src-discovery-result').style.display = 'none';
|
||||
document.getElementById('src-discover-btn').disabled = false;
|
||||
document.getElementById('src-discover-btn').textContent = 'Erkennen';
|
||||
document.getElementById('src-type-select').value = 'rss_feed';
|
||||
// Save-Button Text zurücksetzen
|
||||
const saveBtn = document.querySelector('#src-discovery-result .sources-discovery-actions .btn-primary');
|
||||
if (saveBtn) saveBtn.textContent = 'Speichern';
|
||||
@@ -2612,6 +2631,27 @@ const App = {
|
||||
|
||||
async discoverSource() {
|
||||
const urlInput = document.getElementById('src-discover-url');
|
||||
const urlVal = urlInput.value.trim();
|
||||
|
||||
// Telegram-URLs direkt behandeln (kein Discovery noetig)
|
||||
if (urlVal.match(/^(https?:\/\/)?(t\.me|telegram\.me)\//i)) {
|
||||
const channelName = urlVal.replace(/^(https?:\/\/)?(t\.me|telegram\.me)\//, '').replace(/\/$/, '');
|
||||
const tgUrl = 't.me/' + channelName;
|
||||
this._discoveredData = {
|
||||
name: '@' + channelName,
|
||||
domain: 't.me',
|
||||
source_type: 'telegram_channel',
|
||||
rss_url: null,
|
||||
};
|
||||
document.getElementById('src-name').value = '@' + channelName;
|
||||
document.getElementById('src-type-select').value = 'telegram_channel';
|
||||
document.getElementById('src-domain').value = tgUrl;
|
||||
document.getElementById('src-rss-url-group').style.display = 'none';
|
||||
document.getElementById('src-discovery-result').style.display = 'block';
|
||||
const saveBtn = document.querySelector('#src-discovery-result .sources-discovery-actions .btn-primary');
|
||||
if (saveBtn) { saveBtn.disabled = false; saveBtn.textContent = 'Speichern'; }
|
||||
return;
|
||||
}
|
||||
const url = urlInput.value.trim();
|
||||
if (!url) {
|
||||
UI.showToast('Bitte URL oder Domain eingeben.', 'warning');
|
||||
@@ -2652,6 +2692,8 @@ const App = {
|
||||
document.getElementById('src-notes').value = '';
|
||||
|
||||
const typeLabel = this._discoveredData.source_type === 'rss_feed' ? 'RSS-Feed' : this._discoveredData.source_type === 'telegram_channel' ? 'Telegram' : 'Web-Quelle';
|
||||
const typeSelect = document.getElementById('src-type-select');
|
||||
if (typeSelect) typeSelect.value = this._discoveredData.source_type || 'web_source';
|
||||
document.getElementById('src-type-display').value = typeLabel;
|
||||
|
||||
const rssGroup = document.getElementById('src-rss-url-group');
|
||||
@@ -2730,6 +2772,8 @@ const App = {
|
||||
document.getElementById('src-domain').value = source.domain || '';
|
||||
|
||||
const typeLabel = source.source_type === 'rss_feed' ? 'RSS-Feed' : source.source_type === 'telegram_channel' ? 'Telegram' : 'Web-Quelle';
|
||||
const typeSelect = document.getElementById('src-type-select');
|
||||
if (typeSelect) typeSelect.value = source.source_type || 'web_source';
|
||||
document.getElementById('src-type-display').value = typeLabel;
|
||||
|
||||
const rssGroup = document.getElementById('src-rss-url-group');
|
||||
@@ -2769,9 +2813,9 @@ const App = {
|
||||
const discovered = this._discoveredData || {};
|
||||
const data = {
|
||||
name,
|
||||
source_type: discovered.source_type || 'web_source',
|
||||
source_type: document.getElementById('src-type-select') ? document.getElementById('src-type-select').value : (discovered.source_type || 'web_source'),
|
||||
category: document.getElementById('src-category').value,
|
||||
url: discovered.rss_url || null,
|
||||
url: discovered.rss_url || (discovered.source_type === 'telegram_channel' ? (document.getElementById('src-domain').value || null) : null),
|
||||
domain: document.getElementById('src-domain').value.trim() || discovered.domain || null,
|
||||
notes: document.getElementById('src-notes').value.trim() || null,
|
||||
};
|
||||
@@ -3068,6 +3112,16 @@ function buildDetailedSourceOverview() {
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function toggleTgCategories(show) {
|
||||
const panel = document.getElementById('tg-categories-panel');
|
||||
if (panel) panel.style.display = show ? 'block' : 'none';
|
||||
}
|
||||
|
||||
function toggleAllTgCats(checked) {
|
||||
document.querySelectorAll('.tg-cat-cb').forEach(cb => { cb.checked = checked; });
|
||||
}
|
||||
function toggleRefreshInterval() {
|
||||
const mode = document.getElementById('inc-refresh-mode').value;
|
||||
const field = document.getElementById('refresh-interval-field');
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren