mirror of
https://github.com/UndefinedOffset/SortableGridField.git
synced 2024-10-22 15:05:38 +00:00
Fixed issue where the table name could not be determined properly for namespaced classes (fixes #113)
Fixed issue sorting to page in 4.0
This commit is contained in:
parent
e6eefdffd3
commit
12cd5776c1
@ -262,9 +262,6 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
|
|||||||
$componentField=$componentDetails['childField'];
|
$componentField=$componentDetails['childField'];
|
||||||
$table=$componentDetails['join'];
|
$table=$componentDetails['join'];
|
||||||
|
|
||||||
/** @var DataObject $table */
|
|
||||||
$table = $this->mapTableNameAndReturn($table);
|
|
||||||
|
|
||||||
$extraFields = $schema->manyManyExtraFieldsForComponent(get_class($owner), (!empty($this->custom_relation_name) ? $this->custom_relation_name : $gridField->getName()));
|
$extraFields = $schema->manyManyExtraFieldsForComponent(get_class($owner), (!empty($this->custom_relation_name) ? $this->custom_relation_name : $gridField->getName()));
|
||||||
|
|
||||||
if (!$extraFields || !array_key_exists($this->sortColumn, $extraFields) || !($extraFields[$this->sortColumn] == 'SilverStripe\\ORM\\FieldType\\DBInt' || is_subclass_of('SilverStripe\\ORM\\FieldType\\DBInt', $extraFields[$this->sortColumn]))) {
|
if (!$extraFields || !array_key_exists($this->sortColumn, $extraFields) || !($extraFields[$this->sortColumn] == 'SilverStripe\\ORM\\FieldType\\DBInt' || is_subclass_of('SilverStripe\\ORM\\FieldType\\DBInt', $extraFields[$this->sortColumn]))) {
|
||||||
@ -278,13 +275,13 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
|
|||||||
|
|
||||||
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
||||||
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
||||||
$table = $this->mapTableNameAndReturn($class);
|
$table = DataObject::getSchema()->tableName($class);
|
||||||
} else {
|
} else {
|
||||||
$classes = ClassInfo::ancestry($class, true);
|
$classes = ClassInfo::ancestry($class, true);
|
||||||
foreach ($classes as $class) {
|
foreach ($classes as $class) {
|
||||||
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
||||||
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
||||||
$table = $this->mapTableNameAndReturn($class);
|
$table = DataObject::getSchema()->tableName($class);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -296,7 +293,7 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
|
|||||||
}
|
}
|
||||||
|
|
||||||
$baseDataClass = DataObject::getSchema()->baseDataClass($gridField->getModelClass());
|
$baseDataClass = DataObject::getSchema()->baseDataClass($gridField->getModelClass());
|
||||||
$baseDataClass = $this->mapTableNameAndReturn($baseDataClass);
|
$baseDataClass = DataObject::getSchema()->tableName($baseDataClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -469,22 +466,19 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
|
|||||||
$parentField=$componentDetails['parentField'];
|
$parentField=$componentDetails['parentField'];
|
||||||
$componentField=$componentDetails['childField'];
|
$componentField=$componentDetails['childField'];
|
||||||
$table=$componentDetails['join'];
|
$table=$componentDetails['join'];
|
||||||
|
|
||||||
/** @var DataObject $table */
|
|
||||||
$table = $this->mapTableNameAndReturn($table);
|
|
||||||
} else {
|
} else {
|
||||||
//Find table containing the sort column
|
//Find table containing the sort column
|
||||||
$table = false;
|
$table = false;
|
||||||
$class = $gridField->getModelClass();
|
$class = $gridField->getModelClass();
|
||||||
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
||||||
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
||||||
$table = $this->mapTableNameAndReturn($class);
|
$table = DataObject::getSchema()->tableName($class);
|
||||||
} else {
|
} else {
|
||||||
$classes = ClassInfo::ancestry($class, true);
|
$classes = ClassInfo::ancestry($class, true);
|
||||||
foreach ($classes as $class) {
|
foreach ($classes as $class) {
|
||||||
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
||||||
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
||||||
$table = $this->mapTableNameAndReturn($class);
|
$table = DataObject::getSchema()->tableName($class);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -496,7 +490,7 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
|
|||||||
}
|
}
|
||||||
|
|
||||||
$baseDataClass = DataObject::getSchema()->baseDataClass($gridField->getModelClass());
|
$baseDataClass = DataObject::getSchema()->baseDataClass($gridField->getModelClass());
|
||||||
$baseDataClass = $this->mapTableNameAndReturn($baseDataClass);
|
$baseDataClass = DataObject::getSchema()->tableName($baseDataClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -600,8 +594,11 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($many_many) {
|
if ($many_many) {
|
||||||
list($parentClass, $componentClass, $parentField, $componentField, $table) = $owner->manyMany((!empty($this->custom_relation_name) ? $this->custom_relation_name : $gridField->getName()));
|
$schema=Injector::inst()->get(DataObjectSchema::class);
|
||||||
$table = $this->mapTableNameAndReturn($table);
|
$componentDetails=$schema->manyManyComponent(get_class($owner), (!empty($this->custom_relation_name) ? $this->custom_relation_name : $gridField->getName()));
|
||||||
|
$parentField=$componentDetails['parentField'];
|
||||||
|
$componentField=$componentDetails['childField'];
|
||||||
|
$table=$componentDetails['join'];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($data['Target'] == 'previouspage') {
|
if ($data['Target'] == 'previouspage') {
|
||||||
@ -628,7 +625,7 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
|
|||||||
foreach ($classes as $class) {
|
foreach ($classes as $class) {
|
||||||
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
$db = Config::inst()->get($class, "db", CONFIG::UNINHERITED);
|
||||||
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
if (!empty($db) && array_key_exists($sortColumn, $db)) {
|
||||||
$table = $this->mapTableNameAndReturn($class);
|
$table = DataObject::getSchema()->tableName($class);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -754,18 +751,11 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
|
|||||||
* Checks to see if $table_name is declared on the DataObject, if not returns string as given
|
* Checks to see if $table_name is declared on the DataObject, if not returns string as given
|
||||||
*
|
*
|
||||||
* @param $tableName
|
* @param $tableName
|
||||||
* @return mixed
|
* @return string
|
||||||
|
* @deprecated Use DataObject::getSchema()->tableName() instead
|
||||||
*/
|
*/
|
||||||
public function mapTableNameAndReturn($tableName)
|
public function mapTableNameAndReturn($tableName)
|
||||||
{
|
{
|
||||||
if (array_key_exists($tableName, $this->tableMap)) {
|
return DataObject::getSchema()->tableName($baseDataClass);
|
||||||
return $this->tableMap[$tableName];
|
|
||||||
}
|
|
||||||
|
|
||||||
$realName = (Config::inst()->get($tableName, 'table_name', CONFIG::UNINHERITED)) ? Config::inst()->get($tableName, 'table_name', CONFIG::UNINHERITED) : $tableName;
|
|
||||||
|
|
||||||
$this->tableMap[$realName] = $tableName;
|
|
||||||
|
|
||||||
return $realName;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user