diff --git a/e107_core/shortcodes/batch/navigation_shortcodes.php b/e107_core/shortcodes/batch/navigation_shortcodes.php
new file mode 100644
index 000000000..a9128a69a
--- /dev/null
+++ b/e107_core/shortcodes/batch/navigation_shortcodes.php
@@ -0,0 +1,336 @@
+navClass;
+ }
+
+
+ /**
+ *
+ * @return string 'active' on the active link.
+ * @example {LINK_ACTIVE}
+ */
+ function sc_link_active($parm = '')
+ {
+
+ if($this->active == true)
+ {
+ return 'active';
+ }
+
+ // check if it's the first link.. (eg. anchor mode) and nothing activated.
+ return ($this->counter == 1) ? 'active' : '';
+
+ }
+
+ /**
+ * Return the primary_id number for the current link
+ *
+ * @return integer
+ */
+ function sc_link_id($parm = null)
+ {
+
+ return (int) $this->var['link_id'];
+ }
+
+ function sc_link_depth($parm = null)
+ {
+
+ unset($parm);
+
+ return isset($this->var['link_depth']) ? (int) $this->var['link_depth'] : $this->depth;
+ }
+
+
+ function setDepth($val)
+ {
+
+ $this->depth = (int) $val;
+ }
+
+
+ /**
+ * Return the name of the current link
+ *
+ * @return string
+ * @example {LINK_NAME}
+ */
+ function sc_link_name($parm = null)
+ {
+
+ if(empty($this->var['link_name']))
+ {
+ return null;
+ }
+
+ if(strpos($this->var['link_name'], 'submenu.') === 0) // BC Fix.
+ {
+ list($tmp, $tmp2, $link) = explode('.', $this->var['link_name'], 3);
+ unset($tmp, $tmp2);
+ }
+ else
+ {
+ $link = $this->var['link_name'];
+ }
+
+ return e107::getParser()->toHTML($link, false, 'defs');
+ }
+
+
+ /**
+ * Return the parent of the current link
+ *
+ * @return integer
+ */
+ function sc_link_parent($parm = null)
+ {
+
+ return (int) $this->var['link_parent'];
+ }
+
+
+ function sc_link_identifier($parm = null)
+ {
+
+ return isset($this->var['link_identifier']) ? $this->var['link_identifier'] : '';
+ }
+
+ /**
+ * Return the URL of the current link
+ *
+ * @return string
+ */
+ function sc_link_url($parm = null)
+ {
+
+ $tp = e107::getParser();
+
+ if(!empty($this->var['link_owner']) && !empty($this->var['link_sefurl']))
+ {
+ return e107::url($this->var['link_owner'], $this->var['link_sefurl']);
+ }
+
+ if(strpos($this->var['link_url'], e_HTTP) === 0)
+ {
+ $url = "{e_BASE}" . substr($this->var['link_url'], strlen(e_HTTP));
+ }
+ elseif($this->var['link_url'][0] !== "{" && strpos($this->var['link_url'], "://") === false)
+ {
+ $url = "{e_BASE}" . $this->var['link_url']; // Add e_BASE to links like: 'news.php' or 'contact.php'
+ }
+ else
+ {
+ $url = $this->var['link_url'];
+ }
+
+ $url = $tp->replaceConstants($url, 'full', true);
+
+ if(strpos($url, "{") !== false)
+ {
+ $url = $tp->parseTemplate($url, true); // BC Fix shortcode in URL support - dynamic urls for multilanguage.
+ }
+
+ return $url;
+ }
+
+ /*
+ function sc_link_sub_oversized($parm='')
+ {
+ $count = count($this->var['link_sub']);
+
+ if(!empty($parm) && $count > $parm)
+ {
+ return 'oversized';
+ }
+
+ return $count;
+
+ }
+ */
+
+ /**
+ * Returns only the anchor target in the URL if one is found.
+ *
+ * @param array $parm
+ * @return null|string
+ */
+ function sc_link_target($parm = null)
+ {
+
+ if(strpos($this->var['link_url'], '#') !== false)
+ {
+ list($tmp, $segment) = explode('#', $this->var['link_url'], 2);
+
+ return '#' . $segment;
+
+ }
+
+ return '#';
+ }
+
+
+ function sc_link_open($parm = '')
+ {
+
+ $type = $this->var['link_open'] ? (int) $this->var['link_open'] : 0;
+
+ ### 0 - same window, 1 - target blank, 4 - 600x400 popup, 5 - 800x600 popup
+ ### TODO - JS popups (i.e. bootstrap)
+ switch($type)
+ {
+ case 1:
+ return ' target="_blank"';
+ break;
+
+ case 4:
+ return " onclick=\"open_window('" . $this->var['link_url'] . "',600,400); return false;\"";
+ break;
+
+ case 5:
+ return " onclick=\"open_window('" . $this->var['link_url'] . "',800,600); return false;\"";
+ break;
+ }
+
+ return '';
+ }
+
+ /**
+ * @deprecated - Use {LINK_ICON} instead.
+ */
+ function sc_link_image($parm = '')
+ {
+
+ trigger_error('{LINK_IMAGE} is deprecated. Use {LINK_ICON} instead', E_USER_DEPRECATED); // NO LAN
+
+ return $this->sc_link_icon($parm);
+ }
+
+
+ /**
+ * Return the link icon of the current link
+ *
+ * @return string
+ */
+ function sc_link_icon($parm = '')
+ {
+
+ $tp = e107::getParser();
+
+ if(empty($this->var['link_button']))
+ {
+ return '';
+ }
+
+ // if($icon = $tp->toGlyph($this->var['link_button']))
+ // {
+ // return $icon;
+ // }
+ // else
+ {
+ //$path = e107::getParser()->replaceConstants($this->var['link_button'], 'full', TRUE);
+ return $tp->toIcon($this->var['link_button'], array('fw' => true, 'space' => ' ', 'legacy' => "{e_IMAGE}icons/"));
+ // return "
";
+ }
+
+ }
+
+
+ /**
+ * Return the link description of the current link
+ *
+ * @return string
+ */
+ function sc_link_description($parm = '')
+ {
+
+ $toolTipEnabled = e107::pref('core', 'linkpage_screentip', false);
+
+ if($toolTipEnabled == false || empty($this->var['link_description']))
+ {
+ return null;
+ }
+
+
+ return e107::getParser()->toAttribute($this->var['link_description']);
+ }
+
+
+ /**
+ * Return the parsed sublinks of the current link
+ *
+ * @return string
+ */
+ function sc_link_sub($parm = '')
+ {
+
+ if(empty($this->var['link_sub']))
+ {
+ return false;
+ }
+
+ if(is_string($this->var['link_sub'])) // html override option.
+ {
+
+ // e107::getDebug()->log($this->var);
+
+ return $this->var['link_sub'];
+ }
+
+ $this->depth++;
+ // Assume it's an array.
+
+ $startTemplate = !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerstart'] : $this->template['submenu_start'];
+ $endTemplate = !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerend'] : $this->template['submenu_end'];
+
+ $text = e107::getParser()->parseTemplate(str_replace('{LINK_SUB}', '', $startTemplate), true, $this);
+
+ foreach($this->var['link_sub'] as $val)
+ {
+ $active = (e107::getNav()->isActive($val, $this->activeSubFound, true)) ? "_active" : "";
+
+ $this->setVars($val); // isActive is allowed to alter data
+ $tmpl = !empty($val['link_sub']) ? varset($this->template['submenu_loweritem' . $active]) : varset($this->template['submenu_item' . $active]);
+ $text .= e107::getParser()->parseTemplate($tmpl, true, $this);
+ if($active)
+ {
+ $this->activeSubFound = true;
+ }
+ }
+
+ $text .= e107::getParser()->parseTemplate(str_replace('{LINK_SUB}', '', $endTemplate), true, $this);
+
+ return $text;
+ }
+
+ /**
+ * Return a generated anchor for the current link.
+ *
+ * @param unused
+ * @return string - a generated anchor for the current link.
+ * @example {LINK_ANCHOR}
+ */
+ function sc_link_anchor($parm = '')
+ {
+
+ return $this->var['link_name'] ? '#' . e107::getForm()->name2id($this->var['link_name']) : '';
+ }
+ }
\ No newline at end of file
diff --git a/e107_core/shortcodes/single/navigation.php b/e107_core/shortcodes/single/navigation.php
index 75ba55210..8d525e80e 100644
--- a/e107_core/shortcodes/single/navigation.php
+++ b/e107_core/shortcodes/single/navigation.php
@@ -1,13 +1,13 @@
1,
@@ -45,9 +45,9 @@
$nav = e107::getNav();
$template = e107::getCoreTemplate('navigation', $tmpl);
- $data = $nav->initData($category,$parm);
+ $data = $nav->initData($category, $parm);
- return $nav->render($data, $template);
+ return $nav->render($data, $template, $parm);
}
\ No newline at end of file
diff --git a/e107_handlers/sitelinks_class.php b/e107_handlers/sitelinks_class.php
index 4d61d3c33..84339a389 100644
--- a/e107_handlers/sitelinks_class.php
+++ b/e107_handlers/sitelinks_class.php
@@ -1632,7 +1632,7 @@ i.e-cat_users-32{ background-position: -555px 0; width: 32px; height: 32px; }
/**
* TODO Cache
*/
- public function render($data, $template, $useCache = true)
+ public function render($data, $template, $opts = array())
{
if(empty($data) || empty($template) || !is_array($template))
{
@@ -1641,7 +1641,13 @@ i.e-cat_users-32{ background-position: -555px 0; width: 32px; height: 32px; }
/** @var navigation_shortcodes $sc */
$sc = e107::getScBatch('navigation');
- $sc->template = $template;
+ $sc->template = $template;
+
+ if(!empty($opts['class']))
+ {
+ $sc->navClass = $opts['class'];
+ }
+
$head = e107::getParser()->parseTemplate($template['start'],true);
$foot = e107::getParser()->parseTemplate($template['end'],true);
$ret = "";
@@ -1923,312 +1929,3 @@ i.e-cat_users-32{ background-position: -555px 0; width: 32px; height: 32px; }
return false;
}
}
-
-
-
-
-
-
-
-
-
-
-
-/**
- * Navigation Shortcodes
- * @todo SEF
- */
-class navigation_shortcodes extends e_shortcode
-{
-
- public $template;
- public $counter;
- public $active;
- public $depth = 0;
-
-
- /**
- *
- * @return string 'active' on the active link.
- * @example {LINK_ACTIVE}
- */
- function sc_link_active($parm='')
- {
- if($this->active == true)
- {
- return 'active';
- }
-
- // check if it's the first link.. (eg. anchor mode) and nothing activated.
- return ($this->counter ==1) ? 'active' : '';
-
- }
-
- /**
- * Return the primary_id number for the current link
- * @return integer
- */
- function sc_link_id($parm=null)
- {
- return (int) $this->var['link_id'];
- }
-
- function sc_link_depth($parm=null)
- {
- unset($parm);
- return isset($this->var['link_depth']) ? (int) $this->var['link_depth'] : $this->depth;
- }
-
-
- function setDepth($val)
- {
- $this->depth = (int) $val;
- }
-
-
- /**
- * Return the name of the current link
- * @return string
- * @example {LINK_NAME}
- */
- function sc_link_name($parm=null)
- {
- if(empty($this->var['link_name']))
- {
- return null;
- }
-
- if(strpos($this->var['link_name'], 'submenu.') === 0) // BC Fix.
- {
- list($tmp,$tmp2,$link) = explode('.',$this->var['link_name'],3);
- unset($tmp,$tmp2);
- }
- else
- {
- $link = $this->var['link_name'];
- }
-
- return e107::getParser()->toHTML($link, false,'defs');
- }
-
-
- /**
- * Return the parent of the current link
- * @return integer
- */
- function sc_link_parent($parm=null)
- {
- return (int) $this->var['link_parent'];
- }
-
-
- function sc_link_identifier($parm=null)
- {
- return isset($this->var['link_identifier']) ? $this->var['link_identifier'] : '';
- }
-
- /**
- * Return the URL of the current link
- * @return string
- */
- function sc_link_url($parm=null)
- {
- $tp = e107::getParser();
-
- if(!empty($this->var['link_owner']) && !empty($this->var['link_sefurl']))
- {
- return e107::url($this->var['link_owner'],$this->var['link_sefurl']);
- }
-
- if(strpos($this->var['link_url'], e_HTTP) === 0)
- {
- $url = "{e_BASE}".substr($this->var['link_url'], strlen(e_HTTP));
- }
- elseif($this->var['link_url'][0] !== "{" && strpos($this->var['link_url'],"://")===false)
- {
- $url = "{e_BASE}".$this->var['link_url']; // Add e_BASE to links like: 'news.php' or 'contact.php'
- }
- else
- {
- $url = $this->var['link_url'];
- }
-
- $url = $tp->replaceConstants($url, 'full', TRUE);
-
- if(strpos($url,"{") !== false)
- {
- $url = $tp->parseTemplate($url, TRUE); // BC Fix shortcode in URL support - dynamic urls for multilanguage.
- }
-
- return $url;
- }
-
-/*
- function sc_link_sub_oversized($parm='')
- {
- $count = count($this->var['link_sub']);
-
- if(!empty($parm) && $count > $parm)
- {
- return 'oversized';
- }
-
- return $count;
-
- }
-*/
-
- /**
- * Returns only the anchor target in the URL if one is found.
- * @param array $parm
- * @return null|string
- */
- function sc_link_target($parm=null)
- {
- if(strpos($this->var['link_url'],'#')!==false)
- {
- list($tmp,$segment) = explode('#',$this->var['link_url'],2);
- return '#'.$segment;
-
- }
-
- return '#';
- }
-
-
-
- function sc_link_open($parm = '')
- {
- $type = $this->var['link_open'] ? (int) $this->var['link_open'] : 0;
-
- ### 0 - same window, 1 - target blank, 4 - 600x400 popup, 5 - 800x600 popup
- ### TODO - JS popups (i.e. bootstrap)
- switch($type)
- {
- case 1:
- return ' target="_blank"';
- break;
-
- case 4:
- return " onclick=\"open_window('".$this->var['link_url']."',600,400); return false;\"";
- break;
-
- case 5:
- return " onclick=\"open_window('".$this->var['link_url']."',800,600); return false;\"";
- break;
- }
- return '';
- }
-
- /**
- * @deprecated - Use {LINK_ICON} instead.
- */
- function sc_link_image($parm='')
- {
- trigger_error('{LINK_IMAGE} is deprecated. Use {LINK_ICON} instead', E_USER_DEPRECATED); // NO LAN
-
- return $this->sc_link_icon($parm);
- }
-
-
- /**
- * Return the link icon of the current link
- * @return string
- */
- function sc_link_icon($parm='')
- {
- $tp = e107::getParser();
-
- if (empty($this->var['link_button']))
- {
- return '';
- }
-
- // if($icon = $tp->toGlyph($this->var['link_button']))
- // {
- // return $icon;
- // }
- // else
- {
- //$path = e107::getParser()->replaceConstants($this->var['link_button'], 'full', TRUE);
- return $tp->toIcon($this->var['link_button'],array('fw'=>true, 'space'=>' ', 'legacy'=>"{e_IMAGE}icons/"));
- // return "
";
- }
-
- }
-
-
- /**
- * Return the link description of the current link
- * @return string
- */
- function sc_link_description($parm='')
- {
- $toolTipEnabled = e107::pref('core', 'linkpage_screentip', false);
-
- if($toolTipEnabled == false || empty($this->var['link_description']))
- {
- return null;
- }
-
-
- return e107::getParser()->toAttribute($this->var['link_description']);
- }
-
-
- /**
- * Return the parsed sublinks of the current link
- * @return string
- */
- function sc_link_sub($parm='')
- {
- if(empty($this->var['link_sub']))
- {
- return false;
- }
-
- if(is_string($this->var['link_sub'])) // html override option.
- {
-
- // e107::getDebug()->log($this->var);
-
- return $this->var['link_sub'];
- }
-
- $this->depth++;
- // Assume it's an array.
-
- $startTemplate = !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerstart'] : $this->template['submenu_start'];
- $endTemplate = !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerend'] : $this->template['submenu_end'];
-
- $text = e107::getParser()->parseTemplate(str_replace('{LINK_SUB}', '', $startTemplate), true, $this);
-
- foreach($this->var['link_sub'] as $val)
- {
- $active = (e107::getNav()->isActive($val, $this->activeSubFound, true)) ? "_active" : "";
-
- $this->setVars($val); // isActive is allowed to alter data
- $tmpl = !empty($val['link_sub']) ? varset($this->template['submenu_loweritem'.$active]) : varset($this->template['submenu_item'.$active]);
- $text .= e107::getParser()->parseTemplate($tmpl, TRUE, $this);
- if($active)
- {
- $this->activeSubFound = true;
- }
- }
-
- $text .= e107::getParser()->parseTemplate(str_replace('{LINK_SUB}', '', $endTemplate), true, $this);
-
- return $text;
- }
-
- /**
- * Return a generated anchor for the current link.
- * @param unused
- * @return string - a generated anchor for the current link.
- * @example {LINK_ANCHOR}
- */
- function sc_link_anchor($parm='')
- {
- return $this->var['link_name'] ? '#'.e107::getForm()->name2id($this->var['link_name']) : '';
- }
-}