diff --git a/docs/en/reference/image.md b/docs/en/reference/image.md index 14a89ca78..b7b1bd4b3 100644 --- a/docs/en/reference/image.md +++ b/docs/en/reference/image.md @@ -31,12 +31,14 @@ your tmp folder. // values $image->getHeight() // Returns the height of the image. $image->getWidth() // Returns the width of the image - $image->getOrienation() // Returns a class constant: ORIENTATION_SQUARE or ORIENTATION_PORTRAIT or ORIENTATION_LANDSCAPE + $image->getOrientation() // Returns a class constant: ORIENTATION_SQUARE or ORIENTATION_PORTRAIT or ORIENTATION_LANDSCAPE You can also create your own functions by extending the image class, for example :::php + rotate(90); @@ -101,18 +103,21 @@ For output of an image tag with the image automatically resized to 80px width, y ### Form Upload For usage on a website form, see `[api:SimpleImageField]`. + If you want to upload images within the CMS, see `[api:ImageField]`. ### Clearing Thumbnail Cache Images are (like all other Files) synchronized with the SilverStripe database. + This syncing happens whenever you load the "Files & Images" interface, and whenever you upload or modify an Image through SilverStripe. If you encounter problems with images not appearing, or have mysteriously disappeared, you can try manually flushing the image cache. - http://www.mysite.com/images/flush + http://www.mysite.com/dev/tasks/FlushGeneratedImagesTask ## API Documentation + `[api:Image]` diff --git a/docs/en/reference/versioned.md b/docs/en/reference/versioned.md index 5e269be21..aa5398719 100644 --- a/docs/en/reference/versioned.md +++ b/docs/en/reference/versioned.md @@ -7,20 +7,6 @@ The Versioned class is a `[api:DataObject]` that adds versioning and staging cap Sometimes, you'll want to do something whenever a particular kind of page is published. This example sends an email whenever a blog entry has been published. -*SilverStripe 2.3* - - :::php - class Page extends SiteTree { - // ... - function publish($fromStage, $toStage, $createNewVersion = false) { - mail("sam@silverstripe.com", "Blog published", "The blog has been published"); - return $this->extension_instances['Versioned']->publish($fromStage, $toStage, $createNewVersion); - } - } - - -*SilverStripe 2.4* - :::php class Page extends SiteTree { // ... @@ -28,4 +14,5 @@ whenever a blog entry has been published. mail("sam@silverstripe.com", "Blog published", "The blog has been published"); parent::onAfterPublish(); } - } \ No newline at end of file + } + diff --git a/docs/en/topics/email.md b/docs/en/topics/email.md index c4ffd699c..35a84e10f 100644 --- a/docs/en/topics/email.md +++ b/docs/en/topics/email.md @@ -1,22 +1,25 @@ # Email SilverStripe has emailing functionality using the built-in mail() function in PHP. -Features include sending plaintext- and HTML emails, sending bulk emails, subscription, handling bounced back emails. +Features include sending plaintext- and HTML emails, sending bulk emails, +subscription, handling bounced back emails. ## Configuration Your PHP configuration needs to include the SMTP module for sending emails. -If you are not running an SMTP server together with your webserver, you might need to setup PHP with the credentials for -an external SMTP server (see [PHP documentation for mail()](http://php.net/mail)). +If you are not running an SMTP server together with your webserver, you might +need to setup PHP with the credentials for an external SMTP server +(see [PHP documentation for mail()](http://php.net/mail)). ## Usage ### Sending combined HTML and Plaintext By default, emails are sent in both HTML and Plaintext format. -A plaintext representation is automatically generated from the system -by stripping HTML markup, or transforming it where possible -(e.g. `text` is converted to `*text*`). + +A plaintext representation is automatically generated from the system by stripping +HTML markup, or transforming it where possible (e.g. `text` is +converted to `*text*`). :::php $email = new Email($from, $to, $subject, $body); @@ -31,29 +34,48 @@ The default HTML template is located in `sapphire/templates/email/GenericEmail.s $email = new Email($from, $to, $subject, $body); $email->sendPlain(); -### Templates +### Custom Template -**Requirements: SilverStripe 2.3+** +The emails you create may contain quite a bit of content and perhaps custom elements, +background images and generally be too complex to write out in PHP code. -* Create a SS-template file called, in this example we will use 'MyEmail.ss' inside `mysite/templates/email`. -* Fill this out with the body text for your email. You can use any [SS-template syntax](/topics/templates) (e.g. `<% control %>`, -`<% if %>`, $FirstName etc) -* Choose your template with **setTemplate()** -* Populate any custom data into the template before sending with **populateTemplate()** +To support this you can specify a [SilverStripe Template](/topics/templates) to be used +instead of the built in GenericEmail.ss file. + +* Create a 'MyEmailTemplate.ss' file inside `mysite/templates/email`. +* Fill MyEmailTemplate.ss with what you need to include. You can use any of the [SilverStripe Template syntax](/topics/templates) + (e.g. `<% control %>`, `<% if %>`, $FirstName etc). Such as the following: + + :::ss +
$WelcomeMessage
+ +The above is a simple hello email that prints out the first name of the user and +a welcome message. We're not finished quite yet, there is a couple things we need +to do: + +* Before you call `send()` on your email, set the template with `setTemplate()` +* Populate any custom data into the template with `populateTemplate()` again, +you need to do this before you call `send()`. In this example above, we used 2 +fields - `$FirstName` and `$WelcomeMessage` so we need to ensure they are populated: :::php - $email = new Email($from, $to, $subject, $body); - $email->setTemplate('MyEmail'); + $email = new Email("from@example.com", "to@example.com", "Welcome to mysite"); - // You can call this multiple times or bundle everything into an array, including DataSetObjects + // sets the template to be used - MyEmail.ss. + $email->setTemplate('MyEmailTemplate'); + + // You can call populateTemplate multiple times or bundle everything into an array, + // including DataSetObjects. + + // Member::currentUser() includes $FirstName $email->populateTemplate(Member::currentUser()); - $welcomeMsg = 'Thank you for joining on '.date('Y-m-d'.'!'; - $email->populateTemplate( - array( - 'WelcomeMessage' => $welcomeMsg, // Accessible in template via $WelcomeMessage - ) - ); + $welcomeMsg = 'Thank you for joining on '.date('Y-m-d').'!'; + + $email->populateTemplate(array( + 'WelcomeMessage' => $welcomeMsg, + )); $email->send(); @@ -71,30 +93,38 @@ Class definition: $from = 'email@email.com', $ss_template = 'MyEmail'; } - ?> - Usage: :::php - populateTemplate(Member::currentUser()); // This will populate the template, $to, $from etc variables if they exist - $email->send(); // Will immediately send an HTML email with appropriate plain-text content - ?> + $email->send(); ### Administrator Emails -The static function `Email::setAdminEmail()` can be called from a `_config.php` file to set the address that these -emails should originate from. This address is used if the `from` field is empty. +The static function `Email::setAdminEmail()` can be called from a `_config.php` +file to set the address that these emails should originate from. This address +is used if the `from` field is empty. ### Redirecting Emails -* `Email::send_all_emails_to($address)` will redirect all emails sent to the given address. Handy for testing! -* `Email::cc_all_emails_to()` and `Email::bcc_all_emails_to()` will keep the email going to its original recipients, but -add an additional recipient in the BCC/CC header. Good for monitoring system-generated correspondence on the live -systems. +`Email::send_all_emails_to($address)` will redirect all emails sent to the given +address. We recommend using this in your local development environment. You can +either configure this in your mysite/_config.php: + + :::php + if(Director::isDev()) Email::send_all_emails_to("me@example.com"); + +If you use a [SilverStripe Environment](environment-management) file to manage your +configuration then you should include the following in your development copy: + + :::php + define('SS_SEND_ALL_EMAILS_TO', 'me@example.com'); + +`Email::cc_all_emails_to()` and `Email::bcc_all_emails_to()` will keep the email +going to its original recipients, but adds an additional recipient in the BCC/CC +header. :::php if(Director::isLive()) Email::bcc_all_emails_to("client@example.com"); diff --git a/docs/en/tutorials/5-dataobject-relationship-management.md b/docs/en/tutorials/5-dataobject-relationship-management.md index dcd633756..517024a23 100644 --- a/docs/en/tutorials/5-dataobject-relationship-management.md +++ b/docs/en/tutorials/5-dataobject-relationship-management.md @@ -8,8 +8,8 @@ the *Image* table by storing the id of the respective *Image* in the first table relations between [DataObjects](/topics/datamodel#relations) and the way to manage them easily.