News-Ansicht aufgeräumt & vereinheitlicht
- CSS-Klassen und Benennungen überall einheitlich gemacht (news-card, login-success usw.) - Unnötige CSS-Regeln rausgeschmissen, Code jetzt viel schlanker - Cards sehen jetzt überall gleich aus, egal wie viel Text drinsteht - „Mehr lesen“-Link besser sichtbar gemacht - Bugfix: Langer News-Text läuft nicht mehr aus der Card raus - Generell: Viel code aufgeräumt, damit alles schicker und übersichtlicher ist!
This commit is contained in:
parent
7280cb0246
commit
6cb75b0c1d
104
CSS/style.css
104
CSS/style.css
@ -11,16 +11,6 @@ body {
|
|||||||
max-width: 100vw;
|
max-width: 100vw;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
#wrapper {
|
|
||||||
flex: 1 0 auto;
|
|
||||||
min-height: 0;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: flex-start;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
width: 100vw;
|
|
||||||
max-width: 100vw;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: black;
|
color: black;
|
||||||
@ -111,12 +101,6 @@ a {
|
|||||||
grid-column-end: 6;
|
grid-column-end: 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container-rest {
|
|
||||||
grid-column-start: 1;
|
|
||||||
grid-column-end: 6;
|
|
||||||
padding-left: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.link-impressum {
|
.link-impressum {
|
||||||
padding-left: 30px;
|
padding-left: 30px;
|
||||||
|
|
||||||
@ -216,10 +200,6 @@ a {
|
|||||||
max-width: 100vw;
|
max-width: 100vw;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
#wrapper {
|
|
||||||
width: 100vw;
|
|
||||||
max-width: 100vw;
|
|
||||||
}
|
|
||||||
#navigation {
|
#navigation {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
@ -313,13 +293,10 @@ a {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
.desktop-only {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
.mobile-only {
|
.mobile-only {
|
||||||
display: block !important;
|
display: block !important;
|
||||||
}
|
}
|
||||||
.login-container {
|
.form-container {
|
||||||
position: static;
|
position: static;
|
||||||
width: 95vw;
|
width: 95vw;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
@ -328,7 +305,7 @@ a {
|
|||||||
padding: 16px 8px;
|
padding: 16px 8px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.event-container {
|
.content-container {
|
||||||
position: static;
|
position: static;
|
||||||
width: 95vw;
|
width: 95vw;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
@ -337,23 +314,23 @@ a {
|
|||||||
padding: 16px 8px;
|
padding: 16px 8px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.login-container h1 {
|
.form-container h1 {
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.event-container h1 {
|
.content-container h1 {
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
.login-container form,
|
.form-container form,
|
||||||
.login-container label,
|
.form-container label,
|
||||||
.login-container input {
|
.form-container input {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
.login-container button,
|
.form-container button,
|
||||||
.login-container a {
|
.form-container a {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
@ -406,8 +383,6 @@ a {
|
|||||||
margin: 0 12px;
|
margin: 0 12px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tabellen-Design */
|
|
||||||
table {
|
table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-collapse: separate;
|
border-collapse: separate;
|
||||||
@ -470,7 +445,7 @@ td a:hover {
|
|||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
margin: 24px 0;
|
margin: 24px 0;
|
||||||
}
|
}
|
||||||
.news-card {
|
.card {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
box-shadow: 0 2px 12px rgba(0,0,0,0.08);
|
box-shadow: 0 2px 12px rgba(0,0,0,0.08);
|
||||||
@ -482,37 +457,86 @@ td a:hover {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.news-card h3 {
|
.card h3 {
|
||||||
margin: 0 0 8px 0;
|
margin: 0 0 8px 0;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
color: #222;
|
color: #222;
|
||||||
}
|
}
|
||||||
.news-card .news-date {
|
.card .news-date {
|
||||||
font-size: 0.95em;
|
font-size: 0.95em;
|
||||||
color: #888;
|
color: #888;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
.news-card .news-desc {
|
.card .news-desc {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
color: #333;
|
color: #333;
|
||||||
margin-bottom: 14px;
|
margin-bottom: 14px;
|
||||||
white-space: pre-line;
|
white-space: pre-line;
|
||||||
}
|
}
|
||||||
.news-card .admin-btn {
|
.card .admin-btn {
|
||||||
align-self: flex-end;
|
align-self: flex-end;
|
||||||
margin: 0 0 0 8px;
|
margin: 0 0 0 8px;
|
||||||
padding: 6px 12px;
|
padding: 6px 12px;
|
||||||
font-size: 0.97em;
|
font-size: 0.97em;
|
||||||
}
|
}
|
||||||
|
.card--wide {
|
||||||
|
max-width: 700px;
|
||||||
|
width: 90vw;
|
||||||
|
display: flex;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.news-desc a {
|
||||||
|
color: #007b9e;
|
||||||
|
font-weight: 600;
|
||||||
|
text-decoration: underline;
|
||||||
|
margin-left: 4px;
|
||||||
|
transition: color 0.2s;
|
||||||
|
}
|
||||||
|
.news-desc a:hover {
|
||||||
|
color: #09add0;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.news-card-actions {
|
||||||
|
margin-top: auto;
|
||||||
|
display: flex;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
.news-desc {
|
||||||
|
min-height: 80px;
|
||||||
|
margin-bottom: 14px;
|
||||||
|
}
|
||||||
@media (max-width: 700px) {
|
@media (max-width: 700px) {
|
||||||
.news-cards {
|
.news-cards {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
}
|
}
|
||||||
.news-card {
|
.card {
|
||||||
max-width: 98vw;
|
max-width: 98vw;
|
||||||
min-width: unset;
|
min-width: unset;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
.status-box {
|
||||||
|
background: #ffe0e0;
|
||||||
|
color: #b30000;
|
||||||
|
border: 1px solid #ffb3b3;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 10px 16px;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.error-box {
|
||||||
|
background: #ffe0e0;
|
||||||
|
color: #b30000;
|
||||||
|
border: 1px solid #ffb3b3;
|
||||||
|
border-radius: 6px;
|
||||||
|
padding: 10px 16px;
|
||||||
|
margin-bottom: 18px;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
}
|
}
|
@ -106,4 +106,18 @@ class NewsController {
|
|||||||
}
|
}
|
||||||
$this->view->setDoMethodName('showDeleteSuccess');
|
$this->view->setDoMethodName('showDeleteSuccess');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function showNewsDetail() {
|
||||||
|
$id = $_GET['id'] ?? null;
|
||||||
|
if ($id) {
|
||||||
|
$news = $this->model->getNewsById($id);
|
||||||
|
if ($news) {
|
||||||
|
$this->view->setVars(['news' => $news]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Fehlerfall: zurück zur Übersicht
|
||||||
|
header('Location: index.php?controller=News&do=showNews');
|
||||||
|
exit;
|
||||||
|
}
|
||||||
}
|
}
|
@ -10,10 +10,10 @@ abstract class Database {
|
|||||||
/**
|
/**
|
||||||
* Zugangsdaten für die Datenbank
|
* Zugangsdaten für die Datenbank
|
||||||
*/
|
*/
|
||||||
private $dbName = "pbbfa23csc_bibarts"; //Datenbankname
|
private $dbName = "bibarts"; //Datenbankname
|
||||||
private $linkName = "localhost"; //Datenbank-Server
|
private $linkName = "localhost"; //Datenbank-Server
|
||||||
private $user = "pbbfa23csc"; //Benutzername
|
private $user = "root"; //Benutzername
|
||||||
private $pw = "gfDVACEQ9BZr"; //Passwort
|
private $pw = ""; //Passwort
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stellt eine Verbindung zur Datenbank her
|
* Stellt eine Verbindung zur Datenbank her
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="login-container">
|
<div class="form-container">
|
||||||
<h1>Anmelden</h1>
|
<h1>Anmelden</h1>
|
||||||
<?php if (!empty($errors['login'])): ?>
|
<?php if (!empty($errors['login'])): ?>
|
||||||
<div class="login-error"><?=htmlspecialchars($errors['login'])?></div>
|
<div class="login-error"><?=htmlspecialchars($errors['login'])?></div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="form-container">
|
<div class="form-container">
|
||||||
<h1>Anmelden</h1>
|
<h1>Anmelden</h1>
|
||||||
<?php if (!empty($errors['login'])): ?>
|
<?php if (!empty($errors['login'])): ?>
|
||||||
<div class="form-error"><?=htmlspecialchars($errors['login'])?></div>
|
<div class="error-box"><?=htmlspecialchars($errors['login'])?></div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<form class="form-horizontal" action="index.php" method="post">
|
<form class="form-horizontal" action="index.php" method="post">
|
||||||
<input type="hidden" name="controller" value="Auth">
|
<input type="hidden" name="controller" value="Auth">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="login-success">
|
<div class="status-box">
|
||||||
<h2>Login erfolgreich!</h2>
|
<h2>Login erfolgreich!</h2>
|
||||||
<p>Sie werden in wenigen Sekunden zu den News weitergeleitet...</p>
|
<p>Sie werden in wenigen Sekunden zu den News weitergeleitet...</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="login-success">
|
<div class="status-box">
|
||||||
<h2>Logout erfolgreich!</h2>
|
<h2>Logout erfolgreich!</h2>
|
||||||
<p>Sie werden in wenigen Sekunden zum Login weitergeleitet...</p>
|
<p>Sie werden in wenigen Sekunden zum Login weitergeleitet...</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="form-container">
|
<div class="form-container">
|
||||||
<h1>Registrieren</h1>
|
<h1>Registrieren</h1>
|
||||||
<?php if (!empty($errors['register'])): ?>
|
<?php if (!empty($errors['register'])): ?>
|
||||||
<div class="form-error"><?=htmlspecialchars($errors['register'])?></div>
|
<div class="error-box"><?=htmlspecialchars($errors['register'])?></div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<form class="form-horizontal" action="index.php" method="post">
|
<form class="form-horizontal" action="index.php" method="post">
|
||||||
<input type="hidden" name="controller" value="Auth">
|
<input type="hidden" name="controller" value="Auth">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="login-success">
|
<div class="status-box">
|
||||||
<h2>Registrierung erfolgreich!</h2>
|
<h2>Registrierung erfolgreich!</h2>
|
||||||
<p>Sie werden in wenigen Sekunden zum Login weitergeleitet...</p>
|
<p>Sie werden in wenigen Sekunden zum Login weitergeleitet...</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php if (!empty($events)): ?>
|
<?php if (!empty($events)): ?>
|
||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="event-container">
|
<div class="content-container">
|
||||||
<h2>Alle Ausstellungen</h2>
|
<h2>Alle Ausstellungen</h2>
|
||||||
<div class="event-container-inhalt">
|
<div class="event-container-inhalt">
|
||||||
<table>
|
<table>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="form-container">
|
<div class="form-container">
|
||||||
<h1>News erstellen</h1>
|
<h1>News erstellen</h1>
|
||||||
<?php if (!empty($errors['news'])): ?>
|
<?php if (!empty($errors['news'])): ?>
|
||||||
<div class="form-error"><?=htmlspecialchars($errors['news'])?></div>
|
<div class="error-box"><?=htmlspecialchars($errors['news'])?></div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<form class="form-horizontal" action="index.php" method="post">
|
<form class="form-horizontal" action="index.php" method="post">
|
||||||
<input type="hidden" name="controller" value="News">
|
<input type="hidden" name="controller" value="News">
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<div class="form-container">
|
<div class="form-container">
|
||||||
<h1>News bearbeiten</h1>
|
<h1>News bearbeiten</h1>
|
||||||
<?php if (!empty($errors['news'])): ?>
|
<?php if (!empty($errors['news'])): ?>
|
||||||
<div class="form-error"><?=htmlspecialchars($errors['news'])?></div>
|
<div class="error-box"><?=htmlspecialchars($errors['news'])?></div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<form class="form-horizontal" action="index.php" method="post">
|
<form class="form-horizontal" action="index.php" method="post">
|
||||||
<input type="hidden" name="controller" value="News">
|
<input type="hidden" name="controller" value="News">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="login-success">
|
<div class="status-box">
|
||||||
<h2>News erfolgreich erstellt!</h2>
|
<h2>News erfolgreich erstellt!</h2>
|
||||||
<p>Du wirst in wenigen Sekunden zur Übersicht weitergeleitet...</p>
|
<p>Du wirst in wenigen Sekunden zur Übersicht weitergeleitet...</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="login-success">
|
<div class="status-box">
|
||||||
<h2>News erfolgreich gelöscht!</h2>
|
<h2>News erfolgreich gelöscht!</h2>
|
||||||
<p>Du wirst in wenigen Sekunden zur Übersicht weitergeleitet...</p>
|
<p>Du wirst in wenigen Sekunden zur Übersicht weitergeleitet...</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="login-success">
|
<div class="status-box">
|
||||||
<h2>News erfolgreich bearbeitet!</h2>
|
<h2>News erfolgreich bearbeitet!</h2>
|
||||||
<p>Du wirst in wenigen Sekunden zur Übersicht weitergeleitet...</p>
|
<p>Du wirst in wenigen Sekunden zur Übersicht weitergeleitet...</p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,18 +1,28 @@
|
|||||||
<?php if (!empty($news)): ?>
|
<?php if (!empty($news)): ?>
|
||||||
<div class="inhalt">
|
<div class="inhalt">
|
||||||
<div class="event-container">
|
<div class="content-container">
|
||||||
<h2>Alle News</h2>
|
<h2>Alle Infos</h2>
|
||||||
<?php if (isset($_SESSION['is_admin']) && $_SESSION['is_admin']): ?>
|
<?php if (isset($_SESSION['is_admin']) && $_SESSION['is_admin']): ?>
|
||||||
<a href="?controller=News&do=createNewsForm" class="admin-btn">News erstellen</a>
|
<a href="?controller=News&do=createNewsForm" class="admin-btn">News erstellen</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<div class="news-cards">
|
<div class="news-cards">
|
||||||
<?php foreach ($news as $item): ?>
|
<?php foreach ($news as $item): ?>
|
||||||
<div class="news-card">
|
<div class="card">
|
||||||
<h3><?=htmlspecialchars($item['name'])?></h3>
|
<h3><?=htmlspecialchars($item['name'])?></h3>
|
||||||
<div class="news-date"><?=date('d.m.Y', strtotime($item['date']))?></div>
|
<div class="news-date"><?=date('d.m.Y', strtotime($item['date']))?></div>
|
||||||
<div class="news-desc"><?=nl2br(htmlspecialchars($item['description']))?></div>
|
<div class="news-desc">
|
||||||
|
<?php
|
||||||
|
$desc = htmlspecialchars($item['description']);
|
||||||
|
if (mb_strlen($desc) > 255) {
|
||||||
|
$short = mb_substr($desc, 0, 255) . '...';
|
||||||
|
echo nl2br($short) . ' <a href="?controller=News&do=showNewsDetail&id=' . $item['news_id'] . '">mehr lesen</a>';
|
||||||
|
} else {
|
||||||
|
echo nl2br($desc);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
<?php if (isset($_SESSION['is_admin']) && $_SESSION['is_admin']): ?>
|
<?php if (isset($_SESSION['is_admin']) && $_SESSION['is_admin']): ?>
|
||||||
<div>
|
<div class="news-card-actions">
|
||||||
<a href="?controller=News&do=editNewsForm&id=<?=$item['news_id']?>" class="admin-btn">Bearbeiten</a>
|
<a href="?controller=News&do=editNewsForm&id=<?=$item['news_id']?>" class="admin-btn">Bearbeiten</a>
|
||||||
<a href="?controller=News&do=deleteNews&id=<?=$item['news_id']?>" class="admin-btn" onclick="return confirm('Wirklich löschen?');">Löschen</a>
|
<a href="?controller=News&do=deleteNews&id=<?=$item['news_id']?>" class="admin-btn" onclick="return confirm('Wirklich löschen?');">Löschen</a>
|
||||||
</div>
|
</div>
|
||||||
|
10
Views/News/showNewsDetail.phtml
Normal file
10
Views/News/showNewsDetail.phtml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<div class="inhalt">
|
||||||
|
<div class="content-container">
|
||||||
|
<div class="card card--wide">
|
||||||
|
<h2><?=htmlspecialchars($news['name'])?></h2>
|
||||||
|
<div class="news-date"><?=date('d.m.Y', strtotime($news['date']))?></div>
|
||||||
|
<div class="news-desc"><?=nl2br(htmlspecialchars($news['description']))?></div>
|
||||||
|
<a href="?controller=News&do=showNews" class="admin-btn" style="margin-top:16px;">Zurück zur Übersicht</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
23
bibarts.sql
23
bibarts.sql
@ -108,5 +108,24 @@ VALUES
|
|||||||
-- News-Daten
|
-- News-Daten
|
||||||
INSERT INTO news (name, description, date)
|
INSERT INTO news (name, description, date)
|
||||||
VALUES
|
VALUES
|
||||||
('Neuer Standort eröffnet', 'Unsere Galerie in Köln ist jetzt geöffnet!', '2025-06-01'),
|
('Branchen-News: bibarts schließt strategische Partnerschaft mit regionalen Veranstaltern', 'Die aufstrebende Ticketplattform bibarts hat heute eine Partnerschaft mit mehreren regionalen Veranstaltungsagenturen in Süddeutschland bekannt gegeben. Ziel der Zusammenarbeit ist die gemeinsame Digitalisierung lokaler Events und die Vereinfachung des Ticketverkaufsprozesses für kleinere Veranstalter.
|
||||||
('Frühbucher-Rabatt', 'Sichern Sie sich jetzt 15% Rabatt auf unsere Sommerausstellung.', '2025-05-20');
|
|
||||||
|
„Viele unserer Kunden sind Künstlerkollektive, Kulturvereine oder Betreiber kleiner Bühnen – für sie war der Einstieg in den digitalen Ticketverkauf bisher kompliziert oder zu teuer,“ erklärt der Vertriebsleiter von bibarts.
|
||||||
|
|
||||||
|
Durch die Partnerschaft erhalten Veranstalter Zugang zu einem vereinfachten Onboarding-System, einer automatisierten Veranstaltungsverwaltung und einem integrierten Zahlungssystem. bibarts stellt zudem eigene Event-Widgets bereit, die direkt in bestehende Websites eingebettet werden können.
|
||||||
|
|
||||||
|
Die ersten Live-Tests starten im Juli auf Veranstaltungen in Augsburg, Regensburg und Rosenheim. Bei Erfolg soll das Modell bundesweit ausgerollt werden. Marktanalysten sehen in bibarts einen ernstzunehmenden Konkurrenten für etablierte Anbieter wie Eventim oder Reservix – vor allem im Bereich Nischen- und Indie-Veranstaltungen.', '2025-06-01'),
|
||||||
|
('bibarts bringts: Neue Ticketplattform sorgt für Chaos auf der Poetry-Slam-Bühne – aber im besten Sinne', '„Niemand hat damit gerechnet, dass Poetry & Pizza Vol. 7 restlos ausverkauft sein würde – außer vielleicht bibarts.“ So beschreibt der Veranstalter des beliebten Slam-Formats in Hamburg-Altona die Überraschung des Abends.
|
||||||
|
|
||||||
|
Dank der neuen Ticketplattform bibarts, die laut Insidern „selbst mit einem Toaster kompatibel“ sei, wurden innerhalb von 48 Stunden über 300 Tickets verkauft – komplett online, ohne Papierkram, ohne Warteschlangen.
|
||||||
|
|
||||||
|
Doch die größte Überraschung: Die Slammer wurden beim Einlass mit QR-Codes auf Bananen begrüßt – ein kreatives Gimmick von bibarts’ Entwicklerteam, das einen Testlauf für „alternative Ticketträger“ durchführt. Laut Veranstalter kamen fast 30 Gäste mit beschrifteten Bananen zum Einlass – der Scanner erkannte alle korrekt. 🍌✅
|
||||||
|
|
||||||
|
„Wenn Technik und Kultur auf diese Weise verschmelzen, haben wir etwas richtig gemacht,“ scherzte ein Sprecher von bibarts nach der Show. Auch wenn die Banane wohl kein langfristiges Ticketmedium wird, sei der Abend ein voller Erfolg gewesen – sowohl auf als auch vor der Bühne.', '2025-05-20'),
|
||||||
|
('bibarts launcht Wartelistenfunktion – und füllt plötzlich leergebliebene Reihen', 'Mit einem neuen Feature sorgt bibarts erneut für Schlagzeilen: Die Plattform hat kürzlich eine intelligente Wartelistenfunktion eingeführt, die automatisch frei gewordene Plätze an Interessierte nachbesetzt – ein Gamechanger für spontane Events und kurzfristige Absagen.
|
||||||
|
|
||||||
|
Beim ersten Einsatz bei einem Impro-Theater in Köln meldeten sich über 40 Personen für die Warteliste. Als drei Gruppen krankheitsbedingt absagen mussten, sprang das System ein – und verschickte automatisch neue Tickets an Wartende. Innerhalb von 15 Minuten waren die Plätze wieder gefüllt.
|
||||||
|
|
||||||
|
„Wir konnten dadurch die Show vor vollem Haus spielen – ohne Einnahmeverluste“, sagt die Theaterleitung. Das Feature basiert auf einem Prioritätssystem, das Fairness und Schnelligkeit kombiniert und sogar per SMS benachrichtigt.
|
||||||
|
|
||||||
|
bibarts plant, die Funktion in Zukunft noch zu erweitern – etwa mit Echtzeit-Übersicht für Veranstalter oder integrierter Last-Minute-Werbung.', '2025-06-20');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user