Index: /branches/2.2/admin/include/plugins.class.php
===================================================================
--- /branches/2.2/admin/include/plugins.class.php	(revision 11042)
+++ /branches/2.2/admin/include/plugins.class.php	(revision 11043)
@@ -557,28 +557,18 @@
   function get_merged_extensions($version=PHPWG_VERSION)
   {
-    if (isset($_SESSION['merged_extensions']) and $_SESSION['merged_extensions']['~~expire~~'] > time())
-    {
-      return $_SESSION['merged_extensions'];
-    }
-
-    $_SESSION['merged_extensions'] = array('~~expire~~' => time() + 600);
-
-    if (fetchRemote(PHPWG_URL.'/download/merged_extensions.txt', $result))
-    {
-      $rows = explode("\n", $result);
-      foreach ($rows as $row)
-      {
-        if (preg_match('/^(\d+\.\d+): *(.*)$/', $row, $match))
-        {
-          if (version_compare($version, $match[1], '>='))
-          {
-            $extensions = explode(',', trim($match[2]));
-            $_SESSION['merged_extensions'] = array_merge($_SESSION['merged_extensions'], $extensions);
-          }
-        }
-      }
-    }
-
-    return $_SESSION['merged_extensions'];
+    $file = PHPWG_ROOT_PATH.'install/obsolete_extensions.list';
+    $merged_extensions = array();
+
+    if (file_exists($file) and $obsolete_ext = file($file, FILE_IGNORE_NEW_LINES) and !empty($obsolete_ext))
+    {
+      foreach ($obsolete_ext as $ext)
+      {
+        if (preg_match('/^(\d+) ?: ?(.*?)$/', $ext, $matches))
+        {
+          $merged_extensions[$matches[1]] = $matches[2];
+        }
+      }
+    }
+    return $merged_extensions;
   }
   
Index: /branches/2.2/admin/plugins_list.php
===================================================================
--- /branches/2.2/admin/plugins_list.php	(revision 11042)
+++ /branches/2.2/admin/plugins_list.php	(revision 11043)
@@ -63,4 +63,18 @@
 $plugins->set_tabsheet($page['page']);
 
+//--------------------------------------------------------Incompatible Plugins
+if (isset($_GET['incompatible_plugins']))
+{
+  $incompatible_plugins = array();
+  foreach ($plugins->get_incompatible_plugins() as $plugin => $version)
+  {
+    if ($plugin == '~~expire~~') continue;
+    array_push($incompatible_plugins, $plugin);
+    
+  }
+  echo json_encode($incompatible_plugins);
+  exit;
+}
+
 // +-----------------------------------------------------------------------+
 // |                     start template output                             |
@@ -68,18 +82,19 @@
 
 $plugins->sort_fs_plugins('name');
-$plugins->get_merged_extensions();
-$plugins->get_incompatible_plugins();
+$merged_extensions = $plugins->get_merged_extensions();
+$incompatible_plugins = $plugins->get_incompatible_plugins();
 $merged_plugins = false;
 
 foreach($plugins->fs_plugins as $plugin_id => $fs_plugin)
 {
-  if (isset($_SESSION['incompatible_plugins'][$plugin_id])
-    and $fs_plugin['version'] != $_SESSION['incompatible_plugins'][$plugin_id])
+  if (isset($incompatible_plugins[$plugin_id])
+    and $fs_plugin['version'] != $incompatible_plugins[$plugin_id])
   {
     // Incompatible plugins must be reinitilized
-    $plugins->get_incompatible_plugins(true);
+    unset($_SESSION['incompatible_plugins']);
   }
 
   $tpl_plugin = array(
+    'ID' => $plugin_id,
     'NAME' => $fs_plugin['name'],
     'VISIT_URL' => $fs_plugin['uri'],
@@ -89,5 +104,4 @@
     'AUTHOR_URL' => @$fs_plugin['author uri'],
     'U_ACTION' => sprintf($action_url, $plugin_id),
-    'INCOMPATIBLE' => isset($_SESSION['incompatible_plugins'][$plugin_id]),
     );
 
@@ -101,5 +115,5 @@
   }
 
-  if (isset($fs_plugin['extension']) and in_array($fs_plugin['extension'], $_SESSION['merged_extensions']))
+  if (isset($fs_plugin['extension']) and isset($merged_extensions[$fs_plugin['extension']]))
   {
     switch($tpl_plugin['STATE'])
Index: /branches/2.2/admin/themes/default/template/plugins_list.tpl
===================================================================
--- /branches/2.2/admin/themes/default/template/plugins_list.tpl	(revision 11042)
+++ /branches/2.2/admin/themes/default/template/plugins_list.tpl	(revision 11043)
@@ -1,6 +1,5 @@
 {footer_script}
 var incompatible_msg = '{'WARNING! This plugin does not seem to be compatible with this version of Piwigo.'|@translate|@escape:'javascript'}';
-incompatible_msg += '\n';
-incompatible_msg += '{'Do you want to activate anyway?'|@translate|@escape:'javascript'}';
+var activate_msg = '\n{'Do you want to activate anyway?'|@translate|@escape:'javascript'}';
 
 {literal}
@@ -9,8 +8,18 @@
     return confirm(incompatible_msg);
   });
-  jQuery('.warning').tipTip({
-    'delay' : 0,
-    'fadeIn' : 200,
-    'fadeOut' : 200
+  jQuery.ajax({
+    method: 'GET',
+    url: 'admin.php',
+    data: { page: 'plugins_list', incompatible_plugins: true },
+    dataType: 'json',
+    success: function(data) {
+      for (i=0;i<data.length;i++) {
+        jQuery('#plugin_'+data[i]+' .pluginBoxNameCell')
+          .addClass('warning')
+          .attr('title', incompatible_msg)
+          .tipTip({'delay' : 0, 'fadeIn' : 200, 'fadeOut' : 200});
+        jQuery('#plugin_'+data[i]+' .activate').attr('onClick', 'return confirm(incompatible_msg + activate_msg);');
+      }
+    }  
   });
 });
@@ -45,8 +54,8 @@
   {foreach from=$plugins item=plugin name=plugins_loop}
     {if $plugin.STATE == $plugin_state}
-  <div class="pluginBox">
+  <div class="pluginBox" id="plugin_{$plugin.ID}">
     <table>
       <tr>
-        <td class="pluginBoxNameCell{if $plugin.INCOMPATIBLE} warning" title="{'WARNING! This plugin does not seem to be compatible with this version of Piwigo.'|@translate|@escape:'html'}{/if}">
+        <td class="pluginBoxNameCell">
           {$plugin.NAME}
         </td>
@@ -59,5 +68,5 @@
 
     {elseif $plugin_state == 'inactive'}
-          <a href="{$plugin.U_ACTION}&amp;action=activate" {if $plugin.INCOMPATIBLE}class="incompatible"{/if}>{'Activate'|@translate}</a>
+          <a href="{$plugin.U_ACTION}&amp;action=activate" class="activate">{'Activate'|@translate}</a>
           | <a href="{$plugin.U_ACTION}&amp;action=uninstall" onclick="return confirm('{'Are you sure?'|@translate|@escape:'javascript'}');">{'Uninstall'|@translate}</a>
 
Index: /branches/2.2/install/obsolete_extensions.list
===================================================================
--- /branches/2.2/install/obsolete_extensions.list	(revision 11043)
+++ /branches/2.2/install/obsolete_extensions.list	(revision 11043)
@@ -0,0 +1,5 @@
+411: pwg_images_addSimple
+396: albums
+449: Photos
+405: unTagged
+440: bulk_manager
