ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
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  function setUserEditAll($a_val)
86  {
87  $this->user_edit_all = $a_val;
88  }
89 
95  function getUserEditAll()
96  {
97  return $this->user_edit_all;
98  }
99 
106  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  function executeCommand()
115  {
116  $next_class = $this->ctrl->getNextClass($this);
117  $cmd = $this->ctrl->getCmd("show");
118 
119  switch ($next_class)
120  {
121  default:
122  if (in_array($cmd, array("show", "save", "update", "loadMore", "remove")))
123  {
124  $this->$cmd();
125  }
126  }
127  }
128 
135  function show()
136  {
137  // toolbar
138  if ($this->access->checkAccess("news_add_news", "", $this->ref_id))
139  {
141  $b->setCaption('news_add_news');
142  $b->setOnClick("return il.News.create();");
143  $b->setPrimary(true);
144  $this->toolbar->addButtonInstance($b);
145  }
146 
147  include_once("./Services/News/classes/class.ilNewsItem.php");
148  $news_item = new ilNewsItem();
149  $news_item->setContextObjId($this->ctrl->getContextObjId());
150  $news_item->setContextObjType($this->ctrl->getContextObjType());
151 
152  $news_data = $news_item->getNewsForRefId($this->ref_id, false, false,
153  0, true, false, !$this->include_auto_entries, false, null, self::$items_per_load);
154 
155  include_once("./Services/News/Timeline/classes/class.ilTimelineGUI.php");
156  include_once("./Services/News/classes/class.ilNewsTimelineItemGUI.php");
157  $timeline = ilTimelineGUI::getInstance();
158 
159  $js_items = array();
160  foreach ($news_data as $d)
161  {
162  $news_item = new ilNewsItem($d["id"]);
163  $item = ilNewsTimelineItemGUI::getInstance($news_item, $d["ref_id"]);
164  $item->setUserEditAll($this->getUserEditAll());
165  $timeline->addItem($item);
166  $js_items[$d["id"]] = array(
167  "id" => $d["id"],
168  "user_id" => $d["user_id"],
169  "title" => $d["title"],
170  "content" => $d["content"].$d["content_long"],
171  "content_long" => "",
172  "priority" => $d["priority"],
173  "visibility" => $d["visibility"],
174  "content_type" => $d["content_type"]
175  );
176  }
177 
178  include_once("./Services/JSON/classes/class.ilJsonUtil.php");
179  $this->tpl->addOnloadCode("il.News.setItems(".ilJsonUtil::encode($js_items).");");
180  $this->tpl->addOnloadCode("il.News.setAjaxUrl('".$this->ctrl->getLinkTarget($this, "", "", true)."');");
181 
182  if (count($news_data) > 0)
183  {
184  $ttpl = new ilTemplate("tpl.news_timeline.html", true, true, "Services/News");
185  $ttpl->setVariable("NEWS", $timeline->render());
186  $ttpl->setVariable("EDIT_MODAL", $this->getEditModal());
187  $ttpl->setVariable("DELETE_MODAL", $this->getDeleteModal());
188  $ttpl->setVariable("LOADER", ilUtil::getImagePath("loader.svg"));
189  $this->tpl->setContent($ttpl->get());
190 
191  }
192  else
193  {
194  ilUtil::sendInfo($this->lng->txt("news_timline_add_entries_info"));
195  $this->tpl->setContent($this->getEditModal());
196  }
197 
198  $this->lng->toJS("create");
199  $this->lng->toJS("edit");
200  $this->lng->toJS("update");
201  $this->lng->toJS("save");
202 
203  $this->tpl->addJavaScript("./Services/News/js/News.js");
204  include_once("./Services/MediaObjects/classes/class.ilMediaPlayerGUI.php");
206  }
207 
214  function loadMore()
215  {
216  include_once("./Services/News/classes/class.ilNewsItem.php");
217  $news_item = new ilNewsItem();
218  $news_item->setContextObjId($this->ctrl->getContextObjId());
219  $news_item->setContextObjType($this->ctrl->getContextObjType());
220 
221  $excluded = $_POST["rendered_news"];
222 
223  $news_data = $news_item->getNewsForRefId($this->ref_id, false, false,
224  0, true, false, !$this->include_auto_entries, false, null, self::$items_per_load, $excluded);
225 
226  include_once("./Services/News/Timeline/classes/class.ilTimelineGUI.php");
227  include_once("./Services/News/classes/class.ilNewsTimelineItemGUI.php");
228  $timeline = ilTimelineGUI::getInstance();
229 
230  $js_items = array();
231  foreach ($news_data as $d)
232  {
233  $news_item = new ilNewsItem($d["id"]);
234  $item = ilNewsTimelineItemGUI::getInstance($news_item, $d["ref_id"]);
235  $item->setUserEditAll($this->getUserEditAll());
236  $timeline->addItem($item);
237  $js_items[$d["id"]] = array(
238  "id" => $d["id"],
239  "user_id" => $d["user_id"],
240  "title" => $d["title"],
241  "content" => $d["content"].$d["content_long"],
242  "content_long" => "",
243  "priority" => $d["priority"],
244  "visibility" => $d["visibility"],
245  "content_type" => $d["content_type"]
246  );
247  }
248 
249  include_once("./Services/JSON/classes/class.ilJsonUtil.php");
250  $obj = new stdClass();
251  $obj->data = $js_items;
252  $obj->html = $timeline->render(true);
253 
254  echo ilJsonUtil::encode($obj);
255  exit;
256  }
257 
258 
262  function save()
263  {
264  include_once("./Services/News/classes/class.ilNewsItemGUI.php");
265  $form = ilNewsItemGUI::getEditForm(IL_FORM_CREATE, $this->ref_id);
266  if ($form->checkInput())
267  {
268  $news_item = new ilNewsItem();
269  $news_item->setTitle($form->getInput("news_title"));
270  $news_item->setContent($form->getInput("news_content"));
271  $news_item->setVisibility($form->getInput("news_visibility"));
272  include_once("./Services/News/classes/class.ilNewsItemGUI.php");
274  {
275  $news_item->setContentHtml(true);
276  }
277  //$news_item->setContentLong($form->getInput("news_content_long"));
278  $news_item->setContentLong("");
279 
280  $obj_id = ilObject::_lookupObjectId($this->ref_id);
281  $obj_type = ilObject::_lookupType($obj_id);
282  $news_item->setContextObjId($obj_id);
283  $news_item->setContextObjType($obj_type);
284  $news_item->setUserId($this->user->getId());
285 
286  $news_set = new ilSetting("news");
287  if (!$news_set->get("enable_rss_for_internal"))
288  {
289  $news_item->setVisibility("users");
290  }
291 
292  $news_item->create();
293  }
294  exit;
295  }
296 
300  function update()
301  {
302  include_once("./Services/News/classes/class.ilNewsItemGUI.php");
303  $form = ilNewsItemGUI::getEditForm(IL_FORM_EDIT, $this->ref_id);
304  if ($form->checkInput())
305  {
306  $news_item = new ilNewsItem((int) $_POST["id"]);
307  $news_item->setTitle($form->getInput("news_title"));
308  $news_item->setContent($form->getInput("news_content"));
309  $news_item->setVisibility($form->getInput("news_visibility"));
310  //$news_item->setContentLong($form->getInput("news_content_long"));
311  include_once("./Services/News/classes/class.ilNewsItemGUI.php");
313  {
314  $news_item->setContentHtml(true);
315  }
316  $news_item->setContentLong("");
317 
318  $obj_id = ilObject::_lookupObjectId($this->ref_id);
319 
320  if ($news_item->getContextObjId() == $obj_id)
321  {
322  $news_item->setUpdateUserId($this->user->getId());
323  $news_item->update();
324  }
325 
326  }
327  exit;
328  }
329 
333  function remove()
334  {
335  include_once("./Services/News/classes/class.ilNewsItemGUI.php");
336  $news_item = new ilNewsItem((int) $_POST["id"]);
337  if ($this->user->getId() == $news_item->getUserId() || $this->getUserEditAll())
338  {
339  $news_item->delete();
340  }
341  exit;
342  }
343 
349  protected function getEditModal()
350  {
351  include_once("./Services/UIComponent/Modal/classes/class.ilModalGUI.php");
352  $modal = ilModalGUI::getInstance();
353  $modal->setHeading($this->lng->txt("edit"));
354  $modal->setId("ilNewsEditModal");
355  $modal->setType(ilModalGUI::TYPE_LARGE);
356 
357  include_once("./Services/News/classes/class.ilNewsItemGUI.php");
358  $form = ilNewsItemGUI::getEditForm(IL_FORM_EDIT, $this->ref_id);
359  $form->setShowTopButtons(false);
360  $modal->setBody($form->getHTML());
361 
362  return $modal->getHTML();
363 
364  }
365 
371  protected function getDeleteModal()
372  {
373  include_once("./Services/UIComponent/Modal/classes/class.ilModalGUI.php");
374  $modal = ilModalGUI::getInstance();
375  $modal->setHeading($this->lng->txt("delete"));
376  $modal->setId("ilNewsDeleteModal");
377  $modal->setType(ilModalGUI::TYPE_LARGE);
378 
379  require_once 'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
380  $confirm = ilSubmitButton::getInstance();
381  $confirm->setCaption("delete");
382  $confirm->setId("news_btn_delete");
383  $modal->addButton($confirm);
384 
385  $cancel = ilSubmitButton::getInstance();
386  $cancel->setCaption("cancel");
387  $cancel->setId("news_btn_cancel_delete");
388  $modal->addButton($cancel);
389 
390  $modal->setBody("<p id='news_delete_news_title'></p>".
391  $this->tpl->getMessageHTML($this->lng->txt("news_really_delete_news"), "question"));
392 
393  return $modal->getHTML();
394 
395  }
396 }
397 ?>
ILIAS Setting Class.
static isRteActivated()
Is Rte activated.
static initJavascript($a_tpl=null)
Init Javascript.
$cmd
Definition: sahs_server.php:35
for($col=0; $col< 50; $col++) $d
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)
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.
global $DIC
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.
getUserEditAll()
Get user can edit other users postings.
static getInstance($a_ref_id, $a_include_auto_entries)
Get instance.