(Category) (Category) WebGUI FAQ :
WebGUI 7.0 Questions
Info on 7.x as I hear it...
wg-fomATgwyDOTorg
Subcategories:

Answers in this category:
(Answer) When is 7.0 coming out?
(Answer) What's supposed to be new in 7.0?
(Answer) HOWTO: Javascript Form Validation of Required Fields

[New Answer in "WebGUI 7.0 Questions"]
(Answer) (Category) WebGUI FAQ : (Category) WebGUI 7.0 Questions :
When is 7.0 coming out?
It is out as of 7/5/2006.
wg-fomATgwyDOTorg
[Append to This Answer]
(Answer) (Category) WebGUI FAQ : (Category) WebGUI 7.0 Questions :
What's supposed to be new in 7.0?
The most important change to 7.0 will be the workflow addition. This addition will enable events to be handled/triggered "behind the scenes" in an asyncronous manner. Some things like "What will happen after a user is subscribed" will be passed through the workflow. There will be much more, including a new SQL Form Asset, and a general clean-up of many of the RFE's that have been outstanding.
wg-fomATgwyDOTorg
WebGUI 6.99.0 Change Log
 - Added a workflow system.
 - Added a workflow scheduler system.
 - Converted the runHourly.pl scripts to run as scheduled workflows.
 - Added version tags menu to admin bar.
 - Added versioning commit comments.
 - Removed autocommit mode in favor of workflow controlled commits.
 - Added a revisions list to the edit screen of assets, so that you can
   quickly edit/view an old revision.
 - Addded a lock menu item to explicitly lock an asset from editing.
 - Run on registration and alert on new user have been converted to a single
   workflow.
 - Added a Photogallery prototype to the default installation.
 - Changed the Group property dbCacheTimeout to be groupCacheTimeout and made
   it cache all the users in a group during that time.
 - Added an option for hosters to limit the number of assets that may be
   created on a WebGUI site.
 - Added a change url function that will allow an editor to change the URL of
   an asset permanently (circumventing normal versioning).
 - Added a wiki-like feature that will automatically bring a user to the
   create a page form if they are in admin mode, and click on a link to
   a page that doesn't exist yet.
 - Help is now capable of using inheritance.
 - Template help can/should now be broken out as seperate fields going
   forward.
 - Many changes for better XHTML compliance.
 - Refactored admin bar to be more dynamic.
 - Removed start/end dates from assets in favor of the workflow system.
 - Readded the purge option to the trash manager.
 - Added an advertising management system.
 - Added a field set grouping mechanism to HTMLForm and TabForm.
 - Added save buttons at the top of all the HTML forms for easier access.
 - Added archive/unarchive options to CS threads.
 - Added a mechanism to send emails to a CS which will accept them as posts.
 - Increased the performance of CS Thread viewing by 500%.
 - Changed the CS post rating mechinism to thumbs up/down to be less
   confusing.
 - Added CS templates to run a request tracker (trouble ticket) style system.
 - Updated TinyMCE rich text editor to version 2.0.5.1.
 - Disabled the rich editor for Safari because it doesn't work correctly.
 - Added install/uninstall functions to the asset and wobject skeletons to
   make custom assets easier to distribute.
 - Added a mechanism for importing and exporting packages. This is useful for
   trading styles and other content between sites.
 - Added a database cache option as an alternative to memcached.
 - Removed page caching system and added individual asset caches, because not
   everything should cache in the same way.
 - Converted WebGUI to use a new object oriented session system. More details
   in migation.txt.
 - Added a sort alphabetically option to the folder asset.
 - Added a User form field type.
 - Added a symbol next to items in the asset manager to indicate if they have children or not.
 - Added more templating options to the Paginator. (thanks to Jukka Raimovaara
   / Axxion Oy)
 - Added the currentPage.rank and currentPage.rankIsN variable to the nav
   template. (thanks to Jukka Raimovaara / Axxion Oy)
 - Added a screenshot feature to the matrix.
 - Added an option to delete Matrix fields.
 - Added a captcha challenge to the contact the maintainer form in the matrix.
 - Added an API for retrieving email from POP3 servers.
 - The rebuildLineage.pl script now finds and fixes orphans, and tries to
   locate circular relationships as well.
 - Added a lot more tests to the test suite.
 - Added a new pluggable templating system. (Thanks to Misja Op de Coul /
   E-Wise)
 - Added "201" http status to various entity creation responses.
 - Replaced the old search engine system with a brand new one, that is more
   powerful, easier to use, and more flexible.
 - Added output chunking as an option for asset www_ methods. The net effect
   of this provides a fairly significant performance increase to what would
   otherwise be slow or complex pages. More details in migration.txt. The
   amount of the increase depends upon the complexity of the page, but now
   complex pages should render almost as fast as simple pages.
 - Removed the JavaScript, RawHeadTags, and StyleSheet macros in favor of
   adding a Head Block parameter to templates. This was needed in order to
   implement content chunking.
 - The SMTP mail backend has been replaced with a new API that's capable of
   sending attachments, HTML messages, and more. This will introduce many new
   options for developers.
 - Replaced the old Message Log system with a new Inbox system that's more
   reliable, and scalable.
 - Added a mail queue system.
 - The group mail screen now allows sending of HTML messages.
 - Added prequery statements to the SQLReport and configurable allowed statements
   to the database link properties. (Martin Kamerbeek / Procolix)
 - Converted config file format from PlainConfig to JSON. The new format is
   more powerful and will use slightly less memory.
 - Strengthened security of Captcha validation.
 - Added Captcha form control type.
 - All IPs used by WebGUI (Settings: debugIp and Group: ipFilter) now accept
   IP addresses in CIDR format.  They also will accept multiple IP addresses
   if they are separated by commas.  Whitespace is ignored.  The upgrade
   script will migrate the data automatically, and hoverHelp documentation
   has been updated to reflect the changes as well.
 - The Rich Editor now has a master reset that allows disabling any individual
   Rich Editor across the entire site without querying the user.
 - Commit options have been removed from the Asset Manager "More" and Wobject
   type icon context menus.
 - The Navigation Asset now allows setting the MIME type of its output so that
   you can generate non-HTML navigations or take advantate of the Google
   SiteMap feature.
 - Add tests that verify the integrity of the WebGUI Database.
 - Added a karma ranking system to CS threads for conducting popularitycontests.
 - The main page for the Help system is now a "Table of Contents" with a
   tabbed view to make scanning for content easier.
 - Help for forms now shows the fields that you should see with your UI level.
   There is a link to show all fields.
 - Added SQL Form and error feedback for asset addition (Martin Kamerbeek/Procolix)
 - Added file upload ability to the rich text editor (Wouter van Oijen/ProcoliX)
 - added [ 732011 ] http header cache setting
 - added [ 810556 ] larger value field in userSessionScratch table
 - added [ 881817 ] allowed characters in username
 - added [ 1231386 ] Insert WebGUI Image
 - added [ 1205807 ] ability to report file size in File template
 - added [ 1201811 ] resizable textAreas
 - added [ 1376374 ] WebGUI should return a Last-Modified http/1.x header
 - added [ 1216059 ] Admin Bar Made Sticky
 - fix [ 1471218 ] 6.8.8: Unable to change Default Home Page
 - fix [ 1481787 ] autocomplete in user editing screens
 - fix [ 1445002 ] Field(s) fail to delete
 - fix [ 1344318 ] utf8 support for uri_escape/URL::Escape
 - fix [ 1466255 ] 6.8.8 Typo in package WebGUI::Operation::FormHelpers
 - fix [ 1463411 ] Denied content not getting expired or trashed
 - fix [ 1461522 ] 6.8.7 Linking items in the page tree (PDF and other files)
 - fix [ 1465280 ] BR Tag in Outlook
 - fix [ 1178981 ] IE is in "quirks mode" - multi-column layout templates
   break
 - fix [ 999590 ] Rating
 - fix [ 1410577 ] WebGUI::Session not included
 - fix a bug where a link was provided to become or delete non-existant users.
 - fix bugs with the in-memory session caching of user and group memberships
 - fix [ 1465362 ] RichEditor doesn't work on Safari
 - fix [ 1344665 ] Cache does not remember mimetype
 - fix [ 1172613 ] Header Tag Not Accessibility Friendly
 - fix [ 1340839 ] If can't use item in adminConsole don't display it
 - fix [ 1473937 ] scratch->set not taking.
 - fix [ 1471909 ] createAccountSave not called - no validate email (Martin
   Kamerbeek / Procolix)
 - fix [ 1479779 ] enable select box in dataform (Martin Kamerbeek / Procolix)
 - fix [ 1478585 ] purgeRevision without warning or confirmation (Martin
   Kamerbeek / Procolix)
 - fix [ 1480536 ] "Add Files" link in Folder template doesn't work (Martin
   Kamerbeek / Procolix)
 - fix [ 1443373 ] 6.8.7 Events Calendar Dates Incorrect (Wouter van Oijen /
   ProcoliX)
 - fix [ 1444918 ] 6.8.7 Events Calendar - Year old events show in list view
   (Wouter van Oijen / ProcoliX)
 - fix [ 1452552 ] Events Calendar starting from the wrong day with Now!
   (Wouter van Oijen / ProcoliX)
 - fix [ 1452719 ] Event calendar, wrong day of week for date (Wouter van Oijen
   / ProcoliX)
 - fix [ 1470410 ] Problems with Calendar (Wouter van Oijen / ProcoliX)
 - fixed a caching bug for Events Calendar (Wouter van Oijen / ProcoliX)
 - Added a graphing engine and tied it into the Poll asset (Martin Kamerbeek / Procolix)
 - Added Slider form controls (IntSlider, HexSlider and SelectSlider) (Martin
   Kamerbeek / Procolix)
 - Fixed a number of bugs in DateTime.pm

