Source for file HTMLeditor.php

Documentation is available at HTMLeditor.php

  1. <?php
  2.  
  3. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  4. // +-------------------------------------------------------------------+
  5. // | WiFiDog Authentication Server |
  6. // | ============================= |
  7. // | |
  8. // | The WiFiDog Authentication Server is part of the WiFiDog captive |
  9. // | portal suite. |
  10. // +-------------------------------------------------------------------+
  11. // | PHP version 5 required. |
  12. // +-------------------------------------------------------------------+
  13. // | Homepage: http://www.wifidog.org/ |
  14. // | Source Forge: http://sourceforge.net/projects/wifidog/ |
  15. // +-------------------------------------------------------------------+
  16. // | This program is free software; you can redistribute it and/or |
  17. // | modify it under the terms of the GNU General Public License as |
  18. // | published by the Free Software Foundation; either version 2 of |
  19. // | the License, or (at your option) any later version. |
  20. // | |
  21. // | This program is distributed in the hope that it will be useful, |
  22. // | but WITHOUT ANY WARRANTY; without even the implied warranty of |
  23. // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
  24. // | GNU General Public License for more details. |
  25. // | |
  26. // | You should have received a copy of the GNU General Public License |
  27. // | along with this program; if not, contact: |
  28. // | |
  29. // | Free Software Foundation Voice: +1-617-542-5942 |
  30. // | 59 Temple Place - Suite 330 Fax: +1-617-542-2652 |
  31. // | Boston, MA 02111-1307, USA gnu@gnu.org |
  32. // | |
  33. // +-------------------------------------------------------------------+
  34.  
  35. /**
  36. * @package WiFiDogAuthServer
  37. * @subpackage ContentClasses
  38. * @author Max Horvath <max.horvath@maxspot.de>
  39. * @copyright 2005 Max Horvath <max.horvath@maxspot.de> - maxspot GmbH
  40. * @version CVS: $Id: HTMLeditor.php,v 1.4 2005/12/26 11:17:18 max-horvath Exp $
  41. * @link http://sourceforge.net/projects/wifidog/
  42. * @todo Add CSS styles for editors.
  43. */
  44.  
  45. require_once BASEPATH.'classes/Dependencies.php';
  46.  
  47. // Make sure the FCKeditor support is installed
  48. if (Dependencies :: check("FCKeditor", $errmsg)) {
  49. require_once BASEPATH.'classes/Cache.php';
  50. require_once BASEPATH.'classes/Content.php';
  51. require_once BASEPATH.'classes/FormSelectGenerator.php';
  52. require_once BASEPATH.'classes/LocaleList.php';
  53. require_once BASEPATH.'classes/Locale.php';
  54.  
  55. // FCKeditor class
  56. require_once BASEPATH.'lib/FCKeditor/fckeditor.php';
  57.  
  58. error_reporting(E_ALL);
  59.  
  60. /**
  61. * FCKeditor implementation
  62. */
  63. class HTMLeditor extends Content {
  64.  
  65. const ALLOWED_HTML_TAGS = "<p><div><pre><address><h1><h2><h3><h4><h5><h6><br><b><strong><i><em><u><span><ol><ul><li><a><img><embed><table><tbody><thead><th><tr><td><hr>";
  66.  
  67. /**
  68. * Constructor. Gets called if FCKeditor is installed.
  69. * @param int $content_id ID of content.
  70. * @return void
  71. */
  72. protected function __construct($content_id) {
  73. parent :: __construct($content_id);
  74. global $db;
  75. $this->mBd = & $db;
  76. }
  77.  
  78. /**
  79. * Return string in the language requested by the user.
  80. * @return string UTF-8 string.
  81. */
  82. private function getString() {
  83. // Init values
  84. $_retval = null;
  85. $_row = null;
  86. $_useCache = false;
  87. $_cachedData = null;
  88.  
  89. // Create new cache objects
  90. $_cacheLanguage = new Cache('langstrings_' . $this->id . '_substring_' . substr(Locale :: getCurrentLocale()->getId(), 0, 2) . '_string', $this->id);
  91. $_cache = new Cache('langstrings_' . $this->id . '_substring__string', $this->id);
  92.  
  93. // Check if caching has been enabled.
  94. if ($_cacheLanguage->isCachingEnabled) {
  95. if ($_cachedData = $_cacheLanguage->getCachedData()) {
  96. // Return cached data.
  97. $_useCache = true;
  98. $_retval = $_cachedData;
  99. } else {
  100. // Language specific cached data has not been found.
  101. // Try to get language independent cached data.
  102. if ($_cachedData = $_cache->getCachedData()) {
  103. // Return cached data.
  104. $_useCache = true;
  105. $_retval = $_cachedData;
  106. }
  107. }
  108. }
  109.  
  110. if (!$_useCache) {
  111. // Get string in the prefered language of the user
  112. $_sql = "SELECT value, locales_id, \n";
  113. $_sql .= Locale :: getSqlCaseStringSelect(Locale :: getCurrentLocale()->getId());
  114. $_sql .= " as score FROM langstring_entries WHERE langstring_entries.langstrings_id = '{$this->id}' AND value!='' ORDER BY score LIMIT 1";
  115. $this->mBd->ExecSqlUniqueRes($_sql, $_row, false);
  116.  
  117. if ($_row == null) {
  118. // String has not been found
  119. $_retval = "(Empty string)";
  120. } else {
  121. // String has been found
  122. $_retval = $_row['value'];
  123.  
  124. // Check if caching has been enabled.
  125. if ($_cache->isCachingEnabled) {
  126. // Save data into cache, because it wasn't saved into cache before.
  127. $_cache->saveCachedData($_retval);
  128. }
  129. }
  130. }
  131.  
  132. return $_retval;
  133. }
  134.  
  135. /**
  136. * Adds the string associated with the locale.
  137. * @param string $string String to be added.
  138. * @param string $locale Locale of string (i.e. 'fr_CA') - can be NULL.
  139. * @param boolean $allow_empty_string Defines if string may be empty
  140. * (optional).
  141. * @return boolean True if string has been added, otherwise false.
  142. */
  143. private function addString($string, $locale, $allow_empty_string = false) {
  144. // Init values
  145. $_retval = false;
  146. $_id = 'NULL';
  147. $_idSQL = $_id;
  148.  
  149. if ($locale) {
  150. // Set locale of string
  151. $_language = new <a href="../WiFiDogAuthServer/Locale.html">Locale</a>($locale);
  152.  
  153. $_id = $_language->GetId();
  154. $_idSQL = "'" . $_id . "'";
  155. }
  156.  
  157. if ($allow_empty_string || ($string != null && $string != '')) {
  158. // Save string in database
  159. $string = $this->mBd->EscapeString($string);
  160. $this->mBd->ExecSqlUpdate("INSERT INTO langstring_entries (langstring_entries_id, langstrings_id, locales_id, value) VALUES ('" . get_guid() . "', '$this->id', $_idSQL , '$string')", FALSE);
  161.  
  162. // Create new cache object.
  163. $_cache = new Cache('langstrings_' . $this->id . '_substring_' . $_id . '_string', $this->id);
  164.  
  165. // Check if caching has been enabled.
  166. if ($_cache->isCachingEnabled) {
  167. // Remove old cached data.
  168. $_cache->eraseCachedData();
  169.  
  170. // Save data into cache.
  171. $_cache->saveCachedData($string);
  172. }
  173.  
  174. $_retval = true;
  175. }
  176.  
  177. return $_retval;
  178. }
  179.  
  180. /**
  181. * Updates the string associated with the locale.
  182. * @param string $string String to be updated.
  183. * @param string $locale Locale of string (i.e. 'fr_CA') - can be NULL.
  184. * @return boolean True if string has been updated, otherwise false.
  185. */
  186. private function UpdateString($string, $locale) {
  187. // Init values
  188. $_retval = false;
  189. $_id = 'NULL';
  190. $_row = null;
  191.  
  192. if ($locale) {
  193. // Set locale of string
  194. $_language = new <a href="../WiFiDogAuthServer/Locale.html">Locale</a>($locale);
  195.  
  196. $_id = $_language->GetId();
  197. $_idSQL = "'" . $_id . "'";
  198. }
  199.  
  200. if ($string != null && $string != '') {
  201. $string = $this->mBd->EscapeString($string);
  202.  
  203. // If the update returns 0 (no update), try inserting the record
  204. $this->mBd->ExecSqlUniqueRes("SELECT * FROM langstring_entries WHERE locales_id = $_idSQL AND langstrings_id = '$this->id'", $_row, false);
  205.  
  206. if ($_row != null) {
  207. $this->mBd->ExecSqlUpdate("UPDATE langstring_entries SET value = '$string' WHERE langstrings_id = '$this->id' AND locales_id = $_idSQL", false);
  208.  
  209. // Create new cache object.
  210. $_cache = new Cache('langstrings_' . $this->id . '_substring_' . $_id . '_string', $this->id);
  211.  
  212. // Check if caching has been enabled.
  213. if ($_cache->isCachingEnabled) {
  214. // Remove old cached data.
  215. $_cache->eraseCachedData();
  216.  
  217. // Save data into cache.
  218. $_cache->saveCachedData($string);
  219. }
  220. } else {
  221. $this->addString($string, $locale);
  222. }
  223.  
  224. $_retval = true;
  225. }
  226. return $_retval;
  227. }
  228.  
  229. /**
  230. * Shows the administration interface for HTMLeditor. Gets called if
  231. * FCKeditor is installed.
  232. * @param string $type_interface SIMPLE for a small HTML editor, LARGE
  233. * for a larger HTML editor (default).
  234. * @param int $num_nouveau Number of new HTML editors to be created.
  235. * @return string HTML code for the administration interface.
  236. */
  237. function getAdminUI($type_interface = 'LARGE', $num_nouveau = 1) {
  238. // Init values
  239. $_result = null;
  240. $_html = '';
  241. $_languages = new <a href="../WiFiDogAuthServer/LocaleList.html">LocaleList</a>();
  242.  
  243. $_html .= "<div class='admin_class'>Langstring (" . get_class($this) . " instance)</div>\n";
  244. $_html .= "<div class='admin_section_container'>\n";
  245.  
  246. $_html .= "<ul class='admin_section_list'>\n";
  247.  
  248. $_sql = "SELECT * FROM langstring_entries WHERE langstring_entries.langstrings_id = '$this->id' ORDER BY locales_id";
  249. $this->mBd->ExecSql($_sql, $_result, FALSE);
  250.  
  251. // Show existing content
  252. if ($_result != null) {
  253. while (list ($_key, $_value) = each($_result)) {
  254. $_html .= "<li class='admin_section_list_item'>\n";
  255. $_html .= "<div class='admin_section_data'>\n";
  256. $_html .= $_languages->GenererFormSelect($_value["locales_id"], "langstrings_" . $this->id . "_substring_" . $_value["langstring_entries_id"] . "_language", 'Langstring::AfficherInterfaceAdmin', TRUE);
  257.  
  258. $_FCKeditor = new FCKeditor('langstrings_' . $this->id . '_substring_' . $_value["langstring_entries_id"] . '_string');
  259. $_FCKeditor->BasePath = <a href="../WiFiDogAuthServer/_wifidog_install_php.html#defineBASEPATH">BASEPATH</a> . "lib/FCKeditor/";
  260. $_FCKeditor->Config["CustomConfigurationsPath"] = <a href="../WiFiDogAuthServer/_wifidog_include_common_php.html#defineBASE_URL_PATH">BASE_URL_PATH</a> . "js/HTMLeditor.js";
  261. $_FCKeditor->Config["AutoDetectLanguage"] = false;
  262. $_FCKeditor->Config["DefaultLanguage"] = substr(<a href="../WiFiDogAuthServer/Locale.html">Locale</a> :: getCurrentLocale()->getId(), 0, 2);
  263. $_FCKeditor->Config["StylesXmlPath"] = <a href="../WiFiDogAuthServer/_wifidog_include_common_php.html#defineBASE_URL_PATH">BASE_URL_PATH</a> . "templates/FCKeditor/css/" . substr(<a href="../WiFiDogAuthServer/Locale.html">Locale</a> :: getCurrentLocale()->getId(), 0, 2) . ".xml";
  264. $_FCKeditor->Config["TemplatesXmlPath"] = <a href="../WiFiDogAuthServer/_wifidog_include_common_php.html#defineBASE_URL_PATH">BASE_URL_PATH</a> . "templates/FCKeditor/templates/" . substr(<a href="../WiFiDogAuthServer/Locale.html">Locale</a> :: getCurrentLocale()->getId(), 0, 2) . ".xml";
  265.  
  266. $_FCKeditor->ToolbarSet = "WiFiDOG";
  267.  
  268. $_FCKeditor->Value = $_value['value'];
  269.  
  270. if ($type_interface == 'LARGE') {
  271. $_FCKeditor->Height = 400;
  272. } else {
  273. $_FCKeditor->Height = 200;
  274. }
  275.  
  276. $_html .= $_FCKeditor->CreateHtml();
  277.  
  278. $_html .= "</div>\n";
  279. $_html .= "<div class='admin_section_tools'>\n";
  280.  
  281. $_name = "langstrings_" . $this->id . "_substring_" . $_value["langstring_entries_id"] . "_erase";
  282. $_html .= "<input type='submit' name='$_name' value='" . _("Delete string") . "'>";
  283.  
  284. $_html .= "</div>\n";
  285. $_html .= "</li>\n";
  286. }
  287. }
  288.  
  289. // Editor for new content
  290. $_locale = <a href="../WiFiDogAuthServer/LocaleList.html">LocaleList</a> :: GetDefault();
  291.  
  292. $_html .= "<li class='admin_section_list_item'>\n";
  293. $_html .= "<div class='admin_section_data'>\n";
  294.  
  295. $_html .= $_languages->GenererFormSelect($_locale, "langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_substring_new_language", 'Langstring::AfficherInterfaceAdmin', TRUE);
  296.  
  297. $_FCKeditor = new FCKeditor('langstrings_' . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . '_substring_new_string');
  298. $_FCKeditor->BasePath = <a href="../WiFiDogAuthServer/_wifidog_install_php.html#defineBASEPATH">BASEPATH</a> . "lib/FCKeditor/";
  299. $_FCKeditor->Config["CustomConfigurationsPath"] = <a href="../WiFiDogAuthServer/_wifidog_include_common_php.html#defineBASE_URL_PATH">BASE_URL_PATH</a> . "js/HTMLeditor.js";
  300. $_FCKeditor->Config["AutoDetectLanguage"] = false;
  301. $_FCKeditor->Config["DefaultLanguage"] = substr(<a href="../WiFiDogAuthServer/Locale.html">Locale</a> :: getCurrentLocale()->getId(), 0, 2);
  302. $_FCKeditor->Config["StylesXmlPath"] = <a href="../WiFiDogAuthServer/_wifidog_include_common_php.html#defineBASE_URL_PATH">BASE_URL_PATH</a> . "templates/FCKeditor/css/" . substr(<a href="../WiFiDogAuthServer/Locale.html">Locale</a> :: getCurrentLocale()->getId(), 0, 2) . ".xml";
  303. $_FCKeditor->Config["TemplatesXmlPath"] = <a href="../WiFiDogAuthServer/_wifidog_include_common_php.html#defineBASE_URL_PATH">BASE_URL_PATH</a> . "templates/FCKeditor/templates/" . substr(<a href="../WiFiDogAuthServer/Locale.html">Locale</a> :: getCurrentLocale()->getId(), 0, 2) . ".xml";
  304. $_FCKeditor->ToolbarSet = "WiFiDOG";
  305.  
  306. $_FCKeditor->Value = "";
  307.  
  308. if ($type_interface == 'LARGE') {
  309. $_FCKeditor->Height = 400;
  310. } else {
  311. $_FCKeditor->Height = 200;
  312. }
  313.  
  314. $_html .= $_FCKeditor->CreateHtml();
  315.  
  316. $_html .= "</div>\n";
  317. $_html .= "<div class='admin_section_tools'>\n";
  318.  
  319. $_html .= "<input type='submit' name='langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_add_new_entry' value='" . _("Add new string") . "'>";
  320. $_html .= "</div>\n";
  321. $_html .= "</li>\n";
  322.  
  323. $_html .= "</ul>\n";
  324. $_html .= "</div>\n";
  325.  
  326. return parent :: getAdminUI($_html);
  327. }
  328.  
  329. /**
  330. * Processes the input of the administration interface for HTMLeditor
  331. * @return void
  332. */
  333. function processAdminUI() {
  334. // Init values
  335. $_result = null;
  336.  
  337. if ($this->isOwner(<a href="../WiFiDogAuthServer/User.html">User</a> :: getCurrentUser()) || <a href="../WiFiDogAuthServer/User.html">User</a> :: getCurrentUser()->isSuperAdmin()) {
  338. parent :: processAdminUI();
  339. $_form_select = new <a href="../WiFiDogAuthServer/FormSelectGenerator.html">FormSelectGenerator</a>();
  340.  
  341. $_sql = "SELECT * FROM langstring_entries WHERE langstring_entries.langstrings_id = '$this->id'";
  342. $this->mBd->ExecSql($_sql, $_result, FALSE);
  343.  
  344. if ($_result != null) {
  345. while (list ($_key, $_value) = each($_result)) {
  346. $_language = $_form_select->getResult("langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_substring_" . $_value["langstring_entries_id"] . "_language", 'Langstring::AfficherInterfaceAdmin');
  347.  
  348. if (empty ($_language)) {
  349. $_language = '';
  350. $_languageSQL = 'NULL';
  351. } else {
  352. $_languageSQL = "'" . $_language . "'";
  353. }
  354.  
  355. if (!empty ($_REQUEST["langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_substring_" . $_value["langstring_entries_id"] . "_erase"]) && $_REQUEST["langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_substring_" . $_value["langstring_entries_id"] . "_erase"] == true) {
  356. $this->mBd->ExecSqlUpdate("DELETE FROM langstring_entries WHERE langstrings_id = '$this->id' AND langstring_entries_id='" . $_value["langstring_entries_id"] . "'", FALSE);
  357.  
  358. // Create new cache object.
  359. $_cache = new <a href="../WiFiDogAuthServer/Cache.html">Cache</a>('langstrings_' . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . '_substring_' . $_language . '_string', $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a>);
  360.  
  361. // Check if caching has been enabled.
  362. if ($_cache->isCachingEnabled) {
  363. // Remove old cached data.
  364. $_cache->eraseCachedData();
  365. }
  366. } else {
  367. // Strip HTML tags!
  368. $string = $_REQUEST["langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_substring_" . $_value["langstring_entries_id"] . "_string"];
  369. $string = $this->mBd->EscapeString(strip_tags($string, self :: ALLOWED_HTML_TAGS));
  370. $this->mBd->ExecSqlUpdate("UPDATE langstring_entries SET locales_id = " . $_languageSQL . " , value = '$string' WHERE langstrings_id = '$this->id' AND langstring_entries_id='" . $_value["langstring_entries_id"] . "'", FALSE);
  371.  
  372. // Create new cache object.
  373. $_cache = new <a href="../WiFiDogAuthServer/Cache.html">Cache</a>('langstrings_' . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . '_substring_' . $_language . '_string', $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a>);
  374.  
  375. // Check if caching has been enabled.
  376. if ($_cache->isCachingEnabled) {
  377. // Remove old cached data.
  378. $_cache->eraseCachedData();
  379.  
  380. // Save data into cache.
  381. $_cache->saveCachedData($string);
  382. }
  383. }
  384. }
  385. }
  386.  
  387. $_new_substring_name = "langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_substring_new_string";
  388. $_new_substring_submit_name = "langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_add_new_entry";
  389. if ((isset ($_REQUEST[$_new_substring_submit_name]) && $_REQUEST[$_new_substring_submit_name] == true) || !empty ($_REQUEST[$_new_substring_name])) {
  390. $_language = $_form_select->getResult("langstrings_" . $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a> . "_substring_new_language", 'Langstring::AfficherInterfaceAdmin');
  391.  
  392. if (empty($_language)) {
  393. $_language = null;
  394. }
  395.  
  396. $this->addString($_REQUEST[$_new_substring_name], $_language, true);
  397. }
  398. }
  399. }
  400.  
  401. /**
  402. * Retreives the user interface of this object. Anything that overrides
  403. * this method should call the parent method with it's output at the
  404. * END of processing.
  405. * @param string $subclass_admin_interface HTML content of the interface
  406. * element of a children.
  407. * @return string The HTML fragment for this interface.
  408. */
  409. public function getUserUI($subclass_user_interface = null) {
  410. $_html = '';
  411. $_html .= "<div class='user_ui_container'>\n";
  412. $_html .= "<div class='user_ui_object_class'>Langstring (" . get_class($this) . " instance)</div>\n";
  413. $_html .= "<div class='langstring'>\n";
  414. $_html .= $this->getString();
  415. $_html .= $subclass_user_interface;
  416. $_html .= "</div>\n";
  417. $_html .= "</div>\n";
  418.  
  419. return parent :: getUserUI($_html);
  420. }
  421.  
  422. /**
  423. * Reloads the object from the database. Should normally be called after
  424. * a set operation. This function is private because calling it from a
  425. * subclass will call the constructor from the wrong scope.
  426. * @return void
  427. */
  428. private function refresh() {
  429. $this->__construct($this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a>);
  430. }
  431.  
  432. /**
  433. * @see GenericObject
  434. * @note Persistent content will not be deleted
  435. */
  436. public function delete(& $errmsg) {
  437. // Init values.
  438. $_retval = false;
  439.  
  440. if ($this->isPersistent()) {
  441. $errmsg = _("Content is persistent (you must make it non persistent before you can delete it)");
  442. } else {
  443. global $db;
  444.  
  445. if ($this->isOwner(<a href="../WiFiDogAuthServer/User.html">User</a> :: getCurrentUser()) || <a href="../WiFiDogAuthServer/User.html">User</a> :: getCurrentUser()->isSuperAdmin()) {
  446. $_sql = "DELETE FROM content WHERE content_id='$this->id'";
  447. $db->ExecSqlUpdate($_sql, false);
  448. $_retval = true;
  449.  
  450. // Create new cache object.
  451. $_cache = new Cache('all', $this-><a href="../WiFiDogAuthServer/Content.html#var$id">id</a>);
  452.  
  453. // Check if caching has been enabled.
  454. if ($_cache->isCachingEnabled) {
  455. // Remove old cached data.
  456. $_cache->eraseCachedGroupData();
  457. }
  458. } else {
  459. $errmsg = _("Access denied (not owner of content)");
  460. }
  461. }
  462.  
  463. return $_retval;
  464. }
  465.  
  466. }
  467. } else {
  468. class HTMLeditor extends Content {
  469.  
  470. /**
  471. * Constructor. Gets called if FCKeditor is NOT installed.
  472. * @param int $content_id ID of content.
  473. * @return void
  474. */
  475. protected function __construct($content_id) {
  476. parent :: __construct($content_id);
  477. }
  478.  
  479. /**
  480. * Shows the administration interface for HTMLeditor. Gets called if
  481. * FCKeditor is NOT installed.
  482. * @param string $subclass_admin_interface This parameter should stay
  483. * null.
  484. * @return string HTML code for the administration interface. Tells the
  485. * user that the feature is not available.
  486. */
  487. public function getAdminUI($subclass_admin_interface = null) {
  488. $_html = '';
  489. $_html .= "<div class='admin_class'>FCKeditor (".get_class($this)." instance)</div>\n";
  490. $_html .= _("FCKeditor is not installed");
  491.  
  492. return parent :: getAdminUI($_html);
  493. }
  494.  
  495. }
  496. }
  497.  
  498. /*
  499. * Local variables:
  500. * tab-width: 4
  501. * c-basic-offset: 4
  502. * c-hanging-comment-ender-p: nil
  503. * End:
  504. */
  505.  

Documentation generated on Mon, 26 Dec 2005 19:16:04 +0100 by phpDocumentor 1.3.0RC5