ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
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  $this->__showMaterials($tpl);
106 
107  return $tpl->get();
108  }
109 
113  public function __showMaterials($a_tpl)
114  {
115  $lng = $this->lng;
116 
117  $this->items = $this->getContainerObject()->getSubItems($this->getContainerGUI()->isActiveAdministrationPanel());
119 
120  $this->initRenderer();
121 
122  $output_html = $this->getContainerGUI()->getContainerPageHTML();
123 
124  // get embedded blocks
125  if ($output_html != "") {
126  $output_html = $this->insertPageEmbeddedBlocks($output_html);
127  }
128 
129  if (is_array($this->items["sess"]) ||
130  $this->items['sess_link']['prev']['value'] ||
131  $this->items['sess_link']['next']['value']) {
132  $this->items['sess'] = ilUtil::sortArray($this->items['sess'], 'start', 'asc', true, false);
133 
134  if ($this->items['sess_link']['prev']['value']) {
135  $prefix = $this->renderSessionLimitLink(true);
136  }
137  if ($this->items['sess_link']['next']['value']) {
138  $postfix = $this->renderSessionLimitLink(false);
139  }
140 
141  $this->renderer->addTypeBlock("sess", $prefix, $postfix);
142  $this->renderer->setBlockPosition("sess", 1);
143 
144  $position = 1;
145 
146  foreach ($this->items["sess"] as $item_data) {
147  if (!$this->renderer->hasItem($item_data["child"])) {
148  $html = $this->renderItem($item_data, $position++, true);
149  if ($html != "") {
150  $this->renderer->addItemToBlock("sess", $item_data["type"], $item_data["child"], $html);
151  }
152  }
153  }
154  }
155 
156  $pos = $this->getItemGroupsHTML(1);
157 
158  if (is_array($this->items["_all"])) {
159  $this->renderer->addCustomBlock("_all", $lng->txt("content"));
160  $this->renderer->setBlockPosition("_all", ++$pos);
161 
162  $position = 1;
163 
164  foreach ($this->items["_all"] as $item_data) {
165  // #14599
166  if ($item_data["type"] == "sess" || $item_data["type"] == "itgr") {
167  continue;
168  }
169 
170  if (!$this->renderer->hasItem($item_data["child"])) {
171  $html = $this->renderItem($item_data, $position++, true);
172  if ($html != "") {
173  $this->renderer->addItemToBlock("_all", $item_data["type"], $item_data["child"], $html);
174  }
175  }
176  }
177  }
178 
179  $output_html .= $this->renderer->getHTML();
180 
181  $a_tpl->setVariable("CONTAINER_PAGE_CONTENT", $output_html);
182  }
183 
188  protected function renderSessionLimitLink($a_previous = true)
189  {
190  $lng = $this->lng;
193 
194  $lng->loadLanguageModule('crs');
195 
196  $tpl = new ilTemplate(
197  'tpl.container_list_item.html',
198  true,
199  true,
200  "Services/Container"
201  );
202  $tpl->setVariable('DIV_CLASS', 'ilContainerListItemOuter');
203  $tpl->setCurrentBlock('item_title_linked');
204 
205  if ($a_previous) {
206  $prefp = $ilUser->getPref('crs_sess_show_prev_' . $this->getContainerObject()->getId());
207 
208  if ($prefp) {
209  $tpl->setVariable('TXT_TITLE_LINKED', $lng->txt('crs_link_hide_prev_sessions'));
210  $ilCtrl->setParameterByClass(get_class($this->getContainerGUI()), 'crs_prev_sess', (int) !$prefp);
211  $tpl->setVariable('HREF_TITLE_LINKED', $ilCtrl->getLinkTargetByClass(get_class($this->getContainerGUI())));
212  $ilCtrl->clearParametersByClass(get_class($this->getContainerGUI()));
213  } else {
214  $tpl->setVariable('TXT_TITLE_LINKED', $lng->txt('crs_link_show_all_prev_sessions'));
215  $ilCtrl->setParameterByClass(get_class($this->getContainerGUI()), 'crs_prev_sess', (int) !$prefp);
216  $tpl->setVariable('HREF_TITLE_LINKED', $ilCtrl->getLinkTargetByClass(get_class($this->getContainerGUI())));
217  $ilCtrl->clearParametersByClass(get_class($this->getContainerGUI()));
218  }
219  } else {
220  $prefn = $ilUser->getPref('crs_sess_show_next_' . $this->getContainerObject()->getId());
221 
222  if ($prefn) {
223  $tpl->setVariable('TXT_TITLE_LINKED', $lng->txt('crs_link_hide_next_sessions'));
224  $ilCtrl->setParameterByClass(get_class($this->getContainerGUI()), 'crs_next_sess', (int) !$prefn);
225  $tpl->setVariable('HREF_TITLE_LINKED', $ilCtrl->getLinkTargetByClass(get_class($this->getContainerGUI())));
226  $ilCtrl->clearParametersByClass(get_class($this->getContainerGUI()));
227  } else {
228  $tpl->setVariable('TXT_TITLE_LINKED', $lng->txt('crs_link_show_all_next_sessions'));
229  $ilCtrl->setParameterByClass(get_class($this->getContainerGUI()), 'crs_next_sess', (int) !$prefn);
230  $tpl->setVariable('HREF_TITLE_LINKED', $ilCtrl->getLinkTargetByClass(get_class($this->getContainerGUI())));
231  $ilCtrl->clearParametersByClass(get_class($this->getContainerGUI()));
232  }
233  }
234  $tpl->parseCurrentBlock();
235 
236  return $tpl->get();
237  }
238 
239 
247  public function addFooterRow($tpl)
248  {
250 
251  $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $_GET["ref_id"]);
252 
253  $tpl->setCurrentBlock('container_details_row');
254  $tpl->setVariable('TXT_DETAILS', $this->lng->txt('details'));
255  $tpl->parseCurrentBlock();
256  }
257 
265  protected function initDetails()
266  {
268 
269  if ($_GET['expand']) {
270  if ($_GET['expand'] > 0) {
271  $_SESSION['sess']['expanded'][abs((int) $_GET['expand'])] = self::DETAILS_ALL;
272  } else {
273  $_SESSION['sess']['expanded'][abs((int) $_GET['expand'])] = self::DETAILS_TITLE;
274  }
275  }
276 
277  include_once('./Modules/Session/classes/class.ilSessionAppointment.php');
279  $this->force_details = $session;
281  $this->force_details = array($session);
282  }
283  }
284 } // 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.
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