ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilNewsTimelineGUI.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */
4
13{
17 protected $ctrl;
18
22 protected $tpl;
23
27 protected $ref_id;
28
32 protected $lng;
33
37 protected $toolbar;
38
42 protected $user;
43
47 protected $access;
48
52 protected static $items_per_load = 10;
53
57 protected $user_edit_all = false;
58
64 protected function __construct($a_ref_id, $a_include_auto_entries)
65 {
66 global $DIC;
67
68 $this->ctrl = $DIC->ctrl();
69 $this->tpl = $DIC["tpl"];
70 $this->ref_id = $a_ref_id;
71 $this->lng = $DIC->language();
72 $this->toolbar = $DIC->toolbar();
73 $this->user = $DIC->user();
74 $this->include_auto_entries = $a_include_auto_entries;
75 $this->access = $DIC->access();
76
77 $this->lng->loadLanguageModule("news");
78 }
79
85 public function setUserEditAll($a_val)
86 {
87 $this->user_edit_all = $a_val;
88 }
89
95 public function getUserEditAll()
96 {
98 }
99
106 public static function getInstance($a_ref_id, $a_include_auto_entries)
107 {
108 return new self($a_ref_id, $a_include_auto_entries);
109 }
110
114 public function executeCommand()
115 {
116 $next_class = $this->ctrl->getNextClass($this);
117 $cmd = $this->ctrl->getCmd("show");
118
119 switch ($next_class) {
120 default:
121 if (in_array($cmd, array("show", "save", "update", "loadMore", "remove"))) {
122 $this->$cmd();
123 }
124 }
125 }
126
133 public function show()
134 {
135 // toolbar
136 if ($this->access->checkAccess("news_add_news", "", $this->ref_id)) {
138 $b->setCaption('news_add_news');
139 $b->setOnClick("return il.News.create();");
140 $b->setPrimary(true);
141 $this->toolbar->addButtonInstance($b);
142 }
143
144 include_once("./Services/News/classes/class.ilNewsItem.php");
145 $news_item = new ilNewsItem();
146 $news_item->setContextObjId($this->ctrl->getContextObjId());
147 $news_item->setContextObjType($this->ctrl->getContextObjType());
148
149 $news_data = $news_item->getNewsForRefId(
150 $this->ref_id,
151 false,
152 false,
153 0,
154 true,
155 false,
156 !$this->include_auto_entries,
157 false,
158 null,
159 self::$items_per_load
160 );
161
162 include_once("./Services/News/Timeline/classes/class.ilTimelineGUI.php");
163 include_once("./Services/News/classes/class.ilNewsTimelineItemGUI.php");
164 $timeline = ilTimelineGUI::getInstance();
165
166 $js_items = array();
167 foreach ($news_data as $d) {
168 $news_item = new ilNewsItem($d["id"]);
169 $item = ilNewsTimelineItemGUI::getInstance($news_item, $d["ref_id"]);
170 $item->setUserEditAll($this->getUserEditAll());
171 $timeline->addItem($item);
172 $js_items[$d["id"]] = array(
173 "id" => $d["id"],
174 "user_id" => $d["user_id"],
175 "title" => $d["title"],
176 "content" => $d["content"] . $d["content_long"],
177 "content_long" => "",
178 "priority" => $d["priority"],
179 "visibility" => $d["visibility"],
180 "content_type" => $d["content_type"]
181 );
182 }
183
184 include_once("./Services/JSON/classes/class.ilJsonUtil.php");
185 $this->tpl->addOnloadCode("il.News.setItems(" . ilJsonUtil::encode($js_items) . ");");
186 $this->tpl->addOnloadCode("il.News.setAjaxUrl('" . $this->ctrl->getLinkTarget($this, "", "", true) . "');");
187
188 if (count($news_data) > 0) {
189 $ttpl = new ilTemplate("tpl.news_timeline.html", true, true, "Services/News");
190 $ttpl->setVariable("NEWS", $timeline->render());
191 $ttpl->setVariable("EDIT_MODAL", $this->getEditModal());
192 $ttpl->setVariable("DELETE_MODAL", $this->getDeleteModal());
193 $ttpl->setVariable("LOADER", ilUtil::getImagePath("loader.svg"));
194 $this->tpl->setContent($ttpl->get());
195 } else {
196 ilUtil::sendInfo($this->lng->txt("news_timline_add_entries_info"));
197 $this->tpl->setContent($this->getEditModal());
198 }
199
200 $this->lng->toJS("create");
201 $this->lng->toJS("edit");
202 $this->lng->toJS("update");
203 $this->lng->toJS("save");
204
205 $this->tpl->addJavaScript("./Services/News/js/News.js");
206 include_once("./Services/MediaObjects/classes/class.ilMediaPlayerGUI.php");
208 }
209
216 public function loadMore()
217 {
218 include_once("./Services/News/classes/class.ilNewsItem.php");
219 $news_item = new ilNewsItem();
220 $news_item->setContextObjId($this->ctrl->getContextObjId());
221 $news_item->setContextObjType($this->ctrl->getContextObjType());
222
223 $excluded = $_POST["rendered_news"];
224
225 $news_data = $news_item->getNewsForRefId(
226 $this->ref_id,
227 false,
228 false,
229 0,
230 true,
231 false,
232 !$this->include_auto_entries,
233 false,
234 null,
235 self::$items_per_load,
236 $excluded
237 );
238
239 include_once("./Services/News/Timeline/classes/class.ilTimelineGUI.php");
240 include_once("./Services/News/classes/class.ilNewsTimelineItemGUI.php");
241 $timeline = ilTimelineGUI::getInstance();
242
243 $js_items = array();
244 foreach ($news_data as $d) {
245 $news_item = new ilNewsItem($d["id"]);
246 $item = ilNewsTimelineItemGUI::getInstance($news_item, $d["ref_id"]);
247 $item->setUserEditAll($this->getUserEditAll());
248 $timeline->addItem($item);
249 $js_items[$d["id"]] = array(
250 "id" => $d["id"],
251 "user_id" => $d["user_id"],
252 "title" => $d["title"],
253 "content" => $d["content"] . $d["content_long"],
254 "content_long" => "",
255 "priority" => $d["priority"],
256 "visibility" => $d["visibility"],
257 "content_type" => $d["content_type"]
258 );
259 }
260
261 include_once("./Services/JSON/classes/class.ilJsonUtil.php");
262 $obj = new stdClass();
263 $obj->data = $js_items;
264 $obj->html = $timeline->render(true);
265
266 echo ilJsonUtil::encode($obj);
267 exit;
268 }
269
270
274 public function save()
275 {
276 include_once("./Services/News/classes/class.ilNewsItemGUI.php");
278 if ($form->checkInput()) {
279 $news_item = new ilNewsItem();
280 $news_item->setTitle($form->getInput("news_title"));
281 $news_item->setContent($form->getInput("news_content"));
282 $news_item->setVisibility($form->getInput("news_visibility"));
283 include_once("./Services/News/classes/class.ilNewsItemGUI.php");
285 $news_item->setContentHtml(true);
286 }
287 //$news_item->setContentLong($form->getInput("news_content_long"));
288 $news_item->setContentLong("");
289
290 $obj_id = ilObject::_lookupObjectId($this->ref_id);
291 $obj_type = ilObject::_lookupType($obj_id);
292 $news_item->setContextObjId($obj_id);
293 $news_item->setContextObjType($obj_type);
294 $news_item->setUserId($this->user->getId());
295
296 $news_set = new ilSetting("news");
297 if (!$news_set->get("enable_rss_for_internal")) {
298 $news_item->setVisibility("users");
299 }
300
301 $news_item->create();
302 }
303 exit;
304 }
305
309 public function update()
310 {
311 include_once("./Services/News/classes/class.ilNewsItemGUI.php");
313 if ($form->checkInput()) {
314 $news_item = new ilNewsItem((int) $_POST["id"]);
315 $news_item->setTitle($form->getInput("news_title"));
316 $news_item->setContent($form->getInput("news_content"));
317 $news_item->setVisibility($form->getInput("news_visibility"));
318 //$news_item->setContentLong($form->getInput("news_content_long"));
319 include_once("./Services/News/classes/class.ilNewsItemGUI.php");
321 $news_item->setContentHtml(true);
322 }
323 $news_item->setContentLong("");
324
325 $obj_id = ilObject::_lookupObjectId($this->ref_id);
326
327 if ($news_item->getContextObjId() == $obj_id) {
328 $news_item->setUpdateUserId($this->user->getId());
329 $news_item->update();
330 }
331 }
332 exit;
333 }
334
338 public function remove()
339 {
340 include_once("./Services/News/classes/class.ilNewsItemGUI.php");
341 $news_item = new ilNewsItem((int) $_POST["id"]);
342 if ($this->user->getId() == $news_item->getUserId() || $this->getUserEditAll()) {
343 $news_item->delete();
344 }
345 exit;
346 }
347
353 protected function getEditModal()
354 {
355 include_once("./Services/UIComponent/Modal/classes/class.ilModalGUI.php");
356 $modal = ilModalGUI::getInstance();
357 $modal->setHeading($this->lng->txt("edit"));
358 $modal->setId("ilNewsEditModal");
359 $modal->setType(ilModalGUI::TYPE_LARGE);
360
361 include_once("./Services/News/classes/class.ilNewsItemGUI.php");
363 $form->setShowTopButtons(false);
364 $modal->setBody($form->getHTML());
365
366 return $modal->getHTML();
367 }
368
374 protected function getDeleteModal()
375 {
376 include_once("./Services/UIComponent/Modal/classes/class.ilModalGUI.php");
377 $modal = ilModalGUI::getInstance();
378 $modal->setHeading($this->lng->txt("delete"));
379 $modal->setId("ilNewsDeleteModal");
380 $modal->setType(ilModalGUI::TYPE_LARGE);
381
382 require_once 'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
383 $confirm = ilSubmitButton::getInstance();
384 $confirm->setCaption("delete");
385 $confirm->setId("news_btn_delete");
386 $modal->addButton($confirm);
387
388 $cancel = ilSubmitButton::getInstance();
389 $cancel->setCaption("cancel");
390 $cancel->setId("news_btn_cancel_delete");
391 $modal->addButton($cancel);
392
393 $modal->setBody("<p id='news_delete_news_title'></p>" .
394 $this->tpl->getMessageHTML($this->lng->txt("news_really_delete_news"), "question"));
395
396 return $modal->getHTML();
397 }
398}
user()
Definition: user.php:4
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
static encode($mixed, $suppress_native=false)
static getInstance()
Factory.
static initJavascript($a_tpl=null)
Init Javascript.
static getInstance()
Get instance.
static isRteActivated()
Is Rte activated.
static getEditForm($a_mode, $a_ref_id)
FORM NewsItem: Init form.
getEditModal()
Get edit modal.
getDeleteModal()
Get delete modal.
__construct($a_ref_id, $a_include_auto_entries)
Constructor.
setUserEditAll($a_val)
Set user can edit other users postings.
executeCommand()
Execute command.
getUserEditAll()
Get user can edit other users postings.
static getInstance($a_ref_id, $a_include_auto_entries)
Get instance.
static getInstance(ilNewsItem $a_news_item, $a_news_ref_id)
Get instance.
static _lookupObjectId($a_ref_id)
lookup object id
static _lookupType($a_id, $a_reference=false)
lookup object type
ILIAS Setting Class.
static getInstance()
Factory.
special template class to simplify handling of ITX/PEAR
static getInstance()
Get instance.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
for( $i=6;$i< 13;$i++) for($i=1; $i< 13; $i++) $d
Definition: date.php:296
if(isset($_POST['submit'])) $form
global $DIC
Definition: saml.php:7