mirror of
https://github.com/ascribe/onion.git
synced 2025-02-01 20:39:57 +01:00
Handle deletion method for WalletPieceContainer
This commit is contained in:
parent
846e891d84
commit
7f97ce9828
@ -9,7 +9,6 @@ import Form from './../ascribe_forms/form';
|
|||||||
|
|
||||||
import PieceExtraDataForm from './../ascribe_forms/form_piece_extradata';
|
import PieceExtraDataForm from './../ascribe_forms/form_piece_extradata';
|
||||||
|
|
||||||
|
|
||||||
import GlobalNotificationModel from '../../models/global_notification_model';
|
import GlobalNotificationModel from '../../models/global_notification_model';
|
||||||
import GlobalNotificationActions from '../../actions/global_notification_actions';
|
import GlobalNotificationActions from '../../actions/global_notification_actions';
|
||||||
|
|
||||||
@ -17,6 +16,7 @@ import FurtherDetailsFileuploader from './further_details_fileuploader';
|
|||||||
|
|
||||||
import { formSubmissionValidation } from '../ascribe_uploader/react_s3_fine_uploader_utils';
|
import { formSubmissionValidation } from '../ascribe_uploader/react_s3_fine_uploader_utils';
|
||||||
|
|
||||||
|
|
||||||
let FurtherDetails = React.createClass({
|
let FurtherDetails = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
editable: React.PropTypes.bool,
|
editable: React.PropTypes.bool,
|
||||||
|
@ -2,14 +2,12 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
|
||||||
import ListRequestActions from '../../../../ascribe_forms/list_form_request_actions';
|
import ListRequestActions from '../../../../ascribe_forms/list_form_request_actions';
|
||||||
import AclButtonList from '../../../../ascribe_buttons/acl_button_list';
|
import AclButtonList from '../../../../ascribe_buttons/acl_button_list';
|
||||||
import DeleteButton from '../../../../ascribe_buttons/delete_button';
|
import DeleteButton from '../../../../ascribe_buttons/delete_button';
|
||||||
|
|
||||||
import AclProxy from '../../../../acl_proxy';
|
import AclProxy from '../../../../acl_proxy';
|
||||||
|
|
||||||
|
|
||||||
import { mergeOptions } from '../../../../../utils/general_utils';
|
import { mergeOptions } from '../../../../../utils/general_utils';
|
||||||
|
|
||||||
|
|
||||||
@ -18,6 +16,7 @@ let WalletActionPanel = React.createClass({
|
|||||||
piece: React.PropTypes.object.isRequired,
|
piece: React.PropTypes.object.isRequired,
|
||||||
currentUser: React.PropTypes.object.isRequired,
|
currentUser: React.PropTypes.object.isRequired,
|
||||||
loadPiece: React.PropTypes.func.isRequired,
|
loadPiece: React.PropTypes.func.isRequired,
|
||||||
|
handleDeleteSuccess: React.PropTypes.func.isRequired,
|
||||||
submitButtonType: React.PropTypes.func.isRequired
|
submitButtonType: React.PropTypes.func.isRequired
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -62,7 +61,7 @@ let WalletActionPanel = React.createClass({
|
|||||||
</AclProxy>
|
</AclProxy>
|
||||||
</AclProxy>
|
</AclProxy>
|
||||||
<DeleteButton
|
<DeleteButton
|
||||||
handleSuccess={this.handleDeleteSuccess}
|
handleSuccess={this.props.handleDeleteSuccess}
|
||||||
piece={this.props.piece}/>
|
piece={this.props.piece}/>
|
||||||
</AclButtonList>
|
</AclButtonList>
|
||||||
);
|
);
|
||||||
|
@ -23,6 +23,7 @@ let WalletPieceContainer = React.createClass({
|
|||||||
piece: React.PropTypes.object.isRequired,
|
piece: React.PropTypes.object.isRequired,
|
||||||
currentUser: React.PropTypes.object.isRequired,
|
currentUser: React.PropTypes.object.isRequired,
|
||||||
loadPiece: React.PropTypes.func.isRequired,
|
loadPiece: React.PropTypes.func.isRequired,
|
||||||
|
handleDeleteSuccess: React.PropTypes.func.isRequired,
|
||||||
submitButtonType: React.PropTypes.func.isRequired
|
submitButtonType: React.PropTypes.func.isRequired
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -53,6 +54,7 @@ let WalletPieceContainer = React.createClass({
|
|||||||
piece={this.props.piece}
|
piece={this.props.piece}
|
||||||
currentUser={this.props.currentUser}
|
currentUser={this.props.currentUser}
|
||||||
loadPiece={this.props.loadPiece}
|
loadPiece={this.props.loadPiece}
|
||||||
|
handleDeleteSuccess={this.props.handleDeleteSuccess}
|
||||||
submitButtonType={this.props.submitButtonType}/>
|
submitButtonType={this.props.submitButtonType}/>
|
||||||
<CollapsibleParagraph
|
<CollapsibleParagraph
|
||||||
title={getLangText('Loan History')}
|
title={getLangText('Loan History')}
|
||||||
|
@ -1,12 +1,18 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { History } from 'react-router';
|
||||||
|
|
||||||
import PieceActions from '../../../../../../actions/piece_actions';
|
import PieceActions from '../../../../../../actions/piece_actions';
|
||||||
import PieceStore from '../../../../../../stores/piece_store';
|
import PieceStore from '../../../../../../stores/piece_store';
|
||||||
|
|
||||||
import UserStore from '../../../../../../stores/user_store';
|
import UserStore from '../../../../../../stores/user_store';
|
||||||
|
|
||||||
|
import PieceListStore from '../../../../../../stores/piece_list_store';
|
||||||
|
import PieceListActions from '../../../../../../actions/piece_list_actions';
|
||||||
|
|
||||||
|
import EditionListActions from '../../../../../../actions/edition_list_actions';
|
||||||
|
|
||||||
import CylandSubmitButton from '../cyland_buttons/cyland_submit_button';
|
import CylandSubmitButton from '../cyland_buttons/cyland_submit_button';
|
||||||
|
|
||||||
import CollapsibleParagraph from '../../../../../../components/ascribe_collapsible/collapsible_paragraph';
|
import CollapsibleParagraph from '../../../../../../components/ascribe_collapsible/collapsible_paragraph';
|
||||||
@ -17,26 +23,34 @@ import WalletPieceContainer from '../../ascribe_detail/wallet_piece_container';
|
|||||||
|
|
||||||
import AscribeSpinner from '../../../../../ascribe_spinner';
|
import AscribeSpinner from '../../../../../ascribe_spinner';
|
||||||
|
|
||||||
|
import GlobalNotificationModel from '../../../../../../models/global_notification_model';
|
||||||
|
import GlobalNotificationActions from '../../../../../../actions/global_notification_actions';
|
||||||
|
|
||||||
import { getLangText } from '../../../../../../utils/lang_utils';
|
import { getLangText } from '../../../../../../utils/lang_utils';
|
||||||
import { setDocumentTitle } from '../../../../../../utils/dom_utils';
|
import { setDocumentTitle } from '../../../../../../utils/dom_utils';
|
||||||
import { mergeOptions } from '../../../../../../utils/general_utils';
|
import { mergeOptions } from '../../../../../../utils/general_utils';
|
||||||
|
|
||||||
|
|
||||||
let CylandPieceContainer = React.createClass({
|
let CylandPieceContainer = React.createClass({
|
||||||
propTypes: {
|
propTypes: {
|
||||||
location: React.PropTypes.object,
|
location: React.PropTypes.object,
|
||||||
params: React.PropTypes.object
|
params: React.PropTypes.object
|
||||||
},
|
},
|
||||||
|
|
||||||
|
mixins: [History],
|
||||||
|
|
||||||
getInitialState() {
|
getInitialState() {
|
||||||
return mergeOptions(
|
return mergeOptions(
|
||||||
PieceStore.getState(),
|
PieceStore.getState(),
|
||||||
UserStore.getState()
|
UserStore.getState(),
|
||||||
|
PieceListStore.getState()
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
PieceStore.listen(this.onChange);
|
PieceStore.listen(this.onChange);
|
||||||
UserStore.listen(this.onChange);
|
UserStore.listen(this.onChange);
|
||||||
|
PieceListStore.listen(this.onChange);
|
||||||
|
|
||||||
// Every time we're leaving the piece detail page,
|
// Every time we're leaving the piece detail page,
|
||||||
// just reset the piece that is saved in the piece store
|
// just reset the piece that is saved in the piece store
|
||||||
@ -50,6 +64,7 @@ let CylandPieceContainer = React.createClass({
|
|||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
PieceStore.unlisten(this.onChange);
|
PieceStore.unlisten(this.onChange);
|
||||||
UserStore.unlisten(this.onChange);
|
UserStore.unlisten(this.onChange);
|
||||||
|
PieceListStore.listen(this.onChange);
|
||||||
},
|
},
|
||||||
|
|
||||||
onChange(state) {
|
onChange(state) {
|
||||||
@ -60,6 +75,21 @@ let CylandPieceContainer = React.createClass({
|
|||||||
PieceActions.fetchOne(this.props.params.pieceId);
|
PieceActions.fetchOne(this.props.params.pieceId);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
handleDeleteSuccess(response) {
|
||||||
|
PieceListActions.fetchPieceList(this.state.page, this.state.pageSize, this.state.search,
|
||||||
|
this.state.orderBy, this.state.orderAsc, this.state.filterBy);
|
||||||
|
|
||||||
|
// since we're deleting a piece, we just need to close
|
||||||
|
// all editions dialogs and not reload them
|
||||||
|
EditionListActions.closeAllEditionLists();
|
||||||
|
EditionListActions.clearAllEditionSelections();
|
||||||
|
|
||||||
|
let notification = new GlobalNotificationModel(response.notification, 'success');
|
||||||
|
GlobalNotificationActions.appendGlobalNotification(notification);
|
||||||
|
|
||||||
|
this.history.pushState(null, '/collection');
|
||||||
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
if(this.state.piece && this.state.piece.title) {
|
if(this.state.piece && this.state.piece.title) {
|
||||||
setDocumentTitle([this.state.piece.artist_name, this.state.piece.title].join(', '));
|
setDocumentTitle([this.state.piece.artist_name, this.state.piece.title].join(', '));
|
||||||
@ -69,6 +99,7 @@ let CylandPieceContainer = React.createClass({
|
|||||||
piece={this.state.piece}
|
piece={this.state.piece}
|
||||||
currentUser={this.state.currentUser}
|
currentUser={this.state.currentUser}
|
||||||
loadPiece={this.loadPiece}
|
loadPiece={this.loadPiece}
|
||||||
|
handleDeleteSuccess={this.handleDeleteSuccess}
|
||||||
submitButtonType={CylandSubmitButton}>
|
submitButtonType={CylandSubmitButton}>
|
||||||
<CollapsibleParagraph
|
<CollapsibleParagraph
|
||||||
title={getLangText('Further Details')}
|
title={getLangText('Further Details')}
|
||||||
|
@ -1,12 +1,18 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import { History } from 'react-router';
|
||||||
|
|
||||||
import PieceActions from '../../../../../../actions/piece_actions';
|
import PieceActions from '../../../../../../actions/piece_actions';
|
||||||
import PieceStore from '../../../../../../stores/piece_store';
|
import PieceStore from '../../../../../../stores/piece_store';
|
||||||
|
|
||||||
import UserStore from '../../../../../../stores/user_store';
|
import UserStore from '../../../../../../stores/user_store';
|
||||||
|
|
||||||
|
import PieceListStore from '../../../../../../stores/piece_list_store';
|
||||||
|
import PieceListActions from '../../../../../../actions/piece_list_actions';
|
||||||
|
|
||||||
|
import EditionListActions from '../../../../../../actions/edition_list_actions';
|
||||||
|
|
||||||
import IkonotvSubmitButton from '../ikonotv_buttons/ikonotv_submit_button';
|
import IkonotvSubmitButton from '../ikonotv_buttons/ikonotv_submit_button';
|
||||||
|
|
||||||
import CollapsibleParagraph from '../../../../../../components/ascribe_collapsible/collapsible_paragraph';
|
import CollapsibleParagraph from '../../../../../../components/ascribe_collapsible/collapsible_paragraph';
|
||||||
@ -18,6 +24,9 @@ import WalletPieceContainer from '../../ascribe_detail/wallet_piece_container';
|
|||||||
|
|
||||||
import AscribeSpinner from '../../../../../ascribe_spinner';
|
import AscribeSpinner from '../../../../../ascribe_spinner';
|
||||||
|
|
||||||
|
import GlobalNotificationModel from '../../../../../../models/global_notification_model';
|
||||||
|
import GlobalNotificationActions from '../../../../../../actions/global_notification_actions';
|
||||||
|
|
||||||
import { getLangText } from '../../../../../../utils/lang_utils';
|
import { getLangText } from '../../../../../../utils/lang_utils';
|
||||||
import { setDocumentTitle } from '../../../../../../utils/dom_utils';
|
import { setDocumentTitle } from '../../../../../../utils/dom_utils';
|
||||||
import { mergeOptions } from '../../../../../../utils/general_utils';
|
import { mergeOptions } from '../../../../../../utils/general_utils';
|
||||||
@ -28,16 +37,20 @@ let IkonotvPieceContainer = React.createClass({
|
|||||||
params: React.PropTypes.object
|
params: React.PropTypes.object
|
||||||
},
|
},
|
||||||
|
|
||||||
|
mixins: [History],
|
||||||
|
|
||||||
getInitialState() {
|
getInitialState() {
|
||||||
return mergeOptions(
|
return mergeOptions(
|
||||||
PieceStore.getState(),
|
PieceStore.getState(),
|
||||||
UserStore.getState()
|
UserStore.getState(),
|
||||||
|
PieceListStore.getState()
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
PieceStore.listen(this.onChange);
|
PieceStore.listen(this.onChange);
|
||||||
UserStore.listen(this.onChange);
|
UserStore.listen(this.onChange);
|
||||||
|
PieceListStore.listen(this.onChange);
|
||||||
|
|
||||||
// Every time we're leaving the piece detail page,
|
// Every time we're leaving the piece detail page,
|
||||||
// just reset the piece that is saved in the piece store
|
// just reset the piece that is saved in the piece store
|
||||||
@ -59,6 +72,7 @@ let IkonotvPieceContainer = React.createClass({
|
|||||||
componentWillUnmount() {
|
componentWillUnmount() {
|
||||||
PieceStore.unlisten(this.onChange);
|
PieceStore.unlisten(this.onChange);
|
||||||
UserStore.unlisten(this.onChange);
|
UserStore.unlisten(this.onChange);
|
||||||
|
PieceListStore.listen(this.onChange);
|
||||||
},
|
},
|
||||||
|
|
||||||
onChange(state) {
|
onChange(state) {
|
||||||
@ -69,6 +83,21 @@ let IkonotvPieceContainer = React.createClass({
|
|||||||
PieceActions.fetchOne(this.props.params.pieceId);
|
PieceActions.fetchOne(this.props.params.pieceId);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
handleDeleteSuccess(response) {
|
||||||
|
PieceListActions.fetchPieceList(this.state.page, this.state.pageSize, this.state.search,
|
||||||
|
this.state.orderBy, this.state.orderAsc, this.state.filterBy);
|
||||||
|
|
||||||
|
// since we're deleting a piece, we just need to close
|
||||||
|
// all editions dialogs and not reload them
|
||||||
|
EditionListActions.closeAllEditionLists();
|
||||||
|
EditionListActions.clearAllEditionSelections();
|
||||||
|
|
||||||
|
let notification = new GlobalNotificationModel(response.notification, 'success');
|
||||||
|
GlobalNotificationActions.appendGlobalNotification(notification);
|
||||||
|
|
||||||
|
this.history.pushState(null, '/collection');
|
||||||
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let furtherDetails = (
|
let furtherDetails = (
|
||||||
<CollapsibleParagraph
|
<CollapsibleParagraph
|
||||||
@ -102,6 +131,7 @@ let IkonotvPieceContainer = React.createClass({
|
|||||||
piece={this.state.piece}
|
piece={this.state.piece}
|
||||||
currentUser={this.state.currentUser}
|
currentUser={this.state.currentUser}
|
||||||
loadPiece={this.loadPiece}
|
loadPiece={this.loadPiece}
|
||||||
|
handleDeleteSuccess={this.handleDeleteSuccess}
|
||||||
submitButtonType={IkonotvSubmitButton}>
|
submitButtonType={IkonotvSubmitButton}>
|
||||||
{furtherDetails}
|
{furtherDetails}
|
||||||
</WalletPieceContainer>
|
</WalletPieceContainer>
|
||||||
|
Loading…
Reference in New Issue
Block a user