Forms & Last Step
- fixed issues on forms - added defaultValue on text/textarea fields - added all actions on step 3
This commit is contained in:
@ -15,7 +15,7 @@ function(
|
|||||||
FormFieldCheckbox
|
FormFieldCheckbox
|
||||||
) {
|
) {
|
||||||
var FormField = React.createClass({
|
var FormField = React.createClass({
|
||||||
renderField: function(data, inline = true) {
|
renderField: function(data, inline = false) {
|
||||||
var description = false;
|
var description = false;
|
||||||
if(data.field.description) {
|
if(data.field.description) {
|
||||||
description = (
|
description = (
|
||||||
@ -53,17 +53,17 @@ function(
|
|||||||
|
|
||||||
if(inline === true) {
|
if(inline === true) {
|
||||||
return (
|
return (
|
||||||
<span>
|
<span key={ 'field-' + (data.index || 0) }>
|
||||||
{ field }
|
{ field }
|
||||||
{ description }
|
{ description }
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return (
|
return (
|
||||||
<div>
|
<p key={ 'field-' + (data.index || 0) }>
|
||||||
{ field }
|
{ field }
|
||||||
{ description }
|
{ description }
|
||||||
</div>
|
</p>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -71,8 +71,9 @@ function(
|
|||||||
var field = false;
|
var field = false;
|
||||||
|
|
||||||
if(this.props.field['fields'] !== undefined) {
|
if(this.props.field['fields'] !== undefined) {
|
||||||
field = this.props.field.fields.map(function(subfield) {
|
field = this.props.field.fields.map(function(subfield, index) {
|
||||||
return this.renderField({
|
return this.renderField({
|
||||||
|
index: index,
|
||||||
field: subfield,
|
field: subfield,
|
||||||
item: this.props.item
|
item: this.props.item
|
||||||
});
|
});
|
||||||
|
@ -61,30 +61,9 @@ function(
|
|||||||
}.bind(this));
|
}.bind(this));
|
||||||
},
|
},
|
||||||
handleChange: function() {
|
handleChange: function() {
|
||||||
var new_value = this.refs.selection.getDOMNode().value;
|
|
||||||
|
|
||||||
if(this.props.multiple === false) {
|
|
||||||
if(new_value.trim().length === 0) {
|
|
||||||
new_value = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
selected: new_value
|
selected: jQuery('#'+this.props.id).val()
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
var selected_values = this.state.selected || [];
|
|
||||||
|
|
||||||
if(selected_values.indexOf(new_value) !== -1) {
|
|
||||||
// value already present so remove it
|
|
||||||
selected_values.splice(selected_values.indexOf(new_value), 1);
|
|
||||||
} else {
|
|
||||||
selected_values.push(new_value);
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setState({
|
|
||||||
selected: selected_values
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
getSelected: function() {
|
getSelected: function() {
|
||||||
return this.state.selected;
|
return this.state.selected;
|
||||||
|
@ -10,11 +10,16 @@ function(
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
className={ (this.props.field.size) ? '' : 'regular-text' }
|
className={ (this.props.field.size) ? '' : 'regular-text' }
|
||||||
size={ (this.props.field.size !== 'auto') ? this.props.field.size : false }
|
size={
|
||||||
|
(this.props.field.size !== 'auto' && this.props.field.size > 0)
|
||||||
|
? this.props.field.size
|
||||||
|
: false
|
||||||
|
}
|
||||||
name={ this.props.field.name }
|
name={ this.props.field.name }
|
||||||
id={ 'field_'+this.props.field.name }
|
id={ 'field_'+this.props.field.name }
|
||||||
value={ this.props.item[this.props.field.name] }
|
value={ this.props.item[this.props.field.name] }
|
||||||
placeholder={ this.props.field.placeholder }
|
placeholder={ this.props.field.placeholder }
|
||||||
|
defaultValue={ this.props.field.defaultValue }
|
||||||
onChange={ this.props.onValueChange } />
|
onChange={ this.props.onValueChange } />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,8 @@ function(
|
|||||||
name={ this.props.field.name }
|
name={ this.props.field.name }
|
||||||
id={ 'field_'+this.props.field.name }
|
id={ 'field_'+this.props.field.name }
|
||||||
value={ this.props.item[this.props.field.name] }
|
value={ this.props.item[this.props.field.name] }
|
||||||
|
placeholder={ this.props.field.placeholder }
|
||||||
|
defaultValue={ this.props.field.defaultValue }
|
||||||
onChange={ this.props.onValueChange } />
|
onChange={ this.props.onValueChange } />
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -128,8 +128,22 @@ define(
|
|||||||
);
|
);
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
|
|
||||||
|
var actions = false;
|
||||||
|
if(this.props.children) {
|
||||||
|
actions = this.props.children;
|
||||||
|
} else {
|
||||||
|
actions = (
|
||||||
|
<input
|
||||||
|
className="button button-primary"
|
||||||
|
type="submit"
|
||||||
|
value="Save"
|
||||||
|
disabled={this.state.loading} />
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form
|
<form
|
||||||
|
id={ this.props.id }
|
||||||
ref="form"
|
ref="form"
|
||||||
className={ formClasses }
|
className={ formClasses }
|
||||||
onSubmit={
|
onSubmit={
|
||||||
@ -146,11 +160,7 @@ define(
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<input
|
{ actions }
|
||||||
className="button button-primary"
|
|
||||||
type="submit"
|
|
||||||
value="Save"
|
|
||||||
disabled={this.state.loading} />
|
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,9 @@ define(
|
|||||||
Selection,
|
Selection,
|
||||||
Breadcrumb
|
Breadcrumb
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
var settings = window.mailpoet_settings || {};
|
||||||
|
|
||||||
var fields = [
|
var fields = [
|
||||||
{
|
{
|
||||||
name: 'subject',
|
name: 'subject',
|
||||||
@ -41,13 +44,13 @@ define(
|
|||||||
name: 'from_name',
|
name: 'from_name',
|
||||||
type: 'text',
|
type: 'text',
|
||||||
placeholder: 'John Doe',
|
placeholder: 'John Doe',
|
||||||
size: 'auto'
|
defaultValue: settings.from_name
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'from_email',
|
name: 'from_email',
|
||||||
type: 'text',
|
type: 'text',
|
||||||
placeholder: 'john.doe@email.com',
|
placeholder: 'john.doe@email.com',
|
||||||
size: 'auto'
|
defaultValue: settings.from_address
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -61,14 +64,12 @@ define(
|
|||||||
{
|
{
|
||||||
name: 'reply_to_name',
|
name: 'reply_to_name',
|
||||||
type: 'text',
|
type: 'text',
|
||||||
placeholder: 'John Doe',
|
placeholder: 'John Doe'
|
||||||
size: 'auto'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'reply_to_email',
|
name: 'reply_to_email',
|
||||||
type: 'text',
|
type: 'text',
|
||||||
placeholder: 'john.doe@email.com',
|
placeholder: 'john.doe@email.com'
|
||||||
size: 'auto'
|
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -81,6 +82,11 @@ define(
|
|||||||
};
|
};
|
||||||
|
|
||||||
var NewsletterSend = React.createClass({
|
var NewsletterSend = React.createClass({
|
||||||
|
handleSend: function() {
|
||||||
|
console.log('send.');
|
||||||
|
console.log(jQuery('#mailpoet_newsletter').serializeArray());
|
||||||
|
console.log(jQuery('#mailpoet_segments').val());
|
||||||
|
},
|
||||||
render: function() {
|
render: function() {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@ -89,10 +95,32 @@ define(
|
|||||||
<Breadcrumb step="send" />
|
<Breadcrumb step="send" />
|
||||||
|
|
||||||
<Form
|
<Form
|
||||||
|
id="mailpoet_newsletter"
|
||||||
endpoint="newsletters"
|
endpoint="newsletters"
|
||||||
fields={ fields }
|
fields={ fields }
|
||||||
params={ this.props.params }
|
params={ this.props.params }
|
||||||
messages={ messages } />
|
messages={ messages }>
|
||||||
|
|
||||||
|
<p className="submit">
|
||||||
|
<input
|
||||||
|
className="button button-primary"
|
||||||
|
type="button"
|
||||||
|
onClick={ this.handleSend }
|
||||||
|
value="Send" />
|
||||||
|
|
||||||
|
<input
|
||||||
|
className="button button-secondary"
|
||||||
|
type="submit"
|
||||||
|
value="Save as draft and close" />
|
||||||
|
or simply
|
||||||
|
<a
|
||||||
|
href={
|
||||||
|
'?page=mailpoet-newsletter-editor&id='+this.props.params.id
|
||||||
|
}>
|
||||||
|
go back to design
|
||||||
|
</a>.
|
||||||
|
</p>
|
||||||
|
</Form>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Config;
|
namespace MailPoet\Config;
|
||||||
use \MailPoet\Models\Segment;
|
use \MailPoet\Models\Segment;
|
||||||
|
use \MailPoet\Models\Setting;
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
@ -112,7 +113,11 @@ class Menu {
|
|||||||
$data = array();
|
$data = array();
|
||||||
|
|
||||||
$data['segments'] = Segment::findArray();
|
$data['segments'] = Segment::findArray();
|
||||||
|
$settings = Setting::findArray();
|
||||||
|
$data['settings'] = array();
|
||||||
|
foreach($settings as $setting) {
|
||||||
|
$data['settings'][$setting['name']] = $setting['value'];
|
||||||
|
}
|
||||||
echo $this->renderer->render('newsletters.html', $data);
|
echo $this->renderer->render('newsletters.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,5 +12,6 @@
|
|||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var mailpoet_segments = <%= json_encode(segments) %>;
|
var mailpoet_segments = <%= json_encode(segments) %>;
|
||||||
|
var mailpoet_settings = <%= json_encode(settings) %>;
|
||||||
</script>
|
</script>
|
||||||
<% endblock %>
|
<% endblock %>
|
||||||
|
Reference in New Issue
Block a user