From 148ff6e46eea77fec0c8f6bcfa5cf871979a4648 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Dec 03 2016 10:30:23 +0000 Subject: [PATCH 1/5] Fix button title in notification settings --- diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html index 071017f..986ba2d 100644 --- a/pagure/templates/settings.html +++ b/pagure/templates/settings.html @@ -310,7 +310,7 @@
From 83ba43fbeb0bd64d90488e25cd8ca7b53977355d Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Dec 03 2016 10:47:55 +0000 Subject: [PATCH 2/5] Fix displaying custom key type --- diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html index 986ba2d..25ad450 100644 --- a/pagure/templates/settings.html +++ b/pagure/templates/settings.html @@ -703,13 +703,13 @@
From d31c2da2c537b04c9dd78664642631720e3993ca Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Dec 03 2016 10:49:51 +0000 Subject: [PATCH 3/5] Add empty row if there are no objects If there are no priorities, milestones, custom fields or close statuses, automatically provide one empty field. This way user can start filling the form in without having to click the button first. --- diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html index 25ad450..ec360ef 100644 --- a/pagure/templates/settings.html +++ b/pagure/templates/settings.html @@ -514,7 +514,7 @@
- {% for priority in repo.priorities | sort %} + {% for priority in repo.priorities or [""] | sort %}
- {% for milestone in repo.milestones | sort %} + {% for milestone in repo.milestones or [""] | sort %}
- {% for status in repo.close_status | sort %} + {% for status in repo.close_status or [""] | sort %}
- {% for field in repo.issue_keys | sort %} + {% for field in repo.issue_keys or [dict(key_type="", name="")] | sort %}
- {% for quick_reply in repo.quick_replies %} + {% for quick_reply in repo.quick_replies or [""] %}
From 82cfe48a00ce2b612e77be51d3cf1c65ad594021 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Dec 03 2016 11:05:05 +0000 Subject: [PATCH 4/5] Remove duplicated HTML from Javascript Since we are now confident there is at least one row in each form, we can remove the duplicated markup and instead clone last row from respective form, reset the input fields in it add append it to the form. --- diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html index ec360ef..07bf37a 100644 --- a/pagure/templates/settings.html +++ b/pagure/templates/settings.html @@ -929,101 +929,49 @@ $('#accordions').on('hide.bs.collapse', function (e) { }) $('#new_priority').click(function(e) { - console.log('new priority'); - console.log($('#priorities')); - $('#priorities').append( - '
\ -
\ - \ -
\ -
\ - \ -
\ -
' - ); + let form = $('#priorities>div:last-child').clone(); + form.find('input[type=text], textarea').val(''); + $('#priorities').append(form); }); {% if not repo.priorities %} $('#default_priorities').click(function(e) { + let form = $('#priorities>div:last-child'); + form.find('input[type=text], textarea').val(''); $('#priorities').html(''); var def_priorities = ['', 'High', 'Normal', 'Low']; for (var cnt = 1; cnt < def_priorities.length; cnt++) { - $('#priorities').append( - '
\ -
\ - \ -
\ -
\ - \ -
\ -
' - ); + let f = form.clone(); + f.find("[name=priority_weigth]").val(cnt); + f.find("[name=priority_title]").val(def_priorities[cnt]); + $('#priorities').append(f); } console.log($('#priorities')); }); {% endif %} $('#new_milestone').click(function(e) { - console.log('new milestone'); - console.log($('#milestones')); - $('#milestones').append( - '
\ -
\ - \ -
\ -
\ - \ -
\ -
' - ); + let form = $('#milestones>div:last-child').clone(); + form.find('input[type=text], textarea').val(''); + $('#milestones').append(form); }); $('#new_close_status').click(function(e) { - console.log('new close status'); - $('#close_sstatus').append( - '
\ -
\ - \ -
\ -
' - ); + let form = $('#close_sstatus>div:last-child').clone(); + form.find('input[type=text], textarea').val(''); + $('#close_sstatus').append(form); }); $('#new_quick_reply').click(function(e) { - console.log('new quick reply'); - $('#quick_reply_list').append( - '
\ -
\ - \ -
\ -
' - ); + let form = $('#quick_reply_list>div:last-child').clone(); + form.find('input[type=text], textarea').val(''); + $('#quick_reply_list').append(form); }); $('#new_custom_field').click(function(e) { - console.log('new custom fields'); - $('#custom_fields').append( - '
\ -
\ - \ -
\ -
\ - \ -
\ -
' - ); + let form = $('#custom_fields>div:last-child').clone(); + form.find('input[type=text], textarea').val(''); + $('#custom_fields').append(form); }); From 08b372f2b4dfbe2101fdb51f06952d6a25bae950 Mon Sep 17 00:00:00 2001 From: Lubomír Sedlář Date: Dec 03 2016 11:07:04 +0000 Subject: [PATCH 5/5] Use common script for all extensible forms The snippet for each extensible form is identical except for the identifier of the block to extend. We can move this parameter to a data attribute and load if from there, allowing all forms to use a single block of code. --- diff --git a/pagure/templates/settings.html b/pagure/templates/settings.html index 07bf37a..db46a0c 100644 --- a/pagure/templates/settings.html +++ b/pagure/templates/settings.html @@ -529,7 +529,7 @@
@@ -598,7 +598,7 @@
@@ -652,7 +652,7 @@
@@ -718,7 +718,7 @@
@@ -829,7 +829,7 @@
@@ -928,12 +928,6 @@ $('#accordions').on('hide.bs.collapse', function (e) { $(e.target).siblings().find("#dropdowncaret").attr('data-glyph', "caret-right"); }) -$('#new_priority').click(function(e) { - let form = $('#priorities>div:last-child').clone(); - form.find('input[type=text], textarea').val(''); - $('#priorities').append(form); -}); - {% if not repo.priorities %} $('#default_priorities').click(function(e) { let form = $('#priorities>div:last-child'); @@ -950,28 +944,11 @@ $('#default_priorities').click(function(e) { }); {% endif %} -$('#new_milestone').click(function(e) { - let form = $('#milestones>div:last-child').clone(); - form.find('input[type=text], textarea').val(''); - $('#milestones').append(form); -}); - -$('#new_close_status').click(function(e) { - let form = $('#close_sstatus>div:last-child').clone(); - form.find('input[type=text], textarea').val(''); - $('#close_sstatus').append(form); -}); - -$('#new_quick_reply').click(function(e) { - let form = $('#quick_reply_list>div:last-child').clone(); - form.find('input[type=text], textarea').val(''); - $('#quick_reply_list').append(form); -}); - -$('#new_custom_field').click(function(e) { - let form = $('#custom_fields>div:last-child').clone(); +$('.extend-form').click(function(e) { + const tgt = $(this).attr('data-target'); + let form = $(tgt + ' > div:last-child').clone(); form.find('input[type=text], textarea').val(''); - $('#custom_fields').append(form); + $(tgt).append(form); });