menu
Fórum Adianti
menu Menu
DESABILITAR BOTÕES DO THTMLEDITOR Boas; Alguém sabe me informar como desabilitar via programação os botões do THtmlEditor ? Explicando: Estou construindo uma tela onde o usuário irá carregar uma imagem, e depois salva-la em um banco de dados MySQL num campo do tipo TEXT (Não posso mudar isso). Depois de muitas tentativas vi que a melhor forma de fazer isso diretamente seria usar o THtmlEditor, mas para isso teria...
MC
DESABILITAR BOTÕES DO THTMLEDITOR  
Boas;

Alguém sabe me informar como desabilitar via programação os botões do THtmlEditor ?

Explicando:
Estou construindo uma tela onde o usuário irá carregar uma imagem, e depois salva-la em um banco de dados MySQL
num campo do tipo TEXT (Não posso mudar isso).

Depois de muitas tentativas vi que a melhor forma de fazer isso diretamente seria usar o THtmlEditor, mas para isso teria que deixar Habilitado somente o botão de Imagem.

Estou aberto a sugestões.

Um abraço a todos;

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (6)


MC

Enquanto isso..... Quem não tem cão caça com gato... ;D

Resolvi de outra forma, na verdade usei como parâmetro o arquivo gerado pelo THtmlEditor.
e ficou - "diga-se de passage" - muito melhor do que o esperado.

Segue abaixo a solução:

  1. <?php
  2.     public static function ImgBase64$img )
  3.     {
  4.         if ( file_exists$img ))
  5.         {
  6.             // Le a stream do Arquivo e retorna a imagem
  7.             $imagem file_get_contents$img );
  8.         
  9.             $dados  getimagesize$img );
  10.             $info   pathinfo$img );
  11.             
  12.             $ArqIni '<img src="data:'.$dados["mime"].';base64,';
  13.             $ArqFim '" arquivo="'.$info['basename'].'" style="width: '.$dados[0].' height: '.$dados[1].'px;">';
  14.             $ArqTxt base64_encode$imagem );
  15.             return ( $ArqIni.$ArqTxt.$ArqFim );
  16.         } 
  17.         else return "Arquivo nao Encontrado: ".$img ;            
  18.     }
  19. ?>


Pronto e só salvar o arquivo na Base MySqL no campo TXT.

se der um var_dump do retorno vai notar que a imagem aparece na tela.

Abraços
NR

Se a ideia é deixar habilitado somente o botão de imagem, por que não utilizar o TFile ou TMultifile que são específicos para isso?

De qualquer forma, para habilitar/desabilitar os botões do THtmlEditor você precisa adicionar a função thtmleditor_start no arquivo app/lib/include/application.js:
function thtmleditor_start(objectId, width, height) { $('#'+objectId).summernote({ toolbar: [ ['picture', ['picture']] ] }); }
MC

Nataniel, boas.

Obrigado pela reposta e foi válida tanto para mim quanto para outros que precisarem, e olha que procurei na internet e pouco achei sobre.

Quanto ao TFile ou Tmultifile tem finalidades distintas em relação THtmlEditor, enquanto os primeiros carregam as imagens para
uma área temporária e guarda somente o nomes desta, por padrão tmp/ o outro carrega todo o conteúdo como arquivo texto no formato Base64.

Ao gravar numa Base de Dados o primeiro irá guardar o nome do arquivo e o THtmlEditor irá guardar toda a imagem.

O meu problema baseava-se exatamente ai, não me interessa "Mover e guardar nome" e sim em guardar a imagem propriamente dita e depois edita-la
quando fosse necessário.

Por isso coloquei a solução que encontrei, logico que estou usando o TFile, carrego a imagem em base temporária, converto em arquivo Base64,
coloco as Tag's necessárias para edita-las quando precisar, e logo em seguida excluo a imagem do temporário.

No formato acima tenho todo o controle sobre o arquivo, mas com THtmlEditor no meu "sonho" seria "uma mão na roda".


