From 1e976a8605177893a7cef7b7a6681fa48671c3e0 Mon Sep 17 00:00:00 2001 From: Daniel Barbero Martin Date: Wed, 3 Nov 2021 10:59:00 +0100 Subject: [PATCH] alerts special days wip --- .../alerts/alert_special_days_copy.php | 554 ------------------ .../include/class/CalendarManager.class.php | 253 +++++++- .../include/javascript/pandora_alerts.js | 4 +- pandora_console/include/lib/SpecialDay.php | 18 +- .../views/calendar/special_days.php | 66 ++- .../views/calendar/special_days_edit.php | 47 +- 6 files changed, 321 insertions(+), 621 deletions(-) diff --git a/pandora_console/godmode/alerts/alert_special_days_copy.php b/pandora_console/godmode/alerts/alert_special_days_copy.php index a742068795..3e35da83f7 100644 --- a/pandora_console/godmode/alerts/alert_special_days_copy.php +++ b/pandora_console/godmode/alerts/alert_special_days_copy.php @@ -51,188 +51,6 @@ if (is_ajax() === true) { echo json_encode($command); } - $get_template_alerts = (bool) get_parameter('get_template_alerts'); - if ($get_template_alerts === true) { - $filter['special_day'] = 1; - $templates = alerts_get_alert_templates($filter); - $date = get_parameter('date', ''); - $id_group = get_parameter('id_group', 0); - $same_day = get_parameter('same_day', ''); - - $output = '

'.__('Same as %s', ucfirst($same_day)); - $output .= ' » '; - $output .= __('Templates not being fired'); - $output .= '

'; - - $columns = [ - 'name', - 'id_group', - 'type', - 'monday', - 'tuesday', - 'wednesday', - 'thursday', - 'friday', - 'saturday', - 'sunday', - ]; - - $column_names = [ - __('Name'), - __('Group'), - __('Type'), - __('Mon'), - __('Tue'), - __('Wed'), - __('Thu'), - __('Fri'), - __('Sat'), - __('Sun'), - ]; - try { - $output .= ui_print_datatable( - [ - 'id' => 'templates_alerts_special_days', - 'return' => true, - 'class' => 'info_table', - 'style' => 'width: 100%', - 'columns' => $columns, - 'column_names' => $column_names, - 'ajax_url' => 'godmode/alerts/alert_special_days', - 'ajax_data' => [ - 'get_template_alerts_data' => 1, - 'same_day' => $same_day, - ], - 'no_sortable_columns' => [-1], - 'order' => [ - 'field' => 'name', - 'direction' => 'asc', - ], - 'search_button_class' => 'sub filter float-right', - 'form' => [ - 'inputs' => [ - [ - 'label' => __('Type'), - 'type' => 'select', - 'name' => 'type', - 'fields' => alerts_get_alert_templates_types(), - 'selected' => 0, - 'nothing' => 'None', - 'nothing_value' => 0, - ], - [ - 'label' => __('Search'), - 'type' => 'text', - 'class' => 'mw250px', - 'id' => 'name', - 'name' => 'name', - ], - ], - ], - ] - ); - } catch (Exception $e) { - $output .= $e->getMessage(); - } - - echo $output; - - return; - } - - $get_template_alerts_data = (bool) get_parameter('get_template_alerts_data'); - if ($get_template_alerts_data === true) { - $filters = get_parameter('filter', []); - if (empty($filters['type']) === false) { - $filter['type'] = $filters['type']; - } - - if (empty($filters['name']) === false) { - $filter[] = "name LIKE '%".$filters['name']."%'"; - } - - $filter['special_day'] = 1; - - $templates = alerts_get_alert_templates($filter); - $count = alerts_get_alert_templates($filter, ['COUNT(*) AS total']); - - $same_day = get_parameter('same_day', ''); - $data = []; - if (empty($templates) === false) { - foreach ($templates as $template) { - if ((bool) $template[$same_day] === false) { - $data[] = [ - 'name' => $template['name'], - 'id_group' => ui_print_group_icon( - $template['id_group'], - true - ), - 'type' => $template['type'], - 'monday' => (bool) $template['monday'] === true - ? html_print_image( - 'images/tick.png', - true, - ['class' => 'invert_filter'] - ) - : '', - 'tuesday' => (bool) $template['tuesday'] === true - ? html_print_image( - 'images/tick.png', - true, - ['class' => 'invert_filter'] - ) - : '', - 'wednesday' => (bool) $template['wednesday'] === true - ? html_print_image( - 'images/tick.png', - true, - ['class' => 'invert_filter'] - ) - : '', - 'thursday' => (bool) $template['thursday'] === true - ? html_print_image( - 'images/tick.png', - true, - ['class' => 'invert_filter'] - ) - : '', - 'friday' => (bool) $template['friday'] === true - ? html_print_image( - 'images/tick.png', - true, - ['class' => 'invert_filter'] - ) - : '', - 'saturday' => (bool) $template['saturday'] === true - ? html_print_image( - 'images/tick.png', - true, - ['class' => 'invert_filter'] - ) - : '', - 'sunday' => (bool) $template['sunday'] === true - ? html_print_image( - 'images/tick.png', - true, - ['class' => 'invert_filter'] - ) - : '', - ]; - } - } - } - - echo json_encode( - [ - 'data' => $data, - 'recordsTotal' => $count[0]['total'], - 'recordsFiltered' => count($data), - ] - ); - - return $data; - } - return; } @@ -520,378 +338,6 @@ if ($delete_special_day === true) { ); } - -echo ""; -echo ""; -echo ''; -echo '
'; -echo __('iCalendar(.ics) file').' '; -html_print_input_file('ical_file', false, false); -echo ''; -echo __('Same day of the week'); -$days = []; -$days['monday'] = __('Monday'); -$days['tuesday'] = __('Tuesday'); -$days['wednesday'] = __('Wednesday'); -$days['thursday'] = __('Thursday'); -$days['friday'] = __('Friday'); -$days['saturday'] = __('Saturday'); -$days['sunday'] = __('Sunday'); -html_print_select($days, 'same_day', $same_day, '', '', 0, false, false, false); -echo ''; -echo __('Group').' '; -$own_info = get_user_info($config['id_user']); -if (!users_can_manage_group_all('LM')) { - $can_manage_group_all = false; -} else { - $can_manage_group_all = true; -} - -echo '
'; -html_print_select_groups( - false, - 'LM', - $can_manage_group_all, - 'id_group', - $id_group, - false, - '', - 0, - false, - false, - true, - '', - false, - 'width:100px;' -); -echo '
'; -echo '
'; -echo __('Overwrite'); -ui_print_help_tip( - __('Check this box, if you want to overwrite existing same days.'), - false -); -echo ' '; -html_print_checkbox('overwrite', 1, $overwrite, false, false, false, true); -echo ''; -html_print_input_hidden('upload_ical', 1); -echo ""; -echo '
'; - - -$this_year = date('Y'); -$this_month = date('m'); - -$filter = []; -if (!is_user_admin($config['id_user'])) { - $filter['id_group'] = array_keys(users_get_groups(false, 'LM')); -} - -// Show display range. -$html = "'; -echo $html; - -// Show calendar. -for ($month = 1; $month <= 12; $month++) { - if ($display_range) { - $display_month = $month; - $display_year = $display_range; - } else { - $display_month = ($this_month + $month - 1); - $display_year = $this_year; - } - - if ($display_month > 12) { - $display_month -= 12; - $display_year++; - } - - $cal_table = new stdClass(); - $cal_table->width = '100%'; - $cal_table->class = 'databox data'; - - $cal_table->data = []; - $cal_table->head = []; - $cal_table->head[0] = __('Sun'); - $cal_table->head[1] = __('Mon'); - $cal_table->head[2] = __('Tue'); - $cal_table->head[3] = __('Wed'); - $cal_table->head[4] = __('Thu'); - $cal_table->head[5] = __('Fri'); - $cal_table->head[6] = __('Sat'); - $cal_table->cellstyle = []; - $cal_table->size = []; - $cal_table->size[0] = '14%'; - $cal_table->size[1] = '14%'; - $cal_table->size[2] = '14%'; - $cal_table->size[3] = '14%'; - $cal_table->size[4] = '14%'; - $cal_table->size[5] = '14%'; - $cal_table->size[6] = '14%'; - $cal_table->align = []; - $cal_table->border = '1'; - $cal_table->titlestyle = 'text-align:center; font-weight: bold;'; - switch ($display_month) { - case 1: - $cal_table->title = __('January'); - break; - - case 2: - $cal_table->title = __('February'); - break; - - case 3: - $cal_table->title = __('March'); - break; - - case 4: - $cal_table->title = __('April'); - break; - - case 5: - $cal_table->title = __('May'); - break; - - case 6: - $cal_table->title = __('June'); - break; - - case 7: - $cal_table->title = __('July'); - break; - - case 8: - $cal_table->title = __('August'); - break; - - case 9: - $cal_table->title = __('September'); - break; - - case 10: - $cal_table->title = __('October'); - break; - - case 11: - $cal_table->title = __('November'); - break; - - case 12: - $cal_table->title = __('December'); - break; - - default: - // Not possible. - break; - } - - $cal_table->title .= ' / '.$display_year; - - $last_day = date('j', mktime(0, 0, 0, ($display_month + 1), 0, $display_year)); - $cal_line = 0; - - for ($day = 1; $day < ($last_day + 1); $day++) { - $week = date('w', mktime(0, 0, 0, $display_month, $day, $display_year)); - if ($cal_line == 0 && $week != 0 && $day == 1) { - for ($i = 0; $i < $week; $i++) { - $cal_table->cellstyle[$cal_line][$i] = 'font-size: 18px;'; - $cal_table->data[$cal_line][$i] = '-'; - } - } - - if ($week == 0 || $week == 6) { - $cal_table->cellstyle[$cal_line][$week] = 'color: red;'; - } - - $date = sprintf('%04d-%02d-%02d', $display_year, $display_month, $day); - $date_wildcard = sprintf('0001-%02d-%02d', $display_month, $day); - $special_days = ''; - $filter['date'] = [ - $date, - $date_wildcard, - ]; - $filter['order']['field'] = 'date'; - $filter['order']['order'] = 'DESC'; - $special_days = db_get_all_rows_filter('talert_special_days', $filter); - - $cal_table->cellstyle[$cal_line][$week] .= 'font-size: 18px;'; - $cal_table->data[$cal_line][$week] = $day.' '; - - $cal_table->data[$cal_line][$week] .= 'data[$cal_line][$week] .= '>'.html_print_image( - 'images/add_mc.png', - true, - ['class' => 'invert_filter'] - ).''; - - if (empty($special_days) === false) { - $cal_table->data[$cal_line][$week] .= '
'; - foreach ($special_days as $special_day) { - // Only show description if is filled. - $cal_table->data[$cal_line][$week] .= '
'; - $cal_table->data[$cal_line][$week] .= '
'; - $cal_table->data[$cal_line][$week] .= ui_print_group_icon( - $special_day['id_group'], - true - ); - - if (empty($special_day['description']) === false) { - $cal_table->data[$cal_line][$week] .= ui_print_help_tip($special_day['description'], true); - } - - if ($special_day['date'] == $date_wildcard) { - $cal_table->data[$cal_line][$week] .= '('; - $cal_table->data[$cal_line][$week] .= ui_print_help_tip( - 'This is valid every year. However, this will be ignored if indivisual setting for the same group is available.', - true - ); - $cal_table->data[$cal_line][$week] .= ') '; - } - - $cal_table->data[$cal_line][$week] .= __('As '); - switch ($special_day['same_day']) { - case 'monday': - $cal_table->data[$cal_line][$week] .= __('Monday'); - break; - - case 'tuesday': - $cal_table->data[$cal_line][$week] .= __('Tuesday'); - break; - - case 'wednesday': - $cal_table->data[$cal_line][$week] .= __('Wednesday'); - break; - - case 'thursday': - $cal_table->data[$cal_line][$week] .= __('Thursday'); - break; - - case 'friday': - $cal_table->data[$cal_line][$week] .= __('Friday'); - break; - - case 'saturday': - $cal_table->data[$cal_line][$week] .= __('Saturday'); - break; - - case 'sunday': - $cal_table->data[$cal_line][$week] .= __('Sunday'); - break; - - default: - // Not possible. - break; - } - - $cal_table->data[$cal_line][$week] .= '
'; - $cal_table->data[$cal_line][$week] .= '
'; - if ($special_day['id_group'] || ($can_manage_group_all && $special_day['id_group'] == 0)) { - $script_delete = ''; - $dateformat = date_create($special_day['date']); - $options_zoom = htmlspecialchars( - json_encode( - [ - 'date' => $special_day['date'], - 'id_group' => $special_day['id_group'], - 'same_day' => $special_day['same_day'], - 'btn_ok_text' => __('Create'), - 'btn_cancel_text' => __('Cancel'), - 'title' => date_format($dateformat, 'd M Y'), - 'url' => ui_get_full_url('ajax.php', false, false, false), - 'page' => 'godmode/alerts/alert_special_days', - 'loading' => __('Loading, this operation might take several minutes...'), - ] - ), - ENT_QUOTES, - 'UTF-8' - ); - - $onclick_zoom = 'load_templates_alerts_special_days('.$options_zoom.')'; - $cal_table->data[$cal_line][$week] .= 'data[$cal_line][$week] .= 'title="'; - $cal_table->data[$cal_line][$week] .= __('Show templates'); - $cal_table->data[$cal_line][$week] .= '">'; - $cal_table->data[$cal_line][$week] .= html_print_image( - 'images/zoom.png', - true, - ['class' => 'invert_filter'] - ).''; - $cal_table->data[$cal_line][$week] .= 'data[$cal_line][$week] .= '>'.html_print_image( - 'images/config.png', - true, - ['class' => 'invert_filter'] - ).'  '; - $url_delete = $url.'&delete_special_day=1&id='.$special_day['id']; - $script_delete = 'if (!confirm(\''.__('Are you sure?').'\')) return false;'; - $cal_table->data[$cal_line][$week] .= 'data[$cal_line][$week] .= ' onClick="'.$script_delete.'"'; - $cal_table->data[$cal_line][$week] .= 'title="'; - $cal_table->data[$cal_line][$week] .= __('Remove'); - $cal_table->data[$cal_line][$week] .= '">'; - $cal_table->data[$cal_line][$week] .= html_print_image( - 'images/cross.png', - true, - ['class' => 'invert_filter'] - ).''; - } - - $cal_table->data[$cal_line][$week] .= '
'; - $cal_table->data[$cal_line][$week] .= '
'; - } - } - - if ($week == 6) { - $cal_line++; - } - } - - for ($padding = ($week + 1); $padding <= 6; $padding++) { - $cal_table->cellstyle[$cal_line][$padding] = 'font-size: 18px;'; - $cal_table->data[$cal_line][$padding] = '-'; - } - - html_print_table($cal_table); -} - -echo '
'; -echo '
'; -html_print_submit_button(__('Create'), 'create', false, 'class="sub next"'); -html_print_input_hidden('create_special_day', 1); -echo ''; -echo '
'; -echo ''; ui_require_javascript_file('pandora_alerts'); ?> \ No newline at end of file diff --git a/pandora_console/views/calendar/special_days_edit.php b/pandora_console/views/calendar/special_days_edit.php index 93776a0caf..0ad7f45a82 100644 --- a/pandora_console/views/calendar/special_days_edit.php +++ b/pandora_console/views/calendar/special_days_edit.php @@ -51,7 +51,7 @@ if (empty($message) === false) { $inputs = []; -// Name. +// Date. $inputs[] = [ 'label' => __('Date'), 'arguments' => [ @@ -62,6 +62,21 @@ $inputs[] = [ ], ]; +// Date img. +$inputs[] = [ + 'arguments' => [ + 'type' => 'image', + 'src' => 'images/calendar_view_day.png', + 'value' => $specialDay->date(), + 'options' => [ + 'alt' => 'calendar', + 'onclick' => "scwShow(scwID('text-date'),this);", + 'class' => 'invert_filter', + ], + + ], +]; + if (users_can_manage_group_all('LM') === true) { $display_all_group = true; } else { @@ -127,7 +142,8 @@ $inputs[] = [ HTML::printForm( [ 'form' => [ - 'action' => $url.'&op=edit&action=save&id='.$specialDay->id(), + 'id' => 'form-special-days', + 'action' => $url.'&tab=special_days&op=edit&action=save&id='.$specialDay->id(), 'method' => 'POST', ], 'inputs' => $inputs, @@ -135,30 +151,13 @@ HTML::printForm( false, true ); -/* - $table->data[0][0] = __('Date'); - $table->data[0][1] = html_print_input_text( - 'date', - $date, - '', - 10, - 10, - true - ); - $table->data[0][1] .= html_print_image( - 'images/calendar_view_day.png', - true, - [ - 'alt' => 'calendar', - 'onclick' => "scwShow(scwID('text-date'),this);", - 'class' => 'invert_filter', - ] - ); -*/ + echo ''; ui_require_javascript_file('calendar'); ui_require_javascript_file('pandora_alerts'); + +hd($ajax_url); ?>
".__('Display range: '); -if ($display_range) { - $html .= '['.__('Default').']  '; - if ($display_range > 1970) { - $html .= '<< '; - } - - $html .= '['.$display_range.']'; - $html .= ' >>'; -} else { - $html .= '['.__('Default').']  '; - $html .= '<< '; - $html .= '['; - $html .= $this_year; - $html .= ']'; - $html .= ' >>'; -} - -$html .= '