Calendar: Add Delete Calendar, rename System calendar to Built-in calendar with builtin calendar names, moved calendar select on top for both edit / add event

This commit is contained in:
johnnyq
2026-03-04 17:09:13 -05:00
parent af4327ff27
commit f77bd4f0c6
4 changed files with 113 additions and 47 deletions

View File

@@ -30,43 +30,84 @@ if (isset($_GET['calendar_id'])) {
<div class="col-md-3">
<div class="card">
<div class="card-header py-2">
<h3 class="card-title mt-1">Calendars</h3>
<div class="card-header bg-dark">
<h3 class="card-title">Custom Calendars</h3>
<div class="card-tools">
<button type="button" class="btn btn-dark btn-sm ajax-modal" data-modal-url="modals/calendar/calendar_add.php"><i class="fas fa-plus"></i></button>
<button type="button" class="btn btn-tool ajax-modal" data-modal-url="modals/calendar/calendar_add.php"><i class="fas fa-plus"></i></button>
</div>
</div>
<div class="card-body">
<?php
$sql = mysqli_query($mysqli, "SELECT * FROM calendars");
while ($row = mysqli_fetch_assoc($sql)) {
$calendar_id = intval($row['calendar_id']);
$calendar_name = nullable_htmlentities($row['calendar_name']);
$calendar_color = nullable_htmlentities($row['calendar_color']);
?>
<div class="form-group d-flex align-items-center">
<i class="fas fa-fw fa-circle mr-2" style="color:<?= $calendar_color ?>;"></i><?= $calendar_name ?>
<form>
<?php
$sql = mysqli_query($mysqli, "SELECT * FROM calendars");
while ($row = mysqli_fetch_assoc($sql)) {
$calendar_id = intval($row['calendar_id']);
$calendar_name = nullable_htmlentities($row['calendar_name']);
$calendar_color = nullable_htmlentities($row['calendar_color']);
?>
<div class="form-group">
<i class="fas fa-fw fa-circle mr-2" style="color:<?php echo $calendar_color; ?>;"></i><?php echo $calendar_name; ?>
<button type="button" class="btn btn-link btn-sm float-right ajax-modal"
data-modal-url="modals/calendar/calendar_edit.php?id=<?= $calendar_id ?>">
<i class="fas fa-fw fa-pencil-alt text-secondary"></i>
<div class="dropdown dropright ml-auto">
<button class="btn btn-tool" type="button" data-toggle="dropdown">
<i class="fas fa-ellipsis-v"></i>
</button>
<div class="dropdown-menu">
<a class="dropdown-item ajax-modal" href="#"
data-modal-url="modals/calendar/calendar_edit.php?id=<?= $calendar_id ?>">
<i class="fas fa-fw fa-pencil-alt mr-2"></i>Rename
</a>
<?php if ($session_user_role == 3) { ?>
<div class="dropdown-divider"></div>
<a class="dropdown-item text-danger text-bold confirm-link" href="post.php?delete_calendar=<?= $calendar_id ?>&csrf_token=<?= $_SESSION['csrf_token'] ?>">
<i class="fas fa-fw fa-trash mr-2"></i>Delete
</a>
<?php } ?>
</div>
</div>
<?php
}
?>
</form>
</div>
<?php
}
?>
</div>
</div>
<div class="card">
<div class="card-header py-2">
<h3 class="card-title mt-1">System Calendars</h3>
<div class="card-tools">
<button type="button" class="btn btn-dark btn-sm"><i class="fas fa-eye"></i></button>
</div>
<div class="card-header bg-dark">
<h3 class="card-title">Built-in Calendars</h3>
</div>
<div class="card-body">
<div class="form-group">
<i class="fas fa-fw fa-circle mr-2" style="color:blue;"></i>Invoices
</div>
<div class="form-group">
<i class="fas fa-fw fa-circle mr-2" style="color:purple;"></i>Quotes
</div>
<div class="form-group">
<i class="fas fa-fw fa-circle mr-2" style="color:red;"></i>Tickets (Created)
</div>
<div class="form-group">
<i class="fas fa-fw fa-circle mr-2" style="color:grey;"></i>Recurring Tickets
</div>
<div class="form-group">
<i class="fas fa-fw fa-circle mr-2" style="color:grey;"></i>Tickets (Scheduled)
</div>
<div class="form-group">
<i class="fas fa-fw fa-circle mr-2" style="color:brown;"></i>Vendors
</div>
<?php if (!isset($_GET['client_id'])) { ?>
<div class="form-group">
<i class="fas fa-fw fa-circle mr-2" style="color:brown;"></i>Clients
</div>
<?php } ?>
</div>
</div>
</div>

View File

@@ -29,16 +29,6 @@
<div class="tab-pane fade show active" id="pills-event">
<div class="form-group">
<label>Title <strong class="text-danger">*</strong></label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar-day"></i></span>
</div>
<input type="text" class="form-control" name="title" placeholder="Title of the event" maxlength="200" required autofocus>
</div>
</div>
<div class="form-group">
<label>Calendar <strong class="text-danger">*</strong></label>
<div class="input-group">
@@ -62,6 +52,16 @@
</div>
</div>
<div class="form-group">
<label>Title <strong class="text-danger">*</strong></label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar-day"></i></span>
</div>
<input type="text" class="form-control" name="title" placeholder="Title of the event" maxlength="200" required autofocus>
</div>
</div>
<div class="form-group">
<label>Start / End <strong class="text-danger">*</strong></label>
<div class="input-group">

View File

@@ -22,7 +22,7 @@ $client_id = intval($row['event_client_id']);
ob_start();
?>
<div class="modal-header bg-dark">
<h5 class="modal-title"><i class="fa fa-fw fa-calendar mr-2" style="color:<?php echo $calendar_color; ?>"></i><?php echo $event_title; ?></h5>
<h5 class="modal-title"><i class="fa fa-fw fa-calendar-check mr-2" style="color:<?php echo $calendar_color; ?>"></i>Editing: <strong><?php echo $event_title; ?></strong></h5>
<button type="button" class="close text-white" data-dismiss="modal">
<span>&times;</span>
</button>
@@ -36,7 +36,7 @@ ob_start();
<ul class="nav nav-pills nav-justified mb-3">
<li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#pills-event<?php echo $event_id; ?>"><i class="fa fa-fw fa-calendar mr-2"></i>Event</a>
<a class="nav-link active" data-toggle="pill" href="#pills-event<?php echo $event_id; ?>"><i class="fa fa-fw fa-calendar-check mr-2"></i>Event</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#pills-details<?php echo $event_id; ?>"><i class="fa fa-fw fa-info-circle mr-2"></i>Details</a>
@@ -52,16 +52,6 @@ ob_start();
<div class="tab-pane fade show active" id="pills-event<?php echo $event_id; ?>">
<div class="form-group">
<label>Title <strong class="text-danger">*</strong></label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar-day"></i></span>
</div>
<input type="text" class="form-control" name="title" maxlength="200" value="<?php echo $event_title; ?>" placeholder="Title of the event" required>
</div>
</div>
<div class="form-group">
<label>Calendar <strong class="text-danger">*</strong></label>
<div class="input-group">
@@ -84,6 +74,16 @@ ob_start();
</div>
</div>
<div class="form-group">
<label>Title <strong class="text-danger">*</strong></label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-calendar-day"></i></span>
</div>
<input type="text" class="form-control" name="title" maxlength="200" value="<?php echo $event_title; ?>" placeholder="Title of the event" required>
</div>
</div>
<div class="form-group">
<label>Start / End <strong class="text-danger">*</strong></label>
<div class="input-group">

View File

@@ -43,6 +43,31 @@ if (isset($_POST['edit_calendar'])) {
}
if (isset($_GET['delete_calendar'])) {
validateCSRFToken($_GET['csrf_token']);
$calendar_id = intval($_GET['delete_calendar']);
// Get Calendar Name
$sql = mysqli_query($mysqli,"SELECT * FROM calendars WHERE calendar_id = $calendar_id");
$row = mysqli_fetch_assoc($sql);
$calendar_name = sanitizeInput($row['calendar_name']);
// Delete Calendar
mysqli_query($mysqli,"DELETE FROM calendars WHERE calendar_id = $calendar_id");
// Delete Events
mysqli_query($mysqli,"DELETE FROM calendar_events WHERE event_calendar_id = $calendar_id");
logAction("Calendar", "Delete", "$session_name deleted calendar $calendar_name and associated events");
flash_alert("Calendar <strong>$calendar_name</strong> deleted", 'error');
redirect();
}
if (isset($_POST['add_event'])) {
validateCSRFToken($_POST['csrf_token']);