ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilPCSourceCodeGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 require_once("./Services/COPage/classes/class.ilPCSourceCode.php");
6 require_once("./Services/COPage/classes/class.ilPageContentGUI.php");
7 
19 {
20 
25  function __construct($a_pg_obj, $a_content_obj, $a_hier_id, $a_pc_id = "")
26  {
27  parent::__construct($a_pg_obj, $a_content_obj, $a_hier_id, $a_pc_id);
28  }
29 
30 
34  function executeCommand()
35  {
36  // get next class that processes or forwards current command
37  $next_class = $this->ctrl->getNextClass($this);
38 
39  // get current command
40  $cmd = $this->ctrl->getCmd();
41 
42  switch($next_class)
43  {
44  default:
45  $ret = $this->$cmd();
46  break;
47  }
48 
49  return $ret;
50  }
51 
55  function edit()
56  {
57  $form = $this->initPropertyForm($this->lng->txt("cont_edit_src"), "update", "cancelCreate");
58 
59  if ($this->pg_obj->getParentType() == "lm")
60  {
61  $this->tpl->setVariable("LINK_ILINK",
62  $this->ctrl->getLinkTargetByClass("ilInternalLinkGUI", "showLinkHelp"));
63  $this->tpl->setVariable("TXT_ILINK", "[".$this->lng->txt("cont_internal_link")."]");
64  }
65 
66  $this->displayValidationError();
67 
68  if (key($_POST["cmd"]) == "update")
69  {
70  $form->setValuesByPost();
71 
72  }
73  else{
74  $form->getItemByPostVar("par_language")->setValue($this->content_obj->getLanguage());
75  $form->getItemByPostVar("par_subcharacteristic")->setValue($this->content_obj->getSubCharacteristic());
76  $form->getItemByPostVar("par_downloadtitle")->setValue( $this->content_obj->getDownloadTitle());
77  $form->getItemByPostVar("par_showlinenumbers")->setChecked(
78  $this->content_obj->getShowLineNumbers()=="y"?true:false);
79 // $form->getItemByPostVar("par_autoindent")->setChecked(
80 // $this->content_obj->getAutoIndent()=="y"?true:false);
81 
82  $par_content = $this->content_obj->xml2output($this->content_obj->getText());
83 
84  //TODO: Find a better way to convert back curly brackets
85  $par_content = str_replace("&#123;","{", $par_content);
86  $par_content = str_replace("&#125;","}", $par_content);
87 
88  $form->getItemByPostVar("par_content")->setValue($par_content);
89  }
90 
91 
92  $this->tpl->setContent($form->getHTML());
93  }
94 
98  function insert()
99  {
100  global $ilUser;
101 
102  $form = $this->initPropertyForm($this->lng->txt("cont_insert_src"), "create_src", "cancelCreate");
103 
104  if ($this->pg_obj->getParentType() == "lm")
105  {
106  $this->tpl->setVariable("LINK_ILINK",
107  $this->ctrl->getLinkTargetByClass("ilInternalLinkGUI", "showLinkHelp"));
108  $this->tpl->setVariable("TXT_ILINK", "[".$this->lng->txt("cont_internal_link")."]");
109  }
110 
111  $this->displayValidationError();
112 
113  if (key($_POST["cmd"]) == "create_src")
114  {
115  $form->setValuesByPost();
116 
117  }
118  else{
119  if ($_SESSION["il_text_lang_".$_GET["ref_id"]] != "")
120  {
121  $form->getItemByPostVar("par_language")->setValue($_SESSION["il_text_lang_".$_GET["ref_id"]]);
122  }
123  else
124  {
125  $form->getItemByPostVar("par_language")->setValue($ilUser->getLanguage());
126  }
127 
128  $form->getItemByPostVar("par_showlinenumbers")->setChecked(true);
129 // $form->getItemByPostVar("par_autoindent")->setChecked(true);
130  $form->getItemByPostVar("par_subcharacteristic")->setValue("");
131  $form->getItemByPostVar("par_content")->setValue("");
132  }
133 
134  $this->tpl->setContent($form->getHTML());
135  }
136 
137 
141  function update()
142  {
143  global $ilBench;
144 
145  $this->upload_source();
146 
147  $ilBench->start("Editor","Paragraph_update");
148  // set language and characteristic
149 
150  $this->content_obj->setLanguage($_POST["par_language"]);
151  $this->content_obj->setCharacteristic($_POST["par_characteristic"]);
152 
153  //echo "PARupdate:".htmlentities($this->content_obj->input2xml($_POST["par_content"])).":<br>"; exit;
154 
155 
156  // set language and characteristic
157  $this->content_obj->setLanguage($_POST["par_language"]);
158  $this->content_obj->setSubCharacteristic($_POST["par_subcharacteristic"]);
159  $this->content_obj->setDownloadTitle(str_replace('"', '', ilUtil::stripSlashes($_POST["par_downloadtitle"])));
160  $this->content_obj->setShowLineNumbers($_POST["par_showlinenumbers"]?"y":"n");
161  //$this->content_obj->setAutoIndent($_POST["par_autoindent"]?"y":"n");
162  $this->content_obj->setSubCharacteristic($_POST["par_subcharacteristic"]);
163  $this->content_obj->setCharacteristic("Code");
164 
165  $this->updated = $this->content_obj->setText(
166  $this->content_obj->input2xml($_POST["par_content"], 0, false));
167 
168  if ($this->updated !== true)
169  {
170  //echo "Did not update!";
171  $ilBench->stop("Editor","Paragraph_update");
172  $this->edit();
173  return;
174  }
175 
176  $this->updated = $this->pg_obj->update();
177 
178  $ilBench->stop("Editor","Paragraph_update");
179 
180  if ($this->updated === true && $this->ctrl->getCmd () != "upload" )
181  {
182  $this->ctrl->returnToParent($this, "jump".$this->hier_id);
183  }
184  else
185  {
186  $this->edit();
187  }
188  }
189 
193  function cancelUpdate()
194  {
195  $this->ctrl->returnToParent($this, "jump".$this->hier_id);
196  }
197 
201  function create()
202  {
203  $this->content_obj = new ilPCSourceCode($this->getPage());
204  $this->content_obj->create($this->pg_obj, $this->hier_id, $this->pc_id);
205  $this->content_obj->setLanguage($_POST["par_language"]);
206 
207  $_SESSION["il_text_lang_".$_GET["ref_id"]] = $_POST["par_language"];
208 
209  $uploaded = $this->upload_source();
210 
211  $this->content_obj->setCharacteristic ($_POST["par_characteristic"]);
212  $this->content_obj->setSubCharacteristic($_POST["par_subcharacteristic"]);
213  $this->content_obj->setDownloadTitle (str_replace('"', '', ilUtil::stripSlashes($_POST["par_downloadtitle"])));
214  $this->content_obj->setShowLineNumbers ($_POST["par_showlinenumbers"]?'y':'n');
215  $this->content_obj->setCharacteristic ('Code');
216  //$this->content_obj->setAutoIndent ($_POST["par_autoindent"]?'y':'n');
217 
218  if ($uploaded) {
219  $this->insert ();
220  return;
221  }
222 
223  $this->updated = $this->content_obj->setText(
224  $this->content_obj->input2xml($_POST["par_content"], 0, false));
225 
226  if ($this->updated !== true)
227  {
228  $this->insert();
229  return;
230  }
231 
232  $this->updated = $this->pg_obj->update();
233 
234  if ($this->updated === true && !$uploaded)
235  {
236  $this->ctrl->returnToParent($this, "jump".$this->hier_id);
237  }
238  else
239  {
240  $this->insert ();
241  }
242  }
243 
247  function cancelCreate()
248  {
249  $this->ctrl->returnToParent($this, "jump".$this->hier_id);
250  }
251 
252  function upload_source () {
253  if (isset($_FILES['userfile']['name']))
254  {
255  $userfile = $_FILES['userfile']['tmp_name'];
256 
257  if ($userfile == "" || !is_uploaded_file($userfile))
258  {
259  $error_str = "<b>Error(s):</b><br>Upload error: file name must not be empty!";
260  $this->tpl->setVariable("MESSAGE", $error_str);
261  $this->content_obj->setText($this->content_obj->input2xml(stripslashes($_POST["par_content"]), 0, false));
262  return false;
263  }
264 
265  $_POST["par_content"] = file_get_contents($userfile);
266  $_POST["par_downloadtitle"] = $_FILES['userfile']['name'];
267  return true;
268  }
269 
270  return false;
271  }
272 
273 
280  {
281  $prog_langs = array(
282  "" => "other");
283  include_once("./Services/UIComponent/SyntaxHighlighter/classes/class.ilSyntaxHighlighter.php");
284  foreach (ilSyntaxHighlighter::getSupportedLanguagesV51() as $k => $v)
285  {
286  $prog_langs[$k] = $v;
287  }
288  return $prog_langs;
289  }
290 
299  function initPropertyForm($a_title, $a_cmd, $a_cmd_cancel)
300  {
301 
302  include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
303  $form = new ilPropertyFormGUI();
304  $form->setTitle($a_title);
305  $form->setFormAction($this->ctrl->getFormAction($this, $a_cmd));
306  $form->addCommandButton($a_cmd,$this->lng->txt("save"));
307  $form->addCommandButton($a_cmd_cancel,$this->lng->txt("cancel"));
308 
309 
310  require_once("Services/MetaData/classes/class.ilMDLanguageItem.php");
311  $lang_var = ilMDLanguageItem::_getLanguages();
312  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
313  $lang = new ilSelectInputGUI($this->lng->txt("language"),"par_language");
314  $lang->setOptions($lang_var);
315  $form->addItem($lang);
316 
317  $prog_langs = $this->getProgLangOptions();
318  $code_style = new ilSelectInputGUI( $this->lng->txt("cont_src"), "par_subcharacteristic");
319  $code_style->setOptions($prog_langs);
320  $form->addItem($code_style);
321  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
322  $line_number = new ilCheckboxInputGUI($this->lng->txt("cont_show_line_numbers"), "par_showlinenumbers");
323  $form->addItem($line_number);
324  //$indent = new ilCheckboxInputGUI($this->lng->txt("cont_autoindent"), "par_autoindent");
325  //$form->addItem($indent);
326 
327 
328  include_once("./Services/Form/classes/class.ilSelectInputGUI.php");
329  $code = new ilTextAreaInputGUI("", "par_content");
330  $code->setRows(12);
331  $form->addItem($code);
332 
333  include_once("./Services/Form/classes/class.ilTextInputGUI.php");
334  $downlaod_title = new ilTextInputGUI($this->lng->txt("cont_download_title"), "par_downloadtitle");
335  $downlaod_title->setSize(40);
336  $form->addItem($downlaod_title);
337 
338  include_once("./Services/Form/classes/class.ilFileInputGUI.php");
339  $file = new ilFileInputGUI($this->lng->txt("import_file"), "userfile");
340  $form->addItem($file);
341 
342  return $form;
343  }
344 }
$_SESSION["AccountId"]
create()
create new paragraph in dom and update page in db
This class represents a selection list property in a property form.
This class represents a property form user interface.
$_GET["client_id"]
This class represents a file property in a property form.
edit()
edit paragraph form
$code
Definition: example_050.php:99
initPropertyForm($a_title, $a_cmd, $a_cmd_cancel)
initiates property form GUI class
$cmd
Definition: sahs_server.php:35
Class ilPCSourcecodeGUI.
This class represents a checkbox property in a property form.
executeCommand()
execute command
User Interface for Editing of Page Content Objects (Paragraphs, Tables, ...)
Class ilPCSourceCode.
setSize($a_size)
Set Size.
displayValidationError()
display validation errors
This class represents a text property in a property form.
update()
update paragraph in dom and update page in db
$ilUser
Definition: imgupload.php:18
cancelCreate()
cancel creating paragraph
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
setOptions($a_options)
Set Options.
Create styles array
The data for the language used.
static getSupportedLanguagesV51()
Get supported languages (keys are ILIAS <= 5.1 internal values, values are for representation) ...
__construct($a_pg_obj, $a_content_obj, $a_hier_id, $a_pc_id="")
Constructor public.
This class represents a text area property in a property form.
getProgLangOptions()
Get selectable programming languages.
global $ilBench
Definition: ilias.php:18
$ret
Definition: parser.php:6
for($i=1; $i<=count($kw_cases_sel); $i+=1) $lang
Definition: langwiz.php:349
if(!file_exists("$old.txt")) if($old===$new) if(file_exists("$new.txt")) $file
$_POST["username"]
insert()
insert paragraph form