bbcode textarea – implementacia do formularov
- qacer
- Člen | 8
Zdravím.
Na PHP bez nette som bol zvyknutý používať bbcode editor vybraný z phpbb
fora…je nejaky sposob, ako ho do nette implementovat?..napr.
$form->addBbCode(‚text‘, ‚Text‘);
Na zaciatku je javascript editora, potom su tlacidla, odkazy, ktoré
vyvolavaju prislusny javascript, dalej <input type=„text“>, do ktoreho
sa generuje napoveda ku tlacidlam a nakoniec ja textarea, ktory obsahuje
parametre ako onclick, onkeyup, onselect, tabindex a tak podobne.
Vďaka
- Vojtěch Dobeš
- Gold Partner | 1316
Vytvoř si potomka třídy Nette\Forms\TextArea
a třeba do
metody control si doplň třídu, podle které na ten element navážeš
JS
.
public function getControl()
{
$control = parent::getControl();
$control->class[] = 'editor-bbcode';
return $control;
}
Potom si ještě pro pohodlnost někde (třeba do bootstrapu
)
doplň metodu addBbCode
:
FormContainer::extensionMethod('addBbCode', function (FormContainer $container, $name, $label = NULL) {
return $container[$name] = new BbCodeTextArea($label);
});
A pak už jen na třídu editor-bbcode
navázat ten
javascript
, co tam dělá ta tlačítka a všechno kolem.
Asi to není úplně řešení, protože tam zmiňuješ ten
input[type=text]
.
Editoval vojtech.dobes (17. 4. 2011 8:08)
- qacer
- Člen | 8
Chvilu mi trvalo, kym som pochopil (sice som sa nette zacal ucit pred 3 dnami ale tato otazka mi prisla viac do Formularov ako zaciatocnikov), ako si to myslel, ale asi si to pochopil zle.
Predtym som mal jednu php funkciu, ktora vypadala asi takto:
function bbcode($name, $content){
$vystup='';
$vystup.='<script type="text/javascript">-- tu je obsluzny javascript --</skript>';
$vystup.='<a onclick=".."><img></a>'; // tu je riadok tlacidiel (bold, img, h3.., h6, link a plus nejake vlastne)
$vystup.='<input type="text" />'; //riadok s napovedou
$vystup.='<textarea name="'.$name.'">'.$content.'</textarea>'; //samotny textarea s este dalsimi parametrami a vlastnostami
return $vystup;
}
je to vlastne vlastnorucne vyextraktovany kod z phpbb fora, ktory mi proste vygeneruje editor aj s tlacidlami…nemam to riesene ze by mi to podla classu cez javascript tie tlacidla vygenerovalo nad textareou.
No a prakticky by som potreboval, aby mi po zadani $form->addBbCode(‚text‘, ‚Text‘); vygenerovalo aspon tlacidla, input s napovedou (bez toho by som sa zaobisiel) a textareu (javascript planujem dat do hlavicky), tie tlacidla a input si pri spracovavani formularu nevsimalo a s celkom pracovalo ako s lubovolnou <textarea>
Editoval qacer (17. 4. 2011 14:17)
- Vojtěch Dobeš
- Gold Partner | 1316
Rozumím, předpokládal jsem, že jde o nějaký
unobtrusive javascript
, který ty tlačítka a omáčku okolo
doplní.
Princip bude v podstatě stejný (podědit TextArea
), až na
to, že:
public function getControl()
{
$output = '';
$output .= '<script type="text/javascript">-- tu je obsluzny javascript --</skript>';
$output .= '<a onclick=".."><img></a>';
$output .= '<input type="text" />';
$output .= parent::getControl();
return $output;
}
Metoda getControl
vrací instanci Nette\Web\Html
(teďka nově Nette\Utils\Html
), která se umí vypsat, v tomto
případě jako textarea
. Je to srozumitelné?
Tím, že je to poděděné od
TextArea `a použitá ta metoda `getControl
, tak se nemusíš
starat o doplnění $content
, to je vše už obstarané jak
u klasické textarey
.
Editoval vojtech.dobes (17. 4. 2011 18:46)