5 include_once(
"Services/Block/classes/class.ilBlockGUI.php");
6 include_once
'./Services/Calendar/classes/class.ilCalendarCategories.php';
60 parent::__construct();
62 $this->tabs = $DIC->tabs();
63 $this->obj_data_cache = $DIC[
"ilObjDataCache"];
64 $this->ui = $DIC->ui();
70 $ilHelp = $DIC[
"ilHelp"];
73 $lng->loadLanguageModule(
"dateplaner");
74 $ilHelp->addHelpSection(
"cal_block");
76 include_once(
"./Services/News/classes/class.ilNewsItem.php");
78 $ilCtrl->saveParameter($this,
'bkid');
99 $this->allow_moving =
false;
102 include_once(
'Services/Calendar/classes/class.ilDate.php');
103 include_once(
'Services/Calendar/classes/class.ilCalendarUserSettings.php');
106 if ((!isset(
$_GET[
"seed"]) ||
$_GET[
"seed"] ==
"") &&
109 } elseif (isset(
$_GET[
"seed"])) {
110 $seed_str =
$_GET[
"seed"];
113 if (isset(
$_GET[
"seed"]) &&
$_GET[
"seed"] !=
"") {
118 if ($seed_str ==
"") {
129 $this->display_mode = $mode ?
$mode :
"mmon";
140 return ($this->
settings->getShowWeeks() && $this->user_settings->getShowWeeks());
149 return self::$block_type;
167 $this->parent_gui = $a_val;
187 $this->force_month_view = $a_val;
189 $this->display_mode =
"mmon";
212 $cmd_class =
$ilCtrl->getCmdClass();
214 if ($cmd_class ==
"ilcalendarappointmentgui" ||
215 $cmd_class ==
"ilconsultationhoursgui" ||
216 $_GET[
'cmd'] ==
'showCalendarSubscription') {
240 $next_class =
$ilCtrl->getNextClass();
241 $cmd =
$ilCtrl->getCmd(
"getHTML");
245 switch ($next_class) {
246 case "ilcalendarappointmentgui":
247 include_once(
'./Services/Calendar/classes/class.ilCalendarAppointmentGUI.php');
249 $ilCtrl->forwardCommand($app_gui);
252 case "ilconsultationhoursgui":
253 include_once(
'./Services/Calendar/classes/ConsultationHours/class.ilConsultationHoursGUI.php');
255 $ilCtrl->forwardCommand($hours);
258 case "ilcalendarappointmentpresentationgui":
261 $ilCtrl->forwardCommand($presentation);
264 case "ilcalendarmonthgui":
265 $ilTabs->setSubTabActive(
'app_month');
266 include_once(
'./Services/Calendar/classes/class.ilCalendarMonthGUI.php');
268 $ilCtrl->forwardCommand($month_gui);
272 return $this->$cmd();
283 $this->enable_edit = $a_enable_edit;
293 return $this->enable_edit;
304 $this->
setRowTemplate(
"tpl.pd_event_list.html",
"Services/Calendar");
311 "tpl.calendar_block.html",
333 $target_class = array();
335 $target_class = array(
"ilpersonaldesktopgui",
"ilcalendarpresentationgui");
339 $target_class = array(
"ilobjcoursegui",
"ilcalendarpresentationgui");
343 $target_class = array(
"ilobjgroupgui",
"ilcalendarpresentationgui");
347 return $target_class;
363 include_once(
'Services/Calendar/classes/class.ilCalendarUtil.php');
365 $a_tpl->setCurrentBlock(
'month_header_col');
366 $a_tpl->setVariable(
'TXT_WEEKDAY',
$lng->txt(
"cal_week_abbrev"));
367 $a_tpl->parseCurrentBlock();
369 for (
$i = (
int) $this->user_settings->getWeekStart();
$i < (7 + (int) $this->user_settings->getWeekStart());
$i++) {
370 $a_tpl->setCurrentBlock(
'month_header_col');
372 $a_tpl->parseCurrentBlock();
375 if (isset(
$_GET[
"bkid"])) {
376 $user_id =
$_GET[
"bkid"];
377 $disable_empty =
true;
380 $disable_empty =
false;
382 include_once(
'Services/Calendar/classes/class.ilCalendarSchedule.php');
384 $this->scheduler->addSubitemCalendars(
true);
385 $this->scheduler->calculate();
391 $this->user_settings->getWeekStart()
395 $events = $this->scheduler->getByDay($date,
$ilUser->getTimeZone());
396 $has_events = (bool) count(
$events);
397 if ($has_events || !$disable_empty) {
398 $a_tpl->setCurrentBlock(
'month_col_link');
400 $a_tpl->setCurrentBlock(
'month_col_no_link');
403 if ($disable_empty) {
405 $a_tpl->setVariable(
'DAY_CLASS',
'calminiinactive');
407 $week_has_events =
true;
408 include_once
'Services/Booking/classes/class.ilBookingEntry.php';
411 if ($booking->hasBooked($event[
'event']->getEntryId())) {
412 $a_tpl->setVariable(
'DAY_CLASS',
'calminiapp');
417 } elseif ($has_events) {
418 $week_has_events =
true;
419 $a_tpl->setVariable(
'DAY_CLASS',
'calminiapp');
429 if ($agenda_view_type = (
int)
$_GET[
'cal_agenda_per']) {
432 $a_tpl->setVariable(
'OPEN_DAY_VIEW',
$ilCtrl->getLinkTargetByClass($this->getTargetGUIClassPath(),
''));
434 $a_tpl->setVariable(
'MONTH_DAY', $month_day);
436 $a_tpl->parseCurrentBlock();
439 $a_tpl->setCurrentBlock(
'month_col');
441 include_once(
'./Services/Calendar/classes/class.ilCalendarUtil.php');
443 $a_tpl->setVariable(
'TD_CLASS',
'calminitoday');
445 #elseif(ilDateTime::_equals($date,$this->seed,IL_CAL_DAY)) 447 # $a_tpl->setVariable('TD_CLASS','calmininow'); 450 $a_tpl->setVariable(
'TD_CLASS',
'calministd');
452 $a_tpl->setVariable(
'TD_CLASS',
'calminiprev');
454 $a_tpl->setVariable(
'TD_CLASS',
'calmininext');
457 $a_tpl->parseCurrentBlock();
460 if ($counter
and !($counter % 7)) {
462 $a_tpl->setCurrentBlock(
'week');
467 $a_tpl->parseCurrentBlock();
470 $a_tpl->setCurrentBlock(
'month_row');
472 $a_tpl->parseCurrentBlock();
474 $week_has_events =
false;
477 $a_tpl->setCurrentBlock(
'mini_month');
480 $first_of_month = substr($this->seed->get(
IL_CAL_DATE), 0, 7) .
"-01";
486 $prev_link =
$ilCtrl->getLinkTarget($this,
"setSeed",
"",
true);
490 $next_link =
$ilCtrl->getLinkTarget($this,
"setSeed",
"",
true);
492 $ilCtrl->setParameter($this,
'seed',
"");
498 $b1 =
$ui->factory()->button()->standard(
$lng->txt(
"previous"),
"#")->
withOnLoadCode(
function (
$id) use ($prev_link, $blockgui) {
500 "$('#" .
$id .
"').click(function() { ilBlockJSHandler('block_" . $blockgui->getBlockType() .
501 "_" . $blockgui->getBlockId() .
"','" . $prev_link .
"'); return false;});";
505 $ilCtrl->clearParameterByClass(
"ilcalendarblockgui",
'seed');
506 $month_link =
$ilCtrl->getLinkTarget($this,
"setSeed",
"",
true,
false);
507 $seed_parts = explode(
"-", $this->seed->get(
IL_CAL_DATE));
508 $b2 =
$ui->factory()->button()->month($seed_parts[1] .
"-" . $seed_parts[0])->withOnLoadCode(
function (
$id) use ($month_link, $blockgui) {
509 return "$('#" .
$id .
"').on('il.ui.button.month.changed', function(el, id, month) { var m = month.split('-'); ilBlockJSHandler('block_" . $blockgui->getBlockType() .
510 "_" . $blockgui->getBlockId() .
"','" . $month_link .
"' + '&seed=' + m[1] + '-' + m[0] + '-01'); return false;});";
513 $b3 =
$ui->factory()->button()->standard(
$lng->txt(
"next"),
"#")->
withOnLoadCode(
function (
$id) use ($next_link, $blockgui) {
515 "$('#" .
$id .
"').click(function() { ilBlockJSHandler('block_" . $blockgui->getBlockType() .
516 "_" . $blockgui->getBlockId() .
"','" . $next_link .
"'); return false;});";
520 $vc =
$ui->factory()->viewControl()->section($b1, $b2, $b3);
521 $a_tpl->setVariable(
"VIEW_CTRL_SECTION",
$ui->renderer()->render($vc));
523 $a_tpl->parseCurrentBlock();
533 $lng = $DIC->language();
535 $ui_factory = $DIC->ui()->factory();
536 $ui_renderer = $DIC->ui()->renderer();
539 $gui_path[] =
"ilcalendarsubscriptiongui";
540 $url = $this->ctrl->getLinkTargetByClass($gui_path,
'getModalForSubscription',
"",
true,
false);
542 $roundtrip = $ui_factory->modal()->roundtrip(
'', [])->withAsyncRenderUrl(
$url);
544 $standard_button = $ui_factory->button()->standard(
$lng->txt(
'btn_ical'),
'')->withOnClick(
545 $roundtrip->getShowSignal()
552 $out = $ui_renderer->render($components);
560 '<span class="ilIcalIcon">' .
$out .
'</span>' 584 if (!isset(
$_GET[
"bkid"])) {
596 include_once
"Modules/Course/classes/class.ilCourseParticipants.php";
597 $obj_id = $ilObjDataCache->lookupObjId((
int)
$_GET[
'ref_id']);
599 $users = array_unique(array_merge($participants->getTutors(), $participants->getAdmins()));
601 include_once
'Services/Booking/classes/class.ilBookingEntry.php';
603 foreach (
$users as $user_id) {
604 if (!isset($_GET[
"bkid"])) {
605 include_once
'./Services/Calendar/classes/ConsultationHours/class.ilConsultationHourAppointments.php';
610 $next_app = end($appointments);
611 reset($appointments);
613 foreach ($appointments as $entry) {
618 include_once
'Services/Booking/classes/class.ilBookingEntry.php';
620 if (!in_array($obj_id, $booking_entry->getTargetObjIds())) {
624 if (!$booking_entry->isAppointmentBookableForUser($entry->getEntryId(),
$user->getId())) {
656 $this->cal_footer[] = array(
657 'link' =>
$ilCtrl->getLinkTargetByClass($this->getTargetGUIClassPath(),
'selectCHCalendarOfUser'),
666 $ilCtrl->setParameter($this,
"bkid",
"");
667 $ilCtrl->setParameter($this,
'seed',
'');
669 $ilCtrl->setParameter($this,
"bkid",
"");
674 $ilCtrl->setParameter($this,
"bkid", (
int)
$_GET[
"bkid"]);
680 $ilCtrl->getLinkTarget($this,
"editSettings"),
681 $lng->txt(
"settings")
686 $ret = parent::getHTML();
692 $f = $DIC->ui()->factory()->legacy(
"");
693 $ret .= $DIC->ui()->renderer()->renderAsync(
$f);
708 include_once(
'./Services/Calendar/classes/class.ilCalendarSchedule.php');
710 $events = $schedule->getChangedEvents(
true);
712 $ilCtrl->setParameterByClass(
'ilcalendarinboxgui',
'changed', 1);
713 $link =
'<a href=' .
$ilCtrl->getLinkTargetByClass(
'ilcalendarinboxgui',
'') .
'>';
714 $ilCtrl->setParameterByClass(
'ilcalendarinboxgui',
'changed',
'');
715 $text =
'<div class="small">' . ((int) count(
$events)) .
" " .
$lng->txt(
"cal_changed_events_header") .
"</div>";
718 return $link .
$text . $end_link;
726 $a_content_block->addHeaderCommand(
727 $ilCtrl->getParentReturn($this),
748 elseif (!$cats->getMode()) {
751 (
int)
$_GET[
'ref_id'],
766 $ilTabs->clearSubTabs();
794 $ilCtrl->returnToParent($this);
808 $tpl =
new ilTemplate(
'tpl.show_calendar_subscription.html',
true,
true,
'Services/Calendar');
810 $tpl->setVariable(
'TXT_TITLE',
$lng->txt(
'cal_subscription_header'));
811 $tpl->setVariable(
'TXT_INFO',
$lng->txt(
'cal_subscription_info'));
812 $tpl->setVariable(
'TXT_CAL_URL',
$lng->txt(
'cal_subscription_url'));
814 include_once
'./Services/Calendar/classes/class.ilCalendarAuthenticationToken.php';
816 switch ($this->mode) {
832 $token->setSelectionType($selection);
836 $url = ILIAS_HTTP_PATH .
'/calendar.php?client_id=' . CLIENT_ID .
'&token=' . $hash;
838 $tpl->setVariable(
'VAL_CAL_URL',
$url);
839 $tpl->setVariable(
'VAL_CAL_URL_TXT',
$url);
841 include_once(
"./Services/PersonalDesktop/classes/class.ilPDContentBlockGUI.php");
843 $content_block->setContent(
$tpl->get());
844 $content_block->setTitle(
$lng->txt(
"calendar"));
845 $content_block->addHeaderCommand(
846 $this->ctrl->getParentReturn($this),
847 $lng->txt(
"selected_items_back")
850 return $content_block->getHTML();
856 foreach ((array) $this->cal_footer as $link_info) {
857 $this->tpl->setCurrentBlock(
'data_section');
858 $this->tpl->setVariable(
860 sprintf(
'<a href="%s">%s</a>', $link_info[
'link'], $link_info[
'txt'])
862 $this->tpl->parseCurrentBlock();
868 $this->tpl->setVariable(
"FCOLSPAN", $this->
getColSpan());
869 if ($this->tpl->blockExists(
"block_footer")) {
870 $this->tpl->setCurrentBlock(
"block_footer");
871 $this->tpl->parseCurrentBlock();
888 $lng->txt(
"cal_upcoming_events_header"),
889 $ilCtrl->getLinkTarget($this,
"setPdModeEvents"),
890 $ilCtrl->getLinkTarget($this,
"setPdModeEvents",
"",
true),
894 ($this->display_mode !=
'mmon')
898 $lng->txt(
"app_month"),
899 $ilCtrl->getLinkTarget($this,
"setPdModeMonth"),
900 $ilCtrl->getLinkTarget($this,
"setPdModeMonth",
"",
true),
904 ($this->display_mode ==
'mmon')
909 $ilCtrl->setParameterByClass(
'ilcalendarpresentationgui',
'seed',
'');
911 $lng->txt(
"cal_open_calendar"),
919 $ilCtrl->setParameter($this,
"add_mode",
"");
921 $lng->txt(
"add_appointment"),
922 $ilCtrl->getLinkTargetByClass(
"ilCalendarAppointmentGUI",
"add"),
928 $ilCtrl->setParameter($this,
"add_mode",
"");
939 $ilUser->writePref(
"il_pd_cal_mode",
"evt");
940 $this->display_mode =
"evt";
945 $ilCtrl->redirectByClass(
"ilpersonaldesktopgui",
"show");
954 $ilUser->writePref(
"il_pd_cal_mode",
"mmon");
955 $this->display_mode =
"mmon";
960 $ilCtrl->redirectByClass(
"ilpersonaldesktopgui",
"show");
974 include_once(
'./Services/Calendar/classes/class.ilCalendarSchedule.php');
976 $schedule->addSubitemCalendars(
true);
977 $schedule->setEventsLimit(20);
978 $schedule->calculate();
979 $ev = $schedule->getScheduledEvents();
995 $this->ctrl->setParameter($this,
"app_id", $item[
"event"]->getEntryId());
996 $this->ctrl->setParameter($this,
'dt', $item[
'dstart']);
997 $url = $this->ctrl->getLinkTarget($this,
"getModalForApp",
"",
true,
false);
998 $this->ctrl->setParameter($this,
"app_id",
$_GET[
"app_id"]);
999 $this->ctrl->setParameter($this,
"dt",
$_GET[
"dt"]);
1000 $modal =
$f->modal()->roundtrip(
'', [])->withAsyncRenderUrl(
$url);
1004 $comps = [
$f->button()->shy($item[
"event"]->getPresentationTitle(),
"")->withOnClick($modal->getShowSignal()), $modal];
1005 $renderer =
$ui->renderer();
1006 $shy = $renderer->render($comps);
1010 "title" => $item[
"event"]->getPresentationTitle(),
1012 "shy_button" => $shy
1018 "date" =>
$lng->txt(
"msg_no_search_result"),
1037 $start = $item[
"dstart"];
1038 $end = $item[
"dend"];
1039 if ($item[
"fullday"]) {
1046 return array(
"start" =>
$start,
"end" =>
$end);
1060 $f =
$ui->factory();
1061 $r =
$ui->renderer();
1066 if ($item[
"event"]->getEntryId() == (
int)
$_GET[
"app_id"] && $item[
'dstart'] == (
int)
$_GET[
'dt']) {
1070 include_once(
"./Services/Calendar/classes/class.ilCalendarAppointmentPresentationGUI.php");
1072 $content =
$ilCtrl->getHTML($next_gui);
1075 echo $r->renderAsync($modal);
static _buildMonthDayList($a_month, $a_year, $weekstart)
Build a month day list.
Consultation hours editor.
getDatesForItem($item)
Get start/end date for item.
static _getInstance()
get singleton instance
static _numericDayToString($a_day, $a_long=true)
get
getShowWeeksColumn()
Show weeks column.
setDataSection($a_content)
Call this from overwritten fillDataSection(), if standard row based data is not used.
static getScreenMode()
Get Screen Mode for current command.
const MODE_PERSONAL_DESKTOP_MEMBERSHIP
static _lookupFullname($a_user_id)
Lookup Full Name.
static _getInstanceByUserId($a_user_id)
get singleton instance
static _before(ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
compare two dates and check start is before end This method does not consider tz offsets.
__construct()
Constructor.
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
showCalendarSubscription()
if(!array_key_exists('StateId', $_REQUEST)) $id
setEnableEdit($a_enable_edit=0)
Set EnableEdit.
executeCommand()
execute command
static _getInstance(ilDate $seed, $a_app)
get singleton instance
fillFooterLinks($a_top=false, $a_numinfo="")
Fill footer links.
setEnableNumInfo($a_enablenuminfo)
Set Enable Item Number Info.
const MODE_REPOSITORY_CONTAINER_ONLY
getRepositoryMode()
Get RepositoryMode.
getModalForApp()
Get modal for appointment (see similar code in ilCalendarAgendaListGUI) todo use all this methods fro...
getHTML()
Get bloch HTML code.
setColSpan($a_colspan)
Set Columns Span.
initCategories()
init categories
static _equals(ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
Check if two date are equal.
static lookupBookableUsersForObject($a_obj_id, $a_user_ids)
Consultation hours are offered if 1) consultation hour owner is admin or tutor and no object assignme...
addFooterLink( $a_text, $a_href="", $a_onclick="", $a_block_id="", $a_top=false, $a_omit_separator=false, $a_checked=false)
Add a footer text/link.
returnToUpperContext()
Return to upper context.
fillDataSection()
Fill data section.
setTitle($a_title)
Set Title.
getForceMonthView()
Get force month view.
setBlockId($a_block_id=0)
Set Block Id.
static getAppointments($a_user_id)
Get all appointments.
static _lookupObjId($a_id)
special template class to simplify handling of ITX/PEAR
setAvailableDetailLevels($a_max, $a_min=0)
Set Available Detail Levels.
getParentGUI()
Get parent gui.
addCloseCommand($a_content_block)
static _getInstance($a_usr_id=0)
get singleton instance
static _lookupType($a_id, $a_reference=false)
lookup object type
getBlockId()
Get Block Id.
addSubscriptionBlockCommand()
Add subscription block command.
addBlockCommand( $a_href, $a_text, $a_target="", $a_img="", $a_right_aligned=false, $a_checked=false, $a_html="")
Add Block Command.
setForceMonthView($a_val)
Set force month view.
setLimit($a_limit)
Set Limit.
getTargetGUIClassPath()
Get target gui class path (for presenting the calendar)
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
Administrate calendar appointments.
Calendar blocks, displayed in different contexts, e.g.
getEnableEdit()
Get EnableEdit.
static lookupAuthToken($a_user_id, $a_selection, $a_calendar=0)
getColSpan()
Get Columns Span.
setParentGUI($a_val)
Set parent gui.
This class represents a block method of a block.
Handles calendar authentication tokens for external calendar subscriptions.
addMiniMonth($a_tpl)
Add mini version of monthly overview (Maybe extracted to another class, if used in pd calendar tab...
BlockGUI class for (centered) Content on Personal Desktop.
fillDataSection()
Standard implementation for row based data.
getOverview()
Get overview.
setRowTemplate($a_rowtemplatename, $a_rowtemplatedir="")
Set Row Template Name.
static _isToday($date)
check if a date is today
getCurrentDetailLevel()
Get Current Detail Level.
Represents a list of calendar appointments (including recurring events) for a specific user in a give...
withOnLoadCode(\Closure $binder)
const MODE_PERSONAL_DESKTOP_ITEMS