ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilObjBibliographicGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 require_once "./Services/Object/classes/class.ilObject2GUI.php";
6 require_once "./Modules/Bibliographic/classes/class.ilBibliographicDetailsGUI.php";
7 
8 
23 {
24 
28  protected $bibl_obj;
29 
37  public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
38  {
39  global $lng, $ilias;
40  $this->lng = $lng;
41  $this->ilias = $ilias;
42 
43  parent::__construct($a_id, $a_id_type, $a_parent_node_id);
44 
45  $lng->loadLanguageModule("bibl");
46  if($a_id > 0)
47  {
48  $this->bibl_obj = $this->object;
49  }
50 
51  }
52 
57  public function getStandardCmd()
58  {
59  return "view";
60  }
61 
66  public function getType()
67  {
68  return "bibl";
69  }
70 
74  public function executeCommand()
75  {
76  global $ilCtrl, $ilTabs, $ilNavigationHistory, $tpl, $lng;
77 
78  // Navigation History
79  $link = $ilCtrl->getLinkTarget($this, $this->getStandardCmd());
80 
81  if($this->object != NULL)
82  {
83  $ilNavigationHistory->addItem($this->object->getRefId(), $link, "bibl");
84  }
85 
86  $next_class = $ilCtrl->getNextClass($this);
87  $this->cmd = $ilCtrl->getCmd();
88 
89 
90  switch($next_class)
91  {
92  case "ilinfoscreengui":
93  $this->prepareOutput();
94  $ilTabs->activateTab("id_info");
95  $this->infoScreenForward();
96  break;
97 
98  case "ilcommonactiondispatchergui":
99  include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
101  $this->ctrl->forwardCommand($gui);
102  break;
103 
104  case "ilpermissiongui":
105  $this->prepareOutput();
106  $ilTabs->activateTab("id_permissions");
107  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
108  $perm_gui = new ilPermissionGUI($this);
109  $this->ctrl->forwardCommand($perm_gui);
110  break;
111 
112  case "ilobjectcopygui":
113  include_once "./Services/Object/classes/class.ilObjectCopyGUI.php";
114  $cp = new ilObjectCopyGUI($this);
115  $cp->setType('bibl');
116 
117  $tpl->getStandardTemplate();
118  $this->ctrl->forwardCommand($cp);
119 
120  break;
121 
122  case "ilobjfilegui":
123  $this->prepareOutput();
124  $ilTabs->setTabActive("id_records");
125  include_once("./Modules/File/classes/class.ilObjFile.php");
126  $file_gui = new ilObjFile($this);
127  $this->ctrl->forwardCommand($file_gui);
128  break;
129 
130  default:
131  return parent::executeCommand();
132  }
133 
134  return true;
135  }
136 
137 
138 
144  public function infoScreen()
145  {
146  $this->ctrl->setCmd("showSummary");
147  $this->ctrl->setCmdClass("ilinfoscreengui");
148  $this->infoScreenForward();
149  }
150 
151 
155  public function infoScreenForward()
156  {
157  global $ilTabs, $ilErr, $lng;
158 
159  if (!$this->checkPermissionBool("visible"))
160  {
161  ilUtil::sendFailure($lng->txt("msg_no_perm_read"), true);
162  $this->ctrl->redirectByClass('ilPersonalDesktopGUI', '');
163  }
164 
165  $ilTabs->activateTab("id_info");
166 
167  include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
168  $info = new ilInfoScreenGUI($this);
169  $info->enablePrivateNotes();
170  $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
171 
172  $this->ctrl->forwardCommand($info);
173  }
174 
175  /*
176  * addLocatorItems
177  */
178  public function addLocatorItems()
179  {
180  global $ilLocator;
181 
182  if (is_object($this->object))
183  {
184  $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, ""), "", $this->node_id);
185  }
186  }
187 
194  public static function _goto($a_target)
195  {
196  global $ilAccess, $ilErr, $ilCtrl;
197 
198  $id = explode("_", $a_target);
199 
200  $ilCtrl->setTargetScript("ilias.php");
201  $ilCtrl->initBaseClass("ilRepositoryGUI");
202  $ilCtrl->setParameterByClass("ilobjbibliographicgui", "ref_id", $id[0]);
203 
204  //Detail-View
205  if($id[1])
206  {
207  $ilCtrl->setParameterByClass("ilobjbibliographicgui", "entryId", $id[1]);
208  $ilCtrl->redirectByClass(array( "ilRepositoryGUI", "ilobjbibliographicgui" ), "showDetails");
209  }
210  else
211  {
212  $ilCtrl->redirectByClass(array( "ilRepositoryGUI", "ilobjbibliographicgui" ), "view");
213  }
214  }
215 
216 
217 
218  /*
219  * initCreationForms
220  */
221  protected function initCreationForms($a_new_type)
222  {
223  global $lng;
224 
225  $forms = parent::initCreationForms($a_new_type);
226 
227  // disabling import
228  unset($forms[self::CFORM_IMPORT]);
229 
230 
231  // Add File-Upload
232  $in_file = new ilFileInputGUI($lng->txt("bibliography file"), "bibliographic_file");
233 
234  $in_file->setSuffixes(array("ris", "bib", "bibtex"));
235 
236  $in_file->setRequired(true);
237  $forms[self::CFORM_NEW]->addItem($in_file);
238  $this->ctrl->saveParameterByClass('ilobjrootfoldergui', 'new_type');
239  $forms[self::CFORM_NEW]->setFormAction($this->ctrl->getFormActionByClass('ilobjrootfoldergui', "save"));
240 
241 
242 
243  return $forms;
244  }
245 
246 
247  /*
248  * Override save method to check (checkInput()) upload file extension
249  */
250  public function save()
251  {
252  global $tpl;
253  $form = $this->initCreationForms($this->getType());
254  if ($form[self::CFORM_NEW]->checkInput()){
255  parent::save();
256 
257  }else{
258  $form = $form[self::CFORM_NEW];
259  $form->setValuesByPost();
260  $tpl->setContent($form->getHtml());
261  }
262 
263  }
264 
268  protected function afterSave(ilObject $a_new_object)
269  {
270  $a_new_object->doUpdate();
271 
272  $this->ctrl->redirect($this, "edit");
273  }
274 
275 
276 
283  public function setTabs()
284  {
285  global $ilAccess, $ilTabs, $lng;
286 
287  // info screen
288  if ($ilAccess->checkAccess('read', "", $this->object->getRefId()))
289  {
290  $ilTabs->addTab("content",
291  $lng->txt("content"),
292  $this->ctrl->getLinkTarget($this, "showContent"));
293  }
294 
295  // info screen
296  if ($ilAccess->checkAccess('visible', "", $this->object->getRefId()))
297  {
298  $ilTabs->addTab("id_info",
299  $lng->txt("info_short"),
300  $this->ctrl->getLinkTargetByClass("ilinfoscreengui", "showSummary"));
301  }
302 
303  // settings
304  if ($ilAccess->checkAccess('write', "", $this->object->getRefId()))
305  {
306  $ilTabs->addTab("settings",
307  $lng->txt("settings"),
308  $this->ctrl->getLinkTarget($this, "editObject"));
309  }
310 
311  // edit permissions
312  if ($ilAccess->checkAccess('edit_permission', "", $this->object->getRefId()))
313  {
314  $ilTabs->addTab("id_permissions",
315  $lng->txt("perm_settings"),
316  $this->ctrl->getLinkTargetByClass("ilpermissiongui", "perm"));
317  }
318 
319 
320  }
321 
322  public function initEditForm(){
323  global $lng;
324 
325  $form = parent::initEditForm();
326 
327 
328  // Add File-Upload
329  $in_file = new ilFileInputGUI($lng->txt("bibliography file"), "bibliographic_file");
330 
331  $in_file->setSuffixes(array("ris", "bib", "bibtex"));
332 
333  $in_file->setRequired(false);
334 
335  $cb_override = new ilCheckboxInputGUI($this->lng->txt("Override Entries"), "override_entries");
336  $cb_override->addSubItem($in_file);
337  $form->addItem($cb_override);
338 
339  $form->setFormAction($this->ctrl->getFormAction($this, "save"));
340 
341  return $form;
342 
343  }
344 
348  protected function initEditCustomForm(ilPropertyFormGUI $a_form)
349  {
350  global $ilTabs;
351 
352  $ilTabs->activateTab("settings");
353 
354  // is_online
355  $cb = new ilCheckboxInputGUI($this->lng->txt("online"), "is_online");
356 
357  $a_form->addItem($cb);
358 
359  }
360 
364  public function getEditFormCustomValues(array &$a_values)
365  {
366  $a_values["is_online"] = $this->object->getOnline();
367 
368  return $a_values;
369  }
370 
371  /*
372  * getBibliographicObject
373  */
374  public function getBibliographicObject()
375  {
376  $obj = new ilObjBibliographic($this->ref_id, true);
377 
378  return $obj;
379  }
380 
381 
382  public function render(){
383  $this->showContent();
384  }
385 
389  public function showContent(){
390  global $ilAccess, $tpl, $lng, $ilToolbar, $ilCtrl, $ilTabs;
391  // if user has read permission and object is online OR user has write permissions
392  if(($ilAccess->checkAccess('read', "", $this->object->getRefId()) && $this->object->getOnline()) || $ilAccess->checkAccess('write', "", $this->object->getRefId())){
393  $ilTabs->setTabActive("content");
394 
395  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
396  $ilToolbar = new ilToolbarGUI();
397  $ilToolbar->addButton($lng->txt("Download Original File"), $ilCtrl->getLinkTargetByClass("ilBibliographicDetailsGUI", "sendFile"));
398 
399  include_once "./Modules/Bibliographic/classes/class.ilBibliographicRecordListTableGUI.php";
400  $table = new ilDataBibliographicRecordListTableGUI($this, $this->cmd);
401  $html = $table->getHTML();
402  $tpl->setContent($html);
403 
404  //Permanent Link
405  $tpl->setPermanentLink("bibl", $this->object->getRefId());
406  }else{
407  $object_title = ilObject::_lookupTitle(ilObject::_lookupObjId($_GET["ref_id"]));
408  ilUtil::sendFailure(sprintf($this->lng->txt("msg_no_perm_read_item"), $object_title), true);
409  //redirect to repository without any parameters
410  unset($_GET);
412  }
413  }
414 
418  public function sendFile(){
419  global $ilAccess, $tpl, $lng;
420  if($ilAccess->checkAccess('read', "", $this->object->getRefId())){
421 
422  $file_path = $this->bibl_obj->getFileAbsolutePath();
423 
424  if($file_path){
425  if(is_file($file_path)){
426  $path_array = explode(DIRECTORY_SEPARATOR, $file_path);
427  $filename = $path_array[sizeof($path_array)-1];
428  ilUtil::deliverFile($file_path, $filename);
429  }else{
430  ilUtil::sendFailure($lng->txt("file_not_found"));
431  $this->showContent($this->bibl_obj);
432  }
433  }
434  }else{
435  ilUtil::sendFailure($this->lng->txt("no_permission"), true);
437  }
438  }
439 
440  public function showDetails() {
441  global $ilAccess, $tpl, $lng;
442  if($ilAccess->checkAccess('read', "", $this->object->getRefId())){
443  $bibGUI = new ilBibliographicDetailsGUI();
444  $bibGUI->showDetails($this->bibl_obj, $_GET['entryId']);
445  }else{
446  ilUtil::sendFailure($this->lng->txt("no_permission"), true);
448  }
449  }
450 
451  public function view(){
452  $this->showContent();
453  }
454 
455 
459  public function updateCustom(ilPropertyFormGUI $a_form)
460  {
461  global $ilUser, $ilAccess, $tpl, $lng;
462  if($ilAccess->checkAccess('write', "", $this->object->getRefId())){
463  if($this->object->getOnline() != $a_form->getInput("is_online")){
464  $this->object->setOnline($a_form->getInput("is_online"));
465  }
466  }else{
467  ilUtil::sendFailure($this->lng->txt("no_permission"), true);
469  }
470  }
471 
472  /*
473  * toggleNotification
474  */
475  public function toggleNotification()
476  {
477  global $ilCtrl, $ilUser;
478 
479  include_once "./Services/Notification/classes/class.ilNotification.php";
480  switch($_GET["ntf"])
481  {
482  case 1:
484  break;
485  case 2:
487  break;
488  }
489  $ilCtrl->redirect($this, "");
490  }
491 
492  /*
493  * addHeaderAction
494  */
495  public function addHeaderAction($a_redraw = false)
496  {
497  global $ilUser, $ilAccess, $tpl, $lng, $ilCtrl;
498 
499  include_once "Services/Object/classes/class.ilCommonActionDispatcherGUI.php";
501  $ilAccess, "dcl", $this->ref_id,$this->obj_id);
502 
503  include_once "Services/Object/classes/class.ilObjectListGUI.php";
504  ilObjectListGUI::prepareJSLinks($this->ctrl->getLinkTarget($this, "redrawHeaderAction", "", true),
505  $ilCtrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "ilnotegui"), "", "", true, false),
506  $ilCtrl->getLinkTargetByClass(array("ilcommonactiondispatchergui", "iltagginggui"), "", "", true, false));
507 
508  $lg = $dispatcher->initHeaderAction();
509 
510 
511  // notification
512  if ($ilUser->getId() != ANONYMOUS_USER_ID && $this->object->getNotification() == 1)
513  {
514  include_once "./Services/Notification/classes/class.ilNotification.php";
516  {
517  //Command Activate Notification
518  $ilCtrl->setParameter($this, "ntf", 1);
519  $lg->addCustomCommand($ilCtrl->getLinkTarget($this, "toggleNotification"), "dcl_notification_deactivate_dcl");
520 
521  $lg->addHeaderIcon("not_icon",
522  ilUtil::getImagePath("notification_on.png"),
523  $lng->txt("dcl_notification_activated"));
524  }
525  else
526  {
527  //Command Deactivate Notification
528  $ilCtrl->setParameter($this, "ntf", 2);
529  $lg->addCustomCommand($ilCtrl->getLinkTarget($this,"toggleNotification"), "dcl_notification_activate_dcl");
530 
531  $lg->addHeaderIcon("not_icon",
532  ilUtil::getImagePath("notification_off.png"),
533  $lng->txt("dcl_notification_deactivated"));
534  }
535  $ilCtrl->setParameter($this, "ntf", "");
536  }
537 
538  if(!$a_redraw)
539  {
540  $tpl->setHeaderActionMenu($lg->getHeaderAction());
541  }
542  else
543  {
544  return $lg->getHeaderAction();
545  }
546 
547  $tpl->setHeaderActionMenu($lg->getHeaderAction());
548  }
549 }
550 
551 ?>