ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilPCInteractiveImageGUI.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5require_once("./Services/COPage/classes/class.ilPageContentGUI.php");
6require_once("./Services/COPage/classes/class.ilPCInteractiveImage.php");
7include_once("./Services/COPage/classes/class.ilMediaAliasItem.php");
8
20{
24 protected $tabs;
25
29 protected $toolbar;
30
31 public function __construct($a_pg_obj, $a_content_obj, $a_hier_id = 0, $a_pc_id = "")
32 {
33 global $DIC;
34
35 $this->tpl = $DIC["tpl"];
36 $this->lng = $DIC->language();
37 $this->tabs = $DIC->tabs();
38 $this->ctrl = $DIC->ctrl();
39 $this->toolbar = $DIC->toolbar();
40 parent::__construct($a_pg_obj, $a_content_obj, $a_hier_id, $a_pc_id);
41 }
42
46 public function executeCommand()
47 {
50 $ilTabs = $this->tabs;
51
52
53 // $this->getCharacteristicsOfCurrentStyle("media_cont"); // scorm-2004
54
55 // get next class that processes or forwards current command
56 $next_class = $this->ctrl->getNextClass($this);
57
58 // get current command
59 $cmd = $this->ctrl->getCmd();
60
61 if (is_object($this->content_obj)) {
62 $tpl->setTitleIcon(ilUtil::getImagePath("icon_mob.svg"));
63 $this->getTabs($this->tabs_gui);
64
65 /* $mob = $this->content_obj->getMediaObject();
66 if (is_object($mob))
67 {
68 $tpl->setVariable("HEADER", $lng->txt("mob").": ".
69 $this->content_obj->getMediaObject()->getTitle());
70 $mob_gui = new ilObjMediaObjectGUI("", $this->content_obj->getMediaObject()->getId(),false, false);
71 $mob_gui->setBackTitle($this->page_back_title);
72 $mob_gui->setEnabledMapAreas($this->getEnabledMapAreas());
73 $mob_gui->getTabs($this->tabs_gui);
74 }*/
75 } else {
76 }
77
78 switch ($next_class) {
79 // trigger editor
80 case "ilpciimtriggereditorgui":
81 require_once("./Services/COPage/classes/class.ilPCIIMTriggerEditorGUI.php");
82 $ilTabs->setTabActive("triggers");
83 $image_map_edit = new ilPCIIMTriggerEditorGUI(
84 $this->content_obj,
85 $this->pg_obj
86 );
87 $ret = $this->ctrl->forwardCommand($image_map_edit);
88 if ($ret != "") {
89 $tpl->setContent($ret);
90 }
91 break;
92
93 default:
94 $ret = $this->$cmd();
95 break;
96 }
97
98 return $ret;
99 }
100
107 public function getTabs(&$tab_gui, $a_create = false, $a_change_obj_ref = false)
108 {
109 $ilCtrl = $this->ctrl;
110 $ilTabs = $this->tabs;
112
113 if (!$a_create) {
114 $ilTabs->setBackTarget(
115 $lng->txt("pg"),
116 $ilCtrl->getParentReturn($this)
117 );
118
119 $ilTabs->addTab(
120 "triggers",
121 $lng->txt("cont_active_areas"),
122 $ilCtrl->getLinkTargetByClass("ilpciimtriggereditorgui", "editMapAreas")
123 );
124
125 $ilTabs->addTab(
126 "list_overlays",
127 $lng->txt("cont_overlay_images"),
128 $ilCtrl->getLinkTarget($this, "listOverlayImages")
129 );
130
131 $ilTabs->addTab(
132 "content_popups",
133 $lng->txt("cont_content_popups"),
134 $ilCtrl->getLinkTarget($this, "listContentPopups")
135 );
136
137 $ilTabs->addTab(
138 "edit_base_image",
139 $lng->txt("cont_base_image") . " & " . $lng->txt("cont_caption"),
140 $ilCtrl->getLinkTarget($this, "editBaseImage")
141 );
142 }
143 }
144
148 public function insert($a_post_cmd = "edpost", $a_submit_cmd = "create_mob", $a_input_error = false)
149 {
150 $ilTabs = $this->tabs;
152 $ilCtrl = $this->ctrl;
154
155 ilUtil::sendInfo($lng->txt("cont_iim_create_info"));
156
157 // $this->getTabs($ilTabs, true);
158 // $ilTabs->setSubTabActive("cont_new_mob");
159
160 if ($a_input_error) {
161 $form = $this->form;
162 } else {
163 $form = $this->initForm("create");
164 }
165 $form->setFormAction($ilCtrl->getFormAction($this));
166
167 $this->displayValidationError();
168
169 $tpl->setContent($form->getHTML());
170 }
171
175 public function edit()
176 {
178 $ilCtrl = $this->ctrl;
179
180 $ilCtrl->redirectByClass(array("ilpcinteractiveimagegui", "ilpciimtriggereditorgui"), "editMapAreas");
181 //$tpl->setContent("hh");
182 }
183
190 public function editBaseImage($a_form = null)
191 {
193 $ilTabs = $this->tabs;
195
196 $ilTabs->activateTab("edit_base_image");
197
198 $form = $this->initForm();
199 $tpl->setContent($form->getHTML());
200 }
201
202
208 public function initForm($a_mode = "edit")
209 {
211 $ilCtrl = $this->ctrl;
212
213 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
214 $form = new ilPropertyFormGUI();
215
216 // image file
217 $fi = new ilImageFileInputGUI($lng->txt("cont_file"), "image_file");
218 $fi->setAllowDeletion(false);
219 if ($a_mode == "edit") {
220 $fi->setImage($this->content_obj->getBaseThumbnailTarget());
221 } else {
222 $fi->setRequired(true);
223 }
224 $form->addItem($fi);
225
226 if ($a_mode == "edit") {
227 // caption
228 $ti = new ilTextInputGUI($this->lng->txt("cont_caption"), "caption");
229 $ti->setMaxLength(200);
230 $ti->setSize(50);
231 $form->addItem($ti);
232 }
233
234 // save and cancel commands
235 if ($a_mode == "create") {
236 $form->setTitle($lng->txt("cont_ed_insert_iim"));
237 $form->addCommandButton("create_iim", $lng->txt("save"));
238 $form->addCommandButton("cancelCreate", $lng->txt("cancel"));
239 } else {
240 // get caption
241 $std_alias_item = new ilMediaAliasItem(
242 $this->dom,
243 $this->getHierId(),
244 "Standard",
245 $this->content_obj->getPcId(),
246 "InteractiveImage"
247 );
248 $ti->setValue($std_alias_item->getCaption());
249
250 $form->setTitle($lng->txt("cont_edit_base_image"));
251 $form->addCommandButton("update", $lng->txt("save"));
252 }
253
254 $form->setFormAction($ilCtrl->getFormAction($this));
255
256 return $form;
257 }
258
262 public function create()
263 {
264 $ilCtrl = $this->ctrl;
267
268 $form = $this->initForm("create");
269 if (!$form->checkInput()) {
270 $this->displayValidationError();
271 $form->setValuesByPost();
272 $tpl->setContent($form->getHTML());
273 return;
274 }
275
276 $this->content_obj = new ilPCInteractiveImage($this->getPage());
277 $this->content_obj->createMediaObject();
278 $media_obj = $this->content_obj->getMediaObject();
279 $media_obj->setTitle($_FILES['image_file']['name']);
280 $media_obj->create();
281 $mob_dir = ilObjMediaObject::_getDirectory($media_obj->getId());
282 // $media_obj->setStandardType("File");
283 $media_obj->createDirectory();
284 $media_item = new ilMediaItem();
285 $media_obj->addMediaItem($media_item);
286 $media_item->setPurpose("Standard");
287
288 $file = $mob_dir . "/" . $_FILES['image_file']['name'];
289 try {
291 $_FILES['image_file']['tmp_name'],
292 $_FILES['image_file']['name'],
293 $file
294 );
295 } catch (ilException $e) {
296 ilUtil::sendFailure($this->lng->txt("file_is_infected"), true);
297 return;
298 }
299 // get mime type
301 $location = $_FILES['image_file']['name'];
302
303 // set real meta and object data
304 $media_item->setFormat($format);
305 $media_item->setLocation($location);
306 $media_item->setLocationType("LocalFile");
307
309 $media_obj->update();
310
311 $this->content_obj->createAlias($this->pg_obj, $this->hier_id, $this->pc_id);
312 $this->updated = $this->pg_obj->update();
313 if ($this->updated === true) {
314 $this->pg_obj->stripHierIDs();
315 $this->pg_obj->addHierIDs();
316 $ilCtrl->setParameter($this, "hier_id", $this->content_obj->readHierId());
317 $ilCtrl->setParameter($this, "pc_id", $this->content_obj->readPCId());
318 $this->content_obj->setHierId($this->content_obj->readHierId());
319 $this->setHierId($this->content_obj->readHierId());
320 $this->content_obj->setPCId($this->content_obj->readPCId());
321 ilUtil::sendSuccess($lng->txt("cont_saved_interactive_image"), true);
322 $this->ctrl->redirectByClass("ilpcinteractiveimagegui", "edit");
323
324 //$this->ctrl->returnToParent($this, "jump".$this->hier_id);
325 } else {
326 $this->insert();
327 }
328 }
329
333 public function update()
334 {
335 $ilCtrl = $this->ctrl;
337
338 $mob = $this->content_obj->getMediaObject();
339 $mob_dir = ilObjMediaObject::_getDirectory($mob->getId());
340 $std_item = $mob->getMediaItem("Standard");
341 $location = $_FILES['image_file']['name'];
342
343 if ($location != "" && is_file($_FILES['image_file']['tmp_name'])) {
344 $file = $mob_dir . "/" . $_FILES['image_file']['name'];
346 $_FILES['image_file']['tmp_name'],
347 $_FILES['image_file']['name'],
348 $file
349 );
350
351 // get mime type
353 $location = $_FILES['image_file']['name'];
354 $std_item->setFormat($format);
355 $std_item->setLocation($location);
356 $std_item->setLocationType("LocalFile");
357 $mob->setDescription($format);
358 $mob->update();
359 }
360
361 // set caption
362 $std_alias_item = new ilMediaAliasItem(
363 $this->dom,
364 $this->getHierId(),
365 "Standard",
366 $this->content_obj->getPcId(),
367 "InteractiveImage"
368 );
369 $std_alias_item->setCaption(ilUtil::stripSlashes($_POST["caption"]));
370 $_SESSION["il_pg_error"] = $this->pg_obj->update();
371 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
372
373 $ilCtrl->redirectByClass("ilpcinteractiveimagegui", "editBaseImage");
374 }
375
376
380 public function centerAlign()
381 {
382 $std_alias_item = new ilMediaAliasItem(
383 $this->dom,
384 $this->getHierId(),
385 "Standard",
386 $this->content_obj->getPcId(),
387 "InteractiveImage"
388 );
389 $std_alias_item->setHorizontalAlign("Center");
390 $_SESSION["il_pg_error"] = $this->pg_obj->update();
391 $this->ctrl->returnToParent($this, "jump" . $this->hier_id);
392 }
393
397 public function leftAlign()
398 {
399 $std_alias_item = new ilMediaAliasItem(
400 $this->dom,
401 $this->getHierId(),
402 "Standard",
403 $this->content_obj->getPcId(),
404 "InteractiveImage"
405 );
406 $std_alias_item->setHorizontalAlign("Left");
407 $_SESSION["il_pg_error"] = $this->pg_obj->update();
408 $this->ctrl->returnToParent($this, "jump" . $this->hier_id);
409 }
410
414 public function rightAlign()
415 {
416 $std_alias_item = new ilMediaAliasItem(
417 $this->dom,
418 $this->getHierId(),
419 "Standard",
420 $this->content_obj->getPcId(),
421 "InteractiveImage"
422 );
423 $std_alias_item->setHorizontalAlign("Right");
424 $_SESSION["il_pg_error"] = $this->pg_obj->update();
425 $this->ctrl->returnToParent($this, "jump" . $this->hier_id);
426 }
427
431 public function leftFloatAlign()
432 {
433 $std_alias_item = new ilMediaAliasItem(
434 $this->dom,
435 $this->getHierId(),
436 "Standard",
437 $this->content_obj->getPcId(),
438 "InteractiveImage"
439 );
440 $std_alias_item->setHorizontalAlign("LeftFloat");
441 $_SESSION["il_pg_error"] = $this->pg_obj->update();
442 $this->ctrl->returnToParent($this, "jump" . $this->hier_id);
443 }
444
448 public function rightFloatAlign()
449 {
450 $std_alias_item = new ilMediaAliasItem(
451 $this->dom,
452 $this->getHierId(),
453 "Standard",
454 $this->content_obj->getPcId(),
455 "InteractiveImage"
456 );
457 $std_alias_item->setHorizontalAlign("RightFloat");
458 $_SESSION["il_pg_error"] = $this->pg_obj->update();
459 $this->ctrl->returnToParent($this, "jump" . $this->hier_id);
460 }
461
465
472 public function listOverlayImages()
473 {
475 $ilToolbar = $this->toolbar;
476 $ilCtrl = $this->ctrl;
477 $ilTabs = $this->tabs;
479
480 ilUtil::sendInfo($lng->txt("cont_iim_overlay_info"));
481
482 $ilTabs->setTabActive("list_overlays");
483
484 $ilToolbar->addButton(
485 $lng->txt("cont_add_images"),
486 $ilCtrl->getLinkTarget($this, "addOverlayImages")
487 );
488
489 include_once("./Services/COPage/classes/class.ilPCIIMOverlaysTableGUI.php");
490 $tab = new ilPCIIMOverlaysTableGUI(
491 $this,
492 "listOverlayImages",
493 $this->content_obj->getMediaObject()
494 );
495 $tpl->setContent($tab->getHTML());
496 }
497
501 public function addOverlayImages($a_form = null)
502 {
504
505 if ($a_form) {
506 $form = $a_form;
507 } else {
508 $form = $this->initAddOverlaysForm();
509 }
510
511 $tpl->setContent($form->getHTML());
512 }
513
520 public function initAddOverlaysForm()
521 {
523 $ilCtrl = $this->ctrl;
524 $ilTabs = $this->tabs;
525
526 $ilTabs->setTabActive("list_overlays");
527
528 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
529 $form = new ilPropertyFormGUI();
530 $form->setTitle($lng->txt("cont_add_images"));
531 $form->setFormAction($ilCtrl->getFormAction($this));
532
533 // file input
534 include_once("./Services/Form/classes/class.ilFileWizardInputGUI.php");
535 $fi = new ilFileWizardInputGUI($lng->txt("file"), "ovfile");
536 $fi->setSuffixes(array("gif", "jpeg", "jpg", "png"));
537 $fi->setFilenames(array(0 => ''));
538 $fi->setRequired(true);
539 $form->addItem($fi);
540
541 $form->addCommandButton("uploadOverlayImages", $lng->txt("upload"));
542 $form->addCommandButton("listOverlayImages", $lng->txt("cancel"));
543
544 return $form;
545 }
546
547
554 public function uploadOverlayImages()
555 {
557 $ilCtrl = $this->ctrl;
558
559 $form = $this->initAddOverlaysForm();
560 if ($form->checkInput()) {
561 if (is_array($_FILES["ovfile"]["name"])) {
562 foreach ($_FILES["ovfile"]["name"] as $k => $v) {
563 $name = $_FILES["ovfile"]["name"][$k];
564 $mime = $_FILES["ovfile"]["type"][$k];
565 $tmp_name = $_FILES["ovfile"]["tmp_name"][$k];
566 $size = $_FILES["ovfile"]["size"][$k];
567
568 $this->content_obj->getMediaObject()->uploadAdditionalFile(
569 $name,
570 $tmp_name,
571 "overlays"
572 );
573 $piname = pathinfo($name);
574 $this->content_obj->getMediaObject()->makeThumbnail(
575 "overlays/" . $name,
576 basename($name, "." . $piname['extension']) . ".png"
577 );
578 }
579 }
580 ilUtil::sendSuccess($lng->txt("msg_obj_modified"));
581 $ilCtrl->redirect($this, "listOverlayImages");
582 } else {
583 $form->setValuesByPost();
584 $this->addOverlayImages($form);
585 }
586 }
587
591 public function confirmDeleteOverlays()
592 {
593 $ilCtrl = $this->ctrl;
596 $ilTabs = $this->tabs;
597
598 $ilTabs->setTabActive("list_overlays");
599
600 if (!is_array($_POST["file"]) || count($_POST["file"]) == 0) {
601 ilUtil::sendFailure($lng->txt("no_checkbox"), true);
602 $ilCtrl->redirect($this, "listOverlayImages");
603 } else {
604 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
605 $cgui = new ilConfirmationGUI();
606 $cgui->setFormAction($ilCtrl->getFormAction($this));
607 $cgui->setHeaderText($lng->txt("cont_really_delete_overlays"));
608 $cgui->setCancel($lng->txt("cancel"), "listOverlayImages");
609 $cgui->setConfirm($lng->txt("delete"), "deleteOverlays");
610
611 foreach ($_POST["file"] as $i => $d) {
612 $cgui->addItem("file[]", $i, $i);
613 }
614
615 $tpl->setContent($cgui->getHTML());
616 }
617 }
618
622 public function deleteOverlays()
623 {
624 $ilCtrl = $this->ctrl;
626
627 if (is_array($_POST["file"]) && count($_POST["file"]) != 0) {
628 foreach ($_POST["file"] as $f) {
629 $f = str_replace("..", "", ilUtil::stripSlashes($f));
630 $this->content_obj->getMediaObject()
631 ->removeAdditionalFile("overlays/" . $f);
632 }
633
634 ilUtil::sendSuccess($lng->txt("cont_overlays_have_been_deleted"), true);
635 }
636 $ilCtrl->redirect($this, "listOverlayImages");
637 }
638
639
643
647 public function listContentPopups()
648 {
650 $ilToolbar = $this->toolbar;
651 $ilCtrl = $this->ctrl;
652 $ilTabs = $this->tabs;
654
655 ilUtil::sendInfo($lng->txt("cont_iim_content_popups_info"));
656
657 $ilTabs->setTabActive("content_popups");
658
659 $ilToolbar->addButton(
660 $lng->txt("cont_add_popup"),
661 $ilCtrl->getLinkTarget($this, "addPopup")
662 );
663
664 include_once("./Services/COPage/classes/class.ilPCIIMPopupTableGUI.php");
665 $tab = new ilPCIIMPopupTableGUI(
666 $this,
667 "listContentPopups",
668 $this->content_obj
669 );
670 $tpl->setContent($tab->getHTML());
671 }
672
679 public function addPopup()
680 {
681 $ilCtrl = $this->ctrl;
683
684 $this->content_obj->addContentPopup();
685 $this->pg_obj->update();
686 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
687 $ilCtrl->redirect($this, "listContentPopups");
688 }
689
693 public function savePopups()
694 {
695 $ilCtrl = $this->ctrl;
697
698 if (is_array($_POST["title"])) {
699 $titles = ilUtil::stripSlashesArray($_POST["title"]);
700 $this->content_obj->savePopUps($titles);
701 $this->pg_obj->update();
702 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
703 }
704 $ilCtrl->redirect($this, "listContentPopups");
705 }
706
710 public function confirmPopupDeletion()
711 {
712 $ilCtrl = $this->ctrl;
715 $ilTabs = $this->tabs;
716
717 $ilTabs->setTabActive("content_popups");
718
719 if (!is_array($_POST["tid"]) || count($_POST["tid"]) == 0) {
720 ilUtil::sendFailure($lng->txt("no_checkbox"), true);
721 $ilCtrl->redirect($this, "listContentPopups");
722 } else {
723 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
724 $cgui = new ilConfirmationGUI();
725 $cgui->setFormAction($ilCtrl->getFormAction($this));
726 $cgui->setHeaderText($lng->txt("cont_really_delete_popups"));
727 $cgui->setCancel($lng->txt("cancel"), "listContentPopups");
728 $cgui->setConfirm($lng->txt("delete"), "deletePopups");
729
730 foreach ($_POST["tid"] as $i => $d) {
731 $cgui->addItem("tid[]", $i, $_POST["title"][$i]);
732 }
733
734 $tpl->setContent($cgui->getHTML());
735 }
736 }
737
744 public function deletePopups()
745 {
747 $ilCtrl = $this->ctrl;
748
749 if (is_array($_POST["tid"]) && count($_POST["tid"]) != 0) {
750 foreach ($_POST["tid"] as $id) {
751 $id = explode(":", $id);
752 $this->content_obj->deletePopup($id[0], $id[1]);
753 }
754 $this->pg_obj->update();
755 ilUtil::sendSuccess($lng->txt("cont_popups_have_been_deleted"), true);
756 }
757 $ilCtrl->redirect($this, "listContentPopups");
758 }
759}
$size
Definition: RandomTest.php:84
$location
Definition: buildRTE.php:44
$_POST["username"]
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
Confirmation screen class.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a file wizard property in a property form.
This class represents an image file property in a property form.
Class ilMediaAliasItem.
Class ilMediaItem Media Item, component of a media object (file or reference)
static getMimeType($a_file, $a_external=null)
get mime type for file
static _getDirectory($a_mob_id)
Get absolute directory.
TableGUI class for interactive image overlays.
TableGUI class for content popup.
User interface class for page content map editor.
User interface class for interactive images.
confirmPopupDeletion()
Confirm popup deletion.
editBaseImage($a_form=null)
Edit base image.
rightFloatAlign()
align media object to right, floating text
leftAlign()
align media object to left
__construct($a_pg_obj, $a_content_obj, $a_hier_id=0, $a_pc_id="")
Constructor @access public.
initAddOverlaysForm()
Init add overlays form.
insert($a_post_cmd="edpost", $a_submit_cmd="create_mob", $a_input_error=false)
Insert new media object form.
leftFloatAlign()
align media object to left, floating text
uploadOverlayImages()
Upload overlay images.
create()
Create new content element.
initForm($a_mode="edit")
Init creation/base image form.
getTabs(&$tab_gui, $a_create=false, $a_change_obj_ref=false)
Add tabs to ilTabsGUI object.
centerAlign()
Align media object to center.
confirmDeleteOverlays()
Confirm overlay deletion.
addOverlayImages($a_form=null)
Add overlay images.
rightAlign()
align media object to right
User Interface for Editing of Page Content Objects (Paragraphs, Tables, ...)
getHierId()
get hierarchical id in dom object
displayValidationError()
display validation errors
setHierId($a_hier_id)
get hierarchical id in dom object
This class represents a property form user interface.
This class represents a text property in a property form.
static moveUploadedFile($a_file, $a_name, $a_target, $a_raise_errors=true, $a_mode="move_uploaded")
move uploaded file
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
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)
static renameExecutables($a_dir)
Rename uploaded executables for security reasons.
static stripSlashesArray($a_arr, $a_strip_html=true, $a_allow="")
Strip slashes from array.
for( $i=6;$i< 13;$i++) for($i=1; $i< 13; $i++) $d
Definition: date.php:296
global $DIC
Definition: goto.php:24
if($format !==null) $name
Definition: metadata.php:230
$format
Definition: metadata.php:218
$i
Definition: metadata.php:24
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$ret
Definition: parser.php:6