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 {
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?>
for($col=0; $col< 50; $col++) $d
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)
$cmd
Definition: sahs_server.php:35
global $DIC