list_packages.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. <!-- Begin toolbar -->
  2. <div class="toolbar">
  3. <div class="toolbar-inner">
  4. <div class="toolbar-buttons">
  5. <a class="button button-secondary button-back js-button-back" href="/list/user/">
  6. <i class="fas fa-arrow-left icon-blue"></i><?= _("Back") ?>
  7. </a>
  8. <a href="/add/package/" class="button button-secondary js-button-create">
  9. <i class="fas fa-circle-plus icon-green"></i><?= _("Add Package") ?>
  10. </a>
  11. </div>
  12. <div class="toolbar-right">
  13. <div class="toolbar-sorting">
  14. <button class="toolbar-sorting-toggle js-toggle-sorting-menu" type="button" title="<?= _("Sort items") ?>">
  15. <?= _("Sort by") ?>:
  16. <span class="u-text-bold">
  17. <?php if ($_SESSION['userSortOrder'] === 'name') { $label = _('Name'); } else { $label = _('Date'); } ?>
  18. <?= $label ?> <i class="fas fa-arrow-down-a-z"></i>
  19. </span>
  20. </button>
  21. <ul class="toolbar-sorting-menu animate__animated animate__fadeIn js-sorting-menu u-hidden">
  22. <li data-entity="sort-date" data-sort-as-int="1">
  23. <span class="name <?php if ($_SESSION['userSortOrder'] === 'date') { echo 'active'; } ?>"><?= _("Date") ?> <i class="fas fa-arrow-down-a-z"></i></span><span class="up"><i class="fas fa-arrow-up-a-z"></i></span>
  24. </li>
  25. <li data-entity="sort-name">
  26. <span class="name <?php if ($_SESSION['userSortOrder'] === 'name') { echo 'active'; } ?>"><?= _("Name") ?> <i class="fas fa-arrow-down-a-z"></i></span><span class="up"><i class="fas fa-arrow-up-a-z"></i></span>
  27. </li>
  28. </ul>
  29. <form x-data x-bind="BulkEdit" action="/bulk/package/" method="post">
  30. <input type="hidden" name="token" value="<?= $_SESSION["token"] ?>">
  31. <select class="form-select" name="action">
  32. <option value=""><?= _("Apply to selected") ?></option>
  33. <option value="delete"><?= _("Delete") ?></option>
  34. </select>
  35. <button type="submit" class="toolbar-input-submit" title="<?= _("Apply to selected") ?>">
  36. <i class="fas fa-arrow-right"></i>
  37. </button>
  38. </form>
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. <!-- End toolbar -->
  44. <div class="container">
  45. <h1 class="u-text-center u-hide-desktop u-mt20 u-pr30 u-mb20 u-pl30"><?= _("Packages") ?></h1>
  46. <div class="units-table js-units-container">
  47. <div class="units-table-header">
  48. <div class="units-table-cell">
  49. <input type="checkbox" class="js-toggle-all-checkbox" title="<?= _("Select all") ?>">
  50. </div>
  51. <div class="units-table-cell"><?= _("Package") ?></div>
  52. <div class="units-table-cell"></div>
  53. <div class="units-table-cell u-text-center">
  54. <i class="fas fa-terminal" title="<?= _("Shell") ?>"></i>
  55. <span class="u-hidden-visually"><?= _("Shell") ?></span>
  56. </div>
  57. <div class="units-table-cell u-text-center">
  58. <i class="fas fa-hard-drive" title="<?= _("Quota") ?>"></i>
  59. <span class="u-hidden-visually"><?= _("Quota") ?></span>
  60. </div>
  61. <div class="units-table-cell u-text-center">
  62. <i class="fas fa-right-left" title="<?= _("Bandwidth") ?>"></i>
  63. <span class="u-hidden-visually"><?= _("Bandwidth") ?></span>
  64. </div>
  65. <div class="units-table-cell compact u-text-center">
  66. <i class="fas fa-earth-americas" title="<?= _("Web Domains") ?>"></i>
  67. <span class="u-hidden-visually"><?= _("Web Domains") ?></span>
  68. </div>
  69. <div class="units-table-cell compact u-text-center">
  70. <i class="fas fa-link" title="<?= _("Web Aliases") ?>"></i>
  71. <span class="u-hidden-visually"><?= _("Web Aliases") ?></span>
  72. </div>
  73. <div class="units-table-cell compact u-text-center">
  74. <i class="fas fa-book-atlas" title="<?= _("DNS Zones") ?>"></i>
  75. <span class="u-hidden-visually"><?= _("DNS Zones") ?></span>
  76. </div>
  77. <div class="units-table-cell compact u-text-center">
  78. <i class="fas fa-globe" title="<?= _("DNS Records") ?>"></i>
  79. <span class="u-hidden-visually"><?= _("DNS Records") ?></span>
  80. </div>
  81. <div class="units-table-cell compact u-text-center">
  82. <i class="fas fa-envelopes-bulk" title="<?= _("Mail Domains") ?>"></i>
  83. <span class="u-hidden-visually"><?= _("Mail Domains") ?></span>
  84. </div>
  85. <div class="units-table-cell compact u-text-center">
  86. <i class="fas fa-inbox" title="<?= _("Mail Accounts") ?>"></i>
  87. <span class="u-hidden-visually"><?= _("Mail Accounts") ?></span>
  88. </div>
  89. <div class="units-table-cell compact u-text-center">
  90. <i class="fas fa-database" title="<?= _("Databases") ?>"></i>
  91. <span class="u-hidden-visually"><?= _("Databases") ?></span>
  92. </div>
  93. <div class="units-table-cell compact u-text-center">
  94. <i class="fas fa-clock" title="<?= _("Cron Jobs") ?>"></i>
  95. <span class="u-hidden-visually"><?= _("Cron Jobs") ?></span>
  96. </div>
  97. <div class="units-table-cell compact u-text-center">
  98. <i class="fas fa-file-zipper" title="<?= _("Backups") ?>"></i>
  99. <span class="u-hidden-visually"><?= _("Backups") ?></span>
  100. </div>
  101. </div>
  102. <!-- Begin package list item loop -->
  103. <?php
  104. foreach ($data as $key => $value) {
  105. ++$i;
  106. ?>
  107. <div class="units-table-row animate__animated animate__fadeIn js-unit"
  108. data-sort-date="<?= strtotime($data[$key]["DATE"] . " " . $data[$key]["TIME"]) ?>"
  109. data-sort-name="<?= $key ?>"
  110. data-sort-bandwidth="<?= $data[$key]["BANDWIDTH"] ?>"
  111. data-sort-disk="<?= $data[$key]["DISK_QUOTA"] ?>">
  112. <div class="units-table-cell">
  113. <div>
  114. <input id="check<?= $i ?>" class="js-unit-checkbox" type="checkbox" title="<?= _("Select") ?>" name="package[]" value="<?= $key ?>">
  115. <label for="check<?= $i ?>" class="u-hide-desktop"><?= _("Select") ?></label>
  116. </div>
  117. </div>
  118. <div class="units-table-cell units-table-heading-cell u-text-bold">
  119. <span class="u-hide-desktop"><?= _("Package") ?>:</span>
  120. <?php if ($key == "system") { ?>
  121. <?= $key ?>
  122. <?php } else { ?>
  123. <a href="/edit/package/?package=<?= $key ?>&token=<?= $_SESSION["token"] ?>" title="<?= _("Edit Package") ?>: <?= $key ?>">
  124. <?= $key ?>
  125. </a>
  126. <?php } ?>
  127. </div>
  128. <div class="units-table-cell">
  129. <ul class="units-table-row-actions">
  130. <?php if ($key != "system") { ?>
  131. <li class="units-table-row-action shortcut-enter" data-key-action="href">
  132. <a
  133. class="units-table-row-action-link"
  134. href="/edit/package/?package=<?= $key ?>&token=<?= $_SESSION["token"] ?>"
  135. title="<?= _("Edit Package") ?>"
  136. >
  137. <i class="fas fa-pencil icon-orange"></i>
  138. <span class="u-hide-desktop"><?= _("Edit Package") ?></span>
  139. </a>
  140. </li>
  141. <?php } ?>
  142. <li class="units-table-row-action" data-key-action="href">
  143. <a
  144. class="units-table-row-action-link"
  145. href="/copy/package/?package=<?= $key ?>&token=<?= $_SESSION["token"] ?>"
  146. title="<?= _("Duplicate") ?>"
  147. >
  148. <i class="fas fa-clone icon-teal"></i>
  149. <span class="u-hide-desktop"><?= _("Duplicate") ?></span>
  150. </a>
  151. </li>
  152. <?php if ($key != "system") { ?>
  153. <li class="units-table-row-action shortcut-delete" data-key-action="js">
  154. <a
  155. class="units-table-row-action-link data-controls js-confirm-action"
  156. href="/delete/package/?package=<?= $key ?>&token=<?= $_SESSION["token"] ?>"
  157. title="<?= _("Delete") ?>"
  158. data-confirm-title="<?= _("Delete") ?>"
  159. data-confirm-message="<?= sprintf(_("Are you sure you want to delete package %s?"), $key) ?>"
  160. >
  161. <i class="fas fa-trash icon-red"></i>
  162. <span class="u-hide-desktop"><?= _("Delete") ?></span>
  163. </a>
  164. </li>
  165. <?php } ?>
  166. </ul>
  167. </div>
  168. <div class="units-table-cell u-text-center-desktop">
  169. <span class="u-hide-desktop u-text-bold"><?= _("Shell") ?>:</span>
  170. <?php if ($data[$key]["SHELL"] == "nologin") { ?>
  171. <i class="fas fa-circle-minus icon-large" title="<?= _("SSH Access") ?>: <?= $data[$key]["SHELL"] ?>"> </i>
  172. <?php } else { ?>
  173. <i class="fas fa-circle-check icon-green icon-large"></i>
  174. <?php } ?>
  175. </div>
  176. <div class="units-table-cell u-text-center-desktop">
  177. <span class="u-hide-desktop u-text-bold"><?= _("Quota") ?>:</span>
  178. <span title="<?= _("Quota") ?>: <?= humanize_usage_size($data[$key]["DISK_QUOTA"]) ?> <?= humanize_usage_measure($data[$key]["DISK_QUOTA"]) ?>">
  179. <?php if (preg_match("/[a-z]/i", $data[$key]["DISK_QUOTA"])): ?>
  180. <span class="u-text-bold">
  181. &infin;
  182. </span>
  183. <?php else: ?>
  184. <span class="u-text-bold">
  185. <?= humanize_usage_size($data[$key]["DISK_QUOTA"]) ?>
  186. </span>
  187. <span class="u-text-small">
  188. <?= humanize_usage_measure($data[$key]["DISK_QUOTA"]) ?>
  189. </span>
  190. <?php endif; ?>
  191. </span>
  192. </div>
  193. <div class="units-table-cell u-text-center-desktop">
  194. <span class="u-hide-desktop u-text-bold"><?= _("Bandwidth") ?>:</span>
  195. <span title="<?= _("Bandwidth") ?>: <?= humanize_usage_size($data[$key]["BANDWIDTH"]) ?> <?= humanize_usage_measure($data[$key]["BANDWIDTH"]) ?>">
  196. <?php if ($data[$key]["BANDWIDTH"] == "unlimited") { ?>
  197. <span class="u-text-bold">
  198. &infin;
  199. </span>
  200. <?php } else { ?>
  201. <span class="u-text-bold">
  202. <?= humanize_usage_size($data[$key]["BANDWIDTH"]) ?>
  203. </span>
  204. <span class="u-text-small">
  205. <?= humanize_usage_measure($data[$key]["BANDWIDTH"]) ?>
  206. </span>
  207. <?php } ?>
  208. </span>
  209. </div>
  210. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  211. <span class="u-hide-desktop"><?= _("Web Domains") ?>:</span>
  212. <span class="badge" title="<?= _("Web Domains") ?>: <?= $data[$key]["WEB_DOMAINS"] ?>">
  213. <?php if ($data[$key]["WEB_DOMAINS"] == "unlimited") { ?>
  214. &infin;
  215. <?php } else { ?>
  216. <?= $data[$key]["WEB_DOMAINS"] ?>
  217. <?php } ?>
  218. </span>
  219. </div>
  220. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  221. <span class="u-hide-desktop"><?= _("Web Aliases") ?>:</span>
  222. <span class="badge" title="<?= _("Web Aliases") ?>: <?= $data[$key]["WEB_ALIASES"] ?>">
  223. <?php if ($data[$key]["WEB_ALIASES"] == "unlimited") { ?>
  224. &infin;
  225. <?php } else { ?>
  226. <?= $data[$key]["WEB_ALIASES"] ?>
  227. <?php } ?>
  228. </span>
  229. </div>
  230. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  231. <span class="u-hide-desktop"><?= _("DNS Zones") ?>:</span>
  232. <span class="badge" title="<?= _("DNS Zones") ?>: <?= $data[$key]["DNS_DOMAINS"] ?>">
  233. <?php if ($data[$key]["DNS_DOMAINS"] == "unlimited") { ?>
  234. &infin;
  235. <?php } else { ?>
  236. <?= $data[$key]["DNS_DOMAINS"] ?>
  237. <?php } ?>
  238. </span>
  239. </div>
  240. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  241. <span class="u-hide-desktop"><?= _("DNS Records") ?>:</span>
  242. <span class="badge" title="<?= _("DNS Records") ?>: <?= $data[$key]["DNS_RECORDS"] ?>">
  243. <?php if ($data[$key]["DNS_RECORDS"] == "unlimited") { ?>
  244. &infin;
  245. <?php } else { ?>
  246. <?= $data[$key]["DNS_RECORDS"] ?>
  247. <?php } ?>
  248. </span>
  249. </div>
  250. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  251. <span class="u-hide-desktop"><?= _("Mail Domains") ?>:</span>
  252. <span class="badge" title="<?= _("Mail Domains") ?>: <?= $data[$key]["MAIL_DOMAINS"] ?>">
  253. <?php if ($data[$key]["MAIL_DOMAINS"] == "unlimited") { ?>
  254. &infin;
  255. <?php } else { ?>
  256. <?= $data[$key]["MAIL_DOMAINS"] ?>
  257. <?php } ?>
  258. </span>
  259. </div>
  260. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  261. <span class="u-hide-desktop"><?= _("Mail Accounts") ?>:</span>
  262. <span class="badge" title="<?= _("Mail Accounts") ?>: <?= $data[$key]["MAIL_ACCOUNTS"] ?>">
  263. <?php if ($data[$key]["MAIL_ACCOUNTS"] == "unlimited") { ?>
  264. &infin;
  265. <?php } else { ?>
  266. <?= $data[$key]["MAIL_ACCOUNTS"] ?>
  267. <?php } ?>
  268. </span>
  269. </div>
  270. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  271. <span class="u-hide-desktop"><?= _("Databases") ?>:</span>
  272. <span class="badge" title="<?= _("Databases") ?>: <?= $data[$key]["DATABASES"] ?>">
  273. <?php if ($data[$key]["DATABASES"] == "unlimited") { ?>
  274. &infin;
  275. <?php } else { ?>
  276. <?= $data[$key]["DATABASES"] ?>
  277. <?php } ?>
  278. </span>
  279. </div>
  280. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  281. <span class="u-hide-desktop"><?= _("Cron Jobs") ?>:</span>
  282. <span class="badge" title="<?= _("Cron Jobs") ?>: <?= $data[$key]["CRON_JOBS"] ?>">
  283. <?php if ($data[$key]["CRON_JOBS"] == "unlimited") { ?>
  284. &infin;
  285. <?php } else { ?>
  286. <?= $data[$key]["CRON_JOBS"] ?>
  287. <?php } ?>
  288. </span>
  289. </div>
  290. <div class="units-table-cell compact u-text-bold u-text-center-desktop">
  291. <span class="u-hide-desktop"><?= _("Backups") ?>:</span>
  292. <span class="badge" title="<?= _("Backups") ?>: <?= $data[$key]["BACKUPS"] ?>">
  293. <?php if ($data[$key]["BACKUPS"] == "unlimited") { ?>
  294. &infin;
  295. <?php } else { ?>
  296. <?= $data[$key]["BACKUPS"] ?>
  297. <?php } ?>
  298. </span>
  299. </div>
  300. </div>
  301. <?php } ?>
  302. </div>
  303. </div>
  304. <footer class="app-footer">
  305. <div class="container app-footer-inner">
  306. <p>
  307. <?php printf(ngettext("%d package", "%d packages", $i), $i); ?>
  308. </p>
  309. </div>
  310. </footer>