ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilPCContentTemplate.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
5require_once("./Services/COPage/classes/class.ilPageContent.php");
6
17{
21 public function init()
22 {
23 $this->setType("templ");
24 }
25
29 public function setNode($a_node)
30 {
31 parent::setNode($a_node); // this is the PageContent node
32 }
33
42 public function create($a_pg_obj, $a_hier_id, $a_pc_id, $a_page_templ)
43 {
44 $source_id = explode(":", $a_page_templ);
45 $source_page = ilPageObjectFactory::getInstance($source_id[1], $source_id[0]);
46 $source_page->buildDom();
47 $source_page->addHierIds();
48 $hier_ids = $source_page->getHierIds();
49
50 $copy_ids = array();
51 foreach ($hier_ids as $hier_id) {
52 // move top level nodes only
53 if (!is_int(strpos($hier_id, "_"))) {
54 if ($hier_id != "pg" && $hier_id >= $a_hid) {
55 $copy_ids[] = $hier_id;
56 }
57 }
58 }
59 asort($copy_ids);
60
61 // get the target parent node
62 $pos = explode("_", $a_pos);
63 array_pop($pos);
64 $parent_pos = implode($pos, "_");
65 if ($parent_pos != "") {
66 $target_parent = $a_pg_obj->getContentNode($parent_pos);
67 } else {
68 $target_parent = $a_pg_obj->getNode();
69 }
70
71 //$source_parent = $source_page->getContentNode("pg");
72
73 $curr_node = $a_pg_obj->getContentNode($a_hier_id, $a_pcid);
74
75 foreach ($copy_ids as $copy_id) {
76 $source_node = $source_page->getContentNode($copy_id);
77 $new_node = $source_node->clone_node(true);
78 $new_node->unlink_node($new_node);
79
80 if ($succ_node = $curr_node->next_sibling()) {
81 $succ_node->insert_before($new_node, $succ_node);
82 } else {
83 //echo "movin doin append_child";
84 $target_parent->append_child($new_node);
85 }
86
87 //$xpc = xpath_new_context($a_pg_obj->getDomDoc());
88 $xpath = new DOMXpath($a_pg_obj->getDomDoc());
89 //var_dump($new_node->myDOMNode);
90 //echo "-".$new_node->get_attribute("PCID")."-"; exit;
91 if ($new_node->get_attribute("PCID") != "") {
92 $new_node->set_attribute("PCID", "");
93 }
94 $els = $xpath->query(".//*[@PCID]", $new_node->myDOMNode);
95 foreach ($els as $el) {
96 $el->setAttribute("PCID", "");
97 }
98 $curr_node = $new_node;
99 }
100
101 $a_pg_obj->update();
102
103 //$this->node = $this->createPageContentNode();
104
105 /*$a_pg_obj->insertContent($this, $a_hier_id, IL_INSERT_AFTER, $a_pc_id);
106 $this->map_node =& $this->dom->create_element("Map");
107 $this->map_node =& $this->node->append_child($this->map_node);
108 $this->map_node->set_attribute("Latitude", "0");
109 $this->map_node->set_attribute("Longitude", "0");
110 $this->map_node->set_attribute("Zoom", "3");*/
111 }
112}
An exception for terminatinating execution or to throw for unit testing.
Content templates are not existing in the page.
init()
Init page content component.
create($a_pg_obj, $a_hier_id, $a_pc_id, $a_page_templ)
Insert content template.
setNode($a_node)
Set node (in fact this will never be called, since these types of nodes do not exist.
Class ilPageContent.
setType($a_type)
Set Type.
static getInstance($a_parent_type, $a_id=0, $a_old_nr=0, $a_lang="-")
Get page object instance.