- added a hook at beginning of left_main
[squirrelmail.git] / config / conf.pl
index 357bea329364d17b424a54553eb238f442954ea4..10c673c3138065c4306869a87eb5097e0de577f3 100755 (executable)
@@ -35,7 +35,7 @@ while ($line = <FILE>) {
       if ($var =~ /^([a-z]|[A-Z])/) {
          @options = split(/\s*EQUALS\s*/, $var);
          $options[1] =~ s/[\n|\r]//g;
-         $options[1] =~ s/\";$//;
+         $options[1] =~ s/\";\s*$//;
          $options[1] =~ s/;$//;
          $options[1] =~ s/^"//;
 
@@ -49,6 +49,11 @@ while ($line = <FILE>) {
             $sub =~ s/\]\["NAME"\]//;
             $sub =~ s/.*\[//; 
             $theme_name[$sub] = $options[1];
+         } elsif ($options[0] =~ /^plugins\[[0-9]+\]/) {
+            $sub = $options[0];
+            $sub =~ s/\]//; 
+            $sub =~ s/^plugins\[//;
+            $plugins[$sub] = $options[1];
          } elsif ($options[0] =~ /^ldap_server\[[0-9]+\]/) {
             $sub = $options[0];
             $sub =~ s/\]//; 
@@ -134,6 +139,7 @@ while (($command ne "q") && ($command ne "Q")) {
       print "5.  Themes\n";
       print "6.  Address Books (LDAP)\n";
       print "7.  Message of the Day (MOTD)\n";
+      print "8.  Plugins\n";
       print "\n";
       print "D.  Set pre-defined settings for specific IMAP servers\n";
       print "\n";
@@ -208,6 +214,14 @@ while (($command ne "q") && ($command ne "Q")) {
       print "1   Edit the MOTD\n";
       print "\n";
       print "R   Return to Main Menu\n";
+   } elsif ($menu == 8) {
+      print $WHT."Plugins\n".$NRM;
+      print "1   Change Plugins\n";
+      for ($count = 0; $count <= $#plugins; $count++) {
+         print "    >  $plugins[$count]\n";
+      }
+      print "\n";
+      print "R   Return to Main Menu\n";
    }
    print "S   Save data\n";
    print "Q   Quit\n";
@@ -239,7 +253,7 @@ while (($command ne "q") && ($command ne "Q")) {
    } else {
       $saved = 0;
       if ($menu == 0) {
-         if (($command > 0) && ($command < 8)) {
+         if (($command > 0) && ($command < 9)) {
             $menu = $command;
          }
       } elsif ($menu == 1) {
@@ -283,6 +297,8 @@ while (($command ne "q") && ($command ne "Q")) {
          elsif ($command == 2) { command62(); }
       } elsif ($menu == 7) {
          if    ($command == 1) { $motd = command71(); }
+      } elsif ($menu == 8) {
+         if    ($command == 1) { $motd = command81(); }
       }
    }   
 }
@@ -490,6 +506,77 @@ sub command71 {
    return $new_motd;
 }
 
+################# PLUGINS ###################
+
+sub command81 {
+   print "\nThis is where you can define plugins.  The plugin must already exist in the\n";
+   print "plugins/ directory in order to add them here.  A plugin name is the name of the\n";
+   print "directory that it resides in.  For example, if you have a plugin in the directory\n";
+   print "plugins/myplug, the name is \"myplug\".\n\n";
+   print "[plugins] command (?=help) > ";
+   $input = <STDIN>;
+   $input =~ s/[\r|\n]//g;
+   while ($input ne "d") {
+      if ($input =~ /^\s*l\s*/i) {
+         $count = 0;
+         while ($count <= $#plugins) {
+            print " $count.  $plugins[$count]\n";
+            $count++;
+         }
+         print "\n";
+      } elsif ($input =~ /^\s*\+/) {
+         print "What is the name of this plugin: ";
+         $name = <STDIN>;
+         $name =~ s/[\r|\n]//g;
+
+         if (-e "../plugins/$name") {
+            $exists = 0;
+            for ($m=0; $m <= $#plugins; $m++) {
+               if ($plugins[$m] eq $name) {
+                  $exists = 1;
+               }
+            }
+            if ($exists == 1) {
+               print "\nThat plugin already exists in the list!\n";
+            } else {
+               $plugins[$#plugins+1] = $name;
+            }   
+            print "\n";
+         } else {
+            print "\nThat plugin does not exist in the plugins/ directory!\n\n";
+         }
+      } elsif ($input =~ /^\s*-\s*[0-9]?/) {
+         if ($input =~ /[0-9]+\s*$/) {
+            $rem_num = $input;
+            $rem_num =~ s/^\s*-\s*//g;
+            $rem_num =~ s/\s*$//;
+         } else {
+            $rem_num = $#plugins;
+         }
+            
+         $count = 0;
+         @new_plugins = ();
+         while ($count <= $#plugins) {
+            if ($count != $rem_num) {
+               @new_plugins = (@new_plugins, $plugins[$count]);
+            }
+            $count++;
+         }
+         @plugins = @new_plugins;
+      } elsif ($input =~ /^\s*\?\s*/) {
+         print ".-------------------------.\n";
+         print "| +          (add plugin) |\n";
+         print "| - N     (remove plugin) |\n";
+         print "| l        (list plugins) |\n";
+         print "| d                (done) |\n";
+         print "`-------------------------'\n";
+      }
+      print "[plugins] command (?=help) > ";
+      $input = <STDIN>;
+      $input =~ s/[\r|\n]//g;
+   }
+}   
+
 ################# FOLDERS ###################
 
 # default_folder_prefix
@@ -1188,6 +1275,12 @@ sub save_data {
 
    print FILE "\n";
 
+   for ($count=0; $count <= $#plugins; $count++) {
+      print FILE "\t\$plugins[$count] = \"$plugins[$count]\";\n";
+   }
+   
+   print FILE "\n";
+
    for ($count=0; $count <= $#theme_name; $count++) {
       print FILE "\t\$theme[$count][\"PATH\"] = \"$theme_path[$count]\";\n";
       print FILE "\t\$theme[$count][\"NAME\"] = \"$theme_name[$count]\";\n";