From b737021a905a33c8eb4331692475cca7791e533c Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <bruederli@kolabsys.com>
Date: Sat, 27 Dec 2014 08:53:21 -0500
Subject: [PATCH] Improve plugin selection in installer; check already selected plugins

---
 installer/config.php               |    9 +++++----
 program/include/rcmail_install.php |    7 ++++---
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/installer/config.php b/installer/config.php
index 82d7f55..7e69603 100644
--- a/installer/config.php
+++ b/installer/config.php
@@ -680,10 +680,11 @@
 $plugins = $RCI->list_plugins();
 foreach($plugins as $p) 
 {
-	$p_check = new html_checkbox(array('name' => '_plugins_'.$p['name'], 'id' => 'cfgplugin_'.$p['name']));
-	echo '<dt class="propname">'.$p['name'].'</dt><dd>';
-	echo $p_check->show(0, array('value' => $p['name']));
-	echo '<label for="cfgplugin_'.$p['name'].'">'.$p['desc'].'</label><br/></dd>';
+    $p_check = new html_checkbox(array('name' => '_plugins_'.$p['name'], 'id' => 'cfgplugin_'.$p['name'], 'value' => $p['name']));
+    echo '<dt class="propname"><label>';
+    echo $p_check->show($p['enabled'] ? $p['name'] : 0);
+    echo '&nbsp;' . $p['name'] . '</label></dt><dd>';
+    echo '<label for="cfgplugin_'.$p['name'].'" class="hint">' . $p['desc'] . '</label><br/></dd>';
 }
 
 ?>
diff --git a/program/include/rcmail_install.php b/program/include/rcmail_install.php
index 26c613a..2ba9069 100644
--- a/program/include/rcmail_install.php
+++ b/program/include/rcmail_install.php
@@ -578,17 +578,18 @@
     foreach (glob($plugin_dir . '*') as $path) 
     {
 
-      if (is_dir($path) && file_exists($path.'/composer.json')) 
+      if (is_dir($path) && is_readable($path.'/composer.json'))
       {
         $file_json = json_decode(file_get_contents($path.'/composer.json'));
-        $plugin_desc = $file_json->description;
+        $plugin_desc = $file_json->description ?: 'N/A';
       }
       else
       {
         $plugin_desc = 'N/A';
       }
 
-      $plugins[] = array('name' => substr($path, strlen($plugin_dir)), 'desc' => $plugin_desc);
+      $name = substr($path, strlen($plugin_dir));
+      $plugins[] = array('name' => $name, 'desc' => $plugin_desc, 'enabled' => in_array($name, $this->config['plugins']));
     }
 
     return $plugins;

--
Gitblit v1.9.1