示例#1
0
 /**
  * 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);
 }