@@ -18,6 +18,7 @@ class Books extends React.Component {
1818 show : true ,
1919 loader : false ,
2020 isDuplicate : false ,
21+ isEnglish : true ,
2122 IATitle : "" ,
2223 IAIdentifier : "" ,
2324 inputDisabled : false ,
@@ -34,6 +35,7 @@ class Books extends React.Component {
3435 option : event . target . value ,
3536 bookid : "" ,
3637 isDuplicate : false ,
38+ isEnglish : true ,
3739 IATitle : "" ,
3840 IAIdentifier : "" ,
3941 inputDisabled : false ,
@@ -95,6 +97,7 @@ class Books extends React.Component {
9597 onResetButtonClicked = ( ) => {
9698 this . setState ( {
9799 isDuplicate : false ,
100+ isEnglish : true ,
98101 inputDisabled : false ,
99102 IATitle : "" ,
100103 IAIdentifier : "" ,
@@ -202,9 +205,11 @@ class Books extends React.Component {
202205 this . setState ( {
203206 loader : true ,
204207 isDuplicate : false ,
208+ isEnglish : true ,
205209 } ) ;
206210
207211 let url = "" ;
212+ var isValidEnglishChar = / ^ [ a - z A - Z 0 - 9 ! @ # $ % ^ & * ( ) _ + { } \[ \] : ; < > , . ? ~ \\ / - \s ] + $ / ;
208213 switch ( this . state . option ) {
209214 case "gb" :
210215 url = `${ host } /check?bookid=${ this . state . bookid } &option=${
@@ -223,6 +228,12 @@ class Books extends React.Component {
223228 IATitle : response . titleInIA ,
224229 inputDisabled : true ,
225230 } ) ;
231+ } else if ( ! isValidEnglishChar . test ( response . IAIdentifier ) ) {
232+ this . setState ( {
233+ isEnglish : false ,
234+ IATitle : response . IAIdentifier ,
235+ inputDisabled : true ,
236+ } ) ;
226237 } else {
227238 if ( response . error ) {
228239 Swal ( "Error!" , response . message , "error" ) ;
@@ -314,6 +325,12 @@ class Books extends React.Component {
314325 IATitle : response . titleInIA ,
315326 inputDisabled : true ,
316327 } ) ;
328+ } else if ( ! isValidEnglishChar . test ( response . IAIdentifier ) ) {
329+ this . setState ( {
330+ isEnglish : false ,
331+ IATitle : response . IAIdentifier ,
332+ inputDisabled : true ,
333+ } ) ;
317334 } else {
318335 if ( response . error ) Swal ( "Error!" , response . message , "error" ) ;
319336 else Swal ( "Voila!" , response . message , "success" ) ;
@@ -344,6 +361,12 @@ class Books extends React.Component {
344361 IATitle : response . titleInIA ,
345362 inputDisabled : true ,
346363 } ) ;
364+ } else if ( ! isValidEnglishChar . test ( response . IAIdentifier ) ) {
365+ this . setState ( {
366+ isEnglish : false ,
367+ IATitle : response . IAIdentifier ,
368+ inputDisabled : true ,
369+ } ) ;
347370 } else {
348371 if ( response . error ) Swal ( "Error!" , response . message , "error" ) ;
349372 else Swal ( "Voila!" , response . message , "success" ) ;
@@ -411,6 +434,38 @@ class Books extends React.Component {
411434 </ div >
412435 </ div >
413436 ) : null }
437+ { ! this . state . isEnglish ? (
438+ < div
439+ class = "cdx-message cdx-message--block cdx-message--warning"
440+ aria-live = "polite"
441+ style = { { marginTop : "20px" , display : "inline-block" } }
442+ >
443+ < span class = "cdx-message__icon" > </ span >
444+ < div class = "cdx-message__content" >
445+ The file you wish to upload has a non-english identifier -
446+ { this . state . IATitle } which may cause problems when uploading
447+ to internet archive. Please enter a valid English identifier
448+ to proceed.
449+ < div className = "cdx-text-input input-group" >
450+ < span className = "input-group-addon helper" id = "bid" >
451+ https://archive.org/details/
452+ </ span >
453+ < input
454+ className = "cdx-text-input__input"
455+ type = "text"
456+ id = "IAIdentifier"
457+ name = "IAIdentifier"
458+ onChange = { ( event ) =>
459+ this . setState ( { IAIdentifier : event . target . value } )
460+ }
461+ required
462+ placeholder = "Enter a valid English Identifier"
463+ />
464+ </ div >
465+ </ div >
466+ </ div >
467+ ) : null }
468+
414469 { session && (
415470 < div >
416471 < div style = { { marginTop : 20 , marginRight : 20 } } >
0 commit comments