ILIAS  release_8 Revision v8.24
ilNewsTimelineGUI Class Reference

Timeline for news. More...

+ Collaboration diagram for ilNewsTimelineGUI:

Public Member Functions

 setUserEditAll (bool $a_val)
 Set user can edit other users postings. More...
 
 getUserEditAll ()
 Get user can edit other users postings. More...
 
 executeCommand ()
 
 show (ilPropertyFormGUI $form=null)
 
 loadMore ()
 
 save ()
 
 update ()
 
 remove ()
 

Static Public Member Functions

static getInstance (int $a_ref_id, bool $a_include_auto_entries)
 

Protected Member Functions

 __construct (int $a_ref_id, bool $a_include_auto_entries)
 
 send (string $output)
 
 updateNewsItem ()
 
 getEditModal ($form=null)
 
 getDeleteModal ()
 

Protected Attributes

ILIAS HTTP Services $http
 
int $news_id
 
bool $include_auto_entries
 
ilCtrl $ctrl
 
ilGlobalTemplateInterface $tpl
 
int $ref_id
 
ilLanguage $lng
 
ilToolbarGUI $toolbar
 
ilObjUser $user
 
ilAccessHandler $access
 
bool $user_edit_all = false
 
StandardGUIRequest $std_request
 

Static Protected Attributes

static int $items_per_load = 10
 

Detailed Description

Timeline for news.

Author
Alexander Killing killi.nosp@m.ng@l.nosp@m.eifos.nosp@m..de @ilCtrl_Calls ilNewsTimelineGUI: ilLikeGUI, ilNoteGUI

Definition at line 29 of file class.ilNewsTimelineGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilNewsTimelineGUI::__construct ( int  $a_ref_id,
bool  $a_include_auto_entries 
)
protected

Definition at line 45 of file class.ilNewsTimelineGUI.php.

48 {
49 global $DIC;
50
51 $this->ctrl = $DIC->ctrl();
52 $this->tpl = $DIC["tpl"];
53 $this->ref_id = $a_ref_id;
54 $this->lng = $DIC->language();
55 $this->toolbar = $DIC->toolbar();
56 $this->user = $DIC->user();
57 $this->include_auto_entries = $a_include_auto_entries;
58 $this->access = $DIC->access();
59 $this->http = $DIC->http();
60
61 $this->std_request = new StandardGUIRequest(
62 $DIC->http(),
63 $DIC->refinery()
64 );
65
66 $this->news_id = $this->std_request->getNewsId();
67
68 $this->lng->loadLanguageModule("news");
69 }
global $DIC
Definition: feed.php:28
static http()
Fetches the global http state from ILIAS.

