public function render($label, $customTemplate, $description) { $obj = $this->getPageTypeComposerControlDraftValue(); if (!is_object($obj)) { if ($this->page) { // we HAVE a page, but we don't have a block object, which means something has gone wrong. // we've lost the association. So we abort. View::element('page_types/composer/controls/invalid_block'); return; } $obj = $this->getBlockTypeObject(); } $this->getController($obj); $app = Application::getFacadeApplication(); $env = Environment::get(); $form = $app->make('helper/form'); $set = $this->getPageTypeComposerFormLayoutSetControlObject()->getPageTypeComposerFormLayoutSetObject(); if ($customTemplate) { $rec = $env->getRecord(DIRNAME_BLOCKS . '/' . $obj->getBlockTypeHandle() . '/' . DIRNAME_BLOCK_TEMPLATES_COMPOSER . '/' . $customTemplate); if ($rec->exists()) { $template = DIRNAME_BLOCK_TEMPLATES_COMPOSER . '/' . $customTemplate; } else { foreach (PackageList::get()->getPackages() as $pkg) { $file = (is_dir(DIR_PACKAGES . '/' . $pkg->getPackageHandle()) ? DIR_PACKAGES : DIR_PACKAGES_CORE) . '/' . $pkg->getPackageHandle() . '/' . DIRNAME_BLOCKS . '/' . $obj->getBlockTypeHandle() . '/' . DIRNAME_BLOCK_TEMPLATES_COMPOSER . '/' . $customTemplate; if (file_exists($file)) { $template = DIRNAME_BLOCK_TEMPLATES_COMPOSER . '/' . $customTemplate; break; } } } } if (!isset($template)) { $template = FILENAME_BLOCK_COMPOSER; } $this->inc($template, ['control' => $this, 'obj' => $obj, 'description' => $description]); }