mirror of
https://github.com/silverstripe/silverstripe-reports
synced 2024-10-22 11:05:53 +02:00
removed DetailForm() (was just needed to set custom class which is now in $popupClass), updated saveComplexTableField() to reflect parent class code
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@47586 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
67470bdffb
commit
fea3f62490
@ -13,14 +13,21 @@
|
|||||||
* - members based on a search-query
|
* - members based on a search-query
|
||||||
*/
|
*/
|
||||||
class MemberTableField extends ComplexTableField {
|
class MemberTableField extends ComplexTableField {
|
||||||
|
|
||||||
protected $members;
|
protected $members;
|
||||||
|
|
||||||
protected $hidePassword;
|
protected $hidePassword;
|
||||||
|
|
||||||
protected $pageSize;
|
protected $pageSize;
|
||||||
|
|
||||||
protected $detailFormValidator;
|
protected $detailFormValidator;
|
||||||
|
|
||||||
protected $group;
|
protected $group;
|
||||||
|
|
||||||
protected $template = "MemberTableField";
|
protected $template = "MemberTableField";
|
||||||
|
|
||||||
|
public $popupClass = 'MemberTableField_Popup';
|
||||||
|
|
||||||
static $data_class = "Member";
|
static $data_class = "Member";
|
||||||
|
|
||||||
protected $permissions = array(
|
protected $permissions = array(
|
||||||
@ -146,88 +153,6 @@ class MemberTableField extends ComplexTableField {
|
|||||||
return "{$this->PopupBaseLink()}&methodName=add";
|
return "{$this->PopupBaseLink()}&methodName=add";
|
||||||
}
|
}
|
||||||
|
|
||||||
function DetailForm() {
|
|
||||||
|
|
||||||
// Get all the requests
|
|
||||||
$ID = Convert::raw2xml(isset($_REQUEST['ctf']['ID'])
|
|
||||||
? $_REQUEST['ctf']['ID']
|
|
||||||
: '');
|
|
||||||
$childID = isset($_REQUEST['ctf']['childID']) ? Convert::raw2xml($_REQUEST['ctf']['childID']) : 0;
|
|
||||||
$childClass = Convert::raw2xml($_REQUEST['fieldName']);
|
|
||||||
$this->methodName = $_REQUEST['methodName'];
|
|
||||||
|
|
||||||
// used to discover fields if requested and for population of field
|
|
||||||
if(is_numeric($childID)) {
|
|
||||||
// we have to use the basedataclass, otherwise we might exclude other subclasses
|
|
||||||
$childData = DataObject::get_by_id(ClassInfo::baseDataClass($this->sourceClass), $childID);
|
|
||||||
}
|
|
||||||
|
|
||||||
$parentIdName = $this->getParentIdName($this->sourceClass,$this->getParentClass());
|
|
||||||
|
|
||||||
if(!$parentIdName) {
|
|
||||||
user_error("ComplexTableField::DetailForm() DataObject does not seem to have an 'has-one'-relationship", E_USER_WARNING);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// If the fieldset is passed, use it, else use the formfields returned
|
|
||||||
// from the object via a string method call.
|
|
||||||
if(is_a($this->detailFormFields,"Fieldset")){
|
|
||||||
$detailFields = $this->detailFormFields;
|
|
||||||
} else if(is_string($this->detailFormFields)){
|
|
||||||
$functioncall = $this->detailFormFields;
|
|
||||||
if($childData->hasMethod($functioncall)){
|
|
||||||
$detailFields = $childData->$functioncall();
|
|
||||||
}
|
|
||||||
} elseif(!$childData || $this->methodName == 'add') {
|
|
||||||
$SNG_sourceClass = singleton($this->sourceClass);
|
|
||||||
if(is_numeric($ID) && $this->getParentClass()) {
|
|
||||||
// make sure the relation-link is existing, even if we just add the sourceClass
|
|
||||||
// and didn't save it
|
|
||||||
$parentIDName = $this->getParentIdName($this->sourceClass,$this->getParentClass());
|
|
||||||
$SNG_sourceClass->$parentIDName = $ID;
|
|
||||||
}
|
|
||||||
$detailFields = $SNG_sourceClass->getCMSFields();
|
|
||||||
} else {
|
|
||||||
$detailFields = $childData->getCMSFields();
|
|
||||||
}
|
|
||||||
|
|
||||||
if($this->getParentClass()) {
|
|
||||||
$parentIdName = $this->getParentIdName($this->sourceClass,$this->getParentClass());
|
|
||||||
if(!$parentIdName) {
|
|
||||||
user_error("ComplexTableField::DetailForm() Cannot automatically
|
|
||||||
determine 'has-one'-relationship to parent,
|
|
||||||
please use setParentClass() to set it manually",
|
|
||||||
E_USER_WARNING);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// add relational fields
|
|
||||||
$detailFields->push(new HiddenField("ctf[parentClass]"," ",$this->getParentClass()));
|
|
||||||
$detailFields->push(new HiddenField("$parentIdName"," ",$ID));
|
|
||||||
}
|
|
||||||
|
|
||||||
// the ID field confuses the Controller-logic in finding the right view for ReferencedField
|
|
||||||
$detailFields->removeByName('ID');
|
|
||||||
$detailFields->push(new HiddenField("ctf[ID]"," ",$ID));
|
|
||||||
|
|
||||||
// add a namespaced ID instead thats "converted" by saveComplexTableField()
|
|
||||||
$detailFields->push(new HiddenField("ctf[childID]","",$childID));
|
|
||||||
$detailFields->push(new HiddenField("ctf[ClassName]","",$this->sourceClass));
|
|
||||||
|
|
||||||
$form = new MemberTableField_Popup($this, "DetailForm", $detailFields, $this->sourceClass, false, $this->detailFormValidator);
|
|
||||||
|
|
||||||
if (is_numeric($childID)) {
|
|
||||||
if ($this->methodName == "show" || $this->methodName == "edit") {
|
|
||||||
$childData = DataObject::get_by_id($this->sourceClass, $childID);
|
|
||||||
$form->loadDataFrom($childData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($this->methodName == "show") {
|
|
||||||
$form->makeReadonly();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $form;
|
|
||||||
}
|
|
||||||
|
|
||||||
function SearchForm() {
|
function SearchForm() {
|
||||||
$searchFields = new FieldGroup(
|
$searchFields = new FieldGroup(
|
||||||
new TextField('MemberSearch', 'Search'),
|
new TextField('MemberSearch', 'Search'),
|
||||||
@ -422,10 +347,8 @@ class MemberTableField extends ComplexTableField {
|
|||||||
|
|
||||||
|
|
||||||
class MemberTableField_Popup extends ComplexTableField_Popup {
|
class MemberTableField_Popup extends ComplexTableField_Popup {
|
||||||
|
|
||||||
function __construct($controller, $name, $fields, $sourceClass, $readonly=false, $validator = null) {
|
function __construct($controller, $name, $fields, $sourceClass, $readonly=false, $validator = null) {
|
||||||
|
|
||||||
// DO NOT CHANGE THE ORDER OF THESE JS FILES. THESE ARE ONLY REQUIRED FOR THIS INSTANCE !!!11onetwo
|
|
||||||
|
|
||||||
parent::__construct($controller, $name, $fields, $sourceClass, $readonly, $validator);
|
parent::__construct($controller, $name, $fields, $sourceClass, $readonly, $validator);
|
||||||
|
|
||||||
Requirements::javascript("cms/javascript/MemberTableField.js");
|
Requirements::javascript("cms/javascript/MemberTableField.js");
|
||||||
@ -434,17 +357,20 @@ class MemberTableField_Popup extends ComplexTableField_Popup {
|
|||||||
|
|
||||||
|
|
||||||
function saveComplexTableField() {
|
function saveComplexTableField() {
|
||||||
$id = Convert::raw2sql($_REQUEST['ctf']['childID']);
|
$id = (isset($_REQUEST['ctf']['childID'])) ? Convert::raw2sql($_REQUEST['ctf']['childID']) : false;
|
||||||
|
|
||||||
if (is_numeric($id)) {
|
if (is_numeric($id)) {
|
||||||
$childObject = DataObject::get_by_id($this->sourceClass, $id);
|
$childObject = DataObject::get_by_id($this->sourceClass, $id);
|
||||||
} else {
|
} else {
|
||||||
$childObject = new $this->sourceClass();
|
$childObject = new $this->sourceClass();
|
||||||
|
$this->fields->removeByName('ID');
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->saveInto($childObject);
|
$this->saveInto($childObject);
|
||||||
$childObject->write();
|
$childObject->write();
|
||||||
|
|
||||||
$childObject->Groups()->add($_REQUEST['ctf']['ID']);
|
// add member to current group
|
||||||
|
$childObject->Groups()->add($_REQUEST['GroupID']);
|
||||||
|
|
||||||
// if ajax-call in an iframe, close window by javascript, else redirect to referrer
|
// if ajax-call in an iframe, close window by javascript, else redirect to referrer
|
||||||
if(!Director::is_ajax()) {
|
if(!Director::is_ajax()) {
|
||||||
|
@ -68,7 +68,8 @@ class SecurityAdmin extends LeftAndMain implements PermissionProvider {
|
|||||||
|
|
||||||
$memberList->setController($this);
|
$memberList->setController($this);
|
||||||
$memberList->setPermissions(array('show', 'edit', 'delete', 'export', 'add'));
|
$memberList->setPermissions(array('show', 'edit', 'delete', 'export', 'add'));
|
||||||
|
$memberList->setParentClass('Group');
|
||||||
|
|
||||||
$fields->push($idField = new HiddenField("ID"));
|
$fields->push($idField = new HiddenField("ID"));
|
||||||
$idField->setValue($id);
|
$idField->setValue($id);
|
||||||
$actions = new FieldSet(
|
$actions = new FieldSet(
|
||||||
|
Loading…
Reference in New Issue
Block a user