Craft\Seomatic_MetaFieldType::getInputHtml PHP Method

getInputHtml() public method

public getInputHtml ( $name, $value )
    public function getInputHtml($name, $value)
    {
        if (isset($this->element)) {
            $id = craft()->templates->formatInputId($name);
            $namespacedId = craft()->templates->namespaceInputId($id);
            // Include our Javascript & CSS
            craft()->templates->includeCssResource('seomatic/css/css-reset.css');
            craft()->templates->includeCssResource('seomatic/css/prism.min.css');
            craft()->templates->includeCssResource('seomatic/css/bootstrap-tokenfield.css');
            craft()->templates->includeCssResource('seomatic/css/style.css');
            craft()->templates->includeCssResource('seomatic/css/field.css');
            craft()->templates->includeJsResource('seomatic/js/main_entity_type_list.js');
            craft()->templates->includeJs("var metaFieldPrefix='" . $namespacedId . "';");
            craft()->templates->includeJsResource('seomatic/js/meta.js');
            craft()->templates->includeJsResource('seomatic/js/field.js');
            craft()->templates->includeJsResource('seomatic/js/jquery.bpopup.min.js');
            craft()->templates->includeJsResource('seomatic/js/prism.min.js');
            craft()->templates->includeJsResource('seomatic/js/bootstrap-tokenfield.min.js');
            $variables = array('id' => $id, 'name' => $name, 'meta' => $value, 'element' => $this->element, 'field' => $this->model);
            $jsonVars = array('id' => $id, 'name' => $name, 'namespace' => $namespacedId, 'prefix' => craft()->templates->namespaceInputId(""));
            if (isset($variables['locale'])) {
                $locale = $variables['locale'];
            } else {
                $locale = craft()->language;
            }
            $siteMeta = craft()->seomatic->getSiteMeta($locale);
            $titleLength = craft()->config->get("maxTitleLength", "seomatic");
            if ($siteMeta['siteSeoTitlePlacement'] == "none") {
                $variables['titleLength'] = $titleLength;
            } else {
                $variables['titleLength'] = $titleLength - strlen(" | ") - strlen($siteMeta['siteSeoName']);
            }
            /* -- Prep some parameters */
            // Whether any assets sources exist
            $sources = craft()->assets->findFolders();
            $variables['assetsSourceExists'] = count($sources);
            // URL to create a new assets source
            $variables['newAssetsSourceUrl'] = UrlHelper::getUrl('settings/assets/sources/new');
            // Set asset ID
            $variables['seoImageId'] = $variables['meta']->seoImageId;
            // Set asset elements
            if ($variables['seoImageId']) {
                if (is_array($variables['seoImageId'])) {
                    $variables['seoImageId'] = $variables['seoImageId'][0];
                }
                $asset = craft()->elements->getElementById($variables['seoImageId']);
                $variables['elements'] = array($asset);
            } else {
                $variables['elements'] = array();
            }
            // Set asset ID
            $variables['seoTwitterImageId'] = $variables['meta']->seoTwitterImageId;
            // Set asset elements
            if ($variables['seoTwitterImageId']) {
                if (is_array($variables['seoTwitterImageId'])) {
                    $variables['seoTwitterImageId'] = $variables['seoTwitterImageId'][0];
                }
                $asset = craft()->elements->getElementById($variables['seoTwitterImageId']);
                $variables['elementsTwitter'] = array($asset);
            } else {
                $variables['elementsTwitter'] = array();
            }
            // Set asset ID
            $variables['seoFacebookImageId'] = $variables['meta']->seoFacebookImageId;
            // Set asset elements
            if ($variables['seoFacebookImageId']) {
                if (is_array($variables['seoFacebookImageId'])) {
                    $variables['seoFacebookImageId'] = $variables['seoFacebookImageId'][0];
                }
                $asset = craft()->elements->getElementById($variables['seoFacebookImageId']);
                $variables['elementsFacebook'] = array($asset);
            } else {
                $variables['elementsFacebook'] = array();
            }
            // Set element type
            $variables['elementType'] = craft()->elements->getElementType(ElementType::Asset);
            $variables['assetSources'] = $this->getSettings()->assetSources;
            $variables['seoTitleSourceChangeable'] = $this->getSettings()->seoTitleSourceChangeable;
            $variables['seoDescriptionSourceChangeable'] = $this->getSettings()->seoDescriptionSourceChangeable;
            $variables['seoKeywordsSourceChangeable'] = $this->getSettings()->seoKeywordsSourceChangeable;
            $variables['seoImageIdSourceChangeable'] = $this->getSettings()->seoImageIdSourceChangeable;
            $variables['seoTwitterImageIdSourceChangeable'] = $this->getSettings()->seoTwitterImageIdSourceChangeable;
            $variables['seoFacebookImageIdSourceChangeable'] = $this->getSettings()->seoFacebookImageIdSourceChangeable;
            $variables['twitterCardTypeChangeable'] = $this->getSettings()->twitterCardTypeChangeable;
            $variables['openGraphTypeChangeable'] = $this->getSettings()->openGraphTypeChangeable;
            $variables['robotsChangeable'] = $this->getSettings()->robotsChangeable;
            $variables['transformsList'] = craft()->seomatic->getTransformsList();
            /* -- Extract a list of the other plain text fields that are in this entry's layout */
            $fieldList = array('title' => 'Title');
            $fieldData = array('title' => $this->element->content['title']);
            $fieldImage = array();
            $imageFieldList = array();
            $fieldLayouts = $this->element->fieldLayout->getFields();
            foreach ($fieldLayouts as $fieldLayout) {
                $field = craft()->fields->getFieldById($fieldLayout->fieldId);
                switch ($field->type) {
                    case "PlainText":
                    case "RichText":
                    case "RedactorI":
                    case "PreparseField_Preparse":
                        $fieldList[$field->handle] = $field->name;
                        $fieldData[$field->handle] = craft()->seomatic->truncateStringOnWord(strip_tags($this->element->content[$field->handle]), 200);
                        break;
                    case "Neo":
                        $fieldList[$field->handle] = $field->name;
                        $fieldData[$field->handle] = craft()->seomatic->truncateStringOnWord(craft()->seomatic->extractTextFromNeo($this->element[$field->handle]), 200);
                        break;
                    case "Matrix":
                        $fieldList[$field->handle] = $field->name;
                        $fieldData[$field->handle] = craft()->seomatic->truncateStringOnWord(craft()->seomatic->extractTextFromMatrix($this->element[$field->handle]), 200);
                        break;
                    case "Tags":
                        $fieldList[$field->handle] = $field->name;
                        $fieldData[$field->handle] = craft()->seomatic->truncateStringOnWord(craft()->seomatic->extractTextFromTags($this->element[$field->handle]), 200);
                        break;
                    case "FocusPoint_FocusPoint":
                    case "Assets":
                        $imageFieldList[$field->handle] = $field->name;
                        $img = $this->element[$field->handle]->first();
                        if ($img) {
                            $fieldImage[$field->handle] = $img->url;
                        }
                        break;
                }
            }
            $variables['fieldList'] = $fieldList;
            $variables['imageFieldList'] = $imageFieldList;
            $variables['elementId'] = $this->element->id;
            $jsonVars['fieldData'] = $fieldData;
            $jsonVars['fieldImage'] = $fieldImage;
            $jsonVars['missing_image'] = UrlHelper::getResourceUrl('seomatic/images/missing_image.png');
            $jsonVars = json_encode($jsonVars);
            craft()->templates->includeJs("\$('#{$namespacedId}').SeomaticFieldType(" . $jsonVars . ");");
            return craft()->templates->render('seomatic/field', $variables);
        }
    }