default.php
199 lines
| 1 | <?php |
| 2 | /** |
| 3 | * @package VikAppointments |
| 4 | * @subpackage core |
| 5 | * @author E4J s.r.l. |
| 6 | * @copyright Copyright (C) 2021 E4J s.r.l. All Rights Reserved. |
| 7 | * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL |
| 8 | * @link https://vikwp.com |
| 9 | */ |
| 10 | |
| 11 | // No direct access |
| 12 | defined('ABSPATH') or die('No script kiddies please!'); |
| 13 | |
| 14 | JHtml::fetch('bootstrap.tooltip', '.hasTooltip'); |
| 15 | JHtml::fetch('vaphtml.assets.select2'); |
| 16 | JHtml::fetch('vaphtml.assets.fontawesome'); |
| 17 | |
| 18 | $worktime = $this->worktime; |
| 19 | |
| 20 | $vik = VAPApplication::getInstance(); |
| 21 | |
| 22 | ?> |
| 23 | |
| 24 | <form name="adminForm" action="index.php" method="post" id="adminForm"> |
| 25 | |
| 26 | <?php echo $vik->openCard(); ?> |
| 27 | |
| 28 | <!-- MAIN --> |
| 29 | |
| 30 | <div class="span6"> |
| 31 | <?php echo $vik->openEmptyFieldset(); ?> |
| 32 | |
| 33 | <!-- DAY --> |
| 34 | |
| 35 | <?php |
| 36 | $options = JHtml::fetch('vikappointments.days'); |
| 37 | |
| 38 | // add special option |
| 39 | $options[] = JHtml::fetch('select.option', -1, JText::translate('VAPMANAGEWD9')); |
| 40 | |
| 41 | $day = $worktime->ts == -1 ? $worktime->day : -1; |
| 42 | |
| 43 | echo $vik->openControl(JText::translate('VAPMANAGEWD2') . '*'); ?> |
| 44 | <select name="day"> |
| 45 | <?php echo JHtml::fetch('select.options', $options, 'value', 'text', $day); ?> |
| 46 | </select> |
| 47 | <?php echo $vik->closeControl(); ?> |
| 48 | |
| 49 | <!-- DATE --> |
| 50 | |
| 51 | <?php |
| 52 | $control = array(); |
| 53 | $control['style'] = $day == -1 ? '' : 'display:none;'; |
| 54 | |
| 55 | $attr = array(); |
| 56 | $attr['class'] = $day == -1 ? 'required' : ''; |
| 57 | |
| 58 | $date = $worktime->ts != -1 ? JFactory::getDate($worktime->tsdate) : ''; |
| 59 | |
| 60 | echo $vik->openControl('', 'special-day-field', $control); |
| 61 | echo $vik->calendar($date, 'date', 'vap-date', null, $attr); |
| 62 | echo $vik->closeControl(); |
| 63 | ?> |
| 64 | |
| 65 | <!-- CLOSED --> |
| 66 | |
| 67 | <?php |
| 68 | $yes = $vik->initRadioElement('', JText::translate('JYES'), $worktime->closed, 'onclick="closedValueChanged(1);"'); |
| 69 | $no = $vik->initRadioElement('', JText::translate('JNO'), !$worktime->closed, 'onclick="closedValueChanged(0);"'); |
| 70 | |
| 71 | echo $vik->openControl(JText::translate('VAPMANAGEEMPLOYEE22')); |
| 72 | echo $vik->radioYesNo('closed', $yes, $no, false); |
| 73 | echo $vik->closeControl(); ?> |
| 74 | |
| 75 | <!-- FROM --> |
| 76 | |
| 77 | <?php |
| 78 | $times = JHtml::fetch('vikappointments.times', array( |
| 79 | 'step' => 5, |
| 80 | 'value' => 'int', |
| 81 | )); |
| 82 | |
| 83 | echo $vik->openControl(JText::translate('VAPMANAGEWD3')); ?> |
| 84 | <select name="fromts" class="time-select" <?php echo $worktime->closed ? 'disabled' : ''; ?>> |
| 85 | <?php echo JHtml::fetch('select.options', $times, 'value', 'text', $worktime->fromts); ?> |
| 86 | </select> |
| 87 | <?php echo $vik->closeControl(); ?> |
| 88 | |
| 89 | <!-- TO --> |
| 90 | |
| 91 | <?php echo $vik->openControl(JText::translate('VAPMANAGEWD4')); ?> |
| 92 | <select name="endts" class="time-select" <?php echo $worktime->closed ? 'disabled' : ''; ?>> |
| 93 | <?php echo JHtml::fetch('select.options', $times, 'value', 'text', $worktime->endts); ?> |
| 94 | </select> |
| 95 | <?php echo $vik->closeControl(); ?> |
| 96 | |
| 97 | <!-- LOCATION --> |
| 98 | |
| 99 | <?php |
| 100 | $locations = JHtml::fetch('vaphtml.admin.locations', $worktime->id_employee, $placeholder = '', $group = true); |
| 101 | |
| 102 | echo $vik->openControl(JText::translate('VAPMANAGEWD7')); |
| 103 | |
| 104 | $attrs = array(); |
| 105 | |
| 106 | if ($worktime->closed) |
| 107 | { |
| 108 | $attrs['disabled'] = true; |
| 109 | } |
| 110 | |
| 111 | $params = array( |
| 112 | 'id' => 'vap-location-sel', |
| 113 | 'list.attr' => $attrs, |
| 114 | 'group.items' => null, |
| 115 | 'list.select' => $worktime->id_location, |
| 116 | ); |
| 117 | |
| 118 | echo JHtml::fetch('select.groupedList', $locations, 'id_location', $params); |
| 119 | |
| 120 | echo $vik->closeControl(); ?> |
| 121 | |
| 122 | <?php echo $vik->closeEmptyFieldset(); ?> |
| 123 | </div> |
| 124 | |
| 125 | <?php echo $vik->closeCard(); ?> |
| 126 | |
| 127 | <?php echo JHtml::fetch('form.token'); ?> |
| 128 | |
| 129 | <input type="hidden" name="id" value="<?php echo $worktime->id; ?>" /> |
| 130 | <input type="hidden" name="id_service" value="<?php echo $worktime->id_service; ?>" /> |
| 131 | <input type="hidden" name="id_employee" value="<?php echo $worktime->id_employee; ?>" /> |
| 132 | |
| 133 | <input type="hidden" name="task" value="" /> |
| 134 | <input type="hidden" name="option" value="com_vikappointments" /> |
| 135 | </form> |
| 136 | |
| 137 | <script> |
| 138 | |
| 139 | jQuery(function($) { |
| 140 | $('select[name="day"], .time-select').select2({ |
| 141 | allowClear: false, |
| 142 | width: 200, |
| 143 | }); |
| 144 | |
| 145 | $('#vap-location-sel').select2({ |
| 146 | placeholder: '--', |
| 147 | allowClear: true, |
| 148 | width: 300, |
| 149 | }); |
| 150 | |
| 151 | $('select[name="day"]').on('change', function() { |
| 152 | if ($(this).val() == -1) { |
| 153 | $('.special-day-field').show(); |
| 154 | validator.registerFields('#vap-date'); |
| 155 | } else { |
| 156 | $('.special-day-field').hide(); |
| 157 | validator.unregisterFields('#vap-date'); |
| 158 | } |
| 159 | }); |
| 160 | }); |
| 161 | |
| 162 | function closedValueChanged(is) { |
| 163 | jQuery('.time-select, #vap-location-sel').prop('disabled', is ? true : false); |
| 164 | } |
| 165 | |
| 166 | // validate |
| 167 | |
| 168 | var validator = new VikFormValidator('#adminForm'); |
| 169 | |
| 170 | validator.addCallback((form) => { |
| 171 | let fromField = jQuery('select[name="fromts"]'); |
| 172 | let toField = jQuery('select[name="endts"]'); |
| 173 | |
| 174 | let from = parseInt(fromField.val()); |
| 175 | let to = parseInt(toField.val()); |
| 176 | |
| 177 | if (from >= to && fromField.prop('disabled') == false) { |
| 178 | form.setInvalid(fromField.add(toField)); |
| 179 | |
| 180 | return false; |
| 181 | } |
| 182 | |
| 183 | form.unsetInvalid(fromField.add(toField)); |
| 184 | |
| 185 | return true; |
| 186 | }); |
| 187 | |
| 188 | Joomla.submitbutton = function(task) { |
| 189 | if (task.indexOf('save') !== -1) { |
| 190 | if (validator.validate()) { |
| 191 | Joomla.submitform(task, document.adminForm); |
| 192 | } |
| 193 | } else { |
| 194 | Joomla.submitform(task, document.adminForm); |
| 195 | } |
| 196 | } |
| 197 | |
| 198 | </script> |
| 199 |