summaryrefslogtreecommitdiffstats
path: root/includes/admin/views/class-giglogadmin-adminpage.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/admin/views/class-giglogadmin-adminpage.php')
-rw-r--r--includes/admin/views/class-giglogadmin-adminpage.php96
1 files changed, 96 insertions, 0 deletions
diff --git a/includes/admin/views/class-giglogadmin-adminpage.php b/includes/admin/views/class-giglogadmin-adminpage.php
new file mode 100644
index 0000000..23a0a85
--- /dev/null
+++ b/includes/admin/views/class-giglogadmin-adminpage.php
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Class representing the main GiglogAdmin admin page.
+ *
+ * @package giglogadmin
+ *
+ * SPDX-FileCopyrightText: 2021 Andrea Chirulescu <andrea.chirulescu@gmail.com>
+ * SPDX-FileCopyrightText: 2021 Harald Eilertsen <haraldei@anduin.net>
+ *
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+if ( ! class_exists( 'GiglogAdmin_AdminPage' ) ) {
+ require_once __DIR__ . '/../../class-giglogadmin-venue.php';
+ require_once __DIR__ . '/../../view-helpers/class-giglogadmin-concertstable.php';
+ require_once __DIR__ . '/../../view-helpers/class-giglogadmin-concertform.php';
+ require_once __DIR__ . '/../../view-helpers/class-giglogadmin-venueform.php';
+
+ class GiglogAdmin_AdminPage {
+
+ const STATUS_LABELS = array(
+ '',
+ 'Accred Requested',
+ 'Photo Approved',
+ 'Text Approved',
+ 'Photo and Text Approved',
+ 'Rejected',
+ );
+
+ public static function render_html() : void {
+ $page = new self();
+ $page->render_page();
+ }
+
+ private function render_page() : void {
+ $concerts = new GiglogAdmin_ConcertsTable();
+ ?>
+ <div class="wrap">
+ <h1>Giglog Admin</h1>
+
+ <p>The available slots are marked with the green checkbox.
+ If you click on it, it will be assigned to you and if you no longer
+ wish to cover that concert, click on the red icon and you will be
+ unassigned. A mail should be sent to the admin when this happens,
+ but in order for the accreditation request to be sent, you have to
+ mail live@eternal-terror.com with the template containing concert
+ information. There might be some exceptions, but those are discussed
+ case by case. So whenever you want a concert, assign yourself and send
+ the template no later than 3 weeks before the concert.</p>
+
+ <p>Admin will try to keep the concert status updated so that you know
+ what the accreditation status is. You will get personal message if this
+ is really close to the concert date.</p>
+
+ <p><?php echo $concerts->render(); ?></p>
+ </div>
+ <?php
+ if ( current_user_can( 'administrator' ) ) {
+ $edit_form = new GiglogAdmin_ConcertForm();
+ $venue_form = new GiglogAdmin_VenueForm();
+ ?>
+ <div>
+ <h3>Form to create/edit concerts and venues</h3>
+ </div>
+ <div class="editform">
+ <?php echo $edit_form->render() . $venue_form->render(); ?>
+ </div>
+ <?php
+ }
+ }
+
+ /**
+ * @return void
+ */
+ static function update() : void {
+ if ( 'POST' !== $_SERVER['REQUEST_METHOD'] ) {
+ return;
+ }
+
+ if ( isset( $_POST['assignitem'] ) || isset( $_POST['unassignitem'] ) || isset( $_POST['selectstatus'] ) ) {
+ GiglogAdmin_ConcertsTable::update();
+ return;
+ }
+
+ if ( isset( $_POST['newconcert'] ) || isset( $_POST['editconcert'] ) ) {
+ GiglogAdmin_ConcertForm::update();
+ return;
+ }
+
+ if ( isset( $_POST['newvenue'] ) ) {
+ GiglogAdmin_VenueForm::update();
+ return;
+ }
+ }
+ }
+}