mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merged from branches/2.2
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@65523 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
9c9a461d67
commit
58dbe416ee
@ -590,7 +590,7 @@ class i18n extends Object {
|
||||
'lt' => array('Lithuanian', 'lietuviškai'),
|
||||
'lmo' => array('Lombard', 'Lombardo'),
|
||||
'mk' => array('Macedonian', 'македонски'),
|
||||
'mi' => array('Maori', 'Maori'),
|
||||
'mi' => array('Maori', 'Māori'),
|
||||
'ms' => array('Malay', 'Bahasa melayu'),
|
||||
'mt' => array('Maltese', 'Malti'),
|
||||
'mr' => array('Marathi', 'मराठी'),
|
||||
|
@ -184,6 +184,11 @@ class SiteTree extends DataObject {
|
||||
'Title',
|
||||
'Content',
|
||||
);
|
||||
|
||||
/**
|
||||
* This controls whether of not extendCMSFields() is called by getCMSFields.
|
||||
*/
|
||||
private static $runCMSFieldsExtensions = true;
|
||||
|
||||
/**
|
||||
* Get the URL for this page.
|
||||
@ -1287,8 +1292,10 @@ class SiteTree extends DataObject {
|
||||
$tabReports->setTitle(_t('SiteTree.TABREPORTS', "Reports"));
|
||||
$tabAccess->setTitle(_t('SiteTree.TABACCESS', "Access"));
|
||||
$tabBacklinks->setTitle(_t('SiteTree.TABBACKLINKS', "BackLinks"));
|
||||
|
||||
$this->extend('updateCMSFields', $fields);
|
||||
|
||||
if(self::$runCMSFieldsExtensions) {
|
||||
$this->extend('updateCMSFields', $fields);
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
@ -1699,6 +1706,24 @@ class SiteTree extends DataObject {
|
||||
|
||||
return $classes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops extendCMSFields() being called on getCMSFields().
|
||||
* This is useful when you need access to fields added by subclasses
|
||||
* of SiteTree in a decorator. Call before calling parent::getCMSFields(),
|
||||
* and reenable afterwards.
|
||||
*/
|
||||
public static function disableCMSFieldsExtensions() {
|
||||
self::$runCMSFieldsExtensions = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reenables extendCMSFields() being called on getCMSFields() after
|
||||
* it has been disabled by disableCMSFieldsExtensions().
|
||||
*/
|
||||
public static function enableCMSFieldsExtensions() {
|
||||
self::$runCMSFieldsExtensions = true;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
@ -67,6 +67,7 @@ class Text extends DBField {
|
||||
* @param int $sentCount The amount of sentences you want.
|
||||
*/
|
||||
function LimitSentences($sentCount = 2) {
|
||||
$output = '';
|
||||
$data = Convert::xml2raw($this->value);
|
||||
$sentences = explode('.', $data);
|
||||
if(count($sentences) == 1) {
|
||||
|
@ -25,6 +25,7 @@ class Folder extends File {
|
||||
$item = new Folder();
|
||||
$item->ParentID = $parentID;
|
||||
$item->Name = $part;
|
||||
$item->Title = $part;
|
||||
$item->write();
|
||||
if(!file_exists($item->getFullPath())) mkdir($item->getFullPath(),Filesystem::$folder_create_mask);
|
||||
}
|
||||
@ -32,6 +33,8 @@ class Folder extends File {
|
||||
}
|
||||
return $item;
|
||||
}
|
||||
// To Make SSP Gallery structure work
|
||||
// $item->Title = $part;
|
||||
|
||||
/**
|
||||
* Syncronise the file database with the actual content of the assets folder
|
||||
|
@ -7,8 +7,10 @@
|
||||
class CompositeDateField extends DateField {
|
||||
|
||||
function __construct($name, $title, $value = null, $yearRange = null){
|
||||
$year = $month = $date = null;
|
||||
if($value) list($year,$month, $date) = explode('-', $value);
|
||||
$exploded = explode('-', $value);
|
||||
$year = isset($exploded[0]) ? $exploded[0] : null;
|
||||
$month = isset($exploded[1]) ? $exploded[1] : null;
|
||||
$date = isset($exploded[2]) ? $exploded[2] : null;
|
||||
|
||||
$this->dateDropdown = new DropdownField($name."[date]", "",
|
||||
array('NotSet' => '('._t('CompositeDateField.DAY', 'Day').')',
|
||||
@ -173,4 +175,4 @@ class CompositeDateField_Disabled extends DateField {
|
||||
return "date_disabled readonly";
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
@ -9,9 +9,9 @@ class CountryDropdownField extends DropdownField {
|
||||
protected $defaultToVisitorCountry = true;
|
||||
|
||||
function __construct($name, $title, $source = null, $value = "", $form=null) {
|
||||
if(!is_array($source)) {
|
||||
$source = Geoip::getCountryDropDown();
|
||||
}
|
||||
if(!is_array($source)) $source = Geoip::getCountryDropDown();
|
||||
if(!$value) $value = Geoip::visitor_country();
|
||||
|
||||
parent::__construct($name, $title, $source, $value, $form);
|
||||
}
|
||||
|
||||
@ -28,4 +28,4 @@ class CountryDropdownField extends DropdownField {
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
@ -274,14 +274,14 @@ class TableField extends TableListField {
|
||||
// Sort into proper array
|
||||
$this->value = ArrayLib::invert($this->value);
|
||||
$dataObjects = $this->sortData($this->value, $record->ID);
|
||||
if($dataObjects['new']) {
|
||||
if(isset($dataObjects['new']) && $dataObjects['new']) {
|
||||
$newFields = $this->sortData($dataObjects['new'], $record->ID);
|
||||
}
|
||||
|
||||
$savedObj = $this->saveData($dataObjects, $this->editExisting);
|
||||
if($savedObj && $newFields) {
|
||||
$savedObj += $this->saveData($newFields,false);
|
||||
} else if($newFields) {
|
||||
if($savedObj && isset($newFields)) {
|
||||
$savedObj = $this->saveData($newFields,false);
|
||||
} else if(isset($newFields)) {
|
||||
$savedObj = $this->saveData($newFields,false);
|
||||
}
|
||||
$items = $this->sourceItems();
|
||||
|
@ -43,7 +43,7 @@ class TreeDropdownField extends FormField {
|
||||
|
||||
if($this->value) {
|
||||
$record = DataObject::get_by_id($this->sourceObject, $this->value);
|
||||
$title = ($record) ? $record->Title : '';
|
||||
$title = ($record) ? $record->Title : _t('DropdownField.CHOOSE', "(Choose)", PR_MEDIUM, 'Start-value of a dropdown');
|
||||
} else {
|
||||
$title = _t('DropdownField.CHOOSE', "(Choose)", PR_MEDIUM, 'Start-value of a dropdown');
|
||||
}
|
||||
|
@ -141,7 +141,12 @@ Behaviour.register({
|
||||
},
|
||||
onblur : function() {
|
||||
if(this.old_onblur()) {
|
||||
return $('$formID').validate(this);
|
||||
// Don't perform instant validation for CalendarDateField fields; it creates usability wierdness.
|
||||
if(this.parentNode.className.indexOf('calendardate') == -1 || this.value) {
|
||||
return $('$formID').validate(this);
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -119,22 +119,29 @@ class MemberLoginForm extends LoginForm {
|
||||
Session::clear("BackURL");
|
||||
Director::redirect($backURL);
|
||||
} else {
|
||||
$firstname = Convert::raw2xml($member->FirstName);
|
||||
Session::set("Security.Message.message",
|
||||
sprintf(_t('Member.WELCOMEBACK', "Welcome Back, %s"), $firstname)
|
||||
);
|
||||
Session::set("Security.Message.type", "good");
|
||||
Director::redirectBack();
|
||||
}
|
||||
} else {
|
||||
Session::set('SessionForms.MemberLoginForm.Email', $data['Email']);
|
||||
Session::set('SessionForms.MemberLoginForm.Remember', isset($data['Remember']));
|
||||
|
||||
if(isset($_REQUEST['BackURL']) && $backURL = $_REQUEST['BackURL']) {
|
||||
Session::set('BackURL', $backURL);
|
||||
}
|
||||
|
||||
if(isset($_REQUEST['BackURL'])) $backURL = $_REQUEST['BackURL'];
|
||||
else $backURL = null;
|
||||
|
||||
if($backURL) Session::set('BackURL', $backURL);
|
||||
|
||||
if($badLoginURL = Session::get("BadLoginURL")) {
|
||||
Director::redirect($badLoginURL);
|
||||
} else {
|
||||
// Show the right tab on failed login
|
||||
Director::redirect(Director::absoluteURL(Security::Link("login")) .
|
||||
'#' . $this->FormName() .'_tab');
|
||||
$loginLink = Director::absoluteURL(Security::Link("login"));
|
||||
if($backURL) $loginLink .= '?BackURL=' . urlencode($backURL);
|
||||
Director::redirect($loginLink . '#' . $this->FormName() .'_tab');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -163,12 +170,6 @@ class MemberLoginForm extends LoginForm {
|
||||
*/
|
||||
public function performLogin($data) {
|
||||
if($member = MemberAuthenticator::authenticate($data, $this)) {
|
||||
$firstname = Convert::raw2xml($member->FirstName);
|
||||
Session::set("Security.Message.message",
|
||||
sprintf(_t('Member.WELCOMEBACK', "Welcome Back, %s"), $firstname)
|
||||
);
|
||||
Session::set("Security.Message.type", "good");
|
||||
|
||||
$member->LogIn(isset($data['Remember']));
|
||||
return $member;
|
||||
|
||||
|
@ -348,6 +348,8 @@ class Security extends Controller {
|
||||
"Content" => $content,
|
||||
));
|
||||
}
|
||||
|
||||
Session::clear('Security.Message');
|
||||
|
||||
// custom processing
|
||||
if(SSViewer::hasTemplate("Security_login")) {
|
||||
@ -802,7 +804,7 @@ class Security extends Controller {
|
||||
'salt' => null,
|
||||
'algorithm' => 'none');
|
||||
|
||||
} elseif((self::$encryptPasswords == false) || ($algorithm == 'none')) {
|
||||
} elseif((!$algorithm && self::$encryptPasswords == false) || ($algorithm == 'none')) {
|
||||
// The password should not be encrypted
|
||||
return array('password' => substr($password, 0, 64),
|
||||
'salt' => null,
|
||||
|
Loading…
Reference in New Issue
Block a user