A good deal of my job is dealing with multi screen CGI/mod_perl applications. I know there are many others here that deal with CGI as well.

I find myself solving the same problems over and over and I am working on an OO oriented solution.

I've looked at the various modules like CGI::MxScreen and CGI::Screen and they don't really solve my problem. I've also looked at CGI::Persistant and it doesn't really fit my bill either because I'm lazy. I have my approaches to CGI and I don't want to have to write things in a new paradigm. On that note, I think a solution should also satisfy the following requirements.
  1. Transparent Parameter persistance.
  2. Form Parameter Validation (The ability to know what you should be receiving and ignore anything extra automatically.)
  3. Preventing users from passing anything extra in query strings.
  4. Preventing people from hijacking the session.
  5. Preventing users from repeating certain actions if they hit Refresh.
  6. Only allowing certain actions from certain states.
    The session "knows" the user can only make one of the following choices and won't let them go to any other state. (If they use back to go to a previous form and resubmit for instance.)
  7. The ability to save a state and return to it in the future if needed. (Including uploaded files.)
  8. Has to work with mod_perl
  9. Totally transparent to programmer. You should be able to simply change use CGI; to use CGI::ScreenState or whatever it's called in existing scripts (Providing you are using CGI.pm to generate the forms and urls).
I'm working on a solution for just that. It's a ways off from showing anyone but I do have a working version that satisfies 90% of the criteria. For me this solves most of my problems.

What I'm wondering is there anything big I'm missing and what the interest level is for something like this?

I plan on eventually releasing it on CPAN but to get it to that point will take awhile with my current work schedule.

Any feedback would be welcome.

-Lee

"To be civilized is to deny one's nature."

In reply to Thoughts on CGI and persistance. by shotgunefx

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.