コード例 #1
0
 /**
  * Get the HTML fragment corresponding to the HTML editor widget
  * @param WebPage $oP The web page used for all the output
  * @param Hash $aArgs Extra context arguments
  * @return string The HTML fragment to be inserted into the page
  */
 public function Display(WebPage $oPage, $aArgs = array())
 {
     $iId = $this->m_iId;
     $sCode = $this->m_sAttCode . $this->m_sNameSuffix;
     $sValue = $this->m_sValue;
     $sHelpText = $this->m_sHelpText;
     $sValidationField = $this->m_sValidationField;
     $sHtmlValue = "<table><tr><td><textarea class=\"htmlEditor\" title=\"{$sHelpText}\" name=\"attr_{$this->m_sFieldPrefix}{$sCode}\" rows=\"10\" cols=\"10\" id=\"{$iId}\">{$sValue}</textarea></td><td>{$sValidationField}</td></tr></table>";
     // Replace the text area with CKEditor
     // To change the default settings of the editor,
     // a) edit the file /js/ckeditor/config.js
     // b) or override some of the configuration settings, using the second parameter of ckeditor()
     $sLanguage = strtolower(trim(UserRights::GetUserLanguage()));
     $oPage->add_ready_script("\$('#{$iId}').ckeditor(function() { /* callback code */ }, { language : '{$sLanguage}' , contentsLanguage : '{$sLanguage}', extraPlugins: 'disabler' });");
     // Transform $iId into a CKEdit
     // Please read...
     // ValidateCKEditField triggers a timer... calling itself indefinitely
     // This design was the quickest way to achieve the field validation (only checking if the field is blank)
     // because the ckeditor does not fire events like "change" or "keyup", etc.
     // See http://dev.ckeditor.com/ticket/900 => won't fix
     // The most relevant solution would be to implement a plugin to CKEdit, and handle the internal events like: setData, insertHtml, insertElement, loadSnapshot, key, afterUndo, afterRedo
     // Could also be bound to 'instanceReady.ckeditor'
     $oPage->add_ready_script("\$('#{$iId}').bind('validate', function(evt, sFormId) { return ValidateCKEditField('{$iId}', '', {$this->m_sMandatory}, sFormId, '') } );\n");
     $oPage->add_ready_script("\$('#{$iId}').bind('update', function() { BlockField('cke_{$iId}', \$('#{$iId}').attr('disabled')); } );\n");
     return $sHtmlValue;
 }