vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Formatting in user-defined template (https://vborg.vbsupport.ru/showthread.php?t=186410)

thalamus 07-26-2008 07:48 AM

Formatting in user-defined template
 
I've come across a problem when trying to output a formatted series of fields into a post, in that a 'newline' (or a <br /> doesn't appear to be recognized when the string is submitted.

Briefly; I've created a plugin that allows for a new thread post to have its own template - let's say its for a review. The new template is being called by the relevant hook (newthread_post_start), and the template has several fields in addition to the main comment box (i.e. name of book, author, date of publication, date reviewed, rating). These field values are being picked up correctly, and what I want to do is to collate them all, and place them into the $vbulletin->GPC['message'] store. In order to do that, I pick up the field values after the form is submitted and assign them to variables that are concatenated, but each with a newline for spacing. For example:
Code:

  $newline = chr(13) . chr(10);
  $new_message = '[b][size="4"]' . $rev_title . '[/size][/b]' . $newline;
  $new_message .= '[size="2"]' . $rev_author . '[/size]' . $newline;
  $new_message .= '[i][size="2"]' . $rev_date . '[/size][/i]' . $newline . $newline;
  $new_message .= '[b]' . $rev_initpara . '[/b]' . $newline . $newline;
  $new_message .= $rev_message . $newline . $newline;
  $new_message .= '[url="' . $rev_link . '"]Full Review Here[/url]' . $newline;
  // and set it as the main message text from the editor as an all-in-one for processing by vBulletin core
  $vbulletin->GPC['message'] = $new_message;


Obviously, $rev_message contains
$vbulletin->GPC['message'] which is brought across from the hook, and is the main wysiwyg/editor text content.

As you can see, the above assigns $newline with the character values of a lf and cr, but this does not output. I've also tried to substitute "<br />" and "\r\n" into $newline, all to no avail (in fact the saved post simply displays the <br /> or \r\n as characters).

Does anyone know what the lf/cr values are that are interpreted properly by the core function in order for this to output correctly into a post?

Sorry if some of this doesn't make sense; it's quite a frustrating problem :(

TIA for your assistance

Opserty 07-26-2008 07:52 AM

PHP Code:

$newline PHP_EOL

(No need really for that line, just use PHP_EOL in place of the variable).

thalamus 07-26-2008 08:05 AM

Thanks for the response, Opserty... unfortunately all that does is outputs the text PHP_EOL instead of the line breaks :(

Opserty 07-26-2008 08:08 AM

What is the exact code you are using? (That you've changed it too now)

thalamus 07-26-2008 08:14 AM

I've tried both:
PHP Code:

$newline PHP_EOL

retaining the variable in the code, and also replacing the variable at each instruction:
PHP Code:

$new_message '[b][size="4"]' $rev_title '[/size][/b]' PHP_EOL;
$new_message .= '[size="2"]' $rev_author '[/size]' PHP_EOL;
$new_message .= '[i][size="2"]' $rev_date '[/size][/i]' PHP_EOL PHP_EOL;
$new_message .= '[b]' $rev_initpara '[/b]' PHP_EOL PHP_EOL;
$new_message .= $rev_message PHP_EOL PHP_EOL;
$new_message .= '[url="' $rev_link '"]Full Review Here[/url]' PHP_EOL;
// and set it as the main message text from the editor as an all-in-one for processing by vBulletin core
$vbulletin->GPC['message'] = $new_message

Both display the text PHP_EOL after the field values.

Opserty 07-26-2008 08:36 AM

Ok undo those changes you made and try:
PHP Code:

if($vbulletin->GPC['wysiwyg'])
{
    
$newline '<br>';
}
else
{
    
$newline "\n";
}
// Rest of your code here... 


thalamus 07-26-2008 08:58 AM

:up:

This seems to have done the trick; I'll now wait for the users to make posts and check, but from the looks of it, it's now working :)

Many thanks for your assistance on this one, opserty; much appreciated :)

Opserty 07-26-2008 09:44 AM

No problem, you could shorten it to a single line like:
PHP Code:

$newline = ($vbulletin->GPC['wysiwyg']) ? '<br>' "\n"


thalamus 07-26-2008 04:20 PM

indeed... already coded the conditional shortcut :) thanks again :)


All times are GMT. The time now is 02:13 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.01604 seconds
  • Memory Usage 1,741KB
  • 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
  • (1)bbcode_code_printable
  • (5)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)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