mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-05 07:38:26 +02:00
Merge remote-tracking branch 'origin/3.1'
Conflicts: model/Image.php
This commit is contained in:
commit
9eab893e7c
@ -52,7 +52,7 @@ handle the new code. Here are some specifics situations:
|
|||||||
## My edited CMS content doesn't show on the website
|
## My edited CMS content doesn't show on the website
|
||||||
|
|
||||||
If you've set up your site and it used to be working, but now it's suddenly totally broken, you may have forgotten to
|
If you've set up your site and it used to be working, but now it's suddenly totally broken, you may have forgotten to
|
||||||
publish your draft content. Go to the CMS and use the "publish" button. You can visit `admin/publishall` to publish
|
publish your draft content. Go to the CMS and use the "publish" button. You can visit `admin/pages/publishall` to publish
|
||||||
every page on the site, if that's easier.
|
every page on the site, if that's easier.
|
||||||
|
|
||||||
## I can see unparsed PHP output in my browser
|
## I can see unparsed PHP output in my browser
|
||||||
|
@ -59,7 +59,7 @@ Redirections](security#redirect_back_to_another_page_after_login) for more infor
|
|||||||
| Site URL | | Action |
|
| Site URL | | Action |
|
||||||
| -------- | | ------ |
|
| -------- | | ------ |
|
||||||
| http://yoursite.com**/dev/build** | | Rebuild the entire database and manifest, see below for additional URL Variables |
|
| http://yoursite.com**/dev/build** | | Rebuild the entire database and manifest, see below for additional URL Variables |
|
||||||
| http://yoursite.com**/admin/publishall/** | | Publish all pages on the site
|
| http://yoursite.com**/admin/pages/publishall/** | | Publish all pages on the site
|
||||||
|
|
||||||
### /dev/build
|
### /dev/build
|
||||||
|
|
||||||
|
@ -351,7 +351,6 @@ class GDBackend extends Object implements Image_Backend {
|
|||||||
*/
|
*/
|
||||||
public function paddedResize($width, $height, $backgroundColor = "FFFFFF") {
|
public function paddedResize($width, $height, $backgroundColor = "FFFFFF") {
|
||||||
if(!$this->gd) return;
|
if(!$this->gd) return;
|
||||||
|
|
||||||
$width = round($width);
|
$width = round($width);
|
||||||
$height = round($height);
|
$height = round($height);
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class CheckboxField_Readonly extends ReadonlyField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function Value() {
|
public function Value() {
|
||||||
return Convert::raw2xml($this->value ? _t('CheckboxField.YES', 'Yes') : _t('CheckboxField.NO', 'No'));
|
return Convert::raw2xml($this->value ? _t('CheckboxField.YESANSWER', 'Yes') : _t('CheckboxField.NOANSWER', 'No'));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -60,8 +60,8 @@ en:
|
|||||||
ERRORNOTREC: 'That username / password isn''t recognised'
|
ERRORNOTREC: 'That username / password isn''t recognised'
|
||||||
Boolean:
|
Boolean:
|
||||||
ANY: Any
|
ANY: Any
|
||||||
NO: No
|
NOANSWER: No
|
||||||
YES: Yes
|
YESANSWER: Yes
|
||||||
CMSLoadingScreen.ss:
|
CMSLoadingScreen.ss:
|
||||||
LOADING: Loading...
|
LOADING: Loading...
|
||||||
REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
|
REQUIREJS: 'The CMS requires that you have JavaScript enabled.'
|
||||||
@ -79,8 +79,8 @@ en:
|
|||||||
HELLO: Hi
|
HELLO: Hi
|
||||||
PASSWORD: Password
|
PASSWORD: Password
|
||||||
CheckboxField:
|
CheckboxField:
|
||||||
NO: No
|
NOANSWER: No
|
||||||
YES: Yes
|
YESANSWER: Yes
|
||||||
ComplexTableField:
|
ComplexTableField:
|
||||||
CLOSEPOPUP: 'Close Popup'
|
CLOSEPOPUP: 'Close Popup'
|
||||||
SUCCESSADD2: 'Added {name}'
|
SUCCESSADD2: 'Added {name}'
|
||||||
|
@ -346,10 +346,10 @@ class Image extends File {
|
|||||||
* @param integer $height The height to size to
|
* @param integer $height The height to size to
|
||||||
* @return Image
|
* @return Image
|
||||||
*/
|
*/
|
||||||
public function PaddedImage($width, $height) {
|
public function PaddedImage($width, $height, $backgroundColor=null) {
|
||||||
return $this->isSize($width, $height)
|
return $this->isSize($width, $height)
|
||||||
? $this
|
? $this
|
||||||
: $this->getFormattedImage('PaddedImage', $width, $height);
|
: $this->getFormattedImage('PaddedImage', $width, $height, $backgroundColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -360,8 +360,8 @@ class Image extends File {
|
|||||||
* @param integer $height The height to size to
|
* @param integer $height The height to size to
|
||||||
* @return Image_Backend
|
* @return Image_Backend
|
||||||
*/
|
*/
|
||||||
public function generatePaddedImage(Image_Backend $backend, $width, $height) {
|
public function generatePaddedImage(Image_Backend $backend, $width, $height, $backgroundColor=null) {
|
||||||
return $backend->paddedResize($width, $height);
|
return $backend->paddedResize($width, $height, $backgroundColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -399,17 +399,20 @@ class Image extends File {
|
|||||||
* Return an image object representing the image in the given format.
|
* Return an image object representing the image in the given format.
|
||||||
* This image will be generated using generateFormattedImage().
|
* This image will be generated using generateFormattedImage().
|
||||||
* The generated image is cached, to flush the cache append ?flush=1 to your URL.
|
* The generated image is cached, to flush the cache append ?flush=1 to your URL.
|
||||||
|
*
|
||||||
|
* Just pass the correct number of parameters expected by the working function
|
||||||
|
*
|
||||||
* @param string $format The name of the format.
|
* @param string $format The name of the format.
|
||||||
* @param string $arg1 An argument to pass to the generate function.
|
|
||||||
* @param string $arg2 A second argument to pass to the generate function.
|
|
||||||
* @return Image_Cached
|
* @return Image_Cached
|
||||||
*/
|
*/
|
||||||
public function getFormattedImage($format, $arg1 = null, $arg2 = null) {
|
public function getFormattedImage($format) {
|
||||||
|
$args = func_get_args();
|
||||||
|
|
||||||
if($this->ID && $this->Filename && Director::fileExists($this->Filename)) {
|
if($this->ID && $this->Filename && Director::fileExists($this->Filename)) {
|
||||||
$cacheFile = $this->cacheFilename($format, $arg1, $arg2);
|
$cacheFile = call_user_func_array(array($this, "cacheFilename"), $args);
|
||||||
|
|
||||||
if(!file_exists(Director::baseFolder()."/".$cacheFile) || isset($_GET['flush'])) {
|
if(!file_exists(Director::baseFolder()."/".$cacheFile) || isset($_GET['flush'])) {
|
||||||
$this->generateFormattedImage($format, $arg1, $arg2);
|
call_user_func_array(array($this, "generateFormattedImage"), $args);
|
||||||
}
|
}
|
||||||
|
|
||||||
$cached = new Image_Cached($cacheFile);
|
$cached = new Image_Cached($cacheFile);
|
||||||
@ -424,14 +427,14 @@ class Image extends File {
|
|||||||
/**
|
/**
|
||||||
* Return the filename for the cached image, given it's format name and arguments.
|
* Return the filename for the cached image, given it's format name and arguments.
|
||||||
* @param string $format The format name.
|
* @param string $format The format name.
|
||||||
* @param string $arg1 The first argument passed to the generate function.
|
|
||||||
* @param string $arg2 The second argument passed to the generate function.
|
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function cacheFilename($format, $arg1 = null, $arg2 = null) {
|
public function cacheFilename($format) {
|
||||||
|
$args = func_get_args();
|
||||||
|
array_shift($args);
|
||||||
$folder = $this->ParentID ? $this->Parent()->Filename : ASSETS_DIR . "/";
|
$folder = $this->ParentID ? $this->Parent()->Filename : ASSETS_DIR . "/";
|
||||||
|
|
||||||
$format = $format.$arg1.'x'.$arg2;
|
$format = $format.implode('x', $args);
|
||||||
|
|
||||||
return $folder . "_resampled/$format-" . $this->Name;
|
return $folder . "_resampled/$format-" . $this->Name;
|
||||||
}
|
}
|
||||||
@ -442,11 +445,11 @@ class Image extends File {
|
|||||||
* using the specific 'generate' method for the specified format.
|
* using the specific 'generate' method for the specified format.
|
||||||
*
|
*
|
||||||
* @param string $format Name of the format to generate.
|
* @param string $format Name of the format to generate.
|
||||||
* @param string $arg1 Argument to pass to the generate method.
|
|
||||||
* @param string $arg2 A second argument to pass to the generate method.
|
|
||||||
*/
|
*/
|
||||||
public function generateFormattedImage($format, $arg1 = null, $arg2 = null) {
|
public function generateFormattedImage($format) {
|
||||||
$cacheFile = $this->cacheFilename($format, $arg1, $arg2);
|
$args = func_get_args();
|
||||||
|
|
||||||
|
$cacheFile = call_user_func_array(array($this, "cacheFilename"), $args);
|
||||||
|
|
||||||
$backend = Injector::inst()->createWithArgs(self::$backend, array(
|
$backend = Injector::inst()->createWithArgs(self::$backend, array(
|
||||||
Director::baseFolder()."/" . $this->Filename
|
Director::baseFolder()."/" . $this->Filename
|
||||||
@ -456,7 +459,11 @@ class Image extends File {
|
|||||||
|
|
||||||
$generateFunc = "generate$format";
|
$generateFunc = "generate$format";
|
||||||
if($this->hasMethod($generateFunc)){
|
if($this->hasMethod($generateFunc)){
|
||||||
$backend = $this->$generateFunc($backend, $arg1, $arg2);
|
|
||||||
|
array_shift($args);
|
||||||
|
array_unshift($args, $backend);
|
||||||
|
|
||||||
|
$backend = call_user_func_array(array($this, $generateFunc), $args);
|
||||||
if($backend){
|
if($backend){
|
||||||
$backend->writeTo(Director::baseFolder()."/" . $cacheFile);
|
$backend->writeTo(Director::baseFolder()."/" . $cacheFile);
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ class Boolean extends DBField {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function Nice() {
|
public function Nice() {
|
||||||
return ($this->value) ? _t('Boolean.YES', 'Yes') : _t('Boolean.NO', 'No');
|
return ($this->value) ? _t('Boolean.YESANSWER', 'Yes') : _t('Boolean.NOANSWER', 'No');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function NiceAsBoolean() {
|
public function NiceAsBoolean() {
|
||||||
@ -53,8 +53,8 @@ class Boolean extends DBField {
|
|||||||
public function scaffoldSearchField($title = null) {
|
public function scaffoldSearchField($title = null) {
|
||||||
$anyText = _t('Boolean.ANY', 'Any');
|
$anyText = _t('Boolean.ANY', 'Any');
|
||||||
$source = array(
|
$source = array(
|
||||||
1 => _t('Boolean.YES', 'Yes'),
|
1 => _t('Boolean.YESANSWER', 'Yes'),
|
||||||
0 => _t('Boolean.NO', 'No')
|
0 => _t('Boolean.NOANSWER', 'No')
|
||||||
);
|
);
|
||||||
|
|
||||||
$field = new DropdownField($this->name, $title, $source);
|
$field = new DropdownField($this->name, $title, $source);
|
||||||
|
@ -123,18 +123,18 @@ class CheckboxFieldTest extends SapphireTest {
|
|||||||
$field1 = new CheckboxField('IsChecked', 'Checked');
|
$field1 = new CheckboxField('IsChecked', 'Checked');
|
||||||
$field1->setValue('on');
|
$field1->setValue('on');
|
||||||
$copy = $field1->performReadonlyTransformation();
|
$copy = $field1->performReadonlyTransformation();
|
||||||
$this->assertEquals(_t('CheckboxField.YES', 'Yes'),
|
$this->assertEquals(_t('CheckboxField.YESANSWER', 'Yes'),
|
||||||
trim(strip_tags($field1->performReadonlyTransformation()->Field())));
|
trim(strip_tags($field1->performReadonlyTransformation()->Field())));
|
||||||
|
|
||||||
// Test 2: an checkbox with the value set to false to "No"
|
// Test 2: an checkbox with the value set to false to "No"
|
||||||
$field2 = new CheckboxField('IsChecked', 'Checked');
|
$field2 = new CheckboxField('IsChecked', 'Checked');
|
||||||
$field2->setValue(false);
|
$field2->setValue(false);
|
||||||
$this->assertEquals(_t('CheckboxField.NO', 'No'),
|
$this->assertEquals(_t('CheckboxField.NOANSWER', 'No'),
|
||||||
trim(strip_tags($field2->performReadonlyTransformation()->Field())));
|
trim(strip_tags($field2->performReadonlyTransformation()->Field())));
|
||||||
|
|
||||||
// Test 3: an checkbox with no value ever set goes to "No"
|
// Test 3: an checkbox with no value ever set goes to "No"
|
||||||
$field3 = new CheckboxField('IsChecked', 'Checked');
|
$field3 = new CheckboxField('IsChecked', 'Checked');
|
||||||
$this->assertEquals(_t('CheckboxField.NO', 'No'),
|
$this->assertEquals(_t('CheckboxField.NOANSWER', 'No'),
|
||||||
trim(strip_tags($field3->performReadonlyTransformation()->Field())));
|
trim(strip_tags($field3->performReadonlyTransformation()->Field())));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user