Jet\Form_Renderer_Field_Input_WYSIWYG
Renderer WYSIWYG editoru. Třída dědí od Form_Renderer_Field_Input.
Výchozí view skripty
Název výchozího view skriptu je field/input/wysiwyg.
K hodnotě v systémové konfiguraci lze přistupovat takto:
$view_script_start = SysConf_Jet_Form_DefaultViews::get($field->getType(), 'input');
SysConf_Jet_Form_DefaultViews::set( $field_type , 'input', 'my-view-script');
POZOR! WYSIWYG editor není součástí Jet! V ukázkové aplikaci je jeden konkrétní editor integrován, ale ten můžete vyměnit za editor jiný. Stačí si upravit příslušný view skript. (Samozřejmě není problém v jedné aplikaci používat více druhů editorů - pokud by to bylo třeba).
Renderer sám tedy není pevně spojen s žádným konkrétním editorem, ale pouze poskytuje vše potřebné, aby bylo možné editor integrovat.
Co renderer umožňuje je modifikovat konfiguraci editoru. Tedy můžete používat jeden druh editoru, ale mít jej na různých místech aplikace pro různé účely různě nastavený.
Přehled metod
Metoda | Význam |
---|---|
public setEditorConfig( array $editor_config ) : void |
Nastaví konfiguraci editoru. Podoba konfigurace závisí na tom jaký editor byl integrován. Metody je možné volat například ve view zobrazujícím formulář s editorem a nastavovat tak specifické chování editoru pro jeho konkrétní použití. |
public getEditorConfig( ) : array|null |
Vrací konfiguraci editoru. Viz metoda setEditorConfig. |
public appendEditorCSSFile( string $URI, string $media='screen' ) : void |
Přidá adresu k CSS souboru, který editor potřebuje pro svou činnost. |
public getEditorCSSFiles( ) : array |
Vrátí adresy požadovaných CSS souborů. |
public appendEditorJavaScriptFile( string $URI ) : void |
Přidá adresu JavaScript souboru, který editor potřebuje pro svou činnost. |
public getEditorJavaScriptFiles( ) : array |
Vrátí adresy požadovaných JavaScript souborů. |
public setEditorInitializeCodeGenerator( callable $editor_initialize_code_generator ) : void |
Nastaví generátor, jehož úkolem je vygenerovat kus kódu (nejpravděpodobněji JavaScript), který aditor aktivuje a nastaví. |
public getEditorInitializeCodeGenerator( ) : callable|null |
Vrátí generátor inicializačního kódu. Viz metoda setEditorInitializeCodeGenerator. |
public requireEditorCSSandJavaScriptFiles( ) : void |
Postará se o vložení požadovaných CSS a JS souborů do layoutu. |
public generateEditorInitializeCode( ) : string |
Postará se o vygenerování inicializačního kódu. Automaticky volá metodu requireEditorCSSandJavaScriptFiles |
Příklad integrace editoru
use Jet\MVC_View;
use Jet\Form_Renderer_Field_Input_WYSIWYG;
use Jet\Form_Field_WYSIWYG;
/**
* @var MVC_View $this
* @var Form_Renderer_Field_Input_WYSIWYG $r
* @var Form_Field_WYSIWYG $field
*/
$r = $this->getRaw( 'renderer' );
$field = $r->getField();
//-----------------------------------------------------------------------------------
//$r->appendEditorCSSFile( '//cdn.tiny.cloud/1/no-api-key/tinymce/5/skins/lightgray/skin.min.css');
$r->appendEditorJavaScriptFile('//cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js',);
$r->setEditorInitializeCodeGenerator( function( Form_Field_WYSIWYG $field, array $editor_config ) : string {
$editor_config['selector'] = '#' . $field->getId();
if( $field->getIsReadonly() ) {
$editor_config['readonly'] = 1;
}
return 'tinymce.init(' . json_encode( $editor_config ) . ')';
} );
if( !$r->getEditorConfig() ) {
$r->setEditorConfig([
'mode' => 'exact',
'apply_source_formatting' => true,
'remove_linebreaks' => false,
'entity_encoding' => 'raw',
'convert_urls' => false,
'verify_html' => true,
'force_br_newlines' => false,
'force_p_newlines' => false,
'forced_root_block' => '',
'plugins' => 'advlist autolink lists link image ',
'paste_as_text' => true,
]);
}
?>
<textarea <?=$r->renderTagAttributes()?>><?= $field->getValueRaw() ?></textarea>