adminSearchFields(); } function getLink() { return 'admin/subsites/'; } function Link() { return $this->getLink(); } function Results($data = null) { if(!$data) $data = $this->requestParams; $where = ''; if(isset($data['Name']) && $data['Name']) { $SQL_name = Convert::raw2sql($data['Name']); $where = "Title LIKE '%$SQL_name%'"; } else { $where = "Title != ''"; } $intranets = null; $intranets = DataObject::get('Subsite_Template', $where, 'Title'); $subsites = DataObject::get('Subsite', $where, 'Title'); if($intranets) { $intranets->merge($subsites); } else { $intranets = $subsites; } if(!$intranets) return null; $intranets->removeDuplicates(); $html = ""; $numIntranets = 0; foreach($intranets as $intranet) { $numIntranets++; $evenOdd = ($numIntranets % 2) ? 'odd':'even'; $prefix = ($intranet instanceof Subsite_Template) ? " * " : ""; $html .= ""; } $html .= "
NameDomain
ID}\">$prefix{$intranet->Title}ID}\">{$intranet->Subdomain}.{$intranet->Domain}
"; return $html; } /** * Returns the form for adding subsites. * @returns Form A nerw form object */ function AddSubsiteForm() { $templates = $this->getIntranetTemplates(); $templateArray = array('' => "(No template)"); if($templates) { $templateArray = $templateArray + $templates->map('ID', 'Title'); } return new Form($this, 'AddSubsiteForm', new FieldSet( new TextField('Name', 'Name:'), new TextField('Subdomain', 'Subdomain:'), new DropdownField('Type', 'Type', array( 'subsite' => 'New site', 'template' => 'New template', )), new DropdownField('TemplateID', 'Copy structure from:', $templateArray)//, /*new TextField('AdminName', 'Admin name:'), new EmailField('AdminEmail', 'Admin email:')*/ ), new FieldSet( new FormAction('addintranet', 'Add') )); } public function getIntranetTemplates() { return DataObject::get('Subsite_Template', '', 'Title'); } function addintranet($data, $form) { if($data['Name'] && ($data['Subdomain'] || $data['Type'] == 'template')) { if(isset($data['TemplateID']) && $data['TemplateID']) { $template = DataObject::get_by_id('Subsite_Template', $data['TemplateID']); } else { $template = null; } // Create intranet from existing template switch($data['Type']) { case 'template': if($template) $intranet = $template->duplicate(); else $intranet = new Subsite_Template(); $intranet->Title = $data['Name']; $intranet->write(); break; case 'subsite': default: if($template) $intranet = $template->createInstance($data['Name'], $data['Subdomain']); else { $intranet = new Subsite(); $intranet->Title = $data['Name']; $intranet->Subdomain = $data['Subdomain']; $intranet->write(); } break; } Director::redirect('admin/subsites/show/' . $intranet->ID); } else { if($data['Type'] == 'template') echo "You must provide a name for your new template."; else echo "You must provide a name and subdomain for your new site."; } } /** * Use this as an action handler for custom CMS buttons. */ function callPageMethod2($data, $form) { return $this->callPageMethod($data, $form); } } ?>