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 
24 include_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()) {
71  return self::DETAILS_DEACTIVATED;
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 {
79  return self::DETAILS_TITLE;
80  }
81  }
82 
83 
87  public function getMainContent()
88  {
89  $lng = $this->lng;
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  {
125  $lng = $this->lng;
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  {
200  $lng = $this->lng;
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
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
$_SESSION["AccountId"]
global $DIC
Definition: saml.php:7
$_GET["client_id"]
$session
getItemGroupsHTML($a_pos=0)
Get item groups HTML.
initRenderer()
Init container renderer.
getMainContent()
Get content HTML for main column.
user()
Definition: user.php:4
insertPageEmbeddedBlocks($a_output_html)
Insert blocks into container page.
Parent class of all container content GUIs.
global $ilCtrl
Definition: ilias.php:18
getDetailsLevel($a_session_id)
get details level
renderSessionLimitLink($a_previous=true)
Show link to show/hide all previous/next sessions.
getContainerGUI()
Get container GUI object.
special template class to simplify handling of ITX/PEAR
getContainerObject()
Get container object.
$ilUser
Definition: imgupload.php:18
renderItem($a_item_data, $a_position=0, $a_force_icon=false, $a_pos_prefix="")
Render an item.
Create styles array
The data for the language used.
clearAdminCommandsDetermination()
cleaer administration commands determination
static lookupLastSessionByCourse($a_ref_id)
public
__construct($container_gui_obj)
Constructor.
$html
Definition: example_001.php:87
static lookupNextSessionByCourse($a_ref_id)
public