ILIAS  release_7 Revision v7.30-3-g800a261c036
ilDclDetailedViewGUI Class Reference
+ Collaboration diagram for ilDclDetailedViewGUI:

Public Member Functions

 __construct (ilObjDataCollectionGUI $a_dcl_object)
 
 executeCommand ()
 
 renderRecord ($editComments=false)
 
 doReplace ($found)
 
 doExtReplace ($found)
 

Protected Member Functions

 offerAlternativeViews ()
 
 renderComments ($edit=false)
 
 determineNextPrevRecords ()
 Find the previous/next record from the current position. More...
 
 renderPrevNextLinks ()
 Determine and return the markup for the previous/next records. More...
 
 renderSelectOptions ()
 Render select options. More...
 
 checkAccess ()
 

Protected Attributes

 $dcl_gui_object
 
 $notes_gui
 
 $table
 
 $tableview_id
 
 $record_obj
 
 $next_record_id = 0
 
 $prev_record_id = 0
 
 $current_record_position = 0
 
 $record_ids = array()
 
 $is_enabled_paging = true
 
 $lng
 

Private Member Functions

 setOptions ($link_name)
 setOptions string $link_name More...
 
 loadSession ()
 If we come from a goto Link we need to build up the session data. More...
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilDclDetailedViewGUI::__construct ( ilObjDataCollectionGUI  $a_dcl_object)
Parameters
ilObjDataCollectionGUI$a_dcl_object

Definition at line 66 of file class.ilDclDetailedViewGUI.php.

References $_GET, $DIC, $lng, $objId, $tpl, determineNextPrevRecords(), ilObjStyleSheet\getContentStylePath(), ilDclCache\getRecordCache(), ilObjStyleSheet\getSyntaxStylePath(), and ilUtil\sendFailure().

67  {
68  global $DIC;
69  $tpl = $DIC['tpl'];
70  $ilCtrl = $DIC['ilCtrl'];
71  $lng = $DIC['lng'];
72  $this->dcl_gui_object = $a_dcl_object;
73  $this->lng = $lng;
74 
75  $this->record_id = (int) $_REQUEST['record_id'];
76  $this->record_obj = ilDclCache::getRecordCache($this->record_id);
77 
78  if (!$this->record_obj->hasPermissionToView((int) $_GET['ref_id'])) {
79  ilUtil::sendFailure('dcl_msg_no_perm_view', true);
80  $ilCtrl->redirectByClass('ildclrecordlistgui', 'listRecords');
81  }
82 
83  // content style (using system defaults)
84  $tpl->setCurrentBlock("SyntaxStyle");
85  $tpl->setVariable("LOCATION_SYNTAX_STYLESHEET", ilObjStyleSheet::getSyntaxStylePath());
86  $tpl->parseCurrentBlock();
87 
88  $tpl->setCurrentBlock("ContentStyle");
89  $tpl->setVariable("LOCATION_CONTENT_STYLESHEET", ilObjStyleSheet::getContentStylePath(0));
90  $tpl->parseCurrentBlock();
91 
92  $this->table = $this->record_obj->getTable();
93 
94  // Comments
95  $repId = $this->dcl_gui_object->getDataCollectionObject()->getId();
96  $objId = (int) $this->record_id;
97  $this->notesGUI = new ilNoteGUI($repId, $objId);
98  $this->notesGUI->enablePublicNotes(true);
99  $this->notesGUI->enablePublicNotesDeletion(true);
100  $ilCtrl->setParameterByClass("ilnotegui", "record_id", $this->record_id);
101  $ilCtrl->setParameterByClass("ilnotegui", "rep_id", $repId);
102 
103  if (isset($_GET['disable_paging']) && $_GET['disable_paging']) {
104  $this->is_enabled_paging = false;
105  }
106  // Find current, prev and next records for navigation
107  if ($this->is_enabled_paging) {
108  $this->determineNextPrevRecords();
109  }
110  }
static getContentStylePath($a_style_id, $add_random=true, $add_token=true)
get content style path
$_GET["client_id"]
$objId
Definition: xapitoken.php:39
Notes GUI class.
static getRecordCache($record_id=0)
global $DIC
Definition: goto.php:24
static getSyntaxStylePath()
get syntax style path
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
determineNextPrevRecords()
Find the previous/next record from the current position.
+ Here is the call graph for this function:

Member Function Documentation

◆ checkAccess()

ilDclDetailedViewGUI::checkAccess ( )
protected
Returns
bool

Definition at line 412 of file class.ilDclDetailedViewGUI.php.

