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  {
97  return $this->user_edit_all;
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 }
static isRteActivated()
Is Rte activated.
global $DIC
Definition: saml.php:7
static initJavascript($a_tpl=null)
Init Javascript.
user()
Definition: user.php:4
static _lookupObjectId($a_ref_id)
lookup object id
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
__construct($a_ref_id, $a_include_auto_entries)
Constructor.
static encode($mixed, $suppress_native=false)
if(isset($_POST['submit'])) $form
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
special template class to simplify handling of ITX/PEAR
getDeleteModal()
Get delete modal.
Create styles array
The data for the language used.
static _lookupType($a_id, $a_reference=false)
lookup object type
static getInstance()
Get instance.
getEditModal()
Get edit modal.
static getInstance()
Get instance.
setUserEditAll($a_val)
Set user can edit other users postings.
static getEditForm($a_mode, $a_ref_id)
FORM NewsItem: Init form.
executeCommand()
Execute command.
$_POST["username"]
static getInstance(ilNewsItem $a_news_item, $a_news_ref_id)
Get instance.
for($i=6; $i< 13; $i++) for($i=1; $i< 13; $i++) $d
Definition: date.php:296
getUserEditAll()
Get user can edit other users postings.
static getInstance($a_ref_id, $a_include_auto_entries)
Get instance.