Hack Name: BBCode: FLV Player v1.0

Author: GuldantheWarlock (GuldantheWarlock@xmbgarage.com)

Last Updated: March 8, 2009

Description: This modification will allow you to embed an flv video into your post via BBCode.

Supported Version: XMB 1.9.5 Nexus Final

Notes:
This modification makes use of the JW FLV Media Player found at http://www.jeroenwijering.com/
This modification is released under the GPL. You should have recieved a copy of it with this modification.

Please backup your files before installing this modification. Neither XMBGarage nor the author can be held
responsible if your board stops functioning properly due to you installing this modification.

=======================================================================================================

=======
Step 1:
=======

====================
Edit lang/English.lang.php:
====================

==============
Add to end of file:
==============

// BBCode: FLV Player Mod Begin
$lang['bbcode_help_flv'] = "FLV tag\\nEmbeds an flv file.\\nUsage: [flv]url of file[/flv]";
$lang['bbcode_prompt_flv'] = "Please enter the URL of the flv file you would like to link to.";
$lang['cb_insert_flv'] = "Embed flv file";
// BBCode: FLV Player Mod End

=======================================================================================================

=======
Step 2:
=======

=============
Edit header.php
=============

=====
Find:
=====

    // additional CSS to load?
    if(file_exists($imgdir.'/theme.css')) {
        $cssInclude = '<style type="text/css">'."\n"."@import url('".$imgdir."/theme.css');"."\n".'</style>';
    } else {
        $cssInclude = '';
    }
    
============
Replace With:
============

    $cssInclude = '';
    if (file_exists($imgdir.'/theme.css')) {
        $cssInclude = '<style type="text/css">'."\n"."@import url('".$imgdir."/theme.css');"."\n".'</style>';
    }
    // BBCode: FLV Player Mod Begin
    if (isset($tid) && is_numeric($tid) && (int) $tid > 0) {
        $cssInclude .= "\n".'<script type="text/javascript" src="'.ROOT.'include/swfobject.js"></script>';
    }
    // BBCode: FLV Player Mod End

=======================================================================================================

=======
Step 3:
=======

==============
Edit functions.php
==============

=====
Find:
=====

        $patterns[] = "#\[email=([^\"'<>]*?){1}([^\"]*?)\](.*?)\[/email\]#Smi";
        $replacements[] = '<a href="mailto:\1\2">\3</a>';
        
==========
Add Below:
==========

        // BBCode: FLV Player Mod Begin
        $patterns[] = "#\[flv\]([a-z]+?://){1}([^\"'<>]*?)\[/flv\]#Smie";
        $replacements[] = 'bbcode_flv(\'$1$2\')';
        // BBCode: FLV Player Mod End

=====
Find:
=====