wg-fomATgwyDOTorg
[Append to This Answer]
(Answer) (Category) WebGUI FAQ : (Category) WebGUI 7.0 Questions :
HOWTO: Javascript Form Validation of Required Fields
For those of you (like me) who are using WebGUI to help manage forms which _don't_ get processed by WebGUI - (like FormMail/BFormMail) - you may run into an IE problem with the new WebGUI. Formmail/BFormmail doesn't check the required fields until you submit your results - and that works fine - except that if you use the back button to go back to your form in IE - it will CLEAR all of the contents of that form.
One way to fix this is to disable the new caching code in WebGUI - but a better way is to improve the form validation for non-webgui forms. I didn't know how to do this - so I taught myself enough javascript to get by, and I wrote a nice templated approach to this which I'm proud of, so thought I'd share it with you all. :)
What you need:
You'll need either a few javascript functions added to any javascript file you're including, or you'll want to add them to your page style.
function FieldRequired(ss) {
  switch(ss.type)
  {
    case "radio": { return CheckRequired(ss); break; }
    case "select-one": { return SelectionRequired(ss); break; }
    case "text":
    case "textarea": { return ContentRequired(ss); break; }
    default:
    {
      if (ss[0].type == "radio")
        return CheckRequired(ss);
      break;
    }
  }
  return true;
}
function ContentRequired(ss) { if(ss.value.length > 0) { return false; } return true; }
function CheckRequired(ss) { for(var i = 0; i < ss.length; i++) {
  if(ss[i].checked) { return false; }
  }
return true; }
function SelectionRequired(ss) { for(var i = 0; i < ss.length; i++) {
  if(ss[i].selected) {
    if(ss[i].value.length) { return false; }
    }
  }
return true; }
The above routines all do the checking - FieldRequired() takes any form object and then determines whether it's a radio button, text object, select list, etc and checks it accordingly.
Now.. the cool bit - in your form template you need to add the following:
<SCRIPT language="JavaScript1.2"> function CheckRequiredFields() { var errormessage = new String(); // Put field checks below this point.
  <tmpl_loop field_loop>
      <tmpl_if field.isRequired>if(FieldRequired(document.bformmail.<tmpl_var field.name>)){ errormessage += "\n * <tmpl_var field.label> is a required field."; }</tmpl_if>
  </tmpl_loop>
// Put field checks above this point. if(errormessage.length > 2) {
    alert('You still have required fields remaining:\n' + errormessage);
    return false;
    }
