BUGFIX: re-applied commit 1192d5b671 in order to get ReportAdmin to work with entwine Tree, not _left _right javascript.

This commit is contained in:
Julian Seidenberg 2011-03-01 18:05:26 +13:00
parent a3da342b06
commit a3bd51e388

View File

@ -24,9 +24,6 @@ class ReportAdmin extends LeftAndMain {
public function init() {
parent::init();
Requirements::javascript(CMS_DIR . '/javascript/ReportAdmin_left.js');
Requirements::javascript(CMS_DIR . '/javascript/ReportAdmin_right.js');
Requirements::css(CMS_DIR . '/css/ReportAdmin.css');
// Set custom options for TinyMCE specific to ReportAdmin
@ -35,6 +32,7 @@ class ReportAdmin extends LeftAndMain {
// Always block the HtmlEditorField.js otherwise it will be sent with an ajax request
Requirements::block(SAPPHIRE_DIR . '/javascript/HtmlEditorField.js');
Requirements::javascript(CMS_DIR . '/javascript/ReportAdmin.Tree.js');
}
/**
@ -74,57 +72,55 @@ class ReportAdmin extends LeftAndMain {
}
/**
* Show a report based on the URL query string.
*
* @param SS_HTTPRequest $request The HTTP request object
*/
public function show($request) {
$params = $request->allParams();
return $this->showWithEditForm($params, $this->reportEditFormFor($params['ID']));
}
/**
* @TODO What does this do?
*
* @param unknown_type $params
* @param unknown_type $editForm
* @return unknown
*/
protected function showWithEditForm($params, $editForm) {
if(isset($params['ID'])) Session::set('currentReport', $params['ID']);
if(isset($params['OtherID'])) Session::set('currentOtherID', $params['OtherID']);
if(Director::is_ajax()) {
SSViewer::setOption('rewriteHashlinks', false);
$result = $this->customise(array(
'EditForm' => $editForm
))->renderWith($this->getTemplatesWithSuffix('_right'));
return $this->getLastFormIn($result);
}
return array();
}
/**
* For the current report that the user is viewing,
* return a Form instance with the fields for that
* report.
* Get EditForm for the class specified in request or in session variable
*
* @return Form
*/
public function EditForm() {
// Return the report if the ID is sent by request, or we're specifically asking for the edit form
$id = isset($_REQUEST['ID']) ? $_REQUEST['ID'] : ($this->getRequest()->latestParam('Action') == 'EditForm') ? Session::get('currentReport') : null;
public function EditForm($request = null) {
$className = Session::get('currentPage');
$requestId = $request ? $request->requestVar('ID') : null;
if ( $requestId )
return $this->getEditForm($requestId);
// $className can be null
return $this->getEditForm($className);
if($id) {
foreach($this->Reports() as $report) {
if($id == $report->ID()) return $this->reportEditFormFor($id);
}
/**
* Return a Form instance with fields for the
* particular report currently viewed.
*
* @param string $className Class of the report to fetch
* @return Form
*/
public function getEditForm($className = null) {
if (!$className) {
return $form = $this->EmptyForm();
}
return false;
if (!class_exists($className)) {
die("$className does not exist");
}
Session::set('currentPage', $className);
$obj = new $className();
if(!$obj->canView()) return Security::permissionFailure($this);
$fields = $obj->getCMSFields();
$idField = new HiddenField('ID');
$idField->setValue($className);
$fields->push($idField);
$actions = new FieldSet();
$form = new Form($this, 'EditForm', $fields, $actions);
return $form;
}
/**
@ -143,50 +139,6 @@ class ReportAdmin extends LeftAndMain {
return false;
}
/**
* Return a Form instance with fields for the
* particular report currently viewed.
*
* @TODO Dealing with multiple data types for the
* $id parameter is confusing. Ideally, it should
* deal with only one.
*
* @param id|string $id The ID of the report, or class name
* @return Form
*/
public function reportEditFormFor($id) {
$page = false;
$fields = new FieldSet();
$actions = new FieldSet();
$reports = SS_Report::get_reports('ReportAdmin');
$obj = $reports[$id];
if($obj) $fields = $obj->getCMSFields();
if($obj) $actions = $obj->getCMSActions();
$idField = new HiddenField('ID');
$idField->setValue($id);
$fields->push($idField);
$form = new Form($this, 'EditForm', $fields, $actions);
$form->loadDataFrom($_REQUEST);
// Include search criteria in the form action so that pagination works
$filteredCriteria = array_merge($_GET, $_POST);
foreach(array('ID','url','ajax','ctf','update','action_updatereport','SecurityID') as $notAParam) {
unset($filteredCriteria[$notAParam]);
}
$formLink = $this->Link() . '/EditForm';
if($filteredCriteria) $formLink .= '?' . http_build_query($filteredCriteria);
$form->setFormAction($formLink);
$form->setTemplate('ReportAdminForm');
return $form;
}
/**
* Determine if we have reports and need
* to display the "Reports" main menu item