function createAbsFSizeFromRel($rel) {

===========
Add Above:
===========

// BBCode: FLV Player Mod Begin
function bbcode_flv($path) {
    global $thisbg, $THEME;
    
    $rand = md5(uniqid(mt_rand()));
    
    $flvembed   = array();
    $flvembed[] = '<div id="flvplayer'.$rand.'"></div>';
    $flvembed[] = '<script language="JavaScript" type="text/javascript">';
    $flvembed[] = "var so = new SWFObject('".ROOT."include/mediaplayer.swf', 'mpl', '470', '320', '8');";
    $flvembed[] = "so.addParam('allowscriptaccess', 'always');";
    $flvembed[] = "so.addParam('allowfullscreen', 'true');";
    $flvembed[] = "so.addVariable('height', '320');";
    $flvembed[] = "so.addVariable('width', '470');";
    $flvembed[] = "so.addVariable('file', '$path');";
    $flvembed[] = "so.addVariable('backcolor',   '0x".(($thisbg == $THEME['altbg2']) ? $THEME['altbg1'] : $THEME['altbg2'])."');";
    $flvembed[] = "so.addVariable('frontcolor',  '0x".$THEME['tabletext']."');";
    $flvembed[] = "so.addVariable('lightcolor',  '0x".$THEME['link']."');";
    $flvembed[] = "so.addVariable('screencolor', '0x".(($thisbg == $THEME['altbg2']) ? $THEME['altbg1'] : $THEME['altbg2'])."');";
    $flvembed[] = "so.write('flvplayer".$rand."');";
    $flvembed[] = '</script>';
    
    return str_replace('0x#', '0x', implode('', $flvembed));
}
// BBCode: FLV Player Mod End

=======================================================================================================

=======
Step 4:
=======

=====================
Edit include/bbcodefns-ie.js
=====================

=====
Find:
=====

function storeCaret(textEl) {

===========
Add Above:
===========

// BBCode: FLV Player Mod Begin
function flv() {
    if (helpmode) {
        alert(bbcode_help_flv);
    } else if (advmode) {
        AddText('', '', "[flv] [/flv]", messageElement);
    } else {
        var txt = prompt(bbcode_prompt_flv, "myfile.flv");
        if (txt != null) {
            AddText('', '', "[flv]"+txt+"[/flv]", messageElement);
        }
    }
}
// BBCode: FLV Player Mod End

=======================================================================================================

=======
Step 5:
=======

=================================
Edit include/bbcodefns-mozilla.js
=================================

=====
Find:
=====

// IE function

==========
Add Below:
==========

// BBCode: FLV Player Mod Begin
function flv() {
    if (helpmode) {
        alert(bbcode_help_flv);
    } else if (advmode) {
        if (hasSelection(messageElement)) {
            wrapText('[flv]', '[/flv]', messageElement);
        } else {
            AddText('[flv]', '[/flv]', ' ', messageElement);
        }

    } else {
        if (hasSelection(messageElement)) {
            var text = prompt(bbcode_prompt_flv, fetchSelection(messageElement));
            if (text == fetchSelection(messageElement)) {
                wrapText('[flv]', '[/flv]', messageElement);
            } else {
                AddText('[flv]', '[/flv]', text, messageElement);
            }
        } else {
            var text = prompt(bbcode_prompt_flv, 'myfile.flv');
            AddText('[flv]', '[/flv]', text, messageElement);
        }
    }
}

// BBCode: FLV Player Mod End

=======================================================================================================

=======
Step 6:
=======

===============================
Edit include/bbcodefns-opera.js
===============================

=====
Find:
=====

function storeCaret(textEl) {

===========
Add Above:
===========

// BBCode: FLV Player Mod Begin
function flv() {
    if (helpmode) {
        alert(bbcode_help_flv);
    } else if (advmode) {
        AddText('', '', "[flv] [/flv]", messageElement);

    } else {
        var txt = prompt(bbcode_prompt_flv, "myfile.flv");
        if (txt != null) {
            AddText('', '', "[flv]"+txt+"[/flv]", messageElement);
        }
    }
}
// BBCode: FLV Player Mod End

=======================================================================================================

=======
Step 7:
=======

==============================
Go to Admin Panel -> Templates
==============================

===============================
Edit template: functions_bbcode
===============================

=====
Find:
=====

var bbcode_help_underline   = "$lang[bbcode_help_underline]";
var bbcode_prompt_underline = "$lang[bbcode_prompt_underline]";

==========
Add Below:
==========

var bbcode_help_flv   = "$lang[bbcode_help_flv]";
var bbcode_prompt_flv = "$lang[bbcode_prompt_flv]";

=======================================================================================================

=======
Step 8:
=======

==============================
Go to Admin Panel -> Templates
==============================

=====================================
Edit template: functions_bbcodeinsert
=====================================

=====
Find:
=====

<a href="javascript:list()"><img src="$imgdir/bb_list.gif" border="0" width="23" height="22" alt="$lang[cb_insert_list]" /></a></td>

=============
Replace With:
=============

<a href="javascript:list()"><img src="$imgdir/bb_list.gif" border="0" width="23" height="22" alt="$lang[cb_insert_list]" /></a>
<a href="javascript:flv();"><img src="$imgdir/bb_flv.gif" border="0" width="22" height="22" alt="$lang[cb_insert_flv]" /></a></td>

=======================================================================================================

=======
Step 9:
=======

Upload the included 'mediaplayer.swf' and 'swfobject.js' from the Contents folder to your forum's include folder.
Upload the included 'bb_flv.gif' from the Contents folder to your forum's theme directories.

=======================================================================================================

Enjoy!