References $tableview_id, and ilDclDetailedViewDefinition\isActive().

Referenced by executeCommand().

413  {
414  return ilObjDataCollectionAccess::hasAccessTo(filter_input(INPUT_GET, 'ref_id'), $this->table->getId(), $this->tableview_id)
415  && ilDclDetailedViewDefinition::isActive($this->tableview_id);
416  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ determineNextPrevRecords()

ilDclDetailedViewGUI::determineNextPrevRecords ( )
protected

Find the previous/next record from the current position.

Also determine position of current record in whole set.

Definition at line 318 of file class.ilDclDetailedViewGUI.php.

References $_SESSION, and loadSession().

Referenced by __construct().

319  {
320  if (!isset($_SESSION['dcl_record_ids']) || $_SESSION['dcl_table_id'] != $this->table->getId()) {
321  $this->loadSession();
322  }
323 
324  if (isset($_SESSION['dcl_record_ids']) && count($_SESSION['dcl_record_ids'])) {
325  $this->record_ids = $_SESSION['dcl_record_ids'];
326  foreach ($this->record_ids as $k => $recId) {
327  if ($recId == $this->record_id) {
328  if ($k != 0) {
329  $this->prev_record_id = $this->record_ids[$k - 1];
330  }
331  if (($k + 1) < count($this->record_ids)) {
332  $this->next_record_id = $this->record_ids[$k + 1];
333  }
334  $this->current_record_position = $k + 1;
335  break;
336  }
337  }
338  }
339  }
loadSession()
If we come from a goto Link we need to build up the session data.
$_SESSION["AccountId"]
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ doExtReplace()

ilDclDetailedViewGUI::doExtReplace (   $found)
Parameters
$found
Returns
string

Definition at line 264 of file class.ilDclDetailedViewGUI.php.

References $tpl, ilDclCache\getRecordCache(), ilObjDataCollectionAccess\hasWriteAccess(), and ilUtil\sendInfo().

265  {
266  $ref_rec_ids = $this->record_obj->getRecordFieldValue($this->currentField->getId());
267  if (!is_array($ref_rec_ids)) {
268  $ref_rec_ids = array($ref_rec_ids);
269  }
270  if (!count($ref_rec_ids) || !$ref_rec_ids) {
271  return;
272  }
273  $ref_recs = array();
274  foreach ($ref_rec_ids as $ref_rec_id) {
275  $ref_recs[] = ilDclCache::getRecordCache($ref_rec_id);
276  }
277  $field = $ref_recs[0]->getTable()->getFieldByTitle($found[1]);
278 
279  $tpl = new ilTemplate("tpl.reference_list.html", true, true, "Modules/DataCollection");
280  $tpl->setCurrentBlock("reference_list");
281 
282  if (!$field) {
283  if (ilObjDataCollectionAccess::hasWriteAccess($this->dcl_gui_object->ref_id)) {
284  ilUtil::sendInfo("Bad Viewdefinition at [ext tableOf=\"" . $found[1] . "\" ...]", true);
285  }
286 
287  return;
288  }
289 
290  foreach ($ref_recs as $ref_record) {
291  $tpl->setCurrentBlock("reference");
292  $tpl->setVariable("CONTENT", $ref_record->getRecordFieldHTML($field->getId()));
293  $tpl->parseCurrentBlock();
294  }
295 
296  //$ref_rec->getRecordFieldHTML($field->getId())
297  if ($field) {
298  return $tpl->get();
299  }
300  }
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static getRecordCache($record_id=0)
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
+ Here is the call graph for this function:

◆ doReplace()

ilDclDetailedViewGUI::doReplace (   $found)
Parameters
$found
Returns
array|string

Definition at line 253 of file class.ilDclDetailedViewGUI.php.

References setOptions().

254  {
255  return $this->record_obj->getRecordFieldSingleHTML($this->currentField->getId(), $this->setOptions($found[1]));
256  }
setOptions($link_name)
setOptions string $link_name
+ Here is the call graph for this function:

◆ executeCommand()

ilDclDetailedViewGUI::executeCommand ( )

Definition at line 113 of file class.ilDclDetailedViewGUI.php.

References $_GET, $DIC, checkAccess(), offerAlternativeViews(), and ilUtil\sendFailure().

114  {
115  global $DIC;
116  $ilCtrl = $DIC['ilCtrl'];
117  $this->tableview_id = $_GET['tableview_id'] ? $_GET['tableview_id'] : $this->table->getFirstTableViewId($_GET['ref_id']);
118  $ilCtrl->setParameter($this, 'tableview_id', $this->tableview_id);
119  $ilCtrl->setParameter($this->dcl_gui_object, 'tableview_id', $_GET['back_tableview_id'] ? $_GET['back_tableview_id'] : $this->tableview_id);
120 
121  if (!$this->checkAccess()) {
122  if ($this->table->getVisibleTableViews($_GET['ref_id'], true)) {
123  $this->offerAlternativeViews();
124  } else {
125  ilUtil::sendFailure($this->lng->txt('permission_denied'), true);
126  }
127 
128  return;
129  }
130 
131  $cmd = $ilCtrl->getCmd();
132  $cmdClass = $ilCtrl->getCmdClass();
133  switch ($cmdClass) {
134  case 'ilnotegui':
135  $ilCtrl->forwardCommand($this->notesGUI);
136  break;
137  default:
138  $this->$cmd();
139  break;
140  }
141  }
$_GET["client_id"]
global $DIC
Definition: goto.php:24
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
+ Here is the call graph for this function:

◆ loadSession()

ilDclDetailedViewGUI::loadSession ( )
private

If we come from a goto Link we need to build up the session data.

Definition at line 400 of file class.ilDclDetailedViewGUI.php.

Referenced by determineNextPrevRecords().

401  {
402  // We need the default sorting etc. to dertermine on which position we currently are, thus we instantiate the table gui.
403  $list = new ilDclRecordListTableGUI(new ilDclRecordListGUI($this->dcl_gui_object, $this->table->getId()), "listRecords", $this->table, $this->tableview_id);
404  //we then partially load the records. note that this also fills up session data.
405  $this->table->getPartialRecords($list->getOrderField(), $list->getOrderDirection(), $list->getLimit(), $list->getOffset(), $list->getFilter());
406  }
+ Here is the caller graph for this function:

◆ offerAlternativeViews()

ilDclDetailedViewGUI::offerAlternativeViews ( )
protected

Definition at line 144 of file class.ilDclDetailedViewGUI.php.

References $DIC, $tpl, and ilUtil\sendInfo().

Referenced by executeCommand().

145  {
146  global $DIC;
147  $tpl = $DIC['tpl'];
148  ilUtil::sendInfo($this->lng->txt('dcl_msg_info_alternatives'));
149  $table_gui = new ilDclTableViewTableGUI($this, 'renderRecord', $this->table);
150  $tpl->setContent($table_gui->getHTML());
151  }
Class ilDclTableViewTableGUI.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
global $DIC
Definition: goto.php:24
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renderComments()

ilDclDetailedViewGUI::renderComments (   $edit = false)
protected

Definition at line 303 of file class.ilDclDetailedViewGUI.php.

References $DIC.

Referenced by renderRecord().

304  {
305  global $DIC;
306  $this->notesGUI::initJavascript($DIC->ctrl()->getLinkTarget($this));
307  if (!$edit) {
308  return $this->notesGUI->getOnlyCommentsHtml();
309  } else {
310  return $this->notesGUI->editNoteForm();
311  }
312  }
global $DIC
Definition: goto.php:24
+ Here is the caller graph for this function:

◆ renderPrevNextLinks()

ilDclDetailedViewGUI::renderPrevNextLinks ( )
protected

Determine and return the markup for the previous/next records.

Returns
string

Definition at line 347 of file class.ilDclDetailedViewGUI.php.

References $DIC, $next_record_id, $out, $prev_record_id, and $url.

Referenced by renderRecord().

348  {
349  global $DIC;
350  $ilCtrl = $DIC['ilCtrl'];
351  $ilCtrl->setParameter($this, 'tableview_id', $this->tableview_id);
352  $prevStr = $this->lng->txt('dcl_prev_record');
353  $nextStr = $this->lng->txt('dcl_next_record');
354  $ilCtrl->setParameter($this, 'record_id', $this->prev_record_id);
355  $url = $ilCtrl->getLinkTarget($this, 'renderRecord');
356  $out = ($this->prev_record_id) ? "<a href='{$url}'>{$prevStr}</a>" : "<span class='light'>{$prevStr}</span>";
357  $out .= " | ";
358  $ilCtrl->setParameter($this, 'record_id', $this->next_record_id);
359  $url = $ilCtrl->getLinkTarget($this, 'renderRecord');
360  $out .= ($this->next_record_id) ? "<a href='{$url}'>{$nextStr}</a>" : "<span class='light'>{$nextStr}</span>";
361 
362  return $out;
363  }
global $DIC
Definition: goto.php:24
$url
+ Here is the caller graph for this function:

◆ renderRecord()

ilDclDetailedViewGUI::renderRecord (   $editComments = false)
Parameters
bool$editComments

Definition at line 157 of file class.ilDclDetailedViewGUI.php.

References $_GET, $current_record_position, $DIC, $table, $tpl, ilObjStyleSheet\getEffectiveContentStyleId(), ilLinkButton\getInstance(), ilDclCache\getTableCache(), ilDclRecordEditGUI\REDIRECT_DETAIL, renderComments(), renderPrevNextLinks(), renderSelectOptions(), and setOptions().

158  {
159  global $DIC;
160  $ilTabs = $DIC->tabs();
161  $tpl = $DIC->ui()->mainTemplate();
162  $ilCtrl = $DIC->ctrl();
163 
164  $rctpl = new ilDataCollectionGlobalTemplate("tpl.record_view.html", false, true, "Modules/DataCollection");
165 
166  $ilTabs->setTabActive("id_content");
167 
168  if (!$this->tableview_id) {
169  $ilCtrl->redirectByClass("ildclrecordlistgui", "listRecords");
170  }
171 
172  // see ilObjDataCollectionGUI->executeCommand about instantiation
173  $pageObj = new ilDclDetailedViewDefinitionGUI($this->tableview_id);
174  $pageObj->setStyleId(ilObjStyleSheet::getEffectiveContentStyleId(0, "dcl"));
175 
176  $html = $pageObj->getHTML();
177  $rctpl->addCss("./Services/COPage/css/content.css");
178  $rctpl->fillCssFiles();
179  $table = ilDclCache::getTableCache($this->record_obj->getTableId());
180  foreach ($table->getRecordFields() as $field) {
181  //ILIAS_Ref_Links
182  $pattern = '/\[dcliln field="' . preg_quote($field->getTitle(), "/") . '"\](.*?)\[\/dcliln\]/';
183  if (preg_match($pattern, $html)) {
184  $html = preg_replace($pattern, $this->record_obj->getRecordFieldSingleHTML($field->getId(), $this->setOptions("$1")), $html);
185  }
186 
187  //DataCollection Ref Links
188  $pattern = '/\[dclrefln field="' . preg_quote($field->getTitle(), "/") . '"\](.*?)\[\/dclrefln\]/';
189  if (preg_match($pattern, $html)) {
190  $this->currentField = $field;
191  $html = preg_replace_callback($pattern, array($this, "doReplace"), $html);
192  }
193 
194  $pattern = '/\[ext tableOf="' . preg_quote($field->getTitle(), "/") . '" field="(.*?)"\]/';
195  if (preg_match($pattern, $html)) {
196  $this->currentField = $field;
197  $html = preg_replace_callback($pattern, array($this, "doExtReplace"), $html);
198  }
199 
200  $html = str_ireplace("[" . $field->getTitle() . "]", $this->record_obj->getRecordFieldSingleHTML($field->getId()), $html);
201  }
202  foreach ($table->getStandardFields() as $field) {
203  $html = str_ireplace("[" . $field->getId() . "]", $this->record_obj->getRecordFieldSingleHTML($field->getId()), $html);
204  }
205  $rctpl->setVariable("CONTENT", $html);
206 
207  //Permanent Link
208  $tpl->setPermanentLink(
209  'dcl',
210  filter_input(INPUT_GET, 'ref_id', FILTER_VALIDATE_INT),
211  '_' . $this->tableview_id . '_' . $this->record_obj->getId()
212  );
213 
214  // Buttons for previous/next records
215 
216  if ($this->is_enabled_paging) {
217  $prevNextLinks = $this->renderPrevNextLinks();
218  $rctpl->setVariable('PREV_NEXT_RECORD_LINKS', $prevNextLinks);
219  $ilCtrl->clearParameters($this); // #14083
220  $rctpl->setVariable('FORM_ACTION', $ilCtrl->getFormAction($this));
221  $rctpl->setVariable('RECORD', $this->lng->txt('dcl_record'));
222  $rctpl->setVariable('RECORD_FROM_TOTAL', sprintf($this->lng->txt('dcl_record_from_total'), $this->current_record_position, count($this->record_ids)));
223  $rctpl->setVariable('TABLEVIEW_ID', $this->tableview_id);
224  $rctpl->setVariable('SELECT_OPTIONS', $this->renderSelectOptions());
225  }
226 
227  // Edit Button
228  if ($this->record_obj->hasPermissionToEdit((int) $_GET['ref_id'])) {
229  $button = ilLinkButton::getInstance();
230  $ilCtrl->setParameterByClass('ildclrecordeditgui', 'table_id', $this->table->getId());
231  $ilCtrl->setParameterByClass('ildclrecordeditgui', 'tableview_id', $this->tableview_id);
232  $ilCtrl->setParameterByClass('ildclrecordeditgui', 'redirect', ilDclRecordEditGUI::REDIRECT_DETAIL);
233  $ilCtrl->saveParameterByClass('ildclrecordeditgui', 'record_id');
234  $button->setUrl($ilCtrl->getLinkTargetByClass('ildclrecordeditgui', 'edit'));
235  $button->setCaption($this->lng->txt('dcl_edit_record'), false);
236  $rctpl->setVariable('EDIT_RECORD_BUTTON', $button->render());
237  }
238 
239  // Comments
240  if ($this->table->getPublicCommentsEnabled()) {
241  $rctpl->setVariable('COMMENTS', $this->renderComments($editComments));
242  }
243 
244  $tpl->setContent($rctpl->get());
245  }
special template class to simplify handling of ITX/PEAR
renderSelectOptions()
Render select options.
$_GET["client_id"]
Class ilDclDetailedViewDefinitionGUI.
static getTableCache($table_id=0)
setOptions($link_name)
setOptions string $link_name
renderPrevNextLinks()
Determine and return the markup for the previous/next records.
static getEffectiveContentStyleId($a_style_id, $a_type="")
Get effective Style Id.
global $DIC
Definition: goto.php:24
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
+ Here is the call graph for this function:

◆ renderSelectOptions()

ilDclDetailedViewGUI::renderSelectOptions ( )
protected

Render select options.

Returns
string

Definition at line 371 of file class.ilDclDetailedViewGUI.php.

References $out.

Referenced by renderRecord().

372  {
373  $out = '';
374  foreach ($this->record_ids as $k => $recId) {
375  $selected = ($recId == $this->record_id) ? " selected" : "";
376  $out .= "<option value='{$recId}'{$selected}>" . ($k + 1) . "</option>";
377  }
378 
379  return $out;
380  }
+ Here is the caller graph for this function:

◆ setOptions()

ilDclDetailedViewGUI::setOptions (   $link_name)
private

setOptions string $link_name

Definition at line 387 of file class.ilDclDetailedViewGUI.php.

Referenced by doReplace(), and renderRecord().

388  {
389  $options = array();
390  $options['link']['display'] = true;
391  $options['link']['name'] = $link_name;
392 
393  return $options;
394  }
+ Here is the caller graph for this function:

Field Documentation

◆ $current_record_position

ilDclDetailedViewGUI::$current_record_position = 0
protected

Definition at line 48 of file class.ilDclDetailedViewGUI.php.

Referenced by renderRecord().

◆ $dcl_gui_object

ilDclDetailedViewGUI::$dcl_gui_object
protected

Definition at line 20 of file class.ilDclDetailedViewGUI.php.

◆ $is_enabled_paging

ilDclDetailedViewGUI::$is_enabled_paging = true
protected

Definition at line 56 of file class.ilDclDetailedViewGUI.php.

◆ $lng

ilDclDetailedViewGUI::$lng
protected

Definition at line 60 of file class.ilDclDetailedViewGUI.php.

Referenced by __construct().

◆ $next_record_id

ilDclDetailedViewGUI::$next_record_id = 0
protected

Definition at line 40 of file class.ilDclDetailedViewGUI.php.

Referenced by renderPrevNextLinks().

◆ $notes_gui

ilDclDetailedViewGUI::$notes_gui
protected

Definition at line 24 of file class.ilDclDetailedViewGUI.php.

◆ $prev_record_id

ilDclDetailedViewGUI::$prev_record_id = 0
protected

Definition at line 44 of file class.ilDclDetailedViewGUI.php.

Referenced by renderPrevNextLinks().

◆ $record_ids

ilDclDetailedViewGUI::$record_ids = array()
protected

Definition at line 52 of file class.ilDclDetailedViewGUI.php.

◆ $record_obj

ilDclDetailedViewGUI::$record_obj
protected

Definition at line 36 of file class.ilDclDetailedViewGUI.php.

◆ $table

ilDclDetailedViewGUI::$table
protected

Definition at line 28 of file class.ilDclDetailedViewGUI.php.

Referenced by renderRecord().

◆ $tableview_id

ilDclDetailedViewGUI::$tableview_id
protected

Definition at line 32 of file class.ilDclDetailedViewGUI.php.

Referenced by checkAccess().


The documentation for this class was generated from the following file: