Archived
Implements a Gitea integration for OpenProject following the same patterns as the bundled GitHub and GitLab integrations. - Webhook endpoint at /webhooks/gitea with HMAC-SHA256 verification - Handles pull_request and issue_comment events - Links Gitea PRs to work packages via OP# references or URLs - Posts journal comments on WPs for PR lifecycle events - Gitea tab on the work package split view - V3 API endpoint: GET /api/v3/work_packages/:id/gitea_pull_requests - Admin settings UI for bot user and webhook secret - Nightly cron job to clean up unlinked PR records
51 lines
1.4 KiB
HTML
51 lines
1.4 KiB
HTML
<div
|
|
class="op-pull-request--title"
|
|
[textContent]="pullRequest.title"
|
|
></div>
|
|
|
|
<span class="op-pull-request--state" [ngClass]="'op-pull-request--state_' + state">
|
|
{{ state }} |
|
|
<a
|
|
[ngClass]="'op-pull-request--link_' + state"
|
|
[href]="pullRequest.htmlUrl"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
[textContent]="pullRequest.repository + '#' + pullRequest.number"
|
|
></a>
|
|
</span>
|
|
|
|
@if (pullRequest.labels && pullRequest.labels.length > 0) {
|
|
<button (click)="toggleLabels(pullRequest.number)" class="op-pull-request--label_icon" title="Show/Hide labels">
|
|
Labels
|
|
</button>
|
|
}
|
|
|
|
<div class="op-pull-request--info_created">
|
|
{{ text.label_created_by }}
|
|
<span class="op-pull-request--user">
|
|
@if (pullRequest.giteaUser) {
|
|
<span
|
|
class="op-pull-request--username"
|
|
[textContent]="pullRequest.giteaUser.login"
|
|
></span>
|
|
}
|
|
</span>
|
|
<span class="op-pull-request--date">
|
|
{{ text.label_last_updated_on }}
|
|
<op-date-time [dateTimeValue]="pullRequest.gitea_updated_at" />
|
|
</span>.
|
|
</div>
|
|
|
|
<div
|
|
class="op-pull-request--labels"
|
|
[ngClass]="'op-pull-request--labels-' + pullRequest.number"
|
|
style="display: none;">
|
|
@for (label of pullRequest.labels; track label) {
|
|
<span>
|
|
<span class="op-pull-request--label" [ngStyle]="{'background-color': label.color}">
|
|
{{ label.name }}
|
|
</span>
|
|
</span>
|
|
}
|
|
</div>
|