ILIAS  trunk Revision v11.0_alpha-1715-g7fc467680fb
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
PageContentManagerTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
25 
30 {
31  public function testGetContentDomNodePg(): void
32  {
33  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
34  $page = $this->getEmptyPageWithDom();
35  $page_content = new PageContentManager($page->getDomDoc());
36 
37  $this->insertParagraphAt($page, "pg", "Hello");
38  $this->insertParagraphAt($page, "1", "World");
39  $page->insertPCIds();
40 
41  $node = $page_content->getContentDomNode("pg");
42 
43  $expected = <<<EOT
44 <PageObject HierId="pg"><PageContent HierId="1" PCID="00000000000000000000000000000001"><Paragraph Language="en">Hello</Paragraph></PageContent><PageContent HierId="2" PCID="00000000000000000000000000000002"><Paragraph Language="en">World</Paragraph></PageContent></PageObject>
45 EOT;
46 
47  $this->assertXmlEquals(
48  $expected,
49  $dom_util->dump($node)
50  );
51  }
52 
53  public function testGetContentDomNodePCId(): void
54  {
55  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
56  $page = $this->getEmptyPageWithDom();
57  $page_content = new PageContentManager($page->getDomDoc());
58 
59  $this->insertParagraphAt($page, "pg", "Hello");
60  $this->insertParagraphAt($page, "1", "World");
61  $page->insertPCIds();
62 
63  $node = $page_content->getContentDomNode("", "00000000000000000000000000000002");
64 
65  $expected = <<<EOT
66 <PageContent HierId="2" PCID="00000000000000000000000000000002"><Paragraph Language="en">World</Paragraph></PageContent>
67 EOT;
68 
69  $this->assertXmlEquals(
70  $expected,
71  $dom_util->dump($node)
72  );
73  }
74 
75  public function testGetContentDomNodeHierId(): void
76  {
77  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
78  $page = $this->getEmptyPageWithDom();
79  $page_content = new PageContentManager($page->getDomDoc());
80 
81  $this->insertParagraphAt($page, "pg", "Hello");
82  $this->insertParagraphAt($page, "1", "World");
83  $page->insertPCIds();
84 
85  $node = $page_content->getContentDomNode("1");
86 
87  $expected = <<<EOT
88 <PageContent HierId="1" PCID="00000000000000000000000000000001"><Paragraph Language="en">Hello</Paragraph></PageContent>
89 EOT;
90  $this->assertXmlEquals(
91  $expected,
92  $dom_util->dump($node)
93  );
94  }
95 
96  public function testDeleteContent(): void
97  {
98  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
99  $page = $this->getEmptyPageWithDom();
100  $page_content = new PageContentManager($page->getDomDoc());
101 
102  $this->insertParagraphAt($page, "pg", "Hello");
103  $this->insertParagraphAt($page, "1", "World");
104  $page->insertPCIds();
105 
106  $page_content->deleteContent($page, "1");
107 
108  $expected = <<<EOT
109 <PageObject HierId="pg"><PageContent HierId="2" PCID="00000000000000000000000000000002"><Paragraph Language="en">World</Paragraph></PageContent></PageObject>
110 EOT;
111  $this->assertXmlEquals(
112  $expected,
113  $page->getXMLFromDom()
114  );
115  }
116 
117  public function testDeleteContents(): void
118  {
119  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
120  $page = $this->getEmptyPageWithDom();
121  $page_content = new PageContentManager($page->getDomDoc());
122 
123  $this->insertParagraphAt($page, "pg", "Hello");
124  $this->insertParagraphAt($page, "1", "little");
125  $this->insertParagraphAt($page, "2", "World");
126  $page->insertPCIds();
127 
128  $page_content->deleteContents($page, ["1", "2"]);
129 
130  $expected = <<<EOT
131 <PageObject HierId="pg"><PageContent HierId="3" PCID="00000000000000000000000000000003"><Paragraph Language="en">World</Paragraph></PageContent></PageObject>
132 EOT;
133  $this->assertXmlEquals(
134  $expected,
135  $page->getXMLFromDom()
136  );
137  }
138 
139  public function testSwitchEnableMultiple(): void
140  {
141  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
142  $page = $this->getEmptyPageWithDom();
143  $page_content = new PageContentManager(
144  $page->getDomDoc(),
145  $this->getPCDefinition()
146  );
147 
148  $this->insertParagraphAt($page, "pg", "Hello");
149  $this->insertParagraphAt($page, "1", "little");
150  $this->insertParagraphAt($page, "2", "World");
151  $page->insertPCIds();
152 
153  $page_content->switchEnableMultiple($page, ["1", "2"]);
154 
155  $expected = <<<EOT
156 <PageObject HierId="pg"><PageContent HierId="1" PCID="00000000000000000000000000000001" Enabled="False"><Paragraph Language="en">Hello</Paragraph></PageContent><PageContent HierId="2" PCID="00000000000000000000000000000002" Enabled="False"><Paragraph Language="en">little</Paragraph></PageContent><PageContent HierId="3" PCID="00000000000000000000000000000003"><Paragraph Language="en">World</Paragraph></PageContent></PageObject>
157 EOT;
158  $this->assertXmlEquals(
159  $expected,
160  $page->getXMLFromDom()
161  );
162  }
163 
164  public function testInitialOpenedContent(): void
165  {
166  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
167  $page = $this->getEmptyPageWithDom();
168  $page_content = new PageContentManager(
169  $page->getDomDoc(),
170  $this->getPCDefinition()
171  );
172 
173  $this->insertParagraphAt($page, "pg", "Hello");
174  $page->insertPCIds();
175 
176  $page_content->setInitialOpenedContent(
177  "media",
178  5,
179  ""
180  );
181 
182  $expected = [
183  "id" => 5,
184  "type" => "media",
185  "target" => ""
186  ];
187 
188  $this->assertEquals(
189  $expected,
190  $page_content->getInitialOpenedContent()
191  );
192 
193  $expected = <<<EOT
194 <PageObject HierId="pg"><PageContent HierId="1" PCID="00000000000000000000000000000001"><Paragraph Language="en">Hello</Paragraph></PageContent><InitOpenedContent><IntLink Target="il__mob_5" Type="MediaObject" TargetFrame=""/></InitOpenedContent></PageObject>
195 EOT;
196  $this->assertXmlEquals(
197  $expected,
198  $page->getXMLFromDom()
199  );
200  }
201 
202  public function testInitialOpenedContent2(): void
203  {
204  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
205  $page = $this->getEmptyPageWithDom();
206  $page_content = new PageContentManager(
207  $page->getDomDoc(),
208  $this->getPCDefinition()
209  );
210 
211  $this->insertParagraphAt($page, "pg", "Hello");
212  $page->insertPCIds();
213 
214  $page_content->setInitialOpenedContent(
215  "media",
216  5,
217  ""
218  );
219 
220  $page_content->setInitialOpenedContent(
221  "term",
222  10,
223  "Glossary"
224  );
225 
226  $expected = [
227  "id" => 10,
228  "type" => "term",
229  "target" => "Glossary"
230  ];
231 
232  $this->assertEquals(
233  $expected,
234  $page_content->getInitialOpenedContent()
235  );
236 
237  $expected = <<<EOT
238 <PageObject HierId="pg"><PageContent HierId="1" PCID="00000000000000000000000000000001"><Paragraph Language="en">Hello</Paragraph></PageContent><InitOpenedContent><IntLink Target="il__git_10" Type="GlossaryItem" TargetFrame="Glossary"/></InitOpenedContent></PageObject>
239 EOT;
240  $this->assertXmlEquals(
241  $expected,
242  $page->getXMLFromDom()
243  );
244  }
245 
246  public function testInitialOpenedContent3(): void
247  {
248  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
249  $page = $this->getEmptyPageWithDom();
250  $page_content = new PageContentManager(
251  $page->getDomDoc(),
252  $this->getPCDefinition()
253  );
254 
255  $this->insertParagraphAt($page, "pg", "Hello");
256  $page->insertPCIds();
257 
258  $page_content->setInitialOpenedContent(
259  "media",
260  5,
261  ""
262  );
263 
264  $page_content->setInitialOpenedContent();
265 
266  $expected = [];
267 
268  $this->assertEquals(
269  $expected,
270  $page_content->getInitialOpenedContent()
271  );
272 
273  $expected = <<<EOT
274 <PageObject HierId="pg"><PageContent HierId="1" PCID="00000000000000000000000000000001"><Paragraph Language="en">Hello</Paragraph></PageContent></PageObject>
275 EOT;
276  $this->assertXmlEquals(
277  $expected,
278  $page->getXMLFromDom()
279  );
280  }
281 
282  public function testInsertInstIntoIDsIntLink(): void
283  {
284  $dom_util = new \ILIAS\COPage\Dom\DomUtil();
285  $page = $this->getEmptyPageWithDom();
286  $page_content = new PageContentManager(
287  $page->getDomDoc(),
288  $this->getPCDefinition()
289  );
290 
291  $xml = $this->legacyHtmlToXml(
292  '<div id="1:1234" class="ilc_text_block_Standard">' .
293  '[iln page="107"] xx [/iln]' .
294  '</div>'
295  );
296 
297  $this->insertParagraphAt($page, "pg", $xml);
298  $page->insertPCIds();
299 
300  $page_content->insertInstIntoIDs("8877");
301 
302  $this->assertStringContainsString(
303  '<IntLink Target="il_8877_pg_107" Type="PageObject">',
304  $page->getXMLFromDom()
305  );
306  }
307 
308  public function testInsertInstIntoIDsFileItem(): void
309  {
310  $page = $this->getEmptyPageWithDom();
311  $page_content = new PageContentManager(
312  $page->getDomDoc(),
313  $this->getPCDefinition()
314  );
315 
316  $pc = new \ilPCFileList($page);
317  $pc->create($page, "pg");
318  $pc->appendItem(10, "file_loc", "image/jpeg");
319  $page->insertPCIds();
320 
321  $page_content->insertInstIntoIDs("8877");
322 
323  $this->assertStringContainsString(
324  '<Identifier Catalog="ILIAS" Entry="il_8877_file_10"/>',
325  $page->getXMLFromDom()
326  );
327  }
328 
329  public function testInsertInstIntoIDsQuestion(): void
330  {
331  $page = $this->getEmptyPageWithDom();
332  $page_content = new PageContentManager(
333  $page->getDomDoc(),
334  $this->getPCDefinition()
335  );
336 
337  $pc = new \ilPCQuestion($page);
338  $pc->create($page, "pg", "");
339  $pc->setQuestionReference("il__qst_13");
340  $page_content->insertInstIntoIDs("8877");
341 
342  $this->assertStringContainsString(
343  '<Question QRef="il_8877_qst_13"/>',
344  $page->getXMLFromDom()
345  );
346  }
347 
348  public function testInsertInstIntoIDsContentInclude(): void
349  {
350  $page = $this->getEmptyPageWithDom();
351  $page_content = new PageContentManager(
352  $page->getDomDoc(),
353  $this->getPCDefinition()
354  );
355 
356  $pc = new \ilPCContentInclude($page);
357  $pc->create($page, "pg");
358  $pc->setContentId(13);
359  $page_content->insertInstIntoIDs("8877");
360 
361  $this->assertStringContainsString(
362  '<ContentInclude ContentId="13" InstId="8877"/>',
363  $page->getXMLFromDom()
364  );
365  }
366 }
insertParagraphAt(\ilPageObject $page, string $hier_id, string $text="")
legacyHtmlToXml(string $content)
assertXmlEquals(string $expected_xml_as_string, string $html_xml_string)