Bugfixes
This commit is contained in:
parent
5d9c5dbe5a
commit
0b0396af48
@ -116,6 +116,10 @@ class TalpaApi {
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function deleteTransmission($transmissionId) {
|
||||||
|
return $this->request('DELETE', '/linearSchedule/v1/transmissions/' . $transmissionId);
|
||||||
|
}
|
||||||
|
|
||||||
public function deleteEpisode($contentId) {
|
public function deleteEpisode($contentId) {
|
||||||
return $this->request('DELETE', '/content/v1/episodes/' . $contentId);
|
return $this->request('DELETE', '/content/v1/episodes/' . $contentId);
|
||||||
}
|
}
|
||||||
@ -127,6 +131,7 @@ class TalpaApi {
|
|||||||
if (strpos($endpoint, '/content/v1/episodes') !== false) return ["statusCode" => "200", "message" => "Episode deleted"];
|
if (strpos($endpoint, '/content/v1/episodes') !== false) return ["statusCode" => "200", "message" => "Episode deleted"];
|
||||||
if (strpos($endpoint, '/mam/v1/mediaAssets') !== false && !isset($data)) return ["mediaAssetLabel" => "TEL_MOCK_" . rand(100, 999)];
|
if (strpos($endpoint, '/mam/v1/mediaAssets') !== false && !isset($data)) return ["mediaAssetLabel" => "TEL_MOCK_" . rand(100, 999)];
|
||||||
if (strpos($endpoint, '/mam/v1/mediaAssets') !== false) return ["id" => "MOCK_ASSET_" . time()];
|
if (strpos($endpoint, '/mam/v1/mediaAssets') !== false) return ["id" => "MOCK_ASSET_" . time()];
|
||||||
|
if (strpos($endpoint, '/linearSchedule/v1/transmissions') !== false && strpos($endpoint, 'DELETE') !== false) return ["statusCode" => "200", "message" => "Transmission deleted"];
|
||||||
if (strpos($endpoint, '/linearSchedule/v1/transmissions') !== false && strpos($endpoint, 'PUT') === false) return ["statusCode" => "201", "id" => "MOCK_TX_" . time()];
|
if (strpos($endpoint, '/linearSchedule/v1/transmissions') !== false && strpos($endpoint, 'PUT') === false) return ["statusCode" => "201", "id" => "MOCK_TX_" . time()];
|
||||||
if (strpos($endpoint, '/linearSchedule/v1/transmissions') !== false) return ["statusCode" => "200", "message" => "Transmission updated"];
|
if (strpos($endpoint, '/linearSchedule/v1/transmissions') !== false) return ["statusCode" => "200", "message" => "Transmission updated"];
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
require_once __DIR__ . '/../vendor/autoload.php';
|
require_once __DIR__ . '/../vendor/autoload.php';
|
||||||
require_once __DIR__ . '/../helpers.php';
|
require_once __DIR__ . '/../helpers.php';
|
||||||
|
require_once __DIR__ . '/../TalpaAPI.php';
|
||||||
|
|
||||||
use Dotenv\Dotenv;
|
use Dotenv\Dotenv;
|
||||||
|
|
||||||
@ -32,18 +33,33 @@ try {
|
|||||||
], 400);
|
], 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if transmission exists
|
// Check if transmission exists and get talpa_transmission_id
|
||||||
$stmt = $db->prepare("SELECT id FROM transmissions WHERE id = ?");
|
$stmt = $db->prepare("SELECT id, talpa_transmission_id FROM transmissions WHERE id = ?");
|
||||||
$stmt->execute([$input['id']]);
|
$stmt->execute([$input['id']]);
|
||||||
|
$transmission = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
if (!$stmt->fetch()) {
|
if (!$transmission) {
|
||||||
jsonResponse([
|
jsonResponse([
|
||||||
'success' => false,
|
'success' => false,
|
||||||
'error' => 'Transmission not found'
|
'error' => 'Transmission not found'
|
||||||
], 404);
|
], 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete transmission
|
// Delete from Talpa API if talpa_transmission_id exists
|
||||||
|
if (!empty($transmission['talpa_transmission_id'])) {
|
||||||
|
try {
|
||||||
|
$talpaApi = new TalpaApi();
|
||||||
|
$talpaResponse = $talpaApi->deleteTransmission($transmission['talpa_transmission_id']);
|
||||||
|
|
||||||
|
// Log the Talpa API response
|
||||||
|
error_log("Talpa API delete response: " . json_encode($talpaResponse));
|
||||||
|
} catch (Exception $e) {
|
||||||
|
// Log error but continue with local deletion
|
||||||
|
error_log("Failed to delete transmission from Talpa API: " . $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete transmission from local database
|
||||||
$stmt = $db->prepare("DELETE FROM transmissions WHERE id = ?");
|
$stmt = $db->prepare("DELETE FROM transmissions WHERE id = ?");
|
||||||
$stmt->execute([$input['id']]);
|
$stmt->execute([$input['id']]);
|
||||||
|
|
||||||
|
|||||||
@ -298,6 +298,13 @@ body {
|
|||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
gap: 0.25rem;
|
gap: 0.25rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.action-buttons .btn-icon {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Standard Button Colors */
|
/* Standard Button Colors */
|
||||||
@ -928,6 +935,13 @@ body {
|
|||||||
display: flex;
|
display: flex;
|
||||||
gap: 0.25rem;
|
gap: 0.25rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-header-actions .btn-icon {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.block-header-time {
|
.block-header-time {
|
||||||
|
|||||||
@ -111,7 +111,7 @@ $dayNames = [
|
|||||||
</a>
|
</a>
|
||||||
<div class="navbar-nav">
|
<div class="navbar-nav">
|
||||||
<a class="nav-link" href="index.php">Dashboard</a>
|
<a class="nav-link" href="index.php">Dashboard</a>
|
||||||
<a class="nav-link" href="planner.php">Excel Planner</a>
|
<a class="nav-link" href="planner.php">Planner</a>
|
||||||
<a class="nav-link" href="calendar.php">Kalender</a>
|
<a class="nav-link" href="calendar.php">Kalender</a>
|
||||||
<a class="nav-link active" href="blocks.php">Blokken</a>
|
<a class="nav-link active" href="blocks.php">Blokken</a>
|
||||||
<a class="nav-link" href="infomercials.php">Infomercials</a>
|
<a class="nav-link" href="infomercials.php">Infomercials</a>
|
||||||
|
|||||||
@ -71,7 +71,7 @@ $infomercials = $db->query("
|
|||||||
</a>
|
</a>
|
||||||
<div class="navbar-nav">
|
<div class="navbar-nav">
|
||||||
<a class="nav-link" href="index.php">Dashboard</a>
|
<a class="nav-link" href="index.php">Dashboard</a>
|
||||||
<a class="nav-link" href="planner.php">Excel Planner</a>
|
<a class="nav-link" href="planner.php">Planner</a>
|
||||||
<a class="nav-link active" href="calendar.php">Kalender</a>
|
<a class="nav-link active" href="calendar.php">Kalender</a>
|
||||||
<a class="nav-link" href="blocks.php">Blokken</a>
|
<a class="nav-link" href="blocks.php">Blokken</a>
|
||||||
<a class="nav-link" href="infomercials.php">Infomercials</a>
|
<a class="nav-link" href="infomercials.php">Infomercials</a>
|
||||||
|
|||||||
@ -115,7 +115,7 @@ if (isset($_GET['edit'])) {
|
|||||||
</a>
|
</a>
|
||||||
<div class="navbar-nav">
|
<div class="navbar-nav">
|
||||||
<a class="nav-link active" href="index.php">Dashboard</a>
|
<a class="nav-link active" href="index.php">Dashboard</a>
|
||||||
<a class="nav-link" href="planner.php">Excel Planner</a>
|
<a class="nav-link" href="planner.php">Planner</a>
|
||||||
<a class="nav-link" href="calendar.php">Kalender</a>
|
<a class="nav-link" href="calendar.php">Kalender</a>
|
||||||
<a class="nav-link" href="blocks.php">Blokken</a>
|
<a class="nav-link" href="blocks.php">Blokken</a>
|
||||||
<a class="nav-link" href="infomercials.php">Infomercials</a>
|
<a class="nav-link" href="infomercials.php">Infomercials</a>
|
||||||
@ -176,7 +176,7 @@ if (isset($_GET['edit'])) {
|
|||||||
<div class="card shadow-sm h-100">
|
<div class="card shadow-sm h-100">
|
||||||
<div class="card-body text-center">
|
<div class="card-body text-center">
|
||||||
<i class="bi bi-table" style="font-size: 3rem; color: #2ecc71;"></i>
|
<i class="bi bi-table" style="font-size: 3rem; color: #2ecc71;"></i>
|
||||||
<h5 class="mt-3">Excel Planner</h5>
|
<h5 class="mt-3">Planner</h5>
|
||||||
<p class="text-muted">Tabel-gebaseerde planning</p>
|
<p class="text-muted">Tabel-gebaseerde planning</p>
|
||||||
<a href="planner.php" class="btn btn-success">
|
<a href="planner.php" class="btn btn-success">
|
||||||
<i class="bi bi-arrow-right-circle"></i> Open Planner
|
<i class="bi bi-arrow-right-circle"></i> Open Planner
|
||||||
|
|||||||
@ -284,7 +284,7 @@ $infomercials = $db->query("
|
|||||||
</a>
|
</a>
|
||||||
<div class="navbar-nav">
|
<div class="navbar-nav">
|
||||||
<a class="nav-link" href="index.php">Dashboard</a>
|
<a class="nav-link" href="index.php">Dashboard</a>
|
||||||
<a class="nav-link" href="planner.php">Excel Planner</a>
|
<a class="nav-link" href="planner.php">Planner</a>
|
||||||
<a class="nav-link" href="calendar.php">Kalender</a>
|
<a class="nav-link" href="calendar.php">Kalender</a>
|
||||||
<a class="nav-link" href="blocks.php">Blokken</a>
|
<a class="nav-link" href="blocks.php">Blokken</a>
|
||||||
<a class="nav-link active" href="infomercials.php">Infomercials</a>
|
<a class="nav-link active" href="infomercials.php">Infomercials</a>
|
||||||
|
|||||||
59
planner.php
59
planner.php
@ -44,14 +44,8 @@ if (isset($_POST['add_to_block'])) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle remove transmission
|
// Handle remove transmission - REMOVED: Now handled via AJAX to delete_transmission.php API
|
||||||
if (isset($_POST['remove_transmission'])) {
|
// This ensures proper Talpa API deletion
|
||||||
$stmt = $db->prepare("DELETE FROM transmissions WHERE id = ?");
|
|
||||||
$stmt->execute([$_POST['transmission_id']]);
|
|
||||||
|
|
||||||
header("Location: planner.php?date={$_POST['date']}&success=removed");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle reorder (move up/down)
|
// Handle reorder (move up/down)
|
||||||
if (isset($_POST['reorder'])) {
|
if (isset($_POST['reorder'])) {
|
||||||
@ -268,7 +262,7 @@ function calculateNextStartTimeForBlock($db, $date, $channel, $blockId) {
|
|||||||
</a>
|
</a>
|
||||||
<div class="navbar-nav">
|
<div class="navbar-nav">
|
||||||
<a class="nav-link" href="index.php">Dashboard</a>
|
<a class="nav-link" href="index.php">Dashboard</a>
|
||||||
<a class="nav-link active" href="planner.php">Excel Planner</a>
|
<a class="nav-link active" href="planner.php">Planner</a>
|
||||||
<a class="nav-link" href="calendar.php">Kalender</a>
|
<a class="nav-link" href="calendar.php">Kalender</a>
|
||||||
<a class="nav-link" href="blocks.php">Blokken</a>
|
<a class="nav-link" href="blocks.php">Blokken</a>
|
||||||
<a class="nav-link" href="infomercials.php">Infomercials</a>
|
<a class="nav-link" href="infomercials.php">Infomercials</a>
|
||||||
@ -304,7 +298,6 @@ function calculateNextStartTimeForBlock($db, $date, $channel, $blockId) {
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label"><strong>Selecteer Datum</strong></label>
|
|
||||||
<input type="date" name="date" class="form-control" value="<?= $selectedDate ?>" required>
|
<input type="date" name="date" class="form-control" value="<?= $selectedDate ?>" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-1">
|
<div class="col-md-1">
|
||||||
@ -601,13 +594,11 @@ function calculateNextStartTimeForBlock($db, $date, $channel, $blockId) {
|
|||||||
</form>
|
</form>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<form method="POST" style="display:inline;" onsubmit="return confirm('Verwijderen?');">
|
<button type="button"
|
||||||
<input type="hidden" name="transmission_id" value="<?= $tx['id'] ?>">
|
class="btn-icon btn-icon-xs btn-icon-danger"
|
||||||
<input type="hidden" name="date" value="<?= $selectedDate ?>">
|
onclick="deleteTransmissionPlanner(<?= $tx['id'] ?>, '<?= $selectedDate ?>')">
|
||||||
<button type="submit" name="remove_transmission" class="btn-icon btn-icon-xs btn-icon-danger">
|
|
||||||
<i class="bi bi-trash"></i>
|
<i class="bi bi-trash"></i>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -905,6 +896,44 @@ function calculateNextStartTimeForBlock($db, $date, $channel, $blockId) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Delete transmission via API (calls Talpa API)
|
||||||
|
function deleteTransmissionPlanner(transmissionId, date) {
|
||||||
|
if (!confirm('Weet je zeker dat je deze uitzending wilt verwijderen?\n\nDit verwijdert ook de uitzending uit Talpa.')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show loading indicator
|
||||||
|
const btn = event.target.closest('button');
|
||||||
|
const originalHTML = btn.innerHTML;
|
||||||
|
btn.disabled = true;
|
||||||
|
btn.innerHTML = '<span class="spinner-border spinner-border-sm" role="status"></span>';
|
||||||
|
|
||||||
|
fetch('api/delete_transmission.php', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ id: transmissionId })
|
||||||
|
})
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
if (data.success) {
|
||||||
|
// Reload page to show updated list
|
||||||
|
window.location.href = `planner.php?date=${date}&success=removed`;
|
||||||
|
} else {
|
||||||
|
alert('✗ Fout bij verwijderen: ' + (data.error || 'Onbekende fout'));
|
||||||
|
btn.disabled = false;
|
||||||
|
btn.innerHTML = originalHTML;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('Error:', error);
|
||||||
|
alert('✗ Netwerkfout bij verwijderen');
|
||||||
|
btn.disabled = false;
|
||||||
|
btn.innerHTML = originalHTML;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// Sync block to Talpa
|
// Sync block to Talpa
|
||||||
function syncBlockPlanner(date, channel) {
|
function syncBlockPlanner(date, channel) {
|
||||||
if (!confirm(`Wilt u alle uitzendingen in dit blok synchroniseren naar Talpa?\n\nDatum: ${date}\nZender: ${channel}`)) {
|
if (!confirm(`Wilt u alle uitzendingen in dit blok synchroniseren naar Talpa?\n\nDatum: ${date}\nZender: ${channel}`)) {
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## 📋 Overzicht
|
## 📋 Overzicht
|
||||||
|
|
||||||
Implementatie van een functie om blokken (inclusief transmissions en bloktijden) te kopiëren van andere dagen naar de huidige dag in de Excel Planner view.
|
Implementatie van een functie om blokken (inclusief transmissions en bloktijden) te kopiëren van andere dagen naar de huidige dag in de Planner view.
|
||||||
|
|
||||||
## 🎯 Functionaliteit Vereisten
|
## 🎯 Functionaliteit Vereisten
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ Implementatie van een functie om blokken (inclusief transmissions en bloktijden)
|
|||||||
- **Bloktijden**: De `actual_start_time` en `actual_end_time` van het bronblok
|
- **Bloktijden**: De `actual_start_time` en `actual_end_time` van het bronblok
|
||||||
|
|
||||||
### Gebruikersflow
|
### Gebruikersflow
|
||||||
1. Gebruiker opent Excel Planner ([`planner.php`](planner.php))
|
1. Gebruiker opent Planner ([`planner.php`](planner.php))
|
||||||
2. Gebruiker klikt op "Kopieer Blok" knop bij een specifiek blok
|
2. Gebruiker klikt op "Kopieer Blok" knop bij een specifiek blok
|
||||||
3. Modal opent met:
|
3. Modal opent met:
|
||||||
- Selectie van **brondag** (datepicker)
|
- Selectie van **brondag** (datepicker)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user