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);
}
}