Merge branch '3.5' into 3.6

This commit is contained in:
Daniel Hensby 2017-06-27 13:14:39 +01:00
commit 1e5592a3d9
No known key found for this signature in database
GPG Key ID: E38EC566FE29EB66
18 changed files with 270 additions and 38 deletions

View File

@ -92,7 +92,10 @@
fields.not(':radio,:checkbox').bind('change.changetracker', onchange); fields.not(':radio,:checkbox').bind('change.changetracker', onchange);
fields.each(function() { fields.each(function() {
if($(this).is(':radio,:checkbox')) { if($(this).is(':radio,:checkbox')) {
origVal = self.find(':input[name=' + $(this).attr('name') + ']:checked').val(); origVal = self.find(':input[name="' + $(this).attr('name') + '"]:checked').val();
if("undefined" === typeof origVal){
origVal = 0;
}
} else { } else {
origVal = $(this).val(); origVal = $(this).val();
} }

View File

@ -38,6 +38,8 @@ Used in side panels and action tabs
.cms table.ss-gridfield-table thead { color: #323e46; background: transparent; } .cms table.ss-gridfield-table thead { color: #323e46; background: transparent; }
.cms table.ss-gridfield-table thead tr.filter-header .fieldgroup { max-width: 512px; } .cms table.ss-gridfield-table thead tr.filter-header .fieldgroup { max-width: 512px; }
.cms table.ss-gridfield-table thead tr.filter-header .fieldgroup .fieldgroup-field { padding: 0; } .cms table.ss-gridfield-table thead tr.filter-header .fieldgroup .fieldgroup-field { padding: 0; }
.cms table.ss-gridfield-table thead tr.filter-header .field { color: #323e46; }
.cms table.ss-gridfield-table thead tr.filter-header .field label { color: #FFF; }
.cms table.ss-gridfield-table thead tr:first-child th:first-child { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; } .cms table.ss-gridfield-table thead tr:first-child th:first-child { -moz-border-radius-topleft: 5px; -webkit-border-top-left-radius: 5px; border-top-left-radius: 5px; }
.cms table.ss-gridfield-table thead tr:first-child th:last-child { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; } .cms table.ss-gridfield-table thead tr:first-child th:last-child { -moz-border-radius-topright: 5px; -webkit-border-top-right-radius: 5px; border-top-right-radius: 5px; }
.cms table.ss-gridfield-table tbody { background: #FFF; } .cms table.ss-gridfield-table tbody { background: #FFF; }

View File

@ -1,7 +1,7 @@
{ {
"version": 3, "version": 3,
"mappings": "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", "mappings": "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",
"sources": ["../scss/GridField.scss","../admin/scss/themes/_default.scss","../admin/scss/_mixins.scss","../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_text-shadow.scss","../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_inline-block.scss","../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/_support.scss","../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_border-radius.scss","../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_images.scss","../scss/_elementMixins.scss"], "sources": ["../scss/GridField.scss","../admin/scss/themes/_default.scss","../admin/scss/_mixins.scss","../../../../../../usr/local/lib/ruby/gems/2.4.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_text-shadow.scss","../../../../../../usr/local/lib/ruby/gems/2.4.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_inline-block.scss","../../../../../../usr/local/lib/ruby/gems/2.4.0/gems/compass-core-1.0.3/stylesheets/compass/_support.scss","../../../../../../usr/local/lib/ruby/gems/2.4.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_border-radius.scss","../../../../../../usr/local/lib/ruby/gems/2.4.0/gems/compass-core-1.0.3/stylesheets/compass/css3/_images.scss","../scss/_elementMixins.scss"],
"names": [], "names": [],
"file": "GridField.css" "file": "GridField.css"
} }

View File

@ -323,6 +323,7 @@ class GDBackend extends Object implements Image_Backend {
} }
$rotate=imagecreatetruecolor($destWidth,$destHeight); $rotate=imagecreatetruecolor($destWidth,$destHeight);
imagealphablending($rotate, false); imagealphablending($rotate, false);
imagesavealpha($rotate, true); // to maintain PNG transparency
for ($x = 0; $x < ($sourceWidth); $x++) { for ($x = 0; $x < ($sourceWidth); $x++) {
for ($y = 0; $y < ($sourceHeight); $y++) { for ($y = 0; $y < ($sourceHeight); $y++) {
$color = imagecolorat($this->gd, $x, $y); $color = imagecolorat($this->gd, $x, $y);

View File

@ -396,7 +396,7 @@ class Upload_Validator {
if (empty($this->allowedMaxFileSize)) { if (empty($this->allowedMaxFileSize)) {
// Set default max file sizes if there isn't // Set default max file sizes if there isn't
$fileSize = Config::inst()->get('Upload_Validator', 'default_max_file_size'); $fileSize = Config::inst()->get('Upload_Validator', 'default_max_file_size');
if (isset($fileSize)) { if (!empty($fileSize)) {
$this->setAllowedMaxFileSize($fileSize); $this->setAllowedMaxFileSize($fileSize);
} else { } else {
// When no default is present, use maximum set by PHP // When no default is present, use maximum set by PHP

View File

@ -107,6 +107,13 @@ class TreeDropdownField extends FormField {
$this->childrenMethod = 'ChildFolders'; $this->childrenMethod = 'ChildFolders';
$this->numChildrenMethod = 'numChildFolders'; $this->numChildrenMethod = 'numChildFolders';
} }
else {
// AllChildren should be used as a default because
// if you use AllChildrenIncludingDeleted instead, the filters will be much more demanding
// this is because instead of working with DataList you will be working with ArrayList
// AllChildren should be always used when dealing with more pages than the node leaf limit
$this->childrenMethod = 'AllChildren';
}
$this->addExtraClass('single'); $this->addExtraClass('single');
@ -303,16 +310,57 @@ class TreeDropdownField extends FormField {
if ($this->filterCallback || $this->search != "" ) if ($this->filterCallback || $this->search != "" )
$obj->setMarkingFilterFunction(array($this, "filterMarking")); $obj->setMarkingFilterFunction(array($this, "filterMarking"));
$obj->markPartialTree($nodeCountThreshold = 30, $context = null, // prepare a filter by ids, this is very useful when we have thousands of child pages under common parent
$this->childrenMethod, $this->numChildrenMethod); $filteredIds = ($this->search != '' && !is_null($this->searchIds) && is_array($this->searchIds))
? array_keys($this->searchIds) : array();
// collect IDs of currently selected pages (this includes hierarchy path)
$forceValue = $request->requestVar('forceValue');
if (!is_null($forceValue) || $this->value) {
$fieldValue = (!is_null($forceValue) ? $forceValue : $this->value);
if (($values = preg_split('/,\s*/', $fieldValue)) && count($values)) {
foreach ($values as $value) {
if (!$value || $value == 'unchanged') {
continue;
}
$selectedObject = $this->objectForKey($value);
// add all pages along the hierarchy path
$stack = $selectedObject->parentStack();
foreach ($stack as $stackItem) {
$filteredIds[] = $stackItem->ID;
}
}
}
}
// main node leaf limit configuration
$nodeCountThreshold = 30;
$obj->markPartialTree(
$nodeCountThreshold, $context = null,
$this->childrenMethod, $this->numChildrenMethod, $filteredIds
);
// allow to pass values to be selected within the ajax request // allow to pass values to be selected within the ajax request
if( isset($_REQUEST['forceValue']) || $this->value ) { if (!is_null($forceValue) || $this->value) {
$forceValue = ( isset($_REQUEST['forceValue']) ? $_REQUEST['forceValue'] : $this->value); $fieldValue = (!is_null($forceValue) ? $forceValue : $this->value);
if(($values = preg_split('/,\s*/', $forceValue)) && count($values)) foreach($values as $value) {
if(!$value || $value == 'unchanged') continue;
$obj->markToExpose($this->objectForKey($value)); if (($values = preg_split('/,\s*/', $fieldValue)) && count($values)) {
foreach ($values as $value) {
if (!$value || $value == 'unchanged') {
continue;
}
$obj->markToExpose(
$this->objectForKey($value),
$this->childrenMethod,
$this->numChildrenMethod,
$nodeCountThreshold,
$filteredIds
);
}
} }
} }
@ -337,7 +385,7 @@ class TreeDropdownField extends FormField {
// Skip the check if we're filtering the tree, since its not clear how many children will // Skip the check if we're filtering the tree, since its not clear how many children will
// match the filter criteria until they're queried (and matched up with previously marked nodes). // match the filter criteria until they're queried (and matched up with previously marked nodes).
$nodeThresholdLeaf = Config::inst()->get('Hierarchy', 'node_threshold_leaf'); $nodeThresholdLeaf = Config::inst()->get('Hierarchy', 'node_threshold_leaf');
if($nodeThresholdLeaf && !$this->filterCallback && !$this->search) { if($nodeThresholdLeaf && !$this->filterCallback && !$this->search && count($filteredIds) == 0) {
$className = $this->sourceObject; $className = $this->sourceObject;
$nodeCountCallback = function($parent, $numChildren) use($className, $nodeThresholdLeaf) { $nodeCountCallback = function($parent, $numChildren) use($className, $nodeThresholdLeaf) {
if($className == 'SiteTree' && $parent->ID && $numChildren > $nodeThresholdLeaf) { if($className == 'SiteTree' && $parent->ID && $numChildren > $nodeThresholdLeaf) {
@ -361,7 +409,8 @@ class TreeDropdownField extends FormField {
$this->numChildrenMethod, $this->numChildrenMethod,
true, // root call true, // root call
null, null,
$nodeCountCallback $nodeCountCallback,
$filteredIds
); );
return substr(trim($html), 4, -5); return substr(trim($html), 4, -5);
} else { } else {
@ -374,7 +423,8 @@ class TreeDropdownField extends FormField {
$this->numChildrenMethod, $this->numChildrenMethod,
true, // root call true, // root call
null, null,
$nodeCountCallback $nodeCountCallback,
$filteredIds
); );
return $html; return $html;
} }

View File

@ -44,8 +44,14 @@ class HasManyList extends RelationList {
protected function foreignIDFilter($id = null) { protected function foreignIDFilter($id = null) {
if ($id === null) $id = $this->getForeignID(); if ($id === null) $id = $this->getForeignID();
// Apply relation filter // Try to include the table name for the given foreign key
if ($table = ClassInfo::table_for_object_field($this->dataClass, $this->foreignKey)) {
$key = "\"$table\".\"$this->foreignKey\"";
} else {
$key = "\"$this->foreignKey\""; $key = "\"$this->foreignKey\"";
}
// Apply relation filter
if(is_array($id)) { if(is_array($id)) {
return array("$key IN (".DB::placeholders($id).")" => $id); return array("$key IN (".DB::placeholders($id).")" => $id);
} else if($id !== null){ } else if($id !== null){

View File

@ -118,6 +118,7 @@ class Hierarchy extends DataExtension {
* overload this function * overload this function
* @param bool $limitToMarked Display only marked children * @param bool $limitToMarked Display only marked children
* @param string $childrenMethod The name of the method used to get children from each object * @param string $childrenMethod The name of the method used to get children from each object
* @param string $numChildrenMethod The name of the instance method to call to count the object's children
* @param bool $rootCall Set to true for this first call, and then to false for calls inside * @param bool $rootCall Set to true for this first call, and then to false for calls inside
* the recursion. You should not change this. * the recursion. You should not change this.
* @param int $nodeCountThreshold See {@link self::$node_threshold_total} * @param int $nodeCountThreshold See {@link self::$node_threshold_total}
@ -125,12 +126,14 @@ class Hierarchy extends DataExtension {
* intercept the query. Useful e.g. to avoid excessive children listings * intercept the query. Useful e.g. to avoid excessive children listings
* (Arguments: $parent, $numChildren) * (Arguments: $parent, $numChildren)
* *
* @param array $filteredIds list of ids that will be used to filter list items (reduce the result set before processing)
*
* @return string * @return string
*/ */
public function getChildrenAsUL($attributes = "", $titleEval = '"<li>" . $child->Title', $extraArg = null, public function getChildrenAsUL($attributes = "", $titleEval = '"<li>" . $child->Title', $extraArg = null,
$limitToMarked = false, $childrenMethod = "AllChildrenIncludingDeleted", $limitToMarked = false, $childrenMethod = "AllChildrenIncludingDeleted",
$numChildrenMethod = "numChildren", $rootCall = true, $numChildrenMethod = "numChildren", $rootCall = true,
$nodeCountThreshold = null, $nodeCountCallback = null) { $nodeCountThreshold = null, $nodeCountCallback = null, array $filteredIds = array()) {
if(!is_numeric($nodeCountThreshold)) { if(!is_numeric($nodeCountThreshold)) {
$nodeCountThreshold = Config::inst()->get('Hierarchy', 'node_threshold_total'); $nodeCountThreshold = Config::inst()->get('Hierarchy', 'node_threshold_total');
@ -149,6 +152,18 @@ class Hierarchy extends DataExtension {
if($this->owner->hasMethod($childrenMethod)) { if($this->owner->hasMethod($childrenMethod)) {
$children = $this->owner->$childrenMethod($extraArg); $children = $this->owner->$childrenMethod($extraArg);
// apply filter before any further processing to limit excessive amount of items
// filter is applied only after limit has been reached
if (count($filteredIds) > 0 && $nodeCountThreshold && $children->count() > $nodeCountThreshold) {
$children = $children->filter(array('ID' => $filteredIds));
}
// too many children, display nothing
if ($nodeCountThreshold && $children->count() > $nodeCountThreshold) {
$children = null;
}
} else { } else {
user_error(sprintf("Can't find the method '%s' on class '%s' for getting tree children", user_error(sprintf("Can't find the method '%s' on class '%s' for getting tree children",
$childrenMethod, get_class($this->owner)), E_USER_ERROR); $childrenMethod, get_class($this->owner)), E_USER_ERROR);
@ -188,7 +203,7 @@ class Hierarchy extends DataExtension {
$child->markClosed(); $child->markClosed();
} else { } else {
$output .= $child->getChildrenAsUL("", $titleEval, $extraArg, $limitToMarked, $output .= $child->getChildrenAsUL("", $titleEval, $extraArg, $limitToMarked,
$childrenMethod, $numChildrenMethod, false, $nodeCountThreshold); $childrenMethod, $numChildrenMethod, false, $nodeCountThreshold, null, $filteredIds);
} }
} elseif($child->isTreeOpened()) { } elseif($child->isTreeOpened()) {
// Since we're not loading children, don't mark it as open either // Since we're not loading children, don't mark it as open either
@ -216,10 +231,14 @@ class Hierarchy extends DataExtension {
* {@link isExpanded()} and {@link isMarked()} on individual nodes. * {@link isExpanded()} and {@link isMarked()} on individual nodes.
* *
* @param int $nodeCountThreshold See {@link getChildrenAsUL()} * @param int $nodeCountThreshold See {@link getChildrenAsUL()}
* @param mixed $context
* @param string $childrenMethod The name of the instance method to call to get the object's list of children
* @param string $numChildrenMethod The name of the instance method to call to count the object's children
* @param array $filteredIds list of ids that will be used to filter list items (reduce the result set before processing)
* @return int The actual number of nodes marked. * @return int The actual number of nodes marked.
*/ */
public function markPartialTree($nodeCountThreshold = 30, $context = null, public function markPartialTree($nodeCountThreshold = 30, $context = null,
$childrenMethod = "AllChildrenIncludingDeleted", $numChildrenMethod = "numChildren") { $childrenMethod = "AllChildrenIncludingDeleted", $numChildrenMethod = "numChildren", array $filteredIds = array()) {
if(!is_numeric($nodeCountThreshold)) $nodeCountThreshold = 30; if(!is_numeric($nodeCountThreshold)) $nodeCountThreshold = 30;
@ -228,7 +247,19 @@ class Hierarchy extends DataExtension {
// foreach can't handle an ever-growing $nodes list // foreach can't handle an ever-growing $nodes list
while(list($id, $node) = each($this->markedNodes)) { while(list($id, $node) = each($this->markedNodes)) {
$children = $this->markChildren($node, $context, $childrenMethod, $numChildrenMethod); // first determine the number of children, if it's too high the tree view can't be used
// so will will not even bother to display the subtree
// this covers two cases:
// either no search filter is in use or search filter is in use but it's too broad
$numberOfChildren = $node->$numChildrenMethod();
if ($nodeCountThreshold && $numberOfChildren > $nodeCountThreshold
&& (count($filteredIds) == 0 || count($filteredIds) > $nodeCountThreshold)) {
break;
}
$children = $this->markChildren(
$node, $context, $childrenMethod, $numChildrenMethod, $nodeCountThreshold, $filteredIds
);
if($nodeCountThreshold && sizeof($this->markedNodes) > $nodeCountThreshold) { if($nodeCountThreshold && sizeof($this->markedNodes) > $nodeCountThreshold) {
// Undo marking children as opened since they're lazy loaded // Undo marking children as opened since they're lazy loaded
if($children) foreach($children as $child) $child->markClosed(); if($children) foreach($children as $child) $child->markClosed();
@ -299,12 +330,20 @@ class Hierarchy extends DataExtension {
* @param mixed $context * @param mixed $context
* @param string $childrenMethod The name of the instance method to call to get the object's list of children * @param string $childrenMethod The name of the instance method to call to get the object's list of children
* @param string $numChildrenMethod The name of the instance method to call to count the object's children * @param string $numChildrenMethod The name of the instance method to call to count the object's children
* @param int $nodeCountThreshold
* @param array $filteredIds list of ids that will be used to filter list items (reduce the result set before processing)
* @return DataList * @return DataList
*/ */
public function markChildren($node, $context = null, $childrenMethod = "AllChildrenIncludingDeleted", public function markChildren($node, $context = null, $childrenMethod = "AllChildrenIncludingDeleted",
$numChildrenMethod = "numChildren") { $numChildrenMethod = "numChildren", $nodeCountThreshold = null, array $filteredIds = array()) {
if($node->hasMethod($childrenMethod)) { if($node->hasMethod($childrenMethod)) {
$children = $node->$childrenMethod($context); $children = $node->$childrenMethod($context);
// apply filter before any further processing
if (count($filteredIds) > 0 && $nodeCountThreshold && $children->count() > $nodeCountThreshold) {
$children = $children->filter(array('ID' => $filteredIds));
}
} else { } else {
user_error(sprintf("Can't find the method '%s' on class '%s' for getting tree children", user_error(sprintf("Can't find the method '%s' on class '%s' for getting tree children",
$childrenMethod, get_class($node)), E_USER_ERROR); $childrenMethod, get_class($node)), E_USER_ERROR);
@ -375,11 +414,18 @@ class Hierarchy extends DataExtension {
* *
* @param int $id ID of parent node * @param int $id ID of parent node
* @param bool $open If this is true, mark the parent node as opened * @param bool $open If this is true, mark the parent node as opened
* @param string $childrenMethod The name of the instance method to call to get the object's list of children
* @param string $numChildrenMethod The name of the instance method to call to count the object's children
* @param int $nodeCountThreshold
* @param array $filteredIds list of ids that will be used to filter list items (reduce the result set before processing)
* @return bool * @return bool
*/ */
public function markById($id, $open = false) { public function markById($id, $open = false, $childrenMethod = "AllChildrenIncludingDeleted",
$numChildrenMethod = "numChildren", $nodeCountThreshold = null, array $filteredIds = array()) {
if(isset($this->markedNodes[$id])) { if(isset($this->markedNodes[$id])) {
$this->markChildren($this->markedNodes[$id]); $this->markChildren(
$this->markedNodes[$id], null, $childrenMethod, $numChildrenMethod, $nodeCountThreshold, $filteredIds
);
if($open) { if($open) {
$this->markedNodes[$id]->markOpened(); $this->markedNodes[$id]->markOpened();
} }
@ -393,12 +439,19 @@ class Hierarchy extends DataExtension {
* Expose the given object in the tree, by marking this page and all it ancestors. * Expose the given object in the tree, by marking this page and all it ancestors.
* *
* @param DataObject $childObj * @param DataObject $childObj
* @param string $childrenMethod The name of the instance method to call to get the object's list of children
* @param string $numChildrenMethod The name of the instance method to call to count the object's children
* @param int $nodeCountThreshold
* @param array $filteredIds list of ids that will be used to filter list items (reduce the result set before processing)
*/ */
public function markToExpose($childObj) { public function markToExpose($childObj, $childrenMethod = "AllChildrenIncludingDeleted",
$numChildrenMethod = "numChildren", $nodeCountThreshold = null, array $filteredIds = array()) {
if(is_object($childObj)){ if(is_object($childObj)){
$stack = array_reverse($childObj->parentStack()); $stack = array_reverse($childObj->parentStack());
foreach($stack as $stackItem) { foreach($stack as $stackItem) {
$this->markById($stackItem->ID, true); $this->markById(
$stackItem->ID, true, $childrenMethod, $numChildrenMethod, $nodeCountThreshold, $filteredIds
);
} }
} }
} }

View File

@ -150,11 +150,21 @@ $gf_grid_x: 16px;
thead { thead {
color: darken($color-base, 50%); color: darken($color-base, 50%);
background: transparent; background: transparent;
tr.filter-header { tr.filter-header {
.fieldgroup { .fieldgroup {
max-width:$gf_grid_x*32; //max width 512px max-width: $gf_grid_x * 32; //max width 512px
.fieldgroup-field { .fieldgroup-field {
padding:0; padding: 0;
}
}
.field {
color: darken($color-base, 50%);
label {
color: #FFF;
} }
} }
} }

View File

@ -47,11 +47,11 @@ class MemberAuthenticator extends Authenticator {
} }
// Check default login (see Security::setDefaultAdmin()) // Check default login (see Security::setDefaultAdmin())
$asDefaultAdmin = $email === Security::default_admin_username(); $asDefaultAdmin = Security::has_default_admin() && $email === Security::default_admin_username();
if($asDefaultAdmin) { if($asDefaultAdmin) {
// If logging is as default admin, ensure record is setup correctly // If logging is as default admin, ensure record is setup correctly
$member = Member::default_admin(); $member = Member::default_admin();
$success = !$member->isLockedOut() && Security::check_default_admin($email, $data['Password']); $success = Security::check_default_admin($email, $data['Password']) && $member && !$member->isLockedOut();
//protect against failed login //protect against failed login
if($success) { if($success) {
return $member; return $member;

View File

@ -886,9 +886,9 @@ class Security extends Controller implements TemplateGlobalProvider {
*/ */
public static function check_default_admin($username, $password) { public static function check_default_admin($username, $password) {
return ( return (
self::$default_username === $username self::has_default_admin()
&& self::$default_username === $username
&& self::$default_password === $password && self::$default_password === $password
&& self::has_default_admin()
); );
} }

View File

@ -134,6 +134,12 @@ class UploadTest extends SapphireTest {
} }
public function testGetAllowedMaxFileSize() { public function testGetAllowedMaxFileSize() {
// Check the max file size defaults to PHP settings
$maxPhpSize = min(File::ini2bytes(ini_get('upload_max_filesize')), File::ini2bytes(ini_get('post_max_size')));
$v = new UploadTest_Validator();
$retrievedSize = $v->getAllowedMaxFileSize('[image]');
$this->assertEquals($maxPhpSize, $retrievedSize, 'Max file size did not default to PHP value');
// Check the max file size uses the config values // Check the max file size uses the config values
$configMaxFileSizes = array( $configMaxFileSizes = array(
'[image]' => '1k', '[image]' => '1k',

View File

@ -2,16 +2,26 @@
class HasManyListTest extends SapphireTest { class HasManyListTest extends SapphireTest {
// Borrow the model from DataObjectTest protected static $fixture_file = array(
protected static $fixture_file = 'DataObjectTest.yml'; 'DataObjectTest.yml', // Borrow the model from DataObjectTest
'HasManyListTest.yml'
);
protected $extraDataObjects = array( protected $extraDataObjects = array(
'DataObjectTest_Team', 'DataObjectTest_Team',
'DataObjectTest_SubTeam', 'DataObjectTest_SubTeam',
'DataObjectTest_Player', 'DataObjectTest_Player',
'DataObjectTest_TeamComment', 'DataObjectTest_TeamComment',
'DataObjectTest_Sortable',
'DataObjectTest_Company',
'DataObjectTest_EquipmentCompany',
'DataObjectTest_SubEquipmentCompany',
'DataObjectTest_Fan',
'ManyManyListTest_Product', 'ManyManyListTest_Product',
'ManyManyListTest_Category', 'ManyManyListTest_Category',
'HasManyListTest_Company',
'HasManyListTest_Employee',
'HasManyListTest_CompanyCar',
); );
public function testRelationshipEmptyOnNewRecords() { public function testRelationshipEmptyOnNewRecords() {
@ -59,4 +69,61 @@ class HasManyListTest extends SapphireTest {
$this->assertEmpty($team2comment->TeamID); $this->assertEmpty($team2comment->TeamID);
} }
/**
* Test that multiple models with the same "has_one" relation name (and therefore the same "<hasone>ID"
* column name) do not trigger a "Column '<hasone>ID' in where clause is ambiguous" error
*/
public function testAmbiguousRelationshipNames() {
$company = $this->objFromFixture('HasManyListTest_Company', 'silverstripe');
$johnsCars = $company->CompanyCars()->filter(array('User.Name' => 'John Smith'));
$this->assertCount(1, $johnsCars, 'John Smith has one company car');
$jennysCars = $company->CompanyCars()->filter(array('User.Name' => 'Jenny Smith'));
$this->assertCount(2, $jennysCars, 'Jenny Smith has two company cars');
}
}
class HasManyListTest_Company extends DataObject implements TestOnly {
private static $db = array(
'Name' => 'Varchar(100)'
);
private static $has_many = array(
'Employees' => 'HasManyListTest_Employee',
'CompanyCars' => 'HasManyListTest_CompanyCar'
);
}
class HasManyListTest_Employee extends DataObject implements TestOnly {
private static $db = array(
'Name' => 'Varchar(100)'
);
private static $has_one = array(
'Company' => 'HasManyListTest_Company'
);
private static $has_many = array(
'CompanyCars' => 'HasManyListTest_CompanyCar'
);
}
class HasManyListTest_CompanyCar extends DataObject implements TestOnly {
private static $db = array(
'Make' => 'Varchar(100)',
'Model' => 'Varchar(100)'
);
private static $has_one = array(
'User' => 'HasManyListTest_Employee',
'Company' => 'HasManyListTest_Company'
);
} }

View File

@ -0,0 +1,26 @@
HasManyListTest_Company:
silverstripe:
Name: 'SilverStripe Ltd'
HasManyListTest_Employee:
john:
Name: 'John Smith'
Company: =>HasManyListTest_Company.silverstripe
jenny:
Name: 'Jenny Smith'
Company: =>HasManyListTest_Company.silverstripe
HasManyListTest_CompanyCar:
jaguar:
Make: 'Jaguar'
Model: 'E Type'
User: =>HasManyListTest_Employee.john
Company: =>HasManyListTest_Company.silverstripe
ferrari:
Make: 'Ferrari'
Model: 'F40'
User: =>HasManyListTest_Employee.jenny
Company: =>HasManyListTest_Company.silverstripe
lamborghini:
Make: 'Lamborghini'
Model: 'Countach'
User: =>HasManyListTest_Employee.jenny
Company: =>HasManyListTest_Company.silverstripe

View File

@ -455,7 +455,7 @@ EOT;
$obj2aa->delete(); $obj2aa->delete();
$obj2ab->delete(); $obj2ab->delete();
// Don't pre-load all children // Don't pre-load all children
$nodeCountThreshold = 1; $nodeCountThreshold = 3;
$childrenMethod = 'AllChildren'; $childrenMethod = 'AllChildren';
$numChildrenMethod = 'numChildren'; $numChildrenMethod = 'numChildren';
@ -500,7 +500,7 @@ EOT;
$obj2aa->delete(); $obj2aa->delete();
$obj2ab->delete(); $obj2ab->delete();
// Don't pre-load all children // Don't pre-load all children
$nodeCountThreshold = 1; $nodeCountThreshold = 3;
$childrenMethod = 'AllChildrenIncludingDeleted'; $childrenMethod = 'AllChildrenIncludingDeleted';
$numChildrenMethod = 'numHistoricalChildren'; $numChildrenMethod = 'numHistoricalChildren';

File diff suppressed because one or more lines are too long

View File

@ -16,10 +16,14 @@ require_once $frameworkPath . '/core/Constants.php';
// Handle incoming request if it's a script call // Handle incoming request if it's a script call
if (TinyMCE_Compressor::getParam("js")) { if (TinyMCE_Compressor::getParam("js")) {
$tempFolder = TEMP_FOLDER . '/tinymce-cache';
if (!file_exists($tempFolder)) {
mkdir($tempFolder);
}
// Default settings // Default settings
$tinyMCECompressor = new TinyMCE_Compressor(array( $tinyMCECompressor = new TinyMCE_Compressor(array(
// CUSTOM SilverStripe // CUSTOM SilverStripe
'cache_dir' => TEMP_FOLDER 'cache_dir' => $tempFolder
// CUSTOM END // CUSTOM END
)); ));

View File

@ -1317,7 +1317,11 @@ tinymce.util.Quirks = function(editor) {
// WebKit can't even do simple things like selecting an image // WebKit can't even do simple things like selecting an image
// Needs tobe the setBaseAndExtend or it will fail to select floated images // Needs tobe the setBaseAndExtend or it will fail to select floated images
if (/^(IMG|HR)$/.test(e.nodeName)) { if (/^(IMG|HR)$/.test(e.nodeName)) {
try {
selection.getSel().setBaseAndExtent(e, 0, e, 1); selection.getSel().setBaseAndExtent(e, 0, e, 1);
} catch (error) {
selection.select(e);
}
} }
if (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor')) { if (e.nodeName == 'A' && dom.hasClass(e, 'mceItemAnchor')) {