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

Reply
 
Thread Tools Display Modes
  #1  
Old 08-20-2009, 11:52 AM
Ldoppea Ldoppea is offline
 
Join Date: Apr 2009
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default USERCP page

Hi,

I'm trying to create a custom USERCP page, based on this How-To : https://vborg.vbsupport.ru/showthrea...uct_usercp_nav

So I create a new page successful (new item on the usercp menu, and new page with header, usercp menu etc). But I don't understand how to include contents.

Can you help me?

Thanks.
Reply With Quote
  #2  
Old 08-20-2009, 03:57 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

So, you created a new link in the User CP navbar and now you need help creating the actual page? You may want to start here - [How-To] vBulletin API Basics: Creating Custom Pages & Misc.
Reply With Quote
  #3  
Old 08-23-2009, 09:51 PM
Ldoppea Ldoppea is offline
 
Join Date: Apr 2009
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes, I need help creating the actual page. I know how to create a custom page, but the USERCP page seems to be different.

The USERCP template is a template which inclure the header, the navbar, the USERCP menu and the content space.

So your new page had to implement the USERCP template (like is described here). So it isn't a simple custom page which include the USERCP menu.

My question, is how to complete the content space?
Reply With Quote
  #4  
Old 08-23-2009, 10:06 PM
RLShare RLShare is offline
 
Join Date: Jun 2008
Posts: 499
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Actually, It is a simple custom page that includes the USERCP menu. There is a template called 'USERCP_SHELL' that has the HTML for the structure of the UserCP(including menu). There is variable within that template called '$HTML'.

What you do is fill in the variable $HTML with whatever data you want displayed before you fetch/eval/print the 'USERCP_SHELL' template in your custom page.
Reply With Quote
  #5  
Old 08-24-2009, 08:57 AM
Ldoppea Ldoppea is offline
 
Join Date: Apr 2009
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok that's work, thanks.

Is it possible to include dynamic contents (PHP code) directly in $HTML? For example, to include some file in the $HTML?
Reply With Quote
  #6  
Old 08-25-2009, 03:27 PM
RLShare RLShare is offline
 
Join Date: Jun 2008
Posts: 499
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You use php in your custom pages, look at the link Lynne provided. Step one is your php file, you do all php work in that file and then fill the variable $HTML with the html code to display on the page.
Reply With Quote
  #7  
Old 08-27-2009, 08:46 AM
Ldoppea Ldoppea is offline
 
Join Date: Apr 2009
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok, I'll try to do this.

Thanks for answers
Reply With Quote
  #8  
Old 08-30-2009, 01:01 PM
Ldoppea Ldoppea is offline
 
Join Date: Apr 2009
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The use of the $HTML variable is very constraining.

I had to convert an old php script which write HTML code.

In the old version, I used many ?> html code <?php and echo to insert HTML code.

PHP Code:
<?php
// some code

// write HTML :
?>
<script type="text/javascript">
    //<![CDATA[
    var myVar1 = <?php if (isset($myPhpVar1)) { echo $myPhpVar1; } else { echo $myPhpVar1Default; } ?>;
    var myVar2 = <?php if (isset($myPhpVar2)) { echo $myPhpVar2; } else { echo $myPhpVar2Default; } ?>;
    var lenght = 25;
    
    function func(){
        if (lenght><?php echo $lenghtPHP?>)
        {
            document.getElementById('myID').value = document.getElementById('myID').value.substring(0,<?php echo $lenghtPHP?>);
        }
    }
    //]]>
</script>
<?php

Now I had to write this :
PHP Code:
<?php
    $HTML 
.= "
                <script type=\"text/javascript\">
                    //<![CDATA[
            "
;
    if (isset(
$myPhpVar1)) {
        
$HTML .= "var myVar1 = ".$myPhpVar1.";";
    else
        
$HTML .= "var myVar1 = ".$myPhpVar1Default.";";
        
    if (isset(
$myPhpVar2)) {
        
$HTML .= "var myVar2 = ".$myPhpVar2.";";
    else
        
$HTML .= "var myVar2 = ".$myPhpVar2Default.";";

    
$HTML .= "
                    var lenght = 25;
                    
                    function func(){
                        if (lenght>"
.$lenghtPHP.")
                        {
                            document.getElementById('myID').value = document.getElementById('myID').value.substring(0,"
.$lenghtPHP.");
                        }
                    }
                    //]]>
                </script>
            "
;
?>
The new version is very hard to read :erm:

Do you know an easier way to convert this script?


For example, is it possible to insert PHP condition into concatenation?
PHP Code:
<?php
$HTML 
.= "
            <script type=\"text/javascript\">
                //<![CDATA[
                var myVar1 = "
/* PHP condition before concatenation */ ."
                var myVar2 = "
/* PHP condition before concatenation */ ."
                var lenght = 25;
                
                function func(){
                    if (lenght>"
.$lenghtPHP;")
                    {
                        document.getElementById('myID').value = document.getElementById('myID').value.substring(0,"
.$lenghtPHP.");
                    }
                }
                //]]>
            </script>
        "
;
?>
Reply With Quote
  #9  
Old 08-30-2009, 01:29 PM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The vBulletin templating system is actually quite flexible easy to use (once you get the hang of it). Add this to your template:
Code:
<script type="text/javascript">
    //<![CDATA[
    var myVar1 = <if condition="isset($myPhpVar1)">$myPhpVar1<else />$myPhpVar1Default</if>;
    var myVar2 = <if condition="isset($myPhpVar2)">$myPhpVar2<else />$myPhpVar2Default</if>;
    var lenght = 25;
    
    function func(){
        if (length > $lengthPHP)
        {
            document.getElementById('myID').value = document.getElementById('myID').value.substring(0, $lengthPHP);
        }
    }
    //]]>
</script>
BTW, you spelt "length" wrong. I've corrected this in your code (you will need to adjust your other code, potentially).
Reply With Quote
  #10  
Old 08-30-2009, 09:48 PM
Ldoppea Ldoppea is offline
 
Join Date: Apr 2009
Posts: 35
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Great!

At first sight, programming with vBulletin is a bit strange, but finally it's verry powerful

Thanks very much for your help
Reply With Quote
Reply


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:29 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.04344 seconds
  • Memory Usage 2,274KB
  • Queries Executed 13 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_code
  • (3)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (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_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
  • 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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete