* * http://www.radix.net/~cknudsen * * Modified by Mark Peters * * -------------------------------------------- * * This program is free software; you can redistribute it and/or modify it * * under the terms of the GNU General Public License as published by the * * Free Software Foundation; either version 2 of the License, or (at your * * option) any later version. * \**************************************************************************/ /* $Id$ */ class uiholiday { var $debug = False; var $base_url; var $bo; var $template_dir; var $holidays; var $cat_id; var $public_functions = array( 'admin' => True, 'edit_locale' => True, 'edit_holiday' => True, 'add_holiday' => True, 'delete_holiday' => True, 'delete_locale' => True ); function uiholiday() { global $phpgw, $phpgw_info; $phpgw->nextmatchs = CreateObject('phpgwapi.nextmatchs'); $this->bo = CreateObject('calendar.boholiday'); $this->base_url = $this->bo->base_url; $this->template_dir = $phpgw->common->get_tpl_dir('calendar'); } function admin() { global $phpgw, $phpgw_info; unset($phpgw_info['flags']['noheader']); unset($phpgw_info['flags']['nonavbar']); $phpgw_info['flags']['noappfooter'] = True; $phpgw->common->phpgw_header(); $p = CreateObject('phpgwapi.Template',$this->template_dir); $p->set_file(Array('locales'=>'locales.tpl')); $p->set_block('locales','list','list'); $p->set_block('locales','row','row'); $p->set_block('locales','row_empty','row_empty'); $p->set_block('locales','submit_column','submit_column'); $var = Array( 'th_bg' => $phpgw_info['theme']['th_bg'], 'left_next_matchs' => $phpgw->nextmatchs->left('/calendar/'.basename($SCRIPT_FILENAME),$this->bo->start,$this->bo->total), 'right_next_matchs' => $phpgw->nextmatchs->right('/calendar/'.basename($SCRIPT_FILENAME),$this->bo->start,$this->bo->total), 'lang_groups' => lang('Countries'), 'sort_name' => $phpgw->nextmatchs->show_sort_order($this->bo->sort,'locale',$this->bo->order,'/calendar/'.basename($SCRIPT_FILENAME),lang('Country')), 'header_edit' => lang('Edit'), 'header_delete' => lang('Delete'), 'submit_extra' => '', 'submit_link' => lang('Submit to Repository'), 'back_button' => '' ); $p->set_var($var); $p->parse('header_submit','submit_column',False); $locales = $this->bo->get_locale_list($this->bo->sort, $this->bo->order, $this->bo->query, $this->bo->total); @reset($locales); if (!$locales) { $p->set_var('message',lang('No matchs found')); $p->parse('rows','row_empty',True); } else { $p->set_var('submit_extra',' width="5%"'); while (list(,$value) = each($locales)) { $tr_color = $phpgw->nextmatchs->alternate_row_color($tr_color); if (! $value) $value = ' '; $var = Array( 'tr_color' => $tr_color, 'group_name' => $value, 'edit_link' => ' '.lang('Edit').' ', 'delete_link' => ' '.lang('Delete').' ', 'submit_link' => ' '.lang('Submit').' ' ); $p->set_var($var); $p->parse('submit_link_column','submit_column',False); $p->parse('rows','row',True); } } $var = Array( 'new_action' => $phpgw->link($this->base_url,Array('menuaction'=>'calendar.uiholiday.add_holiday','id'=>0)), 'lang_add' => lang('add'), 'search_action' => $phpgw->link($this->base_url,Array('menuaction'=>'calendar.uiholiday.admin')), 'lang_search' => lang('search') ); $p->set_var($var); $p->pparse('out','list'); } function edit_locale() { global $phpgw, $phpgw_info; if(!$this->bo->total && !isset($this->bo->query)) { $link_params = Array( 'menuaction' => 'calendar.uiholiday.admin' ); Header('Location: ' . $phpgw->link($this->base_url,$link_params)); } unset($phpgw_info['flags']['noheader']); unset($phpgw_info['flags']['nonavbar']); $phpgw_info['flags']['noappfooter'] = True; $phpgw->common->phpgw_header(); $p = CreateObject('phpgwapi.Template',$this->template_dir); $p->set_file(Array('locale'=>'locales.tpl')); $p->set_block('locale','list','list'); $p->set_block('locale','row','row'); $p->set_block('locale','row_empty','row_empty'); $p->set_block('locale','back_button_form','back_button_form'); $var = Array( 'th_bg' => $phpgw_info['theme']['th_bg'], 'left_next_matchs' => $phpgw->nextmatchs->left('/calendar/'.basename($SCRIPT_FILENAME),$this->bo->start,$this->bo->total,'&locale='.$this->bo->locales[0]), 'right_next_matchs' => $phpgw->nextmatchs->right('/calendar/'.basename($SCRIPT_FILENAME),$this->bo->start,$this->bo->total,'&locale='.$this->bo->locales[0]), 'lang_groups' => lang('Holidays').' ('.$this->bo->locales[0].')', 'sort_name' => $phpgw->nextmatchs->show_sort_order($this->bo->sort,'name',$this->bo->order,'/calendar/'.basename($SCRIPT_FILENAME),lang('Holiday'),'&locale='.$this->bo->locales[0]), 'header_edit' => lang('Edit'), 'header_delete' => lang('Delete'), 'header_submit' => '', 'submit_link_column' => '' ); $p->set_var($var); $holidays = $this->bo->get_holiday_list(); if (!count($holidays)) { $p->set_var('message',lang('No matchs found')); $p->parse('rows','row_empty',True); } else { for($i=0;$inextmatchs->alternate_row_color($tr_color); if (!$holidays[$i]['name']) { $holidays[$i]['name'] = ' '; } $var = Array( 'tr_color' => $tr_color, 'header_delete'=> lang('Delete'), 'group_name' => $holidays[$i]['name'], 'edit_link' => ' '.lang('Edit').' ', 'delete_link' => ' '.lang('Delete').' ' ); $p->set_var($var); $p->parse('rows','row',True); } } $var = Array( 'new_action' => $phpgw->link($this->base_url,Array('menuaction'=>'calendar.uiholiday.add_holiday','locale'=>$this->bo->locales[0],'id'=>0)), 'lang_add' => lang('add'), 'back_action' => $phpgw->link($this->base_url,Array('menuaction'=>'calendar.uiholiday.admin')), 'lang_back' => lang('Back'), 'search_action'=> $phpgw->link($this->base_url,Array('menuaction'=>'calendar.uiholiday.edit_locale','locale'=>$this->bo->locales[0])), 'lang_search' => lang('search') ); $p->set_var($var); $p->parse('back_button','back_button_form',False); $p->pparse('out','list'); } function edit_holiday() { global $phpgw, $phpgw_info; if(@$this->bo->id) { $holiday = $this->bo->read_entry($this->bo->id); } if(!$holiday || !@$this->bo->id) { Header('Location: ' . $phpgw->link($this->base_url,Array('menuaction'=>'calendar.uiholiday.edit_locale','locale'=>$this->bo->locales[0]))); } unset($phpgw_info['flags']['noheader']); unset($phpgw_info['flags']['nonavbar']); $phpgw_info['flags']['noappfooter'] = True; $phpgw->common->phpgw_header(); $sb = CreateObject('phpgwapi.sbox'); $t = CreateObject('phpgwapi.Template',$this->template_dir); $t->set_file(Array('holiday'=>'holiday.tpl','form_button'=>'form_button_script.tpl')); $t->set_block('holiday','form','form'); $t->set_block('holiday','list','list'); if (@$errorcount) { $message = $phpgw->common->error_list($error); } else { $message = ''; } $var = Array( 'title_holiday'=> lang('Edit').' '.lang('Holiday'), 'message' => $message, 'actionurl' => $phpgw->link($this->base_url,'menuaction=calendar.boholiday.add'), 'hidden_vars' => ''."\n" . ''."\n" ); $t->set_var($var); // Locale $this->display_item($t,lang('Country'),''); // Title/Name $this->display_item($t,lang('title'),''); // Date $this->display_item($t,lang('Date'),$phpgw->common->dateformatorder('',$sb->getMonthText('holiday[month_num]',$holiday['month']),$sb->getDays('holiday[mday]',$holiday['day']))); // Occurence $occur = Array( 0 => '0', 1 => '1st', 2 => '2nd', 3 => '3rd', 4 => '4th', 5 => '5th', 99 => 'Last' ); $out = ''; while(list($key,$value) = each($occur)) { $out .= ''."\n"; } $occurence_html = ''."\n"; $dow = Array( 0 => lang('Sun'), 1 => lang('Mon'), 2 => lang('Tue'), 3 => lang('Wed'), 4 => lang('Thu'), 5 => lang('Fri'), 6 => lang('Sat') ); $out = ''; for($i=0;$i<7;$i++) { $out .= ''."\n"; } $dow_html = ''."\n"; $this->display_item($t,lang('Occurence'),$occurence_html.' '.$dow_html); $this->display_item($t,lang('Observance Rule'),''); $t->set_var('lang_add',lang('Save')); $t->set_var('lang_reset',lang('Reset')); if(@$this->bo->locales[0]) { $link_params = Array( 'menuaction' => 'calendar.uiholiday.edit_locale', 'locale' => $this->bo->locales[0] ); } else { $link_params = Array( 'menuaction' => 'calendar.uiholiday.admin' ); } $var = Array( 'action_url_button' => $phpgw->link($this->base_url,$link_params), 'action_text_button' => lang('Cancel'), 'action_confirm_button' => '', 'action_extra_field' => '' ); $t->set_var($var); $t->parse('cancel_button','form_button'); $t->pparse('out','form'); } function add_holiday($messages='',$holiday='') { global $phpgw, $phpgw_info; unset($phpgw_info['flags']['noheader']); unset($phpgw_info['flags']['nonavbar']); $phpgw_info['flags']['noappfooter'] = True; $phpgw->common->phpgw_header(); $sb = CreateObject('phpgwapi.sbox'); $t = CreateObject('phpgwapi.Template',$this->template_dir); $t->set_file(Array('holiday'=>'holiday.tpl','form_button'=>'form_button_script.tpl')); $t->set_block('holiday','form','form'); $t->set_block('holiday','list','list'); if($messages) { if (is_array($messages)) { $message = $phpgw->common->error_list($messages); } else { $message = ''; } } $var = Array( 'title_holiday' => lang('Add').' '.lang('Holiday'), 'message' => $message, 'actionurl' => $phpgw->link($this->base_url,'menuaction=calendar.boholiday.add'), 'hidden_vars' => ''."\n" . ''."\n" . ''."\n" . ''."\n" ); $t->set_var($var); // Locale if($this->bo->locales[0]) { $holiday['locale'] = $this->bo->locales[0]; } $this->display_item($t,lang('Country'),''); // Title/Name $this->display_item($t,lang('title'),''); // Date $day_html = $sb->getDays('holiday[mday]',$holiday['day']); $month_html = $sb->getMonthText('holiday[month_num]',$holiday['month']); $year_html = ''; $this->display_item($t,lang('Date'),$phpgw->common->dateformatorder($year_html,$month_html,$day_html)); // Occurence $occur = Array( 0 => '0', 1 => '1st', 2 => '2nd', 3 => '3rd', 4 => '4th', 5 => '5th', 99 => 'Last' ); $out = ''; while(list($key,$value) = each($occur)) { $out .= ''."\n"; } $occurence_html = ''."\n"; $dow = Array( 0 => lang('Sun'), 1 => lang('Mon'), 2 => lang('Tue'), 3 => lang('Wed'), 4 => lang('Thu'), 5 => lang('Fri'), 6 => lang('Sat') ); $out = ''; for($i=0;$i<7;$i++) { $out .= ''."\n"; } $dow_html = ''."\n"; $this->display_item($t,lang('Occurence'),$occurence_html.' '.$dow_html); $this->display_item($t,lang('Observance Rule'),''); $t->set_var('lang_add',lang('Save')); $t->set_var('lang_reset',lang('Reset')); if(@$this->bo->locales[0]) { $link_params = Array( 'menuaction' => 'calendar.uiholiday.edit_locale', 'locale' => $this->bo->locales[0] ); } else { $link_params = Array( 'menuaction' => 'calendar.uiholiday.admin' ); } $var = Array( 'action_url_button' => $phpgw->link($this->base_url,$link_params), 'action_text_button' => lang('Cancel'), 'action_confirm_button' => '', 'action_extra_field' => '' ); $t->set_var($var); $t->parse('cancel_button','form_button'); $t->pparse('out','form'); } function delete_locale() { global $phpgw, $phpgw_info; if(!$this->bo->total) { $this->admin(); } unset($phpgw_info['flags']['noheader']); unset($phpgw_info['flags']['nonavbar']); $phpgw_info['flags']['noappfooter'] = True; $phpgw->common->phpgw_header(); $p = CreateObject('phpgwapi.Template',$this->template_dir); $p->set_file(Array('form'=>'delete_common.tpl','form_button'=>'form_button_script.tpl')); $p->set_var('messages',lang('Are you sure you want to delete this Country ?')."
".$this->bo->locales[0]); $var = Array( 'action_url_button' => $phpgw->link($this->base_url,Array('menuaction'=>'calendar.uiholiday.admin')), 'action_text_button' => lang('No'), 'action_confirm_button' => '', 'action_extra_field' => '' ); $p->set_var($var); $p->parse('no','form_button'); $var = Array( 'action_url_button' => $phpgw->link($this->base_url,Array('menuaction'=>'calendar.boholiday.delete_locale','locale'=>$this->bo->locales[0])), 'action_text_button' => lang('Yes'), 'action_confirm_button' => '', 'action_extra_field' => '' ); $p->set_var($var); $p->parse('yes','form_button'); $p->pparse('out','form'); } function delete_holiday() { global $phpgw, $phpgw_info; $holiday = $this->bo->read_entry($this->bo->id); if(!$holiday) { $this->edit_locale(); } unset($phpgw_info['flags']['noheader']); unset($phpgw_info['flags']['nonavbar']); $phpgw_info['flags']['noappfooter'] = True; $phpgw->common->phpgw_header(); $p = CreateObject('phpgwapi.Template',$this->template_dir); $p->set_file(Array('form'=>'delete_common.tpl','form_button'=>'form_button_script.tpl')); $p->set_var('messages',lang('Are you sure you want to delete this holiday ?')."
".$holiday['name'].' ('.$this->bo->locales[0].')'); $var = Array( 'action_url_button' => $phpgw->link($this->base_url,Array('menuaction'=>'calendar.uiholiday.edit_locale','locale'=>$this->bo->locales[0])), 'action_text_button' => lang('No'), 'action_confirm_button' => '', 'action_extra_field' => '' ); $p->set_var($var); $p->parse('no','form_button'); $var = Array( 'action_url_button' => $phpgw->link($this->base_url,Array('menuaction'=>'calendar.boholiday.delete_holiday','locale'=>$this->bo->locales[0],'id'=>$this->bo->id)), 'action_text_button' => lang('Yes'), 'action_confirm_button' => '', 'action_extra_field' => '' ); $p->set_var($var); $p->parse('yes','form_button'); $p->pparse('out','form'); } function submit() { global $phpgw, $phpgw_info; if(!@$this->bo->locales[0]) { $this->admin(); } $holidays = $this->bo->get_holiday_list(); $phpgw_info['flags']['noappheader'] = True; $phpgw_info['flags']['noappfooter'] = True; $phpgw_info['flags']['nofooter'] = True; $phpgw->common->phpgw_header(); echo ''."\n"; if($this->debug) { echo '
'."\n"; } else { echo ''."\n"; } $c_holidays = count($holidays); echo ''."\n"; for($i=0;$i<$c_holidays;$i++) { echo ''."\n" . ''."\n" . ''."\n" . ''."\n" . ''."\n" . ''."\n"; } echo "
\n\n"; } /* private functions */ function display_item(&$p,$field,$data) { $var = Array( 'field' => $field, 'data' => $data ); $p->set_var($var); $p->parse('rows','list',True); } } ?>