Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 05-31-2005, 12:19 AM
futureal futureal is offline
 
Join Date: Feb 2002
Location: Del Mar, CA, USA
Posts: 556
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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.
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 03:11 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.03402 seconds
  • Memory Usage 2,254KB
  • Queries Executed 12 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (2)bbcode_code
  • (1)bbcode_html
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)postbit_wrapper
  • (1)showthread_list
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_threadedmode.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids_threaded
  • showthread_threaded_construct_link
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete