import React from 'react' import { Router, Route, Link } from 'react-router' import jQuery from 'jquery' import MailPoet from 'mailpoet' import classNames from 'classnames' import Listing from 'listing/listing.jsx' import Selection from 'form/fields/selection.jsx' const columns = [ { name: 'email', label: 'Subscriber', sortable: true }, { name: 'status', label: 'Status', sortable: true }, { name: 'segments', label: 'Lists', sortable: false }, { name: 'created_at', label: 'Subscribed on', sortable: true }, { name: 'updated_at', label: 'Last modified on', sortable: true }, ]; const messages = { onTrash: function(response) { if(response) { var message = null; if(~~response === 1) { message = ( '1 subscriber was moved to the trash.' ); } else if(~~response > 1) { message = ( '%$1d subscribers were moved to the trash.' ).replace('%$1d', ~~response); } if(message !== null) { MailPoet.Notice.success(message); } } }, onDelete: function(response) { if(response) { var message = null; if(~~response === 1) { message = ( '1 subscriber was permanently deleted.' ); } else if(~~response > 1) { message = ( '%$1d subscribers were permanently deleted.' ).replace('%$1d', ~~response); } if(message !== null) { MailPoet.Notice.success(message); } } }, onRestore: function(response) { if(response) { var message = null; if(~~response === 1) { message = ( '1 subscriber has been restored from the trash.' ); } else if(~~response > 1) { message = ( '%$1d subscribers have been restored from the trash.' ).replace('%$1d', ~~response); } if(message !== null) { MailPoet.Notice.success(message); } } } }; const bulk_actions = [ { name: 'moveToList', label: 'Move to list...', onSelect: function() { let field = { id: 'move_to_segment', endpoint: 'segments' }; return ( ); }, getData: function() { return { segment_id: ~~(jQuery('#move_to_segment').val()) } }, onSuccess: function(response) { MailPoet.Notice.success( '%$1d subscribers were moved to list %$2s.' .replace('%$1d', ~~response.subscribers) .replace('%$2s', response.segment) ); } }, { name: 'addToList', label: 'Add to list...', onSelect: function() { let field = { id: 'add_to_segment', endpoint: 'segments' }; return ( ); }, getData: function() { return { segment_id: ~~(jQuery('#add_to_segment').val()) } }, onSuccess: function(response) { MailPoet.Notice.success( '%$1d subscribers were added to list %$2s.' .replace('%$1d', ~~response.subscribers) .replace('%$2s', response.segment) ); } }, { name: 'removeFromList', label: 'Remove from list...', onSelect: function() { let field = { id: 'remove_from_segment', endpoint: 'segments' }; return ( ); }, getData: function() { return { segment_id: ~~(jQuery('#remove_from_segment').val()) } }, onSuccess: function(response) { MailPoet.Notice.success( '%$1d subscribers were removed from list %$2s.' .replace('%$1d', ~~response.subscribers) .replace('%$2s', response.segment) ); } }, { name: 'removeFromAllLists', label: 'Remove from all lists', onSuccess: function(response) { MailPoet.Notice.success( '%$1d subscribers were removed from all lists.' .replace('%$1d', ~~response) ); } }, { name: 'confirmUnconfirmed', label: 'Confirm unconfirmed', onSuccess: function(response) { MailPoet.Notice.success( '%$1d subscribers have been confirmed.' .replace('%$1d', ~~response) ); } }, { name: 'trash', label: 'Trash', onSuccess: messages.onTrash } ]; const SubscriberList = React.createClass({ renderItem: function(subscriber, actions) { let row_classes = classNames( 'manage-column', 'column-primary', 'has-row-actions', 'column-username' ); let status = ''; switch(subscriber.status) { case 'subscribed': status = 'Subscribed'; break; case 'unconfirmed': status = 'Unconfirmed'; break; case 'unsubscribed': status = 'Unsubscribed'; break; } let segments = mailpoet_segments.filter(function(segment) { return (jQuery.inArray(segment.id, subscriber.segments) !== -1); }).map(function(segment) { return segment.name; }).join(', '); let avatar = false; if(subscriber.avatar_url) { avatar = ( ); } return (
{ subscriber.email }

{ subscriber.first_name } { subscriber.last_name }

{ actions } { status } { segments } { subscriber.created_at } { subscriber.updated_at }
); }, render: function() { return (

Subscribers New

) } }); module.exports = SubscriberList;