31 protected \ILIAS\HTTP\Services
$http;
47 bool $a_include_auto_entries
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();
66 $this->news_id = $this->std_request->
getNewsId();
68 $this->
lng->loadLanguageModule(
"news");
76 $this->user_edit_all = $a_val;
89 bool $a_include_auto_entries
91 return new self($a_ref_id, $a_include_auto_entries);
101 $next_class = $this->
ctrl->getNextClass($this);
102 $cmd = $this->
ctrl->getCmd(
"show");
104 switch ($next_class) {
108 $like_gui = $likef->widget([
$i->getContextObjId()]);
110 $like_gui->setObject(
111 $i->getContextObjId(),
112 $i->getContextObjType(),
113 $i->getContextSubObjId(),
114 $i->getContextSubObjType(),
123 $notes_obj_type = (
$i->getContextSubObjType() ==
"")
124 ?
$i->getContextObjType()
125 :
$i->getContextSubObjType();
127 $i->getContextObjId(),
128 $i->getContextSubObjId(),
138 if (in_array($cmd, [
"show",
"save",
"update",
"loadMore",
"remove",
"updateNewsItem"])) {
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);
156 $news_item->setContextObjId($this->
ctrl->getContextObjId());
157 $news_item->setContextObjType($this->
ctrl->getContextObjType());
159 $news_data = $news_item->getNewsForRefId(
166 !$this->include_auto_entries,
169 self::$items_per_load
175 $obj_ids = array_unique(array_map(
static function (array
$a):
int {
176 return (
int) $a[
"context_obj_id"];
179 $like_gui = $likef->widget($obj_ids);
182 foreach ($news_data as
$d) {
186 $timeline->addItem($item);
187 $js_items[$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"]
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) .
"');");
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));
209 $this->tpl->setContent($ttpl->get());
211 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"news_timline_add_entries_info"));
215 $this->
lng->toJS(
"create");
216 $this->
lng->toJS(
"edit");
217 $this->
lng->toJS(
"update");
218 $this->
lng->toJS(
"save");
220 $this->tpl->addJavaScript(
"./Services/News/js/News.js");
227 $news_item->setContextObjId($this->
ctrl->getContextObjId());
228 $news_item->setContextObjType($this->
ctrl->getContextObjType());
230 $excluded = $this->std_request->getRenderedNews();
232 $news_data = $news_item->getNewsForRefId(
239 !$this->include_auto_entries,
242 self::$items_per_load,
249 $obj_ids = array_unique(array_map(
static function (
$a):
int {
250 return (
int)
$a[
"context_obj_id"];
253 $like_gui = $likef->widget($obj_ids);
256 foreach ($news_data as
$d) {
260 $timeline->addItem($item);
261 $js_items[$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"]
275 $obj->data = $js_items;
276 $obj->html = $timeline->render(
true);
278 $this->
send(json_encode($obj, JSON_THROW_ON_ERROR));
284 protected function send(
string $output): void
286 $this->
http->saveResponse($this->
http->response()->withBody(
287 Streams::ofString($output)
289 $this->
http->sendResponse();
290 $this->
http->close();
295 if ($this->std_request->getNewsAction() ===
"save") {
298 if ($this->std_request->getNewsAction() ===
"update") {
308 if ($form->checkInput()) {
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);
317 $news_item->setContentLong(
"");
321 $news_item->setContextObjId($obj_id);
322 $news_item->setContextObjType($obj_type);
323 $news_item->setUserId($this->
user->getId());
325 $media = $_FILES[
"media"];
326 if ($media[
"name"] !=
"") {
328 $news_item->setMobId($mob->getId());
332 if (!$news_set->get(
"enable_rss_for_internal")) {
333 $news_item->setVisibility(
"users");
335 $news_item->create();
336 $this->
ctrl->redirect($this,
"show");
338 $form->setValuesByPost();
340 $this->tpl->addOnLoadCode(
"il.News.create(true);");
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"));
357 $news_item->setContentHtml(
true);
359 $news_item->setContentLong(
"");
361 $media = $_FILES[
"media"];
365 if ($media[
"name"] !=
"" || $this->std_request->getDeleteMedia() > 0) {
367 $old_mob_id = $news_item->getMobId();
369 $news_item->setMobId(0);
372 if ($media[
"name"] !=
"") {
374 $news_item->setMobId($mob->getId());
379 if ($news_item->getContextObjId() === $obj_id) {
380 $news_item->setUpdateUserId($this->
user->getId());
381 $news_item->update();
383 if ($old_mob_id > 0) {
388 $this->
ctrl->redirect($this,
"show");
390 $form->setValuesByPost();
392 $this->tpl->addOnLoadCode(
"il.News.edit(" . $this->std_request->getNewsId() .
", true);");
397 public function remove():
void 399 $news_item =
new ilNewsItem($this->std_request->getNewsId());
409 $modal->setHeading($this->
lng->txt(
"edit"));
410 $modal->setId(
"ilNewsEditModal");
413 if (is_null($form)) {
416 $form->setShowTopButtons(
false);
417 $form->setFormAction($this->
ctrl->getFormAction($this));
424 $form->addItem($act);
425 $form->setId(
"news_edit_form");
427 $modal->setBody($form->getHTML());
429 return $modal->getHTML();
435 $modal->setHeading($this->
lng->txt(
"delete"));
436 $modal->setId(
"ilNewsDeleteModal");
440 $confirm->setCaption(
"delete");
441 $confirm->setId(
"news_btn_delete");
442 $modal->addButton($confirm);
445 $cancel->setCaption(
"cancel");
446 $cancel->setId(
"news_btn_cancel_delete");
447 $modal->addButton($cancel);
449 $modal->setBody(
"<p id='news_delete_news_title'></p>" .
452 return $modal->getHTML();
static getInstance(int $a_ref_id, bool $a_include_auto_entries)
static getSystemMessageHTML(string $a_txt, string $a_type="info")
Get HTML for a system message.
bool $include_auto_entries
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
forwardCommand(object $a_gui_object)
setUserEditAll(bool $a_val)
Set user can edit other users postings.
ILIAS HTTP Services $http
static int $items_per_load
static http()
Fetches the global http state from ILIAS.
setTitle(string $a_title)
static getEditForm(int $a_mode, int $a_ref_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilGlobalTemplateInterface $tpl
StandardGUIRequest $std_request
setShowHeader(bool $a_val)
static _lookupObjectId(int $ref_id)
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.
show(ilPropertyFormGUI $form=null)
static getInstance(ilNewsItem $a_news_item, int $a_news_ref_id, ilLikeGUI $a_like_gui)
saveParameter(object $a_gui_obj, $a_parameter)
__construct(int $a_ref_id, bool $a_include_auto_entries)
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples
static _lookupType(int $id, bool $reference=false)
for($i=6; $i< 13; $i++) for($i=1; $i< 13; $i++) $d
getUserEditAll()
Get user can edit other users postings.
delete()
Delete news item.