Saving of date custom fields in React & PHP
This commit is contained in:
@@ -88,7 +88,7 @@ define([
|
|||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
}
|
}
|
||||||
componentDidUpdate(prevProps, prevState) {
|
componentDidUpdate(prevProps, prevState) {
|
||||||
if(
|
if (
|
||||||
(this.props.item !== undefined && prevProps.item !== undefined)
|
(this.props.item !== undefined && prevProps.item !== undefined)
|
||||||
&& (this.props.item.id !== prevProps.item.id)
|
&& (this.props.item.id !== prevProps.item.id)
|
||||||
) {
|
) {
|
||||||
@@ -104,27 +104,39 @@ define([
|
|||||||
day: Moment.unix(timeStamp).date()
|
day: Moment.unix(timeStamp).date()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
updateTimeStamp(field) {
|
||||||
|
let newTimeStamp = Moment(
|
||||||
|
`${this.state.month}/${this.state.day}/${this.state.year}`,
|
||||||
|
'M/D/YYYY'
|
||||||
|
).valueOf();
|
||||||
|
if (!isNaN(newTimeStamp) && parseInt(newTimeStamp, 10) > 0) {
|
||||||
|
// convert milliseconds to seconds
|
||||||
|
newTimeStamp /= 1000;
|
||||||
|
return this.props.onValueChange({
|
||||||
|
target: {
|
||||||
|
name: field,
|
||||||
|
value: newTimeStamp
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
onValueChange(e) {
|
onValueChange(e) {
|
||||||
// extract property from name
|
// extract property from name
|
||||||
const matches = e.target.name.match(/.*?\[(.*?)\]/);
|
const matches = e.target.name.match(/(.*?)\[(.*?)\]/);
|
||||||
|
let field = null;
|
||||||
let property = null;
|
let property = null;
|
||||||
if(matches !== null && matches.length === 2) {
|
|
||||||
property = matches[1];
|
|
||||||
}
|
|
||||||
let value = parseInt(e.target.value, 10);
|
|
||||||
|
|
||||||
switch(property) {
|
if (matches !== null && matches.length === 3) {
|
||||||
case 'year':
|
field = matches[1];
|
||||||
this.setState({ year: value });
|
property = matches[2];
|
||||||
break;
|
|
||||||
|
|
||||||
case 'month':
|
let value = parseInt(e.target.value, 10);
|
||||||
this.setState({ month: value });
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'day':
|
this.setState({
|
||||||
this.setState({ day: value });
|
[`${property}`]: value
|
||||||
break;
|
}, () => {
|
||||||
|
this.updateTimeStamp(field);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
render() {
|
render() {
|
||||||
|
@@ -18,9 +18,21 @@ class SubscriberCustomField extends Model {
|
|||||||
|
|
||||||
if($custom_field['type'] === 'date') {
|
if($custom_field['type'] === 'date') {
|
||||||
if(is_array($data['value'])) {
|
if(is_array($data['value'])) {
|
||||||
$day = (isset($data['value']['day']) ? : 1);
|
$day = (
|
||||||
$month = (isset($data['value']['month']) ? : 1);
|
isset($data['value']['day'])
|
||||||
$year = (isset($data['value']['year']) ? : 1970);
|
? (int)$data['value']['day']
|
||||||
|
: 1
|
||||||
|
);
|
||||||
|
$month = (
|
||||||
|
isset($data['value']['month'])
|
||||||
|
? (int)$data['value']['month']
|
||||||
|
: 1
|
||||||
|
);
|
||||||
|
$year = (
|
||||||
|
isset($data['value']['year'])
|
||||||
|
? (int)$data['value']['year']
|
||||||
|
: 1970
|
||||||
|
);
|
||||||
$data['value'] = mktime(0, 0, 0, $month, $day, $year);
|
$data['value'] = mktime(0, 0, 0, $month, $day, $year);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user