From a68fb1f096236abca7f5222fd9f3205363d4c6fc Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 9 Apr 2013 23:00:27 +0200 Subject: [PATCH 1/3] Fixed /admin/pages/publishall link in docs --- docs/en/installation/common-problems.md | 2 +- docs/en/reference/urlvariabletools.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/installation/common-problems.md b/docs/en/installation/common-problems.md index cc77ae684..d4f78c82e 100644 --- a/docs/en/installation/common-problems.md +++ b/docs/en/installation/common-problems.md @@ -50,7 +50,7 @@ handle the new code. Here are some specifics situations: ## 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 -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. ## I can see unparsed PHP output in my browser diff --git a/docs/en/reference/urlvariabletools.md b/docs/en/reference/urlvariabletools.md index e373b149c..8424628f2 100644 --- a/docs/en/reference/urlvariabletools.md +++ b/docs/en/reference/urlvariabletools.md @@ -68,7 +68,7 @@ Redirections](security#redirect_back_to_another_page_after_login) for more infor | Site URL | | Action | | -------- | | ------ | | 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 | | http://yoursite.com**/anypage/images/flush** | | Creates new images for the page by deleting the resized ones and going back to the original to create new resized one | ### /dev/build From c8e8b5147d162b5b52b0d2b73e92f9f5c46a44a7 Mon Sep 17 00:00:00 2001 From: g4b0 Date: Thu, 11 Apr 2013 16:28:38 +0200 Subject: [PATCH 2/3] API: used call_user_func_array in order to have an arbitrary number of parameter for getFormattedImage (fixes #1752) --- filesystem/GD.php | 1 - model/Image.php | 45 ++++++++++++++++++++++++++------------------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/filesystem/GD.php b/filesystem/GD.php index ac28bbd14..e4af07982 100644 --- a/filesystem/GD.php +++ b/filesystem/GD.php @@ -351,7 +351,6 @@ class GDBackend extends Object implements Image_Backend { */ public function paddedResize($width, $height, $backgroundColor = "FFFFFF") { if(!$this->gd) return; - $width = round($width); $height = round($height); diff --git a/model/Image.php b/model/Image.php index d6a900315..0953ed8a7 100644 --- a/model/Image.php +++ b/model/Image.php @@ -346,10 +346,10 @@ class Image extends File { * @param integer $height The height to size to * @return Image */ - public function PaddedImage($width, $height) { + public function PaddedImage($width, $height, $backgroundColor=null) { return $this->isSize($width, $height) ? $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 * @return Image_Backend */ - public function generatePaddedImage(Image_Backend $backend, $width, $height) { - return $backend->paddedResize($width, $height); + public function generatePaddedImage(Image_Backend $backend, $width, $height, $backgroundColor=null) { + 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. * This image will be generated using generateFormattedImage(). * 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 $arg1 An argument to pass to the generate function. - * @param string $arg2 A second argument to pass to the generate function. * @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)) { - $cacheFile = $this->cacheFilename($format, $arg1, $arg2); - + $cacheFile = call_user_func_array(array($this, "cacheFilename"), $args); + 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); @@ -422,14 +425,14 @@ class Image extends File { /** * Return the filename for the cached image, given it's format name and arguments. * @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 */ - 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 . "/"; - $format = $format.$arg1.$arg2; + $format = $format.implode('', $args); return $folder . "_resampled/$format-" . $this->Name; } @@ -440,11 +443,11 @@ class Image extends File { * using the specific 'generate' method for the specified format. * * @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) { - $cacheFile = $this->cacheFilename($format, $arg1, $arg2); + public function generateFormattedImage($format) { + $args = func_get_args(); + + $cacheFile = call_user_func_array(array($this, "cacheFilename"), $args); $backend = Injector::inst()->createWithArgs(self::$backend, array( Director::baseFolder()."/" . $this->Filename @@ -454,7 +457,11 @@ class Image extends File { $generateFunc = "generate$format"; 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){ $backend->writeTo(Director::baseFolder()."/" . $cacheFile); } From 933fbf8ea47cee85eb3ab324fc9b690d4774f0a0 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 12 Apr 2013 01:09:53 +0200 Subject: [PATCH 3/3] l10n key to make "yes" and "no" translatable (see #1749) --- forms/CheckboxField.php | 2 +- lang/en.yml | 8 ++++---- model/fieldtypes/Boolean.php | 6 +++--- tests/forms/CheckboxFieldTest.php | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/forms/CheckboxField.php b/forms/CheckboxField.php index c90341037..7f7bd1d34 100644 --- a/forms/CheckboxField.php +++ b/forms/CheckboxField.php @@ -62,7 +62,7 @@ class CheckboxField_Readonly extends ReadonlyField { } 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')); } } diff --git a/lang/en.yml b/lang/en.yml index 3c1d2561b..40a64be71 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -60,8 +60,8 @@ en: ERRORNOTREC: 'That username / password isn''t recognised' Boolean: ANY: Any - NO: No - YES: Yes + NOANSWER: No + YESANSWER: Yes CMSLoadingScreen.ss: LOADING: Loading... REQUIREJS: 'The CMS requires that you have JavaScript enabled.' @@ -79,8 +79,8 @@ en: HELLO: Hi PASSWORD: Password CheckboxField: - NO: No - YES: Yes + NOANSWER: No + YESANSWER: Yes ComplexTableField: CLOSEPOPUP: 'Close Popup' SUCCESSADD2: 'Added {name}' diff --git a/model/fieldtypes/Boolean.php b/model/fieldtypes/Boolean.php index 2b363ee3d..0431813bb 100644 --- a/model/fieldtypes/Boolean.php +++ b/model/fieldtypes/Boolean.php @@ -27,7 +27,7 @@ class Boolean extends DBField { } 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() { @@ -53,8 +53,8 @@ class Boolean extends DBField { public function scaffoldSearchField($title = null) { $anyText = _t('Boolean.ANY', 'Any'); $source = array( - 1 => _t('Boolean.YES', 'Yes'), - 0 => _t('Boolean.NO', 'No') + 1 => _t('Boolean.YESANSWER', 'Yes'), + 0 => _t('Boolean.NOANSWER', 'No') ); $field = new DropdownField($this->name, $title, $source); diff --git a/tests/forms/CheckboxFieldTest.php b/tests/forms/CheckboxFieldTest.php index 28fac29a4..986ad690f 100644 --- a/tests/forms/CheckboxFieldTest.php +++ b/tests/forms/CheckboxFieldTest.php @@ -122,18 +122,18 @@ class CheckboxFieldTest extends SapphireTest { // Test 1: a checked checkbox goes to "Yes" $field1 = new CheckboxField('IsChecked', 'Checked'); $field1->setValue('on'); - $this->assertEquals(_t('CheckboxField.YES', 'Yes'), + $this->assertEquals(_t('CheckboxField.YESANSWER', 'Yes'), trim(strip_tags($field1->performReadonlyTransformation()->Field()))); // Test 2: an checkbox with the value set to false to "No" $field2 = new CheckboxField('IsChecked', 'Checked'); $field2->setValue(false); - $this->assertEquals(_t('CheckboxField.NO', 'No'), + $this->assertEquals(_t('CheckboxField.NOANSWER', 'No'), trim(strip_tags($field2->performReadonlyTransformation()->Field()))); // Test 3: an checkbox with no value ever set goes to "No" $field3 = new CheckboxField('IsChecked', 'Checked'); - $this->assertEquals(_t('CheckboxField.NO', 'No'), + $this->assertEquals(_t('CheckboxField.NOANSWER', 'No'), trim(strip_tags($field3->performReadonlyTransformation()->Field()))); }