From ea446f2ade0d7d56f3c880f77f12ff2990281d2e Mon Sep 17 00:00:00 2001 From: Loz Calver Date: Fri, 5 Apr 2013 14:06:32 +0100 Subject: [PATCH] Better error message when attempting to enter a blank URL Segment (fixes silverstripe/silverstripe-cms#1570) --- code/forms/SiteTreeURLSegmentField.php | 6 +++++- javascript/SiteTreeURLSegmentField.js | 18 +++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/code/forms/SiteTreeURLSegmentField.php b/code/forms/SiteTreeURLSegmentField.php index 3ff94b1d..0f2e5ce5 100644 --- a/code/forms/SiteTreeURLSegmentField.php +++ b/code/forms/SiteTreeURLSegmentField.php @@ -43,7 +43,11 @@ class SiteTreeURLSegmentField extends TextField { } public function suggest($request) { - if(!$request->getVar('value')) return $this->httpError(405); + if(!$request->getVar('value')) { + return $this->httpError(405, + _t('SiteTreeURLSegmentField.EMPTY', 'Please enter a URL Segment or click cancel') + ); + } $page = $this->getPage(); // Same logic as SiteTree->onBeforeWrite diff --git a/javascript/SiteTreeURLSegmentField.js b/javascript/SiteTreeURLSegmentField.js index 4b671178..59116aff 100644 --- a/javascript/SiteTreeURLSegmentField.js +++ b/javascript/SiteTreeURLSegmentField.js @@ -92,12 +92,24 @@ * @param (Function) */ suggest: function(val, callback) { - var field = this.find(':text'), - urlParts = $.path.parseUrl(this.closest('form').attr('action')), + var self = this, + field = self.find(':text'), + urlParts = $.path.parseUrl(self.closest('form').attr('action')), url = urlParts.hrefNoSearch + '/field/' + field.attr('name') + '/suggest/?value=' + encodeURIComponent(val); if(urlParts.search) url += '&' + urlParts.search.replace(/^\?/, ''); - $.get(url, function(data) {callback.apply(this, arguments);}); + $.ajax({ + url: url, + success: function(data) { + callback.apply(this, arguments); + }, + error: function(xhr, status) { + xhr.statusText = xhr.responseText; + }, + complete: function() { + self.removeClass('loading'); + } + }); } });