From 13efdf6aa7d8c957f5898726725f2e2ed5c61a59 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind1991@gmail.com>
Date: Mon, 18 Oct 2010 20:58:51 +0000
Subject: [PATCH] plugin manager

---
 inc/templates/pluginform.php | 77 ++++++++++++++++++++++++++++++++++++
 js/lib_ajax.js               |  2 +-
 2 files changed, 78 insertions(+), 1 deletion(-)
 create mode 100644 inc/templates/pluginform.php

diff --git a/inc/templates/pluginform.php b/inc/templates/pluginform.php
new file mode 100644
index 0000000000..dccc74dae8
--- /dev/null
+++ b/inc/templates/pluginform.php
@@ -0,0 +1,77 @@
+<?php
+$action=$WEBROOT.'/settings/#plugin_managment';
+if(isset($_POST['plugin_disable_id'])){
+	$id=$_POST['plugin_disable_id'];
+	$disable=$_POST['plugin_disable'];
+	if($disable=='true'){
+		OC_PLUGIN::addToBlacklist($id);
+	}else{
+		OC_PLUGIN::removeFromBlacklist($id);
+	}
+	header('location: '.$action);
+	die();
+}
+
+if(isset($_POST['install_plugin']) and $_POST['install_plugin']=='true'){
+	$file=$_FILES['plugin_file']['tmp_name'];
+	OC_PLUGIN::installPlugin($file);
+	header('location: '.$action);
+	die();
+}
+$plugins=OC_PLUGIN::listPlugins();
+$blacklist=OC_PLUGIN::loadBlackList();
+?>
+<script type="text/javascript">
+<?php
+	echo('var plugins='.json_encode($plugins).";\n");
+	echo('var blacklist='.json_encode($blacklist).";\n");
+?>
+
+disablePlugin=function(id,disable){
+	var form=document.getElementById('disableForm');
+	var input=document.getElementById('plugin_disable_name');
+	input.value=id;
+	var input=document.getElementById('plugin_disable');
+	input.value=disable;
+	form.submit();
+}
+</script>
+<p class='description'>Plugin List</p>
+<form id='disableForm' action='<?php echo($action);?>' method="post" enctype="multipart/form-data">
+<input id='plugin_disable_name' type='hidden' name='plugin_disable_id' value=''/>
+<input id='plugin_disable' type='hidden' name='plugin_disable' value=''/>
+</form>
+<table class='pluginlist'>
+	<thead>
+		<tr>
+			<td colspan='2'>Id</td>
+			<td>Version</td>
+			<td>Description</td>
+			<td>Author</td>
+		</tr>
+	</thead>
+	<tbody>
+		<?php
+		foreach($plugins as $plugin){
+			$pluginData=OC_PLUGIN::getPluginData($plugin);
+			$enabled=(array_search($plugin,$blacklist)===false);
+			$enabledString=($enabled)?'enabled':'disabled';
+			$enabledStringOther=(!$enabled)?'enable':'disable';
+			$enabled=($enabled)?'true':'false';
+			echo("<tr class='$enabledString'>\n");
+			echo("<td class='name'>$plugin</td>");
+			echo("<td class='disable'>(<a href='$action' onclick='disablePlugin(\"$plugin\",$enabled)'>$enabledStringOther</a>)</td>");
+			echo("<td class='version'>{$pluginData['info']['version']}</td>");
+			echo("<td>{$pluginData['info']['name']}</td>");
+			echo("<td>{$pluginData['info']['author']}</td>");
+			echo("</tr>\n");
+		}
+		?>
+	</tbody>
+</table>
+<p class='description'>Install Plugin</p>
+<form action='<?php echo($action);?>' method="post" enctype="multipart/form-data">
+	<input class='formstyle' type='file' name='plugin_file'/>
+	<input type='hidden' name='install_plugin' value='true'/>
+	<input class='formstyle' type='submit'/>
+</form>
\ No newline at end of file
diff --git a/js/lib_ajax.js b/js/lib_ajax.js
index a76460632d..297f612252 100644
--- a/js/lib_ajax.js
+++ b/js/lib_ajax.js
@@ -67,7 +67,7 @@ OC_onload.run=function(){
         }
     }
     for(index in OC_onload.items){
-       if(OC_onload.items[index].call){
+       if(OC_onload.items[index]&&OC_onload.items[index].call){
            OC_onload.items[index].call();
        }
     }
-- 
GitLab