@@ -8,16 +8,28 @@ jQuery(function () {
88 idCounter = v - 1 ;
99 } ) ;
1010
11+ function setChanged ( ) {
12+ $ ( this ) . closest ( ".edit-milestone" ) . addClass ( "changed" ) ;
13+ }
14+
15+ jQuery ( '#milestones-form .edit-milestone select,#milestones-form .edit-milestone input,#milestones-form .edit-milestone textarea' ) . live ( "change" , setChanged ) ;
16+ jQuery ( '#milestones-form .edit-milestone .token-input-list input' ) . live ( "click" , setChanged ) ;
17+
1118 function setSubmitButtonState ( ) {
1219 var action , label ;
1320 if ( jQuery ( "#milestones-form input[name$=delete]:visible" ) . length > 0 )
1421 action = "review" ;
1522 else
1623 action = "save" ;
1724
25+ jQuery ( "#milestones-form input[name=action]" ) . val ( action ) ;
26+
1827 var submit = jQuery ( "#milestones-form input[type=submit]" ) ;
1928 submit . val ( submit . data ( "label" + action ) ) ;
20- jQuery ( "#milestones-form input[name=action]" ) . val ( action ) ;
29+ if ( jQuery ( "#milestones-form .edit-milestone.changed" ) . length > 0 || action == "review" )
30+ submit . show ( ) ;
31+ else
32+ submit . hide ( ) ;
2133 }
2234
2335 jQuery ( "#milestones-form tr.milestone" ) . click ( function ( ) {
@@ -53,10 +65,18 @@ jQuery(function () {
5365 editRow . show ( ) ;
5466 }
5567
56- editRow . find ( 'input[name$="expanded_for_editing"]' ) . val ( "True" ) ;
5768 editRow . find ( 'input[name$="desc"]' ) . focus ( ) ;
5869
5970 setSubmitButtonState ( ) ;
71+
72+ // collapse unchanged rows
73+ jQuery ( "#milestones-form tr.milestone" ) . not ( this ) . each ( function ( ) {
74+ var e = jQuery ( this ) . next ( 'tr.edit-milestone' ) ;
75+ if ( e . is ( ":visible" ) && ! e . hasClass ( "changed" ) ) {
76+ jQuery ( this ) . show ( ) ;
77+ e . hide ( ) ;
78+ }
79+ } ) ;
6080 } ) ;
6181
6282 function setResolvedState ( ) {
@@ -83,18 +103,22 @@ jQuery(function () {
83103 . live ( "change" , setResolvedState ) ;
84104
85105 function setDeleteState ( ) {
86- var top = jQuery ( this ) . closest ( ".edit-milestone" ) ;
106+ var edit = jQuery ( this ) . closest ( ".edit-milestone" ) , row = edit . prev ( "tr. milestone") ;
87107
88108 if ( jQuery ( this ) . is ( ":checked" ) ) {
89- if ( + top . find ( 'input[name$="id"]' ) . val ( ) < 0 ) {
90- top . remove ( ) ;
109+ if ( + edit . find ( 'input[name$="id"]' ) . val ( ) < 0 ) {
110+ edit . remove ( ) ;
91111 setSubmitButtonState ( ) ;
92112 }
93- else
94- top . addClass ( "delete" )
113+ else {
114+ row . addClass ( "delete" ) ;
115+ edit . addClass ( "delete" ) ;
116+ }
117+ }
118+ else {
119+ row . removeClass ( "delete" ) ;
120+ edit . removeClass ( "delete" ) ;
95121 }
96- else
97- top . removeClass ( "delete" )
98122 }
99123
100124 jQuery ( "#milestones-form .edit-milestone .delete input[type=checkbox]" )
@@ -104,4 +128,6 @@ jQuery(function () {
104128 jQuery ( '#milestones-form .edit-milestone .errorlist' ) . each ( function ( ) {
105129 jQuery ( this ) . closest ( ".edit-milestone" ) . prev ( ) . click ( ) ;
106130 } ) ;
131+
132+ setSubmitButtonState ( ) ;
107133} ) ;
0 commit comments