-
-
-
+
diff --git a/templates/org/team/repositories.tmpl b/templates/org/team/repositories.tmpl
index 9263caf48..83e238016 100644
--- a/templates/org/team/repositories.tmpl
+++ b/templates/org/team/repositories.tmpl
@@ -9,25 +9,19 @@
{{template "org/team/navbar" .}}
{{$canAddRemove := and $.IsOrganizationOwner (not $.Team.IncludesAllRepositories)}}
{{if $canAddRemove}}
-
-
-
-
-
-
{{.locale.Tr "org.teams.remove_all_repos_desc"}}
-
- {{template "base/modal_actions_confirm" .}}
-
-
-
-
-
-
{{.locale.Tr "org.teams.add_all_repos_desc"}}
-
- {{template "base/modal_actions_confirm" .}}
-
-
{{template "base/footer" .}}
diff --git a/templates/repo/branch/list.tmpl b/templates/repo/branch/list.tmpl
index 8617bcafa..d68feb43b 100644
--- a/templates/repo/branch/list.tmpl
+++ b/templates/repo/branch/list.tmpl
@@ -165,7 +165,7 @@
{{end}}
{{if and $.IsWriter (not $.IsMirror) (not $.Repository.IsArchived) (not .IsProtected)}}
{{if .IsDeleted}}
-
diff --git a/tests/integration/branches_test.go b/tests/integration/branches_test.go
index efb3798bd..99d7eef70 100644
--- a/tests/integration/branches_test.go
+++ b/tests/integration/branches_test.go
@@ -34,7 +34,7 @@ func TestDeleteBranch(t *testing.T) {
func TestUndoDeleteBranch(t *testing.T) {
onGiteaRun(t, func(t *testing.T, u *url.URL) {
deleteBranch(t)
- htmlDoc, name := branchAction(t, ".undo-button")
+ htmlDoc, name := branchAction(t, ".restore-branch-button")
assert.Contains(t,
htmlDoc.doc.Find(".ui.positive.message").Text(),
translation.NewLocale("en-US").Tr("repo.branch.restore_success", name),
diff --git a/web_src/css/org.css b/web_src/css/org.css
index 7b73d8e57..400f4fbbd 100644
--- a/web_src/css/org.css
+++ b/web_src/css/org.css
@@ -205,29 +205,6 @@
margin: 0;
}
-.organization.teams #add-repo-form input,
-.organization.teams #repo-multiple-form input,
-.organization.teams #add-member-form input {
- margin-left: 0;
-}
-
-.organization.teams #add-repo-form .ui.button,
-.organization.teams #repo-multiple-form .ui.button,
-.organization.teams #add-member-form .ui.button {
- margin-left: 5px;
- margin-top: -3px;
-}
-
-.organization.teams #repo-top-segment {
- height: 60px;
-}
-
-@media (max-width: 767.98px) {
- .organization.teams #repo-top-segment {
- height: 100px;
- }
-}
-
.org-team-navbar .active.item {
background: var(--color-box-body) !important;
}
diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js
index 46a80beb5..b1d3fa22d 100644
--- a/web_src/js/features/common-global.js
+++ b/web_src/js/features/common-global.js
@@ -8,7 +8,7 @@ import {svg} from '../svg.js';
import {hideElem, showElem, toggleElem} from '../utils/dom.js';
import {htmlEscape} from 'escape-goat';
-const {appUrl, csrfToken} = window.config;
+const {appUrl, csrfToken, i18n} = window.config;
export function initGlobalFormDirtyLeaveConfirm() {
// Warn users that try to leave a page after entering data into a form.
@@ -172,6 +172,62 @@ export function initGlobalDropzone() {
}
}
+function linkAction(e) {
+ e.preventDefault();
+
+ // A "link-action" can post AJAX request to its "data-url"
+ // Then the browser is redirect to: the "redirect" in response, or "data-redirect" attribute, or current URL by reloading.
+ // If the "link-action" has "data-modal-confirm(-html)" attribute, a confirm modal dialog will be shown before taking action.
+
+ const $this = $(e.target);
+ const redirect = $this.attr('data-redirect');
+
+ const request = () => {
+ $this.prop('disabled', true);
+ $.post($this.attr('data-url'), {
+ _csrf: csrfToken
+ }).done((data) => {
+ if (data && data.redirect) {
+ window.location.href = data.redirect;
+ } else if (redirect) {
+ window.location.href = redirect;
+ } else {
+ window.location.reload();
+ }
+ }).always(() => {
+ $this.prop('disabled', false);
+ });
+ };
+
+ const modalConfirmHtml = htmlEscape($this.attr('data-modal-confirm') || '');
+ if (!modalConfirmHtml) {
+ request();
+ return;
+ }
+
+ const okButtonColor = $this.hasClass('red') || $this.hasClass('yellow') || $this.hasClass('orange') || $this.hasClass('negative') ? 'orange' : 'green';
+
+ const $modal = $(`
+
+
${modalConfirmHtml}
+
+ ${svg('octicon-x')} ${i18n.modal_cancel}
+ ${svg('octicon-check')} ${i18n.modal_confirm}
+
+
+`);
+
+ $modal.appendTo(document.body);
+ $modal.modal({
+ onApprove() {
+ request();
+ },
+ onHidden() {
+ $modal.remove();
+ },
+ }).modal('show');
+}
+
export function initGlobalLinkActions() {
function showDeletePopup(e) {
e.preventDefault();
@@ -217,75 +273,9 @@ export function initGlobalLinkActions() {
}).modal('show');
}
- function showAddAllPopup(e) {
- e.preventDefault();
- const $this = $(this);
- let filter = '';
- if ($this.attr('data-modal-id')) {
- filter += `#${$this.attr('data-modal-id')}`;
- }
-
- const dialog = $(`.addall.modal${filter}`);
- dialog.find('.name').text($this.data('name'));
-
- dialog.modal({
- closable: false,
- onApprove() {
- if ($this.data('type') === 'form') {
- $($this.data('form')).trigger('submit');
- return;
- }
-
- $.post($this.data('url'), {
- _csrf: csrfToken,
- id: $this.data('id')
- }).done((data) => {
- window.location.href = data.redirect;
- });
- }
- }).modal('show');
- }
-
- function linkAction(e) {
- e.preventDefault();
- const $this = $(this);
- const redirect = $this.data('redirect');
- $this.prop('disabled', true);
- $.post($this.data('url'), {
- _csrf: csrfToken
- }).done((data) => {
- if (data.redirect) {
- window.location.href = data.redirect;
- } else if (redirect) {
- window.location.href = redirect;
- } else {
- window.location.reload();
- }
- }).always(() => {
- $this.prop('disabled', false);
- });
- }
-
// Helpers.
$('.delete-button').on('click', showDeletePopup);
$('.link-action').on('click', linkAction);
-
- // FIXME: this function is only used once, and not common, not well designed. should be refactored later
- $('.add-all-button').on('click', showAddAllPopup);
-
- // FIXME: this is only used once, and should be replace with `link-action` instead
- $('.undo-button').on('click', function () {
- const $this = $(this);
- $this.prop('disabled', true);
- $.post($this.data('url'), {
- _csrf: csrfToken,
- id: $this.data('id')
- }).done((data) => {
- window.location.href = data.redirect;
- }).always(() => {
- $this.prop('disabled', false);
- });
- });
}
export function initGlobalButtons() {
@@ -346,16 +336,6 @@ export function initGlobalButtons() {
initCompColorPicker();
}
});
-
- $('.delete-post.button').on('click', function (e) {
- e.preventDefault();
- const $this = $(this);
- $.post($this.attr('data-request-url'), {
- _csrf: csrfToken
- }).done(() => {
- window.location.href = $this.attr('data-done-url');
- });
- });
}
/**