Skip to content

Commit

Permalink
Sorted out attachements and some style sheet issues
Browse files Browse the repository at this point in the history
  • Loading branch information
makville committed Jan 4, 2020
1 parent 59c67c4 commit ab47387
Show file tree
Hide file tree
Showing 10 changed files with 306 additions and 364 deletions.
4 changes: 3 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
"type": "cakephp-plugin",
"license": "MIT",
"require": {
"cakephp/cakephp": "^3.5"
"cakephp/cakephp": "^3.5",
"mailgun/mailgun-php": "^2.6",
"php-http/guzzle6-adapter": "^1.1"
},
"require-dev": {
"phpunit/phpunit": "^5.7.14|^6.0"
Expand Down
72 changes: 38 additions & 34 deletions src/Controller/MailsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,19 @@ public function compose($id = null) {
$recipients = [];
$data = $this->request->data;
//we need to determine the recipients first
$to = explode(',', trim($data['recipients']));
foreach ($to as $email) {
if (trim($email) == '') {
continue;
if (is_array($data['recipients'])) {
foreach ($data['recipients'] as $email) {
if (trim($email) == '') {
continue;
}
$recipients[] = trim($email);
}
$recipients[] = trim($email);
}
//are we using mailing lists too?
$data['recipient_mailing_lists'] = implode(',', $data['recipient_mailing_lists']);
$listIds = $this->request->data('recipient_mailing_lists');
if ($data['recipient_mailing_lists']) {
$data['recipient_mailing_lists'] = implode(',', $data['recipient_mailing_lists']);
}
$listIds = is_array($this->request->data('recipient_mailing_lists')) ? $this->request->data('recipient_mailing_lists') : [];
foreach ($listIds as $listId) {
if (is_numeric($listId)) {
if ($listId == 0) {
Expand All @@ -142,39 +145,40 @@ public function compose($id = null) {
}
}
}
$recipients = implode(',', array_unique($recipients));
//attachments
if (isset($data['attachments'])) {
$attachments = [];
foreach ($data['attachments'] as $attached) {
$parts = explode('|', $attached);
$attachment = ['remoteName' => $parts[0], 'filePath' => $parts[1]];
$attachments[] = $attachment;
}
$data['attachments'] = implode(',', $data['attachments']);
}
$recipients = implode(',', array_unique($recipients));
//attachments
$attachments = [];
if (isset($data['attachments'])) {
foreach ($data['attachments'] as $attached) {
$parts = explode('|', $attached);
$attachment = ['filename' => $parts[0], 'filePath' => $parts[1]];
$attachments[] = $attachment;
}
if (isset($data['send'])) {
if (!$mail->isNew()) {
$mail = $this->Mails->newEntity();
}
$data['status'] = 'sent';
$status = 'sent';
//do the actual sending
if (in_array('Mailgun', $this->components()->loaded())) {
$this->Mailgun->sendWithAttachments(\Cake\Core\Configure::read('makville-mailer-admin-mail', 'admin@' . $this->request->host()), $recipients, $data['name'], $data['content'], $attachments);
}
} else {
$data['status'] = 'draft';
$status = 'draft';
$data['attachments'] = implode(',', $data['attachments']);
}
if (isset($data['send'])) {
if (!$mail->isNew()) {
$mail = $this->Mails->newEntity();
}
$mail = $this->Mails->patchEntity($mail, $data);
if ($this->Mails->save($mail)) {
return $this->redirect(['action' => 'index', $status]);
$data['status'] = 'sent';
$status = 'sent';
//do the actual sending
if (in_array('Mailgun', $this->components()->loaded())) {
$this->Mailgun->sendHTML(\Cake\Core\Configure::read('makville-mailer-admin-mail', 'admin@' . $this->request->host()), $recipients, $data['name'], $data['content'], $attachments);
}
} else {
$data['status'] = 'draft';
$status = 'draft';
}
$mail = $this->Mails->patchEntity($mail, $data);
if ($this->Mails->save($mail)) {
return $this->redirect(['action' => 'index', $status]);
}
}
$emails = in_array('Acl', $this->components()->loaded()) ? $this->Acl->getEmails() : [];
$lists = $this->Mailer->getMailingLists();
$this->set(compact('lists', 'mail'));
$this->set(compact('lists', 'mail', 'emails'));
}

}
69 changes: 29 additions & 40 deletions src/Template/MailingLists/add.ctp
Original file line number Diff line number Diff line change
@@ -1,51 +1,40 @@
<?php

echo $this->Html->css('Mail.style');
echo $this->Html->css('MakvilleMailer.style');
?>
<div class="row">

<div class="large-12 columns">
<div class="box">
<div class="box-header bg-transparent">
<h3 class="box-title"><i class="fa fa-window-maximize"></i>
<span style="font-size: 14px; font-weight: bold;">
New mailing list
<div class="col-lg-12">
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
<i class="fa fa-plus"></i>
<span>
New Mailing List
</span>
</h3>
</div>
<!-- /.box-header -->
<div class="box-body" style="display: block;">


<div class="row">
<div class="col-md-12">
<div class="hpanel email-compose">
<div class="panel-body">
<div>
<?= $this->Form->create($mailingList) ?>
<?php
echo $this->Form->input('name');
echo $this->Form->input('description');
?>
<div class="user-emails">
<?php foreach ($users as $user) : ?>
<?php
if ( in_array($user->email, ['ayomakanjuola@gmail.com', 'makville@gmail.com']) ) { continue; }
?>
<div class="user-email">
<?= $this->Form->input('emails[]', ['type' => 'checkbox', 'label' => false, 'value' => $user->email]) . "&nbsp;" . $user->email;?>
</div>
<?php endforeach; ?>
</div>
<p>&nbsp;</p>
<?= $this->Form->button(__('Save')) ?>
<?= $this->Form->end() ?>
</div>
</div>
<div class="panel-body">
<?= $this->Form->create($mailingList) ?>
<?php
echo $this->Form->input('name', ['class' => 'form-control']);
echo $this->Form->input('description', ['class' => 'form-control']);
?>
<p>&nbsp;</p>
<div class="user-emails">
<?php foreach ($users as $user) : ?>
<?php
if (in_array($user->email, ['ayomakanjuola@gmail.com', 'makville@gmail.com'])) {
continue;
}
?>
<div class="form-check">
<?= $this->Form->input('emails[]', ['id' => 'email', 'type' => 'checkbox', 'label' => ' ' . $user->email, 'div' => false, 'value' => $user->email]); ?>
</div>
</div>
<?php endforeach; ?>
</div>
<p>&nbsp;</p>
<?= $this->Form->button(__('Save'), ['class' => 'btn btn-sm btn-success']) ?>
<?= $this->Form->end() ?>
</div>
</div>
</div>
</div>
</div>
77 changes: 35 additions & 42 deletions src/Template/MailingLists/edit.ctp
Original file line number Diff line number Diff line change
@@ -1,53 +1,46 @@
<?php

echo $this->Html->css('Mail.style');
echo $this->Html->css('MakvilleMailer.style');
?>
<div class="row">

<div class="large-12 columns">
<div class="box">
<div class="box-header bg-transparent">
<h3 class="box-title"><i class="fa fa-window-maximize"></i>
<span style="font-size: 14px; font-weight: bold;">
New mailing list
<div class="col-lg-12">
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
<i class="fa fa-plus"></i>
<span>
Edit Mailing List
</span>
</h3>
</div>
<!-- /.box-header -->
<div class="box-body" style="display: block;">
<div class="row">
<div class="col-md-12">
<div class="hpanel email-compose">
<div class="panel-body">
<div>
<?= $this->Form->create($mailingList) ?>
<?php
echo $this->Form->input('name');
echo $this->Form->input('description');
?>
<div class="user-emails">
<?php
$existing = [];
foreach($mailingList->mailing_list_addresses as $email) {
$existing[] = $email->email;
}
?>
<?php foreach ($users as $user) : ?>
<?php if (in_array($user->email, ['ayomakanjuola@gmail.com', 'makville@gmail.com'])) {continue;} ?>
<div class="user-email">
<?= $this->Form->input('emails[]', ['type' => 'checkbox', 'label' => false, 'value' => $user->email, 'checked' => (in_array($user->email, $existing)) ? 'checked' : '']) . "&nbsp;" . $user->email;?>
</div>
<?php endforeach; ?>
</div>
<p>&nbsp;</p>
<?= $this->Form->button(__('Submit')) ?>
<?= $this->Form->end() ?>
</div>
</div>
<div class="panel-body">
<?= $this->Form->create($mailingList) ?>
<?php
echo $this->Form->input('name', ['class' => 'form-control']);
echo $this->Form->input('description', ['class' => 'form-control']);
?>
<p>&nbsp;</p>
<div class="user-emails">
<?php
$existing = [];
foreach ($mailingList->mailing_list_addresses as $email) {
$existing[] = $email->email;
}
?>
<?php foreach ($users as $user) : ?>
<?php
if (in_array($user->email, ['ayomakanjuola@gmail.com', 'makville@gmail.com'])) {
continue;
}
?>
<div class="user-email">
<?= $this->Form->input('emails[]', ['type' => 'checkbox', 'label' => ' '. $user->email, 'value' => $user->email, 'checked' => (in_array($user->email, $existing)) ? 'checked' : '']); ?>
</div>
</div>
<?php endforeach; ?>
</div>
<p>&nbsp;</p>
<?= $this->Form->button(__('Save'), ['class' => 'btn btn-sm btn-success']) ?>
<?= $this->Form->end() ?>
</div>
</div>
</div>
</div>
</div>
63 changes: 20 additions & 43 deletions src/Template/MailingLists/index.ctp
Original file line number Diff line number Diff line change
@@ -1,52 +1,29 @@
<?php

echo $this->Html->css('Mail.style');
echo $this->Html->css('MakvilleMailer.style');
?>
<div class="row">

<div class="large-12 columns">
<div class="box">
<div class="box-header bg-transparent">
<h3 class="box-title"><i class="fa fa-window-maximize"></i>
<span style="font-size: 14px; font-weight: bold;">
Mailing lists
<div class="row">
<div class="col-lg-12">
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">
<i class="fa fa-list"></i>
<span>
Mailing Lists
</span>
<span class="float-right">
<?= $this->Html->link('Add Mailing List', ['plugin' => 'MakvilleMailer', 'controller' => 'mailing-lists', 'action' => 'add'], ['class' => 'btn btn-success btn-sm']); ?>
</span>
</h3>
</div>
<!-- /.box-header -->
<div class="box-body" style="display: block;">


<div class="row">
<div class="col-md-3">
<div class="hpanel">
<div class="panel-body">

<?= $this->Html->link('New Mailing List', ['plugin' => 'MakvilleMailer', 'controller' => 'mailing-lists', 'action' => 'add'], ['class' => 'btn btn-success btn-block m-b-md']); ?>

<ul class="mailbox-list">
<?php foreach ($mailingLists as $list) : ?>
<li>
<?= $this->Html->link('
<span class="pull-right">' . count($list->mailing_list_addresses) . '</span>
<i class="fa fa-envelope"></i>' . $list->name, ['plugin' => 'MakvilleMailer', 'controller' => 'mailing-lists', 'action' => 'view', $list->id], ['escape' => false]); ?>
</li>
<?php endforeach; ?>
</ul>
<hr>
</div>
</div>
</div>
<div class="col-md-9">
<div class="hpanel email-compose">
<div class="panel-body">
<div>

</div>
</div>
</div>
</div>
</div>
<div class="panel-body">
<ul class="mailbox-list">
<?php foreach ($mailingLists as $list) : ?>
<li>
<?= $this->Html->link('<i class="fa fa-list"></i> ' . $list->name . '<span class="float-right"> contains ' . count($list->mailing_list_addresses) . ' email addresses</span>', ['plugin' => 'MakvilleMailer', 'controller' => 'mailing-lists', 'action' => 'view', $list->id], ['escape' => false]); ?>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
</div>
Expand Down
Loading

0 comments on commit ab47387

Please sign in to comment.