array( 'border' => '#1C5FBD', 'body' => '#D2E5FC', ), 'Calls' => array( 'border' => '#DE4040', 'body' => '#FCDCDC', ), 'Tasks' => array( 'border' => '#015900', 'body' => '#B1F5AE', ), ); /** * constructor * @param Calendar $cal * @param string $dashlet_id for dashlet mode */ function __construct(&$cal,$dashlet_id = ""){ $this->cal = &$cal; $this->dashlet_id = $dashlet_id; } /** * main displaying function of Calendar */ public function display(){ global $timedate; $cal = &$this->cal; $ss = new Sugar_Smarty(); $ss->assign('APP',$GLOBALS['app_strings']); $ss->assign('APPLIST',$GLOBALS['app_list_strings']); $ss->assign('MOD',$GLOBALS['cal_strings']); $ss->assign('view',$cal->view); $ss->assign('t_step',$cal->time_step); $ss->assign('current_user_id',$GLOBALS['current_user']->id); $ss->assign('current_user_name',$GLOBALS['current_user']->name); $ss->assign('time_format',$GLOBALS['timedate']->get_user_time_format()); $ss->assign('items_draggable',SugarConfig::getInstance()->get('calendar.items_draggable',true)); $ss->assign('mouseover_expand',SugarConfig::getInstance()->get('calendar.mouseover_expand',true)); $ss->assign('item_text','name'); $ss->assign('cells_per_day',$cal->cells_per_day); $ss->assign('img_edit_inline',SugarThemeRegistry::current()->getImageURL('edit_inline.gif',false)); $ss->assign('img_view_inline',SugarThemeRegistry::current()->getImageURL('view_inline.gif',false)); $ss->assign('img_close',SugarThemeRegistry::current()->getImageURL('close.gif',false)); $ss->assign('dashlet',$cal->dashlet); $ss->assign('grid_start_ts',$cal->grid_start_ts); $ss->assign('celcount',$cal->celcount); if(count($cal->shared_ids)){ $ss->assign('shared_ids',$cal->shared_ids); $ss->assign('shared_users_count',count($cal->shared_ids)); } $ss->assign('activity_colors',$this->activity_colors); $ss->assign('scroll_slot',$this->cal->scroll_slot); $ss->assign('editview_width',SugarConfig::getInstance()->get('calendar.editview_width',800)); $ss->assign('editview_height',SugarConfig::getInstance()->get('calendar.editview_height',600)); $ss->assign('a_str',$cal->get_activities_js()); $ss->assign('sugar_body_only',(isset($_REQUEST['to_pdf']) && $_REQUEST['to_pdf'] || isset($_REQUEST['sugar_body_only']) && $_REQUEST['sugar_body_only'])); require_once('include/json_config.php'); global $json; $json = getJSONobj(); $json_config = new json_config(); $ss->assign('GRjavascript',$json_config->get_static_json_server(false, true, 'Meetings')); // form $user_default_date_start = $timedate->asUser($timedate->getNow()); $ss->assign('user_default_date_start',$user_default_date_start); // end form if($_REQUEST['module'] == "Calendar"){ $this->load_settings_template($ss); $settings = "custom/modules/Calendar/tpls/settings.tpl"; if(!file_exists($settings)) $settings = "modules/Calendar/tpls/settings.tpl"; $ss->assign("settings",$settings); } $main = "custom/modules/Calendar/tpls/main.tpl"; if(!file_exists($main)) $main = "modules/Calendar/tpls/main.tpl"; $form_tpl = "custom/modules/Calendar/tpls/form.tpl"; if(!file_exists($form_tpl)) $form_tpl = "modules/Calendar/tpls/form.tpl"; $ss->assign("form",$form_tpl); echo $ss->fetch($main); // drid $grid = new CalendarGrid($cal); echo $grid->display(); // end grid } /** * load settings popup template */ protected function load_settings_template(&$ss){ list($d_start_hour,$d_start_min) = explode(":",$this->cal->day_start_time); list($d_end_hour,$d_end_min) = explode(":",$this->cal->day_end_time); require_once("include/utils.php"); global $app_strings,$app_list_strings,$beanList; global $timedate; $user_default_date_start = $timedate->asUser($timedate->getNow()); if(!isset($time_separator)) $time_separator = ":"; $date_format = $timedate->get_cal_date_format(); $time_format = $timedate->get_user_time_format(); $TIME_FORMAT = $time_format; $t23 = strpos($time_format, '23') !== false ? '%H' : '%I'; if(!isset($match[2]) || $match[2] == '') { $CALENDAR_FORMAT = $date_format . ' ' . $t23 . $time_separator . "%M"; }else{ $pm = $match[2] == "pm" ? "%P" : "%p"; $CALENDAR_FORMAT = $date_format . ' ' . $t23 . $time_separator . "%M" . $pm; } $hours_arr = array (); $num_of_hours = 24; $start_at = 0; $TIME_MERIDIEM = ""; $time_pref = $timedate->get_time_format(); $start_m = ""; if(strpos($time_pref, 'a') || strpos($time_pref, 'A')){ $num_of_hours = 12; $start_at = 1; $start_m = 'am'; if($d_start_hour == 0){ $d_start_hour = 12; $start_m = 'am'; }else if($d_start_hour == 12) $start_m = 'pm'; if($d_start_hour > 12){ $d_start_hour = $d_start_hour - 12; $start_m = 'pm'; } $end_m = 'am'; if($d_end_hour == 0){ $d_end_hour = 12; $end_m = 'am'; }else if($d_end_hour == 12) $end_m = 'pm'; if($d_end_hour > 12){ $d_end_hour = $d_end_hour - 12; $end_m = 'pm'; } if(strpos($time_pref, 'A')){ $start_m = strtoupper($start_m); $end_m = strtoupper($end_m); } $options = strpos($time_pref, 'a') ? $app_list_strings['dom_meridiem_lowercase'] : $app_list_strings['dom_meridiem_uppercase']; $TIME_START_MERIDIEM = get_select_options_with_id($options, $start_m); $TIME_END_MERIDIEM = get_select_options_with_id($options, $end_m); $TIME_START_MERIDIEM = ""; $TIME_END_MERIDIEM = ""; }else{ $TIME_START_MERIDIEM = $TIME_END_MERIDIEM = ""; } for($i = $start_at; $i <= $num_of_hours; $i ++){ $i = $i.""; if (strlen($i) == 1) $i = "0".$i; $hours_arr[$i] = $i; } $TIME_START_HOUR_OPTIONS = get_select_options_with_id($hours_arr, $d_start_hour); $TIME_START_MINUTES_OPTIONS = get_select_options_with_id(array('0'=>'00','15'=>'15','30'=>'30','45'=>'45'), $d_start_min); $TIME_END_HOUR_OPTIONS = get_select_options_with_id($hours_arr, $d_end_hour); $TIME_END_MINUTES_OPTIONS = get_select_options_with_id(array('0'=>'00','15'=>'15','30'=>'30','45'=>'45'), $d_end_min); $ss->assign('day',$_REQUEST['day']); $ss->assign('week',$_REQUEST['week']); $ss->assign('month',$_REQUEST['month']); $ss->assign('year',$_REQUEST['year']); $ss->assign('TIME_START_HOUR_OPTIONS',$TIME_START_HOUR_OPTIONS); $ss->assign('TIME_START_MINUTES_OPTIONS',$TIME_START_MINUTES_OPTIONS); $ss->assign('TIME_START_MERIDIEM',$TIME_START_MERIDIEM); $ss->assign('TIME_END_HOUR_OPTIONS',$TIME_END_HOUR_OPTIONS); $ss->assign('TIME_END_MINUTES_OPTIONS',$TIME_END_MINUTES_OPTIONS); $ss->assign('TIME_END_MERIDIEM',$TIME_END_MERIDIEM); $ss->assign('show_calls',$this->cal->show_calls); $ss->assign('show_tasks',$this->cal->show_tasks); } /** * Get date info string (legacy from old calendar) * @return string */ public function get_date_info($view, $date_time){ $str = ""; global $current_user; $dateFormat = $current_user->getUserDateTimePreferences(); if($view == 'month'){ for($i=0; $iyear; break; case "m": $str .= " ".$date_time->get_month_name(); break; } } }else if($view == 'week' || $view == 'shared') { $first_day = $date_time; $first_day = CalendarUtils::get_first_day_of_week($date_time); $last_day = $first_day->get("+6 days"); for($i=0; $iyear; break; case "m": $str .= " ".$first_day->get_month_name(); break; case "d": $str .= " ".$first_day->get_day(); break; } } $str .= " - "; for($i=0; $iyear; break; case "m": $str .= " ".$last_day->get_month_name(); break; case "d": $str .= " ".$last_day->get_day(); break; } } }else if($view == 'day'){ $str .= $date_time->get_day_of_week()." "; for($i=0; $iyear; break; case "m": $str .= " ".$date_time->get_month_name(); break; case "d": $str .= " ".$date_time->get_day(); break; } } }else if($view == 'year') { $str .= $date_time->year; }else{ sugar_die("echo_date_info: date not supported"); } return $str; } /** * Get link to next date range * @return string */ protected function get_next_calendar(){ global $cal_strings,$image_path; $str = ""; if($_REQUEST['module'] == "Calendar"){ $str .= ""; }else{ $str .= ""; } $str .= $cal_strings["LBL_NEXT_".strtoupper($this->cal->view)]; $str .= "  ".SugarThemeRegistry::current()->getImage("calendar_next", 'align="absmiddle" border="0"' ,null,null,'.gif', '') . ""; //setting alt tag blank on purpose for 508 compliance return $str; } /** * Get link to previous date range * @return string */ protected function get_previous_calendar(){ global $cal_strings,$image_path; $str = ""; if($_REQUEST['module'] == "Calendar"){ $str .= ""; }else{ $str .= ""; } $str .= SugarThemeRegistry::current()->getImage('calendar_previous','align="absmiddle" border="0"', null, null, '.gif', ''); //setting alt tag blank on purpose for 508 compliance $str .= "  ".$cal_strings["LBL_PREVIOUS_".strtoupper($this->cal->view)] . ""; return $str; } /** * display header * @param boolean $controls display ui contol elements */ public function display_calendar_header($controls = true){ global $cal_strings; $ss = new Sugar_Smarty(); $ss->assign("MOD",$cal_strings); $ss->assign("view",$this->cal->view); if($controls){ $current_date = str_pad($this->cal->date_time->month,2,'0',STR_PAD_LEFT)."/".str_pad($this->cal->date_time->day,2,'0',STR_PAD_LEFT)."/".$this->cal->date_time->year; $tabs = array('day', 'week', 'month', 'year', 'shared'); $tabs_params = array(); foreach($tabs as $tab){ $tabs_params[$tab]['title'] = $cal_strings["LBL_".strtoupper($tab)]; $tabs_params[$tab]['id'] = $tab . "_tab"; $tabs_params[$tab]['link'] = "window.location.href='".ajaxLink("index.php?module=Calendar&action=index&view=". $tab . $this->cal->date_time->get_date_str())."'"; } $ss->assign('controls',$controls); $ss->assign('tabs',$tabs); $ss->assign('tabs_params',$tabs_params); $ss->assign('current_date',$current_date); $ss->assign('start_weekday',$GLOBALS['current_user']->get_first_day_of_week()); $ss->assign('cal_img',SugarThemeRegistry::current()->getImageURL("jscalendar.gif",false)); } $ss->assign('previous',$this->get_previous_calendar()); $ss->assign('next',$this->get_next_calendar()); $ss->assign('date_info',$this->get_date_info($this->cal->view,$this->cal->date_time)); $header = "custom/modules/Calendar/tpls/header.tpl"; if(!file_exists($header)) $header = "modules/Calendar/tpls/header.tpl"; echo $ss->fetch($header); } /** * display footer */ public function display_calendar_footer(){ global $cal_strings; $ss = new Sugar_Smarty(); $ss->assign("MOD",$cal_strings); $ss->assign("view",$this->cal->view); $ss->assign('previous',$this->get_previous_calendar()); $ss->assign('next',$this->get_next_calendar()); $footer = "custom/modules/Calendar/tpls/footer.tpl"; if(!file_exists($footer)) $footer = "modules/Calendar/tpls/footer.tpl"; echo $ss->fetch($footer); } /** * display title */ public function display_title(){ global $mod_strings; echo get_module_title("Calendar","»".$mod_strings['LBL_MODULE_TITLE'], false); } /** * display html used in shared view */ public function display_shared_html(){ global $app_strings,$cal_strings,$action; $ss = new Sugar_Smarty(); $ss->assign("APP",$app_strings); $ss->assign("MOD",$cal_strings); $ss->assign("UP",SugarThemeRegistry::current()->getImage('uparrow_big', 'border="0" style="margin-bottom: 1px;"', null, null, '.gif', $app_strings['LBL_SORT'])); $ss->assign("DOWN",SugarThemeRegistry::current()->getImage('downarrow_big', 'border="0" style="margin-top: 1px;"', null, null, '.gif', $app_strings['LBL_SORT'])); if(empty($_REQUEST['edit_shared'])){ $ss->assign("style","display: none"); } $ss->assign("users_options",get_select_options_with_id(get_user_array(false), $this->cal->shared_ids)); $tpl = "modules/Calendar/tpls/shared_users.tpl"; echo $ss->fetch($tpl); } } ?>