THIS IS A TEST INSTANCE ONLY! REPOSITORIES CAN BE DELETED AT ANY TIME!

This is Gitea test Portainer repository mirror from Github
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

124 lines
5.5 KiB

  1. <rd-header>
  2. <rd-header-title title-text="Extensions"></rd-header-title>
  3. <rd-header-content>Portainer extensions</rd-header-content>
  4. </rd-header>
  5. <information-panel title-text="Information">
  6. <span class="text-muted" style="font-size: 90%;">
  7. <p>
  8. Portainer CE is a great way of managing clusters, provisioning containers and services and
  9. managing container environment lifecycles. To extend the benefit of Portainer CE even more,
  10. and to address the needs of larger, complex or critical environments, the Portainer
  11. team provides a growing range of low-cost Extensions.
  12. </p>
  13. <p>
  14. To ensure that Portainer remains the best choice for managing production container platforms,
  15. the Portainer team have chosen a modular, extensible design approach, where additional capability
  16. can be added to the Portainer CE core as needed, and at very low cost.
  17. </p>
  18. <p>
  19. Available through a simple subscription process from the list below, Portainer Extensions
  20. provide a simple way to enhance Portainer CE’s core functionality through incremental capability in important areas.
  21. </p>
  22. <p>
  23. For additional information on Portainer Extensions, see our website <a href="https://www.portainer.io/products-services/portainer-extension-software/" target="_blank">here</a>.
  24. </p>
  25. </span>
  26. </information-panel>
  27. <div class="row">
  28. <div class="col-sm-12">
  29. <rd-widget>
  30. <rd-widget-body>
  31. <form class="form-horizontal" name="extensionEnableForm">
  32. <div class="col-sm-12 form-section-title">
  33. Enable extension
  34. </div>
  35. <div class="form-group">
  36. <div class="col-sm-12">
  37. <p class="small text-muted" ng-if="!state.offlineActivation">
  38. Portainer will download the latest version of the extension. Ensure that you have a valid license.
  39. </p>
  40. <p class="small text-muted" ng-if="state.offlineActivation">
  41. You will need to upload the extension archive manually. Ensure that you have a valid license.
  42. </p>
  43. <p class="small text-muted" ng-if="state.offlineActivation">
  44. You can download the latest version of our extensions <a target="_blank" href="https://downloads.portainer.io/extensions.zip">here</a>.
  45. </p>
  46. <p>
  47. <a class="small interactive" ng-if="!state.offlineActivation" ng-click="state.offlineActivation = true;">
  48. <i class="fa fa-toggle-off space-right" aria-hidden="true"></i> Switch to offline activation
  49. </a>
  50. <a class="small interactive" ng-if="state.offlineActivation" ng-click="state.offlineActivation = false;">
  51. <i class="fa fa-wifi space-right" aria-hidden="true"></i> Switch to online activation
  52. </a>
  53. </p>
  54. </div>
  55. </div>
  56. <div class="form-group">
  57. <label for="extension_license" class="col-sm-2 control-label text-left">License</label>
  58. <div class="col-sm-10">
  59. <input type="text" name="extension_license" class="form-control" ng-model="formValues.License" ng-change="isValidLicenseFormat(extensionEnableForm)" required placeholder="Enter a license key here">
  60. </div>
  61. </div>
  62. <div class="form-group" ng-show="extensionEnableForm.extension_license.$invalid">
  63. <div class="col-sm-12 small text-warning">
  64. <div ng-messages="extensionEnableForm.extension_license.$error">
  65. <p ng-message="required"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> This field is required.</p>
  66. <p ng-message="invalidLicense"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> Invalid license format.</p>
  67. </div>
  68. </div>
  69. </div>
  70. <div class="form-group" ng-if="state.offlineActivation">
  71. <div class="col-sm-12">
  72. <button type="button" class="btn btn-primary btn-sm" ngf-select ng-model="formValues.ExtensionFile" style="margin-left: 0px;">Select file</button>
  73. <span style="margin-left: 5px;">
  74. {{ formValues.ExtensionFile.name }}
  75. <i class="fa fa-times red-icon" ng-if="!formValues.ExtensionFile" aria-hidden="true"></i>
  76. </span>
  77. </div>
  78. </div>
  79. <div class="form-group">
  80. <div class="col-sm-12">
  81. <button type="button" class="btn btn-primary btn-sm" ng-click="enableExtension()" ng-disabled="state.actionInProgress || !extensionEnableForm.$valid || (state.offlineActivation && !formValues.ExtensionFile)" button-spinner="state.actionInProgress" style="margin-left: 0px;">
  82. <span ng-hide="state.actionInProgress">Enable extension</span>
  83. <span ng-show="state.actionInProgress">Enabling extension...</span>
  84. </button>
  85. </div>
  86. </div>
  87. </form>
  88. </rd-widget-body>
  89. </rd-widget>
  90. </div>
  91. </div>
  92. <div class="row" ng-if="extensions && extensions.length > 0">
  93. <div class="col-sm-12">
  94. <extension-list
  95. current-date="state.currentDate"
  96. extensions="extensions"
  97. ></extension-list>
  98. </div>
  99. </div>
  100. <information-panel title-text="Error" ng-if="extensions && extensions.length === 0">
  101. <span class="small text-muted">
  102. <p>
  103. <i class="fa fa-exclamation-triangle orange-icon" aria-hidden="true"></i>
  104. Portainer must be connected to the Internet to fetch the list of available extensions.
  105. </p>
  106. </span>
  107. </information-panel>