diff --git a/forms/ComplexTableField.php b/forms/ComplexTableField.php index da913ecfd..cfdfa71ee 100755 --- a/forms/ComplexTableField.php +++ b/forms/ComplexTableField.php @@ -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())); - } - } - -} - -?> +?> \ No newline at end of file diff --git a/forms/ScaffoldComplexTableField.php b/forms/ScaffoldComplexTableField.php new file mode 100644 index 000000000..85e35f9dc --- /dev/null +++ b/forms/ScaffoldComplexTableField.php @@ -0,0 +1,138 @@ +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())); + } + } + +} +?> \ No newline at end of file