return true; } // end of function CheckRequiredFields() </SCRIPT>
The above code uses templates to iterate through each field and if it's a required field then add javascript code to check it. If the field isn't filled in/checked/selected/etc then it adds it to a growing error message which lists all the fields not entered. If you're using the tab form object then you need to change the loop slightly:
<SCRIPT language="JavaScript1.2"> function CheckRequiredFields() { var errormessage = new String(); // Put field checks below this point.
  <tmpl_loop tab_loop>
    <tmpl_loop tab.field_loop>
      <tmpl_if tab.field.isRequired>if(FieldRequired(document.bformmail.<tmpl_var tab.field.name>)){ errormessage += "\n * <tmpl_var tab.field.label> is a required field."; }</tmpl_if>
    </tmpl_loop>
  </tmpl_loop>
// Put field checks above this point. if(errormessage.length > 2) {
    alert('You still have required fields remaining:\n' + errormessage);
    return false;
    }
return true; } // end of function CheckRequiredFields() </SCRIPT>
Now.. the final bit - and the most cruicial. In your <form action=xxx statement you need to add two things - one - a name (in my code above I assume the name is bformmail - but you can change this to whatever you want as long as it is unique), and secondly you need to add the onsubmit code to call the above javascript code.
<form name="bformmail" onSubmit="return CheckRequiredFields();" method="post" action="/cgi-bin/BFormMail.cgi">
Your method and action can differ, but if you use the above code as is, then the other two need to be the same. The onsubmit code is what sets it all off - it calls the template generated code which in turns calls those javascript routines to check the fields. The great thing about this is that it leverages the power of webgui and uses templates to do the work for you :)
Hopefully someone else can get some use out of this other than me. You could also extend this to do dynamic inserts into each form object and put images/text next to each required field that failed or something like that. I haven't gotten that far yet but it's something I'll probably look at in future. This could also be applied to regular webgui forms too if you really wanted, but there's not much point as they work pretty well as is.
Cheers,
Jesse
JesseATjugaDOTorg
[Append to This Answer]
Previous: (Answer) Links to other information
Next: (Category) Backup, Care for your WebGUI installation
This document is: http://www.gwy2.org/cgi-bin/fom?file=99
[Search] [Appearance] [Show Top Category Only]
This is a Faq-O-Matic 2.721.
This FAQ administered by ... Gerald Young