index.phtml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. declare(strict_types=1);
  3. /** @var FreshRSS_View $this */
  4. $this->partial('aside_configure');
  5. ?>
  6. <main class="post">
  7. <div class="link-back-wrapper">
  8. <a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
  9. </div>
  10. <h1><?= _t('admin.extensions.title') ?></h1>
  11. <form id="form-extension" method="post">
  12. <input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
  13. <?php if (!empty($this->extension_list['system'])) { ?>
  14. <h2><?= _t('admin.extensions.system') ?></h2>
  15. <ul class="manage-list">
  16. <?php
  17. foreach ($this->extension_list['system'] as $ext) {
  18. $this->ext_details = $ext; ?>
  19. <li>
  20. <?php $this->renderHelper('extension/details'); ?>
  21. </li>
  22. <?php } ?>
  23. </ul>
  24. <?php } ?>
  25. <?php if (!empty($this->extension_list['user'])) { ?>
  26. <h2><?= _t('admin.extensions.user') ?></h2>
  27. <ul class="manage-list">
  28. <?php
  29. foreach ($this->extension_list['user'] as $ext) {
  30. $this->ext_details = $ext; ?>
  31. <li>
  32. <?php $this->renderHelper('extension/details'); ?>
  33. </li>
  34. <?php } ?>
  35. </ul>
  36. <?php }
  37. if (empty($this->extension_list['system']) && empty($this->extension_list['user'])) {
  38. ?>
  39. <p class="alert alert-warn"><?= _t('admin.extensions.empty_list') ?></p>
  40. <?php } ?>
  41. </form>
  42. <?php if (!empty($this->available_extensions)) { ?>
  43. <h2><?= _t('admin.extensions.community') ?></h2>
  44. <div class="table-wrapper scrollbar-thin">
  45. <table>
  46. <tr>
  47. <th><?= _t('admin.extensions.name') ?></th>
  48. <th><?= _t('admin.extensions.version') ?></th>
  49. <th><?= _t('admin.extensions.author') ?></th>
  50. <th><?= _t('admin.extensions.description') ?></th>
  51. </tr>
  52. <?php foreach ($this->available_extensions as $ext) { ?>
  53. <tr>
  54. <td><a href="<?= $ext['url'] ?>" target="_blank"><?= $ext['name'] ?></a></td>
  55. <td><?= $ext['version'] ?></td>
  56. <td><?= $ext['author'] ?></td>
  57. <td>
  58. <?= $ext['description'] ?>
  59. <?php if (isset($this->extensions_installed[$ext['entrypoint']])) { ?>
  60. <?php if (version_compare(strval($this->extensions_installed[$ext['entrypoint']]), strval($ext['version'])) >= 0) { ?>
  61. <span class="alert alert-success">
  62. <?= _t('admin.extensions.latest') ?>
  63. </span>
  64. <?php } elseif (strval($this->extensions_installed[$ext['entrypoint']]) !== strval($ext['version'])) { ?>
  65. <span class="alert alert-warn">
  66. <?= _t('admin.extensions.update') ?>
  67. </span>
  68. <?php } ?>
  69. <?php } ?>
  70. </td>
  71. </tr>
  72. <?php } ?>
  73. </table>
  74. </div>
  75. <?php } ?>
  76. </main>
  77. <?php $class = isset($this->extension) ? ' active' : ''; ?>
  78. <?php $closelink = isset($this->extension) ? _url('extension', 'index') : ''; ?>
  79. <aside id="slider">
  80. <a class="toggle_aside" href="<?= $closelink ?>#close"><img class="icon" src="../themes/icons/close.svg" loading="lazy" alt="❌"></a>
  81. <div id="slider-content">
  82. <?php
  83. if (isset($this->extension)) {
  84. $this->renderHelper('extension/configure');
  85. }
  86. ?>
  87. </div>
  88. </aside>
  89. <a href="#" id="close-slider">
  90. <?= _i('close') ?>
  91. </a>