ILIAS  release_5-0 Revision 5.0.0-1144-gc4397b1f870
All Data Structures Namespaces Files Functions Variables Modules Pages
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

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.

Referenced by highlightText().

175  {
176  return file_exists ("Services/COPage/syntax_highlight/php/HFile/HFile_".$hfile_ext.".php");
177  }
+ 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.

References hasHighlighter().

Referenced by modifyPageContentPostXsl().

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:26
hasHighlighter($hfile_ext)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ init()

ilPCSourceCode::init ( )

Init page content component.

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

References ilPageContent\setType().

23  {
24  $this->setType("src");
25  }
setType($a_type)
Set Type.
+ 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

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

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

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  }
xpath_new_context($dom_document)
xpath_eval($xpath_context, $eval_str, $contextnode=null)
highlightText($a_text, $proglang, $autoindent)
Highligths Text with given ProgLang.
$n
Definition: RandomTest.php:80
$path
Definition: index.php:22
+ Here is the call graph for this function:

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