| <!DOCTYPE html> | |
| <html ng-app="PluginManager"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>Gerrit Plugin Manager</title> | |
| <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"></script> | |
| <script src="js/plugin-manager.js"></script> | |
| <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script> | |
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&display=swap" rel="stylesheet"> | |
| <link href="../../../styles/fonts.css" rel="stylesheet"> | |
| <link href="css/intro.css" rel="stylesheet"> | |
| <link href="css/style.css" rel="stylesheet"> | |
| </head> | |
| <body ng-controller="LoadInstalledPlugins as plugins"> | |
| <header> | |
| <div class="header-container"> | |
| <div class="header-title">Gerrit</div> | |
| <input type="text" class="search-input" placeholder="Search for plugins..." ng-model="searchPlugin"> | |
| <button type="button" class="skip-btn" style="border: none; cursor: pointer;" ng-click="plugins.goToGerrit()"> | |
| Done » Go To Gerrit | |
| </button> | |
| </div> | |
| </header> | |
| <main> | |
| <div class="hero-section"> | |
| <div class="hero-header"> | |
| <img src="images/diffy-gerrit-code-review.png" alt="Gerrit Diffy" class="hero-image"> | |
| <h2 class="hero-title">Plugin Manager</h2> | |
| </div> | |
| </div> | |
| <div class="search-container"> | |
| <p class="hero-intro-text"> | |
| Browse, install, and keep your Gerrit Code Review environment up to date with the latest plugins built | |
| on <a href="https://gerrit-ci.gerritforge.com/plugin-manager/">Gerrit-CI</a>. | |
| </p> | |
| </div> | |
| <div class="features-section"> | |
| <!-- Plugin Feature Cards with dynamic border/shading via ng-class --> | |
| <div class="feature-card" | |
| ng-repeat="prop in plugins.list | filter:searchPlugin" | |
| ng-class="{ | |
| 'card-installable': prop.version == '' && prop.update_version != undefined, | |
| 'card-upgradable': prop.version != '' && prop.update_version != '' | |
| }"> | |
| <!-- Icon and Title Wrapper --> | |
| <div class="plugin-header"> | |
| <div class="plugin-icon-wrapper"> | |
| <!-- SVG Plug Icon --> | |
| <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" | |
| stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> | |
| <path d="M12 22v-5"/> | |
| <path d="M9 8V2"/> | |
| <path d="M15 8V2"/> | |
| <path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z"/> | |
| </svg> | |
| </div> | |
| <h3 class="feature-title">{{prop.id}}</h3> | |
| </div> | |
| <div class="version-info"> | |
| <span>Version: {{prop.version || 'Not installed'}}</span> | |
| <div ng-if="prop.update_version" class="update-info" | |
| ng-style="prop.version != '' ? {'color': '#f97316'} : {}"> | |
| <svg style="width: 14px; height: 14px; display: inline-block; vertical-align: middle; margin-right: 4px;" | |
| fill="none" stroke="currentColor" viewBox="0 0 24 24"> | |
| <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" | |
| d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"></path> | |
| </svg> | |
| Update available: {{prop.update_version}} | |
| </div> | |
| </div> | |
| <p class="feature-text">{{prop.description.split('.')[0]}}</p> | |
| <div class="feature-actions"> | |
| <!-- Status Labels --> | |
| <span id="installing-{{prop.id}}" class="status-label status-default hidden">Installing...</span> | |
| <span id="installed-{{prop.id}}" | |
| class="status-label status-success {{ (prop.version != '' && prop.update_version == '') ? '':'hidden' }}">Up to date</span> | |
| <span id="failed-{{prop.id}}" class="status-label status-warning hidden">Failed</span> | |
| <!-- Action Buttons --> | |
| <button id="install-{{prop.id}}" type="button" | |
| class="install-btn card-btn {{ (prop.version == '' && prop.update_version != undefined) ? '':'hidden' }}" | |
| ng-click="install(prop.id,prop.url)"> | |
| Install | |
| </button> | |
| <button id="upgrade-{{prop.id}}" type="button" | |
| class="install-btn card-btn {{ (prop.version != '' && prop.update_version != '') ? '':'hidden' }}" | |
| style="{{ (prop.version != '' && prop.update_version != '') ? 'background-color: #f97316; box-shadow: 0 4px 6px -1px rgba(249, 115, 22, 0.4);' : '' }}" | |
| onmouseover="this.style.backgroundColor='#ea580c'" | |
| onmouseout="this.style.backgroundColor='#f97316'" | |
| ng-click="install(prop.id,prop.url)"> | |
| Upgrade | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </main> | |
| <footer> | |
| <p class="footer-text"> | |
| Gerrit Code Review - Copyright © 2026 The Android Open Source Project - Licensed under the Apache License, | |
| Version 2.0. | |
| </p> | |
| </footer> | |
| </body> | |
| </html> |