silverstripe-cms/code/forms/SiteTreeURLSegmentField.php
Sam Minnee bbc3aaaf9f MINOR: Remove training whitespace.
The main benefit of this is so that authors who make use of
.editorconfig don't end up with whitespace changes in their PRs.

Spaces vs. tabs has been left alone, although that could do with a
tidy-up in SS4 after the switch to PSR-1/2.

The command used was this:

for match in '*.ss' '*.css' '*.scss' '*.html' '*.yml' '*.php' '*.js' '*.csv' '*.inc' '*.php5'; do
	find . -path ./thirdparty -prune -o -type f -name "$match" -exec sed -i '' 's/[[:space:]]\+$//' {} \+
	find . -path ./thirdparty -prune -o -type f -name "$match" | xargs perl -pi -e 's/ +$//'
done
2016-01-07 10:32:05 +13:00

137 lines
3.2 KiB
PHP

<?php
/**
* Used to edit the SiteTree->URLSegment property, and suggest input based on the serverside rules
* defined through {@link SiteTree->generateURLSegment()} and {@link URLSegmentFilter}.
*
* Note: The actual conversion for saving the value takes place in the model layer.
*
* @package cms
* @subpackage forms
*/
class SiteTreeURLSegmentField extends TextField {
/**
* @var string
*/
protected $helpText, $urlPrefix, $urlSuffix, $defaultUrl;
private static $allowed_actions = array(
'suggest'
);
public function Value() {
return rawurldecode($this->value);
}
public function getAttributes() {
return array_merge(
parent::getAttributes(),
array(
'data-prefix' => $this->getURLPrefix(),
'data-suffix' => '?stage=Stage',
'data-default-url' => $this->getDefaultURL()
)
);
}
public function Field($properties = array()) {
Requirements::javascript(CMS_DIR . '/javascript/SiteTreeURLSegmentField.js');
Requirements::add_i18n_javascript(CMS_DIR . '/javascript/lang', false, true);
Requirements::css(CMS_DIR . "/css/screen.css");
return parent::Field($properties);
}
public function suggest($request) {
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
$page->URLSegment = $page->generateURLSegment($request->getVar('value'));
$count = 2;
while(!$page->validURLSegment()) {
$page->URLSegment = preg_replace('/-[0-9]+$/', null, $page->URLSegment) . '-' . $count;
$count++;
}
Controller::curr()->getResponse()->addHeader('Content-Type', 'application/json');
return Convert::raw2json(array('value' => $page->URLSegment));
}
/**
* @return SiteTree
*/
public function getPage() {
$idField = $this->getForm()->Fields()->dataFieldByName('ID');
return ($idField && $idField->Value()) ? DataObject::get_by_id('SiteTree', $idField->Value()) : singleton('SiteTree');
}
/**
* @param string $string The secondary text to show
*/
public function setHelpText($string){
$this->helpText = $string;
return $this;
}
/**
* @return string the secondary text to show in the template
*/
public function getHelpText(){
return $this->helpText;
}
/**
* @param the url that prefixes the page url segment field
*/
public function setURLPrefix($url){
$this->urlPrefix = $url;
return $this;
}
/**
* @return the url prefixes the page url segment field to show in template
*/
public function getURLPrefix(){
return $this->urlPrefix;
}
public function getURLSuffix() {
return $this->urlSuffix;
}
/**
* @return Indicator for UI to respond to changes accurately,
* and auto-update the field value if changes to the default occur.
* Does not set the field default value.
*/
public function getDefaultURL(){
return $this->defaultUrl;
}
public function setDefaultURL($url) {
$this->defaultUrl = $url;
return $this;
}
public function setURLSuffix($suffix) {
$this->urlSuffix = $suffix;
return $this;
}
public function Type() {
return 'text urlsegment';
}
public function getURL() {
return Controller::join_links($this->getURLPrefix(), $this->Value(), $this->getURLSuffix());
}
}