Session Timeout & Data Retrieval

jlross 24 Feb, 2009
Hello,

I am newer to Joomla, let alone Chronoforms. So, please be gentle.🙂

I've spent (an hour or so at a time) the past two days searching the forums here for my solution(s). While I have found much talk of the issue(s) I am facing, and even some posed solutions, I am not seeing the details of how to achieve the desired outcome. (I guess I need someone to walk me through it.)

Anyway, I have a long form to deal with here. (It's actually a homework submission form for a non-profit Church Bible Study.) With in-depth study required for each answer, it may take some folks hours to fill out and submit this form. Some may even want to only answer a few questions and then save that data to be retrieve later for continued editing and further answering.

So, the two issues I see that need to be overcome:

1) I need to stop Joomla session timeout from occurring ONLY on my form page.
I have already tried javascript image reloaders that run in the background to mimic the user making requests from the server which did not work. (Frankly, I can't believe there isn't a J!1.5 module to do this painlessly!) Please, bear in mind that simply raising the session lifetime value above the default 15 minutes in the Joomla global configuration is not an acceptable solution for me on a production site.

2) I somehow need to create "Save" and "Reload" buttons at the bottom of the form to go along with "Submit".
"Save" would naturally save the user's data to the DB without actually sending it via Email.
(Seems straight forward enough. I have seen the tutorial on saving data to the database.)
"Reload" would allow the user to "recall" their "saved" data back into the form - even if it's days later.
(This I am completely clueless of how to make happen.)

I apologize for my pitiful lack of knowledge in these areas, but, again, I will probably need a little walkthrough on these.

=======

Form HTML
<div class="form_item">
  <div class="form_element cf_heading">
    <h1 class="cf_text">Assignment Submission Form</h1>
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_text"> <span class="cf_text">Use this form to submit your class assignment answers. A copy will be sent to the instructor as well as the Email address you supply below.</span> </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_text"> <span class="cf_text">NOTICE: It is HIGHLY recommended that you type out your answers in a Text Document Program (Microsoft Word or even Notepad, for example) and then simply "copy and paste" that text into the form blocks below! This will not only allow students to complete assignments at their own pace, but will also prevent data loss should you happen to lose your Internet connection, for example, while submitting  your answers below!</span> </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Your Name: (ex."JohnSmith")</label>
    <input class="cf_inputbox required" maxlength="150" size="30" id="text_2" name="text_2" type="text" />
  
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Your Email: (ex."you@domain.com")</label>
    <input class="cf_inputbox required" maxlength="150" size="30" id="text_3" name="text_3" type="text" />
  
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Today's Date: (ex."mm/dd/yyyy")</label>
    <input class="cf_inputbox required" maxlength="150" size="30" id="text_4" name="text_4" type="text" />
  
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Course Title: (ex."NewTestament2")</label>
    <input class="cf_inputbox required" maxlength="150" size="30" id="text_5" name="text_5" type="text" />
  
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Assignment Number: (ex."Assignment3")</label>
    <input class="cf_inputbox required" maxlength="150" size="30" id="text_6" name="text_6" type="text" />
  
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textbox">
    <label class="cf_label">Keyword: (FromTheLectureAudio)</label>
    <input class="cf_inputbox required" maxlength="150" size="30" id="text_24" name="text_24" type="text" />
  
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 1:</label>
    <textarea class="cf_inputbox required" rows="7" id="text_7" cols="65" name="text_7"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 2:</label>
    <textarea class="cf_inputbox" rows="7" id="text_9" cols="65" name="text_9"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 3:</label>
    <textarea class="cf_inputbox" rows="7" id="text_10" cols="65" name="text_10"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 4:</label>
    <textarea class="cf_inputbox" rows="7" id="text_11" cols="65" name="text_11"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 5:</label>
    <textarea class="cf_inputbox" rows="7" id="text_12" cols="65" name="text_12"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 6:</label>
    <textarea class="cf_inputbox" rows="7" id="text_13" cols="65" name="text_13"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 7:</label>
    <textarea class="cf_inputbox" rows="7" id="text_14" cols="65" name="text_14"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 8:</label>
    <textarea class="cf_inputbox" rows="7" id="text_15" cols="65" name="text_15"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 9:</label>
    <textarea class="cf_inputbox" rows="7" id="text_16" cols="65" name="text_16"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 10:</label>
    <textarea class="cf_inputbox" rows="7" id="text_17" cols="65" name="text_17"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 11 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_18" cols="65" name="text_18"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 12 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_19" cols="65" name="text_19"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 13 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_20" cols="65" name="text_20"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 14 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_21" cols="65" name="text_21"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 15 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_22" cols="65" name="text_22"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 16 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_25" cols="65" name="text_25"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 17 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_26" cols="65" name="text_26"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 18 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_27" cols="65" name="text_27"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 19 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_28" cols="65" name="text_28"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_textarea">
    <label class="cf_label">Answer 20 (if needed):</label>
    <textarea class="cf_inputbox" rows="7" id="text_29" cols="65" name="text_29"></textarea>
    
  </div>
  <div class="clear"> </div>
</div>

<div class="form_item">
  <div class="form_element cf_button">
    <input value="Click to Submit" type="submit" />
  </div>
  <div class="clear"> </div>
</div>
GreyHead 25 Feb, 2009
Hi jlross,

I don't know much about either Sessions or AJAX but this looks to me like a case for an AJAX form that saves each item onBlur - when the focus leaves it. I've never seen such a thing and don't know if it's possible but don't see why not . . .

The ReLoad and Save buttons are easy enough - provided that these are Registered Users, or that you have some way of identifying them.

Bob
Max_admin 25 Feb, 2009
Hi jlross,

for #1, try this code in the page you want to keep alive!

<?php echo JHTML::_('behavior.keepalive'); ?>


Cheers
Max
Max, ChronoForms developer
ChronoMyAdmin: Database administration within Joomla, no phpMyAdmin needed.
ChronoMails simplifies Joomla email: newsletters, logging, and custom templates.
jlross 26 Feb, 2009
Thanks a lot, fellas.

Max, that worked perfectly. (I placed it in a Jumi module. Now I have it for any of my sites only on the pages I need it.)
It's amazing, even when I searched the Joomla! forum I didn't find that mentioned. Oh well.

I do still need to figure out how to recall previously submitted data into the form. I'll keep searching.
Nuttin 16 Mar, 2009
Hi,

I'm having the same problem with session timeout. Do you place the
<?php echo JHTML::_('behavior.keepalive'); ?>
inside the form html or do you render it in a module being shown on the form page?
GreyHead 16 Mar, 2009
Hi Nuttin,

Either should work OK - if you just need it for form completion then the Form HTML is probably best.

Bob
This topic is locked and no more replies can be posted.