Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

httpform.h

Go to the documentation of this file.
00001 /* 00002 * httpform.h 00003 * 00004 * Forms management using HTTP User Interface. 00005 * 00006 * Portable Windows Library 00007 * 00008 * Copyright (c) 1993-2002 Equivalence Pty. Ltd. 00009 * 00010 * The contents of this file are subject to the Mozilla Public License 00011 * Version 1.0 (the "License"); you may not use this file except in 00012 * compliance with the License. You may obtain a copy of the License at 00013 * http://www.mozilla.org/MPL/ 00014 * 00015 * Software distributed under the License is distributed on an "AS IS" 00016 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 00017 * the License for the specific language governing rights and limitations 00018 * under the License. 00019 * 00020 * The Original Code is Portable Windows Library. 00021 * 00022 * The Initial Developer of the Original Code is Equivalence Pty. Ltd. 00023 * 00024 * Contributor(s): ______________________________________. 00025 * 00026 * $Log: httpform.h,v $ 00027 * Revision 1.17 2003/03/24 04:30:41 robertj 00028 * Added function to set and get strings from PConfig in correct format for 00029 * use with HTTP form array contsructs. 00030 * 00031 * Revision 1.16 2002/11/06 22:47:24 robertj 00032 * Fixed header comment (copyright etc) 00033 * 00034 * Revision 1.15 2002/09/16 01:08:59 robertj 00035 * Added #define so can select if #pragma interface/implementation is used on 00036 * platform basis (eg MacOS) rather than compiler, thanks Robert Monaghan. 00037 * 00038 * Revision 1.14 2001/10/10 08:07:48 robertj 00039 * Fixed large memory leak of strings when doing POST to a form. 00040 * 00041 * Revision 1.13 2000/12/18 07:12:37 robertj 00042 * Added ability to have fixed length array fields. 00043 * 00044 * Revision 1.12 1999/03/09 08:01:46 robertj 00045 * Changed comments for doc++ support (more to come). 00046 * 00047 * Revision 1.11 1999/02/16 08:07:10 robertj 00048 * MSVC 6.0 compatibility changes. 00049 * 00050 * Revision 1.10 1998/11/30 02:50:48 robertj 00051 * New directory structure 00052 * 00053 * Revision 1.9 1998/09/23 06:19:31 robertj 00054 * Added open source copyright license. 00055 * 00056 * Revision 1.8 1998/08/20 05:45:33 robertj 00057 * Fixed bug where substitutions did not always occur if near end of macro block. 00058 * 00059 * Revision 1.7 1998/01/26 00:25:24 robertj 00060 * Major rewrite of HTTP forms management. 00061 * 00062 * Revision 1.6 1997/08/09 07:46:51 robertj 00063 * Fixed problems with value of SELECT fields in form 00064 * 00065 * Revision 1.5 1997/07/26 11:38:17 robertj 00066 * Support for overridable pages in HTTP service applications. 00067 * 00068 * Revision 1.4 1997/07/08 13:16:12 robertj 00069 * Major HTTP form enhancements for lists and arrays of fields. 00070 * 00071 * Revision 1.3 1997/06/08 04:49:40 robertj 00072 * Adding new llist based form field. 00073 * 00074 * Revision 1.2 1997/04/01 06:01:39 robertj 00075 * Allowed value list in drop down box to be modified once created. 00076 * 00077 * Revision 1.1 1996/06/28 12:55:56 robertj 00078 * Initial revision 00079 * 00080 */ 00081 00082 #ifndef _PHTTPFORM 00083 #define _PHTTPFORM 00084 00085 #ifdef P_USE_PRAGMA 00086 #pragma interface 00087 #endif 00088 00089 #include <ptclib/http.h> 00090 00091 00093 // PHTTPField 00094 00098 class PHTTPField : public PObject 00099 { 00100 PCLASSINFO(PHTTPField, PObject) 00101 public: 00102 PHTTPField( 00103 const char * bname, // base name (identifier) for the field. 00104 const char * title, // Title text for field (defaults to name). 00105 const char * help // Help text for the field. 00106 ); 00107 // Create a new field in a HTTP form. 00108 00114 virtual Comparison Compare( 00115 const PObject & obj 00116 ) const; 00117 00123 const PCaselessString & GetName() const { return fullName; } 00124 00130 const PCaselessString & GetBaseName() const { return baseName; } 00131 00134 virtual void SetName( 00135 const PString & newName // New name for field 00136 ); 00137 00143 virtual const PHTTPField * LocateName( 00144 const PString & name // Full field name to locate 00145 ) const; 00146 00152 const PString & GetTitle() const { return title; } 00153 00159 const PString & GetHelp() const { return help; } 00160 00161 void SetHelp( 00162 const PString & text // Help text. 00163 ) { help = text; } 00164 void SetHelp( 00165 const PString & hotLinkURL, // URL for link to help page. 00166 const PString & linkText // Help text in the link. 00167 ); 00168 void SetHelp( 00169 const PString & hotLinkURL, // URL for link to help page. 00170 const PString & imageURL, // URL for image to be displayed in link. 00171 const PString & imageText // Text in the link when image unavailable. 00172 ); 00173 // Set the help text for the field. 00174 00180 virtual PHTTPField * NewField() const = 0; 00181 00182 virtual void ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const; 00183 // Splice expanded macro substitutions into text string 00184 00187 virtual void GetHTMLTag( 00188 PHTML & html // HTML to receive the fields HTML tag. 00189 ) const = 0; 00190 00193 virtual PString GetHTMLInput( 00194 const PString & input // Source HTML text for input tag. 00195 ) const; 00196 00199 virtual PString GetHTMLSelect( 00200 const PString & selection // Source HTML text for input tag. 00201 ) const; 00202 00205 virtual void GetHTMLHeading( 00206 PHTML & html // HTML to receive the field info. 00207 ) const; 00208 00214 virtual PString GetValue(BOOL dflt = FALSE) const = 0; 00215 00218 virtual void SetValue( 00219 const PString & newValue // New value for the field. 00220 ) = 0; 00221 00225 virtual void LoadFromConfig( 00226 PConfig & cfg // Configuration for value transfer. 00227 ); 00228 00232 virtual void SaveToConfig( 00233 PConfig & cfg // Configuration for value transfer. 00234 ) const; 00235 00241 virtual BOOL Validated( 00242 const PString & newVal, // Proposed new value for the field. 00243 PStringStream & msg // Stream to take error HTML if value not valid. 00244 ) const; 00245 00246 00252 virtual void GetAllNames(PStringList & list) const; 00253 00256 virtual void SetAllValues( 00257 const PStringToString & data // New value for the field. 00258 ); 00259 00265 virtual BOOL ValidateAll( 00266 const PStringToString & data, // Proposed new value for the field. 00267 PStringStream & msg // Stream to take error HTML if value not valid. 00268 ) const; 00269 00270 00271 BOOL NotYetInHTML() const { return notInHTML; } 00272 void SetInHTML() { notInHTML = FALSE; } 00273 00274 protected: 00275 PCaselessString baseName; 00276 PCaselessString fullName; 00277 PString title; 00278 PString help; 00279 BOOL notInHTML; 00280 }; 00281 00282 00283 PLIST(PHTTPFieldList, PHTTPField); 00284 00285 class PHTTPCompositeField : public PHTTPField 00286 { 00287 PCLASSINFO(PHTTPCompositeField, PHTTPField) 00288 public: 00289 PHTTPCompositeField( 00290 const char * name, // Name (identifier) for the field. 00291 const char * title = NULL, // Title text for field (defaults to name). 00292 const char * help = NULL // Help text for the field. 00293 ); 00294 00295 virtual void SetName( 00296 const PString & name // New name for field 00297 ); 00298 00299 virtual const PHTTPField * LocateName( 00300 const PString & name // Full field name to locate 00301 ) const; 00302 00303 virtual PHTTPField * NewField() const; 00304 00305 virtual void ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const; 00306 00307 virtual void GetHTMLTag( 00308 PHTML & html // HTML to receive the field info. 00309 ) const; 00310 00311 virtual PString GetHTMLInput( 00312 const PString & input // Source HTML text for input tag. 00313 ) const; 00314 00315 virtual void GetHTMLHeading( 00316 PHTML & html // HTML to receive the field info. 00317 ) const; 00318 00319 virtual PString GetValue(BOOL dflt = FALSE) const; 00320 00321 virtual void SetValue( 00322 const PString & newValue // New value for the field. 00323 ); 00324 00325 virtual void LoadFromConfig( 00326 PConfig & cfg // Configuration for value transfer. 00327 ); 00328 virtual void SaveToConfig( 00329 PConfig & cfg // Configuration for value transfer. 00330 ) const; 00331 00332 virtual void GetAllNames(PStringList & list) const; 00333 virtual void SetAllValues( 00334 const PStringToString & data // New value for the field. 00335 ); 00336 00337 virtual BOOL ValidateAll( 00338 const PStringToString & data, // Proposed new value for the field. 00339 PStringStream & msg // Stream to take error HTML if value not valid. 00340 ) const; 00341 00342 00350 virtual PINDEX GetSize() const; 00351 00352 void Append(PHTTPField * fld); 00353 PHTTPField & operator[](PINDEX idx) const { return fields[idx]; } 00354 void RemoveAt(PINDEX idx) { fields.RemoveAt(idx); } 00355 void RemoveAll() { fields.RemoveAll(); } 00356 00357 protected: 00358 PHTTPFieldList fields; 00359 }; 00360 00361 00362 class PHTTPSubForm : public PHTTPCompositeField 00363 { 00364 PCLASSINFO(PHTTPSubForm, PHTTPCompositeField) 00365 public: 00366 PHTTPSubForm( 00367 const PString & subFormName, // URL for the sub-form 00368 const char * name, // Name (identifier) for the field. 00369 const char * title = NULL, // Title text for field (defaults to name). 00370 PINDEX primaryField = 0, // Pimary field whove value is in hot link 00371 PINDEX secondaryField = P_MAX_INDEX // Seconary field next to hotlink 00372 ); 00373 00374 PHTTPField * NewField() const; 00375 void GetHTMLTag(PHTML & html) const; 00376 void GetHTMLHeading(PHTML & html) const; 00377 00378 protected: 00379 PString subFormName; 00380 PINDEX primary; 00381 PINDEX secondary; 00382 }; 00383 00384 00385 class PHTTPFieldArray : public PHTTPCompositeField 00386 { 00387 PCLASSINFO(PHTTPFieldArray, PHTTPCompositeField) 00388 public: 00389 PHTTPFieldArray( 00390 PHTTPField * baseField, 00391 BOOL ordered, 00392 PINDEX fixedSize = 0 00393 ); 00394 00395 ~PHTTPFieldArray(); 00396 00397 00398 virtual PHTTPField * NewField() const; 00399 00400 virtual void ExpandFieldNames(PString & text, PINDEX start, PINDEX & finish) const; 00401 00402 virtual void GetHTMLTag( 00403 PHTML & html // HTML to receive the field info. 00404 ) const; 00405 00406 virtual void LoadFromConfig( 00407 PConfig & cfg // Configuration for value transfer. 00408 ); 00409 virtual void SaveToConfig( 00410 PConfig & cfg // Configuration for value transfer. 00411 ) const; 00412 00413 00414 virtual void SetAllValues( 00415 const PStringToString & data // New value for the field. 00416 ); 00417 00418 virtual PINDEX GetSize() const; 00419 void SetSize(PINDEX newSize); 00420 00421 PStringArray GetStrings( 00422 PConfig & cfg 00423 ); 00424 00425 void SetStrings( 00426 PConfig & cfg, 00427 const PStringArray & values 00428 ); 00429 00430 protected: 00431 void AddBlankField(); 00432 void AddArrayControlBox(PHTML & html, PINDEX fld) const; 00433 void SetArrayFieldName(PINDEX idx) const; 00434 00435 PHTTPField * baseField; 00436 BOOL orderedArray; 00437 BOOL canAddElements; 00438 }; 00439 00440 00441 class PHTTPStringField : public PHTTPField 00442 { 00443 PCLASSINFO(PHTTPStringField, PHTTPField) 00444 public: 00445 PHTTPStringField( 00446 const char * name, 00447 PINDEX size, 00448 const char * initVal = NULL, 00449 const char * help = NULL 00450 ); 00451 PHTTPStringField( 00452 const char * name, 00453 const char * title, 00454 PINDEX size, 00455 const char * initVal = NULL, 00456 const char * help = NULL 00457 ); 00458 00459 virtual PHTTPField * NewField() const; 00460 00461 virtual void GetHTMLTag( 00462 PHTML & html // HTML to receive the field info. 00463 ) const; 00464 00465 virtual PString GetValue(BOOL dflt = FALSE) const; 00466 00467 virtual void SetValue( 00468 const PString & newVal 00469 ); 00470 00471 00472 protected: 00473 PString value; 00474 PString initialValue; 00475 PINDEX size; 00476 }; 00477 00478 00479 class PHTTPPasswordField : public PHTTPStringField 00480 { 00481 PCLASSINFO(PHTTPPasswordField, PHTTPStringField) 00482 public: 00483 PHTTPPasswordField( 00484 const char * name, 00485 PINDEX size, 00486 const char * initVal = NULL, 00487 const char * help = NULL 00488 ); 00489 PHTTPPasswordField( 00490 const char * name, 00491 const char * title, 00492 PINDEX size, 00493 const char * initVal = NULL, 00494 const char * help = NULL 00495 ); 00496 00497 virtual PHTTPField * NewField() const; 00498 00499 virtual void GetHTMLTag( 00500 PHTML & html // HTML to receive the field info. 00501 ) const; 00502 00503 virtual PString GetValue(BOOL dflt = FALSE) const; 00504 00505 virtual void SetValue( 00506 const PString & newVal 00507 ); 00508 00509 static PString Decrypt(const PString & pword); 00510 }; 00511 00512 00513 class PHTTPIntegerField : public PHTTPField 00514 { 00515 PCLASSINFO(PHTTPIntegerField, PHTTPField) 00516 public: 00517 PHTTPIntegerField( 00518 const char * name, 00519 int low, int high, 00520 int initVal = 0, 00521 const char * units = NULL, 00522 const char * help = NULL 00523 ); 00524 PHTTPIntegerField( 00525 const char * name, 00526 const char * title, 00527 int low, int high, 00528 int initVal = 0, 00529 const char * units = NULL, 00530 const char * help = NULL 00531 ); 00532 00533 virtual PHTTPField * NewField() const; 00534 00535 virtual void GetHTMLTag( 00536 PHTML & html // HTML to receive the field info. 00537 ) const; 00538 00539 virtual PString GetValue(BOOL dflt = FALSE) const; 00540 00541 virtual void SetValue( 00542 const PString & newVal 00543 ); 00544 00545 virtual void LoadFromConfig( 00546 PConfig & cfg // Configuration for value transfer. 00547 ); 00548 virtual void SaveToConfig( 00549 PConfig & cfg // Configuration for value transfer. 00550 ) const; 00551 00552 virtual BOOL Validated( 00553 const PString & newVal, 00554 PStringStream & msg 00555 ) const; 00556 00557 00558 protected: 00559 int low, high, value; 00560 int initialValue; 00561 PString units; 00562 }; 00563 00564 00565 class PHTTPBooleanField : public PHTTPField 00566 { 00567 PCLASSINFO(PHTTPBooleanField, PHTTPField) 00568 public: 00569 PHTTPBooleanField( 00570 const char * name, 00571 BOOL initVal = FALSE, 00572 const char * help = NULL 00573 ); 00574 PHTTPBooleanField( 00575 const char * name, 00576 const char * title, 00577 BOOL initVal = FALSE, 00578 const char * help = NULL 00579 ); 00580 00581 virtual PHTTPField * NewField() const; 00582 00583 virtual void GetHTMLTag( 00584 PHTML & html // HTML to receive the field info. 00585 ) const; 00586 00587 virtual PString GetHTMLInput( 00588 const PString & input 00589 ) const; 00590 00591 virtual PString GetValue(BOOL dflt = FALSE) const; 00592 00593 virtual void SetValue( 00594 const PString & newVal 00595 ); 00596 00597 virtual void LoadFromConfig( 00598 PConfig & cfg // Configuration for value transfer. 00599 ); 00600 virtual void SaveToConfig( 00601 PConfig & cfg // Configuration for value transfer. 00602 ) const; 00603 00604 00605 protected: 00606 BOOL value, initialValue; 00607 }; 00608 00609 00610 class PHTTPRadioField : public PHTTPField 00611 { 00612 PCLASSINFO(PHTTPRadioField, PHTTPField) 00613 public: 00614 PHTTPRadioField( 00615 const char * name, 00616 const PStringArray & valueArray, 00617 PINDEX initVal = 0, 00618 const char * help = NULL 00619 ); 00620 PHTTPRadioField( 00621 const char * name, 00622 const PStringArray & valueArray, 00623 const PStringArray & titleArray, 00624 PINDEX initVal = 0, 00625 const char * help = NULL 00626 ); 00627 PHTTPRadioField( 00628 const char * name, 00629 PINDEX count, 00630 const char * const * valueStrings, 00631 PINDEX initVal = 0, 00632 const char * help = NULL 00633 ); 00634 PHTTPRadioField( 00635 const char * name, 00636 PINDEX count, 00637 const char * const * valueStrings, 00638 const char * const * titleStrings, 00639 PINDEX initVal = 0, 00640 const char * help = NULL 00641 ); 00642 PHTTPRadioField( 00643 const char * name, 00644 const char * groupTitle, 00645 const PStringArray & valueArray, 00646 PINDEX initVal = 0, 00647 const char * help = NULL 00648 ); 00649 PHTTPRadioField( 00650 const char * name, 00651 const char * groupTitle, 00652 const PStringArray & valueArray, 00653 const PStringArray & titleArray, 00654 PINDEX initVal = 0, 00655 const char * help = NULL 00656 ); 00657 PHTTPRadioField( 00658 const char * name, 00659 const char * groupTitle, 00660 PINDEX count, 00661 const char * const * valueStrings, 00662 PINDEX initVal = 0, 00663 const char * help = NULL 00664 ); 00665 PHTTPRadioField( 00666 const char * name, 00667 const char * groupTitle, 00668 PINDEX count, 00669 const char * const * valueStrings, 00670 const char * const * titleStrings, 00671 PINDEX initVal = 0, 00672 const char * help = NULL 00673 ); 00674 00675 virtual PHTTPField * NewField() const; 00676 00677 virtual void GetHTMLTag( 00678 PHTML & html // HTML to receive the field info. 00679 ) const; 00680 00681 virtual PString GetHTMLInput( 00682 const PString & input 00683 ) const; 00684 00685 virtual PString GetValue(BOOL dflt = FALSE) const; 00686 00687 virtual void SetValue( 00688 const PString & newVal 00689 ); 00690 00691 00692 protected: 00693 PStringArray values; 00694 PStringArray titles; 00695 PString value; 00696 PString initialValue; 00697 }; 00698 00699 00700 class PHTTPSelectField : public PHTTPField 00701 { 00702 PCLASSINFO(PHTTPSelectField, PHTTPField) 00703 public: 00704 PHTTPSelectField( 00705 const char * name, 00706 const PStringArray & valueArray, 00707 PINDEX initVal = 0, 00708 const char * help = NULL 00709 ); 00710 PHTTPSelectField( 00711 const char * name, 00712 PINDEX count, 00713 const char * const * valueStrings, 00714 PINDEX initVal = 0, 00715 const char * help = NULL 00716 ); 00717 PHTTPSelectField( 00718 const char * name, 00719 const char * title, 00720 const PStringArray & valueArray, 00721 PINDEX initVal = 0, 00722 const char * help = NULL 00723 ); 00724 PHTTPSelectField( 00725 const char * name, 00726 const char * title, 00727 PINDEX count, 00728 const char * const * valueStrings, 00729 PINDEX initVal = 0, 00730 const char * help = NULL 00731 ); 00732 00733 virtual PHTTPField * NewField() const; 00734 00735 virtual void GetHTMLTag( 00736 PHTML & html // HTML to receive the field info. 00737 ) const; 00738 00739 virtual PString GetValue(BOOL dflt = FALSE) const; 00740 00741 virtual void SetValue( 00742 const PString & newVal 00743 ); 00744 00745 00746 PStringArray values; 00747 00748 00749 protected: 00750 PString value; 00751 PINDEX initialValue; 00752 }; 00753 00754 00756 // PHTTPForm 00757 00758 class PHTTPForm : public PHTTPString 00759 { 00760 PCLASSINFO(PHTTPForm, PHTTPString) 00761 public: 00762 PHTTPForm( 00763 const PURL & url 00764 ); 00765 PHTTPForm( 00766 const PURL & url, 00767 const PHTTPAuthority & auth 00768 ); 00769 PHTTPForm( 00770 const PURL & url, 00771 const PString & html 00772 ); 00773 PHTTPForm( 00774 const PURL & url, 00775 const PString & html, 00776 const PHTTPAuthority & auth 00777 ); 00778 00779 00780 virtual void OnLoadedText( 00781 PHTTPRequest & request, // Information on this request. 00782 PString & text // Data used in reply. 00783 ); 00784 virtual BOOL Post( 00785 PHTTPRequest & request, // Information on this request. 00786 const PStringToString & data, // Variables in the POST data. 00787 PHTML & replyMessage // Reply message for post. 00788 ); 00789 00790 00791 PHTTPField * Add( 00792 PHTTPField * fld 00793 ); 00794 void RemoveAllFields() 00795 { fields.RemoveAll(); fieldNames.RemoveAll(); } 00796 00797 enum BuildOptions { 00798 CompleteHTML, 00799 InsertIntoForm, 00800 InsertIntoHTML 00801 }; 00802 00803 void BuildHTML( 00804 const char * heading 00805 ); 00806 void BuildHTML( 00807 const PString & heading 00808 ); 00809 void BuildHTML( 00810 PHTML & html, 00811 BuildOptions option = CompleteHTML 00812 ); 00813 00814 00815 protected: 00816 PHTTPCompositeField fields; 00817 PStringSet fieldNames; 00818 }; 00819 00820 00822 // PHTTPConfig 00823 00824 class PHTTPConfig : public PHTTPForm 00825 { 00826 PCLASSINFO(PHTTPConfig, PHTTPForm) 00827 public: 00828 PHTTPConfig( 00829 const PURL & url, 00830 const PString & section 00831 ); 00832 PHTTPConfig( 00833 const PURL & url, 00834 const PString & section, 00835 const PHTTPAuthority & auth 00836 ); 00837 PHTTPConfig( 00838 const PURL & url, 00839 const PString & section, 00840 const PString & html 00841 ); 00842 PHTTPConfig( 00843 const PURL & url, 00844 const PString & section, 00845 const PString & html, 00846 const PHTTPAuthority & auth 00847 ); 00848 00849 virtual void OnLoadedText( 00850 PHTTPRequest & request, // Information on this request. 00851 PString & text // Data used in reply. 00852 ); 00853 virtual BOOL Post( 00854 PHTTPRequest & request, // Information on this request. 00855 const PStringToString & data, // Variables in the POST data. 00856 PHTML & replyMessage // Reply message for post. 00857 ); 00858 00859 00862 void LoadFromConfig(); 00863 00869 const PString & GetConfigSection() const { return section; } 00870 00871 void SetConfigSection( 00872 const PString & sect // New section for the config page. 00873 ) { section = sect; } 00874 // Set the configuration file section. 00875 00880 PHTTPField * AddSectionField( 00881 PHTTPField * sectionFld, // Field to set as the section name 00882 const char * prefix = NULL, // String to attach before the field value 00883 const char * suffix = NULL // String to attach after the field value 00884 ); 00885 00889 void AddNewKeyFields( 00890 PHTTPField * keyFld, // Field for the key to be added. 00891 PHTTPField * valFld // Field for the value of the key yto be added. 00892 ); 00893 00894 00895 protected: 00896 PString section; 00897 PString sectionPrefix; 00898 PString sectionSuffix; 00899 PHTTPField * sectionField; 00900 PHTTPField * keyField; 00901 PHTTPField * valField; 00902 00903 private: 00904 void Construct(); 00905 }; 00906 00907 00909 // PHTTPConfigSectionList 00910 00911 class PHTTPConfigSectionList : public PHTTPString 00912 { 00913 PCLASSINFO(PHTTPConfigSectionList, PHTTPString) 00914 public: 00915 PHTTPConfigSectionList( 00916 const PURL & url, 00917 const PHTTPAuthority & auth, 00918 const PString & sectionPrefix, 00919 const PString & additionalValueName, 00920 const PURL & editSection, 00921 const PURL & newSection, 00922 const PString & newSectionTitle, 00923 PHTML & heading 00924 ); 00925 00926 virtual void OnLoadedText( 00927 PHTTPRequest & request, // Information on this request. 00928 PString & text // Data used in reply. 00929 ); 00930 virtual BOOL Post( 00931 PHTTPRequest & request, // Information on this request. 00932 const PStringToString & data, // Variables in the POST data. 00933 PHTML & replyMessage // Reply message for post. 00934 ); 00935 00936 protected: 00937 PString sectionPrefix; 00938 PString additionalValueName; 00939 PString newSectionLink; 00940 PString newSectionTitle; 00941 PString editSectionLink; 00942 }; 00943 00944 00945 #endif 00946 00947 00948 // End Of File ///////////////////////////////////////////////////////////////

Generated on Sat Jul 24 15:35:56 2004 for PWLib by doxygen 1.3.7