aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Zotlabs/Module/Admin.php20
-rw-r--r--Zotlabs/Storage/GitRepo.php4
-rwxr-xr-xview/tpl/admin_plugins.tpl33
3 files changed, 47 insertions, 10 deletions
diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php
index 404585ccd..19b8a2e77 100644
--- a/Zotlabs/Module/Admin.php
+++ b/Zotlabs/Module/Admin.php
@@ -51,6 +51,10 @@ class Admin extends \Zotlabs\Web\Controller {
$this->admin_page_plugins_post('removerepo');
break;
}
+ if (argc() > 2 && argv(2) === 'updaterepo') {
+ $this->admin_page_plugins_post('updaterepo');
+ break;
+ }
if (argc() > 2 &&
is_file("addon/" . argv(2) . "/" . argv(2) . ".php")){
@include_once("addon/" . argv(2) . "/" . argv(2) . ".php");
@@ -1714,6 +1718,22 @@ class Admin extends \Zotlabs\Web\Controller {
function admin_page_plugins_post($action) {
switch($action) {
+ case 'updaterepo':
+ if(array_key_exists('repoName', $_REQUEST)) {
+ $repoName = $_REQUEST['repoName'];
+ } else {
+ json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
+ }
+ $repoDir = __DIR__ . '/../../store/git/sys/extend/addon/'.$repoName;
+ if(!is_dir($repoDir)) {
+ json_return_and_die(array('message' => 'Invalid addon repo.', 'success' => false));
+ }
+ $git = new GitRepo('sys', null, false, $repoName, $repoDir);
+ if($git->pull()) {
+ json_return_and_die(array('message' => 'Repo updated.', 'success' => true));
+ } else {
+ json_return_and_die(array('message' => 'Error updating addon repo.', 'success' => false));
+ }
case 'removerepo':
if(array_key_exists('repoName', $_REQUEST)) {
$repoName = $_REQUEST['repoName'];
diff --git a/Zotlabs/Storage/GitRepo.php b/Zotlabs/Storage/GitRepo.php
index 81356950b..ac53aefc4 100644
--- a/Zotlabs/Storage/GitRepo.php
+++ b/Zotlabs/Storage/GitRepo.php
@@ -82,7 +82,9 @@ class GitRepo {
}
}
}
-
+ public function pull() {
+ return $this->git->pull();
+ }
/**
* delete repository from disk
*/
diff --git a/view/tpl/admin_plugins.tpl b/view/tpl/admin_plugins.tpl
index 8ed5fd556..876681f9f 100755
--- a/view/tpl/admin_plugins.tpl
+++ b/view/tpl/admin_plugins.tpl
@@ -14,18 +14,19 @@
<div id="chat-rotator"></div>
</div>
<div class="clear"></div>
- <div class="section-content-wrapper">
- <h1>Installed Addon Repositories</h1>
+ <div class="section-content-info-wrapper">
+ <h3>Installed Addon Repositories</h3>
{{foreach $addonrepos as $repo}}
<div class="section-content-tools-wrapper">
<div>
- <h2>{{$repo.name}}</h2>
- <div class='desc'>{{$repo.description}}</div>
- <button class="btn btn-success" onclick="updateAddonRepo('{{$repo.name}}'); return false;">{{$repoUpdateButton}}</button>
- <button class="btn btn-primary" onclick="switchAddonRepoBranch('{{$repo.name}}'); return false;">{{$repoBranchButton}}</button>
- <button class="btn btn-danger" onclick="removeAddonRepo('{{$repo.name}}'); return false;">{{$repoRemoveButton}}</button>
+ <div class="pull-left">{{$repo.name}}</div>
+ <!--<button class="btn btn-xs btn-primary pull-right" onclick="switchAddonRepoBranch('{{$repo.name}}'); return false;">{{$repoBranchButton}}</button>-->
+ <button class="btn btn-xs btn-danger pull-right" onclick="removeAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-trash-o'></i>&nbsp;{{$repoRemoveButton}}</button>
+ &nbsp;
+ <button class="btn btn-xs btn-success pull-right" onclick="updateAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-download'></i>&nbsp;{{$repoUpdateButton}}</button>
</div>
</div>
+ <div class="clear"></div>
{{/foreach}}
</div>
<div class="section-content-wrapper-np">
@@ -110,6 +111,20 @@
function updateAddonRepo(repoName) {
window.console.log('updateAddonRep:; ' + repoName);
// TODO: Update an existing repo
+ if(confirm('Are you sure you want to update the addon repo ' + repoName + '?')) {
+ $.post(
+ "/admin/plugins/updaterepo", {repoName: repoName},
+ function(response) {
+ if (response.success) {
+ window.console.log('Addon repo'+repoName+'successfully updated :' + response['message']);
+ alert('Repo updated');
+ } else {
+ window.console.log('Error installing repo :' + response['message']);
+ }
+ return false;
+ },
+ 'json');
+ }
}
function switchAddonRepoBranch(repoName) {
window.console.log('switchAddonRepoBranch: ' + repoName);
@@ -117,20 +132,20 @@
}
function removeAddonRepo(repoName) {
window.console.log('removeAddonRepo: ' + repoName);
- // TODO: Unlink the addons and delete the addon repo
+ // TODO: Unlink the addons
if(confirm('Are you sure you want to remove the addon repo ' + repoName + '?')) {
$.post(
"/admin/plugins/removerepo", {repoName: repoName},
function(response) {
if (response.success) {
window.console.log('Addon repo'+repoName+'successfully removed :' + response['message']);
+ alert('Repo deleted');
} else {
window.console.log('Error installing repo :' + response['message']);
}
return false;
},
'json');
- //alert('Deleted');
}
}