The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Form Hack Details »» | |||||||||||||||||||||||||
Form Hack 4.1 Features: Ever wanted an online form that a user can fill out, which when submitted gets:
Or any combination or all of the above? Well, this is the hack for you! You can use this for:
Or anything you like - this hack is totally customizable via the AdminCP. The beauty of this hack is that once you install this hack, to make a new form all you need to do is copy the main hook, rename it to whatever you want, edit the variables in the hook, and you have a totally new form!!! You do not need to touch the templates again, but can always create new ones and use different templates for different forms. Format of the form:
This is customizable via the hook. Also:
INSTALLATION Easy - takes only a few minutes:
Done! Use this hack to make as many forms as you like! Enjoy! Updates: Version 4.0: (09/15/2006)
Version 4.1: (04/24/2008)
MAKE SURE YOU CLICK INSTALL! You will get an email when a new version is released. Abe1 with rights from Dr Erwin Loh Supporters / CoAuthors Show Your Support
|
Comments |
#122
|
||||
|
||||
Quote:
I cannot get the form to do what I want it to, here is my code: This is not how it should look! Code:
// To add more then one form, copy this whole text, and creat a new plug-in with the hook location 'newthread_start'. // After, change the form name. You can't have 2 forms with the same name. // Name of this form $formname = "form"; if ($_REQUEST['do'] == $formname) { // ####################################################################### // ######################## CUSTOMIZE VARIABLES ########################## // ####################################################################### //////////////////////////////////////////////////////////////////////////////////////////////////// ////// BEGIN CUSTOMIZATION BELOW//////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //VARIABLES //Study how variables are add here to add or remove any. If you add a variable to your form, you must add it to part one and part two. //////////////////////////////////////////////////////////////////////////////////////////////////// // Part 1 $vbulletin->input->clean_array_gpc('p', array( 'normalanswer1' => TYPE_STR, 'normalanswer2' => TYPE_STR, 'normalanswer3' => TYPE_STR, )); // Part 2 $normalanswer1 = $vbulletin->GPC['normalanswer1']; $normalanswer2 = $vbulletin->GPC['normalanswer2']; $normalanswer3 = $vbulletin->GPC['normalanswer3']; //////////////////////////////////////////////////////////////////////////////////////////////////// //USERGROUPS ALLOWED //You can add or remove usegroups that are ALLOWED to use this form by changing the numbers below in the array. //To enable this feature, remove the '//' before the 'if'. //////////////////////////////////////////////////////////////////////////////////////////////////// // if (!in_array($vbulletin->userinfo['usergroupid'], array(2,5,6,7))) print_no_permission(); //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //NAME OF TEMPLATES - DO THIS BIT IF YOU ARE MAKING MORE FORMS AND WANT TO USE A DIFFERENT LOOKING TEMPLATE //////////////////////////////////////////////////////////////////////////////////////////////////// // Name of the main template $maintemplate = "form"; // Name of the answer template $answertemplate = "formanswers"; //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //CHOOSE WHETHER YOU WANT FORM TO BE POSTED IN A NEW THREAD, NEW POLL, REPLY TO EXISITING THREAD, PMed OR EMAILED /////////////////////////////////////////////////////////////////////////////////////////////////// //ENABLE FORM TO BE POSTED - 1 = yes, 0 = no $formforum = "1"; //FORUM TO POST NEW THREAD IN //You CAN make this number a variable. You can have a drop down menu or in the link like do=form&f=1. Make sure you add it the variables list. $formforumid = "2"; //ENABLE POLL TO BE CREATED - 1 = yes, 0 = no $formpoll = "0"; $polloption[1] = "Yes"; $polloption[2] = "No"; $polloption[3] = "Maybe"; //Make poll public - 1 = yes, 0 = no $pollpublic = "0"; //////////////////////////////////////////////////////////////////////////////////////////////////// //ENABLE FORM TO REPLY TO EXISTING THREAD - 1 = yes, 0 = no $formreply = "0"; //EXISTING THREAD ID FOR FORM TO REPLY IN $formreplythreadid = "12345"; //////////////////////////////////////////////////////////////////////////////////////////////////// //ENABLE FORM TO BE PMED (guests CANNOT use this option) - 1 = yes, 0 = no $formpm = "0"; //USERNAME TO PM TO (separate multiple usernames with a ';') $formpmname = "Abe"; //////////////////////////////////////////////////////////////////////////////////////////////////// //ENABLE FORM TO BE EMAILED - 1 = yes, 0 = no $formemail = "0"; //EMAIL ADDRESS TO EMAIL TO (separate multiple usernames with a ';') $formemailaddress = "youremail@yourforums.com"; //////////////////////////////////////////////////////////////////////////////////////////////////// //ENABLE ATTACHMENTS - 1 = yes, 0 = no //attachments can only be used if the form is going to make a new thread or post $allow_attachments = "1"; //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //REDIRECT OPTIONS: // 0 - thank you message (thread, reply, pm, or email) // 1 - redirect to post (thread or reply) // 2 - redirect to thread (thread only) // 3 - redirect to forum (thread only) // 4 - redirect to editpost (thread or reply) // // Feel free to change the thank you message if you choose option 0 //////////////////////////////////////////////////////////////////////////////////////////////////// $redirectoption = "0"; $errormessage = "Thank you for submitting this form!"; //This is the thank you message //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //FORCE USER TO ANSWER ALL QUESTIONS - 1 = yes, 0 = no //If you added or deleted variables, you must edit what it checked for. Search for "$answerall ==" and edit 2 lines under it. //////////////////////////////////////////////////////////////////////////////////////////////////// $answerall = "0"; //////////////////////////////////////////////////////////////////////////////////////////////////// //TITLE OF FORM (do not use quotation marks or you will get a parse error, besides the quotes around the whole title) //////////////////////////////////////////////////////////////////////////////////////////////////// $formtitle = "Test Form"; //////////////////////////////////////////////////////////////////////////////////////////////////// //TITLE OF THREAD/POST/PM/EMAIL (do not use quotation marks in the title or you will get a parse error) //You may use variables from the form for this. //////////////////////////////////////////////////////////////////////////////////////////////////// $posttitle = "$formtitle"; //////////////////////////////////////////////////////////////////////////////////////////////////// //PURPOSE OF FORM (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// $formpurpose = "The purpose of this form is to allow you to submit a form, and this form will be made into a thread in a particular forum, or be PMed to a moderator or be emailed to a moderator."; //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //NORMAL INPUT BOX : QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// $normalquestion1 = "Year"; $normalquestion2 = "Make"; $normalquestion3 = "Model"; //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //RADIO BOX CHOICES : QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //RADIO BOX CHOICES : QUESTION 2 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //RADIO BOX CHOICES : QUESTION 3 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //DROP DOWN CHOICES : QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //CHECK BOX CHOICES : QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //LONG TEXT AREA INPUT: QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //VB TEXT AREA INPUT: You can only have ONE vb text question. (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// ////// END OF CUSTOMIZATION //////////////////////////////////////////////////////////////////// ///// DO NOT CHANGE BELOW UNLESS YOU KNOW WHAT YOU ARE DOING!!! //////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // ####################################################################### // ######################## START MAIN SCRIPT ############################ // ####################################################################### if ($_REQUEST['action'] == '') { $_REQUEST['action'] = "form"; } $bbuserinfo = $vbulletin->userinfo; // start navbar $navbits = array(); $navbits['newthread.php?' . $vbulletin->session->vars['sessionurl'] . "do=$formname"] = $formtitle; $navbits = construct_navbits($navbits); eval('$navbar = "' . fetch_template('navbar') . '";'); if ($_REQUEST['action'] == "submit") { if ($answerall == "1") { if ($normalanswer1 == '' OR $radioanswer1 == '' OR $radioanswer2 == '' OR $radioanswer3 == '' OR $answer1 == '' OR $answer2 == '' OR $answer3 == '' OR ($checkboxchoice1_1 AND $checkboxchoice1_2 AND $checkboxchoice1_3) OR $longanswer1 == '') { $errormessage = "$bbuserinfo[username], you need to answer every question!"; eval('print_output("' . fetch_template('STANDARD_ERROR') . '");'); exit(); } } $vbulletin->input->clean_array_gpc('p', array( 'wysiwyg' => TYPE_BOOL, 'message' => TYPE_STR )); if ($vbulletin->GPC['wysiwyg']) { require_once(DIR . '/includes/functions_wysiwyg.php'); $vbtextanswer = convert_wysiwyg_html_to_bbcode($vbulletin->GPC['message'], $foruminfo['allowhtml']); } else { $vbtextanswer =& $vbulletin->GPC['message']; } eval('$formsend = "' . fetch_template("$answertemplate") . '";'); $posthash = $vbulletin->input->clean_gpc('p', 'posthash', TYPE_NOHTML); $poststarttime = $vbulletin->input->clean_gpc('p', 'poststarttime', TYPE_UINT); if ($_POST['submit'] == 'Submit') { if ($formforum == "1") { $foruminfo = verify_id('forum', $formforumid, 0, 1); $forumperms = fetch_permissions($foruminfo[forumid]); $newpost['username'] =& $vbulletin->userinfo['username']; $newpost['message'] =& $formsend; $newpost['title'] =& $posttitle; $newpost['parseurl'] = '1'; $newpost['poststarttime'] = $poststarttime; $newpost['posthash'] = $posthash; if ($vbulletin->userinfo['autosubscribe'] != -1) { $newpost['emailupdate'] = $vbulletin->userinfo['autosubscribe']; } else { $newpost['emailupdate'] = 9999; } if ($vbulletin->userinfo['signature'] != '') { $newpost['signature'] = '1'; } else { $newpost['signature'] = '0'; } build_new_post('thread', $foruminfo, array(), array(), $newpost, $errors); if ($formpoll == "1") { $threadinfo = verify_id('thread', $newpost[threadid], 0, 1); $polloptions = count($polloption); $question = $posttitle; $vbulletin->GPC['options'] = $polloption; $counter = 0; $optioncount = 0; $badoption = ''; while ($counter++ < $polloptions) { // 0..Pollnum-1 we want, as arrays start with 0 if ($vbulletin->options['maxpolllength'] AND vbstrlen($vbulletin->GPC['options']["$counter"]) > $vbulletin->options['maxpolllength']) { $badoption .= iif($badoption, ', ') . $counter; } if (!empty($vbulletin->GPC['options']["$counter"])) { $optioncount++; } } // Add the poll $poll =& datamanager_init('Poll', $vbulletin, ERRTYPE_STANDARD); $counter = 0; while ($counter++ < $polloptions) { if ($vbulletin->GPC['options']["$counter"] != '') { $poll->set_option($vbulletin->GPC['options']["$counter"]); } } $poll->set('question', $question); $poll->set('dateline', TIMENOW); $poll->set('active', '1'); $poll->set('public', $pollpublic); $pollid = $poll->save(); //end create new poll // update thread $threadman =& datamanager_init('Thread', $vbulletin, ERRTYPE_STANDARD, 'threadpost'); $threadman->set_existing($threadinfo); $threadman->set('pollid', $pollid); $threadman->save(); } } if ($formreply == "1") { $threadinfo = verify_id('thread', $formreplythreadid, 0, 1); $forumperms = fetch_permissions($threadinfo[forumid]); $newpost['username'] =& $vbulletin->userinfo['username']; $newpost['message'] =& $formsend; $newpost['title'] =& $posttitle; $newpost['parseurl'] = "1"; $newpost['poststarttime'] = $poststarttime; $newpost['posthash'] = $posthash; if ($vbulletin->userinfo['autosubscribe'] != -1) { $newpost['emailupdate'] = $vbulletin->userinfo['autosubscribe']; } else { $newpost['emailupdate'] = 9999; } if ($vbulletin->userinfo['signature'] != '') { $newpost['signature'] = '1'; } else { $newpost['signature'] = '0'; } build_new_post('reply', $foruminfo, $threadinfo, $postinfo, $newpost, $errors); } if ($formpm == "1") { $vbulletin->GPC['message'] =& $formsend; $vbulletin->GPC['title'] =& $posttitle; $vbulletin->GPC['recipients'] =& $formpmname; $pm['message'] =& $vbulletin->GPC['message']; $pm['title'] =& $vbulletin->GPC['title']; $pm['recipients'] =& $vbulletin->GPC['recipients']; // create the DM to do error checking and insert the new PM $pmdm =& datamanager_init('PM', $vbulletin, ERRTYPE_ARRAY); $pmdm->set('fromuserid', $vbulletin->userinfo['userid']); $pmdm->set('fromusername', $vbulletin->userinfo['username']); $pmdm->setr('title', $pm['title']); $pmdm->setr('message', $pm['message']); $pmdm->set_recipients($pm['recipients'], $permissions); $pmdm->set('dateline', TIMENOW); // everything's good! $pmdm->save(); } if ($formemail == "1") { require_once(DIR . '/includes/class_bbcode_alt.php'); $plaintext_parser =& new vB_BbCodeParser_PlainText($vbulletin, fetch_tag_list()); $plaintext_parser->set_parsing_language($touserinfo['languageid']); $formsend = $plaintext_parser->parse($formsend); $emails = explode(';', $formemailaddress); foreach ($emails AS $email) { vbmail($email, $posttitle, $formsend); } } if ($redirectoption == "1") { $vbulletin->url = 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . "p=$newpost[postid]"; eval(print_standard_redirect('redirect_postthanks')); exit(); } if ($redirectoption == "2") { $vbulletin->url = 'showthread.php?' . $vbulletin->session->vars['sessionurl'] . "t=$newpost[threadid]"; eval(print_standard_redirect('redirect_postthanks')); exit(); } if ($redirectoption == "3") { $vbulletin->url = 'forumdisplay.php?' . $vbulletin->session->vars['sessionurl'] . "f=$foruminfo[forumid]"; eval(print_standard_redirect('redirect_postthanks')); exit(); } if ($redirectoption == "4") { $vbulletin->url = 'editpost.php?do=editpost&' . $vbulletin->session->vars['sessionurl'] . "p=$newpost[postid]"; eval(print_standard_redirect('redirect_postthanks')); exit(); } eval('print_output("' . fetch_template('STANDARD_ERROR') . '");'); exit(); } else { require_once('./includes/class_bbcode.php'); $parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list()); $preview = $parser->do_parse($formsend); $_REQUEST['action'] = 'form'; } } if ($_REQUEST['action'] == 'form') { if (($formforum OR $formreply) AND $allow_attachments) { if ($formforum AND $formreply) { $forumid = $formforumid; } else if ($formreply) { $threadid = $formreplythreadid; $threadinfo = verify_id('thread', $threadid, 0, 1); $forumid = $threadinfo[forumid]; } else { $forumid = $formforumid; } $forumperms = fetch_permissions($forumid); // get attachment options require_once(DIR . '/includes/functions_file.php'); $inimaxattach = fetch_max_upload_size(); $maxattachsize = vb_number_format($inimaxattach, 1, true); $attachcount = 0; $attach_editor = array(); $attachment_js = ''; if ($forumperms & $vbulletin->bf_ugp_forumpermissions['canpostattachment'] AND $vbulletin->userinfo['userid'] AND !empty($vbulletin->userinfo['attachmentextensions'])) { if (!$posthash OR !$poststarttime) { $poststarttime = TIMENOW; $posthash = md5($poststarttime . $vbulletin->userinfo['userid'] . $vbulletin->userinfo['salt']); } else { if (empty($postattach)) { $currentattaches = $db->query_read(" SELECT dateline, filename, filesize, attachmentid FROM " . TABLE_PREFIX . "attachment WHERE posthash = '" . $db->escape_string($posthash) . "' AND userid = " . $vbulletin->userinfo['userid'] ); while ($attach = $db->fetch_array($currentattaches)) { $postattach["$attach[attachmentid]"] = $attach; } } if (!empty($postattach)) { foreach($postattach AS $attachmentid => $attach) { $attach['extension'] = strtolower(file_extension($attach['filename'])); $attach['filename'] = htmlspecialchars_uni($attach['filename']); $attach['filesize'] = vb_number_format($attach['filesize'], 1, true); $attach['imgpath'] = "$stylevar[imgdir_attach]/$attach[extension].gif"; $show['attachmentlist'] = true; eval('$attachments .= "' . fetch_template('newpost_attachmentbit') . '";'); $attachment_js .= construct_attachment_add_js($attachmentid, $attach['filename'], $attach['filesize'], $attach['extension']); $attach_editor["$attachmentid"] = $attach['filename']; } } } if ($threadid) { $attachurl = "t=$threadid"; } else { $attachurl = "f=$forumid"; } $newpost_attachmentbit = prepare_newpost_attachmentbit(); eval('$attachmentoption = "' . fetch_template('newpost_attachment') . '";'); if ($threadid) { $attach_editor['hash'] = $threadid; $attach_editor['url'] = "newattachment.php?$session[sessionurl]t=$threadid&poststarttime=$poststarttime&posthash=$posthash"; } else { $attach_editor['hash'] = $forumid; $attach_editor['url'] = "newattachment.php?$session[sessionurl]f=$forumid&poststarttime=$poststarttime&posthash=$posthash"; } } else { $attachmentoption = ''; } } else { $attachmentoption = ''; } // set message box width to usercp size $stylevar['messagewidth'] = $stylevar['messagewidth_usercp']; $editorid = construct_edit_toolbar($vbtextanswer); eval('print_output("' . fetch_template("$maintemplate") . '");'); } } |
#123
|
||||
|
||||
Ok...I think I have it...did not know there were two other templates that needed to be edited...WHOOPS
|
#124
|
||||
|
||||
Alright, the form is displaying correctly now, however, when it posts the thread, it is not displaying all the answers that were filled in on the form??
|
#125
|
||||
|
||||
Grrr it is hard to be a moron all the time, however, it seems in this case I have been.
All working, no problems!!! It is amazing to see what happens when you sit down and read things over and concentrate! |
#126
|
||||
|
||||
I did think of something.
Is there a way to force members to fill out the form to create a thread? For example, the member enters the forum and clicks "New Thread" At that point, the form is pulled up and is filled out. The member submit it and it starts the thread. Others can then reply to it. I have 2 areas where I want all the first post to be uniform. Thanks! |
#127
|
|||
|
|||
I am trying to add more fields to the form, however, it appears to not show up. Therefore, I feel that I am missing something. I want to add another text box. I created the variables or whatever you may name it:
Code:
// Part 1 $vbulletin->input->clean_array_gpc('p', array( 'normalanswer1' => TYPE_STR, 'normalanswer2' => TYPE_STR, 'radioanswer1' => TYPE_STR, 'radioanswer2' => TYPE_STR, 'radioanswer3' => TYPE_STR, 'radioanswer3other' => TYPE_STR, 'answer1' => TYPE_STR, 'answer2' => TYPE_STR, 'answer3' => TYPE_STR, 'dropdownanswer1' => TYPE_STR, 'checkboxanswer1_1' => TYPE_STR, 'checkboxanswer1_2' => TYPE_STR, 'checkboxanswer1_3' => TYPE_STR, 'longanswer1' => TYPE_STR )); // Part 2 $user_name = $bbuserinfo[username]; $normalanswer1 = $vbulletin->GPC['normalanswer1']; $normalanswer2 = $vbulletin->GPC['normalanswer2']; $radioanswer1 = $vbulletin->GPC['radioanswer1']; $radioanswer2 = $vbulletin->GPC['radioanswer2']; $radioanswer3 = $vbulletin->GPC['radioanswer3']; $radioanswer3other = $vbulletin->GPC['radioanswer3other']; $answer1 = $vbulletin->GPC['answer1']; $answer2 = $vbulletin->GPC['answer2']; $answer3 = $vbulletin->GPC['answer3']; $dropdownanswer1 = $vbulletin->GPC['dropdownanswer1']; $checkboxanswer1_1 = $vbulletin->GPC['checkboxanswer1_1']; $checkboxanswer1_2 = $vbulletin->GPC['checkboxanswer1_2']; $checkboxanswer1_3 = $vbulletin->GPC['checkboxanswer1_3']; $longanswer1 = $vbulletin->GPC['longanswer1']; Code:
//////////////////////////////////////////////////////////////////////////////////////////////////// //NORMAL INPUT BOX : QUESTION 1 (do not use quotation marks or you will get a parse error, besides the quotes around the whole text) //////////////////////////////////////////////////////////////////////////////////////////////////// $normalquestion1 = "Why is the sky blue?"; $normalquestion2 = "Why is the grass green?"; |
#128
|
||||
|
||||
If you wanted to added a option it would take alot of tweaks
|
#129
|
||||
|
||||
It is very easy...do not forget to edit the two new template
|
#130
|
|||
|
|||
What two new templates?
|
#131
|
||||
|
||||
Quote:
|
Thread Tools | |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|