ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilPCPlaceHolderGUI.php
Go to the documentation of this file.
1<?php
2
26{
27 public const TYPE_TEXT = "Text";
28 public const TYPE_QUESTION = "Question";
29 public const TYPE_MEDIA = "Media";
30 public const TYPE_VERIFICATION = "Verification";
32
33 public function __construct(
34 ilPageObject $a_pg_obj,
35 ?ilPageContent $a_content_obj,
36 string $a_hier_id,
37 string $a_pc_id = ""
38 ) {
39 global $DIC;
40
41 $this->lng = $DIC->language();
42 $this->pg_obj = $a_pg_obj;
43 $this->content_obj = $a_content_obj;
44 $this->hier_id = $a_hier_id;
45 $this->pc_id = $a_pc_id;
46
47 parent::__construct($a_pg_obj, $a_content_obj, $a_hier_id, $a_pc_id);
48 }
49
50 public function executeCommand(): void
51 {
52 // get next class that processes or forwards current command
53 $next_class = $this->ctrl->getNextClass($this);
54 // get current command
55 $cmd = $this->ctrl->getCmd();
56
57 switch ($next_class) {
58 case 'ilpcmediaobjectgui': //special handling
59 $media_gui = new ilPCMediaObjectGUI($this->pg_obj, $this->content_obj, $this->hier_id, $this->pc_id);
60 $ret = $this->ctrl->forwardCommand($media_gui);
61 break;
62
63 default:
64 $this->$cmd();
65 break;
66 }
67 }
68
69 protected function insert(): void
70 {
71 $this->propertyGUI("create", self::TYPE_TEXT, "100px", "insert");
72 }
73
74 protected function create(): void
75 {
76 $plach_height = $this->request->getString("plach_height");
77 if ($plach_height == "" ||
78 !preg_match("/[0-9]+/", $plach_height)) {
79 $this->insert();
80 return;
81 }
82
83 $this->content_obj = new ilPCPlaceHolder($this->getPage());
84 $this->content_obj->create($this->pg_obj, $this->hier_id, $this->pc_id);
85 $this->content_obj->setHeight($plach_height . "px");
86 $this->content_obj->setContentClass(
87 $this->request->getString("plach_type")
88 );
89 $this->updated = $this->pg_obj->update();
90 if ($this->updated === true) {
91 $this->ctrl->returnToParent($this, "jump" . $this->hier_id);
92 } else {
93 $this->insert();
94 }
95 }
96
97 public function edit(): void
98 {
99 if ($this->getPageConfig()->getEnablePCType("PlaceHolder")) {
100 $this->edit_object();
101 } else {
102 $this->forward_edit();
103 }
104 }
105
106 public function setStyleId(int $a_styleid): void
107 {
108 $this->styleid = $a_styleid;
109 }
110
111 public function getStyleId(): int
112 {
113 return $this->styleid;
114 }
115
116 protected function edit_object(): void
117 {
118 $this->propertyGUI(
119 "saveProperties",
120 $this->content_obj->getContentClass(),
121 $this->content_obj->getHeight(),
122 "save"
123 );
124 }
125
126 protected function forward_edit(): void
127 {
128 switch ($this->content_obj->getContentClass()) {
129 case self::TYPE_MEDIA:
130 $this->ctrl->saveParameterByClass(
131 ilPCMediaObjectGUI::class,
132 ["pc_id", "hier_id", "obj_id", "active_node"]
133 );
134 $this->ctrl->redirectByClass(
135 [ilPCMediaObjectGUI::class],
136 "insert"
137 );
138 break;
139
141 $this->ctrl->saveParameterByClass(
142 ilPCQuestionGUI::class,
143 ["pc_id", "hier_id", "obj_id", "active_node"]
144 );
145 $this->ctrl->redirectByClass(
146 [ilPCQuestionGUI::class],
147 "insert"
148 );
149 break;
150
151 default:
152 break;
153 }
154 }
155
156
160 protected function saveProperties(): void
161 {
162 $plach_height = $this->request->getString("plach_height");
163 if ($plach_height == "" ||
164 !preg_match("/[0-9]+/", $plach_height)) {
165 $this->edit_object();
166 return;
167 }
168
169 $this->content_obj->setContentClass($this->request->getString("plach_type"));
170 $this->content_obj->setHeight($plach_height . "px");
171
172 $this->updated = $this->pg_obj->update();
173 if ($this->updated === true) {
174 $this->ctrl->returnToParent($this, "jump" . $this->hier_id);
175 } else {
176 $this->pg_obj->addHierIDs();
177 $this->edit();
178 }
179 }
180
185 {
187
188 $this->form_gui = new ilPropertyFormGUI();
189 $this->form_gui->setFormAction($this->ctrl->getFormAction($this));
190 $this->form_gui->setTitle($lng->txt("cont_ed_plachprop"));
191
192 $ttype_input = new ilRadioGroupInputGUI($lng->txt("type"), "plach_type");
193 $type_captions = $this->getTypeCaptions();
194 foreach ($this->getAvailableTypes("") as $type) {
195 $ttype_input->addOption(new ilRadioOption($type_captions[$type], $type));
196 }
197 $ttype_input->setValue("Text");
198 $ttype_input->setRequired(true);
199 $this->form_gui->addItem($ttype_input);
200
201 /*
202 $theight_input = new ilTextInputGUI($lng->txt("height"), "plach_height");
203 $theight_input->setSize(4);
204 $theight_input->setMaxLength(3);
205 $theight_input->setTitle($lng->txt("height") . " (px)");
206 $theight_input->setRequired(true);
207 $this->form_gui->addItem($theight_input);
208
209 $theight_input->setValue(preg_replace("/px/", "", $a_height));*/
210 if ($this->content_obj) {
211 $ttype_input->setValue($this->content_obj->getContentClass());
212 }
213
214 $this->form_gui->addCommandButton("insert", $lng->txt("insert"));
215 $this->form_gui->addCommandButton("cancelCreate", $lng->txt("cancel"));
216 return $this->form_gui;
217 }
218
219 public function cancel(): void
220 {
221 $this->ctrl->returnToParent($this, "jump" . $this->hier_id);
222 }
223
224 protected function getAvailableTypes(
225 string $a_selected_type = ""
226 ): array {
227 // custom config?
228 if (method_exists($this->getPage()->getPageConfig(), "getAvailablePlaceholderTypes")) {
229 $types = $this->getPage()->getPageConfig()->getAvailablePlaceholderTypes();
230 } else {
231 $types = array(self::TYPE_TEXT, self::TYPE_MEDIA, self::TYPE_QUESTION);
232 }
233 return $types;
234 }
235
236 protected function getTypeCaptions(): array
237 {
239
240 return array(
241 self::TYPE_TEXT => $lng->txt("cont_ed_plachtext"),
242 self::TYPE_MEDIA => $lng->txt("cont_ed_plachmedia"),
243 self::TYPE_QUESTION => $lng->txt("cont_ed_plachquestion"),
244 self::TYPE_VERIFICATION => $lng->txt("cont_ed_plachverification")
245 );
246 }
247}
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(ilPageObject $a_pg_obj, ?ilPageContent $a_content_obj, string $a_hier_id, string $a_pc_id="")
saveProperties()
save placeholder properties in db and return to page edit screen
getAvailableTypes(string $a_selected_type="")
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
User Interface for Editing of Page Content Objects (Paragraphs, Tables, ...)
Content object of ilPageObject (see ILIAS DTD).
Class ilPageObject Handles PageObjects of ILIAS Learning Modules (see ILIAS DTD)
This class represents a property form user interface.
This class represents a property in a property form.
This class represents an option in a radio group.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
global $lng
Definition: privfeed.php:31
if(!file_exists('../ilias.ini.php'))
global $DIC
Definition: shib_login.php:26