mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 12:05:37 +00:00
MINOR Moved ScaffoldComplexTableField to separate file
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@60401 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
4904969c60
commit
34479223fa
@ -855,138 +855,4 @@ class ComplexTableField_Popup extends Form {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Used by ModelAdmin scaffolding, to manage many-many relationships.
|
|
||||||
*/
|
|
||||||
class ScaffoldingComplexTableField_Popup extends Form {
|
|
||||||
protected $sourceClass;
|
|
||||||
protected $dataObject;
|
|
||||||
|
|
||||||
public static $allowed_actions = array(
|
|
||||||
'filter', 'record', 'httpSubmission', 'handleAction', 'handleField'
|
|
||||||
);
|
|
||||||
|
|
||||||
function __construct($controller, $name, $fields, $validator, $readonly, $dataObject) {
|
|
||||||
$this->dataObject = $dataObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WARNING: DO NOT CHANGE THE ORDER OF THESE JS FILES
|
|
||||||
* Some have special requirements.
|
|
||||||
*/
|
|
||||||
//Requirements::css('cms/css/layout.css');
|
|
||||||
Requirements::css('jsparty/tabstrip/tabstrip.css');
|
|
||||||
Requirements::css('sapphire/css/Form.css');
|
|
||||||
Requirements::css('sapphire/css/ComplexTableField_popup.css');
|
|
||||||
Requirements::css('cms/css/typography.css');
|
|
||||||
Requirements::css('cms/css/cms_right.css');
|
|
||||||
Requirements::css('jsparty/jquery/plugins/autocomplete/jquery.ui.autocomplete.css');
|
|
||||||
Requirements::javascript("jsparty/prototype.js");
|
|
||||||
Requirements::javascript("jsparty/behaviour.js");
|
|
||||||
Requirements::javascript("jsparty/prototype_improvements.js");
|
|
||||||
Requirements::javascript("jsparty/loader.js");
|
|
||||||
Requirements::javascript("jsparty/tabstrip/tabstrip.js");
|
|
||||||
Requirements::javascript("jsparty/scriptaculous/scriptaculous.js");
|
|
||||||
Requirements::javascript("jsparty/scriptaculous/controls.js");
|
|
||||||
Requirements::javascript("jsparty/layout_helpers.js");
|
|
||||||
Requirements::javascript("cms/javascript/LeftAndMain.js");
|
|
||||||
Requirements::javascript("cms/javascript/LeftAndMain_right.js");
|
|
||||||
Requirements::javascript("sapphire/javascript/TableField.js");
|
|
||||||
Requirements::javascript("sapphire/javascript/ComplexTableField.js");
|
|
||||||
Requirements::javascript("sapphire/javascript/ComplexTableField_popup.js");
|
|
||||||
// jQuery requirements (how many of these are actually needed?)
|
|
||||||
Requirements::javascript('jsparty/jquery/jquery.js');
|
|
||||||
Requirements::javascript('jsparty/jquery/plugins/livequery/jquery.livequery.js');
|
|
||||||
Requirements::javascript('jsparty/jquery/ui/ui.core.js');
|
|
||||||
Requirements::javascript('jsparty/jquery/ui/ui.tabs.js');
|
|
||||||
Requirements::javascript('jsparty/jquery/plugins/form/jquery.form.js');
|
|
||||||
Requirements::javascript('jsparty/jquery/plugins/dimensions/jquery.dimensions.js');
|
|
||||||
Requirements::javascript('jsparty/jquery/plugins/autocomplete/jquery.ui.autocomplete.js');
|
|
||||||
Requirements::javascript('sapphire/javascript/ScaffoldComplexTableField.js');
|
|
||||||
Requirements::javascript('cms/javascript/ModelAdmin.js');
|
|
||||||
|
|
||||||
if($this->dataObject->hasMethod('getRequirementsForPopup')) {
|
|
||||||
$this->dataObject->getRequirementsForPopup();
|
|
||||||
}
|
|
||||||
|
|
||||||
$actions = new FieldSet();
|
|
||||||
if(!$readonly) {
|
|
||||||
$actions->push(
|
|
||||||
$saveAction = new FormAction("saveComplexTableField", "Save")
|
|
||||||
);
|
|
||||||
$saveAction->addExtraClass('save');
|
|
||||||
}
|
|
||||||
|
|
||||||
$fields->push(new HiddenField("ComplexTableField_Path", Director::absoluteBaseURL()));
|
|
||||||
|
|
||||||
parent::__construct($controller, $name, $fields, $actions, $validator);
|
|
||||||
}
|
|
||||||
|
|
||||||
function FieldHolder() {
|
|
||||||
return $this->renderWith('ComplexTableField_Form');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handle a generic action passed in by the URL mapping.
|
|
||||||
*
|
|
||||||
* @param HTTPRequest $request
|
|
||||||
*/
|
|
||||||
public function handleAction($request) {
|
|
||||||
$action = str_replace("-","_",$request->param('Action'));
|
|
||||||
if(!$this->action) $this->action = 'index';
|
|
||||||
|
|
||||||
if($this->checkAccessAction($action)) {
|
|
||||||
if($this->hasMethod($action)) {
|
|
||||||
$result = $this->$action($request);
|
|
||||||
|
|
||||||
// Method returns an array, that is used to customise the object before rendering with a template
|
|
||||||
if(is_array($result)) {
|
|
||||||
return $this->getViewer($action)->process($this->customise($result));
|
|
||||||
|
|
||||||
// Method returns a string / object, in which case we just return that
|
|
||||||
} else {
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// There is no method, in which case we just render this object using a (possibly alternate) template
|
|
||||||
} else {
|
|
||||||
return $this->getViewer($action)->process($this);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return $this->httpError(403, "Action '$action' isn't allowed on class $this->class");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Action to render results for an autocomplete filter.
|
|
||||||
*
|
|
||||||
* @param HTTPRequest $request
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function filter($request) {
|
|
||||||
//$model = singleton($this->modelClass);
|
|
||||||
$context = $this->dataObject->getDefaultSearchContext();
|
|
||||||
$value = $request->getVar('q');
|
|
||||||
$results = $context->getResults(array("Name"=>$value));
|
|
||||||
header("Content-Type: text/plain");
|
|
||||||
foreach($results as $result) {
|
|
||||||
echo $result->Name . "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Action to populate edit box with a single data object via Ajax query
|
|
||||||
*/
|
|
||||||
function record($request) {
|
|
||||||
$type = $request->getVar('type');
|
|
||||||
$value = $request->getVar('value');
|
|
||||||
if ($type && $value) {
|
|
||||||
$record = DataObject::get_one($this->dataObject->class, "$type = '$value'");
|
|
||||||
header("Content-Type: text/plain");
|
|
||||||
echo json_encode(array("record"=>$record->toMap()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
?>
|
138
forms/ScaffoldComplexTableField.php
Normal file
138
forms/ScaffoldComplexTableField.php
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Used by ModelAdmin scaffolding, to manage many-many relationships.
|
||||||
|
*
|
||||||
|
* @package forms
|
||||||
|
* @subpackage fields-relational
|
||||||
|
*/
|
||||||
|
class ScaffoldingComplexTableField_Popup extends Form {
|
||||||
|
protected $sourceClass;
|
||||||
|
protected $dataObject;
|
||||||
|
|
||||||
|
public static $allowed_actions = array(
|
||||||
|
'filter', 'record', 'httpSubmission', 'handleAction', 'handleField'
|
||||||
|
);
|
||||||
|
|
||||||
|
function __construct($controller, $name, $fields, $validator, $readonly, $dataObject) {
|
||||||
|
$this->dataObject = $dataObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WARNING: DO NOT CHANGE THE ORDER OF THESE JS FILES
|
||||||
|
* Some have special requirements.
|
||||||
|
*/
|
||||||
|
//Requirements::css('cms/css/layout.css');
|
||||||
|
Requirements::css('jsparty/tabstrip/tabstrip.css');
|
||||||
|
Requirements::css('sapphire/css/Form.css');
|
||||||
|
Requirements::css('sapphire/css/ComplexTableField_popup.css');
|
||||||
|
Requirements::css('cms/css/typography.css');
|
||||||
|
Requirements::css('cms/css/cms_right.css');
|
||||||
|
Requirements::css('jsparty/jquery/plugins/autocomplete/jquery.ui.autocomplete.css');
|
||||||
|
Requirements::javascript("jsparty/prototype.js");
|
||||||
|
Requirements::javascript("jsparty/behaviour.js");
|
||||||
|
Requirements::javascript("jsparty/prototype_improvements.js");
|
||||||
|
Requirements::javascript("jsparty/loader.js");
|
||||||
|
Requirements::javascript("jsparty/tabstrip/tabstrip.js");
|
||||||
|
Requirements::javascript("jsparty/scriptaculous/scriptaculous.js");
|
||||||
|
Requirements::javascript("jsparty/scriptaculous/controls.js");
|
||||||
|
Requirements::javascript("jsparty/layout_helpers.js");
|
||||||
|
Requirements::javascript("cms/javascript/LeftAndMain.js");
|
||||||
|
Requirements::javascript("cms/javascript/LeftAndMain_right.js");
|
||||||
|
Requirements::javascript("sapphire/javascript/TableField.js");
|
||||||
|
Requirements::javascript("sapphire/javascript/ComplexTableField.js");
|
||||||
|
Requirements::javascript("sapphire/javascript/ComplexTableField_popup.js");
|
||||||
|
// jQuery requirements (how many of these are actually needed?)
|
||||||
|
Requirements::javascript('jsparty/jquery/jquery.js');
|
||||||
|
Requirements::javascript('jsparty/jquery/plugins/livequery/jquery.livequery.js');
|
||||||
|
Requirements::javascript('jsparty/jquery/ui/ui.core.js');
|
||||||
|
Requirements::javascript('jsparty/jquery/ui/ui.tabs.js');
|
||||||
|
Requirements::javascript('jsparty/jquery/plugins/form/jquery.form.js');
|
||||||
|
Requirements::javascript('jsparty/jquery/plugins/dimensions/jquery.dimensions.js');
|
||||||
|
Requirements::javascript('jsparty/jquery/plugins/autocomplete/jquery.ui.autocomplete.js');
|
||||||
|
Requirements::javascript('sapphire/javascript/ScaffoldComplexTableField.js');
|
||||||
|
Requirements::javascript('cms/javascript/ModelAdmin.js');
|
||||||
|
|
||||||
|
if($this->dataObject->hasMethod('getRequirementsForPopup')) {
|
||||||
|
$this->dataObject->getRequirementsForPopup();
|
||||||
|
}
|
||||||
|
|
||||||
|
$actions = new FieldSet();
|
||||||
|
if(!$readonly) {
|
||||||
|
$actions->push(
|
||||||
|
$saveAction = new FormAction("saveComplexTableField", "Save")
|
||||||
|
);
|
||||||
|
$saveAction->addExtraClass('save');
|
||||||
|
}
|
||||||
|
|
||||||
|
$fields->push(new HiddenField("ComplexTableField_Path", Director::absoluteBaseURL()));
|
||||||
|
|
||||||
|
parent::__construct($controller, $name, $fields, $actions, $validator);
|
||||||
|
}
|
||||||
|
|
||||||
|
function FieldHolder() {
|
||||||
|
return $this->renderWith('ComplexTableField_Form');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle a generic action passed in by the URL mapping.
|
||||||
|
*
|
||||||
|
* @param HTTPRequest $request
|
||||||
|
*/
|
||||||
|
public function handleAction($request) {
|
||||||
|
$action = str_replace("-","_",$request->param('Action'));
|
||||||
|
if(!$this->action) $this->action = 'index';
|
||||||
|
|
||||||
|
if($this->checkAccessAction($action)) {
|
||||||
|
if($this->hasMethod($action)) {
|
||||||
|
$result = $this->$action($request);
|
||||||
|
|
||||||
|
// Method returns an array, that is used to customise the object before rendering with a template
|
||||||
|
if(is_array($result)) {
|
||||||
|
return $this->getViewer($action)->process($this->customise($result));
|
||||||
|
|
||||||
|
// Method returns a string / object, in which case we just return that
|
||||||
|
} else {
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// There is no method, in which case we just render this object using a (possibly alternate) template
|
||||||
|
} else {
|
||||||
|
return $this->getViewer($action)->process($this);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return $this->httpError(403, "Action '$action' isn't allowed on class $this->class");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Action to render results for an autocomplete filter.
|
||||||
|
*
|
||||||
|
* @param HTTPRequest $request
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function filter($request) {
|
||||||
|
//$model = singleton($this->modelClass);
|
||||||
|
$context = $this->dataObject->getDefaultSearchContext();
|
||||||
|
$value = $request->getVar('q');
|
||||||
|
$results = $context->getResults(array("Name"=>$value));
|
||||||
|
header("Content-Type: text/plain");
|
||||||
|
foreach($results as $result) {
|
||||||
|
echo $result->Name . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Action to populate edit box with a single data object via Ajax query
|
||||||
|
*/
|
||||||
|
function record($request) {
|
||||||
|
$type = $request->getVar('type');
|
||||||
|
$value = $request->getVar('value');
|
||||||
|
if ($type && $value) {
|
||||||
|
$record = DataObject::get_one($this->dataObject->class, "$type = '$value'");
|
||||||
|
header("Content-Type: text/plain");
|
||||||
|
echo json_encode(array("record"=>$record->toMap()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
Loading…
x
Reference in New Issue
Block a user