References $DIC, ILIAS\Repository\access(), ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Repository\toolbar(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

Member Function Documentation

◆ executeCommand()

ilNewsTimelineGUI::executeCommand ( )
Exceptions
ilCtrlException

Definition at line 97 of file class.ilNewsTimelineGUI.php.

97 : void
98 {
100
101 $next_class = $this->ctrl->getNextClass($this);
102 $cmd = $this->ctrl->getCmd("show");
103
104 switch ($next_class) {
105 case "illikegui":
106 $i = new ilNewsItem($this->news_id);
107 $likef = new ilLikeFactoryGUI();
108 $like_gui = $likef->widget([$i->getContextObjId()]);
109 $ctrl->saveParameter($this, "news_id");
110 $like_gui->setObject(
111 $i->getContextObjId(),
112 $i->getContextObjType(),
113 $i->getContextSubObjId(),
114 $i->getContextSubObjType(),
115 $this->news_id
116 );
117 $ret = $ctrl->forwardCommand($like_gui);
118 break;
119
120 case "ilnotegui":
121 $i = new ilNewsItem($this->news_id);
122 $ctrl->saveParameter($this, "news_id");
123 $notes_obj_type = ($i->getContextSubObjType() == "")
124 ? $i->getContextObjType()
125 : $i->getContextSubObjType();
126 $note_gui = new ilNoteGUI(
127 $i->getContextObjId(),
128 $i->getContextSubObjId(),
129 $notes_obj_type,
130 false,
131 $i->getId()
132 );
133 $note_gui->setShowHeader(false);
134 $ret = $ctrl->forwardCommand($note_gui);
135 break;
136
137 default:
138 if (in_array($cmd, ["show", "save", "update", "loadMore", "remove", "updateNewsItem"])) {
139 $this->$cmd();
140 }
141 }
142 }
saveParameter(object $a_gui_obj, $a_parameter)
@inheritDoc
forwardCommand(object $a_gui_object)
@inheritDoc
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
A news item can be created by different sources.
Notes GUI class.
$i
Definition: metadata.php:41

References $i, ILIAS\Repository\ctrl(), ilCtrl\forwardCommand(), and ilCtrl\saveParameter().

+ Here is the call graph for this function:

◆ getDeleteModal()

ilNewsTimelineGUI::getDeleteModal ( )
protected

Definition at line 432 of file class.ilNewsTimelineGUI.php.

432 : string
433 {
434 $modal = ilModalGUI::getInstance();
435 $modal->setHeading($this->lng->txt("delete"));
436 $modal->setId("ilNewsDeleteModal");
437 $modal->setType(ilModalGUI::TYPE_LARGE);
438
439 $confirm = ilSubmitButton::getInstance();
440 $confirm->setCaption("delete");
441 $confirm->setId("news_btn_delete");
442 $modal->addButton($confirm);
443
444 $cancel = ilSubmitButton::getInstance();
445 $cancel->setCaption("cancel");
446 $cancel->setId("news_btn_cancel_delete");
447 $modal->addButton($cancel);
448
449 $modal->setBody("<p id='news_delete_news_title'></p>" .
450 ilUtil::getSystemMessageHTML($this->lng->txt("news_really_delete_news"), "question"));
451
452 return $modal->getHTML();
453 }
static getInstance()
static getSystemMessageHTML(string $a_txt, string $a_type="info")
Get HTML for a system message.

References ilSubmitButton\getInstance(), ilModalGUI\getInstance(), ilUtil\getSystemMessageHTML(), ILIAS\Repository\lng(), and ilModalGUI\TYPE_LARGE.

+ Here is the call graph for this function:

◆ getEditModal()

ilNewsTimelineGUI::getEditModal (   $form = null)
protected

Definition at line 406 of file class.ilNewsTimelineGUI.php.

406 : string
407 {
408 $modal = ilModalGUI::getInstance();
409 $modal->setHeading($this->lng->txt("edit"));
410 $modal->setId("ilNewsEditModal");
411 $modal->setType(ilModalGUI::TYPE_LARGE);
412
413 if (is_null($form)) {
415 }
416 $form->setShowTopButtons(false);
417 $form->setFormAction($this->ctrl->getFormAction($this));
418
419
420 //
421 $hi = new ilHiddenInputGUI("id");
422 $form->addItem($hi);
423 $act = new ilHiddenInputGUI("news_action");
424 $form->addItem($act);
425 $form->setId("news_edit_form");
426
427 $modal->setBody($form->getHTML());
428
429 return $modal->getHTML();
430 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getEditForm(int $a_mode, int $a_ref_id)

References ILIAS\Repository\ctrl(), ilNewsItemGUI\FORM_EDIT, ilNewsItemGUI\getEditForm(), ilModalGUI\getInstance(), ILIAS\Repository\lng(), and ilModalGUI\TYPE_LARGE.

+ Here is the call graph for this function:

◆ getInstance()

static ilNewsTimelineGUI::getInstance ( int  $a_ref_id,
bool  $a_include_auto_entries 
)
static

Definition at line 87 of file class.ilNewsTimelineGUI.php.

91 return new self($a_ref_id, $a_include_auto_entries);
92 }

Referenced by ilObjCourseGUI\executeCommand(), and ilObjGroupGUI\executeCommand().

+ Here is the caller graph for this function:

◆ getUserEditAll()

ilNewsTimelineGUI::getUserEditAll ( )

Get user can edit other users postings.

Definition at line 82 of file class.ilNewsTimelineGUI.php.

82 : bool
83 {
85 }

References $user_edit_all.

◆ loadMore()

ilNewsTimelineGUI::loadMore ( )

Definition at line 224 of file class.ilNewsTimelineGUI.php.

224 : void
225 {
226 $news_item = new ilNewsItem();
227 $news_item->setContextObjId($this->ctrl->getContextObjId());
228 $news_item->setContextObjType($this->ctrl->getContextObjType());
229
230 $excluded = $this->std_request->getRenderedNews();
231
232 $news_data = $news_item->getNewsForRefId(
233 $this->ref_id,
234 false,
235 false,
236 0,
237 true,
238 false,
239 !$this->include_auto_entries,
240 false,
241 null,
242 self::$items_per_load,
243 $excluded
244 );
245
246 $timeline = ilTimelineGUI::getInstance();
247
248 // get like widget
249 $obj_ids = array_unique(array_map(static function ($a): int {
250 return (int) $a["context_obj_id"];
251 }, $news_data));
252 $likef = new ilLikeFactoryGUI();
253 $like_gui = $likef->widget($obj_ids);
254
255 $js_items = [];
256 foreach ($news_data as $d) {
257 $news_item = new ilNewsItem((int) $d["id"]);
258 $item = ilNewsTimelineItemGUI::getInstance($news_item, (int) $d["ref_id"], $like_gui);
259 $item->setUserEditAll($this->getUserEditAll());
260 $timeline->addItem($item);
261 $js_items[$d["id"]] = [
262 "id" => $d["id"],
263 "user_id" => $d["user_id"],
264 "title" => $d["title"],
265 "content" => $d["content"] . $d["content_long"],
266 "content_long" => "",
267 "priority" => $d["priority"],
268 "visibility" => $d["visibility"],
269 "content_type" => $d["content_type"],
270 "mob_id" => $d["mob_id"]
271 ];
272 }
273
274 $obj = new stdClass();
275 $obj->data = $js_items;
276 $obj->html = $timeline->render(true);
277
278 $this->send(json_encode($obj, JSON_THROW_ON_ERROR));
279 }
getUserEditAll()
Get user can edit other users postings.
static getInstance(ilNewsItem $a_news_item, int $a_news_ref_id, ilLikeGUI $a_like_gui)
for( $i=6;$i< 13;$i++) for($i=1; $i< 13; $i++) $d
Definition: date.php:296
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples

References Vendor\Package\$a, $d, ILIAS\Repository\ctrl(), ilTimelineGUI\getInstance(), ilNewsTimelineItemGUI\getInstance(), and send().

+ Here is the call graph for this function:

◆ remove()

ilNewsTimelineGUI::remove ( )

Definition at line 397 of file class.ilNewsTimelineGUI.php.

397 : void
398 {
399 $news_item = new ilNewsItem($this->std_request->getNewsId());
400 if ($this->getUserEditAll() || $this->user->getId() === $news_item->getUserId()) {
401 $news_item->delete();
402 }
403 $this->send("");
404 }

References send(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ save()

ilNewsTimelineGUI::save ( )

Definition at line 305 of file class.ilNewsTimelineGUI.php.

305 : void
306 {
308 if ($form->checkInput()) {
309 $news_item = new ilNewsItem();
310 $news_item->setTitle($form->getInput("news_title"));
311 $news_item->setContent($form->getInput("news_content"));
312 $news_item->setVisibility($form->getInput("news_visibility"));
314 $news_item->setContentHtml(true);
315 }
316 //$news_item->setContentLong($form->getInput("news_content_long"));
317 $news_item->setContentLong("");
318
319 $obj_id = ilObject::_lookupObjectId($this->ref_id);
320 $obj_type = ilObject::_lookupType($obj_id);
321 $news_item->setContextObjId($obj_id);
322 $news_item->setContextObjType($obj_type);
323 $news_item->setUserId($this->user->getId());
324
325 $media = $_FILES["media"];
326 if ($media["name"] != "") {
327 $mob = ilObjMediaObject::_saveTempFileAsMediaObject($media["name"], $media["tmp_name"], true);
328 $news_item->setMobId($mob->getId());
329 }
330
331 $news_set = new ilSetting("news");
332 if (!$news_set->get("enable_rss_for_internal")) {
333 $news_item->setVisibility("users");
334 }
335 $news_item->create();
336 $this->ctrl->redirect($this, "show");
337 } else {
338 $form->setValuesByPost();
339 $this->show($form);
340 $this->tpl->addOnLoadCode("il.News.create(true);");
341 }
342 }
show(ilPropertyFormGUI $form=null)
static _saveTempFileAsMediaObject(string $name, string $tmp_name, bool $upload=true)
Create new media object and update page in db and return new media object.
static _lookupObjectId(int $ref_id)
static _lookupType(int $id, bool $reference=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References ilObject\_lookupObjectId(), ilObject\_lookupType(), ilObjMediaObject\_saveTempFileAsMediaObject(), ILIAS\Repository\ctrl(), ilNewsItemGUI\FORM_EDIT, ilNewsItemGUI\getEditForm(), ilNewsItemGUI\isRteActivated(), show(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ send()

ilNewsTimelineGUI::send ( string  $output)
protected
Exceptions
ResponseSendingException

Definition at line 284 of file class.ilNewsTimelineGUI.php.

284 : void
285 {
286 $this->http->saveResponse($this->http->response()->withBody(
287 Streams::ofString($output)
288 ));
289 $this->http->sendResponse();
290 $this->http->close();
291 }

References ILIAS\FileDelivery\http().

+ Here is the call graph for this function:

◆ setUserEditAll()

ilNewsTimelineGUI::setUserEditAll ( bool  $a_val)

Set user can edit other users postings.

Definition at line 74 of file class.ilNewsTimelineGUI.php.

74 : void
75 {
76 $this->user_edit_all = $a_val;
77 }

◆ show()

ilNewsTimelineGUI::show ( ilPropertyFormGUI  $form = null)

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

144 : void
145 {
146 // toolbar
147 if ($this->access->checkAccess("news_add_news", "", $this->ref_id)) {
149 $b->setCaption('news_add_news');
150 $b->setOnClick("return il.News.create();");
151 $b->setPrimary(true);
152 $this->toolbar->addButtonInstance($b);
153 }
154
155 $news_item = new ilNewsItem();
156 $news_item->setContextObjId($this->ctrl->getContextObjId());
157 $news_item->setContextObjType($this->ctrl->getContextObjType());
158
159 $news_data = $news_item->getNewsForRefId(
160 $this->ref_id,
161 false,
162 false,
163 0,
164 true,
165 false,
166 !$this->include_auto_entries,
167 false,
168 null,
169 self::$items_per_load
170 );
171
172 $timeline = ilTimelineGUI::getInstance();
173
174 // get like widget
175 $obj_ids = array_unique(array_map(static function (array $a): int {
176 return (int) $a["context_obj_id"];
177 }, $news_data));
178 $likef = new ilLikeFactoryGUI();
179 $like_gui = $likef->widget($obj_ids);
180
181 $js_items = [];
182 foreach ($news_data as $d) {
183 $news_item = new ilNewsItem((int) $d["id"]);
184 $item = ilNewsTimelineItemGUI::getInstance($news_item, (int) $d["ref_id"], $like_gui);
185 $item->setUserEditAll($this->getUserEditAll());
186 $timeline->addItem($item);
187 $js_items[$d["id"]] = [
188 "id" => $d["id"],
189 "user_id" => $d["user_id"],
190 "title" => $d["title"],
191 "content" => $d["content"] . $d["content_long"],
192 "content_long" => "",
193 "priority" => $d["priority"],
194 "visibility" => $d["visibility"],
195 "content_type" => $d["content_type"],
196 "mob_id" => $d["mob_id"]
197 ];
198 }
199
200 $this->tpl->addOnLoadCode("il.News.setItems(" . json_encode($js_items, JSON_THROW_ON_ERROR) . ");");
201 $this->tpl->addOnLoadCode("il.News.setAjaxUrl('" . $this->ctrl->getLinkTarget($this, "", "", true) . "');");
202
203 if (count($news_data) > 0) {
204 $ttpl = new ilTemplate("tpl.news_timeline.html", true, true, "Services/News");
205 $ttpl->setVariable("NEWS", $timeline->render());
206 $ttpl->setVariable("EDIT_MODAL", $this->getEditModal($form));
207 $ttpl->setVariable("DELETE_MODAL", $this->getDeleteModal());
208 $ttpl->setVariable("LOADER", ilUtil::getImagePath("loader.svg"));
209 $this->tpl->setContent($ttpl->get());
210 } else {
211 $this->tpl->setOnScreenMessage('info', $this->lng->txt("news_timline_add_entries_info"));
212 $this->tpl->setContent($this->getEditModal());
213 }
214
215 $this->lng->toJS("create");
216 $this->lng->toJS("edit");
217 $this->lng->toJS("update");
218 $this->lng->toJS("save");
219
220 $this->tpl->addJavaScript("./Services/News/js/News.js");
222 }
static initJavascript(ilGlobalTemplateInterface $a_tpl=null)
special template class to simplify handling of ITX/PEAR
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)

References Vendor\Package\$a, Vendor\Package\$b, $d, ILIAS\Repository\access(), ILIAS\Repository\ctrl(), ilUtil\getImagePath(), ilTimelineGUI\getInstance(), ilLinkButton\getInstance(), ilNewsTimelineItemGUI\getInstance(), ilMediaPlayerGUI\initJavascript(), ILIAS\Repository\lng(), and ILIAS\Repository\toolbar().

+ Here is the call graph for this function:

◆ update()

ilNewsTimelineGUI::update ( )

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

347 : void
348 {
350 if ($form->checkInput()) {
351 $news_item = new ilNewsItem($this->std_request->getId());
352 $news_item->setTitle($form->getInput("news_title"));
353 $news_item->setContent($form->getInput("news_content"));
354 $news_item->setVisibility($form->getInput("news_visibility"));
355 //$news_item->setContentLong($form->getInput("news_content_long"));
357 $news_item->setContentHtml(true);
358 }
359 $news_item->setContentLong("");
360
361 $media = $_FILES["media"];
362 $old_mob_id = 0;
363
364 // delete old media object
365 if ($media["name"] != "" || $this->std_request->getDeleteMedia() > 0) {
366 if ($news_item->getMobId() > 0 && ilObject::_lookupType($news_item->getMobId()) === "mob") {
367 $old_mob_id = $news_item->getMobId();
368 }
369 $news_item->setMobId(0);
370 }
371
372 if ($media["name"] != "") {
373 $mob = ilObjMediaObject::_saveTempFileAsMediaObject($media["name"], $media["tmp_name"], true);
374 $news_item->setMobId($mob->getId());
375 }
376
377 $obj_id = ilObject::_lookupObjectId($this->ref_id);
378
379 if ($news_item->getContextObjId() === $obj_id) {
380 $news_item->setUpdateUserId($this->user->getId());
381 $news_item->update();
382
383 if ($old_mob_id > 0) {
384 $old_mob = new ilObjMediaObject($old_mob_id);
385 $old_mob->delete();
386 }
387 }
388 $this->ctrl->redirect($this, "show");
389 } else {
390 $form->setValuesByPost();
391 $this->show($form);
392 $this->tpl->addOnLoadCode("il.News.edit(" . $this->std_request->getNewsId() . ", true);");
393 }
394 }

References ilObject\_lookupObjectId(), ilObject\_lookupType(), ilObjMediaObject\_saveTempFileAsMediaObject(), ILIAS\Repository\ctrl(), ilNewsItemGUI\FORM_EDIT, ilNewsItemGUI\getEditForm(), ilNewsItemGUI\isRteActivated(), show(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ updateNewsItem()

ilNewsTimelineGUI::updateNewsItem ( )
protected

Definition at line 293 of file class.ilNewsTimelineGUI.php.

293 : void
294 {
295 if ($this->std_request->getNewsAction() === "save") {
296 $this->save();
297 }
298 if ($this->std_request->getNewsAction() === "update") {
299 $this->update();
300 }
301 }

Field Documentation

◆ $access

ilAccessHandler ilNewsTimelineGUI::$access
protected

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

◆ $ctrl

ilCtrl ilNewsTimelineGUI::$ctrl
protected

Definition at line 34 of file class.ilNewsTimelineGUI.php.

◆ $http

ILIAS HTTP Services ilNewsTimelineGUI::$http
protected

Definition at line 31 of file class.ilNewsTimelineGUI.php.

◆ $include_auto_entries

bool ilNewsTimelineGUI::$include_auto_entries
protected

Definition at line 33 of file class.ilNewsTimelineGUI.php.

◆ $items_per_load

int ilNewsTimelineGUI::$items_per_load = 10
staticprotected

Definition at line 41 of file class.ilNewsTimelineGUI.php.

◆ $lng

ilLanguage ilNewsTimelineGUI::$lng
protected

Definition at line 37 of file class.ilNewsTimelineGUI.php.

◆ $news_id

int ilNewsTimelineGUI::$news_id
protected

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

◆ $ref_id

int ilNewsTimelineGUI::$ref_id
protected

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

◆ $std_request

StandardGUIRequest ilNewsTimelineGUI::$std_request
protected

Definition at line 43 of file class.ilNewsTimelineGUI.php.

◆ $toolbar

ilToolbarGUI ilNewsTimelineGUI::$toolbar
protected

Definition at line 38 of file class.ilNewsTimelineGUI.php.

◆ $tpl

ilGlobalTemplateInterface ilNewsTimelineGUI::$tpl
protected

Definition at line 35 of file class.ilNewsTimelineGUI.php.

◆ $user

ilObjUser ilNewsTimelineGUI::$user
protected

Definition at line 39 of file class.ilNewsTimelineGUI.php.

◆ $user_edit_all

bool ilNewsTimelineGUI::$user_edit_all = false
protected

Definition at line 42 of file class.ilNewsTimelineGUI.php.

Referenced by getUserEditAll().


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