Styling improvements in backend calendar form.

This commit is contained in:
alext 2017-09-22 22:31:32 +02:00
parent 861f49c259
commit 71c1bf38ff
2 changed files with 171 additions and 240 deletions

View file

@ -39,16 +39,13 @@
<div id="calendar-toolbar"> <div id="calendar-toolbar">
<div id="calendar-filter" class="form-inline col-xs-12 col-md-5"> <div id="calendar-filter" class="form-inline col-xs-12 col-md-5">
<div class="form-group"> <div class="form-group">
<label for="select-filter-item"> <label for="select-filter-item"><?= lang('display_calendar') ?></label>
<?= lang('display_calendar') ?> <select id="select-filter-item" class="form-control" title="<?= lang('select_filter_item_hint') ?>">
</label>
<select id="select-filter-item" class="form-control"
title="<?= lang('select_filter_item_hint') ?>">
</select> </select>
</div> </div>
</div> </div>
<div id="calendar-actions" class="col-xs-12 col-md-7"> <div id="calendar-actions" class="col-xs-12 col-sm-7">
<?php if (($role_slug == DB_SLUG_ADMIN || $role_slug == DB_SLUG_PROVIDER) <?php if (($role_slug == DB_SLUG_ADMIN || $role_slug == DB_SLUG_PROVIDER)
&& Config::GOOGLE_SYNC_FEATURE == TRUE): ?> && Config::GOOGLE_SYNC_FEATURE == TRUE): ?>
<button id="google-sync" class="btn btn-primary" <button id="google-sync" class="btn btn-primary"
@ -65,21 +62,18 @@
<?php endif ?> <?php endif ?>
<?php if ($privileges[PRIV_APPOINTMENTS]['add'] == TRUE): ?> <?php if ($privileges[PRIV_APPOINTMENTS]['add'] == TRUE): ?>
<button id="insert-appointment" class="btn btn-default" <button id="insert-appointment" class="btn btn-default" title="<?= lang('new_appointment_hint') ?>">
title="<?= lang('new_appointment_hint') ?>">
<span class="glyphicon glyphicon-plus"></span> <span class="glyphicon glyphicon-plus"></span>
<?= lang('appointment') ?> <?= lang('appointment') ?>
</button> </button>
<button id="insert-unavailable" class="btn btn-default" <button id="insert-unavailable" class="btn btn-default" title="<?= lang('unavailable_periods_hint') ?>">
title="<?= lang('unavailable_periods_hint') ?>">
<span class="glyphicon glyphicon-plus"></span> <span class="glyphicon glyphicon-plus"></span>
<?= lang('unavailable') ?> <?= lang('unavailable') ?>
</button> </button>
<?php endif ?> <?php endif ?>
<button id="reload-appointments" class="btn btn-default" <button id="reload-appointments" class="btn btn-default" title="<?= lang('reload_appointments_hint') ?>">
title="<?= lang('reload_appointments_hint') ?>">
<span class="glyphicon glyphicon-repeat"></span> <span class="glyphicon glyphicon-repeat"></span>
<?= lang('reload') ?> <?= lang('reload') ?>
</button> </button>
@ -90,222 +84,190 @@
</div> </div>
</div> </div>
<div id="calendar"></div> <?php // Main calendar container ?> <div id="calendar"><!-- Dynamically Generated Content --></div>
</div> </div>
<!-- MANAGE APPOINTMENT MODAL --> <!-- MANAGE APPOINTMENT MODAL -->
<div id="manage-appointment" class="modal fade full-screen" data-keyboard="true" tabindex="-1"> <div id="manage-appointment" class="modal fade" data-keyboard="true" tabindex="-1">
<div class="modal-dialog"> <div class="modal-dialog modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="wrapper"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3 class="modal-title"><?= lang('edit_appointment_title') ?></h3>
</div>
<div class="modal-header"> <div class="modal-body">
<button type="button" class="close" data-dismiss="modal" <div class="modal-message alert hidden"></div>
aria-hidden="true">&times;</button>
<h3 class="modal-title"><?= lang('edit_appointment_title') ?></h3>
</div>
<div class="modal-body"> <form>
<div class="modal-message alert hidden"></div> <fieldset>
<legend><?= lang('appointment_details_title') ?></legend>
<form class="form-horizontal"> <input id="appointment-id" type="hidden">
<fieldset class="container">
<legend><?= lang('appointment_details_title') ?></legend>
<input id="appointment-id" type="hidden" /> <div class="row">
<div class="col-xs-12 col-sm-6">
<div class="form-group"> <div class="form-group">
<label for="select-service" class="col-sm-3 control-label"><?= lang('service') ?> *</label> <label for="select-service" class="control-label"><?= lang('service') ?> *</label>
<div class="col-sm-7">
<select id="select-service" class="required form-control"> <select id="select-service" class="required form-control">
<?php <?php
// Group services by category, only if there is at least one service // Group services by category, only if there is at least one service
// with a parent category. // with a parent category.
$has_category = FALSE; $has_category = FALSE;
foreach($available_services as $service) {
if ($service['category_id'] != NULL) {
$has_category = TRUE;
break;
}
}
if ($has_category) {
$grouped_services = array();
foreach($available_services as $service) { foreach($available_services as $service) {
if ($service['category_id'] != NULL) { if ($service['category_id'] != NULL) {
$has_category = TRUE; if (!isset($grouped_services[$service['category_name']])) {
break; $grouped_services[$service['category_name']] = array();
}
$grouped_services[$service['category_name']][] = $service;
} }
} }
if ($has_category) { // We need the uncategorized services at the end of the list so
$grouped_services = array(); // we will use another iteration only for the uncategorized services.
$grouped_services['uncategorized'] = array();
foreach($available_services as $service) { foreach($available_services as $service) {
if ($service['category_id'] != NULL) { if ($service['category_id'] == NULL) {
if (!isset($grouped_services[$service['category_name']])) { $grouped_services['uncategorized'][] = $service;
$grouped_services[$service['category_name']] = array();
}
$grouped_services[$service['category_name']][] = $service;
}
}
// We need the uncategorized services at the end of the list so
// we will use another iteration only for the uncategorized services.
$grouped_services['uncategorized'] = array();
foreach($available_services as $service) {
if ($service['category_id'] == NULL) {
$grouped_services['uncategorized'][] = $service;
}
}
foreach($grouped_services as $key => $group) {
$group_label = ($key != 'uncategorized')
? $group[0]['category_name'] : 'Uncategorized';
if (count($group) > 0) {
echo '<optgroup label="' . $group_label . '">';
foreach($group as $service) {
echo '<option value="' . $service['id'] . '">'
. $service['name'] . '</option>';
}
echo '</optgroup>';
}
}
} else {
foreach($available_services as $service) {
echo '<option value="' . $service['id'] . '">'
. $service['name'] . '</option>';
} }
} }
foreach($grouped_services as $key => $group) {
$group_label = ($key != 'uncategorized')
? $group[0]['category_name'] : 'Uncategorized';
if (count($group) > 0) {
echo '<optgroup label="' . $group_label . '">';
foreach($group as $service) {
echo '<option value="' . $service['id'] . '">'
. $service['name'] . '</option>';
}
echo '</optgroup>';
}
}
} else {
foreach($available_services as $service) {
echo '<option value="' . $service['id'] . '">'
. $service['name'] . '</option>';
}
}
?> ?>
</select> </select>
</div> </div>
</div>
<div class="form-group"> <div class="form-group">
<label for="select-provider" class="col-sm-3 control-label"><?= lang('provider') ?> *</label> <label for="select-provider" class="control-label"><?= lang('provider') ?> *</label>
<div class="col-sm-7">
<select id="select-provider" class="required form-control"></select> <select id="select-provider" class="required form-control"></select>
</div> </div>
</div> </div>
<div class="form-group"> <div class="col-xs-12 col-sm-6">
<label for="start-datetime" class="col-sm-3 control-label" ><?= lang('start_date_time') ?></label> <div class="form-group">
<div class="col-sm-7"> <label for="start-datetime" class="control-label"><?= lang('start_date_time') ?></label>
<input type="text" id="start-datetime" class="form-control" /> <input type="text" id="start-datetime" class="form-control">
</div>
<div class="form-group">
<label for="end-datetime" class="control-label"><?= lang('end_date_time') ?></label>
<input type="text" id="end-datetime" class="form-control">
</div> </div>
</div> </div>
</div>
<div class="form-group"> <div class="row">
<label for="end-datetime" class="control-label col-sm-3" ><?= lang('end_date_time') ?></label> <div class="col-xs-12 col-sm-6">
<div class="col-sm-7"> <div class="form-group">
<input type="text" id="end-datetime" class="form-control" /> <label for="appointment-notes" class="control-label"><?= lang('notes') ?></label>
<textarea id="appointment-notes" class="form-control" rows="2"></textarea>
</div> </div>
</div> </div>
</div>
</fieldset>
<div class="form-group"> <br>
<label for="appointment-notes" class="control-label col-sm-3" ><?= lang('notes') ?></label>
<div class="col-sm-7"> <fieldset>
<textarea id="appointment-notes" class="form-control" rows="3"></textarea> <legend>
<?= lang('customer_details_title') ?>
<button id="new-customer" class="btn btn-default btn-xs"
title="<?= lang('clear_fields_add_existing_customer_hint') ?>"
type="button"><?= lang('new') ?>
</button>
<button id="select-customer" class="btn btn-primary btn-xs"
title="<?= lang('pick_existing_customer_hint') ?>"
type="button"><?= lang('select') ?>
</button>
<input type="text" id="filter-existing-customers"
placeholder="<?= lang('type_to_filter_customers') ?>"
style="display: none;" class="input-sm">
<div id="existing-customers-list" style="display: none;"></div>
</legend>
<input id="customer-id" type="hidden">
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label for="first-name" class="control-label"><?= lang('first_name') ?> *</label>
<input type="text" id="first-name" class="required form-control">
</div>
<div class="form-group">
<label for="last-name" class="control-label"><?= lang('last_name') ?> *</label>
<input type="text" id="last-name" class="required form-control">
</div>
<div class="form-group">
<label for="email" class="control-label"><?= lang('email') ?> *</label>
<input type="text" id="email" class="required form-control">
</div>
<div class="form-group">
<label for="phone-number" class="control-label"><?= lang('phone_number') ?> *</label>
<input type="text" id="phone-number" class="required form-control">
</div> </div>
</div> </div>
</fieldset> <div class="col-xs-12 col-sm-6">
<div class="form-group">
<fieldset class="container"> <label for="address" class="control-label"><?= lang('address') ?></label>
<legend> <input type="text" id="address" class="form-control">
<?= lang('customer_details_title') ?>
<button id="new-customer" class="btn btn-default btn-xs"
title="<?= lang('clear_fields_add_existing_customer_hint') ?>"
type="button"><?= lang('new') ?>
</button>
<button id="select-customer" class="btn btn-primary btn-xs"
title="<?= lang('pick_existing_customer_hint') ?>"
type="button"><?= lang('select') ?>
</button>
<input type="text" id="filter-existing-customers"
placeholder="<?= lang('type_to_filter_customers') ?>"
style="display: none;" class="input-sm"/>
<div id="existing-customers-list" style="display: none;"></div>
</legend>
<input id="customer-id" type="hidden" />
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="first-name" class="control-label col-sm-2">
<?= lang('first_name') ?> *</label>
<div class="col-sm-8">
<input type="text" id="first-name" class="required form-control" />
</div>
</div>
<div class="form-group">
<label for="last-name" class="control-label col-sm-2">
<?= lang('last_name') ?>*</label>
<div class="col-sm-8">
<input type="text" id="last-name" class="required form-control" />
</div>
</div>
<div class="form-group">
<label for="email" class="control-label col-sm-2">
<?= lang('email') ?>*</label>
<div class="col-sm-8">
<input type="text" id="email" class="required form-control" />
</div>
</div>
<div class="form-group">
<label for="phone-number" class="control-label col-sm-3">
<?= lang('phone_number') ?>*</label>
<div class="col-sm-8">
<input type="text" id="phone-number" class="required form-control" />
</div>
</div>
</div> </div>
<div class="col-md-6">
<div class="form-group">
<label for="address" class="control-label col-sm-3">
<?= lang('address') ?></label>
<div class="col-sm-8">
<input type="text" id="address" class="form-control" />
</div>
</div>
<div class="form-group"> <div class="form-group">
<label for="city" class="control-label col-sm-3"> <label for="city" class="control-label"><?= lang('city') ?></label>
<?= lang('city') ?></label> <input type="text" id="city" class="form-control">
<div class="col-sm-8"> </div>
<input type="text" id="city" class="form-control" />
</div>
</div>
<div class="form-group"> <div class="form-group">
<label for="zip-code" class="control-label col-sm-3"> <label for="zip-code" class="control-label"><?= lang('zip_code') ?></label>
<?= lang('zip_code') ?></label> <input type="text" id="zip-code" class="form-control">
<div class="col-sm-8"> </div>
<input type="text" id="zip-code" class="form-control" />
</div>
</div>
<div class="form-group"> <div class="form-group">
<label for="customer-notes" class="control-label col-sm-3"> <label for="customer-notes" class="control-label"><?= lang('notes') ?></label>
<?= lang('notes') ?></label> <textarea id="customer-notes" rows="2" class="form-control"></textarea>
<div class="col-sm-8">
<textarea id="customer-notes" rows="3" class="form-control"></textarea>
</div>
</div>
</div> </div>
</div> </div>
</fieldset> </div>
</form> </fieldset>
</div> </form>
<div class="modal-push"></div>
</div> </div>
<div class="modal-footer footer"> <div class="modal-footer">
<button id="save-appointment" class="btn btn-primary"> <button id="save-appointment" class="btn btn-primary"><?= lang('save') ?></button>
<?= lang('save') ?> <button id="cancel-appointment" class="btn btn-default" data-dismiss="modal"><?= lang('cancel') ?></button>
</button>
<button id="cancel-appointment" class="btn btn-default" data-dismiss="modal">
<?= lang('cancel') ?>
</button>
</div> </div>
</div> </div>
</div> </div>
@ -316,68 +278,43 @@
<div id="manage-unavailable" class="modal fade"> <div id="manage-unavailable" class="modal fade">
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
aria-hidden="true">&times;</button>
<h3 class="modal-title"><?= lang('new_unavailable_title') ?></h3> <h3 class="modal-title"><?= lang('new_unavailable_title') ?></h3>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="modal-message alert hidden"></div> <div class="modal-message alert hidden"></div>
<form class="form-horizontal"> <form>
<fieldset> <fieldset>
<input id="unavailable-id" type="hidden" /> <input id="unavailable-id" type="hidden">
<div class="form-group"> <div class="form-group">
<label for="unavailable-provider" class="control-label col-sm-3"> <label for="unavailable-provider" class="control-label"><?= lang('provider') ?></label>
<?= lang('provider') ?> <select type="text" id="unavailable-provider" class="form-control"></select>
</label>
<div class="col-sm-8">
<select type="text" id="unavailable-provider" class="form-control"></select>
</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="unavailable-start" class="control-label col-sm-3"> <label for="unavailable-start" class="control-label"><?= lang('start') ?></label>
<?= lang('start') ?> <input type="text" id="unavailable-start" class="form-control">
</label>
<div class="col-sm-8">
<input type="text" id="unavailable-start" class="form-control" />
</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="unavailable-end" class="control-label col-sm-3"> <label for="unavailable-end" class="control-label"><?= lang('end') ?></label>
<?= lang('end') ?> <input type="text" id="unavailable-end" class="form-control">
</label>
<div class="col-sm-8">
<input type="text" id="unavailable-end" class="form-control" />
</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="unavailable-notes" class="control-label col-sm-3"> <label for="unavailable-notes" class="control-label"><?= lang('notes') ?></label>
<?= lang('notes') ?> <textarea id="unavailable-notes" rows="3" class="form-control"></textarea>
</label>
<div class="col-sm-8">
<textarea id="unavailable-notes" rows="3" class="form-control"></textarea>
</div>
</div> </div>
</fieldset> </fieldset>
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button id="save-unavailable" class="btn btn-primary"> <button id="save-unavailable" class="btn btn-primary"><?= lang('save') ?></button>
<?= lang('save') ?> <button id="cancel-unavailable" class="btn btn-default" data-dismiss="modal"><?= lang('cancel') ?></button>
</button>
<button id="cancel-unavailable" class="btn btn-default" data-dismiss="modal">
<?= lang('cancel') ?>
</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -387,29 +324,20 @@
<div id="select-google-calendar" class="modal fade"> <div id="select-google-calendar" class="modal fade">
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal" <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
aria-hidden="true">&times;</button>
<h3 class="modal-title"><?= lang('select_google_calendar') ?></h3> <h3 class="modal-title"><?= lang('select_google_calendar') ?></h3>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<p> <div class="form-group">
<?= lang('select_google_calendar_prompt') ?> <label for="google-calendar" class="control-label"><?= lang('select_google_calendar_prompt') ?></label>
</p> <select id="google-calendar" class="form-control"></select>
<select id="google-calendar"></select> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button id="select-calendar" class="btn btn-primary"> <button id="select-calendar" class="btn btn-primary"><?= lang('select') ?></button>
<?= lang('select') ?> <button id="close-calendar" class="btn btn-default" data-dismiss="modal"><?= lang('close') ?></button>
</button>
<button id="close-calendar" class="btn btn-default" data-dismiss="modal">
<?= lang('close') ?>
</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -157,6 +157,9 @@ body .modal-header .close {
color: #12482a; color: #12482a;
} }
body .modal-content {
border: none;
}
/* Full screen modal */ /* Full screen modal */
body .modal.full-screen .modal-dialog { body .modal.full-screen .modal-dialog {