/** * Returns the editor HTML for a given element. * * @param BaseElementModel $element * @param bool $includeLocales * * @throws HttpException * @return null */ private function _returnEditorHtml(BaseElementModel $element, $includeLocales) { $localeIds = ElementHelper::getEditableLocaleIdsForElement($element); if (!$localeIds) { throw new HttpException(403); } if ($includeLocales) { if (count($localeIds) > 1) { $response['locales'] = array(); foreach ($localeIds as $localeId) { $locale = craft()->i18n->getLocaleById($localeId); $response['locales'][] = array('id' => $localeId, 'name' => $locale->getName()); } } else { $response['locales'] = null; } } $response['locale'] = $element->locale; $elementType = craft()->elements->getElementType($element->elementType); $namespace = 'editor_' . StringHelper::randomString(10); craft()->templates->setNamespace($namespace); $response['html'] = '<input type="hidden" name="namespace" value="' . $namespace . '">'; if ($element->id) { $response['html'] .= '<input type="hidden" name="elementId" value="' . $element->id . '">'; } if ($element->locale) { $response['html'] .= '<input type="hidden" name="locale" value="' . $element->locale . '">'; } $response['html'] .= '<div class="meta">' . craft()->templates->namespaceInputs($elementType->getEditorHtml($element)) . '</div>'; $response['headHtml'] = craft()->templates->getHeadHtml(); $response['footHtml'] = craft()->templates->getFootHtml(); $this->returnJson($response); }