aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--options/locale/locale_en-US.ini4
-rw-r--r--templates/repo/branch/list.tmpl36
-rw-r--r--web_src/js/index.js5
3 files changed, 45 insertions, 0 deletions
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index ab7367ba7a..d7d5abce1f 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -1977,6 +1977,10 @@ branch.restore = Restore Branch '%s'
branch.download = Download Branch '%s'
branch.included_desc = This branch is part of the default branch
branch.included = Included
+branch.create_new_branch = Create branch from branch:
+branch.confirm_create_branch = Create branch
+branch.new_branch = Create new branch
+branch.new_branch_from = Create new branch from '%s'
tag.create_tag = Create tag <strong>%s</strong>
tag.create_success = Tag '%s' has been created.
diff --git a/templates/repo/branch/list.tmpl b/templates/repo/branch/list.tmpl
index 3b678e2ce1..1e21863ee1 100644
--- a/templates/repo/branch/list.tmpl
+++ b/templates/repo/branch/list.tmpl
@@ -24,6 +24,11 @@
{{end}}
</td>
<td class="right aligned overflow-visible">
+ {{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted)}}
+ <div class="ui basic jump button icon poping up show-create-branch-modal" data-content="{{$.i18n.Tr "repo.branch.new_branch_from" ($.DefaultBranch)}}" data-variation="tiny inverted" data-branch-from="{{EscapePound $.DefaultBranch}}" data-modal="#create-branch-modal" data-position="top right">
+ {{svg "octicon-git-branch"}}
+ </div>
+ {{end}}
<div class="ui basic jump dropdown icon button poping up" data-content="{{$.i18n.Tr "repo.branch.download" ($.DefaultBranch)}}" data-variation="tiny inverted" data-position="top right">
{{svg "octicon-download"}}
<div class="menu">
@@ -102,6 +107,11 @@
{{end}}
</td>
<td class="two wide right aligned overflow-visible">
+ {{if and $.IsWriter (not $.Repository.IsArchived) (not .IsDeleted)}}
+ <div class="ui basic jump button icon poping up show-create-branch-modal" data-branch-from="{{EscapePound .Name}}" data-content="{{$.i18n.Tr "repo.branch.new_branch_from" .Name}}" data-variation="tiny inverted" data-position="top right" data-modal="#create-branch-modal" data-name="{{.Name}}">
+ {{svg "octicon-git-branch"}}
+ </div>
+ {{end}}
{{if (not .IsDeleted)}}
<div class="ui basic jump dropdown icon button poping up" data-content="{{$.i18n.Tr "repo.branch.download" (.Name)}}" data-variation="tiny inverted" data-position="top right">
{{svg "octicon-download"}}
@@ -142,4 +152,30 @@
</div>
{{template "base/delete_modal_actions" .}}
</div>
+
+<div class="ui small modal" id="create-branch-modal">
+ <div class="header">
+ {{.i18n.Tr "repo.branch.new_branch"}}
+ </div>
+ <div class="content">
+ <form class="ui form" id="create-branch-form" action="" data-base-action="{{.Link}}/_new/branch/" method="post">
+ {{.CsrfTokenHtml}}
+ <div class="field">
+ <label>
+ {{.i18n.Tr "repo.branch.create_new_branch"}}
+ <span class="text" id="modal-create-branch-from-span"></span>
+ </label>
+ </div>
+ <div class="required field">
+ <label for="new_branch_name">{{.i18n.Tr "repo.branch.name"}}</label>
+ <input id="new_branch_name" name="new_branch_name" required>
+ </div>
+
+ <div class="text right actions">
+ <div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
+ <button class="ui green button">{{.i18n.Tr "repo.branch.confirm_create_branch"}}</button>
+ </div>
+ </form>
+ </div>
+</div>
{{template "base/footer" .}}
diff --git a/web_src/js/index.js b/web_src/js/index.js
index c3d74b1395..5ba2662ea4 100644
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -2658,6 +2658,11 @@ $(document).ready(async () => {
$('.show-panel.button').on('click', function () {
$($(this).data('panel')).show();
});
+ $('.show-create-branch-modal.button').on('click', function () {
+ $('#create-branch-form')[0].action = $('#create-branch-form').data('base-action') + $(this).data('branch-from');
+ $('#modal-create-branch-from-span').text($(this).data('branch-from'));
+ $($(this).data('modal')).modal('show');
+ });
$('.show-modal.button').on('click', function () {
$($(this).data('modal')).modal('show');
});