ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilContainerSessionsContentGUI.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2008 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24include_once("./Services/Container/classes/class.ilContainerContentGUI.php");
25
34{
38 protected $tabs;
39
40 protected $force_details = array();
41
46 public function __construct($container_gui_obj)
47 {
48 global $DIC;
49
50 $this->tabs = $DIC->tabs();
51 $this->user = $DIC->user();
52 $this->ctrl = $DIC->ctrl();
53 $lng = $DIC->language();
54
55 parent::__construct($container_gui_obj);
56 $this->lng = $lng;
57 $this->initDetails();
58 }
59
60
68 public function getDetailsLevel($a_session_id)
69 {
70 if ($this->getContainerGUI()->isActiveAdministrationPanel()) {
72 }
73 if (isset($_SESSION['sess']['expanded'][$a_session_id])) {
74 return $_SESSION['sess']['expanded'][$a_session_id];
75 }
76 if (in_array($a_session_id, $this->force_details)) {
77 return self::DETAILS_ALL;
78 } else {
80 }
81 }
82
83
87 public function getMainContent()
88 {
90 $ilTabs = $this->tabs;
91
92 // see bug #7452
93 // $ilTabs->setSubTabActive($this->getContainerObject()->getType().'_content');
94
95
96 include_once 'Services/Object/classes/class.ilObjectListGUIFactory.php';
97
98 $tpl = new ilTemplate(
99 "tpl.container_page.html",
100 true,
101 true,
102 "Services/Container"
103 );
104
105 // Feedback
106 // @todo
107 // $this->__showFeedBack();
108
109 $this->__showMaterials($tpl);
110
111 // @todo: Move this completely to GUI class?
112 /* $this->getContainerGUI()->adminCommands = $this->adminCommands;
113 $this->getContainerGUI()->showAdministrationPanel($tpl);
114 $this->getContainerGUI()->showPossibleSubObjects();
115 $this->getContainerGUI()->showPermanentLink($tpl);*/
116
117 return $tpl->get();
118 }
119
123 public function __showMaterials($a_tpl)
124 {
126
127 $this->items = $this->getContainerObject()->getSubItems($this->getContainerGUI()->isActiveAdministrationPanel());
129
130 $this->initRenderer();
131
132 $output_html = $this->getContainerGUI()->getContainerPageHTML();
133
134 // get embedded blocks
135 if ($output_html != "") {
136 $output_html = $this->insertPageEmbeddedBlocks($output_html);
137 }
138
139 if (is_array($this->items["sess"]) ||
140 $this->items['sess_link']['prev']['value'] ||
141 $this->items['sess_link']['next']['value']) {
142 $this->items['sess'] = ilUtil::sortArray($this->items['sess'], 'start', 'asc', true, false);
143
144 if ($this->items['sess_link']['prev']['value']) {
145 $prefix = $this->renderSessionLimitLink(true);
146 }
147 if ($this->items['sess_link']['next']['value']) {
148 $postfix = $this->renderSessionLimitLink(false);
149 }
150
151 $this->renderer->addTypeBlock("sess", $prefix, $postfix);
152 $this->renderer->setBlockPosition("sess", 1);
153
154 $position = 1;
155
156 foreach ($this->items["sess"] as $item_data) {
157 if (!$this->renderer->hasItem($item_data["child"])) {
158 $html = $this->renderItem($item_data, $position++, true);
159 if ($html != "") {
160 $this->renderer->addItemToBlock("sess", $item_data["type"], $item_data["child"], $html);
161 }
162 }
163 }
164 }
165
166 $pos = $this->getItemGroupsHTML(1);
167
168 if (is_array($this->items["_all"])) {
169 $this->renderer->addCustomBlock("_all", $lng->txt("content"));
170 $this->renderer->setBlockPosition("_all", ++$pos);
171
172 $position = 1;
173
174 foreach ($this->items["_all"] as $item_data) {
175 // #14599
176 if ($item_data["type"] == "sess" || $item_data["type"] == "itgr") {
177 continue;
178 }
179
180 if (!$this->renderer->hasItem($item_data["child"])) {
181 $html = $this->renderItem($item_data, $position++, true);
182 if ($html != "") {
183 $this->renderer->addItemToBlock("_all", $item_data["type"], $item_data["child"], $html);
184 }
185 }
186 }
187 }
188
189 $output_html .= $this->renderer->getHTML();
190
191 $a_tpl->setVariable("CONTAINER_PAGE_CONTENT", $output_html);
192 }
193
198 protected function renderSessionLimitLink($a_previous = true)
199 {
203
204 $lng->loadLanguageModule('crs');
205
206 $tpl = new ilTemplate(
207 'tpl.container_list_item.html',
208 true,
209 true,
210 "Services/Container"
211 );
212 $tpl->setVariable('DIV_CLASS', 'ilContainerListItemOuter');
213 $tpl->setCurrentBlock('item_title_linked');
214
215 if ($a_previous) {
216 $prefp = $ilUser->getPref('crs_sess_show_prev_' . $this->getContainerObject()->getId());
217
218 if ($prefp) {
219 $tpl->setVariable('TXT_TITLE_LINKED', $lng->txt('crs_link_hide_prev_sessions'));
220 $ilCtrl->setParameterByClass(get_class($this->getContainerGUI()), 'crs_prev_sess', (int) !$prefp);
221 $tpl->setVariable('HREF_TITLE_LINKED', $ilCtrl->getLinkTargetByClass(get_class($this->getContainerGUI())));
222 $ilCtrl->clearParametersByClass(get_class($this->getContainerGUI()));
223 } else {
224 $tpl->setVariable('TXT_TITLE_LINKED', $lng->txt('crs_link_show_all_prev_sessions'));
225 $ilCtrl->setParameterByClass(get_class($this->getContainerGUI()), 'crs_prev_sess', (int) !$prefp);
226 $tpl->setVariable('HREF_TITLE_LINKED', $ilCtrl->getLinkTargetByClass(get_class($this->getContainerGUI())));
227 $ilCtrl->clearParametersByClass(get_class($this->getContainerGUI()));
228 }
229 } else {
230 $prefn = $ilUser->getPref('crs_sess_show_next_' . $this->getContainerObject()->getId());
231
232 if ($prefn) {
233 $tpl->setVariable('TXT_TITLE_LINKED', $lng->txt('crs_link_hide_next_sessions'));
234 $ilCtrl->setParameterByClass(get_class($this->getContainerGUI()), 'crs_next_sess', (int) !$prefn);
235 $tpl->setVariable('HREF_TITLE_LINKED', $ilCtrl->getLinkTargetByClass(get_class($this->getContainerGUI())));
236 $ilCtrl->clearParametersByClass(get_class($this->getContainerGUI()));
237 } else {
238 $tpl->setVariable('TXT_TITLE_LINKED', $lng->txt('crs_link_show_all_next_sessions'));
239 $ilCtrl->setParameterByClass(get_class($this->getContainerGUI()), 'crs_next_sess', (int) !$prefn);
240 $tpl->setVariable('HREF_TITLE_LINKED', $ilCtrl->getLinkTargetByClass(get_class($this->getContainerGUI())));
241 $ilCtrl->clearParametersByClass(get_class($this->getContainerGUI()));
242 }
243 }
244 $tpl->parseCurrentBlock();
245
246 return $tpl->get();
247 }
248
249
257 public function addFooterRow($tpl)
258 {
260
261 $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $_GET["ref_id"]);
262
263 $tpl->setCurrentBlock('container_details_row');
264 $tpl->setVariable('TXT_DETAILS', $this->lng->txt('details'));
265 $tpl->parseCurrentBlock();
266 }
267
275 protected function initDetails()
276 {
278
279 if ($_GET['expand']) {
280 if ($_GET['expand'] > 0) {
281 $_SESSION['sess']['expanded'][abs((int) $_GET['expand'])] = self::DETAILS_ALL;
282 } else {
283 $_SESSION['sess']['expanded'][abs((int) $_GET['expand'])] = self::DETAILS_TITLE;
284 }
285 }
286
287 include_once('./Modules/Session/classes/class.ilSessionAppointment.php');
289 $this->force_details = $session;
291 $this->force_details = array($session);
292 }
293 }
294} // END class.ilContainerSessionsContentGUI
user()
Definition: user.php:4
$_GET["client_id"]
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
Parent class of all container content GUIs.
initRenderer()
Init container renderer.
getContainerObject()
Get container object.
getContainerGUI()
Get container GUI object.
renderItem($a_item_data, $a_position=0, $a_force_icon=false, $a_pos_prefix="")
Render an item.
insertPageEmbeddedBlocks($a_output_html)
Insert blocks into container page.
getItemGroupsHTML($a_pos=0)
Get item groups HTML.
clearAdminCommandsDetermination()
cleaer administration commands determination
renderSessionLimitLink($a_previous=true)
Show link to show/hide all previous/next sessions.
getMainContent()
Get content HTML for main column.
getDetailsLevel($a_session_id)
get details level
static lookupLastSessionByCourse($a_ref_id)
@access public
static lookupNextSessionByCourse($a_ref_id)
@access public
special template class to simplify handling of ITX/PEAR
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
$html
Definition: example_001.php:87
global $ilCtrl
Definition: ilias.php:18
$session
global $DIC
Definition: saml.php:7
$ilUser
Definition: imgupload.php:18