ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
class.ilNewsItemGUI.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
5include_once("./Services/News/classes/class.ilNewsItem.php");
6
7
17{
18 const FORM_EDIT = 0;
19 const FORM_CREATE = 1;
20 const FORM_RE_EDIT = 2;
21 const FORM_RE_CREATE = 2;
22
26 protected $ctrl;
27
31 protected $lng;
32
36 protected $tabs;
37
41 protected $user;
42
46 protected $toolbar;
47
48 protected $enable_edit = 0;
49 protected $context_obj_id;
53 protected $form_edit_mode;
54
55
59 public function __construct()
60 {
61 global $DIC;
62
63 $this->lng = $DIC->language();
64 $this->tabs = $DIC->tabs();
65 $this->user = $DIC->user();
66 $this->toolbar = $DIC->toolbar();
67 $ilCtrl = $DIC->ctrl();
68 $lng = $DIC->language();
69
70 $this->ctrl = $ilCtrl;
71
72 include_once("Services/News/classes/class.ilNewsItem.php");
73 if ($_GET["news_item_id"] > 0) {
74 $this->news_item = new ilNewsItem($_GET["news_item_id"]);
75 }
76
77 $this->ctrl->saveParameter($this, array("news_item_id"));
78
79 // Init EnableEdit.
80 $this->setEnableEdit(false);
81
82 // Init Context.
83 $this->setContextObjId($ilCtrl->getContextObjId());
84 $this->setContextObjType($ilCtrl->getContextObjType());
85 $this->setContextSubObjId($ilCtrl->getContextSubObjId());
86 $this->setContextSubObjType($ilCtrl->getContextSubObjType());
87
88 $lng->loadLanguageModule("news");
89
90 $ilCtrl->saveParameter($this, "add_mode");
91 }
92
98 public function getHTML()
99 {
102
103 $lng->LoadLanguageModule("news");
104
105 return $this->getNewsForContextBlock();
106 }
107
112 public function executeCommand()
113 {
115
116 // check, if news item id belongs to context
117 if (is_object($this->news_item) && $this->news_item->getId() > 0
118 && ilNewsItem::_lookupContextObjId($this->news_item->getId()) != $this->getContextObjId()) {
119 throw new ilException("News ID does not match object context.");
120 }
121
122
123 // get next class and command
124 $next_class = $this->ctrl->getNextClass($this);
125 $cmd = $this->ctrl->getCmd();
126
127 switch ($next_class) {
128 default:
129 $html = $this->$cmd();
130 break;
131 }
132
133 return $html;
134 }
135
141 public function setEnableEdit($a_enable_edit = 0)
142 {
143 $this->enable_edit = $a_enable_edit;
144 }
145
151 public function getEnableEdit()
152 {
153 return $this->enable_edit;
154 }
155
161 public function setContextObjId($a_context_obj_id)
162 {
163 $this->context_obj_id = $a_context_obj_id;
164 }
165
171 public function getContextObjId()
172 {
174 }
175
181 public function setContextObjType($a_context_obj_type)
182 {
183 $this->context_obj_type = $a_context_obj_type;
184 }
185
191 public function getContextObjType()
192 {
194 }
195
201 public function setContextSubObjId($a_context_sub_obj_id)
202 {
203 $this->context_sub_obj_id = $a_context_sub_obj_id;
204 }
205
211 public function getContextSubObjId()
212 {
214 }
215
221 public function setContextSubObjType($a_context_sub_obj_type)
222 {
223 $this->context_sub_obj_type = $a_context_sub_obj_type;
224 }
225
231 public function getContextSubObjType()
232 {
234 }
235
241 public function setFormEditMode($a_form_edit_mode)
242 {
243 $this->form_edit_mode = $a_form_edit_mode;
244 }
245
251 public function getFormEditMode()
252 {
254 }
255
260 public function createNewsItem()
261 {
262 $form = $this->initFormNewsItem(self::FORM_CREATE);
263 return $form->getHtml();
264 }
265
270 public function editNewsItem()
271 {
272 $form = $this->initFormNewsItem(self::FORM_EDIT);
273 $this->getValuesNewsItem($form);
274 return $form->getHtml();
275 }
276
277
284 protected function initFormNewsItem($a_mode)
285 {
286 $ilTabs = $this->tabs;
287
288 $ilTabs->clearTargets();
289 $form = self::getEditForm($a_mode, (int) $_GET["ref_id"]);
290 $form->setFormAction($this->ctrl->getFormAction($this));
291
292 return $form;
293 }
294
301 public static function getEditForm($a_mode, $a_ref_id)
302 {
303 global $DIC;
304
305 $lng = $DIC->language();
306
307 $lng->loadLanguageModule("news");
308
309 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
310
311 $form = new ilPropertyFormGUI();
312
313 // Property Title
314 $text_input = new ilTextInputGUI($lng->txt("news_news_item_title"), "news_title");
315 $text_input->setInfo("");
316 $text_input->setRequired(true);
317 $text_input->setMaxLength(200);
318 $form->addItem($text_input);
319
320 // Property Content
321 $text_area = new ilTextAreaInputGUI($lng->txt("news_news_item_content"), "news_content");
322 $text_area->setInfo("");
323 $text_area->setRequired(false);
324 $text_area->setRows("4");
325 if (ilObjAdvancedEditing::_getRichTextEditor() === "tinymce") {
326 $text_area->setUseRte(true);
327 }
328 $form->addItem($text_area);
329
330 // Property Visibility
331 $radio_group = new ilRadioGroupInputGUI($lng->txt("news_news_item_visibility"), "news_visibility");
332 $radio_option = new ilRadioOption($lng->txt("news_visibility_users"), "users");
333 $radio_group->addOption($radio_option);
334 $radio_option = new ilRadioOption($lng->txt("news_visibility_public"), "public");
335 $radio_group->addOption($radio_option);
336 $radio_group->setInfo($lng->txt("news_news_item_visibility_info"));
337 $radio_group->setRequired(false);
338 $radio_group->setValue("users");
339 $form->addItem($radio_group);
340
341 // media
342 $media = new ilFileInputGUI($lng->txt('news_media'), 'media');
343 $media->setSuffixes(array("jpeg", "jpg", "png", "gif", "mp4", "mp3"));
344 $media->setRequired(false);
345 $media->setALlowDeletion(true);
346 $media->setValue(" ");
347 $form->addItem($media);
348
349 // Property ContentLong
350 /*
351 $text_area = new ilTextAreaInputGUI($lng->txt("news_news_item_content_long"), "news_content_long");
352 $text_area->setInfo($lng->txt("news_news_item_content_long_info"));
353 $text_area->setRequired(false);
354 $text_area->setCols("40");
355 $text_area->setRows("8");
356 $text_area->setUseRte(true);
357 $form->addItem($text_area);*/
358
359
360 // save and cancel commands
361 if (in_array($a_mode, array(self::FORM_CREATE, self::FORM_RE_CREATE))) {
362 $form->addCommandButton("saveNewsItem", $lng->txt("save"), "news_btn_create");
363 $form->addCommandButton("cancelSaveNewsItem", $lng->txt("cancel"), "news_btn_cancel_create");
364 } else {
365 $form->addCommandButton("updateNewsItem", $lng->txt("save"), "news_btn_update");
366 $form->addCommandButton("cancelUpdateNewsItem", $lng->txt("cancel"), "news_btn_cancel_update");
367 }
368
369 $form->setTitle($lng->txt("news_news_item_head"));
370
371 $news_set = new ilSetting("news");
372 if (!$news_set->get("enable_rss_for_internal")) {
373 $form->removeItemByPostVar("news_visibility");
374 } else {
375 $nv = $form->getItemByPostVar("news_visibility");
376 if (is_object($nv)) {
377 $nv->setValue(ilNewsItem::_getDefaultVisibilityForRefId($a_ref_id));
378 }
379 }
380
381 return $form;
382 }
383
388 public function getValuesNewsItem(\ilPropertyFormGUI $a_form)
389 {
390 $values = array();
391
392 $values["news_title"] = $this->news_item->getTitle();
393 $values["news_content"] = $this->news_item->getContent() . $this->news_item->getContentLong();
394 $values["news_visibility"] = $this->news_item->getVisibility();
395 //$values["news_content_long"] = $this->news_item->getContentLong();
396 $values["news_content_long"] = "";
397
398 $a_form->setValuesByArray($values);
399
400 if ($this->news_item->getMobId() > 0) {
401 $fi = $a_form->getItemByPostVar("media");
402 $fi->setValue(ilObject::_lookupTitle($this->news_item->getMobId()));
403 }
404 }
405
410 public function saveNewsItem()
411 {
413
414 if (!$this->getEnableEdit()) {
415 return;
416 }
417
418 $form = $this->initFormNewsItem(self::FORM_CREATE);
419 if ($form->checkInput()) {
420 $this->news_item = new ilNewsItem();
421 $this->news_item->setTitle($form->getInput("news_title"));
422 $this->news_item->setContent($form->getInput("news_content"));
423 $this->news_item->setVisibility($form->getInput("news_visibility"));
424
425 // $data = $form->getInput('media');
426 // var_dump($data);
427
428 $media = $_FILES["media"];
429 if ($media["name"] != "") {
430 $mob = ilObjMediaObject::_saveTempFileAsMediaObject($media["name"], $media["tmp_name"], true);
431 $this->news_item->setMobId($mob->getId());
432 }
433
434
435 $this->news_item->setContentLong("");
436 if (self::isRteActivated()) {
437 $this->news_item->setContentHtml(true);
438 }
439 //$this->news_item->setContentLong($form->getInput("news_content_long"));
440
441 // changed
442 //$this->news_item->setContextObjId($this->ctrl->getContextObjId());
443 //$this->news_item->setContextObjType($this->ctrl->getContextObjType());
444 $this->news_item->setContextObjId($this->getContextObjId());
445 $this->news_item->setContextObjType($this->getContextObjType());
446 $this->news_item->setContextSubObjId($this->getContextSubObjId());
447 $this->news_item->setContextSubObjType($this->getContextSubObjType());
448 $this->news_item->setUserId($ilUser->getId());
449
450 $news_set = new ilSetting("news");
451 if (!$news_set->get("enable_rss_for_internal")) {
452 $this->news_item->setVisibility("users");
453 }
454
455 $this->news_item->create();
456 $this->exitSaveNewsItem();
457 } else {
458 $form->setValuesByPost();
459 return $form->getHtml();
460 }
461 }
462
463 public function exitSaveNewsItem()
464 {
466
467 if ($_GET["add_mode"] == "block") {
468 $ilCtrl->returnToParent($this);
469 } else {
470 $ilCtrl->redirect($this, "editNews");
471 }
472 }
473
478 public function updateNewsItem()
479 {
481
482 if (!$this->getEnableEdit()) {
483 return "";
484 }
485
486 $form = $this->initFormNewsItem(self::FORM_EDIT);
487 if ($form->checkInput()) {
488 $this->news_item->setUpdateUserId($ilUser->getId());
489 $this->news_item->setTitle($form->getInput("news_title"));
490 $this->news_item->setContent($form->getInput("news_content"));
491 $this->news_item->setVisibility($form->getInput("news_visibility"));
492 //$this->news_item->setContentLong($form->getInput("news_content_long"));
493 $this->news_item->setContentLong("");
494
495 $media = $_FILES["media"];
496 $old_mob_id = 0;
497
498 // delete old media object
499 if ($media["name"] != "" || $_POST["media_delete"] != "") {
500 if ($this->news_item->getMobId() > 0 && ilObject::_lookupType($this->news_item->getMobId()) == "mob") {
501 $old_mob_id = $this->news_item->getMobId();
502 }
503 $this->news_item->setMobId(0);
504 }
505
506 if ($media["name"] != "") {
507 $mob = ilObjMediaObject::_saveTempFileAsMediaObject($media["name"], $media["tmp_name"], true);
508 $this->news_item->setMobId($mob->getId());
509 }
510
511 if (self::isRteActivated()) {
512 $this->news_item->setContentHtml(true);
513 }
514 $this->news_item->update();
515
516 if ($old_mob_id > 0) {
517 $old_mob = new ilObjMediaObject($old_mob_id);
518 $old_mob->delete();
519 }
520
521 $this->exitUpdateNewsItem();
522 } else {
523 $form->setValuesByPost();
524 return $form->getHtml();
525 }
526 }
527
528 public function exitUpdateNewsItem()
529 {
531
532 $ilCtrl->redirect($this, "editNews");
533 }
534
539 public function cancelUpdateNewsItem()
540 {
541 return $this->editNews();
542 }
543
548 public function cancelSaveNewsItem()
549 {
551
552 if ($_GET["add_mode"] == "block") {
553 $ilCtrl->returnToParent($this);
554 } else {
555 return $this->editNews();
556 }
557 }
558
564 public function editNews()
565 {
566 $ilTabs = $this->tabs;
567 $ilToolbar = $this->toolbar;
570
571 $this->setTabs();
572
573 $ilToolbar->addButton(
574 $lng->txt("news_add_news"),
575 $ilCtrl->getLinkTarget($this, "createNewsItem")
576 );
577
578 if (!$this->getEnableEdit()) {
579 return;
580 }
581 return $this->getNewsForContextTable();
582 }
583
587 public function cancelUpdate()
588 {
589 return $this->editNews();
590 }
591
595 public function confirmDeletionNewsItems()
596 {
599 $ilTabs = $this->tabs;
600
601 if (!$this->getEnableEdit()) {
602 return;
603 }
604
605 // check whether at least one item is selected
606 if (count($_POST["news_id"]) == 0) {
607 ilUtil::sendFailure($lng->txt("no_checkbox"));
608 return $this->editNews();
609 }
610
611 $ilTabs->clearTargets();
612
613 include_once("Services/Utilities/classes/class.ilConfirmationGUI.php");
614 $c_gui = new ilConfirmationGUI();
615
616 // set confirm/cancel commands
617 $c_gui->setFormAction($ilCtrl->getFormAction($this, "deleteNewsItems"));
618 $c_gui->setHeaderText($lng->txt("info_delete_sure"));
619 $c_gui->setCancel($lng->txt("cancel"), "editNews");
620 $c_gui->setConfirm($lng->txt("confirm"), "deleteNewsItems");
621
622 // add items to delete
623 foreach ($_POST["news_id"] as $news_id) {
624 $news = new ilNewsItem($news_id);
625 $c_gui->addItem("news_id[]", $news_id, $news->getTitle());
626 }
627
628 return $c_gui->getHTML();
629 }
630
634 public function deleteNewsItems()
635 {
636 if (!$this->getEnableEdit()) {
637 return;
638 }
639 // delete all selected news items
640 foreach ($_POST["news_id"] as $news_id) {
641 $news = new ilNewsItem($news_id);
642 $news->delete();
643 }
644
645 return $this->editNews();
646 }
647
652 public function getNewsForContextBlock()
653 {
655
656 include_once("Services/News/classes/class.ilNewsForContextBlockGUI.php");
657 $block_gui = new ilNewsForContextBlockGUI(get_class($this));
658
659 $block_gui->setParentClass("ilinfoscreengui");
660 $block_gui->setParentCmd("showSummary");
661 $block_gui->setEnableEdit($this->getEnableEdit());
662
663
664 $news_item = new ilNewsItem();
665
666 // changed
667 //$news_item->setContextObjId($this->ctrl->getContextObjId());
668 //$news_item->setContextObjType($this->ctrl->getContextObjType());
669 $news_item->setContextObjId($this->getContextObjId());
670 $news_item->setContextObjType($this->getContextObjType());
671 $news_item->setContextSubObjId($this->getContextSubObjId());
672 $news_item->setContextSubObjType($this->getContextSubObjType());
673
674 $data = $news_item->queryNewsForContext();
675
676 $block_gui->setTitle($lng->txt("news_block_news_for_context"));
677 $block_gui->setRowTemplate("tpl.block_row_news_for_context.html", "Services/News");
678 $block_gui->setData($data);
679
680 return $block_gui->getHTML();
681 }
682
683
688 public function getNewsForContextTable()
689 {
691
692 $news_item = new ilNewsItem();
693 $news_item->setContextObjId($this->getContextObjId());
694 $news_item->setContextObjType($this->getContextObjType());
695 $news_item->setContextSubObjId($this->getContextSubObjId());
696 $news_item->setContextSubObjType($this->getContextSubObjType());
697
698 $perm_ref_id = 0;
699 if (in_array($this->getContextObjType(), array("cat", "grp", "crs", "root"))) {
700 $data = $news_item->getNewsForRefId(
701 $_GET["ref_id"],
702 false,
703 false,
704 0,
705 true,
706 false,
707 true,
708 true
709 );
710 } else {
711 $perm_ref_id = $_GET["ref_id"];
712 if ($this->getContextSubObjId() > 0) {
713 $data = $news_item->queryNewsForContext(
714 false,
715 0,
716 "",
717 true,
718 true
719 );
720 } else {
721 $data = $news_item->queryNewsForContext();
722 }
723 }
724
725 include_once("Services/News/classes/class.ilNewsForContextTableGUI.php");
726 $table_gui = new ilNewsForContextTableGUI($this, "getNewsForContextTable", $perm_ref_id);
727
728 $table_gui->setTitle($lng->txt("news_table_news_for_context"));
729 $table_gui->setRowTemplate("tpl.table_row_news_for_context.html", "Services/News");
730 $table_gui->setData($data);
731
732 $table_gui->setDefaultOrderField("creation_date");
733 $table_gui->setDefaultOrderDirection("desc");
734 $table_gui->addMultiCommand("confirmDeletionNewsItems", $lng->txt("delete"));
735 $table_gui->setTitle($lng->txt("news"));
736 $table_gui->setSelectAllCheckbox("news_id");
737
738
739 return $table_gui->getHTML();
740 }
741
748 public function setTabs()
749 {
750 $ilTabs = $this->tabs;
753
754 $ilTabs->clearTargets();
755 $ilTabs->setBackTarget(
756 $lng->txt("back"),
757 $ilCtrl->getParentReturn($this)
758 );
759 }
760
766 public static function isRteActivated()
767 {
768 include_once("./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php");
770 return false;
771 }
772 return true;
773 }
774}
user()
Definition: user.php:4
$_GET["client_id"]
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
Confirmation screen class.
Base class for ILIAS Exception handling.
This class represents a file property in a property form.
BlockGUI class for block NewsForContext.
TableGUI class for table NewsForContext.
User Interface for NewsItem entities.
getFormEditMode()
Get FormEditMode.
updateNewsItem()
FORM NewsItem: Save NewsItem.
getValuesNewsItem(\ilPropertyFormGUI $a_form)
FORM NewsItem: Get current values for NewsItem form.
__construct()
Constructor.
getNewsForContextTable()
TABLE NewsForContext: Get table HTML.
editNewsItem()
FORM NewsItem: Edit form.
getContextObjType()
Get ContextObjType.
initFormNewsItem($a_mode)
FORM NewsItem: Init form.
cancelUpdate()
Cancel update.
getContextObjId()
Get ContextObjId.
executeCommand()
Execute command.
createNewsItem()
FORM NewsItem: Create NewsItem.
setContextSubObjType($a_context_sub_obj_type)
Set ContextSubObjType.
setContextObjId($a_context_obj_id)
Set ContextObjId.
static isRteActivated()
Is Rte activated.
deleteNewsItems()
Delete news items.
setEnableEdit($a_enable_edit=0)
Set EnableEdit.
getContextSubObjId()
Get ContextSubObjId.
setFormEditMode($a_form_edit_mode)
Set FormEditMode.
setContextSubObjId($a_context_sub_obj_id)
Set ContextSubObjId.
getContextSubObjType()
Get ContextSubObjType.
cancelUpdateNewsItem()
FORM NewsItem: Save NewsItem.
setContextObjType($a_context_obj_type)
Set ContextObjType.
cancelSaveNewsItem()
FORM NewsItem: Save NewsItem.
getEnableEdit()
Get EnableEdit.
saveNewsItem()
FORM NewsItem: Save NewsItem.
getNewsForContextBlock()
BLOCK NewsForContext: Get block HTML.
confirmDeletionNewsItems()
Confirmation Screen.
static getEditForm($a_mode, $a_ref_id)
FORM NewsItem: Init form.
static _getDefaultVisibilityForRefId($a_ref_id)
Get default visibility for reference id.
static _lookupContextObjId($a_news_id)
Context Object ID.
static _getRichTextEditor()
Returns the identifier for the Rich Text Editor.
Class ilObjMediaObject.
static _saveTempFileAsMediaObject($name, $tmp_name, $upload=true)
Create new media object and update page in db and return new media object.
static _lookupTitle($a_id)
lookup object title
static _lookupType($a_id, $a_reference=false)
lookup object type
This class represents a property form user interface.
setValuesByArray($a_values, $a_restrict_to_value_keys=false)
Set form values from an array.
getItemByPostVar($a_post_var)
Get Item by POST variable.
This class represents a property in a property form.
This class represents an option in a radio group.
ILIAS Setting Class.
This class represents a text area property in a property form.
This class represents a text property in a property form.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
global $ilCtrl
Definition: ilias.php:18
$data
Definition: storeScorm.php:23
$ilUser
Definition: imgupload.php:18
$DIC
Definition: xapitoken.php:46