Make the default element called 0 again in preparation of my next commit
[squirrelmail.git] / doc / plugin.txt
index 19e0cd38b9110f25fba0f12900f652bc66d51a6e..660cbb3d0841abc1efeeb3f0222121d8aec71885 100644 (file)
@@ -215,6 +215,7 @@ but may be out of date soon thereafter.  You never know.  ;-)
   help_top                       src/help.php                    do_hook
   help_chapter                   src/help.php                    do_hook
   help_bottom                    src/help.php                    do_hook
   help_top                       src/help.php                    do_hook
   help_chapter                   src/help.php                    do_hook
   help_bottom                    src/help.php                    do_hook
+  left_main_after_each_folder    src/left_main.php               concat_hook
   left_main_before               src/left_main.php               do_hook
   left_main_after                src/left_main.php               do_hook
   login_cookie                   src/login.php                   do_hook
   left_main_before               src/left_main.php               do_hook
   left_main_after                src/left_main.php               do_hook
   login_cookie                   src/login.php                   do_hook
@@ -540,52 +541,58 @@ for you.  This is the preferred method of building options lists going forward.
       The array that you use to specify each plugin option has the following
       possible attributes:
 
       The array that you use to specify each plugin option has the following
       possible attributes:
 
-         name       The name of this setting, which is used not only for
-                    the INPUT tag name, but also for the name of this
-                    setting in the user's preferences
-         caption    The text that prefaces this setting on the preferences page
-         type       The type of INPUT element, which should be one of:
-                       SMOPT_TYPE_STRING     String/text input
-                       SMOPT_TYPE_STRLIST    Select list input
-                       SMOPT_TYPE_TEXTAREA   Text area input
-                       SMOPT_TYPE_INTEGER    Integer input
-                       SMOPT_TYPE_FLOAT      Floating point number input
-                       SMOPT_TYPE_BOOLEAN    Boolean (yes/no radio buttons) 
-                                             input
-                       SMOPT_TYPE_HIDDEN     Hidden input (not actually shown
-                                             on preferences page)
-                       SMOPT_TYPE_COMMENT    Text is shown (specified by the 
-                                             'comment' attribute), but no user
-                                             input is needed
-                       SMOPT_TYPE_FLDRLIST   Select list of IMAP folders
-         refresh    Indicates if a link should be shown to refresh part or all
-                    of the window (optional).  Possible values are:
-                       SMOPT_REFRESH_NONE         No refresh link is shown
-                       SMOPT_REFRESH_FOLDERLIST   Link is shown to refresh
-                                                  only the folder list
-                       SMOPT_REFRESH_ALL          Link is shown to refresh
-                                                  the entire window
-         posvals    For select lists, this should be an associative array,
-                    where each key is an actual input value and the
-                    corresponding value is what is displayed to the user
-                    for that list item in the drop-down list
-         value      Specify the default/preselected value for this option input
-         save       You may indicate that special functionality needs to be
-                    used instead of just saving this setting by giving the 
-                    name of a function to call when this value would otherwise
-                    just be saved in the user's preferences
-         size       Specifies the size of certain input items (typically
-                    textual inputs).  Possible values are:
-                       SMOPT_SIZE_TINY
-                       SMOPT_SIZE_SMALL
-                       SMOPT_SIZE_MEDIUM
-                       SMOPT_SIZE_LARGE
-                       SMOPT_SIZE_HUGE
-                       SMOPT_SIZE_NORMAL
-         comment    For SMOPT_TYPE_COMMENT type options, this is the text
-                    displayed to the user
-         script     This is where you may add any additional javascript 
-                    or other code to the user input
+         name           The name of this setting, which is used not only for
+                        the INPUT tag name, but also for the name of this
+                        setting in the user's preferences
+         caption        The text that prefaces this setting on the preferences
+                        page
+         type           The type of INPUT element, which should be one of:
+                           SMOPT_TYPE_STRING     String/text input
+                           SMOPT_TYPE_STRLIST    Select list input
+                           SMOPT_TYPE_TEXTAREA   Text area input
+                           SMOPT_TYPE_INTEGER    Integer input
+                           SMOPT_TYPE_FLOAT      Floating point number input
+                           SMOPT_TYPE_BOOLEAN    Boolean (yes/no radio buttons)
+                                                   input
+                           SMOPT_TYPE_HIDDEN     Hidden input (not actually
+                                                 shown on preferences page)
+                           SMOPT_TYPE_COMMENT    Text is shown (specified by the
+                                                 'comment' attribute), but no
+                                                 user input is needed
+                           SMOPT_TYPE_FLDRLIST   Select list of IMAP folders
+         refresh        Indicates if a link should be shown to refresh part or
+                        all of the window (optional).  Possible values are:
+                           SMOPT_REFRESH_NONE         No refresh link is shown
+                           SMOPT_REFRESH_FOLDERLIST   Link is shown to refresh
+                                                      only the folder list
+                           SMOPT_REFRESH_ALL          Link is shown to refresh
+                                                    the entire window
+         initial_value  The value that should initially be placed in this 
+                        INPUT element
+         posvals        For select lists, this should be an associative array,
+                        where each key is an actual input value and the
+                        corresponding value is what is displayed to the user
+                        for that list item in the drop-down list
+         value          Specify the default/preselected value for this option
+                        input
+         save           You may indicate that special functionality needs to be
+                        used instead of just saving this setting by giving the
+                        name of a function to call when this value would 
+                        otherwise just be saved in the user's preferences
+         size           Specifies the size of certain input items (typically
+                        textual inputs).  Possible values are:
+                           SMOPT_SIZE_TINY
+                           SMOPT_SIZE_SMALL
+                           SMOPT_SIZE_MEDIUM
+                           SMOPT_SIZE_LARGE
+                           SMOPT_SIZE_HUGE
+                           SMOPT_SIZE_NORMAL
+         comment        For SMOPT_TYPE_COMMENT type options, this is the text
+                        displayed to the user
+         script         This is where you may add any additional javascript 
+                        or other code to the user input
+         post_script    You may specify some script (usually Javascript) that
+                        will be placed after (outside of) the INPUT tag.
 
   3.  If you indicated a 'save' attribute for any of your options, you must
       create that function (you'll only need to do this if you need to do
 
   3.  If you indicated a 'save' attribute for any of your options, you must
       create that function (you'll only need to do this if you need to do
@@ -1112,6 +1119,22 @@ code generates (it's OK, really, it happens to the best of us... except me!).
 Please make sure to fix them all before you release the plugin.
 
 
 Please make sure to fix them all before you release the plugin.
 
 
+Compatibility with register_globals=Off
+---------------------------------------
+
+Most sensible systems administrators now run their PHP systems with the
+setting "register_globals" as OFF.  This is a prudent security setting,
+and as the SquirrelMail core code has long since been upgraded to work
+in such an environment, we are now requiring that all plugins do the same.
+Compatibility with this setting amounts to little more than explicitly
+gathering any and all variables you sent from a <form> tag as GET or POST
+values instead of just assuming that they will be placed in the global
+scope automatically.  There is nothing more to do than this:
+
+   global $favorite_color;
+   sqgetGlobalVar('favorite_color', $favorite_color, SQ_FORM);
+
+
 Extra Blank Lines
 -----------------
 
 Extra Blank Lines
 -----------------
 
@@ -1207,8 +1230,12 @@ strongly encouraged to make use of.  Using them also makes your job easier.
 
   4.  To remove a variable from the session:
 
 
   4.  To remove a variable from the session:
 
+         global $favorite_color;
          sqsession_unregister('favorite_color');
 
          sqsession_unregister('favorite_color');
 
+      Strictly speaking, globalizing the variable shouldn't be necessary,
+      but certain versions of PHP seem to behave more predictably if you do.
+
 
 Form Variables
 --------------
 
 Form Variables
 --------------