Skip to content

Commit

Permalink
Merge branch 'validation' of https://github.com/jinankjain/PaperBadger
Browse files Browse the repository at this point in the history
…into jinankjain-validation

* 'validation' of https://github.com/jinankjain/PaperBadger:
  Validation Error
  • Loading branch information
abbycabs committed Apr 27, 2016
2 parents efb6dab + 5ad10d8 commit 6a7b29b
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@
"shortid": "^2.2.2",
"simple-oauth2": "0.5.1",
"webpack": "^1.8.11",
"whatwg-fetch": "^0.9.0"
"whatwg-fetch": "^0.9.0",
"validator": "^5.2.0"
},
"devDependencies": {
"eslint": "^2.3.0",
Expand Down
26 changes: 24 additions & 2 deletions templates/pages/paper.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ var React = require('react/addons'),
Router = require('react-router'),
Navigation = require('react-router').Navigation,
path = require('path'),
validator = require('validator'),
Page = require('../components/page.jsx');

var Issue = React.createClass({
Expand All @@ -20,11 +21,30 @@ var Issue = React.createClass({
this.replaceWith('home');
}
},
validateEmail: function(emailId) {
return validator.isEmail(emailId);
},
validateDOI: function(doi) {
var doiRe = /(10\.\d{3}\d+)\/(.*)\b/;
return doiRe.test(doi);
},
handleSubmit: function(e) {
e.preventDefault();
var doi = this.state.doi;
var emails = this.state.data.split('\n');

if(!this.validateDOI(doi)) {
this.setState({'doiError': true, 'submitted': false});
return;
}

for(var i=0;i<emails.length;i++) {
if(!this.validateEmail(emails[i])) {
this.setState({'emailError': true, 'submitted': false});
return;
}
}

var doiRe = /(10\.\d{3}\d+)\/(.*)\b/;
var m = doiRe.exec(doi);
var url = path.join('/papers', m[1],encodeURIComponent(m[2]));
Expand All @@ -45,19 +65,21 @@ var Issue = React.createClass({
return response.json();
})
.then((data) => {
this.setState({data: '', doi: '', 'submitted': true});
this.setState({data: '', doi: '', 'submitted': true, 'emailError': false, 'doiError': false});
});
return;
},
getInitialState: function() {
return {data: '', doi: '', 'submitted': false};
return {data: '', doi: '', 'submitted': false, 'emailError': false, 'doiError': false};
},
render: function() {
return (
<Page>
<h1>Submit a Paper</h1>
<p>This is a simple prototype demonstrating using a form to submit papers to Paper Badger, our contributorship badges prototype. In future versions we will integrate with publisher submission pipelines.</p>
<h4 hidden={!this.state.submitted}>You have succefully submitted the form</h4>
<h4 hidden={!this.state.emailError}>Not a valid Email ID</h4>
<h4 hidden={!this.state.doiError}>Not a valid DOI</h4>
<form className="pure-form pure-form-aligned" onSubmit={this.handleSubmit}>
<fieldset>
<div className="pure-control-group">
Expand Down

0 comments on commit 6a7b29b

Please sign in to comment.