From 46cb21b02534900c90cbb2a3995ef8df895fd221 Mon Sep 17 00:00:00 2001 From: Cameron Date: Tue, 26 Jan 2021 11:55:10 -0800 Subject: [PATCH] Meta admin page now uses Admin-ui. Additional custom tag areas added. --- e107_admin/db.php | 2 +- e107_admin/meta.php | 254 ++++++++++++++------- e107_core/templates/footer_default.php | 10 +- e107_core/templates/header_default.php | 36 ++- e107_handlers/e107_class.php | 45 +++- e107_handlers/language_class.php | 4 + e107_languages/English/admin/help/meta.php | 21 -- e107_languages/English/admin/lan_meta.php | 8 +- 8 files changed, 257 insertions(+), 123 deletions(-) delete mode 100644 e107_languages/English/admin/help/meta.php diff --git a/e107_admin/db.php b/e107_admin/db.php index 34089cf32..024bbb1b6 100644 --- a/e107_admin/db.php +++ b/e107_admin/db.php @@ -1446,7 +1446,7 @@ class system_tools foreach($spref as $key => $val) { - $ptext = (is_array($val)) ? "
".print_r($val, TRUE)."
" : htmlspecialchars($val, ENT_QUOTES, 'utf-8'); + $ptext = (is_array($val)) ? "
".htmlentities(print_r($val, TRUE))."
" : htmlspecialchars($val, ENT_QUOTES, 'utf-8'); $ptext = $tp->textclean($ptext, 80); $text .= " diff --git a/e107_admin/meta.php b/e107_admin/meta.php index 11551b218..0da2c7a27 100644 --- a/e107_admin/meta.php +++ b/e107_admin/meta.php @@ -14,9 +14,9 @@ if(!empty($_POST) && !isset($_POST['e-token'])) { $_POST['e-token'] = ''; } -require_once(__DIR__.'/../class2.php'); +require_once(__DIR__ . '/../class2.php'); -if (!getperms("T")) +if(!getperms("T")) { e107::redirect('admin'); exit; @@ -24,60 +24,111 @@ if (!getperms("T")) e107::coreLan('meta', true); -$e_sub_cat = 'meta'; -require_once("auth.php"); -$mes = e107::getMessage(); -$frm = e107::getForm(); -$ns = e107::getRender(); - -if (isset($_POST['metasubmit'])) +class meta_admin extends e_admin_dispatcher { - $tmp = $pref['meta_tag']; - $langs = explode(",",e_LANLIST); - foreach($langs as $lan) - { - $meta_tag[$lan] = $tmp[$lan]; - $meta_diz[$lan] = $pref['meta_description'][$lan]; - $meta_keywords[$lan] = $pref['meta_keywords'][$lan]; - $meta_copyright[$lan] = $pref['meta_copyright'][$lan]; - $meta_author[$lan] = $pref['meta_author'][$lan]; - } - $meta_tag[e_LANGUAGE] = rtrim($_POST['meta']); - $meta_diz[e_LANGUAGE] = rtrim($_POST['meta_description']); - $meta_keywords[e_LANGUAGE] = rtrim($_POST['meta_keywords']); - $meta_copyright[e_LANGUAGE] = rtrim($_POST['meta_copyright']); - $meta_author[e_LANGUAGE] = rtrim($_POST['meta_author']); + protected $modes = array( + 'main' => array( + 'controller' => 'meta_admin_ui', + 'path' => null, + 'ui' => 'e_admin_form_ui', + 'uipath' => null + ) + ); - $pref['meta_news_summary'] = intval($_POST['meta_news_summary']); - $pref['meta_tag'] = $meta_tag; - $pref['meta_description'] = $meta_diz; - $pref['meta_keywords'] = $meta_keywords; - $pref['meta_copyright'] = $meta_copyright; - $pref['meta_author'] = $meta_author; - /* - if($pref['meta_tag'][e_LANGUAGE] == ""){ - unset($meta_tag[e_LANGUAGE]); - }*/ + protected $adminMenu = array( + 'main/meta' => array('caption' => LAN_MANAGE, 'perm' => '0'), + ); + + protected $adminMenuAliases = array(// 'main/edit' => 'main/list' + ); + + protected $menuTitle = METLAN_00; + + protected $adminMenuIcon = 'e-meta-24'; - e107::getLog()->add('META_01', 'meta_news_summary=>'.$pref['meta_news_summary'].'[!br!]'.e_LANGUAGE, E_LOG_INFORMATIVE, ''); - save_prefs(); } -$meta = vartrue($pref['meta_tag'], array()); -$meta_diz = vartrue($pref['meta_description'], array()); -$meta_keywords = vartrue($pref['meta_keywords'], array()); -$meta_copyright = vartrue($pref['meta_copyright'], array()); -$meta_author = vartrue($pref['meta_author'], array()); + +class meta_admin_ui extends e_admin_ui +{ + + protected $pluginTitle = METLAN_00; + protected $pluginName = 'core'; + + function init() + { + + if(isset($_POST['metasubmit'])) + { + $this->save(); + } + } + function save() + { -$text = " -
+ $fields = array( + 'meta_description', + 'meta_keywords', + 'meta_copyright', + 'meta_author', + 'meta_tag', + 'meta_bodystart', + 'meta_bodyend', + ); + + $cfg = e107::getConfig(); + + foreach($fields as $key) + { + if(isset($_POST[$key])) + { + $cfg->setPref($key . '/' . e_LANGUAGE, trim($_POST[$key])); + } + } + + $cfg->set('meta_news_summary', varset($_POST['meta_news_summary'])); + $cfg->save(true, true, true); + } + + + public function renderHelp() + { + + $caption = LAN_HELP; + $text = htmlentities(METLAN_7); + + return array('caption' => $caption, 'text' => $text); + } + + + public function metaPage() + { + + $mes = e107::getMessage(); + $frm = $this->getUI(); + $ns = e107::getRender(); + $pref = e107::getPref(); + $tp = e107::getParser(); + + $meta_diz = vartrue($pref['meta_description'], array()); + $meta_keywords = vartrue($pref['meta_keywords'], array()); + $meta_copyright = vartrue($pref['meta_copyright'], array()); + $meta_author = vartrue($pref['meta_author'], array()); + + $customTagHead = vartrue($pref['meta_tag'], array()); + $customTagBodyStart = vartrue($pref['meta_bodystart'], array()); + $customTagBodyEnd = vartrue($pref['meta_bodyend'], array()); + + + $text = " +
- ".METLAN_00." (".e_LANGUAGE.")"." + " . METLAN_00 . " (" . e_LANGUAGE . ")" . " @@ -85,60 +136,101 @@ $text = " - + + $text .= $frm->textarea('meta_description', $tp->toForm(varset($meta_diz[e_LANGUAGE])), 3, 80, array('size' => 'xxlarge')); + // $text .= ""; + $text .= " - + + $text .= $frm->tags('meta_keywords', $tp->toForm(varset($meta_keywords[e_LANGUAGE]))); + // $text .= ""; + + $text .= " - - + + - - + + - + + $text .= $frm->textarea('meta_tag', str_replace("<", "<", $tp->toForm(varset($customTagHead[e_LANGUAGE]))), 5, 100, array('size' => 'block-level', 'placeholder' => "eg. ")); + + $text .= " - + + + + + + + + + - - -
".LAN_DESCRIPTION."" . LAN_DESCRIPTION . " "; - $text .= $frm->textarea('meta_description',$tp->toForm(varset($meta_diz[e_LANGUAGE])),3,80, array('size'=>'xxlarge')); - // $text .= ""; - $text .= "
".LAN_KEYWORDS."" . LAN_KEYWORDS . " "; - $text .= $frm->tags('meta_keywords',$tp->toForm(varset($meta_keywords[e_LANGUAGE]))); - // $text .= ""; - - $text .= "
".LAN_COPYRIGHT."" . LAN_COPYRIGHT . "
".LAN_AUTHOR."" . LAN_AUTHOR . "
".METLAN_1."" . $this->metaLabel(METLAN_4, '') . " "; - $text .= $frm->textarea('meta',str_replace("<","<",$tp->toForm(varset($meta[e_LANGUAGE]))),5,100,'size=block-level'); - - $text .= "".METLAN_2.""; - - // $text .= "".METLAN_2.""; - - $text .= "
".METLAN_3."" . $this->metaLabel(METLAN_5, '') . ""; + $text .= $frm->textarea('meta_bodystart', str_replace("<", "<", $tp->toForm(varset($customTagBodyStart[e_LANGUAGE]))), 5, 100, array('size' => 'block-level', 'placeholder' => "eg. ")); + + $text .= "
" . $this->metaLabel(METLAN_6, '') . ""; + $text .= $frm->textarea('meta_bodyend', str_replace("<", "<", $tp->toForm(varset($customTagBodyEnd[e_LANGUAGE]))), 5, 100, array('size' => 'block-level', 'placeholder' => "eg. ")); + + $text .= "
" . METLAN_3 . " -
". - $frm->checkbox('meta_news_summary',1, varset($pref['meta_news_summary']))." -
-
-
". - $frm->admin_button('metasubmit','no-value','update', LAN_UPDATE)." -
- -
-
-"; +
" . + $frm->checkbox('meta_news_summary', 1, varset($pref['meta_news_summary'])) . " +
+ + + + +
" . + $frm->admin_button('metasubmit', 'no-value', 'update', LAN_UPDATE) . " +
+ + + + "; + + $caption = htmlentities(METLAN_00); + $installedLangs = e107::getLanguage()->installed('count'); + + if($installedLangs > 1) + { + $caption .= " (" . e_LANGUAGE . ")"; + } + + return $text; + // $ns->tablerender($caption, $mes->render() . $text); + } + + + function metaLabel($text, $small) + { + + $small = htmlentities($small); + +// $text = str_replace(['(', ')'], ['', ''], $text); + return e107::getParser()->lanVars($text, $small, true); + } +} + + +new meta_admin(); + +$e_sub_cat = 'meta'; + +require_once('auth.php'); + +e107::getAdminUI()->runPage(); -$ns->tablerender(METLAN_00." (".e_LANGUAGE.")", $mes->render().$text); require_once("footer.php"); diff --git a/e107_core/templates/footer_default.php b/e107_core/templates/footer_default.php index d42b6cd41..206509a18 100644 --- a/e107_core/templates/footer_default.php +++ b/e107_core/templates/footer_default.php @@ -82,7 +82,7 @@ if (varset($e107_popup) != 1) '{---FOOTER---}' => $tp->parseTemplate('{FOOTER}',true) ); - e107::renderLayout($FOOTER, $psc); + e107::renderLayout($FOOTER, array('magicSC'=>$psc)); } $eTimingStop = microtime(); @@ -407,6 +407,14 @@ $show = deftrue('e_POWEREDBY_DISABLE') ? "none" : "block"; // Let search engines //XXX Must not contain IDs or Classes // echo "
Proudly powered by e107
"; unset($show); + +if(isset($pref['meta_bodyend'][e_LANGUAGE])) +{ + echo "\n\n"; + echo $pref['meta_bodyend'][e_LANGUAGE]."\n"; + echo "\n\n"; +} + echo "\n\n"; //hook into the end of page (usefull for example for capturing output buffering) diff --git a/e107_core/templates/header_default.php b/e107_core/templates/header_default.php index 25130a4fd..89e1565e9 100644 --- a/e107_core/templates/header_default.php +++ b/e107_core/templates/header_default.php @@ -462,12 +462,17 @@ function render_meta($type) if($type == "tag") { - return str_replace("<", "<", $tp -> toHTML($pref['meta_tag'][e_LANGUAGE], FALSE, "nobreak, no_hook, no_make_clickable"))."\n"; + $ret = "\n\n"; + $ret .= varset($pref['meta_tag'][e_LANGUAGE])."\n"; + // $ret .= str_replace("<", "<", $pref['meta_tag'][e_LANGUAGE]."\n"; + $ret .= "\n\n"; } else { - return ''."\n"; + $ret = ''."\n"; } + + return $ret; } // legay meta-tag checks. @@ -649,6 +654,10 @@ elseif(!defined('BODYTAG')) // @deprecated. $body_onload .= " id='layout-".e107::getForm()->name2id(THEME_LAYOUT)."' "; echo "\n"; + if(isset($pref['meta_bodystart'][e_LANGUAGE])) + { + echo $pref['meta_bodystart'][e_LANGUAGE]."\n"; + } } else { @@ -664,6 +673,10 @@ else echo BODYTAG."\n"; } + if(isset($pref['meta_bodystart'][e_LANGUAGE])) + { + echo $pref['meta_bodystart'][e_LANGUAGE]."\n"; + } } // Bootstrap Modal Window @@ -743,14 +756,17 @@ e107::getDebug()->logTime('Render Layout'); $psc = array( - '{THEME}' => THEME_ABS, - '{BODY_ONLOAD}' => $body_onload, - '{LAYOUT_ID}' => 'layout-'.e107::getForm()->name2id(THEME_LAYOUT), - '{---MODAL---}' => (isset($LAYOUT['_modal_']) ? $LAYOUT['_modal_'] : '') , - '{---HEADER---}' => e107::getParser()->parseTemplate('{HEADER}',true), - '{---FOOTER---}' => e107::getParser()->parseTemplate('{FOOTER}',true), - ); - + 'magicSC'=>array( + '{THEME}' => THEME_ABS, + '{BODY_ONLOAD}' => $body_onload, + '{LAYOUT_ID}' => 'layout-'.e107::getForm()->name2id(THEME_LAYOUT), + '{---MODAL---}' => (isset($LAYOUT['_modal_']) ? $LAYOUT['_modal_'] : '') , + '{---HEADER---}' => e107::getParser()->parseTemplate('{HEADER}',true), + '{---FOOTER---}' => e107::getParser()->parseTemplate('{FOOTER}',true), + ), + 'bodyStart' => varset($pref['meta_bodystart'][e_LANGUAGE]) + ); + e107::renderLayout($HEADER, $psc); // echo $HEADER; diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index 4dcfa752e..4db778ebf 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -308,7 +308,7 @@ class e107 /** * Render layout - replacement for legacy parseheader() function in header_default.php * @param string $LAYOUT - * @param array $opts - magic shortcode key=>value pair replacements + * @param array $opts - 'magicSC' => array of magic shortcode key=>value pair replacements and 'bodyStart' - code to place after body tag. * @return void */ public static function renderLayout($LAYOUT, $opts = array()) @@ -318,27 +318,58 @@ class e107 $tmp = explode("\n", $LAYOUT); + + $sc = self::getScBatch('_theme_'); // include the theme shortcodes. - $search = array_keys($opts); - $replace = array_values($opts); + $parseMagic = false; + $bodyStart = false; + $bodyTag = false; - foreach ($tmp as $line) + if(isset($opts['magicSC'])) { + $search = array_keys($opts['magicSC']); + $replace = array_values($opts['magicSC']); + $parseMagic = true; + } + + if(isset($opts['bodyStart']) && !empty($opts['bodyStart'])) + { + $bodyStart = true; + } + + foreach ($tmp as $k=>$line) + { + if(empty($line)) { continue; } - $line = str_replace($search, $replace, $line); // Quick-fix allow for use of {THEME} shortcode. + if($bodyStart) + { + if($bodyTag) + { + echo "\n\n"; + echo trim($opts['bodyStart'])."\n"; + echo "\n\n"; + } + + $bodyTag = (strpos(trim($line), 'parseTemplate($line, true, $sc) . "\n"; // retain line-breaks. } diff --git a/e107_handlers/language_class.php b/e107_handlers/language_class.php index ea802e7db..7aa382935 100644 --- a/e107_handlers/language_class.php +++ b/e107_handlers/language_class.php @@ -453,6 +453,10 @@ class language{ return $natList; break; + case 'count': + return count($this->lanlist); + break; + case "english": default: return $this->lanlist; diff --git a/e107_languages/English/admin/help/meta.php b/e107_languages/English/admin/help/meta.php deleted file mode 100644 index cf213ad6a..000000000 --- a/e107_languages/English/admin/help/meta.php +++ /dev/null @@ -1,21 +0,0 @@ - tablerender("Meta Tags", $text); diff --git a/e107_languages/English/admin/lan_meta.php b/e107_languages/English/admin/lan_meta.php index a8c1b4ed8..59a97c32d 100644 --- a/e107_languages/English/admin/lan_meta.php +++ b/e107_languages/English/admin/lan_meta.php @@ -6,9 +6,13 @@ * */ -define("METLAN_00", "Meta Tags"); +define("METLAN_00", "Meta & Custom Tags"); define("METLAN_1", "Additional meta tags"); -define("METLAN_2", "e.g. < meta name='revisit-after' content='30 days' />"); //FIXME space between < and meta: parses meta tag for some reason +define("METLAN_2", "e.g. < meta name='revisit-after' content='30 days' />"); define("METLAN_3", "Use news title and summary as the meta-description on news pages."); +define("METLAN_4", "Custom tags (inside [x] tags)"); +define("METLAN_5", "Custom tags (after [x])"); +define("METLAN_6", "Custom tags (before [x])"); +define("METLAN_7", "Any meta data or custom HTML tags entered here (such as