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 03-02-2009, 03:34 PM
Frank H. Shaw Frank H. Shaw is offline
 
Join Date: Aug 2007
Posts: 90
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default I want to use ajax in my calendar.php file but how do i get started?

I want to use some ajax with my form and i need to get started somewhere - I am hopeing at some point to be able to use some of the things all ready in vbulletin to get my mod to work for me.

I am going to start of some what slow step be step and hope on can follow along.

The file I wish to make my modification to is calendar.php and I do know that the first thing is to setup the ajax hooks at the begining of the calendar.php but where and what and how does this happen.

I did find in my investagation of the files I did locate a file that seems to have the required functions in which the calendar.php need to make a call to setup the ability to use ajax. The file I found was vbulletin_global.js and is located in the clentsscript folder.

About line 711 to line 739 has what seems to me the first peice of this but it is only a guess.

PHP Code:

/**
* Initializes the XML handler
*
* @return    boolean    True if handler created OK
*/
vB_AJAX_Handler.prototype.init = function()
{
    if (
typeof vb_disable_ajax != 'undefined' && vb_disable_ajax == 2)
    {
        
// disable all ajax features
        
return false;
    }

    if (
typeof XMLHttpRequest != "undefined")
    {
        
this.handler = new XMLHttpRequest();
        return (
this.handler.setRequestHeader true false);
    }
    else if (
is_ie && !is_ie7)
    {
        
this.handler = eval("new A" "ctiv" "eX" "Ob" "ject('Micr" "osoft.XM" "LHTTP');");
        return 
true;
    }
    else
    {
        return 
false;
    }

The reason I think it is correct is because it has the XMLHttpRequest and it seems to handle the handler for many types of browsers.


Ok getting back to my question where in the calendar.php if that is the place do I make a call to setup the ajax request handler or handlers for all tyoes of browser and not only where but a example of the area in a non modifyed version of the calendar.php would i do this setup housekeeping and what would this call look like so as not to break the vbulletin system and has to handle all the avaibale browsers that vbulttin supports unmodifyed version?

THANKS

Frank H. Shaw

--------------- Added [DATE]1236030263[/DATE] at [TIME]1236030263[/TIME] ---------------

Please explain how this would work?

I found a Templete - that seems to have calls to ajax functions the file is

/forums/ajax.php I need to know what I have to do to use this file as a templete or model for using with my calendar.php can someone help me explain what needs to be added to the calendar.php so that it will supoort my ajax modification.

I hope this better explains what i need thanks

Is this the first place the actual ajax is setup or used please explain the line below?

PHP Code:

    $xml 
= new vB_AJAX_XML_Builder($vbulletin'text/xml'); 

THANKS

Frank H. Shaw
Reply With Quote
  #2  
Old 03-03-2009, 06:29 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

There are some articles on AJAX in our articles section.
Reply With Quote
  #3  
Old 03-04-2009, 12:02 AM
Frank H. Shaw Frank H. Shaw is offline
 
Join Date: Aug 2007
Posts: 90
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The following i am going to start to modify the calendar.php and I will start to post the changes as i do them.

My first is where in the calendar.php do I put my first part of this the following:

PHP Code:

<?php

// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// ##################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT''calendar');
define('GET_EDIT_TEMPLATES''edit,add,manage');

// #################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(
    
'calendar',
    
'holiday',
    
'timezone',
    
'posting',
    
'user'
);

// get special data templates from the datastore
$specialtemplates = array(
    
'smiliecache',
    
'bbcodecache',
    
'noavatarperms',
);

// pre-cache templates used by all actions
$globaltemplates = array(
    
'calendarjump',
    
'calendarjumpa',
    
'calendarjumpb',
    
'calendarjumpbit',
);

// pre-cache templates used by specific actions
$actiontemplates = array(
    
'displayweek' => array(
        
'calendar_yearly',
        
'calendar_monthly',
        
'calendar_monthly_week',
        
'calendar_monthly_day',
        
'calendar_monthly_day_other',
        
'calendar_monthly_birthday',
        
'calendar_monthly_event',
        
'calendar_monthly_header',
        
'calendar_smallmonth_header',
        
'calendar_smallmonth_week',
        
'calendar_smallmonth_day',
        
'calendar_smallmonth_day_other',
        
'calendar_weekly_day',
        
'calendar_weekly_event',
        
'calendar_weekly',
        
'calendar_showbirthdays',
        
'CALENDAR'
    
),
    
'displayyear' => array(
        
'calendar_smallmonth_day_other',
        
'calendar_smallmonth_header',
        
'calendar_smallmonth_week',
        
'calendar_monthly_event',
        
'calendar_smallmonth_day',
        
'calendar_monthly_week',
        
'calendar_showbirthdays',
        
'calendar_weekly_day',
        
'calendar_yearly',
        
'CALENDAR'
    
),
    
'getinfo' => array(
        
'calendar_showevents',
        
'calendar_showbirthdays',
        
'calendar_showeventsbit',
        
'calendar_showeventsbit_customfield'
    
),
    
'edit' => array(
        
'calendar_edit',
        
'calendar_edit_customfield',
        
'calendar_edit_recurrence',
        
'userfield_select_option'
    
),
    
'manage' => array(
        
'calendar_edit',
        
'calendar_manage'
    
),
    
'viewreminder' => array(
        
'CALENDAR_REMINDER',
        
'calendar_reminder_eventbit',
        
'USERCP_SHELL',
        
'forumdisplay_sortarrow',
        
'usercp_nav_folderbit',
    ),
    
'addreminder' => array(
        
'USERCP_SHELL',
        
'calendar_reminder_choosetype',
        
'usercp_nav_folderbit',
    ),
);

