function display() { global $CFG; $tab_id = $CFG->pm_editor ? $CFG->id : Control::getPageId($CFG->url, 1); if (!$tab_id > 0) { return false; } $current_tab = DB::getRecord('admin_tabs', $tab_id, 0, 1); $pages = self::getPages($tab_id); if ($pages) { $HTML = ' <div class="page_map">'; foreach ($pages as $page) { if ($CFG->pm_editor) { $edit = '<a href="#" title="' . $CFG->edit_hover_caption . '" class="edit" class="method_edit_button" onclick="pmPageEdit(' . $page['id'] . ',event);return false;"></a>'; } $order = $page['order']; $icon = $page['icon'] ? '<div class="lnk">' . Link::url($page['url'], '<img src="' . $page['icon'] . '" title="' . $page['name'] . '" />', false, false, false, 'content') . '</div>' : ''; $pages_array[$order][] = ' <div class="page_map_page o"> <input type="hidden" id="id" value="' . $page['id'] . '" /> ' . $icon . ' <div class="lnk">' . Link::url($page['url'], $page['name'], false, false, false, 'content') . '</div> ' . $edit . ' <div class="clear"></div> </div>'; } $total = max(array_keys($pages_array)); $total = $total + count($this->areas_s); $total = $total + count($this->areas_e); for ($i = 0; $i <= $total; $i++) { if ($this->areas_s[$i]) { foreach ($this->areas_s[$i] as $area) { $HTML .= $area; } } if ($pages_array[$i]) { foreach ($pages_array[$i] as $p) { $HTML .= $p; } } if ($this->areas_e[$i]) { foreach ($this->areas_e[$i] as $area) { $HTML .= $area; } } } $HTML .= '</div>'; } else { $HTML .= '<div class="no_pages">' . $CFG->pagemap_nothing . '</div>'; } echo $HTML; }
public static function showPath() { global $CFG; if ($_REQUEST['tab_bypass']) { return false; } if ($CFG->url) { $sql = "SELECT admin_tabs.name AS tab_name,admin_tabs.url AS tab_url" . (!$CFG->is_tab ? ",admin_pages.name AS page_name, admin_pages.url AS page_url" : '') . " FROM admin_tabs" . (!$CFG->is_tab ? ",admin_pages" : '') . " WHERE 1 " . (!$CFG->is_tab ? "AND admin_pages.url = '{$CFG->url}' AND admin_pages.f_id = admin_tabs.id" : " AND admin_tabs.url = '{$CFG->url}'"); $result = db_query_array($sql); } echo '<div class="path">'; echo '<a href="' . $CFG->self . '">' . $CFG->home_label . '</a>'; if ($result) { echo $CFG->path_separator; echo !empty($result[0]['tab_url']) ? Link::url($result[0]['tab_url'], $result[0]['tab_name'], false, array('is_tab' => 1)) : $result[0]['tab_name']; if (!$CFG->is_tab) { echo $CFG->path_separator; echo !empty($result[0]['page_url']) ? Link::url($result[0]['page_url'], $result[0]['page_name']) : $result[0]['page_name']; } if ($CFG->action) { if ($CFG->action == 'form') { $action = $CFG->path_edit; } elseif ($CFG->action == 'record') { $action = $CFG->path_view; } echo $CFG->path_separator . $action; } } else { if (!$CFG->url) { echo $CFG->path_separator . $CFG->path_ctrl; } else { switch ($CFG->url) { case 'edit_tabs': echo $CFG->path_separator . $CFG->path_edit_tabs; break; case 'users': echo $CFG->path_separator . $CFG->path_users; break; case 'settings': echo $CFG->path_separator . $CFG->path_settings; break; } } } echo '</div>'; }
function filterFirstLetter($field_name, $subtable = false) { global $CFG; $properties = array('field_name' => $field_name, 'type' => 'first_letter', 'subtable' => $subtable); $range = range('A', 'Z'); $HTML = ''; foreach ($range as $l) { $HTML .= Link::url($this->go_to_url, $l, 'fl=' . $l . '&fl_field=' . $field_name . '&fl_subtable=' . $subtable . '&is_tab=' . $this->go_to_is_tab, false, false, 'content'); } $CFG->o_method_id = $CFG->method_id; $CFG->o_method_name = 'filterFirstLetter'; self::HTML($HTML); $CFG->o_method_suppress = true; self::HTML('<input type="hidden" name="filter_properties[' . $field_name . ']" value="' . urlencode(serialize($properties)) . '" />'); }
$width_class = 'triple'; } elseif ($c > 5) { $split = ceil($c / 2); $width_class = 'double'; } echo ' <div class="menu_item"> ' . Link::url($tab['url'], $tab['name'] . ($pages ? '<div class="drop"></div>' : ''), false, array('is_tab' => 1)); if ($pages) { $i = 0; echo ' <div class="options ' . $width_class . '"> <div class="contain"> <ul>'; foreach ($pages as $page) { echo '<li>' . Link::url($page['url'], $page['name']) . '</li>'; $i++; if ($split && $i % $split == 0) { echo '<div class="clear"></div></ul><ul>'; } } echo ' <div class="clear"></div> </ul> <div class="t_shadow"></div> <div class="r_shadow"></div> <div class="b_shadow"></div> <div class="l_shadow"></div> <div class="tl1_shadow"></div> <div class="tl2_shadow"></div> <div class="tr1_shadow"></div>
function link($url = false, $caption = false, $variables = false, $target_elem_id = false, $class = false, $disable_if_no_record_id = false, $disable_if_cant_edit = false) { global $CFG; $reserved_keywords = array('current_url', 'action', 'bypass', 'is_tab'); if (is_array($variables)) { foreach ($variables as $k => $v) { $v1 = str_replace('[', '', str_replace(']', '', $v)); if (in_array($k, $reserved_keywords)) { $variables1[$k] = $v; } elseif ($k == 'id') { $variables1[$k] = $this->record_id; } elseif ($v1 == 'id') { $variables1["{$url}[{$k}]"] = $this->record_id; } else { $variables1["{$url}[{$k}]"] = $this->row[$v1]; } } } $variables1['bypass_save'] = 1; $permission_level = $variables1['action'] == 'form' ? 2 : 1; $disabled = User::permission(0, 0, $url, false, $variables1['is_tab']) < $permission_level; $disabled = !($this->record_id > 0) && $disable_if_no_record_id ? true : $disabled; $target_elem_id = !$target_elem_id ? 'content' : $target_elem_id; $class = $class ? $class : 'nav_link'; if ($CFG->pm_editor) { $method_name = Form::peLabel($CFG->method_id, 'link'); } $this->HTML[] = Link::url($url, '<div class="add_new"></div> ' . $caption, false, $variables1, false, $target_elem_id, $class, false, false, false, $disabled) . $method_name; }
private function show($comments) { global $CFG; if ($comments) { echo '<ul>'; foreach ($comments as $comment) { $elapsed = time() + Settings::mysqlTimeDiff() * 3600 - strtotime($comment['date']); if ($elapsed < 60) { $time_ago = $CFG->comments_less_than_minute; } elseif ($elapsed > 60 && $elapsed < 60 * 60) { $minutes = floor($elapsed / 60); $time_ago = str_ireplace('[field]', $minutes, $CFG->comments_minutes_ago); } elseif ($elapsed > 60 * 60 && $elapsed < 60 * 60 * 24) { $hours = floor($elapsed / 60 / 60); $time_ago = str_ireplace('[field]', $hours, $CFG->comments_hours_ago); } elseif ($elapsed > 60 * 60 * 24 && $elapsed < 60 * 60 * 24 * 30.4) { $days = floor($elapsed / 60 / 60 / 24); $time_ago = str_ireplace('[field]', $days, $CFG->comments_days_ago); } else { $months = floor($elapsed / 60 / 60 / 24 / 30.4); $time_ago = str_ireplace('[field]', $months, $CFG->comments_months_ago); } if ($comment['user_id'] > 0) { $user = DB::getRecord($this->user_table, $comment['user_id'], false, true); $name = !empty($comment['website']) ? Link::url($comment['website'], $user['user']) : $user['user']; } else { $name = !empty($comment['website']) ? Link::url($comment['website'], $comment['name']) : $comment['name']; } $short = $this->short_version ? '_short' : ''; $icon = $comment['type'] ? eval('return $CFG->comment_type_' . $comment['type'] . ';') : $CFG->comment_type_1; $action = $comment['type'] ? eval('return $CFG->comments_action_' . $comment['type'] . $short . ';') : $CFG->comments_wrote_label; $action = String::doFormulaReplacements($action, unserialize($comment['f_table_row']), 1, 1); echo ' <li id="comment_' . $comment['id'] . '" class="level_' . $comment['type'] . '"> <div class="c_head">'; if ($this->fields) { foreach ($this->fields as $f_name => $field) { $CFG->o_method_id = $field['method_id']; $CFG->o_method_name = 'field'; $record = new Record($field['table'], $comment['record_id']); echo '<div class="added_field">' . $record->field($field['name'], $field['caption'], $field['subtable'], $field['subtable_fields'], $field['link_url'], $field['concat_char'], true, $field['f_id_field'], $field['order_by'], $field['order_asc'], $comment['record_id'], $field['link_is_tab'], $field['limit_is_curdate'], false, $field['link_id_field']) . '</div>'; } } echo ' ' . $icon . ' ' . $name . ' (' . $time_ago . ') ' . $action . ' </div>'; if (!$this->short_version) { echo ' <div class="c_comment"> ' . (strlen($comment['comments']) != strlen(strip_tags($comment['comments'])) ? $comment['comments'] : nl2br($comment['comments'])) . ' </div>'; } echo ' ' . ($comment['type'] <= 1 && !$this->short_version ? '<div class="c_reply"><a href="#" onclick="showReplyBox(' . $comment['id'] . ',' . $this->i . ');return false;">' . $CFG->comments_reply_label . '</a></div>' : '') . ' <div class="c_form"></div> </li>'; if (is_array($comment['children'])) { Comments::show($comment['children']); } } echo '<div style="clear:both;height:0;"></div></ul>'; } }
function pagination($page, $total_rows, $rows_per_page = 0, $max_pages = 0, $pagination_label = false, $target_elem = false) { global $CFG; $page = $page > 0 ? $page : 1; $target_elem = $target_elem ? $target_elem : 'content'; if (is_object($this)) { if ($this->max_pages == 1) { return false; } $rows_per_page = $this->rows_per_page; $max_pages = $this->max_pages ? $this->max_pages : 10; $pagination_label = $this->pagination_label; $link_url = $CFG->url; $mode = $this->mode; $inset_id = $this->inset_id; $inset_id_field = $this->inset_id_field; $inset_i = $this->inset_i; $target_elem = $this->inset_i > 0 ? 'inset_area_' . $this->inset_i : $target_elem; $grid_i = $this->i; $filter_results = $_REQUEST['form_filters' . $this->i]; } else { $link_url = $CFG->url; } if (!($rows_per_page > 0)) { return false; } if ($total_rows > $rows_per_page) { $num_pages = ceil($total_rows / $rows_per_page); $page_array = range(1, $num_pages); if ($max_pages > 0) { $p_deviation = ($max_pages - 1) / 2; $alpha = $page - 1; $alpha = $alpha < $p_deviation ? $alpha : $p_deviation; $beta = $num_pages - $page; $beta = $beta < $p_deviation ? $beta : $p_deviation; if ($alpha < $p_deviation) { $beta = $beta + ($p_deviation - $alpha); } if ($beta < $p_deviation) { $alpha = $alpha + ($p_deviation - $beta); } } if ($page != 1) { $first_page = Link::url($link_url, $CFG->first_page_text, false, array('page' . $grid_i => 1, 'p_bypass' . $grid_i => 1, 'mode' . $grid_i => $mode, 'inset_id' => $inset_id, 'inset_id_field' => $inset_id_field, 'inset_i' => $inset_i, 'form_filters' . $grid_i => $filter_results, 'search_fields' . $grid_i => $_REQUEST['search_fields' . $grid_i]), true, $target_elem, 'first'); } if ($page != $num_pages) { $last_page = Link::url($link_url, $CFG->last_page_text, false, array('page' . $grid_i => $num_pages, 'p_bypass' . $grid_i => 1, 'mode' . $grid_i => $mode, 'inset_id' => $inset_id, 'inset_id_field' => $inset_id_field, 'inset_i' => $inset_i, 'form_filters' . $grid_i => $filter_results, 'search_fields' . $grid_i => $_REQUEST['search_fields' . $grid_i]), true, $target_elem, 'last'); } $pagination = '<div class="pagination"><div style="float:left;">' . $first_page; foreach ($page_array as $p) { if ($p >= $page - $alpha && $p <= $page + $beta || $max_pages == 0) { if ($p == $page) { $pagination .= ' <span>' . $p . '</span> '; } else { $pagination .= Link::url($link_url, $p, false, array('page' . $grid_i => $p, 'p_bypass' . $grid_i => 1, 'mode' . $grid_i => $mode, 'inset_id' => $inset_id, 'inset_id_field' => $inset_id_field, 'inset_i' => $inset_i, 'form_filters' . $grid_i => $filter_results, 'search_fields' . $grid_i => $_REQUEST['search_fields' . $grid_i]), true, $target_elem); } } } $pagination .= '</div>'; if ($pagination_label) { $label = str_ireplace('[results]', '<b>' . $total_rows . '</b>', $CFG->pagination_label); $label = str_ireplace('[num_pages]', '<b>' . $num_pages . '</b>', $label); $pagination .= '<div style="float:right" class="pagination_label">' . $label . '</div>'; } $pagination .= $last_page . '<div style="clear:both;height:0;"> </div></div>'; return $pagination; } }
function show_filters() { global $CFG; if ($this->inset_id > 0) { return false; } if (is_array($this->filters)) { $form_filters = new Form('form_filters', false, 'GET', 'form_filters', false); $form_filters->show_errors(); $form_filters->info = $form_filters->info ? $form_filters->info : $this->filter_results; foreach ($this->filters as $filter) { $name = $filter['field_name']; $caption = !empty($filter['caption']) ? $caption : $name; if ($filter['type'] != 'radio' && $filter['type'] != 'start_date' && $filter['type'] != 'end_date' && $group) { $form_filters->endGroup(); $group = false; } switch ($filter['type']) { case 'per_page': $options_array = is_array($filter['options_array']) ? $filter['options_array'] : array(10 => 10, 30 => 30, 50 => 50); $caption = !empty($filter['caption']) ? $filter['caption'] : $CFG->results_per_page_text; $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterPerPage'; $form_filters->selectInput('per_page', $caption, false, $this->rows_per_page, $options_array, false, false, false, false, $filter['class']); break; case 'search': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterSearch'; $form_filters->textInput('search', $filter['caption'], false, false, false, false, $filter['class']); foreach ($filter['subtable_fields'] as $s_field => $s_subtable) { $s_subtable = $s_subtable && $s_subtable != $s_field ? $s_subtable : $this->table; $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="search_fields[' . $s_field . ']" value="' . $s_subtable . '" />'); } break; case 'autocomplete': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterAutocomplete'; $form_filters->autoComplete($name, $filter['caption'], false, $filter['value'], false, $filter['options_array'], $filter['subtable'], $filter['subtable_fields'], false, false, $filter['class']); $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="subtables[' . $name . '][subtable]" value="' . $filter['subtable'] . '" />'); $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="subtables[' . $name . '][subtable_fields]" value="' . implode('|', $filter['subtable_fields']) . '" />'); $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="subtables[' . $name . '][f_id_field]" value="' . $filter['f_id_field'] . '" />'); break; case 'tokenizer': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterTokenizer'; $form_filters->autoComplete($name, $filter['caption'], false, $filter['value'], false, $filter['options_array'], $filter['subtable'], $filter['subtable_fields'], false, false, $filter['class'], false, false, false, false, false, false, false, false, false, false, false, 1); break; case 'cats': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterCats'; $form_filters->catSelect($filter['subtable'], $filter['caption'], 0, $filter['class'], false, false, false, $filter['subtable_fields'], $filter['concat_char']); break; case 'first_letter': $range = range('A', 'Z'); $HTML = ''; foreach ($range as $l) { $HTML .= Link::url($this->link_url, $l, 'fl=' . $l . '&fl_field=' . $name . '&fl_subtable=' . $filter['subtable'] . '&is_tab=' . $this->is_tab, false, false, 'content'); } $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterFirstLetter'; $form_filters->HTML($HTML); break; case 'select': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterSelect'; $form_filters->selectInput($name, $filter['caption'], false, false, $filter['options_array'], $filter['subtable'], $filter['subtable_fields'], false, false, $filter['class'], false, false, $filter['f_id_field'], false, $filter['depends_on']); $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="subtables[' . $name . '][subtable]" value="' . $filter['subtable'] . '" />'); $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="subtables[' . $name . '][subtable_fields]" value="' . implode('|', $filter['subtable_fields']) . '" />'); $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="subtables[' . $name . '][f_id_field]" value="' . $filter['f_id_field'] . '" />'); break; case 'checkbox': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterCheckbox'; $form_filters->checkBox($name, $filter['caption'], false, false, $filter['class'], false, false, $filter['checked']); break; case 'radio': if (!$group) { $CFG->o_method_suppress = true; $form_filters->startGroup(); } $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterRadio'; $form_filters->radioInput($name, $filter['caption'], false, $filter['value'], false, $filter['class'], false, false, $filter['checked']); if (!$group) { $group = true; } else { $CFG->o_method_suppress = true; $form_filters->endGroup(); $group = false; } break; case 'start_date': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterDateStart'; $form_filters->dateWidget($name, $filter['caption'], false, $filter['time'], $filter['ampm'], $filter['req_start'], $filter['req_end'], $filter['value'], false, false, $filter['class'], $filter['format']); break; case 'end_date': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterDateEnd'; $form_filters->dateWidget($name, $filter['caption'], false, $filter['time'], $filter['ampm'], $filter['req_start'], $filter['req_end'], $filter['value'], $filter['link_to'], false, $filter['class'], $filter['format'], false, false, true); break; case 'month': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterMonth'; $form_filters->selectInput($name . '_month', $filter['caption'], false, false, String::getMonthNames($filter['language'])); $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="month_fields[]" value="' . $name . '_month" />'); break; case 'year': $CFG->o_method_id = $filter['method_id']; $CFG->o_method_name = 'filterYear'; $back_to = $filter['back_to'] ? $filter['back_to'] : 1975; $years = range(date('Y'), $back_to); $years = array_combine($years, $years); $form_filters->selectInput($name . '_year', $filter['caption'], false, false, $years); $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="year_fields[]" value="' . $name . '_year" />'); break; } } if ($group) { $form_filters->endGroup(); } $CFG->o_method_suppress = true; $form_filters->HTML('<input type="hidden" name="mode" value="' . $this->mode . '" />'); $CFG->o_method_suppress = true; $form_filters->submitButton('submit', $CFG->filter_submit_text, false, 'not_method'); $CFG->o_method_suppress = true; $form_filters->resetButton('Reset', false, 'not_method'); $form_filters->display(); } }
function display() { global $CFG; self::getSteps(); $HTML = ' <div class="flow_chart"> <table> <tr> <td class="bar"> <a class="add_step" title="' . $CFG->add_step . '" onclick="flow_chart.addStep()"></a> <a class="save_order" title="' . $CFG->save_order . '" onclick="flow_chart.saveOrder()"></a> </td> </tr> <tr> <td class="navigator" id="navigator"> <input type="hidden" id="table" value="' . $this->table . '" /> <input type="hidden" id="current_url" value="' . $CFG->url . '" /> <input type="hidden" id="is_tab" value="' . $CFG->is_tab . '" />'; if ($this->steps) { foreach ($this->steps as $i => $step) { $HTML .= ' <div class="step_container"> <div class="ops">'; if (User::permission(0, 0, $this->table, false, $this->url_is_tab) > 0) { $HTML .= Link::url($this->table, false, 'id=' . $step['id'] . '&action=record&is_tab=' . $this->url_is_tab, false, false, 'edit_box', 'view', false, false, false, false, $CFG->view_hover_caption) . ' '; } if (User::permission(0, 0, $this->table, false, $this->url_is_tab) > 1) { $HTML .= Link::url($this->table, false, 'id=' . $step['id'] . '&action=form&is_tab=' . $this->url_is_tab, false, false, 'edit_box', 'edit', false, false, false, false, $CFG->edit_hover_caption) . ' '; } if (User::permission(0, 0, $this->table, false, $this->url_is_tab) > 1) { $HTML .= '<a href="#" title="' . $CFG->delete_hover_caption . '" onclick="flow_chart.deleteThis(' . $step['id'] . ',\'' . $this->table . '\',this)" class="delete"></a>'; } $HTML .= ' </div> <div class="step" onclick="flow_chart.select(this,event);" ondblclick="flow_chart.open(' . $step['id'] . ')"></div> <div class="desc" onclick="flow_chart.select(this,event);" ondblclick="flow_chart.open(' . $step['id'] . ')">' . $step['name'] . '</div> <input type="hidden" id="id" value="' . $step['id'] . '" /> </div>'; if ($this->steps[$i + 1]) { $HTML .= '<div class="step_link"></div>'; } } } if (!$CFG->pm_editor) { $HTML .= ' <script language="text/javascript"> $("#navigator").click(function() { flow_chart.unselect(); }); flow_chart.startSortable(); </script> '; } $HTML .= ' <div class="clear"></div> </td> </tr> </table> </div> '; echo $HTML; }
/** * @expectedException \Ignaszak\Router\RouterException */ public function testInvalidRouteName() { $this->urlGenerator = new UrlGenerator($this->mockRoute()); $this->urlGenerator->url('name', []); }
function display() { global $CFG; if (!is_array($this->tables) || !is_array($this->fields)) { return false; } if ($CFG->pm_editor) { echo '</ul>'; } $mode = $this->mode; $date = $this->date; $y = $this->y; $m = $this->m; $d = $this->d; $this->days_in_month = cal_days_in_month(0, $m, $y); if (!$mode || $mode == 'month') { $first_day = mktime(0, 0, 0, $m, 1, $y); $title = date('F', $first_day) . ' ' . $y; $day_of_week = date('w', $first_day); $days_array = range(1, $this->days_in_month); $start = $first_day; $end = mktime(23, 59, 59, $m, $this->days_in_month, $y); $next = strtotime('+1 month', $first_day); $next_5 = strtotime('+5 month', $first_day); $prev = strtotime('-1 month', $first_day); $prev_5 = strtotime('-5 month', $first_day); } elseif ($mode == 'week') { $day_of_week = date('w', $date); $first_day = date('j', strtotime('-' . $day_of_week . ' day', $date)); $start = strtotime('-' . $day_of_week, $date); $end = strtotime('+' . (6 - $day_of_week), $date); $title = $CFG->cal_week_from . ' ' . date($CFG->default_date_format, strtotime('-' . $day_of_week . ' day', $date)) . ' ' . $CFG->cal_week_until . ' ' . date($CFG->default_date_format, strtotime('+' . (6 - $day_of_week) . ' day', $date)); $next = strtotime('+1 week', $first_day); $next_5 = strtotime('+5 week', $first_day); $prev = strtotime('-1 week', $first_day); $prev_5 = strtotime('-5 week', $first_day); for ($i = 0; $i <= 6; $i++) { $days_array[] = date('j', strtotime("+{$i} day", $start)); } } elseif ($mode == 'day') { $refer_mode = $_REQUEST['cal_' . $this->i . '_refer_mode']; $s_hour = $this->start_time ? $this->start_time : 0; $e_hour = $this->end_time ? $this->end_time : 23; $start = mktime(0, 0, 0, $m, $d, $y); $end = mktime(23, 59, 59, $m, $d, $y); $title = date('D F j, Y', $start); $next = strtotime('+1 day', $start); $next_5 = strtotime('+5 day', $start); $prev = strtotime('-1 day', $start); $prev_5 = strtotime('-5 day', $start); $days_array[] = $this->date; } $this->data = self::get($start, $end); if (!$this->print) { $day_class = $mode == 'day' ? 'calendar_day' : ''; $HTML = "\n\t\t\t<div class=\"area full_box calendar {$class} {$day_class}\" id=\"cal_{$this->i}\">\n\t\t\t\t<h2>{$title}</h2>\n\t\t\t\t<div class=\"box_bar\"></div>\n\t\t\t\t<div class=\"box_tl\"></div>\n\t\t\t\t<div class=\"box_tr\"></div>\n\t\t\t\t<div class=\"box_bl\"></div>\n\t\t\t\t<div class=\"box_br\"></div>\n\t\t\t\t<div class=\"t_shadow\"></div>\n\t\t\t\t<div class=\"r_shadow\"></div>\n\t\t\t\t<div class=\"b_shadow\"></div>\n\t\t\t\t<div class=\"l_shadow\"></div>\n\t\t\t\t<div class=\"box_b\"></div>\n\t\t\t\t<div class=\"grid_buttons\"><div class=\"button before\"></div>"; if (is_array($this->add_buttons)) { foreach ($this->add_buttons as $button) { $string = $button['table']; if (substr($string, -1) == 's') { $string = substr($string, 0, -1); } $HTML .= Link::url($button['table'], '<div class="add_new"></div>' . $CFG->add_new_caption . ' ' . ucfirst($string), '&action=form&is_tab=' . $button['is_tab'], false, false, $button['target_elem_id'], 'button'); } } $HTML .= (User::permission(0, 0, $CFG->url) > 1 ? "<a href=\"#\" onclick=\"saveCalOrder()\" class=\"button\"><div class=\"save\"></div> {$CFG->save_caption}</a>" : '') . '<a href="#" onclick="printCal(' . $this->i . ')" class="button"><div class="print"></div>' . $CFG->print_caption . '</a>'; if ($this->mode_switching && ($mode == 'day' || $mode == 'week')) { $HTML .= Link::url($CFG->url, '<div class="cal_icon"></div>' . $CFG->cal_view_month, false, array('cal_' . $this->i . '_y' => date('Y', $start), 'cal_' . $this->i . '_m' => date('n', $start), 'cal_bypass' => 1, 'bypass' => 1, 'cal_' . $this->i . '_mode' => 'month'), true, 'cal_' . $this->i, 'button'); } $HTML .= ' <div class="button after"></div></div><div class="contain">' . Link::url($CFG->url, 'hidden', false, array('cal_' . $this->i . '_y' => $this->y, 'cal_' . $this->i . '_m' => $this->m, 'cal_' . $this->i . '_d' => $this->d, 'cal_bypass' => 1, 'bypass' => 1, 'mode' => $mode, 'print' => 1), true, false, 'cal_print_link', false, '_blank') . "\n\t\t\t\t<table cellspacing=\"0\">\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan=\"" . (!$mode || $mode == 'month' ? 7 : ($mode == 'week' ? 8 : 2)) . "\">\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<div onclick=\"synchCalDates(" . date('Y', $prev_5) . "," . date('n', $prev_5) . "," . date('j', $prev_5) . ")\" class=\"n1 n\">" . Link::url($CFG->url, '<<', false, array('cal_' . $this->i . '_y' => date('Y', $prev_5), 'cal_' . $this->i . '_m' => date('n', $prev_5), 'cal_' . $this->i . '_d' => date('j', $prev_5), 'cal_bypass' => 1, 'bypass' => 1, 'mode' => $mode), true, 'cal_' . $this->i) . "</div>\n\t\t\t\t\t\t\t<div onclick=\"synchCalDates(" . date('Y', $prev) . "," . date('n', $prev) . "," . date('j', $prev) . ")\" class=\"n2 n\">" . Link::url($CFG->url, '<', false, array('cal_' . $this->i . '_y' => date('Y', $prev), 'cal_' . $this->i . '_m' => date('n', $prev), 'cal_' . $this->i . '_d' => date('j', $prev), 'cal_bypass' => 1, 'bypass' => 1, 'mode' => $mode), true, 'cal_' . $this->i) . "</div>\n\t\t\t\t\t\t\t<div onclick=\"synchCalDates(" . date('Y', time()) . "," . date('n', time()) . "," . date('j', time()) . ")\" class=\"n_today n\">" . Link::url($CFG->url, $CFG->cal_today, false, array('cal_' . $this->i . '_y' => date('Y', time()), 'cal_' . $this->i . '_m' => date('n', time()), 'cal_' . $this->i . '_d' => date('j', time()), 'cal_bypass' => 1, 'bypass' => 1, 'mode' => $mode), true, 'cal_' . $this->i) . "</div>\n\t\t\t\t\t\t\t<div onclick=\"synchCalDates(" . date('Y', $next) . "," . date('n', $next) . "," . date('j', $next) . ")\" class=\"n3 n\">" . Link::url($CFG->url, '>', false, array('cal_' . $this->i . '_y' => date('Y', $next), 'cal_' . $this->i . '_m' => date('n', $next), 'cal_' . $this->i . '_d' => date('j', $next), 'cal_bypass' => 1, 'bypass' => 1, 'mode' => $mode), true, 'cal_' . $this->i) . "</div>\n\t\t\t\t\t\t\t<div onclick=\"synchCalDates(" . date('Y', $next_5) . "," . date('n', $next_5) . "," . date('j', $next_5) . ")\" class=\"n4 n\">" . Link::url($CFG->url, '>>', false, array('cal_' . $this->i . '_y' => date('Y', $next_5), 'cal_' . $this->i . '_m' => date('n', $next_5), 'cal_' . $this->i . '_d' => date('j', $next_5), 'cal_bypass' => 1, 'bypass' => 1, 'mode' => $mode), true, 'cal_' . $this->i) . "</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</th>\n\t\t\t\t</tr>\n\t\t\t"; if ($this->tokenizers && $this->mode == 'day') { foreach ($this->tokenizers as $t_name => $t_values) { if (is_array($t_values)) { $HTML .= '<tr><td class="datasets" colspan="' . (!$mode || $mode == 'month' ? 7 : ($mode == 'week' ? 8 : 2)) . '">'; foreach ($t_values as $t_value) { $HTML .= '<div>' . $t_value . '</div>'; } $HTML .= "</td></tr>"; } } } if (!$mode || $mode == 'month') { $alt = $alt ? '' : 'class="alt"'; $HTML .= "\n\t\t\t\t\t<tr {$alt}>\n\t\t\t\t\t\t<td class=\"c_day\">{$CFG->cal_sun}</td>\n\t\t\t\t\t\t<td class=\"c_day\">{$CFG->cal_mon}</td>\n\t\t\t\t\t\t<td class=\"c_day\">{$CFG->cal_tue}</td>\n\t\t\t\t\t\t<td class=\"c_day\">{$CFG->cal_wed}</td>\n\t\t\t\t\t\t<td class=\"c_day\">{$CFG->cal_thur}</td>\n\t\t\t\t\t\t<td class=\"c_day\">{$CFG->cal_fri}</td>\n\t\t\t\t\t\t<td class=\"c_day\">{$CFG->cal_sat}</td>\n\t\t\t\t\t</tr>"; $day_count = 1; $HTML .= "<tr>"; $i = $day_of_week; while ($i > 0) { $HTML .= '<td class="inactive"></td>'; $i--; $day_count++; } foreach ($days_array as $day_num) { $events = self::getEvents(false, false, $day_num); $current = $day_num == date('j') && $m == date('n') && $y == date('Y') ? 'current' : ''; $HTML .= "\n\t\t\t\t\t<td class=\"{$current}\" onmouseover=\"calCellHover(this)\" onmouseout=\"calCellOut(this)\" onclick=\"calZoomDay({$this->i},'{$CFG->url}',{$CFG->is_tab},{$y},{$m},{$day_num})\">\n\t\t\t\t\t\t<div class=\"wrap\">\n\t\t\t\t\t\t\t<div class=\"day_num\">{$day_num}</div>"; if (is_array($events)) { foreach ($events as $k => $dataset) { @reset($this->tokenizers); $tk = @key($this->tokenizers); if (count($this->tokenizers[$tk]) > 1) { $HTML .= '<div class="token_label">' . $this->tokenizers[$tk][$k] . '</div>'; } $HTML .= self::showEvents($dataset, false, false, false, $day_num, false, $k); } } $HTML .= "\n\t\t\t\t\t\t</div>\n\t\t\t\t\t </td>"; $day_count++; if ($day_count > 7) { $HTML .= "</tr><tr>"; $day_count = 1; } } while ($day_count > 1 && $day_count <= 7) { $HTML .= '<td class="inactive"></td>'; $day_count++; } $HTML .= '</tr>'; } elseif ($mode == 'week') { $alt = $alt ? '' : 'class="alt"'; $HTML .= "\n\t\t\t\t<tr {$alt}>\n\t\t\t\t\t<td class=\"c_day\"></td>\n\t\t\t\t\t<td class=\"c_day\">'.{$CFG->cal_sun}.'</td>\n\t\t\t\t\t<td class=\"c_day\">'.{$CFG->cal_mon}.'</td>\n\t\t\t\t\t<td class=\"c_day\">'.{$CFG->cal_tue}.'</td>\n\t\t\t\t\t<td class=\"c_day\">'.{$CFG->cal_web}.'</td>\n\t\t\t\t\t<td class=\"c_day\">'.{$CFG->cal_thur}.'</td>\n\t\t\t\t\t<td class=\"c_day\">'.{$CFG->cal_fri}.'</td>\n\t\t\t\t\t<td class=\"c_day\">'.{$CFG->cal_sat}.'</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>"; foreach ($days_array as $day_num) { $events = self::getEvents(false, false, $day_num); reset($events); $first_key = key($events); $current = $day_num == date('j') && $m == date('n') && $y == date('Y') ? 'current' : ''; $HTML .= "\n\t\t\t\t\t<td class=\"{$current}\" onmouseover=\"calCellHover(this)\" onmouseout=\"calCellOut(this)\" onclick=\"calZoomDay({$this->i},'{$CFG->url}',{$CFG->is_tab},{$y},{$m},{$day_num})\">\n\t\t\t\t\t\t<div class=\"wrap\">\n\t\t\t\t\t\t\t<div class=\"day_num\">{$day_num}</div> \n\t\t\t\t\t\t\t" . self::showEvents($events[$first_key], false, false, false, $day_num) . "\n\t\t\t\t\t\t</div>\n\t\t\t\t\t </td>"; } $HTML .= '</tr>'; } elseif ($mode == 'day') { $hour = 0; while ($hour <= 23) { $alt = $alt ? '' : 'class="alt"'; $HTML .= ' <tr ' . $alt . '> <td class="time" rowspan="2"> ' . date($CFG->default_time_format, strtotime("{$y}-{$m}-{$d} {$hour}:00:00")) . ' </td>'; $HTML .= '<td class="row"></td></tr><tr ' . $alt . '><td class="row"></td></tr>'; $hour++; } } $HTML .= "</table>"; } if ($mode == 'day') { $events = self::getEvents(false, false, $d); if (is_array($events)) { if (!$this->print) { $container_width = count($events) * $this->click_width + 2; $HTML .= '<div class="all_floats ' . (!$this->tokenizers ? 'one_float' : '') . '" style="width:' . $container_width . 'px">'; $j = 0; foreach ($events as $k => $dataset) { $margin_left = $j * $this->click_width; $HTML .= ' <div class="float_contain ' . ($this->tokenizers ? 'float_topspace' : '') . '" id="float_contain_' . $k . '" style="margin-left:' . $margin_left . 'px"> <input type="hidden" id="record_id" value="' . $k . '"/> ' . self::showEvents($dataset, 1, false, false, $d, 1, $k) . ' </div>'; $j++; } $HTML .= ' <script type="text/javascript"> initializeCalFloats(); </script>'; $HTML .= '</div>'; } else { $i = 0; if ($this->tokenizers) { $tokenizers = $this->tokenizers; $first_key = key($tokenizers); $labels = $tokenizers[$first_key]; } foreach ($events as $k => $dataset) { if (is_array($dataset)) { if ($labels) { $HTML .= '<div class="print_caption">' . current($labels) . '</div>'; } } $HTML .= $this->printEvents($dataset, false, false, $d, $k); $HTML .= '<div class="page-break"></div>'; @next($labels); $i++; } unset($labels); } } } $HTML .= '<div class="clear"></div></div></div>'; if (!$_REQUEST['cal_bypass']) { self::show_filters(); /* if ($this->mode == 'day' && !$this->print) { echo ' <div class="grid_operations"> <span class="button" onclick="saveCalOrder()">'.$CFG->save_icon.' '.$CFG->save_button.'</span> <span class="button" onclick="printCal('.$this->i.')">'.$CFG->print_icon.' '.$CFG->print_button.'</span> <div class="clear"></div> </div>'; } */ } self::show_errors(); echo $HTML; }
private function displayItems($tables, $rows = false, $f_id = 0, $level = 1, $p_id = 0) { global $CFG; $pm_method = $CFG->pm_editor ? ' class="pm_method"' : ''; if ($tables) { $parent_id = $rows ? $p_id : $f_id; $this->levels[$level][$parent_id] = $parent_id; $HTML = ''; foreach ($tables as $name => $properties) { $HTML .= "<ul id=\"mlist_{$this->i}_level_{$level}_{$parent_id}\" class=\"mlist_{$this->i}_level_{$level}\">"; $properties['url'] = empty($properties['url']) ? $CFG->url : $properties['url']; $properties['url_is_tab'] = empty($properties['url_is_tab']) ? $CFG->is_tab : $properties['url_is_tab']; if (!empty($properties['parent']) && $f_id == 0) { continue; } $HTML .= "<input id=\"table\" type=\"hidden\" name=\"table\" value=\"{$name}\" />"; $HTML .= "<input id=\"enabled\" type=\"hidden\" name=\"enabled\" value=\"{$this->dragdrop}\" />"; $HTML .= "<input id=\"p_id\" type=\"hidden\" name=\"p_id\" value=\"{$p_id}\" />"; $HTML .= "<input id=\"f_id\" type=\"hidden\" name=\"f_id\" value=\"{$f_id}\" />"; if ($CFG->pm_editor) { $HTML .= Form::peLabel($properties['method_id'], 'addTable'); } $table = $rows ? $rows : DB::getCats($name, $f_id); if ($table) { foreach ($table as $id => $row) { $hidden = $row['row']['hidden'] == 'Y' ? 'hidden' : ''; $HTML .= "<li id=\"{$row['row']['id']}\" class=\"li_{$level} ml_li {$hidden}\">"; $HTML .= !empty($row['children']) ? '<div onclick="ml_expand(this)" class="more"></div><div onclick="ml_collapse(this)" class="less"></div>' : ''; $HTML .= "<div class=\"ml_item\">"; if ($CFG->url == 'edit_tabs' && !empty($row['row']['url'])) { $is_tab = $name == 'admin_tabs' ? '1' : '0'; if (User::permission(0, 0, $properties['url'], false, $properties['url_is_tab']) > 1) { $HTML .= '<a class="edit_page" href="index.php?current_url=edit_page&table=' . $name . '&id=' . $row['row']['id'] . '&is_tab=' . $is_tab . '"></a>'; } } if (is_array($properties['table_fields'])) { foreach ($properties['table_fields'] as $field) { $value = Grid::detectData($field, $row['row'][$field], $this->fields[$name]); $HTML .= !empty($properties['url']) ? Link::url($properties['url'], $row['row'][$field], "table={$name}&id={$row['row']['id']}&f_id={$row['row']['f_id']}&p_id={$row['row']['p_id']}&action=record&is_tab=" . $properties['url_is_tab'], false, false, $properties['target_elem_id']) : $value; } $del_function = $CFG->url == 'edit_tabs' ? 'deletePage(this)' : 'ml_delete(this)'; if (User::permission(0, 0, $properties['url'], false, $properties['url_is_tab']) > 1) { $HTML .= Link::url($properties['url'], false, "table={$name}&id={$row['row']['id']}&f_id={$row['row']['f_id']}&p_id={$row['row']['p_id']}&action=record&is_tab=" . $properties['url_is_tab'], false, false, $properties['target_elem_id'], 'view', false, false, false, false, $CFG->view_hover_caption) . Link::url($properties['url'], false, "table={$name}&id={$row['row']['id']}&f_id={$row['row']['f_id']}&p_id={$row['row']['p_id']}&action=form&is_tab=" . $properties['url_is_tab'], false, false, $properties['target_elem_id'], 'edit', false, false, false, false, $CFG->edit_hover_caption) . "<a href=\"#\" class=\"delete\" title=\"{$CFG->delete_hover_caption}\" onclick=\"{$del_function}\" class=\"button\"></a>"; } } else { foreach ($row['row'] as $field) { $HTML .= '<span>' . $field . '</span>'; } } $HTML .= $this->row_end_button ? $this->row_end_button : ''; if (User::permission(0, 0, $properties['url'], false, $properties['url_is_tab']) > 1 && $accepts_children) { $HTML .= $properties['accept_children'] ? Link::url($properties['url'], '<div class="add_new"></div>' . $CFG->add_new_caption, "table={$name}&f_id={$f_id}&p_id={$p_id}&action=form&is_tab=" . $properties['url_is_tab'], false, false, $properties['target_elem_id']) : ''; } $HTML .= '</div>'; if (!empty($row['children'])) { $HTML .= MultiList::displayItems(array($name => $properties), $row['children'], false, $level + 1, $id); } foreach ($this->tables as $name1 => $properties1) { if ($properties1['parent'] == $name) { $HTML .= MultiList::displayItems(array($name1 => $properties1), false, $id, $level + 1); } } $HTML .= '</li>'; } } $HTML .= '</ul>'; $HTML .= "<div class=\"add_elem\">" . Link::url($properties['url'], '<div class="add_new"></div>' . $CFG->add_new_caption, "table={$name}&f_id={$f_id}&p_id={$p_id}&action=form&is_tab=" . $CFG->is_tab, false, false, $properties['target_elem_id']) . "</div>"; } return $HTML; } }