alerts special days wip
This commit is contained in:
parent
a1c7aebc2b
commit
1e976a8605
|
@ -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 = '<h4>'.__('Same as %s', ucfirst($same_day));
|
||||
$output .= ' » ';
|
||||
$output .= __('Templates not being fired');
|
||||
$output .= '</h4>';
|
||||
|
||||
$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 "<table cellpadding='4' cellspacing='4' class='databox upload bolder margin-bottom-10' width='100%
|
||||
'><tr>";
|
||||
echo "<form id='icalendar-special-days' method='post' enctype='multipart/form-data' action='index.php?sec=gagente&sec2=godmode/alerts/alert_special_days'>";
|
||||
echo '<td>';
|
||||
echo __('iCalendar(.ics) file').' ';
|
||||
html_print_input_file('ical_file', false, false);
|
||||
echo '</td><td>';
|
||||
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 '</td><td>';
|
||||
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 '<div class="inline w250px">';
|
||||
html_print_select_groups(
|
||||
false,
|
||||
'LM',
|
||||
$can_manage_group_all,
|
||||
'id_group',
|
||||
$id_group,
|
||||
false,
|
||||
'',
|
||||
0,
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
'',
|
||||
false,
|
||||
'width:100px;'
|
||||
);
|
||||
echo '</div>';
|
||||
echo '</td><td>';
|
||||
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 '</td><td>';
|
||||
html_print_input_hidden('upload_ical', 1);
|
||||
echo "<input id='srcbutton' name='srcbutton' type='submit' class='sub next' value='".__('Upload')."'>";
|
||||
echo '</td></form>';
|
||||
echo '</tr></table>';
|
||||
|
||||
|
||||
$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 = "<table cellpadding='4' cellspacing='4' width='100%' margin-bottom: 10px;'><tr><td>".__('Display range: ');
|
||||
if ($display_range) {
|
||||
$html .= '<a href="'.$url.'">['.__('Default').']</a> ';
|
||||
if ($display_range > 1970) {
|
||||
$html .= '<a href="'.$url.'&display_range=';
|
||||
$html .= ($display_range - 1);
|
||||
$html .= '"><< </a>';
|
||||
}
|
||||
|
||||
$html .= '<a href="'.$url.'&display_range='.$display_range.'" class="bolder">['.$display_range.']</a>';
|
||||
$html .= '<a href="'.$url.'&display_range=';
|
||||
$html .= ($display_range + 1);
|
||||
$html .= '"> >></a>';
|
||||
} else {
|
||||
$html .= '<a href="'.$url.'" class="bolder">['.__('Default').']</a> ';
|
||||
$html .= '<a href="'.$url.'&display_range=';
|
||||
$html .= ($this_year - 1);
|
||||
$html .= '"><< </a>';
|
||||
$html .= '<a href="'.$url.'&display_range=';
|
||||
$html .= $this_year;
|
||||
$html .= '">[';
|
||||
$html .= $this_year;
|
||||
$html .= ']</a>';
|
||||
$html .= '<a href="'.$url.'&display_range=';
|
||||
$html .= ($this_year + 1);
|
||||
$html .= '"> >></a>';
|
||||
}
|
||||
|
||||
$html .= '</td></tr>';
|
||||
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] .= '<a href="'.$url_alert.'&create_special_day=1&date='.$date.'" title=';
|
||||
$cal_table->data[$cal_line][$week] .= __('Create');
|
||||
$cal_table->data[$cal_line][$week] .= '>'.html_print_image(
|
||||
'images/add_mc.png',
|
||||
true,
|
||||
['class' => 'invert_filter']
|
||||
).'</a>';
|
||||
|
||||
if (empty($special_days) === false) {
|
||||
$cal_table->data[$cal_line][$week] .= '<br>';
|
||||
foreach ($special_days as $special_day) {
|
||||
// Only show description if is filled.
|
||||
$cal_table->data[$cal_line][$week] .= '<div class="note-special-day">';
|
||||
$cal_table->data[$cal_line][$week] .= '<div>';
|
||||
$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] .= '</div>';
|
||||
$cal_table->data[$cal_line][$week] .= '<div>';
|
||||
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] .= '<a href="#" onclick="'.$onclick_zoom.'"';
|
||||
$cal_table->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']
|
||||
).'</a>';
|
||||
$cal_table->data[$cal_line][$week] .= '<a href="'.$url_alert.'&id='.$special_day['id'].'" title=';
|
||||
$cal_table->data[$cal_line][$week] .= __('Edit');
|
||||
$cal_table->data[$cal_line][$week] .= '>'.html_print_image(
|
||||
'images/config.png',
|
||||
true,
|
||||
['class' => 'invert_filter']
|
||||
).'</a> ';
|
||||
$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] .= '<a href="'.$url_delete.'"';
|
||||
$cal_table->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']
|
||||
).'</a>';
|
||||
}
|
||||
|
||||
$cal_table->data[$cal_line][$week] .= '</div>';
|
||||
$cal_table->data[$cal_line][$week] .= '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
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 '<div class="action-buttons" style="width: '.$table->width.'">';
|
||||
echo '<form method="post" action="'.$url_alert.'">';
|
||||
html_print_submit_button(__('Create'), 'create', false, 'class="sub next"');
|
||||
html_print_input_hidden('create_special_day', 1);
|
||||
echo '</form>';
|
||||
echo '</div>';
|
||||
echo '<div id="modal-alert-templates" class="invisible"></div>';
|
||||
ui_require_javascript_file('pandora_alerts');
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
|
|
|
@ -71,7 +71,11 @@ class CalendarManager
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $AJAXMethods = ['drawListCalendar'];
|
||||
public static $AJAXMethods = [
|
||||
'drawListCalendar',
|
||||
'drawAlertTemplates',
|
||||
'dataAlertTemplates',
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
|
@ -193,7 +197,9 @@ class CalendarManager
|
|||
$tab = get_parameter('tab');
|
||||
switch ($tab) {
|
||||
case 'special_days':
|
||||
hd('tab special_day');
|
||||
if ($op === 'edit') {
|
||||
hd('op = edit');
|
||||
if ($this->showSpecialDaysEdition() !== true) {
|
||||
return;
|
||||
}
|
||||
|
@ -507,13 +513,18 @@ class CalendarManager
|
|||
{
|
||||
global $config;
|
||||
$id = (int) get_parameter('id');
|
||||
$display_range = (int) get_parameter('display_range', date('Y'));
|
||||
$display_range = (int) get_parameter('display_range', 0);
|
||||
try {
|
||||
// Datatables offset, limit and order.
|
||||
$date = $display_range.'-'.date('m').'-1';
|
||||
$futureDate = date('Y-m-d', strtotime('+1 year', strtotime($date)));
|
||||
$filter = [];
|
||||
if ($display_range === 0) {
|
||||
$date = date('Y').'-'.date('m').'-1';
|
||||
} else {
|
||||
$date = $display_range.'-1-1';
|
||||
}
|
||||
|
||||
$futureDate = date('Y-m-d', strtotime('+1 year', strtotime($date)));
|
||||
|
||||
$filter = [];
|
||||
$filter['date'] = $date;
|
||||
$filter['futureDate'] = $futureDate;
|
||||
$filter['id_calendar'] = $id;
|
||||
|
@ -529,10 +540,20 @@ class CalendarManager
|
|||
// Fields.
|
||||
$fields,
|
||||
// Filter.
|
||||
$filter
|
||||
$filter,
|
||||
// Count.
|
||||
false,
|
||||
// Offset.
|
||||
null,
|
||||
// Limit.
|
||||
null,
|
||||
// Order.
|
||||
null,
|
||||
// Sort field.
|
||||
null,
|
||||
// Reduce array.
|
||||
true
|
||||
);
|
||||
|
||||
hd($specialDays);
|
||||
} catch (\Exception $e) {
|
||||
if ($id > 0) {
|
||||
$this->message = \ui_print_error_message(
|
||||
|
@ -546,12 +567,13 @@ class CalendarManager
|
|||
View::render(
|
||||
'calendar/special_days',
|
||||
[
|
||||
'ajax_url' => $this->ajaxUrl,
|
||||
'url' => $this->url.'&tab=special_days',
|
||||
'tabs' => $this->getTabs('special_days'),
|
||||
'message' => $this->message,
|
||||
'specialDays' => $specialDays,
|
||||
'id_calendar' => $id,
|
||||
'ajax_url' => $this->ajaxUrl,
|
||||
'url' => $this->url.'&tab=special_days',
|
||||
'tabs' => $this->getTabs('special_days'),
|
||||
'message' => $this->message,
|
||||
'specialDays' => $specialDays,
|
||||
'id_calendar' => $id,
|
||||
'display_range' => $display_range,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
@ -565,10 +587,12 @@ class CalendarManager
|
|||
public function showSpecialDaysEdition()
|
||||
{
|
||||
$id = (int) get_parameter('id');
|
||||
hd($id);
|
||||
$new = false;
|
||||
try {
|
||||
$specialDay = new SpecialDay($id);
|
||||
if ($id === 0) {
|
||||
$specialDay->date(get_parameter('date', null));
|
||||
$new = true;
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
|
@ -596,8 +620,9 @@ class CalendarManager
|
|||
}
|
||||
|
||||
try {
|
||||
$specialDay->name(get_parameter('name', null));
|
||||
$specialDay->date(get_parameter('date', null));
|
||||
$specialDay->id_group(get_parameter('id_group', null));
|
||||
$specialDay->day_code(get_parameter('day_code', null));
|
||||
$specialDay->description(get_parameter('description', null));
|
||||
|
||||
// Save template.
|
||||
|
@ -648,4 +673,202 @@ class CalendarManager
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* AJAX Method, draw Alert Template list.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function drawAlertTemplates()
|
||||
{
|
||||
global $config;
|
||||
|
||||
$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 = '<h4>'.__('Same as %s', ucfirst($same_day));
|
||||
$output .= ' » ';
|
||||
$output .= __('Templates not being fired');
|
||||
$output .= '</h4>';
|
||||
|
||||
$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' => [
|
||||
'method' => 'dataAlertTemplates',
|
||||
'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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* AJAX Method, draw Alert Template list.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function dataAlertTemplates()
|
||||
{
|
||||
global $config;
|
||||
$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']);
|
||||
|
||||
$day_code = get_parameter('day_code', '');
|
||||
$data = [];
|
||||
if (empty($templates) === false) {
|
||||
foreach ($templates as $template) {
|
||||
// TODO
|
||||
if ((bool) $template[$day_code] === 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -68,10 +68,10 @@ function load_templates_alerts_special_days(settings) {
|
|||
url: settings.url,
|
||||
data: {
|
||||
page: settings.page,
|
||||
get_template_alerts: 1,
|
||||
method: "drawAlertTemplates",
|
||||
date: settings.date,
|
||||
id_group: settings.id_group,
|
||||
same_day: settings.same_day
|
||||
day_code: settings.day_code
|
||||
},
|
||||
datatype: "html",
|
||||
success: function(data) {
|
||||
|
|
|
@ -133,7 +133,8 @@ class SpecialDay extends Entity
|
|||
?int $offset=null,
|
||||
?int $limit=null,
|
||||
?string $order=null,
|
||||
?string $sort_field=null
|
||||
?string $sort_field=null,
|
||||
?bool $reduce=false
|
||||
) {
|
||||
$sql_filters = [];
|
||||
$order_by = '';
|
||||
|
@ -233,8 +234,6 @@ class SpecialDay extends Entity
|
|||
$pagination
|
||||
);
|
||||
|
||||
hd($sql);
|
||||
|
||||
if ($count === true) {
|
||||
$sql = sprintf('SELECT count(*) as n FROM ( %s ) tt', $sql);
|
||||
|
||||
|
@ -247,6 +246,19 @@ class SpecialDay extends Entity
|
|||
return [];
|
||||
}
|
||||
|
||||
if ($reduce === true) {
|
||||
$return = array_reduce(
|
||||
$return,
|
||||
function ($carry, $item) {
|
||||
$year = date('Y', strtotime($item['date']));
|
||||
$month = date('n', strtotime($item['date']));
|
||||
$day = date('j', strtotime($item['date']));
|
||||
$carry[$year][$month][$day][] = $item;
|
||||
return $carry;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
* ============================================================================
|
||||
*/
|
||||
|
||||
global $config;
|
||||
|
||||
// Header.
|
||||
\ui_print_page_header(
|
||||
// Title.
|
||||
|
@ -115,6 +117,7 @@ $inputs[] = [
|
|||
// Print form.
|
||||
HTML::printForm(
|
||||
[
|
||||
'id' => 'icalendar-special-days',
|
||||
'form' => [
|
||||
'action' => $url.'&op=edit&action=upload_ical&id='.$id_calendar,
|
||||
'method' => 'POST',
|
||||
|
@ -280,19 +283,11 @@ for ($month = 1; $month <= 12; $month++) {
|
|||
|
||||
$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] .= '<a href="'.$url_alert.'&create_special_day=1&date='.$date.'" title=';
|
||||
$cal_table->data[$cal_line][$week] .= '<a href="'.$url.'&op=edit&date='.$date.'" title=';
|
||||
$cal_table->data[$cal_line][$week] .= __('Create');
|
||||
$cal_table->data[$cal_line][$week] .= '>'.html_print_image(
|
||||
'images/add_mc.png',
|
||||
|
@ -300,9 +295,9 @@ for ($month = 1; $month <= 12; $month++) {
|
|||
['class' => 'invert_filter']
|
||||
).'</a>';
|
||||
|
||||
if (empty($special_days) === false) {
|
||||
if (empty($specialDays) === false && isset($specialDays[$display_year][$display_month][$day]) === true) {
|
||||
$cal_table->data[$cal_line][$week] .= '<br>';
|
||||
foreach ($special_days as $special_day) {
|
||||
foreach ($specialDays[$display_year][$display_month][$day] as $special_day) {
|
||||
// Only show description if is filled.
|
||||
$cal_table->data[$cal_line][$week] .= '<div class="note-special-day">';
|
||||
$cal_table->data[$cal_line][$week] .= '<div>';
|
||||
|
@ -325,35 +320,39 @@ for ($month = 1; $month <= 12; $month++) {
|
|||
}
|
||||
|
||||
$cal_table->data[$cal_line][$week] .= __('As ');
|
||||
switch ($special_day['same_day']) {
|
||||
case 'monday':
|
||||
switch ($special_day['day_code']) {
|
||||
case '1':
|
||||
$cal_table->data[$cal_line][$week] .= __('Monday');
|
||||
break;
|
||||
|
||||
case 'tuesday':
|
||||
case '2':
|
||||
$cal_table->data[$cal_line][$week] .= __('Tuesday');
|
||||
break;
|
||||
|
||||
case 'wednesday':
|
||||
case '3':
|
||||
$cal_table->data[$cal_line][$week] .= __('Wednesday');
|
||||
break;
|
||||
|
||||
case 'thursday':
|
||||
case '4':
|
||||
$cal_table->data[$cal_line][$week] .= __('Thursday');
|
||||
break;
|
||||
|
||||
case 'friday':
|
||||
case '5':
|
||||
$cal_table->data[$cal_line][$week] .= __('Friday');
|
||||
break;
|
||||
|
||||
case 'saturday':
|
||||
case '6':
|
||||
$cal_table->data[$cal_line][$week] .= __('Saturday');
|
||||
break;
|
||||
|
||||
case 'sunday':
|
||||
case '7':
|
||||
$cal_table->data[$cal_line][$week] .= __('Sunday');
|
||||
break;
|
||||
|
||||
case '8':
|
||||
$cal_table->data[$cal_line][$week] .= __('Holidays');
|
||||
break;
|
||||
|
||||
default:
|
||||
// Not possible.
|
||||
break;
|
||||
|
@ -361,7 +360,7 @@ for ($month = 1; $month <= 12; $month++) {
|
|||
|
||||
$cal_table->data[$cal_line][$week] .= '</div>';
|
||||
$cal_table->data[$cal_line][$week] .= '<div>';
|
||||
if ($special_day['id_group'] || ($can_manage_group_all && $special_day['id_group'] == 0)) {
|
||||
if ($special_day['id_group'] || (users_can_manage_group_all('LM') === true && $special_day['id_group'] == 0)) {
|
||||
$script_delete = '';
|
||||
$dateformat = date_create($special_day['date']);
|
||||
$options_zoom = htmlspecialchars(
|
||||
|
@ -369,12 +368,12 @@ for ($month = 1; $month <= 12; $month++) {
|
|||
[
|
||||
'date' => $special_day['date'],
|
||||
'id_group' => $special_day['id_group'],
|
||||
'same_day' => $special_day['same_day'],
|
||||
'day_code' => $special_day['day_code'],
|
||||
'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',
|
||||
'page' => $ajax_url,
|
||||
'loading' => __('Loading, this operation might take several minutes...'),
|
||||
]
|
||||
),
|
||||
|
@ -392,7 +391,7 @@ for ($month = 1; $month <= 12; $month++) {
|
|||
true,
|
||||
['class' => 'invert_filter']
|
||||
).'</a>';
|
||||
$cal_table->data[$cal_line][$week] .= '<a href="'.$url_alert.'&id='.$special_day['id'].'" title=';
|
||||
$cal_table->data[$cal_line][$week] .= '<a href="'.$url.'&op=edit&id='.$special_day['id'].'" title=';
|
||||
$cal_table->data[$cal_line][$week] .= __('Edit');
|
||||
$cal_table->data[$cal_line][$week] .= '>'.html_print_image(
|
||||
'images/config.png',
|
||||
|
@ -453,3 +452,24 @@ if ((bool) check_acl($config['id_user'], 0, 'LM') === true) {
|
|||
}
|
||||
|
||||
echo '<div id="modal-alert-templates" class="invisible"></div>';
|
||||
ui_require_javascript_file('pandora_alerts');
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready (function () {
|
||||
$("#srcbutton").click (function (e) {
|
||||
e.preventDefault();
|
||||
load_templates_alerts_special_days({
|
||||
date: '',
|
||||
id_group: $("#id_group").val(),
|
||||
day_code: $("#day_code").val(),
|
||||
btn_ok_text: '<?php echo __('Create'); ?>',
|
||||
btn_cancel_text: '<?php echo __('Cancel'); ?>',
|
||||
title: '<?php echo __('Load calendar'); ?>',
|
||||
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
|
||||
page: "godmode/alerts/alert_special_days",
|
||||
loading: '<?php echo __('Loading, this operation might take several minutes...'); ?>',
|
||||
name_form: 'icalendar-special-days'
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -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 '<div id="modal-alert-templates" class="invisible"></div>';
|
||||
|
||||
ui_require_javascript_file('calendar');
|
||||
ui_require_javascript_file('pandora_alerts');
|
||||
|
||||
hd($ajax_url);
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready (function () {
|
||||
|
@ -173,12 +172,12 @@ $(document).ready (function () {
|
|||
load_templates_alerts_special_days({
|
||||
date: $("#text-date").val(),
|
||||
id_group: $("#id_group").val(),
|
||||
same_day: $("#same_day").val(),
|
||||
day_code: $("#day_code").val(),
|
||||
btn_ok_text: '<?php echo __('Create'); ?>',
|
||||
btn_cancel_text: '<?php echo __('Cancel'); ?>',
|
||||
title: dateformat,
|
||||
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
|
||||
page: "godmode/alerts/alert_special_days",
|
||||
page: '<?php echo $ajax_url; ?>',
|
||||
loading: '<?php echo __('Loading, this operation might take several minutes...'); ?>',
|
||||
name_form: 'form-special-days'
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue