@@ -16,6 +16,9 @@ module.exports = Mn.View.extend({
1616
1717 ui : {
1818 form : 'form' ,
19+ loader_content : '.loader-content' ,
20+ non_loader_content : '.non-loader-content' ,
21+ error_info : '#error-info' ,
1922 domain_names : 'input[name="domain_names"]' ,
2023 buttons : '.modal-footer button' ,
2124 cancel : 'button.cancel' ,
@@ -65,6 +68,7 @@ module.exports = Mn.View.extend({
6568
6669 'click @ui.save' : function ( e ) {
6770 e . preventDefault ( ) ;
71+ this . ui . error_info . hide ( ) ;
6872
6973 if ( ! this . ui . form [ 0 ] . checkValidity ( ) ) {
7074 $ ( '<input type="submit">' ) . hide ( ) . appendTo ( this . ui . form ) . click ( ) . remove ( ) ;
@@ -93,12 +97,16 @@ module.exports = Mn.View.extend({
9397 }
9498
9599 // Manipulate
96- if ( typeof data . meta !== 'undefined' && typeof data . meta . letsencrypt_agree !== 'undefined' ) {
97- data . meta . letsencrypt_agree = ! ! data . meta . letsencrypt_agree ;
98- }
100+ if ( typeof data . meta === 'undefined' ) data . meta = { } ;
101+ data . meta . letsencrypt_agree = data . meta . letsencrypt_agree == 1 ;
102+ data . meta . dns_challenge = data . meta . dns_challenge == 1 ;
99103
100- if ( typeof data . meta !== 'undefined' && typeof data . meta . dns_challenge !== 'undefined' ) {
101- data . meta . dns_challenge = ! ! data . meta . dns_challenge ;
104+ if ( ! data . meta . dns_challenge ) {
105+ data . meta . dns_provider = undefined ;
106+ data . meta . dns_provider_credentials = undefined ;
107+ data . meta . propagation_seconds = undefined ;
108+ } else {
109+ if ( data . meta . propagation_seconds === '' ) data . meta . propagation_seconds = undefined ;
102110 }
103111
104112 if ( typeof data . domain_names === 'string' && data . domain_names ) {
@@ -140,8 +148,8 @@ module.exports = Mn.View.extend({
140148 }
141149 }
142150
143- this . ui . buttons . prop ( 'disabled' , true ) . addClass ( 'btn-disabled' ) ;
144- this . ui . save . addClass ( 'btn-loading' ) ;
151+ this . ui . loader_content . show ( ) ;
152+ this . ui . non_loader_content . hide ( ) ;
145153
146154 // compile file data
147155 let form_data = new FormData ( ) ;
@@ -159,7 +167,8 @@ module.exports = Mn.View.extend({
159167 }
160168 } )
161169 . then ( ( ) => {
162- return App . Api . Nginx . Certificates . create ( data ) ;
170+ const timeout = 180000 + ( data . meta . propagation_seconds ? Number ( data . meta . propagation_seconds ) : 0 ) ;
171+ return App . Api . Nginx . Certificates . create ( data , timeout ) ;
163172 } )
164173 . then ( result => {
165174 view . model . set ( result ) ;
@@ -178,9 +187,16 @@ module.exports = Mn.View.extend({
178187 } ) ;
179188 } )
180189 . catch ( err => {
181- alert ( err . message ) ;
182- this . ui . buttons . prop ( 'disabled' , false ) . removeClass ( 'btn-disabled' ) ;
183- this . ui . save . removeClass ( 'btn-loading' ) ;
190+ try {
191+ const error_message = JSON . parse ( err . debug ) . debug . stack . join ( "\n" ) ;
192+ this . ui . error_info [ 0 ] . innerHTML = `<p>${ err . message } </p><pre>${ error_message } </pre>` ;
193+ } catch ( e ) {
194+ this . ui . error_info [ 0 ] . innerHTML = `<p>${ err . message } </p>` ;
195+ }
196+ this . ui . error_info . show ( ) ;
197+ this . ui . le_error_info [ 0 ] . scrollIntoView ( ) ;
198+ this . ui . loader_content . hide ( ) ;
199+ this . ui . non_loader_content . show ( ) ;
184200 } ) ;
185201 } ,
186202 'change @ui.other_certificate_key' : function ( e ) {
@@ -233,6 +249,8 @@ module.exports = Mn.View.extend({
233249 } ) ;
234250 this . ui . dns_challenge_content . hide ( ) ;
235251 this . ui . credentials_file_content . hide ( ) ;
252+ this . ui . loader_content . hide ( ) ;
253+ this . ui . error_info . hide ( ) ;
236254 } ,
237255
238256 initialize : function ( options ) {
0 commit comments