Merge branch '3.4' into 3

This commit is contained in:
Robbie Averill 2019-08-15 09:46:26 +12:00
commit 8db2e681a2
5 changed files with 56 additions and 3 deletions

View File

@ -0,0 +1,13 @@
## Configuring featured images
By default, featured images for the blog are uploaded to the default SilverStripe location.
If you prefer, you can specify a directory into which featured images will be uploaded by adding the following to your project's config:
```yaml
SilverStripe\Blog\Model\BlogPost:
featured_images_directory: 'blog-images'
```
replacing 'blog-images' with the name of the directory you wish to use.

View File

@ -5,6 +5,7 @@
* [Configuring blog when on large websites](configuring-large-websites.md)
* [Configuring widgets](configuring-widgets.md)
* [Configuring pagination](configuring-pagination.md)
* [Configuring featured image uploads](configuring-featured-images.md)
## CMS user help
* [User guide](userguide/index.md)

View File

@ -37,6 +37,13 @@ class GridFieldAddByDBField implements GridField_ActionProvider, GridField_HTMLP
*/
protected $dataObjectField = 'Title';
/**
* Name for the buttons displayed in the CMS
*
* @var string
*/
protected $buttonName;
/**
* Creates a text field and add button which allows the user to directly create a new
* DataObject by just entering the title.
@ -142,6 +149,19 @@ class GridFieldAddByDBField implements GridField_ActionProvider, GridField_HTMLP
return $this->dataObjectField;
}
/**
* Set the button name
*
* @param $name string
* @return $this
*/
public function setButtonName($name)
{
$this->buttonName = $name;
return $this;
}
/**
* Set the database field.
*
@ -188,6 +208,12 @@ class GridFieldAddByDBField implements GridField_ActionProvider, GridField_HTMLP
->setAttribute('placeholder', $obj->fieldLabel($dbField))
->addExtraClass('no-change-track');
if (!$this->buttonName) {
// provide a default button name, can be changed by calling {@link setButtonName()} on this component
$objectName = $obj->i18n_singular_name();
$this->buttonName = _t(__CLASS__ . '.ButtonName', '{name}', ['name' => $objectName]);
}
$addAction = GridField_FormAction::create(
$gridField,
'add',
@ -195,7 +221,7 @@ class GridFieldAddByDBField implements GridField_ActionProvider, GridField_HTMLP
__CLASS__ . '.Add',
'Add {name}',
'Add button text',
['name' => $obj->i18n_singular_name()]
['name' => $this->buttonName]
),
'add',
'add'

View File

@ -170,6 +170,14 @@ class BlogPost extends Page
*/
private static $minutes_to_read_wpm = 200;
/**
* Sets the upload directory for featured images to help keep your files organised
*
* @config
* @var string
*/
private static $featured_images_directory = null;
/**
* Determine the role of the given member.
*
@ -236,6 +244,11 @@ class BlogPost extends Page
$uploadField = UploadField::create('FeaturedImage', _t(__CLASS__ . '.FeaturedImage', 'Featured Image'));
$uploadField->getValidator()->setAllowedExtensions(['jpg', 'jpeg', 'png', 'gif']);
$uploadDirectory = $this->config()->get('featured_images_directory');
if ($uploadDirectory != '') {
$uploadField->setFolderName($uploadDirectory);
}
/**
* @var FieldList $fields
*/

View File

@ -160,7 +160,7 @@ class BlogPostTest extends SapphireTest
$archiveLink = $blogPost->getMonthlyArchiveLink($type);
$this->assertContains('archive/', $archiveLink);
$this->assertContains($expected, $archiveLink);
$this->assertStringEndsWith($expected, $archiveLink);
}
/**
@ -182,6 +182,6 @@ class BlogPostTest extends SapphireTest
$archiveLink = $blogPost->getYearlyArchiveLink();
$this->assertContains('archive/', $archiveLink);
$this->assertContains('/2013', $archiveLink);
$this->assertStringEndsWith('/2013', $archiveLink);
}
}