-									
-										
-									
+							
 							
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');
-    });
-  });
 }
 
 /**