Hi guys,
I would like to suggest an alternative solution, that does not require doing a repair and rebuild
First thing is to extend the TemplateHandler. Can place it in custom/include/TemplateHandler/CustomTemplateHandler.php, for instance.
The code I have here allows you to re-use this custom template handler and enable/disable the template parsing using a field. But you are free to have another solution.
// custom/include/TemplateHandler/CustomTemplateHandler.php
<?php
require_once 'include/TemplateHandler/TemplateHandler.php';
class CustomTemplateHandler extends TemplateHandler
{
public $disableCheckTemplate = false;
/**
* Override checkTemplate
* @see TemplateHandler::checkTemplate()
*/
function checkTemplate($module, $view, $checkFormName = false, $formName = '')
{
if ($this->disableCheckTemplate === true){
return false;
}
return parent::checkTemplate($module, $view, $checkFormName, $formName);
}
}
Then, for your module extend the view you want (Detail or Edit). Leave here the two examples:
DetailView:
First override the core DetailView2
// custom/include/DetailView/CustomDetailView.php
<?php
require_once('include/DetailView/DetailView2.php');
class CustomDetailView extends DetailView2
{
/**
* Override setup
* @see DetailView2::setup()
*/
public function setup($module, $focus, $metadataFile = null, $tpl = 'include/DetailView/DetailView.tpl')
{
parent::setup($module, $focus, $metadataFile, $tpl);
require_once 'custom/include/TemplateHandler/CustomTemplateHandler.php';
$this->th = new CustomTemplateHandler();
$this->th->ss = $this->ss;
}
}
The add an detail view extension to your module (in this example I’m using is Accounts)
And set the disableCheckTemplate to true when you want.
// custom/modules/Accounts/views/view.detail.php
<?php
require_once('include/MVC/View/views/view.detail.php');
class AccountsViewDetail extends ViewDetail
{
/**
* Override preDisplay
* @see ViewDetail::preDisplay()
*/
public function preDisplay()
{
$metadataFile = $this->getMetaDataFile();
require_once 'custom/include/DetailView/CustomDetailView.php';
$this->dv = new CustomDetailView();
$this->dv->ss = &$this->ss;
$this->dv->setup($this->module, $this->bean, $metadataFile, get_custom_file_if_exists('include/DetailView/DetailView.tpl'));
}
/**
* Override display
* @see ViewDetail::display()
*/
public function display(){
$this->dv->th->disableCheckTemplate = true;
parent::display();
}
}
For the editview
First override the core EditView2
// custom/include/EditView/CustomEditView.php
<?php
require_once 'include/EditView/EditView2.php';
class CustomEditView extends EditView
{
/**
* Override getTemplateHandler
* @see EditView::getTemplateHandler()
*/
protected function getTemplateHandler()
{
require_once 'custom/include/TemplateHandler/CustomTemplateHandler.php';
return new CustomTemplateHandler();
}
}
The add an edit view extension to your module (in this example I’m using is Accounts)
And set the disableCheckTemplate to true when you want.
<?php
require_once('include/MVC/View/views/view.edit.php');
class AccountsViewEdit extends ViewEdit
{
/**
* Override Display
* @see ViewEdit::display()
*/
public function display()
{
global $current_language;
$this->ev->th->disableCheckTemplate = true;
parent::display();
}
/**
* Override getEditView
* @see ViewEdit::getEditView()
*/
protected function getEditView()
{
require_once 'custom/include/EditView/CustomEditView.php';
return new CustomEditView();
}
}
Hope this helps. I think I didn’t miss anything, but if you have problems let me know.