55//
66// *************************************
77//
8- // @param $element { jQuery object }
9- // @param className { string }
8+ // @param $element { jQuery object }
9+ // @param $comment { jQuery object }
10+ // @param $form { jQuery object }
11+ // @param $deleteBtn { jQuery object }
12+ // @param $editBtn { jQuery object }
13+ // @param $saveBtn { jQuery object }
14+ // @param $textarea { jQuery object }
15+ // @param hiddenClass { string }
16+ // @param storySlug { string }
17+ // @param token { string }
1018//
1119// *************************************
1220
@@ -24,13 +32,16 @@ JS.Modules.EditComment = (function() {
2432
2533 var init = function ( options ) {
2634 _settings = $ . extend ( {
27- $element : $ ( '.js-editComment' ) ,
28- $form : $ ( '.js-editComment-form' ) ,
29- $deleteBtn : $ ( '.js-editComment-deleteBtn' ) ,
30- $saveBtn : $ ( '.js-editComment-saveBtn' ) ,
31- $textarea : $ ( '.js-editComment-textarea' ) ,
32- storySlug : window . location . pathname . split ( '/' ) [ 2 ] ,
33- token : $ ( 'input[name="_csrf"]' ) . val ( )
35+ $element : $ ( '.js-editComment' ) ,
36+ $comment : $ ( '.js-editComment-comment' ) ,
37+ $form : $ ( '.js-editComment-form' ) ,
38+ $deleteBtn : $ ( '.js-editComment-deleteBtn' ) ,
39+ $editBtn : $ ( '.js-editComment-editBtn' ) ,
40+ $saveBtn : $ ( '.js-editComment-saveBtn' ) ,
41+ $textarea : $ ( '.js-editComment-textarea' ) ,
42+ hiddenClass : 'is-hidden' ,
43+ storySlug : window . location . pathname . split ( '/' ) [ 2 ] ,
44+ token : $ ( 'input[name="_csrf"]' ) . val ( )
3445 } , options ) ;
3546
3647 _setEventHandlers ( ) ;
@@ -54,10 +65,17 @@ JS.Modules.EditComment = (function() {
5465 _deleteComment ( $ ( this ) . closest ( _settings . $element ) ) ;
5566 } ) ;
5667
68+ // ----- Edit Button ----- //
69+
70+ _settings . $editBtn . on ( 'click' , function ( event ) {
71+ _toggleForm ( $ ( this ) . closest ( _settings . $element ) ) ;
72+ } ) ;
73+
5774 // ----- Save Button ----- //
5875
5976 _settings . $saveBtn . on ( 'click' , function ( event ) {
6077 _saveComment ( $ ( this ) . closest ( _settings . $element ) ) ;
78+ _toggleForm ( $ ( this ) . closest ( _settings . $element ) ) ;
6179 } ) ;
6280
6381 } ;
@@ -67,25 +85,27 @@ JS.Modules.EditComment = (function() {
6785 // -------------------------------------
6886
6987 var _deleteComment = function ( $element ) {
70- var id = $element . data ( 'id' ) ,
71- body = $element . find ( _settings . $textarea ) . val ( ) ;
88+ var id = $element . data ( 'id' ) ;
7289
7390 $ . ajax ( {
7491 beforeSend : function ( xhr ) { xhr . setRequestHeader ( 'csrf-token' , _settings . token ) ; } ,
7592 url : '/news/' + _settings . storySlug + '/comment/' + id ,
76- type : 'delete'
93+ type : 'delete' ,
94+ complete : function ( ) { $element . remove ( ) ; }
7795 } ) ;
78-
79- // Ajax to delete
8096 } ;
8197
8298 // -------------------------------------
8399 // Save Comment
84100 // -------------------------------------
85101
86102 var _saveComment = function ( $element ) {
87- var id = $element . data ( 'id' ) ,
88- body = $element . find ( _settings . $textarea ) . val ( ) ;
103+ var $comment = $element . find ( _settings . $comment ) ,
104+ $textarea = $element . find ( _settings . $textarea ) ,
105+ body = $textarea . val ( ) ,
106+ id = $element . data ( 'id' ) ;
107+
108+ $comment . text ( body ) ;
89109
90110 $ . ajax ( {
91111 beforeSend : function ( xhr ) { xhr . setRequestHeader ( 'csrf-token' , _settings . token ) ; } ,
@@ -95,6 +115,18 @@ JS.Modules.EditComment = (function() {
95115 } ) ;
96116 }
97117
118+ // ----- Toggle Form ----- //
119+
120+ var _toggleForm = function ( $element ) {
121+ var $comment = $element . find ( _settings . $comment ) ,
122+ $editBtn = $element . find ( _settings . $editBtn ) ,
123+ $form = $element . find ( _settings . $form ) ;
124+
125+ $comment . toggleClass ( _settings . hiddenClass ) ;
126+ $editBtn . toggleClass ( _settings . hiddenClass ) ;
127+ $form . toggleClass ( _settings . hiddenClass ) ;
128+ } ;
129+
98130 // -------------------------------------
99131 // Public Methods
100132 // -------------------------------------
0 commit comments