mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge branch '3.5' into 3.6
This commit is contained in:
commit
1e5592a3d9
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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; }
|
||||||
|
@ -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"
|
||||||
}
|
}
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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){
|
||||||
|
@ -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
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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()
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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',
|
||||||
|
@ -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'
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
26
tests/model/HasManyListTest.yml
Normal file
26
tests/model/HasManyListTest.yml
Normal 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
|
@ -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';
|
||||||
|
2
thirdparty/tinymce/tiny_mce.js
vendored
2
thirdparty/tinymce/tiny_mce.js
vendored
File diff suppressed because one or more lines are too long
6
thirdparty/tinymce/tiny_mce_gzip.php
vendored
6
thirdparty/tinymce/tiny_mce_gzip.php
vendored
@ -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
|
||||||
));
|
));
|
||||||
|
|
||||||
|
4
thirdparty/tinymce/tiny_mce_src.js
vendored
4
thirdparty/tinymce/tiny_mce_src.js
vendored
@ -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')) {
|
||||||
|
Loading…
Reference in New Issue
Block a user