Jump to content
Fórum Script Brasil
  • 0

AJUDA (TEXTAREA em PHP) não aceita nehuma TAG HTML


unmeanings

Question

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:
$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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Antes de mais nada, bem vindo ao fórum, observei que você já postou a sua dúvida neste outro tópico:

http://scriptbrasil.com.br/forum/index.php?showtopic=162138

Sempre mantenha a discussão no mesmo lugar, por você ser novo, vou deixar passar, se voltar a ocorrer, ai teremos que tomar outras medidas, como citei no outro tópico, o sistema tem alguma manual?

Link to comment
Share on other sites

  • 0

Cara desculpa ae é porque eu não consegui apagar o outro :wacko: (se voce puder apagar ai pra mim, pode apagar!)

Respondendo sua Pergunta:

Como assim manual? eu acho que não possui manual não voce pode ver um demo do sistema em: http://www.socialengine.net/examples/live-demos

ou baixar a versao trial

Nas ultimas linhas de codigo da textarea (penultimo codigo postado)(formTextarea.php) nesse codigo:

// 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;
    }

não tem algum codigo php que eu possa acrescentar, substituir ou remover desse codigo que possa fazer ela pelo ao menos aceitar as tags html?

Se pudesse talvez acrescentar dentro da tag ou antes não sei um codigo de allow_html sei la me ajuda ai preciso arrumar isso com urgencia :(

Link to comment
Share on other sites

  • 0

o codigo da textarea já poassuia esse codigo que voce me informou:

// build the element
        $xhtml = '<textarea name="' . $this->view->escape($name) . '"'
                . ' id="' . $this->view->escape($id) . '"'
                . $disabled
                . $this->_htmlAttribs($attribs) . '>'
               [i][u] . $this->view->escape($value) . '[/u][/i]</textarea>';

        return $xhtml;
    }
tentei tira-lo resultado-> nada aconteceu! continua não convertendo as tags html tentei tira-lo e recoloca-lo em posicao diferente pois ele estava entre
<textarea>'.$this->view->escape($value).'</textarea>
ai tirei ele e coloquei assim <textarea '.$this->view->escape($value).'></textarea tambem nada adiantou! sera que pode ser na pagina que exibe as informacoes preenchidas pelo usuario que pode estar não aceitando as tags html? ex: porque tem o formulario de editar o perfil e depois tem o formulario que exibe as informacoes editadas ne? sera que pode ser la? olhei no codigo fonte do perfil (onde esta o campo da textarea (aboutme)) nele temos:
<div class="profile_fields">
          <h4>
            <span>Personal Details</span>
          </h4>
          <ul>
              <li>
    
    <span>
      About Me
    </span>
    <span>
      testo

[b]negrito[/b]










textotexto





okokok

&lt;a href=&quot;http://www.google.com.br/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://www.google.com.br/&lt;/a&gt;
    </span>
  </li>
          </ul>
        </div>

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...