1
0

Multiple recipients and message length option now available.

This commit is contained in:
dmolavi 2011-01-13 15:46:31 -05:00
parent 76c3bca8a8
commit 5df3554732
12 changed files with 132 additions and 90 deletions

View File

@ -34,6 +34,7 @@ class Admin_ecard_Controller extends Admin_Controller {
module::set_var("ecard", "bcc", $form->ecard->bcc->value);
module::set_var("ecard", "subject", $form->ecard->subject->value);
module::set_var("ecard", "message", $form->ecard->message->value);
module::set_var("ecard", "max_length", $form->ecard->max_length->value);
module::set_var("ecard", "access_permissions", $form->ecard->access_permissions->value);
module::set_var("ecard", "location", $form->ecard->location->value);
message::success(t("eCard settings updated"));
@ -54,8 +55,11 @@ class Admin_ecard_Controller extends Admin_Controller {
->value(module::get_var("ecard", "bcc", ""));
$ecard_settings->input("subject")->label(t("E-mail subject"))
->value(module::get_var("ecard", "subject"));
$ecard_settings->textarea("message")->label(t("E-mail message. Valid keywords are \"%toname\" (recipient's name) and \"%fromname\" (sender's name))"))
$ecard_settings->textarea("message")->label(t("E-mail message. Valid keywords are \"%fromname\" (sender's name))"))
->value(module::get_var("ecard", "message"));
$ecard_settings->input("max_length")
->label(t("Maximum message length"))
->value(module::get_var("ecard","max_length"));
$ecard_settings->dropdown("access_permissions")
->label(t("Who can send eCards?"))
->options(array("everybody" => t("Everybody"),

View File

@ -40,32 +40,33 @@ class Ecard_Controller extends Controller {
}
if ($valid) {
$v = new View("ecard_email.html");
$v->item = $item;
$v->subject = module::get_var("ecard", "subject");
$to_name = $form->send_ecard->to_name->value;
$from_name = $form->send_ecard->from_name->value;
$bcc = module::get_var("ecard", "bcc");
if($form->send_ecard->send_to_self->checked == true) {
$cc = $form->send_ecard->inputs["from_email"]->value;
}
$v->message = t(module::get_var("ecard", "message"), array("toname" => $to_name, "fromname" => $from_name));
$v->custom_message = $form->send_ecard->text->value;
$v->image = $item->name;
$to = $form->send_ecard->inputs["to_email"]->value;
$from = $form->send_ecard->inputs["from_email"]->value;
$headers = array("from" => $from_name."<".$from.">", "to" => $to, "subject" => module::get_var("ecard", "subject"));
require_once(MODPATH. "ecard/lib/mime.php");
$mime = new Mail_mime("\n");
$mime->setHTMLBody($v->render());
$mime->addHTMLImage($item->resize_path(),$item->mime_type,$item->name);
$body = $mime->get(array('html_charset' => 'UTF-8', 'text_charset' => 'UTF-8','text_encoding' => '8bit','head_charset' => 'UTF-8'));
self::_notify($headers['to'], $headers['from'], $headers['subject'], $item, $body, $mime->headers(), $bcc, $cc);
$to_array = explode(",",$form->send_ecard->inputs["to_email"]->value);
foreach($to_array as $to) {
$v = new View("ecard_email.html");
$v->item = $item;
$v->subject = module::get_var("ecard", "subject");
$from_name = $form->send_ecard->from_name->value;
$bcc = module::get_var("ecard", "bcc");
if($form->send_ecard->send_to_self->checked == true) {
$cc = $form->send_ecard->inputs["from_email"]->value;
}
$v->message = t(module::get_var("ecard", "message"), array("fromname" => $from_name));
$v->custom_message = $form->send_ecard->text->value;
$v->image = $item->name;
$from = $form->send_ecard->inputs["from_email"]->value;
$headers = array("from" => $from_name."<".$from.">", "to" => $to, "subject" => module::get_var("ecard", "subject"));
require_once(MODPATH. "ecard/lib/mime.php");
$mime = new Mail_mime("\n");
$mime->setHTMLBody($v->render());
$mime->addHTMLImage($item->resize_path(),$item->mime_type,$item->name);
$body = $mime->get(array('html_charset' => 'UTF-8', 'text_charset' => 'UTF-8','text_encoding' => '8bit','head_charset' => 'UTF-8'));
self::_notify($headers['to'], $headers['from'], $headers['subject'], $item, $body, $mime->headers(), $bcc, $cc);
}
message::success("eCard successfully sent");
json::reply(array("result" => "success"));
} else {
} else {
json::reply(array("result" => "error", "html" => (string) $form));
}
}
}
/**
* Present a form for sending a new ecard.
@ -76,7 +77,9 @@ class Ecard_Controller extends Controller {
if (!ecard::can_send_ecard()) {
access::forbidden();
}
print ecard::prefill_send_form(ecard::get_send_form($item));
$v_form = new View("ecard_form.html");
$v_form->item_id = $item_id;
print $v_form->render();
}
private static function _notify($to, $from, $subject, $item, $text, $headers, $bcc, $cc) {
$sendmail = Sendmail::factory();

View File

@ -24,8 +24,8 @@
* Note: by design, this class does not do any permission checking.
*/
class ecard_Core {
static function get_send_form($item) {
$form = new Forge("ecard/send/{$item->id}", "", "post", array("id" => "g-ecard-form"));
static function get_send_form($item_id) {
$form = new Forge("ecard/send/{$item_id}", "", "post", array("id" => "g-ecard-form"));
$group = $form->group("send_ecard")->label(t("Send eCard"));
$group->input("from_name")
->label(t("Your name"))
@ -38,28 +38,22 @@ class ecard_Core {
->rules("required|valid_email")
->error_messages("required", t("You must enter a valid email address"))
->error_messages("invalid", t("You must enter a valid email address"));
$group->input("to_name")
->label(t("Recipient's Name"))
->id("g-recipient")
->rules("required")
->error_messages("required", t("You must enter a recipient's name"));
$group->input("to_email")
->label(t("Recipient's e-mail"))
->label(t("Recipient's e-mail. Separate multiple recipients with a comma."))
->id("g-recip-email")
->rules("required|valid_email")
->error_messages("required", t("You must enter a valid email address"))
->error_messages("invalid", t("You must enter a valid email address"));
->rules("required")
->error_messages("required", t("You must enter a valid email address"));
$group->textarea("text")
->label(t("Message (255 chars max)"))
->label(t("Message (".module::get_var("ecard","max_length")." chars max)"))
->id("g-text")
->rules("required|length[0,255]")
->error_messages("required", t("You must enter a message"))
->error_messages("length", t("Your message is too long, please shorten."));
->maxlength(module::get_var("ecard","max_length"))
->rules("required")
->error_messages("required", t("You must enter a message"));
$group->checkbox("send_to_self")
->label(t("Send yourself a copy"))
->value(true)
->checked(false);
$group->hidden("item_id")->value($item->id);
$group->hidden("item_id")->value($item_id);
module::event("ecard_send_form", $form);
module::event("captcha_protect_form", $form);
$group->submit("")->value(t("Send"))->class("ui-state-default ui-corner-all");

View File

@ -18,13 +18,32 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class ecard_installer {
private static function getversion() {
return 9;
}
private static function setversion() {
module::set_version("ecard", self::getversion());
}
static function install() {
module::set_var("ecard", "subject", "You have been sent an eCard");
module::set_var("ecard", "message",
"Hello %toname, \r\n%fromname has sent you an eCard. " .
"Hello, \r\n%fromname has sent you an eCard. " .
"Click the image to be taken to the gallery.");
module::set_var("ecard", "bcc", "");
module::set_var("ecard", "access_permissions", "everybody");
module::set_version("ecard", 7);
module::set_var("ecard","max_length",255);
self::setversion();
}
static function upgrade($version) {
if($version <= 8) {
module::set_var("ecard", "message",
"Hello, \r\n%fromname has sent you an eCard. " .
"Click the image to be taken to the gallery.");
module::set_var("ecard","max_length",255);
}
self::setversion();
}
}

View File

@ -1,4 +1,4 @@
name = "E-Card"
description = "Send a photo as a postcard"
version = 7
version = 9

View File

@ -0,0 +1 @@
<?php defined("SYSPATH") or die("No direct script access.") ?> <html> <head> <title>Send eCard</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('textarea').keyup(function(){ var message = document.getElementById("g-text"); var max = parseInt($(message).attr('maxlength')); if($(message).val().length > max){ $(message).val($(message).val().substr(0, $(message).attr('maxlength'))); } $(document).find('.charsRemaining').html('Message (You have ' + (max - $(message).val().length) + ' characters remaining)'); }); }); </script> </head> <body> <?= ecard::prefill_send_form(ecard::get_send_form($item_id)); ?> </body> </html>

View File

@ -34,6 +34,7 @@ class Admin_ecard_Controller extends Admin_Controller {
module::set_var("ecard", "bcc", $form->ecard->bcc->value);
module::set_var("ecard", "subject", $form->ecard->subject->value);
module::set_var("ecard", "message", $form->ecard->message->value);
module::set_var("ecard", "max_length", $form->ecard->max_length->value);
module::set_var("ecard", "access_permissions", $form->ecard->access_permissions->value);
module::set_var("ecard", "location", $form->ecard->location->value);
message::success(t("eCard settings updated"));
@ -54,8 +55,11 @@ class Admin_ecard_Controller extends Admin_Controller {
->value(module::get_var("ecard", "bcc", ""));
$ecard_settings->input("subject")->label(t("E-mail subject"))
->value(module::get_var("ecard", "subject"));
$ecard_settings->textarea("message")->label(t("E-mail message. Valid keywords are \"%toname\" (recipient's name) and \"%fromname\" (sender's name))"))
$ecard_settings->textarea("message")->label(t("E-mail message. Valid keywords are \"%fromname\" (sender's name))"))
->value(module::get_var("ecard", "message"));
$ecard_settings->input("max_length")
->label(t("Maximum message length"))
->value(module::get_var("ecard","max_length"));
$ecard_settings->dropdown("access_permissions")
->label(t("Who can send eCards?"))
->options(array("everybody" => t("Everybody"),

View File

@ -40,32 +40,33 @@ class Ecard_Controller extends Controller {
}
if ($valid) {
$v = new View("ecard_email.html");
$v->item = $item;
$v->subject = module::get_var("ecard", "subject");
$to_name = $form->send_ecard->to_name->value;
$from_name = $form->send_ecard->from_name->value;
$bcc = module::get_var("ecard", "bcc");
if($form->send_ecard->send_to_self->checked == true) {
$cc = $form->send_ecard->inputs["from_email"]->value;
}
$v->message = t(module::get_var("ecard", "message"), array("toname" => $to_name, "fromname" => $from_name));
$v->custom_message = $form->send_ecard->text->value;
$v->image = $item->name;
$to = $form->send_ecard->inputs["to_email"]->value;
$from = $form->send_ecard->inputs["from_email"]->value;
$headers = array("from" => $from_name."<".$from.">", "to" => $to, "subject" => module::get_var("ecard", "subject"));
require_once(MODPATH. "ecard/lib/mime.php");
$mime = new Mail_mime("\n");
$mime->setHTMLBody($v->render());
$mime->addHTMLImage($item->resize_path(),$item->mime_type,$item->name);
$body = $mime->get(array('html_charset' => 'UTF-8', 'text_charset' => 'UTF-8','text_encoding' => '8bit','head_charset' => 'UTF-8'));
self::_notify($headers['to'], $headers['from'], $headers['subject'], $item, $body, $mime->headers(), $bcc, $cc);
$to_array = explode(",",$form->send_ecard->inputs["to_email"]->value);
foreach($to_array as $to) {
$v = new View("ecard_email.html");
$v->item = $item;
$v->subject = module::get_var("ecard", "subject");
$from_name = $form->send_ecard->from_name->value;
$bcc = module::get_var("ecard", "bcc");
if($form->send_ecard->send_to_self->checked == true) {
$cc = $form->send_ecard->inputs["from_email"]->value;
}
$v->message = t(module::get_var("ecard", "message"), array("fromname" => $from_name));
$v->custom_message = $form->send_ecard->text->value;
$v->image = $item->name;
$from = $form->send_ecard->inputs["from_email"]->value;
$headers = array("from" => $from_name."<".$from.">", "to" => $to, "subject" => module::get_var("ecard", "subject"));
require_once(MODPATH. "ecard/lib/mime.php");
$mime = new Mail_mime("\n");
$mime->setHTMLBody($v->render());
$mime->addHTMLImage($item->resize_path(),$item->mime_type,$item->name);
$body = $mime->get(array('html_charset' => 'UTF-8', 'text_charset' => 'UTF-8','text_encoding' => '8bit','head_charset' => 'UTF-8'));
self::_notify($headers['to'], $headers['from'], $headers['subject'], $item, $body, $mime->headers(), $bcc, $cc);
}
message::success("eCard successfully sent");
json::reply(array("result" => "success"));
} else {
} else {
json::reply(array("result" => "error", "html" => (string) $form));
}
}
}
/**
* Present a form for sending a new ecard.
@ -76,7 +77,9 @@ class Ecard_Controller extends Controller {
if (!ecard::can_send_ecard()) {
access::forbidden();
}
print ecard::prefill_send_form(ecard::get_send_form($item));
$v_form = new View("ecard_form.html");
$v_form->item_id = $item_id;
print $v_form->render();
}
private static function _notify($to, $from, $subject, $item, $text, $headers, $bcc, $cc) {
$sendmail = Sendmail::factory();
@ -89,7 +92,7 @@ class Ecard_Controller extends Controller {
}
if(isset($cc)) {
$sendmail->header("cc",$cc);
}
}
foreach($headers as $key => $value) {
$sendmail->header($key,$value);
}

View File

@ -24,8 +24,8 @@
* Note: by design, this class does not do any permission checking.
*/
class ecard_Core {
static function get_send_form($item) {
$form = new Forge("ecard/send/{$item->id}", "", "post", array("id" => "g-ecard-form"));
static function get_send_form($item_id) {
$form = new Forge("ecard/send/{$item_id}", "", "post", array("id" => "g-ecard-form"));
$group = $form->group("send_ecard")->label(t("Send eCard"));
$group->input("from_name")
->label(t("Your name"))
@ -38,28 +38,22 @@ class ecard_Core {
->rules("required|valid_email")
->error_messages("required", t("You must enter a valid email address"))
->error_messages("invalid", t("You must enter a valid email address"));
$group->input("to_name")
->label(t("Recipient's Name"))
->id("g-recipient")
->rules("required")
->error_messages("required", t("You must enter a recipient's name"));
$group->input("to_email")
->label(t("Recipient's e-mail"))
->label(t("Recipient's e-mail. Separate multiple recipients with a comma."))
->id("g-recip-email")
->rules("required|valid_email")
->error_messages("required", t("You must enter a valid email address"))
->error_messages("invalid", t("You must enter a valid email address"));
->rules("required")
->error_messages("required", t("You must enter a valid email address"));
$group->textarea("text")
->label(t("Message (255 chars max)"))
->label(t("Message (".module::get_var("ecard","max_length")." chars max)"))
->id("g-text")
->rules("required|length[0,255]")
->error_messages("required", t("You must enter a message"))
->error_messages("length", t("Your message is too long, please shorten."));
->maxlength(module::get_var("ecard","max_length"))
->rules("required")
->error_messages("required", t("You must enter a message"));
$group->checkbox("send_to_self")
->label(t("Send yourself a copy"))
->value(true)
->checked(false);
$group->hidden("item_id")->value($item->id);
->checked(false);
$group->hidden("item_id")->value($item_id);
module::event("ecard_send_form", $form);
module::event("captcha_protect_form", $form);
$group->submit("")->value(t("Send"))->class("ui-state-default ui-corner-all");

View File

@ -18,13 +18,32 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class ecard_installer {
private static function getversion() {
return 9;
}
private static function setversion() {
module::set_version("ecard", self::getversion());
}
static function install() {
module::set_var("ecard", "subject", "You have been sent an eCard");
module::set_var("ecard", "message",
"Hello %toname, \r\n%fromname has sent you an eCard. " .
"Hello, \r\n%fromname has sent you an eCard. " .
"Click the image to be taken to the gallery.");
module::set_var("ecard", "bcc", "");
module::set_var("ecard", "access_permissions", "everybody");
module::set_version("ecard", 7);
module::set_var("ecard","max_length",255);
self::setversion();
}
static function upgrade($version) {
if($version <= 8) {
module::set_var("ecard", "message",
"Hello, \r\n%fromname has sent you an eCard. " .
"Click the image to be taken to the gallery.");
module::set_var("ecard","max_length",255);
}
self::setversion();
}
}

View File

@ -1,4 +1,4 @@
name = "E-Card"
description = "Send a photo as a postcard"
version = 7
version = 9

View File

@ -0,0 +1 @@
<?php defined("SYSPATH") or die("No direct script access.") ?> <html> <head> <title>Send eCard</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('textarea').keyup(function(){ var message = document.getElementById("g-text"); var max = parseInt($(message).attr('maxlength')); if($(message).val().length > max){ $(message).val($(message).val().substr(0, $(message).attr('maxlength'))); } $(document).find('.charsRemaining').html('Message (You have ' + (max - $(message).val().length) + ' characters remaining)'); }); }); </script> </head> <body> <?= ecard::prefill_send_form(ecard::get_send_form($item_id)); ?> </body> </html>