Estou com um problema que preciso resolver urgente!
Estou com um projeto de rede social (estou usando o social engine enfim vamos direto ao problema):
Preciso que quando o usuario editar seu perfil, no sobre mim (que no caso é uma textarea) aceite todas as tags html, pois ela não aceita nenhum tipo de tag html nem mesmo aceita quebra de linha (ou seja o texto fica todo na frente sem espaco de linhas) :(
E preciso muito que essa textarea do about me (sobre mim) aceite as tags html pois muitos usuarios gostam de colocar fotos, videos, formatar o texto etc...
Para isso eu usuarei um editor de textarea no qual seria: Tinymce (ou qualquer outro) (já consegui incluir o editor html (tinymce) em outras textareas do meu sistema: na textarea de comentario, na textarea de postar novidades e na textarea de responder ao tópico) mas não consegui ainda inseri-lo nessa textarea (do aboutme no perfil do usuario) e nem consegui se quer fazer a textarea aceitar as tags html sem o editor...
então vamos ao codigo php da textarea:
(O PHP DA TEXTAREA FUNCIONA ASSIM: VOCE ABRE O ARQUIVO ABOUTME.PHP E NELE SO TEM UM CODIGO (EXTENDS) QUE ESTENDE A CLASS PARA OUTRO ARQUIVO PHP ATE CHEGAR NO ARQUIVO QUE ESTA O CODIGO DA TEXTAREA CORRESPONDENTE)
Pelos codigos e todos os arquivos que abri para achar o arquivo php dessa textarea "acho" que conclui que ela funciona assim:
No arquivo aboutme.php temos somente a linha de codigo php:
class Fields_Form_Element_AboutMe extends Engine_Form_Element_Textarea
{
}
Como você viu uma class se estende a outra! então vamos para o proximo arquivo que esta indicado pelo (extends) no diretorio: Engine/Form/Element/Textarea.php nele temos as seguintes linhas de codigos:
class Engine_Form_Element_Textarea extends Zend_Form_Element_Textarea
{
public $cols = 45;
public $rows = 6;
public function loadDefaultDecorators()
{
if( $this->loadDefaultDecoratorsIsDisabled() )
{
return;
}
$decorators = $this->getDecorators();
if( empty($decorators) )
{
$this->addDecorator('ViewHelper');
Engine_Form::addDefaultDecorators($this);
}
}
}
Como vimos na primeira linha desse codigo ele continua se estendendo a mais um arquivo php que no caso esta no directorio: zend/form/element/textarea.php e nele temos:
class Zend_Form_Element_Textarea extends Zend_Form_Element_Xhtml
{
/**
* Use formTextarea view helper by default
* @var string
*/
public $helper = 'formTextarea';
}
Com muito custo consegui achar o diretorio do arquivo indicado pela ultima linha de codigo:
public $helper = 'formTextarea'
ou seja (formtextarea.php) e creio que é nele que devo modificar para aceitar as tags HTML ou incluir o editor tinymce (ou outro) pois é nele (no arquivo formTextarea.php) que esta o codigo da textarea segue abaixo as linhas de codigos do ultimo arquivo php (formTextarea.php):
class Zend_View_Helper_FormTextarea extends Zend_View_Helper_FormElement
{
/**
* The default number of rows for a textarea.
*
* @access public
*
* @var int
*/
public $rows = 24;
/**
* The default number of columns for a textarea.
*
* @access public
*
* @var int
*/
public $cols = 80;
/**
* Generates a 'textarea' element.
*
* @access public
*
* @param string|array $name If a string, the element name. If an
* array, all other parameters are ignored, and the array elements
* are extracted in place of added parameters.
*
* @param mixed $value The element value.
*
* @param array $attribs Attributes for the element tag.
*
* @return string The element XHTML.
*/
public function formTextarea($name, $value = null, $attribs = null)
{
$info = $this->_getInfo($name, $value, $attribs);
extract($info); // name, value, attribs, options, listsep, disable
// is it disabled?
$disabled = '';
if ($disable) {
// disabled.
$disabled = ' disabled="disabled"';
}
// Make sure that there are 'rows' and 'cols' values
// as required by the spec. noted by Orjan Persson.
if (empty($attribs['rows'])) {
$attribs['rows'] = (int) $this->rows;
}
if (empty($attribs['cols'])) {
$attribs['cols'] = (int) $this->cols;
}
// build the element
$xhtml = '<textarea name="' . $this->view->escape($name) . '"'
. ' id="' . $this->view->escape($id) . '"'
. $disabled
. $this->_htmlAttribs($attribs) . '>'
. $this->view->escape($value) . '</textarea>';
return $xhtml;
}
}
Como voces podem ver o codigo da textarea esta logo acima (no final do codigo php) em (//build the element) creio que é nele que devemos fazer a alteracao para acrescentar o editor html ou ao menos aceitar as tags html sem o editor!
Vou postar aqui um codigo do meu sitema em php de uma textarea (comments) que consegui faze-la aceitar as tags html e incluir o editor html (tinymce) segue abaixo o codigo (comment.php): OBS: NESSA LINHA DE CODIGO:
E é isso ai galera muito OBRIGADO pela atencao e pela paciencia de ler tudo isso \o/ e espero muito de verdade que alguém possa me ajudar com isso! Valeu ai aguardo respostas... :clap:
Pergunta
unmeanings
Estou com um problema que preciso resolver urgente!
Estou com um projeto de rede social (estou usando o social engine enfim vamos direto ao problema):
Preciso que quando o usuario editar seu perfil, no sobre mim (que no caso é uma textarea) aceite todas as tags html, pois ela não aceita nenhum tipo de tag html nem mesmo aceita quebra de linha (ou seja o texto fica todo na frente sem espaco de linhas) :(
E preciso muito que essa textarea do about me (sobre mim) aceite as tags html pois muitos usuarios gostam de colocar fotos, videos, formatar o texto etc...
Para isso eu usuarei um editor de textarea no qual seria: Tinymce (ou qualquer outro) (já consegui incluir o editor html (tinymce) em outras textareas do meu sistema: na textarea de comentario, na textarea de postar novidades e na textarea de responder ao tópico) mas não consegui ainda inseri-lo nessa textarea (do aboutme no perfil do usuario) e nem consegui se quer fazer a textarea aceitar as tags html sem o editor...
então vamos ao codigo php da textarea:
(O PHP DA TEXTAREA FUNCIONA ASSIM: VOCE ABRE O ARQUIVO ABOUTME.PHP E NELE SO TEM UM CODIGO (EXTENDS) QUE ESTENDE A CLASS PARA OUTRO ARQUIVO PHP ATE CHEGAR NO ARQUIVO QUE ESTA O CODIGO DA TEXTAREA CORRESPONDENTE)
Pelos codigos e todos os arquivos que abri para achar o arquivo php dessa textarea "acho" que conclui que ela funciona assim:
No arquivo aboutme.php temos somente a linha de codigo php:
class Fields_Form_Element_AboutMe extends Engine_Form_Element_Textarea { }Como você viu uma class se estende a outra! então vamos para o proximo arquivo que esta indicado pelo (extends) no diretorio: Engine/Form/Element/Textarea.php nele temos as seguintes linhas de codigos:class Engine_Form_Element_Textarea extends Zend_Form_Element_Textarea { public $cols = 45; public $rows = 6; public function loadDefaultDecorators() { if( $this->loadDefaultDecoratorsIsDisabled() ) { return; } $decorators = $this->getDecorators(); if( empty($decorators) ) { $this->addDecorator('ViewHelper'); Engine_Form::addDefaultDecorators($this); } } }Como vimos na primeira linha desse codigo ele continua se estendendo a mais um arquivo php que no caso esta no directorio: zend/form/element/textarea.php e nele temos:class Zend_Form_Element_Textarea extends Zend_Form_Element_Xhtml { /** * Use formTextarea view helper by default * @var string */ public $helper = 'formTextarea'; }Com muito custo consegui achar o diretorio do arquivo indicado pela ultima linha de codigo: ou seja (formtextarea.php) e creio que é nele que devo modificar para aceitar as tags HTML ou incluir o editor tinymce (ou outro) pois é nele (no arquivo formTextarea.php) que esta o codigo da textarea segue abaixo as linhas de codigos do ultimo arquivo php (formTextarea.php):class Zend_View_Helper_FormTextarea extends Zend_View_Helper_FormElement { /** * The default number of rows for a textarea. * * @access public * * @var int */ public $rows = 24; /** * The default number of columns for a textarea. * * @access public * * @var int */ public $cols = 80; /** * Generates a 'textarea' element. * * @access public * * @param string|array $name If a string, the element name. If an * array, all other parameters are ignored, and the array elements * are extracted in place of added parameters. * * @param mixed $value The element value. * * @param array $attribs Attributes for the element tag. * * @return string The element XHTML. */ public function formTextarea($name, $value = null, $attribs = null) { $info = $this->_getInfo($name, $value, $attribs); extract($info); // name, value, attribs, options, listsep, disable // is it disabled? $disabled = ''; if ($disable) { // disabled. $disabled = ' disabled="disabled"'; } // Make sure that there are 'rows' and 'cols' values // as required by the spec. noted by Orjan Persson. if (empty($attribs['rows'])) { $attribs['rows'] = (int) $this->rows; } if (empty($attribs['cols'])) { $attribs['cols'] = (int) $this->cols; } // build the element $xhtml = '<textarea name="' . $this->view->escape($name) . '"' . ' id="' . $this->view->escape($id) . '"' . $disabled . $this->_htmlAttribs($attribs) . '>' . $this->view->escape($value) . '</textarea>'; return $xhtml; } }Como voces podem ver o codigo da textarea esta logo acima (no final do codigo php) em (//build the element) creio que é nele que devemos fazer a alteracao para acrescentar o editor html ou ao menos aceitar as tags html sem o editor! Vou postar aqui um codigo do meu sitema em php de uma textarea (comments) que consegui faze-la aceitar as tags html e incluir o editor html (tinymce) segue abaixo o codigo (comment.php): OBS: NESSA LINHA DE CODIGO:$this->addElement('TinyMceM2B', 'body', array(ONDE ESTA: TinyMceM2B antes era: Textarea!class Activity_Form_Comment extends Engine_Form { public function init() { $this->clearDecorators() ->addDecorator('FormElements') ->addDecorator('Form') ->setAttrib('class', null) ->setAction(Zend_Controller_Front::getInstance()->getRouter()->assemble(array( 'module' => 'activity', 'controller' => 'index', 'action' => 'comment', ), 'default')); //$allowed_html = Engine_Api::_()->getApi('settings', 'core')->core_general_commenthtml; $viewer = Engine_Api::_()->user()->getViewer(); $allowed_html = ""; if($viewer->getIdentity()){ $allowed_html = Engine_Api::_()->getDbtable('permissions', 'authorization')->getAllowed('user', $viewer->level_id, 'commentHtml'); } $this->addElement('TinyMceM2B', 'body', array( 'rows' => 1, 'decorators' => array( 'ViewHelper' ), 'filters' => array( new Engine_Filter_Html(array('AllowedTags'=>$allowed_html)), //new Engine_Filter_HtmlSpecialChars(), new Engine_Filter_EnableLinks(), new Engine_Filter_Censor(), ), )); if (Engine_Api::_()->getApi('settings', 'core')->core_spam_comment) { $this->addElement('captcha', 'captcha', array( 'description' => 'Please type the characters you see in the image.', 'captcha' => 'image', 'required' => true, 'captchaOptions' => array( 'wordLen' => 6, 'fontSize' => '30', 'timeout' => 300, 'imgDir' => APPLICATION_PATH . '/public/temporary/', 'imgUrl' => $this->getView()->baseUrl().'/public/temporary', 'font' => APPLICATION_PATH . '/application/modules/Core/externals/fonts/arial.ttf' ))); } $this->addElement('Button', 'submit', array( 'type' => 'submit', 'ignore' => true, 'label' => 'Post Comment', 'decorators' => array( 'ViewHelper', ) )); $this->addElement('Hidden', 'action_id', array( 'order' => 990, 'filters' => array( 'Int' ), )); $this->addElement('Hidden', 'return_url', array( 'order' => 991, 'value' => Zend_Controller_Front::getInstance()->getRouter()->assemble(array()) )); } public function setActionIdentity($action_id) { $this ->setAttrib('id', 'activity-comment-form-'.$action_id) ->setAttrib('class', 'activity-comment-form') ->setAttrib('style', 'display: none;'); $this->action_id ->setValue($action_id) ->setAttrib('id', 'activity-comment-id-'.$action_id); $this->submit //->getDecorator('HtmlTag') ->setAttrib('id', 'activity-comment-submit-'.$action_id) ; $this->body ->setAttrib('id', 'activity-comment-body-'.$action_id) ; //->setAttrib('onfocus', "document.getElementById('activity-comment-submit-".$action_id."').style.display = 'block';") //->setAttrib('onblur', "if( this.value == '' ) { document.getElementById('activity-comment-form-".$action_id."').style.display = 'none'; }"); return $this; } public function renderFor($action_id) { return $this->setActionIdentity($action_id)->render(); } }E é isso ai galera muito OBRIGADO pela atencao e pela paciencia de ler tudo isso \o/ e espero muito de verdade que alguém possa me ajudar com isso! Valeu ai aguardo respostas... :clap:
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.