$actiontemplates['getday'] =& $actiontemplates['getinfo'];
$actiontemplates['add'] =& $actiontemplates['edit'];
$actiontemplates['displaymonth'] =& $actiontemplates['displayweek'];
$actiontemplates['none'] =& $actiontemplates['displayweek'];

// ########################## REQUIRE BACK-END ############################
require_once('./global.php');
require_once(
DIR '/includes/functions_calendar.php');


// ########################## AJAX RECIVER ############################

function My_AJAX_Reciever()
{
        if (
My_AJAX_Object.handler.readyState == && My_AJAX_Object.handler.status == 200 && My_AJAX_Object.handler.responseText)
        {
               
alert('Data recieved successfully\n\n' My_AJAX_Object.handler.responseText);
        }

}


// ########################## AJAX SETUP ############################

My_AJAX_Object = new vB_AJAX_Handler(true);


My_AJAX_Object.onreadystatechange(My_AJAX_Reciever);



// ########################################################################
// ######################### START MAIN SCRIPT ############################
// ########################################################################

$serveroffset date('Z'TIMENOW) / 3600;

$idname $vbphrase['event'];

$vbulletin->input->clean_array_gpc('r', array(
    
'calendarid' => TYPE_UINT,
    
'eventid'    => TYPE_UINT,
    
'holidayid'  => TYPE_UINT,
    
'week'       => TYPE_UINT,
    
'month'      => TYPE_UINT,
    
'year'       => TYPE_UINT,
    
'sb'         => TYPE_UINT,
));

(
$hook vBulletinHook::fetch_hook('calendar_start')) ? eval($hook) : false;


if (
$_POST['do'] == 'ajax'

     
$jump $_POST['mydata']; 

    
// Calling my PHP function Here 

       
$Retval =  trap_calandar_jump($jump);

     
// After doing everything in my function - HOW DO I GET BACK TO THE SENDER IN THE JAVASCRPT FUNCTION process_selected

   
   
return  $Retval;

}

If I have posted to much vbulletin please edited it down for me so that I have a good idea if i am doing good so far and if i run into any problems you will be able to help me through the problem. So I have posted the above incase placement is important if not then let me know that also? THANKS.

Next is my javascript function modifaction to go with the dropdown.

PHP Code:


<script type="text/javascript"> function process_selected(form) {
             
        var 
msgstr " - " "Regular Meetings" " !";
                    
             
alert('This is working' msgstr);

        var 
myme form["me"].value;
        var 
myc =  form["c"].value;
        var 
mydo =  form["do"].value;
        var 
mys =  form["s"].value;



             
alert('This is working !' " - " myme " - " myc);
            
             
mydata PHP.urlencode(myc);


             
My_AJAX_Object.send('calendar.php''do=ajax&mydata=text');


             
             
form.submit();

}
</
script
Please look at the passing of the data did i get the assignemnts right in javascript and then paassing the stuff through my ajax sender.


Now my PHP function to handle the PHP Logic

PHP Code:

function trap_calandar_jump($jump)

{
            switch (
$jump) {
    case 
1:
        
// Logic here  Jump drop down 1
        
break;

    case 
2:
        
// Logic here Jump drop down 2
        
break;

    case 
3:
        
// Logic here Jump drop down 3
        
break;

}
//switch
 
return $something;



AFTER LOOKING AT ALL THE ABOVE

QUESTION 1 - DID I SET EVERYTHING UP RIGHT AND MAKE THE CORRECT CALLS AND DID NOT MIX UP MY VARIABLES?

QUESTION 2 HOW DO I GET BACK TO THE SENDER IN THE JAVASCRPT FUNCTION process_selected

I HOPE I HAVE THIS ALL CORRECT ABOVE?

THANKS

Frank H. Shaw

--------------- Added [DATE]1236138456[/DATE] at [TIME]1236138456[/TIME] ---------------

This the error message when I run my calendar.php

Fatal error: Class 'vB_AJAX_Handler' not found in C:\Inetpub\vhosts\burningtaper.org\httpdocs\forums \calendar.php on line 131


At the line 131 number is the following line.


PHP Code:

       My_AJAX_Object 
= new vB_AJAX_Handler(true); 
What is missing ?

THANKS

Frank H. Shaw
Reply With Quote
  #4  
Old 03-05-2009, 05:05 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I think you are confusing what is PHP code with JS. You are placing code that is meant for JS into a PHP file. Additionally, you should be using the YUI method of firing AJAX requests (see your other thread).
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 11:24 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05720 seconds
  • Memory Usage 2,267KB
  • 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
  • (6)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (4)post_thanks_box
  • (4)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (4)post_thanks_postbit_info
  • (4)postbit
  • (4)postbit_onlinestatus
  • (4)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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete