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;

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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. $dados = getimagesize( $img );
  9. $info = pathinfo( $img );
  10. $ArqIni = '<img src="data:'.$dados["mime"].';base64,';
  11. $ArqFim = '" arquivo="'.$info['basename'].'" style="width: '.$dados[0].' height: '.$dados[1].'px;">';
  12. $ArqTxt = base64_encode( $imagem );
  13. return ( $ArqIni.$ArqTxt.$ArqFim );
  14. }
  15. else return "Arquivo nao Encontrado: ".$img ;
  16. }
  17. ?>


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. * Class Constructor
  28. * @param $name Widet's name
  29. */
  30. public function __construct($name)
  31. {
  32. parent::__construct($name);
  33. $this->id = 'THtmlEditor_'.mt_rand(1000000000, 1999999999);
  34. // creates a tag
  35. $this->tag = new TElement('textarea');
  36. //Default value for toolbar
  37. //inclued for Fernando de Pinho Araújo
  38. $this->toolbar = "
  39. [ ['style',['style']],
  40. ['font',['bold','underline','clear']],
  41. ['fontname',['fontname']], ['color',['color']],
  42. ['para',['ul','ol','paragraph']],
  43. ['height', ['height']],
  44. ['table',['table']],
  45. ['insert',['picture'],['video'],['link']],
  46. ['view',['fullscreen','help']] ]";
  47. }
  48. /**
  49. * Define the widget's size
  50. * @param $width Widget's width
  51. * @param $height Widget's height
  52. */
  53. public function setSize($width, $height = NULL)
  54. {
  55. $this->size = $width;
  56. if ($height)
  57. {
  58. $this->height = $height;
  59. }
  60. }
  61. /**
  62. * Returns the size
  63. * @return array(width, height)
  64. */
  65. public function getSize()
  66. {
  67. return array( $this->size, $this->height );
  68. }
  69. /**
  70. * Enable the field
  71. * @param $form_name Form name
  72. * @param $field Field name
  73. */
  74. public static function enableField($form_name, $field)
  75. {
  76. TScript::create( " thtmleditor_enable_field('{$form_name}', '{$field}'); " );
  77. }
  78. /**
  79. * Disable the field
  80. * @param $form_name Form name
  81. * @param $field Field name
  82. */
  83. public static function disableField($form_name, $field)
  84. {
  85. TScript::create( " thtmleditor_disable_field('{$form_name}', '{$field}'); " );
  86. }
  87. /**
  88. * Clear the field
  89. * @param $form_name Form name
  90. * @param $field Field name
  91. */
  92. public static function clearField($form_name, $field)
  93. {
  94. TScript::create( " thtmleditor_clear_field('{$form_name}', '{$field}'); " );
  95. }
  96. /**
  97. * Show the widget
  98. */
  99. public function show()
  100. {
  101. $this->tag->{'id'} = $this->id;
  102. $this->tag->{'class'} = 'thtmleditor'; // CSS
  103. $this->tag->{'widget'} = 'thtmleditor';
  104. $this->tag->{'name'} = $this->name; // tag name
  105. $ini = AdiantiApplicationConfig::get();
  106. $locale = !empty($ini['general']['locale']) ? $ini['general']['locale'] : 'pt-BR';
  107. // add the content to the textarea
  108. $this->tag->add(htmlspecialchars($this->value));
  109. // show the tag
  110. $this->tag->show();
  111. //Modify for Fernando de Pinho Araújo (config tool bar)
  112. $script = " thtmleditor_start( '{$this->tag->{'id'}}', '{$this->size}', '{$this->height}', '{$locale}', {$this->toolbar} ); ";
  113. TScript::create($script);
  114. // check if the field is not editable
  115. if (!parent::getEditable())
  116. {
  117. TScript::create( " thtmleditor_disable_field('{$this->formName}', '{$this->name}'); " );
  118. }
  119. }
  120. /**
  121. * Define the widget's tool bar
  122. * @tool $tool array with toolbar
  123. * Inclued for Fernando de Pinho Araújo
  124. */
  125. public function setToolBar($tool = null)
  126. {
  127. if (!empty($tool))
  128. {
  129. $this->toolbar = $tool;
  130. }
  131. else
  132. {
  133. //Tool bar default
  134. $this->toolbar = "
  135. [ ['style',['style']],
  136. ['font',['bold','underline','clear']],
  137. ['fontname',['fontname']], ['color',['color']],
  138. ['para',['ul','ol','paragraph']],
  139. ['height', ['height']],
  140. ['table',['table']],
  141. ['insert',['picture'],['video'],['link']],
  142. ['view',['fullscreen','help']] ]";
  143. }
  144. }
  145. }
  146. ?>


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