ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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
5require_once "./Services/Object/classes/class.ilObject2GUI.php";
6require_once "./Modules/Bibliographic/classes/class.ilBibliographicDetailsGUI.php";
7require_once("./Services/Export/classes/class.ilExportGUI.php");
8require_once('./Services/News/classes/class.ilNewsItem.php');
9require_once('./Services/PersonalDesktop/interfaces/interface.ilDesktopItemHandling.php');
10
11
28
29 const P_ENTRY_ID = 'entry_id';
33 protected $bibl_obj;
34
35
41 public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0) {
42 global $lng, $ilias;
43 $this->lng = $lng;
44 $this->ilias = $ilias;
45 parent::__construct($a_id, $a_id_type, $a_parent_node_id);
46 $lng->loadLanguageModule('bibl');
47 if ($a_id > 0) {
48 $this->bibl_obj = $this->object;
49 }
50 }
51
52
58 public function getStandardCmd() {
59 return "view";
60 }
61
62
68 public function getType() {
69 return "bibl";
70 }
71
72
76 public function executeCommand() {
77 global $ilCtrl, $ilTabs, $ilNavigationHistory, $tpl, $lng;
78 // Navigation History
79 $link = $ilCtrl->getLinkTarget($this, $this->getStandardCmd());
80 if ($this->object != NULL) {
81 $ilNavigationHistory->addItem($this->object->getRefId(), $link, "bibl");
82 $this->addHeaderAction();
83 }
84 $next_class = $ilCtrl->getNextClass($this);
85 $this->cmd = $ilCtrl->getCmd();
86 switch ($next_class) {
87 case "ilinfoscreengui":
88 $this->prepareOutput();
89 $ilTabs->activateTab("id_info");
90 $this->infoScreenForward();
91 break;
92 case "ilcommonactiondispatchergui":
93 include_once("Services/Object/classes/class.ilCommonActionDispatcherGUI.php");
95 $this->ctrl->forwardCommand($gui);
96 break;
97 case "ilpermissiongui":
98 $this->prepareOutput();
99 $ilTabs->activateTab("id_permissions");
100 include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
101 $perm_gui = new ilPermissionGUI($this);
102 $this->ctrl->forwardCommand($perm_gui);
103 break;
104 case "ilobjectcopygui":
105 include_once "./Services/Object/classes/class.ilObjectCopyGUI.php";
106 $cp = new ilObjectCopyGUI($this);
107 $cp->setType('bibl');
108 $tpl->getStandardTemplate();
109 $this->ctrl->forwardCommand($cp);
110 break;
111 case "ilobjfilegui":
112 $this->prepareOutput();
113 $ilTabs->setTabActive("id_records");
114 include_once("./Modules/File/classes/class.ilObjFile.php");
115 $file_gui = new ilObjFile($this);
116 $this->ctrl->forwardCommand($file_gui);
117 break;
118 case "ilexportgui":
119 $this->prepareOutput();
120 $ilTabs->setTabActive("export");
121 $exp_gui = new ilExportGUI($this);
122 $exp_gui->addFormat("xml");
123 $this->ctrl->forwardCommand($exp_gui);
124 break;
125 default:
126 return parent::executeCommand();
127 }
128
129 return true;
130 }
131
132
138 public function infoScreen() {
139 $this->ctrl->setCmd("showSummary");
140 $this->ctrl->setCmdClass("ilinfoscreengui");
141 $this->infoScreenForward();
142 }
143
144
148 public function infoScreenForward() {
149 global $ilTabs, $ilErr, $lng;
150 if (! $this->checkPermissionBool("visible")) {
151 ilUtil::sendFailure($lng->txt("msg_no_perm_read"), true);
152 $this->ctrl->redirectByClass('ilPersonalDesktopGUI', '');
153 }
154 $ilTabs->activateTab("id_info");
155 include_once("./Services/InfoScreen/classes/class.ilInfoScreenGUI.php");
156 $info = new ilInfoScreenGUI($this);
157 $info->enablePrivateNotes();
158 $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
159 $this->ctrl->forwardCommand($info);
160 }
161
162
163 /*
164 * addLocatorItems
165 */
166 public function addLocatorItems() {
167 global $ilLocator;
168 if (is_object($this->object)) {
169 $ilLocator->addItem($this->object->getTitle(), $this->ctrl->getLinkTarget($this, ""), "", $this->node_id);
170 }
171 }
172
173
180 public static function _goto($a_target) {
181 global $ilAccess, $ilErr, $ilCtrl;
182 $id = explode("_", $a_target);
183 $ilCtrl->setTargetScript("ilias.php");
184 $ilCtrl->initBaseClass("ilRepositoryGUI");
185 $ilCtrl->setParameterByClass("ilobjbibliographicgui", "ref_id", $id[0]);
186 //Detail-View
187 if ($id[1]) {
188 $ilCtrl->setParameterByClass("ilobjbibliographicgui", ilObjBibliographicGUI::P_ENTRY_ID, $id[1]);
189 $ilCtrl->redirectByClass(array( "ilRepositoryGUI", "ilobjbibliographicgui" ), "showDetails");
190 } else {
191 $ilCtrl->redirectByClass(array( "ilRepositoryGUI", "ilobjbibliographicgui" ), "view");
192 }
193 }
194
195
201 protected function initCreationForms($a_new_type) {
202 global $lng;
203 $forms = parent::initCreationForms($a_new_type);
204 // Add File-Upload
205 $in_file = new ilFileInputGUI($lng->txt("bibliography file"), "bibliographic_file");
206 $in_file->setSuffixes(array( "ris", "bib", "bibtex" ));
207 $in_file->setRequired(true);
208 $forms[self::CFORM_NEW]->addItem($in_file);
209 $this->ctrl->saveParameterByClass('ilobjrootfoldergui', 'new_type');
210 $forms[self::CFORM_NEW]->setFormAction($this->ctrl->getFormActionByClass('ilobjrootfoldergui', "save"));
211
212 return $forms;
213 }
214
215
216 public function save() {
217 global $tpl;
218 $form = $this->initCreationForms($this->getType());
219 if ($form[self::CFORM_NEW]->checkInput()) {
220 parent::save();
221 } else {
222 $form = $form[self::CFORM_NEW];
223 $form->setValuesByPost();
224 $tpl->setContent($form->getHtml());
225 }
226 }
227
228
232 protected function afterSave(ilObjBibliographic $a_new_object) {
233 $a_new_object->doUpdate();
234 $this->addNews($a_new_object->getId(), 'created');
235 $this->ctrl->redirect($this, "edit");
236 }
237
238
245 public function setTabs() {
246 global $ilAccess, $ilTabs, $lng, $ilHelp;
253 $ilHelp->setScreenIdComponent('bibl');
254 // info screen
255 if ($ilAccess->checkAccess('read', "", $this->object->getRefId())) {
256 $ilTabs->addTab("content", $lng->txt("content"), $this->ctrl->getLinkTarget($this, "showContent"));
257 }
258 // info screen
259 if ($ilAccess->checkAccess('visible', "", $this->object->getRefId())) {
260 $ilTabs->addTab("id_info", $lng->txt("info_short"), $this->ctrl->getLinkTargetByClass("ilinfoscreengui", "showSummary"));
261 }
262 // settings
263 if ($ilAccess->checkAccess('write', "", $this->object->getRefId())) {
264 $ilTabs->addTab("settings", $lng->txt("settings"), $this->ctrl->getLinkTarget($this, "editObject"));
265 }
266 // export
267 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
268 $ilTabs->addTab("export", $lng->txt("export"), $this->ctrl->getLinkTargetByClass("ilexportgui", ""));
269 }
270 // edit permissions
271 if ($ilAccess->checkAccess('edit_permission', "", $this->object->getRefId())) {
272 $ilTabs->addTab("id_permissions", $lng->txt("perm_settings"), $this->ctrl->getLinkTargetByClass("ilpermissiongui", "perm"));
273 }
274 }
275
276
277 public function initEditForm() {
278 global $lng;
279 $form = parent::initEditForm();
280 // Add File-Upload
281 $in_file = new ilFileInputGUI($lng->txt("bibliography file"), "bibliographic_file");
282 $in_file->setSuffixes(array( "ris", "bib", "bibtex" ));
283 $in_file->setRequired(false);
284 $cb_override = new ilCheckboxInputGUI($this->lng->txt("override_entries"), "override_entries");
285 $cb_override->addSubItem($in_file);
286 $form->addItem($cb_override);
287 $form->setFormAction($this->ctrl->getFormAction($this, "save"));
288
289 return $form;
290 }
291
292
296 protected function initEditCustomForm(ilPropertyFormGUI $a_form) {
297 global $ilTabs;
298 $ilTabs->activateTab("settings");
299 // is_online
300 $cb = new ilCheckboxInputGUI($this->lng->txt("online"), "is_online");
301 $a_form->addItem($cb);
302 }
303
304
310 public function getEditFormCustomValues(array &$a_values) {
311 $a_values["is_online"] = $this->object->getOnline();
312
313 return $a_values;
314 }
315
316
317
318
319 public function render() {
320 $this->showContent();
321 }
322
323
327 public function showContent() {
328 global $ilAccess, $tpl, $lng, $ilToolbar, $ilCtrl, $ilTabs;
329 // if user has read permission and object is online OR user has write permissions
330 if (($ilAccess->checkAccess('read', "", $this->object->getRefId()) && $this->object->getOnline())
331 || $ilAccess->checkAccess('write', "", $this->object->getRefId())
332 ) {
333 $ilTabs->setTabActive("content");
334 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
335 $ilToolbar = new ilToolbarGUI();
336 $ilToolbar->addButton($lng->txt("download_original_file"), $ilCtrl->getLinkTargetByClass("ilBibliographicDetailsGUI", "sendFile"));
337 include_once "./Modules/Bibliographic/classes/class.ilBibliographicRecordListTableGUI.php";
338 $table = new ilDataBibliographicRecordListTableGUI($this, $this->cmd);
339 $html = $table->getHTML();
340 $tpl->setContent($html);
341 //Permanent Link
342 $tpl->setPermanentLink("bibl", $this->object->getRefId());
343 } else {
344 $object_title = ilObject::_lookupTitle(ilObject::_lookupObjId($_GET["ref_id"]));
345 ilUtil::sendFailure(sprintf($this->lng->txt("msg_no_perm_read_item"), $object_title), true);
346 //redirect to repository without any parameters
347 unset($_GET);
349 }
350 }
351
352
356 public function sendFile() {
357 global $ilAccess, $tpl, $lng;
358 if ($ilAccess->checkAccess('read', "", $this->object->getRefId())) {
359 $file_path = $this->bibl_obj->getFileAbsolutePath();
360 if ($file_path) {
361 if (is_file($file_path)) {
362 $path_array = explode(DIRECTORY_SEPARATOR, $file_path);
363 $filename = $path_array[sizeof($path_array) - 1];
364 require_once('./Services/FileDelivery/classes/class.ilFileDelivery.php');
365 ilFileDelivery::deliverFileAttached($file_path, null, 'application/octet-stream');
366// ilUtil::deliverFile($file_path, $filename);
367 } else {
368 ilUtil::sendFailure($lng->txt("file_not_found"));
369 $this->showContent($this->bibl_obj);
370 }
371 }
372 } else {
373 ilUtil::sendFailure($this->lng->txt("no_permission"), true);
375 }
376 }
377
378
379 public function showDetails() {
380 global $ilAccess, $tpl, $lng;
381 if ($ilAccess->checkAccess('read', "", $this->object->getRefId())) {
382 $bibGUI = ilBibliographicDetailsGUI::getInstance($this->bibl_obj, $_GET[self::P_ENTRY_ID]);
383 $this->tpl->setContent($bibGUI->getHTML());
384 } else {
385 ilUtil::sendFailure($this->lng->txt("no_permission"), true);
387 }
388 }
389
390
391 public function view() {
392 $this->showContent();
393 }
394
395
399 public function updateCustom(ilPropertyFormGUI $a_form) {
400 global $ilAccess;
401 if ($ilAccess->checkAccess('write', "", $this->object->getRefId())) {
402 if ($this->object->getOnline() != $a_form->getInput("is_online")) {
403 $this->object->setOnline($a_form->getInput("is_online"));
404 }
405
406 if (! empty($_FILES['bibliographic_file']['name'])) {
407 $this->addNews($this->bibl_obj->getId(), 'updated');
408 }
409
410 } else {
411 ilUtil::sendFailure($this->lng->txt("no_permission"), true);
413 }
414 }
415
416 public function toggleNotification() {
417 global $ilCtrl, $ilUser;
418 include_once "./Services/Notification/classes/class.ilNotification.php";
419 switch ($_GET["ntf"]) {
420 case 1:
422 break;
423 case 2:
425 break;
426 }
427 $ilCtrl->redirect($this, "");
428 }
429
433 public function addNews($obj_id, $change = 'created') {
434 global $lng, $ilUser;
435
436 $ilNewsItem = new ilNewsItem();
437 $ilNewsItem->setTitle($lng->txt('news_title_' . $change));
438 $ilNewsItem->setPriority(NEWS_NOTICE);
439 $ilNewsItem->setContext($obj_id, $this->getType());
440 $ilNewsItem->setUserId($ilUser->getId());
441 $ilNewsItem->setVisibility(NEWS_USERS);
442 $ilNewsItem->setContentTextIsLangVar(false);
443 $ilNewsItem->create();
444 }
445
450 public function addToDeskObject() {
451 include_once './Services/PersonalDesktop/classes/class.ilDesktopItemGUI.php';
453 ilUtil::sendSuccess($this->lng->txt("added_to_desktop"), true);
454 $this->ctrl->redirect($this, 'view');
455 }
456
461 public function removeFromDeskObject() {
462 include_once './Services/PersonalDesktop/classes/class.ilDesktopItemGUI.php';
464 ilUtil::sendSuccess($this->lng->txt("removed_from_desktop"), true);
465 $this->ctrl->redirect($this, 'view');
466 }
467
472 public function addToDesk() {
473 $this->addToDeskObject();
474 }
475
480 public function removeFromDesk() {
481 $this->removeFromDeskObject();
482 }
483}
484
485?>
$filename
Definition: buildRTE.php:89
$_GET["client_id"]
const NEWS_USERS
const NEWS_NOTICE
static getInstance(ilObjBibliographic $bibl_obj, $entry_id)
This class represents a checkbox property in a property form.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
static addToDesktop()
Add desktop item @access public.
static removeFromDesktop()
Remove item from personal desktop @access public.
Export User Interface Class.
static deliverFileAttached($path_to_file, $download_file_name=null, $mime_type=null)
This class represents a file property in a property form.
Class ilInfoScreenGUI.
static setNotification($type, $user_id, $id, $status=true)
Set notification status for object and user.
Class ilObjBibliographicGUI.
initEditCustomForm(ilPropertyFormGUI $a_form)
addNews($obj_id, $change='created')
initEditForm()
Init object edit form.
infoScreen()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually,...
static _goto($a_target)
_goto Deep link
addToDeskObject()
Add desktop item @access public.
__construct($a_id=0, $a_id_type=self::REPOSITORY_NODE_ID, $a_parent_node_id=0)
addLocatorItems()
Functions to be overwritten.
infoScreenForward()
show information screen
removeFromDesk()
Remove from desktop.
afterSave(ilObjBibliographic $a_new_object)
sendFile()
provide file as a download
showContent()
shows the overview page with all entries in a table
updateCustom(ilPropertyFormGUI $a_form)
updateSettings
removeFromDeskObject()
Remove from desktop @access public.
view()
view object content (repository/workspace switch)
Class ilObjBibliographic.
Class ilObjFile.
New implementation of ilObjectGUI.
setTabs()
create tabs (repository/workspace switch)
prepareOutput()
prepare output
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
getId()
get object id @access public
GUI class for the workflow of copying objects.
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
addHeaderAction()
Add header action menu.
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
This class represents a property form user interface.
addItem($a_item)
Add Item (Property, SectionHeader).
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
$html
Definition: example_001.php:87
$info
Definition: example_052.php:80
global $ilCtrl
Definition: ilias.php:18
Interface for gui classes (e.g ilLuceneSearchGUI) that offer add/remove to/from desktop.
redirection script todo: (a better solution should control the processing via a xml file)
global $ilUser
Definition: imgupload.php:15