Abraços.
MC

Se alguém passar por aqui, no link abaixo esta a resposta

nota - Versão 5 do Framework

www.adianti.com.br/forum/pt/view_3985
FA

Boa tarde,

Olhando seu código vi que a customização do THtmlEditor ainda é totalmente manual, assim resolvi incluir uma nova função na classe bem como alterar o application.js para receber a mudança adequadamente. veja abaixo:

No arquivo application.js que está na pasta app/lib/include adicione no final do mesmo as linhas abaixo:

//[....Código original ...] function thtmleditor_start(objectId, width, height, lang, toolbararray) { $('#'+objectId).summernote({ width: width, height: height, lang: lang, toolbar: toolbararray }); if (typeof $('#'+objectId).next('.note-editor')[0] !== 'undefined') { var container = $('#'+objectId).next('.note-editor')[0]; $(container).css('margin', $('#'+objectId).css('margin')); } }


Procure pelo THtmlEditor.php na path raiz lib/adianti/widget/form e substitua o seu script pelo código abaixo:
  1. <?php
  1. <?php
  2. namespace Adianti\Widget\Form;
  3. use Adianti\Core\AdiantiApplicationConfig;
  4. use Adianti\Widget\Form\AdiantiWidgetInterface;
  5. use Adianti\Widget\Base\TElement;
  6. use Adianti\Widget\Base\TScript;
  7. use Adianti\Widget\Form\TField;
  8. /**
  9.  * Html Editor
  10.  *
  11.  * @version    5.5
  12.  * @package    widget
  13.  * @subpackage form
  14.  * @author     Pablo Dall'Oglio
  15.  * @update author Fernando de Pinho Araújo
  16.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  17.  * @license    http://www.adianti.com.br/framework-license
  18.  */
  19. class THtmlEditor extends TField implements AdiantiWidgetInterface
  20. {
  21.     protected $id;
  22.     protected $size;
  23.     protected $formName;
  24.     private   $height;
  25.     protected $toolbar//Acrescido para haver o controle das toolbar
  26.     
  27.     /**
  28.      * Class Constructor
  29.      * @param $name Widet's name
  30.      */
  31.     public function __construct($name)
  32.     {
  33.         parent::__construct($name);
  34.         $this->id 'THtmlEditor_'.mt_rand(10000000001999999999);
  35.         
  36.         // creates a tag
  37.         $this->tag     = new TElement('textarea');
  38.         //Default value for toolbar
  39.         //inclued for Fernando de Pinho Araújo
  40.         $this->toolbar "
  41. [ ['style',['style']], 
  42.   ['font',['bold','underline','clear']], 
  43.   ['fontname',['fontname']], ['color',['color']], 
  44.   ['para',['ul','ol','paragraph']], 
  45.   ['height', ['height']], 
  46.   ['table',['table']], 
  47.   ['insert',['picture'],['video'],['link']], 
  48.   ['view',['fullscreen','help']] ]";
  49.   
  50.     }
  51.     
  52.     /**
  53.      * Define the widget's size
  54.      * @param  $width   Widget's width
  55.      * @param  $height  Widget's height
  56.      */
  57.     public function setSize($width$height NULL)
  58.     {
  59.         $this->size   $width;
  60.         if ($height)
  61.         {
  62.             $this->height $height;
  63.         }
  64.     }
  65.     
  66.     /**
  67.      * Returns the size
  68.      * @return array(width, height)
  69.      */
  70.     public function getSize()
  71.     {
  72.         return array( $this->size$this->height );
  73.     }
  74.     
  75.     /**
  76.      * Enable the field
  77.      * @param $form_name Form name
  78.      * @param $field Field name
  79.      */
  80.     public static function enableField($form_name$field)
  81.     {
  82.         TScript::create" thtmleditor_enable_field('{$form_name}', '{$field}'); " );
  83.     }
  84.     
  85.     /**
  86.      * Disable the field
  87.      * @param $form_name Form name
  88.      * @param $field Field name
  89.      */
  90.     public static function disableField($form_name$field)
  91.     {
  92.         TScript::create" thtmleditor_disable_field('{$form_name}', '{$field}'); " );
  93.     }
  94.     
  95.     /**
  96.      * Clear the field
  97.      * @param $form_name Form name
  98.      * @param $field Field name
  99.      */
  100.     public static function clearField($form_name$field)
  101.     {
  102.         TScript::create" thtmleditor_clear_field('{$form_name}', '{$field}'); " );
  103.     }
  104.     
  105.     /**
  106.      * Show the widget
  107.      */
  108.     public function show()
  109.     {
  110.         $this->tag->{'id'}     = $this->id;
  111.         $this->tag->{'class'}  = 'thtmleditor';       // CSS
  112.         $this->tag->{'widget'} = 'thtmleditor';
  113.         $this->tag->{'name'}   = $this->name;   // tag name
  114.         
  115.         $ini AdiantiApplicationConfig::get();
  116.         $locale = !empty($ini['general']['locale']) ? $ini['general']['locale'] : 'pt-BR';
  117.         
  118.         // add the content to the textarea
  119.         $this->tag->add(htmlspecialchars($this->value));
  120.         
  121.         // show the tag
  122.         $this->tag->show();
  123.         //Modify for Fernando de Pinho Araújo (config tool bar)
  124.         $script " thtmleditor_start( '{$this->tag->{'id'}}', '{$this->size}', '{$this->height}', '{$locale}', {$this->toolbar} ); ";
  125.         TScript::create($script);
  126.         
  127.         // check if the field is not editable
  128.         if (!parent::getEditable())
  129.         {
  130.             TScript::create" thtmleditor_disable_field('{$this->formName}', '{$this->name}'); " );
  131.         }
  132.     }
  133.     /**
  134.      * Define the widget's tool bar
  135.      * @tool   $tool    array with toolbar
  136.      * Inclued for Fernando de Pinho Araújo
  137.      */
  138.     public function setToolBar($tool null)
  139.     {
  140.         if (!empty($tool))
  141.         {
  142.             $this->toolbar   $tool;
  143.         }
  144.         else
  145.         {
  146.             //Tool bar default
  147.             $this->toolbar "
  148. [ ['style',['style']], 
  149.   ['font',['bold','underline','clear']], 
  150.   ['fontname',['fontname']], ['color',['color']], 
  151.   ['para',['ul','ol','paragraph']], 
  152.   ['height', ['height']], 
  153.   ['table',['table']], 
  154.   ['insert',['picture'],['video'],['link']], 
  155.   ['view',['fullscreen','help']] ]";
  156.         }
  157.     }
  158. }
  159. ?>


Espero ter ajudado.

OBS: Tenha cuidado com as atualizações de framework pois terá de refazer essas mudanças ou se adaptar ao que vier caso os desenvolvedores modifiquem o funcionamento da classe.

At.te. Fernando de Pinho Araújo
FA

Ah sim...mostro como funciona abaixo:

  1. <?php
  2.  //[...]
  3.         $master_problema                   = new THtmlEditor('master_problema');
  4.   [...]
  5.         $master_problema->setSize('85%',128);//Tamanho
  6.         $master_problema->setToolBar "
  7. [ ['style',['style']], 
  8.   ['font',['bold','underline','clear']], 
  9.   ['fontname',['fontname']], ['color',['color']], 
  10.   ['para',['ul','ol','paragraph']], 
  11.   ['height', ['height']], 
  12.   ['table',['table']], 
  13.   ['insert',['picture'],['video'],['link']], 
  14.   ['view',['fullscreen','help']] ]" ); //Exemplo de Tool Bar. Maiores informações no link https://summernote.org/deep-dive/#initialization-options
  15. ?>


At.te. Fernando de Pinho Araújo