diff options
-rw-r--r-- | Zotlabs/Module/Admin.php | 20 | ||||
-rw-r--r-- | Zotlabs/Storage/GitRepo.php | 4 | ||||
-rwxr-xr-x | view/tpl/admin_plugins.tpl | 33 |
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> {{$repoRemoveButton}}</button> + + <button class="btn btn-xs btn-success pull-right" onclick="updateAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-download'></i> {{$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'); } } |