PDA

View Full Version : ajax requests for postbit


Wedframe
06-18-2015, 07:39 PM
Hello! I try to make custom plugin, and try to figure out, how I can use ajax requests for suitable changes in post content.
On hook bbcode_create:
/// Get code HTML
global $vbulletin, $post;

if (!function_exists ('handle_geshi_code'))
{
function handle_geshi_code($code, $lang)
{
require_once(DIR . '/geshi.php');
$codefind1 = array('<br>','<br />');
$codereplace1 = array('','');
$codefind2 = array('&gt;','&lt;','&quot;','&amp;','[',']',);
$codereplace2 = array('>','<','"','&','[',']',);
$code = rtrim(str_replace($codefind1, $codereplace1, $code));
$code = str_replace($codefind2, $codereplace2, $code);
$geshi = new GeSHi($code, $lang);
$geshi->set_overall_style('font-size: 12px');
$geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);
$code = $geshi->parse_code();
$code = preg_replace('/&amp;#([0-9]+);/', '&#$1;', $code);
$code = str_replace(array('[', ']'), array('[', ']'), $code);
return $code;
}
}

if ($this->is_wysiwyg())
{
$this->unparsed_tags = array(
'phps',
'ahk',
'au3',
'avs',
'diff',
'xml'
);
}

and on bbcode_fetch_tags
$tag_list['no_option']['phps'] = array (
'callback' => 'handle_external',
'external_callback' => 'handle_geshi_php',
'disable_wordwrap' => true,
'strip_empty' => true
);

if (!function_exists ('handle_geshi_php'))
{
function handle_geshi_php(&$theobj, &$value, &$option)
{
$code = handle_geshi_code($value,'php');
return '<div class="bbcode_container"><div id="geshipars"><script type="text/javascript" src="/geshi/scripts/geshi.js"><span onclick="return myfn(' . $post['postid'] . ');">Click</span></a></div><div style="max-height: 300px;" class="bbcode_code">'.$code.'</div></div>';
}
}

with js:
function myfn(postid)
{
var sUrl = 'ajax_geshi.php';
}

but in debugger I have:
postid = undefined
--------------------------------------
So... whats right syntax for this operation?
And next... how I can resolve bbcode-parsed text from current post?
Thanks!

Wedframe
06-21-2015, 10:07 PM
Please.... I dont ask to many((((
I`m just need to know right syntax to properly receive a postid in javascript.
Maybe at least someone tell in which files of vB, I can see similar operation?

Scanu
06-23-2015, 04:21 PM
Seems like $post['postid'] is not defined yet on that hook, you can try $post['id'] or something like that but it could be more complex. Usually when I have this type of problems I search the file containing the hook bbcode_fetch_tags and see what's going on there. You may find there some variables containing the post id

Wedframe
06-24-2015, 02:12 PM
Thanks, Andrea!
Your right.

I found how to define postid on any hooks)))
global $vbulletin, $post;
$vbulletin->input->clean_gpc('r', 'postid', TYPE_UINT);

And then I need it, I use:
intval($vbulletin->GPC['postid']);
At least it worked during tests...

How you think its good idea, or may be better found another way?