ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
ilPCSourceCode Class Reference

Class ilPCSourceCode. More...

+ Inheritance diagram for ilPCSourceCode:
+ Collaboration diagram for ilPCSourceCode:

Public Member Functions

 init ()
 Init page content component. More...
 
 modifyPageContentPostXsl ($a_output, $outputmode="presentation")
 Modify page content after xsl. More...
 
 highlightText ($a_text, $proglang, $autoindent)
 Highligths Text with given ProgLang. More...
 
 hasHighlighter ($hfile_ext)
 
- Public Member Functions inherited from ilPCParagraph
 init ()
 Init page content component. More...
 
 setNode (&$a_node)
 Set Page Content Node. More...
 
 createAtNode (&$node)
 Create new page content (incl. More...
 
 createBeforeNode (&$node)
 Create new page content (incl. More...
 
 createAfter ($node)
 Create paragraph node (incl. More...
 
 create (&$a_pg_obj, $a_hier_id, $a_pc_id="")
 Create paragraph node (incl. More...
 
 setText ($a_text, $a_auto_split=false)
 Set (xml) content of text paragraph. More...
 
 getText ($a_short_mode=false)
 Get (xml) content of paragraph. More...
 
 getParagraphSequenceContent ($a_pg_obj)
 Get paragraph sequenc of current paragraph. More...
 
 setCharacteristic ($a_char)
 Set Characteristic of paragraph. More...
 
 getCharacteristic ()
 Get characteristic of paragraph. More...
 
 setSubCharacteristic ($a_char)
 set attribute subcharacteristic More...
 
 getAutoIndent ()
 Get AutoIndent (Code Paragraphs) More...
 
 setAutoIndent ($a_char)
 
 getSubCharacteristic ()
 get attribute subcharacteristic More...
 
 setDownloadTitle ($a_char)
 set attribute download title More...
 
 getDownloadTitle ()
 get attribute download title More...
 
 setShowLineNumbers ($a_char)
 set attribute showlinenumbers More...
 
 getShowLineNumbers ()
 get attribute showlinenumbers More...
 
 setLanguage ($a_lang)
 set language More...
 
 getLanguage ()
 get language More...
 
 input2xml ($a_text, $a_wysiwyg=0, $a_handle_lists=true)
 
 autoSplit ($a_text)
 This function splits a paragraph text that has been already processed with input2xml at each header position =header1=, ==header2== or ===header3=== and returns an array that contains the single chunks. More...
 
 handleNextBr ($a_str)
 Remove preceding
More...
 
 removeTrailingBr ($a_str)
 Remove trailing
More...
 
 getType ()
 Need to override getType from ilPageContent to distinguish between Pararagraph and Source. More...
 
 saveJS ($a_pg_obj, $a_content, $a_char, $a_pc_id, $a_insert_at="")
 Save input coming from ajax. More...
 
 getLastSavedPCId ($a_pg_obj, $a_as_ajax_str=false)
 Get last inserted pc ids. More...
 
 updatePage ($a_page)
 Update page object (it would be better to have this centralized and to change the constructors and pass the page object instead the dom object) More...
 
 autoLinkGlossaries ($a_glos)
 Auto link glossaries. More...
 
 saveAnchors ($a_page, $a_domdoc)
 Save anchors. More...
 
 saveMetaKeywords ($a_page, $a_domdoc)
 save all keywords More...
 
- Public Member Functions inherited from ilPageContent
 __construct ($a_pg_obj)
 Constructor. More...
 
 setPage ($a_val)
 Set page. More...
 
 getPage ()
 Get page. More...
 
 init ()
 Init object. More...
 
 getType ()
 Get type of page content. More...
 
 setNode (&$a_node)
 Set xml node of page content. More...
 
getNode ()
 Get xml node of page content. More...
 
 getJavascriptFiles ()
 Get Javascript files. More...
 
 getCssFiles ()
 Get css files. More...
 
 getOnloadCode ()
 Get on load code. More...
 
 setHierId ($a_hier_id)
 Set hierarchical ID in xml structure. More...
 
 getHierId ()
 Get hierarchical id. More...
 
 lookupHierId ()
 Get hierarchical id from dom. More...
 
 readHierId ()
 Read PC Id. More...
 
 setPcId ($a_pcid)
 Set PC Id. More...
 
 getPCId ()
 Get PC Id. More...
 
 readPCId ()
 Read PC Id. More...
 
 writePCId ($a_pc_id)
 Write pc id. More...
 
 isGreaterHierId ($a, $b)
 Check whether Hier ID $a is greater than Hier ID $b. More...
 
 setEnabled ($value)
 Set Enabled value for page content component. More...
 
 enable ()
 Enable page content. More...
 
 disable ()
 Disable page content. More...
 
 isEnabled ()
 Check whether page content is enabled. More...
 
 createPageContentNode ($a_set_this_node=true)
 Create page content node (always use this method first when adding a new element) More...
 
 modifyPageContentPostXsl ($a_output, $a_mode)
 Modify page content after xsl. More...
 

Static Public Member Functions

static getLangVars ()
 Get lang vars needed for editing. More...
 
- Static Public Member Functions inherited from ilPCParagraph
static _input2xml ($a_text, $a_lang, $a_wysiwyg=0, $a_handle_lists=true)
 converts user input to xml More...
 
static intLinks2xml ($a_text)
 internal links to xml More...
 
static input2xmlReplaceLists ($a_text)
 Converts xml from DB to output in edit textarea. More...
 
static xml2outputReplaceLists ($a_text)
 Replaces

with *. More...

 
static segmentString ($a_haystack, $a_needles)
 Segments a string into an array at each position of a substring. More...
 
static xml2output ($a_text, $a_wysiwyg=false, $a_replace_lists=true)
 Converts xml from DB to output in edit textarea. More...
 
static handleAjaxContent ($a_content)
 Handle ajax content. More...
 
static handleAjaxContentPost ($text)
 Post input2xml handling of ajax content. More...
 
static autoLinkGlossariesPage ($a_page, $a_terms)
 Auto link glossary of whole page. More...
 
static afterPageUpdate ($a_page, DOMDocument $a_domdoc, $a_xml, $a_creation)
 After page has been updated (or created) More...
 
static beforePageDelete ($a_page)
 Before page is being deleted. More...
 
static afterPageHistoryEntry ($a_page, DOMDocument $a_old_domdoc, $a_old_xml, $a_old_nr)
 After page history entry has been created. More...
 
static _deleteAnchors ($a_parent_type, $a_page_id, $a_page_lang)
 Delete anchors of a page. More...
 
static _saveAnchor ($a_parent_type, $a_page_id, $a_page_lang, $a_anchor_name)
 Save an anchor. More...
 
static _readAnchors ($a_parent_type, $a_page_id, $a_page_lang="-")
 Read anchors of a page. More...
 
- Static Public Member Functions inherited from ilPageContent
static incEdId ($ed_id)
 Increases an hierarchical editing id at lowest level (last number) More...
 
static decEdId ($ed_id)
 Decreases an hierarchical editing id at lowest level (last number) More...
 
static haveSameContainer ($ed_id1, $ed_id2)
 Check, if two ids are in same container. More...
 
static sortHierIds ($a_array)
 Sort an array of Hier IDS in ascending order. More...
 
static getLangVars ()
 Get lang vars needed for editing. More...
 
static handleCopiedContent (DOMDocument $a_domdoc, $a_self_ass=true, $a_clone_mobs=false)
 Handle copied content. More...
 
static afterPageUpdate ($a_page, DOMDocument $a_domdoc, $a_xml, $a_creation)
 After page has been updated (or created) More...
 
static beforePageDelete ($a_page)
 Before page is being deleted. More...
 
static afterPageHistoryEntry ($a_page, DOMDocument $a_old_domdoc, $a_old_xml, $a_old_nr)
 After page history entry has been created. More...
 

Additional Inherited Members

- Data Fields inherited from ilPCParagraph
 $dom
 
 $par_node
 
- Data Fields inherited from ilPageContent
 $hier_id
 
 $node
 
 $dom
 
- Protected Member Functions inherited from ilPageContent
 setType ($a_type)
 Set Type. More...
 
- Static Protected Member Functions inherited from ilPCParagraph
static linkTermsInDom ($a_dom, $a_terms, $a_par_node=null)
 Link terms in a dom page object in bb style. More...
 

Detailed Description

Class ilPCSourceCode.

Paragraph of ilPageObject

Author
Roland Küstermann
Alex Killing alex..nosp@m.kill.nosp@m.ing@g.nosp@m.mx.d.nosp@m.e
Version
$Id$

Definition at line 17 of file class.ilPCSourceCode.php.

Member Function Documentation

◆ getLangVars()

static ilPCSourceCode::getLangVars ( )
static

Get lang vars needed for editing.

Returns
array array of lang var keys

Reimplemented from ilPageContent.

Definition at line 31 of file class.ilPCSourceCode.php.

32 {
33 return array("ed_insert_code", "pc_code");
34 }

◆ hasHighlighter()

ilPCSourceCode::hasHighlighter (   $hfile_ext)

Definition at line 174 of file class.ilPCSourceCode.php.

175 {
176 return file_exists ("Services/COPage/syntax_highlight/php/HFile/HFile_".$hfile_ext.".php");
177 }

Referenced by highlightText().

+ Here is the caller graph for this function:

◆ highlightText()

ilPCSourceCode::highlightText (   $a_text,
  $proglang,
  $autoindent 
)

Highligths Text with given ProgLang.

Definition at line 151 of file class.ilPCSourceCode.php.

152 {
153
154 if (!$this->hasHighlighter($proglang))
155 {
156 $proglang="plain";
157 }
158
159 require_once("./Services/COPage/syntax_highlight/php/HFile/HFile_".$proglang.".php");
160 $classname = "HFile_$proglang";
161 $h_instance = new $classname();
162 if ($autoindent == "n") {
163 $h_instance ->notrim = 1;
164 $h_instance ->indent = array ("");
165 $h_instance ->unindent = array ("");
166 }
167
168 $highlighter = new Core($h_instance, new Output_css());
169 $a_text = $highlighter->highlight_text(html_entity_decode($a_text));
170
171 return $a_text;
172 }
Definition: Core.php:27
hasHighlighter($hfile_ext)

References hasHighlighter().

Referenced by modifyPageContentPostXsl().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init()

ilPCSourceCode::init ( )

Init page content component.

Reimplemented from ilPCParagraph.

Definition at line 22 of file class.ilPCSourceCode.php.

23 {
24 $this->setType("src");
25 }
setType($a_type)
Set Type.

References ilPageContent\setType().

+ Here is the call graph for this function:

◆ modifyPageContentPostXsl()

ilPCSourceCode::modifyPageContentPostXsl (   $a_output,
  $outputmode = "presentation" 
)

Modify page content after xsl.

Parameters
string$a_output
Returns
string

Reimplemented from ilPageContent.

Definition at line 42 of file class.ilPCSourceCode.php.

43 {
44 $dom = $this->getPage()->getDom();
45
46 $xpc = xpath_new_context($dom);
47 $path = "//Paragraph"; //"[@Characteristic = 'Code']";
48 $res = & xpath_eval($xpc, $path);
49 for($i = 0; $i < count($res->nodeset); $i++)
50 {
51 $context_node = $res->nodeset[$i];
52 $char = $context_node->get_attribute('Characteristic');
53
54 if ($char != "Code")
55 continue;
56
57 $n = $context_node->parent_node();
58 $char = $context_node->get_attribute('Characteristic');
59 $subchar = $context_node->get_attribute('SubCharacteristic');
60 $showlinenumbers = $context_node->get_attribute('ShowLineNumbers');
61 $downloadtitle = $context_node->get_attribute('DownloadTitle');
62 $autoindent = $context_node->get_attribute('AutoIndent');
63
64 $content = "";
65
66 // get XML Content
67 $childs = $context_node->child_nodes();
68
69 for($j=0; $j<count($childs); $j++)
70 {
71 $content .= $dom->dump_node($childs[$j]);
72 }
73
74 while ($context_node->has_child_nodes ())
75 {
76 $node_del = $context_node->first_child ();
77 $context_node->remove_child ($node_del);
78 }
79
80 $content = str_replace("<br />", "<br/>", utf8_decode($content) );
81 $content = str_replace("<br/>", "\n", $content);
82 $rownums = count(split ("\n",$content));
83
84 $plain_content = html_entity_decode($content);
85 $plain_content = preg_replace ("/\&#x([1-9a-f]{2});?/ise","chr (base_convert (\\1, 16, 10))",$plain_content);
86 $plain_content = preg_replace ("/\&#(\d+);?/ise","chr (\\1)",$plain_content);
87 $content = utf8_encode($this->highlightText($plain_content, $subchar, $autoindent));
88
89 $content = str_replace("&amp;lt;", "&lt;", $content);
90 $content = str_replace("&amp;gt;", "&gt;", $content);
91// $content = str_replace("&", "&amp;", $content);
92//var_dump($content);
93 $rows = "<tr valign=\"top\">";
94 $rownumbers = "";
95 $linenumbers= "";
96
97 //if we have to show line numbers
98 if (strcmp($showlinenumbers,"y")==0)
99 {
100 $linenumbers = "<td nowrap=\"nowrap\" class=\"ilc_LineNumbers\" >";
101 $linenumbers .= "<pre class=\"ilc_Code\">";
102
103 for ($j=0; $j < $rownums; $j++)
104 {
105 $indentno = strlen($rownums) - strlen($j+1) + 2;
106 $rownumeration = ($j+1);
107 $linenumbers .= "<span class=\"ilc_LineNumber\">$rownumeration</span>";
108 if ($j < $rownums-1)
109 {
110 $linenumbers .= "\n";
111 }
112 }
113 $linenumbers .= "</pre>";
114 $linenumbers .= "</td>";
115 }
116
117 $rows .= $linenumbers."<td class=\"ilc_Sourcecode\"><pre class=\"ilc_Code\">".$content."</pre></td>";
118 $rows .= "</tr>";
119
120 // fix for ie explorer which is not able to produce empty line feeds with <br /><br />;
121 // workaround: add a space after each br.
122 $newcontent = str_replace("\n", "<br/>",$rows);
123 // fix for IE
124 $newcontent = str_replace("<br/><br/>", "<br/> <br/>",$newcontent);
125 // falls drei hintereinander...
126 $newcontent = str_replace("<br/><br/>", "<br/> <br/>",$newcontent);
127
128 // workaround for preventing template engine
129 // from hiding paragraph text that is enclosed
130 // in curly brackets (e.g. "{a}", see ilLMEditorGUI::executeCommand())
131 $newcontent = str_replace("{", "&#123;", $newcontent);
132 $newcontent = str_replace("}", "&#125;", $newcontent);
133
134//echo htmlentities($newcontent);
135 $a_output = str_replace("[[[[[Code;".($i + 1)."]]]]]", $newcontent, $a_output);
136
137 if ($outputmode != "presentation" && is_object($this->getPage()->getOfflineHandler())
138 && trim($downloadtitle) != "")
139 {
140 // call code handler for offline versions
141 $this->getPage()->getOfflineHandler()->handleCodeParagraph($this->getPage()->getId(), $i + 1, $downloadtitle, $plain_content);
142 }
143 }
144
145 return $a_output;
146 }
$n
Definition: RandomTest.php:80
highlightText($a_text, $proglang, $autoindent)
Highligths Text with given ProgLang.
xpath_eval($xpath_context, $eval_str, $contextnode=null)
xpath_new_context($dom_document)
$path
Definition: index.php:22

References ilPCParagraph\$dom, $n, $path, $res, ilPageContent\getPage(), highlightText(), xpath_eval(), and xpath_new_context().

+ Here is the call graph for this function:

The documentation for this class was generated from the following file: