diff --git a/js/components/ascribe_accordion_list/accordion_list_item_piece.js b/js/components/ascribe_accordion_list/accordion_list_item_piece.js
index b7e621b8..d0b16c9f 100644
--- a/js/components/ascribe_accordion_list/accordion_list_item_piece.js
+++ b/js/components/ascribe_accordion_list/accordion_list_item_piece.js
@@ -26,13 +26,24 @@ let AccordionListItemPiece = React.createClass({
mixins: [Router.Navigation],
- getLinkData(){
- return {
- to: 'piece',
- params: {
- pieceId: this.props.piece.id
- }
- };
+ getLinkData() {
+
+ if(this.props.piece && this.props.piece.first_edition) {
+ return {
+ to: 'edition',
+ params: {
+ editionId: this.props.piece.first_edition.bitcoin_id
+ }
+ };
+ } else {
+ return {
+ to: 'piece',
+ params: {
+ pieceId: this.props.piece.id
+ }
+ };
+ }
+
},
render() {
diff --git a/js/components/ascribe_detail/piece_container.js b/js/components/ascribe_detail/piece_container.js
index fe1a6c8a..22986b53 100644
--- a/js/components/ascribe_detail/piece_container.js
+++ b/js/components/ascribe_detail/piece_container.js
@@ -76,7 +76,27 @@ let PieceContainer = React.createClass({
},
onChange(state) {
- this.setState(state);
+ /*
+
+ ATTENTION:
+ THIS IS JUST A TEMPORARY USABILITY FIX THAT ESSENTIALLY REMOVES THE LOAN BUTTON
+ FROM THE PIECE DETAIL PAGE SO THAT USERS DO NOT CONFUSE A PIECE WITH AN EDITION.
+
+ IT SHOULD BE REMOVED AND REPLACED WITH A BETTER SOLUTION ASAP!
+
+ */
+ if(state && state.piece && state.piece.acl && typeof state.piece.acl.acl_loan !== 'undefined') {
+
+ let pieceState = mergeOptions({}, state.piece);
+ pieceState.acl.acl_loan = false;
+
+ this.setState({
+ piece: pieceState
+ });
+
+ } else {
+ this.setState(state);
+ }
},
loadPiece() {
diff --git a/js/components/ascribe_forms/form.js b/js/components/ascribe_forms/form.js
index 54d4f197..d0117251 100644
--- a/js/components/ascribe_forms/form.js
+++ b/js/components/ascribe_forms/form.js
@@ -39,13 +39,16 @@ let Form = React.createClass({
// You can use the form for inline requests, like the submit click on a button.
// For the form to then not display the error on top, you need to enable this option.
// It will make use of the GlobalNotification
- isInline: React.PropTypes.bool
+ isInline: React.PropTypes.bool,
+
+ autoComplete: React.PropTypes.string
},
getDefaultProps() {
return {
method: 'post',
- buttonSubmitText: 'SAVE'
+ buttonSubmitText: 'SAVE',
+ autoComplete: 'off'
};
},
@@ -217,6 +220,25 @@ let Form = React.createClass({
});
},
+ /**
+ * All webkit-based browsers are ignoring the attribute autoComplete="off",
+ * as stated here: http://stackoverflow.com/questions/15738259/disabling-chrome-autofill/15917221#15917221
+ * So what we actually have to do is depended on whether or not this.props.autoComplete is set to "on" or "off"
+ * insert two fake hidden inputs that mock password and username so that chrome/safari is filling those
+ */
+ getFakeAutocompletableInputs() {
+ if(this.props.autoComplete === 'off') {
+ return (
+
+
+
+
+ );
+ } else {
+ return null;
+ }
+ },
+
render() {
let className = 'ascribe-form';
@@ -229,7 +251,8 @@ let Form = React.createClass({
role="form"
className={className}
onSubmit={this.submit}
- autoComplete="on">
+ autoComplete={this.props.autoComplete}>
+ {this.getFakeAutocompletableInputs()}
{this.getErrors()}
{this.renderChildren()}
{this.getButtons()}
diff --git a/js/components/ascribe_forms/form_login.js b/js/components/ascribe_forms/form_login.js
index a3fd4d33..86a20119 100644
--- a/js/components/ascribe_forms/form_login.js
+++ b/js/components/ascribe_forms/form_login.js
@@ -101,6 +101,7 @@ let LoginForm = React.createClass({
ref="loginForm"
url={ApiUrls.users_login}
handleSuccess={this.handleSuccess}
+ autoComplete="on"
buttons={
@@ -131,7 +131,6 @@ let LoginForm = React.createClass({