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
+  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
@@ -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:
 
-         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
@@ -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.
 
 
+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
 -----------------
 
@@ -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:
 
+         global $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
 --------------