diff options
Diffstat (limited to 'view/theme/redbasic/tpl/admin_plugins.tpl')
-rwxr-xr-x | view/theme/redbasic/tpl/admin_plugins.tpl | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/view/theme/redbasic/tpl/admin_plugins.tpl b/view/theme/redbasic/tpl/admin_plugins.tpl new file mode 100755 index 000000000..fd5ae7d5e --- /dev/null +++ b/view/theme/redbasic/tpl/admin_plugins.tpl @@ -0,0 +1,190 @@ +<div class="generic-content-wrapper"> + <div class="section-title-wrapper"> + {{if $allowManageRepos}} + <div class="pull-right"> + <button class="btn btn-success btn-sm" onclick="openClose('form');">{{$managerepos}}</button> + </div> + {{/if}} + <h2 id="title">{{$title}} - {{$page}}</h2> + <div class="clear"></div> + </div> + <div id="form" class="section-content-tools-wrapper"{{if !$expandform}} style="display:none;"{{/if}}> + + <div class="clear"></div> + <div class="section-title-wrapper" style="margin-top: 20px;"> + <h2>{{$installedtitle}}</h2> + <div class="clear"></div> + </div> + <div class="table-responsive section-content-tools-wrapper"> + <table class="table table-responsive table-striped table-hover"> + {{foreach $addonrepos as $repo}} + <tr> + <td style="width: 70%;"> + <span class="pull-left">{{$repo.name}}</span><span id="update-message-{{$repo.name}}" style="margin-left: 20px;"></span> + </td> + <td style="width: 15%;"> + <button class="btn btn-sm btn-primary pull-right" style="margin-left: 10px; margin-right: 10px;" onclick="updateAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-download'></i> {{$repoUpdateButton}}</button> + </td> + <td style="width: 15%;"> + <button class="btn btn-sm btn-danger pull-right" style="margin-left: 10px; margin-right: 0px;" onclick="removeAddonRepo('{{$repo.name}}'); return false;"><i class='fa fa-trash-o'></i> {{$repoRemoveButton}}</button> + </td> + <div class="clear"></div> + </td></tr> + {{/foreach}} + </table> + </div> + <div class="clear"></div> + <div class="section-title-wrapper"> + <h2>{{$addnewrepotitle}}</h2> + <div class="clear"></div> + </div> + {{$form}} + </div> + <div class="clear"></div> + <div id="chat-rotator-wrapper" class="center-block"> + <div id="chat-rotator"></div> + </div> + <div class="clear"></div> + <div class="section-content-wrapper-np"> + {{foreach $plugins as $p}} + <div class="section-content-tools-wrapper" id="pluginslist"> + <div class="contact-info plugin {{$p.1}}"> + {{if ! $p.2.disabled}} + <a class='toggleplugin' href='{{$baseurl}}/admin/{{$function}}/{{$p.0}}?a=t&t={{$form_security_token}}' title="{{if $p.1==on}}Disable{{else}}Enable{{/if}}" ><i class='fa {{if $p.1==on}}fa-check-square-o{{else}}fa-square-o{{/if}} admin-icons'></i></a> + {{else}} + <i class='fa fa-stop admin-icons'></i> + {{/if}} + <a href='{{$baseurl}}/admin/{{$function}}/{{$p.0}}'><span class='name'>{{$p.2.name}}</span></a> - <span class="version">{{$p.2.version}}</span>{{if $p.2.disabled}} {{$disabled}}{{/if}} + {{if $p.2.experimental}} {{$experimental}} {{/if}}{{if $p.2.unsupported}} {{$unsupported}} {{/if}} + + <div class='desc'>{{$p.2.description}}</div> + </div> + </div> + {{/foreach}} + + </div> +</div> +{{$newRepoModal}} +<script> + + // TODO: Implement a simple interface controller that reconfigures the modal dialog + // for each action in a more organized way + + function adminPluginsAddRepo() { + $("#generic-modal-ok-{{$newRepoModalID}}").removeClass('btn-success'); + $("#generic-modal-ok-{{$newRepoModalID}}").addClass('btn-primary'); + var repoURL = $('#id_repoURL').val(); + var repoName = $('#id_repoName').val(); + $('#chat-rotator').spin('tiny'); + $.post( + "/admin/plugins/addrepo", {repoURL: repoURL, repoName: repoName}, + function(response) { + $('#chat-rotator').spin(false); + if (response.success) { + var modalBody = $('#generic-modal-body-{{$newRepoModalID}}'); + modalBody.html('<div>'+response.repo.readme+'</div>'); + modalBody.append('<h2>Repo Info</h2><p>Message: ' + response.message + '</p>'); + modalBody.append('<h4>Branches</h4><p>'+JSON.stringify(response.repo.branches)+'</p>'); + modalBody.append('<h4>Remotes</h4><p>'+JSON.stringify(response.repo.remote)+'</p>'); + $('.modal-dialog').width('80%'); + $("#generic-modal-ok-{{$newRepoModalID}}").off('click'); + $("#generic-modal-ok-{{$newRepoModalID}}").click(function () { + installAddonRepo(); + }); + $('#generic-modal-{{$newRepoModalID}}').modal(); + } else { + window.console.log('Error adding repo :' + response['message']); + } + return false; + }, + 'json'); + } + + function installAddonRepo() { + var repoURL = $('#id_repoURL').val(); + var repoName = $('#id_repoName').val(); + $.post( + "/admin/plugins/installrepo", {repoURL: repoURL, repoName: repoName}, + function(response) { + if (response.success) { + $('#generic-modal-title-{{$newRepoModalID}}').html('Addon repo installed'); + var modalBody = $('#generic-modal-body-{{$newRepoModalID}}'); + modalBody.html('<h2>Repo Info</h2><p>Message: ' + response.message + '</p>'); + modalBody.append('<h4>Branches</h4><p>'+JSON.stringify(response.repo.branches)+'</p>'); + modalBody.append('<h4>Remotes</h4><p>'+JSON.stringify(response.repo.remote)+'</p>'); + $('.modal-dialog').width('80%'); + //$("#generic-modal-cancel-{{$newRepoModalID}}").hide(); + $("#generic-modal-ok-{{$newRepoModalID}}").html('OK'); + $("#generic-modal-ok-{{$newRepoModalID}}").removeClass('btn-primary'); + $("#generic-modal-ok-{{$newRepoModalID}}").addClass('btn-success'); + $("#generic-modal-ok-{{$newRepoModalID}}").off('click'); + $("#generic-modal-ok-{{$newRepoModalID}}").click(function () { + $('#generic-modal-{{$newRepoModalID}}').modal('hide'); + if(confirm('Repo installed. Click OK to refresh page.')) { + location.reload(); + } + }); + $('#generic-modal-{{$newRepoModalID}}').modal(); + + } else { + window.console.log('Error installing repo :' + response['message']); + alert('Error installing addon repo!'); + } + return false; + }, + 'json'); + } + function updateAddonRepo(repoName) { + 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('Addon repo updated.'); + $('#update-message-' + repoName).css('background-color', 'yellow'); + $('#update-message-' + repoName).html('Repo updated!'); + setTimeout(function () { + $('#update-message-' + repoName).html(''); + }, 60000); + } else { + window.console.log('Error updating repo :' + response['message']); + //alert('Error updating addon repo!'); + $('#update-message-' + repoName).css('background-color', 'red'); + $('#update-message-' + repoName).html('Error updating repo!'); + setTimeout(function () { + $('#update-message-' + repoName).html(''); + }, 60000); + } + return false; + }, + 'json'); + } + } + function switchAddonRepoBranch(repoName) { + window.console.log('switchAddonRepoBranch: ' + repoName); + // TODO: Discover the available branches and create an interface to switch between them + } + + function removeAddonRepo(repoName) { + // 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']); + if(confirm('Repo deleted. Click OK to refresh page.')) { + location.reload(); + } + } else { + window.console.log('Error removing repo :' + response['message']); + alert('Error removing addon repo!'); + } + return false; + }, + 'json'); + } + } + +</script>
\ No newline at end of file |