vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Creating a working [PRE] tag in vB3 (https://vborg.vbsupport.ru/showthread.php?t=82282)

futureal 05-31-2005 12:19 AM

Creating a working [PRE] tag in vB3
 
I post a lot of plain text results on my forums that use courier fonts, and it's much easier to have them use preformatted text rather than a code/php box.

Adding the [PRE] tag itself is a very simple mini-hack. You just fire up \includes\functions_bbcodeparse.php and make two additions. Here is what I did.

In the function fetch_bbcode_definitions, add the following in whichever bracketed section you deem appropriate (I used ALLOW_BBCODE_BASIC):

Code:

    // [PRE]
    $bbcodes['custom']['find']['[pre]'] = '#\[pre\](<br>|<br />|\r\n|\n|\r)??(.*)(<br>|<br />|\r\n|\n|\r)??\[/pre\]#esiU';
    $bbcodes['custom']['replace']['[pre]'] = "handle_bbcode_pre('\\2')";
    $bbcodes['custom']['recurse']['pre'][0] = array('handler' => 'handle_bbcode_pre');

Somewhere else in the file, add the function handle_bbcode_pre as so:

Code:

// ###################### Start bbcodehandler_pre #######################
function handle_bbcode_pre($text)
{

  $textfind = array(
    '<br>',  // <br> to nothing
    '<br />'  // <br /> to nothing
  );

  $textreplace = array(
    '',
    ''
  );
 
  $newtext = "<pre style=\"margin: 0;\">" . trim(str_replace($textfind,$textreplace,$text)) . "</pre>";
 
  return $newtext;

}

Okay, so far so good. Works like a charm with the standard text editor. However, when you EDIT an existing post that contains a PRE tag using the WYSIWYG editor, the formatting is lost when the editor loads.

Does anybody know why this is, or how it may be fixed? Or have any other feedback towards doing this?

For what it's worth, the reason you cannot simply make a custom PRE tag via the Admin CP is that nl2br() gets called on the text and a BR tag gets inserted at every newline. I also know that you could just use some CSS to force the BR tags in a PRE block to display: none, but I am wanting to find a solution to the above problem for my own curiosity, I guess.

deathemperor 05-31-2005 02:03 AM

I didn't have to hack the php code, I'm using
HTML Code:

<span style="white-space:pre;">{param}</span>
, works perfectly.


All times are GMT. The time now is 11:56 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01052 seconds
  • Memory Usage 1,709KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_code_printable
  • (1)bbcode_html_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (2)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete