ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilNewsTimelineItemGUI.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
12{
16 protected $lng;
17
21 protected $news_item;
22
26 protected $obj_def;
27
31 protected $user;
32
36 protected $user_edit_all;
37
43
48 protected $ref_id;
49
53 protected $ctrl;
54
58 protected $like_gui;
59
66 protected function __construct(ilNewsItem $a_news_item, $a_news_ref_id, \ilLikeGUI $a_like_gui)
67 {
68 global $DIC;
69
70 $this->like_gui = $a_like_gui;
71
72 $this->lng = $DIC->language();
73 $this->ctrl = $DIC->ctrl();
74 $this->setNewsItem($a_news_item);
75 $this->user = $DIC->user();
76 $this->obj_def = $DIC["objDefinition"];
77 $this->news_item_ref_id = $a_news_ref_id;
78
79 $this->ref_id = (int) $_GET["ref_id"];
80 }
81
87 public static function getInstance(ilNewsItem $a_news_item, $a_news_ref_id, \ilLikeGUI $a_like_gui)
88 {
89 return new self($a_news_item, $a_news_ref_id, $a_like_gui);
90 }
91
96 public function setNewsItem(ilNewsItem $a_val)
97 {
98 $this->news_item = $a_val;
99 }
100
105 public function getNewsItem()
106 {
107 return $this->news_item;
108 }
109
114 public function setUserEditAll($a_val)
115 {
116 $this->user_edit_all = $a_val;
117 }
118
123 public function getUserEditAll()
124 {
126 }
127
131 public function getDateTime()
132 {
133 $i = $this->getNewsItem();
134 return new ilDateTime($i->getCreationDate(), IL_CAL_DATETIME);
135 }
136
140 public function render()
141 {
142 $i = $this->getNewsItem();
143 $tpl = new ilTemplate("tpl.timeline_item.html", true, true, "Services/News");
144
145 include_once("./Services/News/classes/class.ilNewsRendererFactory.php");
146 $news_renderer = ilNewsRendererFactory::getRenderer($i->getContextObjType());
147 $news_renderer->setLanguage($this->lng->getLangKey());
148 $news_renderer->setNewsItem($i, $this->news_item_ref_id);
149
150 $obj_id = $i->getContextObjId();
151
152 // edited?
153 if ($i->getCreationDate() != $i->getUpdateDate()) {
154 $tpl->setCurrentBlock("edited");
155 $update_date = new ilDateTime($i->getUpdateDate(), IL_CAL_DATETIME);
156 $tpl->setVariable("TXT_EDITED", $this->lng->txt("cont_news_edited"));
157 if ($i->getUpdateUserId() > 0 && ($i->getUpdateUserId() != $i->getUserId())) {
158 include_once("./Services/User/classes/class.ilUserUtil.php");
159 $tpl->setVariable("TXT_USR_EDITED", ilUserUtil::getNamePresentation(
160 $i->getUpdateUserId(),
161 false,
162 true,
163 $this->ctrl->getLinkTargetByClass("ilnewstimelinegui")
164 ) . " - ");
165 }
166 include_once("./Services/Calendar/classes/class.ilDatePresentation.php");
167 $tpl->setVariable("TIME_EDITED", ilDatePresentation::formatDate($update_date));
168 $tpl->parseCurrentBlock();
169 }
170
171 // context object link
172 include_once("./Services/Link/classes/class.ilLink.php");
173 if ($this->news_item_ref_id > 0 && $this->ref_id != $this->news_item_ref_id) {
174 $tpl->setCurrentBlock("object");
175 $tpl->setVariable("OBJ_TITLE", ilObject::_lookupTitle($obj_id));
176 $tpl->setVariable("OBJ_IMG", ilObject::_getIcon($obj_id));
177 $tpl->setVariable("OBJ_HREF", $news_renderer->getObjectLink());
178 $tpl->parseCurrentBlock();
179 }
180
181 // media
182 if ($i->getMobId() > 0 && ilObject::_exists($i->getMobId())) {
183 $media = $this->renderMedia($i);
184 $tpl->setCurrentBlock("player");
185 $tpl->setVariable("PLAYER", $media);
186 $tpl->parseCurrentBlock();
187 }
188
189 $tpl->setVariable("USER_IMAGE", ilObjUser::_getPersonalPicturePath($i->getUserId(), "small"));
190 $tpl->setVariable(
191 "TITLE",
192 ilNewsItem::determineNewsTitle($i->getContextObjType(), $i->getTitle(), $i->getContentIsLangVar())
193 );
194
195 // content
196 $tpl->setVariable("CONTENT", $news_renderer->getTimelineContent());
197
198 include_once("./Services/User/classes/class.ilUserUtil.php");
199 $tpl->setVariable("TXT_USR", ilUserUtil::getNamePresentation(
200 $i->getUserId(),
201 false,
202 true,
203 $this->ctrl->getLinkTargetByClass("ilnewstimelinegui")
204 ));
205
206 include_once("./Services/Calendar/classes/class.ilDatePresentation.php");
207 $tpl->setVariable("TIME", ilDatePresentation::formatDate($this->getDateTime()));
208
209 // actions
210 include_once("Services/UIComponent/AdvancedSelectionList/classes/class.ilAdvancedSelectionListGUI.php");
211 $list = new ilAdvancedSelectionListGUI();
212 $list->setListTitle("");
213 $list->setId("news_tl_act_" . $i->getId());
214 //$list->setSelectionHeaderClass("small");
215 //$list->setItemLinkClass("xsmall");
216 //$list->setLinksMode("il_ContainerItemCommand2");
218 $list->setUseImages(false);
219
220 if ($i->getPriority() == 1 && ($i->getUserId() == $this->user->getId() || $this->getUserEditAll())) {
221 if (!$news_renderer->preventEditing()) {
222 $list->addItem(
223 $this->lng->txt("edit"),
224 "",
225 "",
226 "",
227 "",
228 "",
229 "",
230 false,
231 "il.News.edit(" . $i->getId() . ");"
232 );
233 $list->addItem(
234 $this->lng->txt("delete"),
235 "",
236 "",
237 "",
238 "",
239 "",
240 "",
241 false,
242 "il.News.delete(" . $i->getId() . ");"
243 );
244 }
245 }
246
247 $news_renderer->addTimelineActions($list);
248
249 $tpl->setVariable("ACTIONS", $list->getHTML());
250
251 return $tpl->get();
252 }
253
259 protected function renderMedia(ilNewsItem $i)
260 {
261 global $DIC;
262
263 $media_path = $this->getMediaPath($i);
264 $mime = ilObjMediaObject::getMimeType($media_path);
265
266 $ui_factory = $DIC->ui()->factory();
267 $ui_renderer = $DIC->ui()->renderer();
268
269 if (in_array($mime, array("image/jpeg", "image/svg+xml", "image/gif", "image/png"))) {
270 $item_id = "il-news-modal-img-" . $i->getId();
271 $title = basename($media_path);
272 $image = $ui_renderer->render($ui_factory->image()->responsive($media_path, $title));
273
274 $img_tpl = new ilTemplate("tpl.news_timeline_image_file.html", true, true, "Services/News");
275 $img_tpl->setVariable("ITEM_ID", $item_id);
276 $img_tpl->setVariable("IMAGE", $image);
277
278 $html = $img_tpl->get();
279 } elseif (in_array($mime, array("audio/mpeg", "audio/ogg", "video/mp4", "video/x-flv", "video/webm"))) {
280 $mp = new ilMediaPlayerGUI();
281 $mp->setFile($media_path);
282 $html = $mp->getMediaPlayerHtml();
283 } else {
284 // download?
285 $html = "";
286 }
287 return $html;
288 }
289
295 protected function renderMediaModal(ilNewsItem $i)
296 {
297 global $DIC;
298
299 $media_path = $this->getMediaPath($i);
300 $mime = ilObjMediaObject::getMimeType($media_path);
301
302 $ui_factory = $DIC->ui()->factory();
303 $ui_renderer = $DIC->ui()->renderer();
304
305 $modal_html = "";
306
307 if (in_array($mime, array("image/jpeg", "image/svg+xml", "image/gif", "image/png"))) {
308 $title = basename($media_path);
309 $item_id = "il-news-modal-img-" . $i->getId();
310 $image = $ui_renderer->render($ui_factory->image()->responsive($media_path, $title));
311 $modal = ilModalGUI::getInstance();
312 $modal->setId($item_id);
313 $modal->setType(ilModalGUI::TYPE_LARGE);
314 $modal->setBody($image);
315 $modal->setHeading($title);
316 $modal_html = $modal->getHTML();
317 }
318 return $modal_html;
319 }
320
325 public function renderFooter()
326 {
327 $i = $this->getNewsItem();
328
329 // like
330 $this->ctrl->setParameterByClass("ilnewstimelinegui", "news_id", $i->getId());
331 $this->like_gui->setObject(
332 $i->getContextObjId(),
333 $i->getContextObjType(),
334 $i->getContextSubObjId(),
335 $i->getContextSubObjType(),
336 $i->getId()
337 );
338 $html = $this->ctrl->getHTML($this->like_gui);
339
340 // comments
341 $notes_obj_type = ($i->getContextSubObjType() == "")
342 ? $i->getContextObjType()
343 : $i->getContextSubObjType();
344 $note_gui = new ilNoteGUI(
345 $i->getContextObjId(),
346 $i->getContextSubObjId(),
347 $notes_obj_type,
348 false,
349 $i->getId()
350 );
351 $note_gui->setDefaultCommand("getWidget");
352
353 //ilNoteGUI::getListCommentsJSCall($this->ajax_hash, $redraw_js)
354 $html .= $this->ctrl->getHTML($note_gui);
355
356 $this->ctrl->setParameterByClass("ilnewstimelinegui", "news_id", $_GET["news_id"]);
357
358 return $html . $this->renderMediaModal($i);
359 }
360
365 protected function getMediaPath(ilNewsItem $i)
366 {
367 $media_path = "";
368 if ($i->getMobId() > 0) {
369 include_once("./Services/MediaObjects/classes/class.ilObjMediaObject.php");
370 include_once("./Services/MediaObjects/classes/class.ilMediaPlayerGUI.php");
371 $mob = new ilObjMediaObject($i->getMobId());
372 $med = $mob->getMediaItem("Standard");
373 if (strcasecmp("Reference", $med->getLocationType()) == 0) {
374 $media_path = $med->getLocation();
375 } else {
376 $media_path = ilObjMediaObject::_getURL($mob->getId()) . "/" . $med->getLocation();
377 }
378 }
379 return $media_path;
380 }
381}
user()
Definition: user.php:4
$_GET["client_id"]
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_DATETIME
User interface class for advanced drop-down selection lists.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
@classDescription Date and time handling
User interface for like feature.
User interface for media player.
static getInstance()
Get instance.
static determineNewsTitle( $a_context_obj_type, $a_title, $a_content_is_lang_var, $a_agg_ref_id=0, $a_aggregation="")
Determine title for news item entry.
static getRenderer($a_context_obj_type)
Get renderer.
Single news timeline item.
renderMedia(ilNewsItem $i)
Render media.
__construct(ilNewsItem $a_news_item, $a_news_ref_id, \ilLikeGUI $a_like_gui)
Constructor.
getDateTime()
Get datetime.ilDateTime timestamp
render()
Render item.string html
setNewsItem(ilNewsItem $a_val)
Set news item.
static getInstance(ilNewsItem $a_news_item, $a_news_ref_id, \ilLikeGUI $a_like_gui)
Get instance.
renderMediaModal(ilNewsItem $i)
Render media.
getUserEditAll()
Get user can edit other users postings.
setUserEditAll($a_val)
Set user can edit other users postings.
Notes GUI class.
Class ilObjMediaObject.
static getMimeType($a_file, $a_external=null)
get mime type for file
static _getURL($a_mob_id)
get directory for files of media object (static)
static _getPersonalPicturePath( $a_usr_id, $a_size="small", $a_force_pic=false, $a_prevent_no_photo_image=false, $html_export=false)
Get path to personal picture.
static _lookupTitle($a_id)
lookup object title
static _getIcon( $a_obj_id="", $a_size="big", $a_type="", $a_offline=false)
Get icon for repository item.
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data@access public
special template class to simplify handling of ITX/PEAR
static getNamePresentation( $a_user_id, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
global $DIC
Definition: goto.php:24
Interface for timeline items.
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
$i
Definition: metadata.php:24