Ir para conteúdo
Fórum Script Brasil
  • 0

URGENTE POR FAVOR AJUDEM!


unmeanings

Pergunta

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:

Editado por unmeanings
Link para o comentário
Compartilhar em outros sites

1 resposta 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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...