<?php // { common variables and functions include_once 'ww.incs/common.php'; $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : ''; $id = isset($_REQUEST['id']) ? (int) $_REQUEST['id'] : 0; // } // { get current page id if (!$id) { if ($page) { // load by name $r = Page::getInstanceByName($page); if ($r && isset($r->id)) { $id = $r->id; } } if (!$id) { // else load by special $special = 1; if (!$page) { $r = Page::getInstanceBySpecial($special); if ($r && isset($r->id)) { $id = $r->id; } } } } // } // { load page data if ($id) { $PAGEDATA = isset($r) && $r ? $r : Page::getInstance($id);
function Menu_show($b) { global $PAGEDATA; if (!$PAGEDATA->id) { return ''; } $md5 = md5('ww_menudisplay|' . print_r($b, true)); $cache = cache_load('menus', $md5); if ($cache) { return $cache; } if (is_array($b)) { $align = isset($b['direction']) && $b['direction'] == 'vertical' ? 'Left' : 'Top'; $vals = $b; } else { $arr = explode('|', $b); $b = $arr[0]; $vals = array(); if (count($arr) > 1) { $d = split(',', $arr[1]); } else { $d = array(); } foreach ($d as $e) { $f = split('=', $e); if (count($f) > 1) { $vals[$f[0]] = $f[1]; } else { $vals[$f[0]] = 1; } } $c = ''; $align = $b == 'vertical' ? 'Left' : 'Top'; } $parent = 0; $classes = ''; if (isset($vals['mode'])) { if ($vals['mode'] == 'accordian' || $vals['mode'] == 'accordion') { $classes .= ' click_required accordion'; } else { if ($vals['mode'] == 'two-tier') { $classes .= ' two-tier'; } } } else { $vals['mode'] = 'default'; } if (isset($vals['preopen_menu'])) { $classes .= ' preopen_menu'; } if (isset($vals['close']) && $vals['close'] == 'no') { $classes .= ' noclose'; } if (isset($vals['parent'])) { $r = Page::getInstanceByName($vals['parent']); if ($r) { $parent = $r->id; } } if (isset($vals['spans'])) { $vals['spans'] = (int) $vals['spans']; } else { $vals['spans'] = 1; } $search_options = 0; $ajaxmenu = $vals['nodropdowns'] ? '' : ' ajaxmenu '; $c = '<div id="ajaxmenu' . $parent . '" class="menuBar' . $align . $ajaxmenu . $classes . ' parent' . $parent . '">'; $rs = Menu_getChildren($parent, $PAGEDATA->id, 0, $parent, $search_options); $links = 0; if ($vals['spans']) { $spanl = '<span class="l"></span>'; $spanr = '<span class="r"></span>'; } else { $spanl = ''; $spanr = ''; } if (count($rs)) { foreach ($rs as $r) { $page = Page::getInstance($r['id']); if (!$links) { $r['classes'] .= ' first'; } $c .= '<a id="ajaxmenu_link' . $r['id'] . '" class="' . $r['classes'] . '" href="' . $page->getRelativeURL() . '">' . $spanl . htmlspecialchars($page->name) . $spanr . '</a>'; $links++; } } if (!@$GLOBALS['DBVARS']['disable-hidden-sitemap']) { $c .= '<a class="menuItemTop nojs" href="' . $PAGEDATA->getRelativeURL() . '?webmespecial=sitemap">' . __('Site Map') . '</a>'; } $c .= '</div>'; if ($vals['mode'] == 'two-tier') { $pid = $PAGEDATA->getTopParentId(); if ($pid != 2 && $pid != 3 && $pid != 17 && $pid != 32 && $pid != 33 && $pid != 34) { $pid = 2; } $rs = Menu_getChildren($pid, $PAGEDATA->id, 0, $parent, $search_options); $c .= '<div id="ajaxmenu' . $pid . '" class="menu tier-two">'; if (count($rs)) { foreach ($rs as $r) { $page = Page::getInstance($r['id']); $c .= '<a id="ajaxmenu_link' . $r['id'] . '" class="' . $r['classes'] . '" href="' . $page->getRelativeURL() . '">' . $spanl . htmlspecialchars($page->name) . $spanr . '</a>'; } } else { $c .= '<a><span class="l"></span> <span class="r"></span></a>'; } $c .= '</div>'; } cache_save('menus', $md5, $c); return $c; }
/** * get HTML for building a hierarchical menu * * @param array $opts options * * @return string the html */ function Core_menuShowFg($opts = array()) { if (!function_exists('menuBuildFg')) { // menuBuildFg /** * get recursive details of pages to build a menu * * @param int $parentid the parent's ID * @param int $depth current menu depth * @param array $options any further options * * @return string HTML of the sub-menu */ function menuBuildFg($parentid, $depth, $options) { $PARENTDATA = Page::getInstance($parentid)->initValues(); // { menu order $order = 'ord,name'; if (isset($PARENTDATA->vars['order_of_sub_pages'])) { switch ($PARENTDATA->vars['order_of_sub_pages']) { case 1: // { alphabetical $order = 'name'; if ($PARENTDATA->vars['order_of_sub_pages_dir']) { $order .= ' desc'; } break; // } // } case 2: // { associated_date $order = 'associated_date'; if ($PARENTDATA->vars['order_of_sub_pages_dir']) { $order .= ' desc'; } $order .= ',name'; break; // } // } default: // { by admin order $order = 'ord'; if ($PARENTDATA->vars['order_of_sub_pages_dir']) { $order .= ' desc'; } $order .= ',name'; break; // } } } // } $sql = "select id,name,type from pages where parent='" . $parentid . "' and !(special&2) order by {$order}"; $md5 = md5($sql); $rs = Core_cacheLoad('pages', $md5, -1); if ($rs === -1) { $rs = dbAll($sql); Core_cacheSave('pages', $md5, $rs); } if ($rs === false || !count($rs)) { return ''; } $items = array(); foreach ($rs as $r) { $item = '<li>'; $page = Page::getInstance($r['id'])->initValues(); $item .= '<a class="menu-fg menu-pid-' . $r['id'] . '" href="' . $page->getRelativeUrl() . '">' . htmlspecialchars(__FromJson($page->name)) . '</a>'; // { override menu if a trigger causes the override $submenus = Core_trigger('menu-subpages-html', array($page, $depth + 1, $options)); if ($submenus) { $item .= $submenus; } else { $item .= menuBuildFg($r['id'], $depth + 1, $options); } // } $item .= '</li>'; $items[] = $item; } $options['columns'] = (int) $options['columns']; // { return top-level menu if (!$depth) { return '<ul>' . join('', $items) . '</ul>'; } // } $s = ''; if ($options['style_from'] == '1') { if ($options['background']) { $s .= 'background:' . $options['background'] . ';'; } if ($options['opacity']) { $s .= 'opacity:' . $options['opacity'] . ';'; } if ($s) { $s = ' style="' . $s . '"'; } } // { return 1-column sub-menu if ($options['columns'] < 2) { return '<ul' . $s . '>' . join('', $items) . '</ul>'; } // } // { return multi-column submenu $items_count = count($items); $items_per_column = ceil($items_count / $options['columns']); $c = '<table' . $s . '><tr><td><ul>'; for ($i = 1; $i < $items_count + 1; ++$i) { $c .= $items[$i - 1]; if ($i != $items_count && !($i % $items_per_column)) { $c .= '</ul></td><td><ul>'; } } $c .= '</ul></td></tr></table>'; return $c; // } } } global $_languages; $c = ''; $options = array('direction' => 0, 'parent' => 0, 'background' => '', 'columns' => 1, 'opacity' => 0, 'type' => 0, 'style_from' => 1, 'state' => 0); foreach ($opts as $k => $v) { if (isset($options[$k])) { $options[$k] = $v; } } if (!is_numeric($options['parent'])) { $r = Page::getInstanceByName($options['parent']); if ($r) { $options['parent'] = $r->id; } } if (is_numeric($options['direction'])) { if ($options['direction'] == '0') { $options['direction'] = 'horizontal'; } else { $options['direction'] = 'vertical'; } } $options['type'] = (int) $options['type']; $items = array(); if (!isset($GLOBALS['fg_menus'])) { $GLOBALS['fg_menus'] = 0; } $menuid = $GLOBALS['fg_menus']++; $md5 = md5($options['parent'] . '|0|' . json_encode($options) . '|' . join(', ', $_languages)); $html = menuBuildFg($options['parent'], 0, $options); switch ($options['type']) { case 2: // { tree $c .= '<div class="menu-tree">' . $html . '</div>'; break; // } // } case 1: // { accordion WW_addScript('/j/menu-accordion/menu.js'); WW_addCSS('/j/menu-accordion/menu.css'); $class = $options['state'] == 0 ? ' contracted' : ($options['state'] == 1 ? ' expanded' : ' expand-selected'); $c .= '<div class="menu-accordion' . $class . '">' . $html . '</div>'; break; // } // } default: // { fly-out WW_addScript('/j/fg.menu/fg.menu.js'); WW_addCSS('/j/fg.menu/fg.menu.css'); $c .= '<div class="menu-fg menu-fg-' . $options['direction'] . '" id="menu-fg-' . $menuid . '">' . $html . '</div>'; if ($options['direction'] == 'vertical') { $posopts = "positionOpts: { posX: 'left', posY: 'top'," . "offsetX: 40, offsetY: 10, directionH: 'right', directionV: 'down'," . "detectH: true, detectV: true, linkToFront: false },"; } else { $posopts = ''; } WW_addInlineScript("\$(function(){ \$('#menu-fg-{$menuid}>ul>li>a').each(function(){ \$(this)" . ".fgmenu({ content:\$(this).next().outerHTML(), choose:function(ev,ui" . "){ document.location=ui.item[0].childNodes(0).href; }, {$posopts} fly" . "Out:true }); }); \$('.menu-fg>ul>li').addClass('fg-menu-top-level');" . "});"); break; // } } return $c; }
<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/ww.incs/basics.php'; $r = preg_replace('/^\\//', '', $_SERVER['REQUEST_URI']); if (preg_match('#^f/.*\\.[A-Z]{3}\\.([^.]*)$#', $r)) { echo 'missing image'; exit; } $r = preg_replace('/\\?.*/', '', $r); $r = addslashes(urldecode($r)); if (strlen($r) > 1 && strlen($r) - 1 == strrpos($r, '/')) { // tried to access a page as a directory header('Location: /' . preg_replace('/\\/$/', '', $r)); exit; } $d = Page::getInstanceByName($r); if ($d && isset($d->id) && $d->id) { $id = $d->id; header('Location: ' . $d->getRelativeURL()); } else { header('HTTP/1.0 404 Not Found'); echo '<h1>File not found</h1><p>The requested file ' . '<code>' . htmlspecialchars($_SERVER['REQUEST_URI']) . '</code>' . ' does not exist on this server.</p>'; }
function Menu_show($b) { WW_addScript('/j/menu.js'); global $PAGEDATA, $_languages; if (!$PAGEDATA->id) { return ''; } $md5 = md5('ww_menudisplay|' . print_r($b, true) . '|' . join(',', $_languages) . '|' . @$_SESSION['language']); $cache = Core_cacheLoad('menus', $md5); if ($cache) { return $cache; } if (is_array($b)) { $align = isset($b['direction']) && $b['direction'] == 'vertical' ? 'Left' : 'Top'; $vals = $b; } else { $arr = explode('|', $b); $b = $arr[0]; $vals = array(); if (count($arr) > 1) { $d = split(',', $arr[1]); } else { $d = array(); } foreach ($d as $e) { $f = split('=', $e); if (count($f) > 1) { $vals[$f[0]] = $f[1]; } else { $vals[$f[0]] = 1; } } $c = ''; $align = $b == 'vertical' ? 'Left' : 'Top'; } $parent = 0; $classes = ''; if (isset($vals['mode'])) { if ($vals['mode'] == 'accordian' || $vals['mode'] == 'accordion') { $classes .= ' click_required accordion'; } else { if ($vals['mode'] == 'two-tier') { $classes .= ' two-tier'; } } } else { $vals['mode'] = 'default'; } if (isset($vals['preopen_menu'])) { $classes .= ' preopen_menu'; } if (isset($vals['close']) && $vals['close'] == 'no') { $classes .= ' noclose'; } if (isset($vals['parent'])) { $r = Page::getInstanceByName($vals['parent']); if ($r) { $parent = $r->id; } } if (isset($vals['spans'])) { $vals['spans'] = (int) $vals['spans']; } else { $vals['spans'] = 1; } if ($b['type'] == 'bootstrap') { $c = '<div class="navbar"><div class="navbar-inner"><a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><h1><a class="brand" href="/">' . htmlspecialchars($GLOBALS['DBVARS']['site_title']) . '</a></h1><div class="nav-collapse collapse"><ul class="nav pull-right">'; } else { $c = '<div id="ajaxmenu' . $parent . '" class="menuBar' . $align . (isset($vals['nodropdowns']) && $vals['nodropdowns'] ? '' : ' ajaxmenu ') . $classes . ' parent' . $parent . '">'; } $rs = Menu_getChildren($parent, $PAGEDATA->id, 0, $parent); $links = 0; if (count($rs)) { foreach ($rs as $r) { $page = Page::getInstance($r['id']); if ($b['type'] == 'bootstrap') { $c .= '<li class="' . $r['classes'] . '"><a href="' . $page->getRelativeURL() . '"><i class="icon"></i><br>' . htmlspecialchars(__FromJson($page->name)) . '</a>' . Menu_getSubMenuBootstrap($r, $r['id']) . '</li>'; } else { if ($vals['spans']) { $spanl = '<span class="l"></span>'; $spanr = '<span class="r"></span>'; } else { $spanl = ''; $spanr = ''; } if (!$links) { $r['classes'] .= ' first'; } $c .= '<a id="ajaxmenu_link' . $r['id'] . '" class="' . $r['classes'] . '" href="' . $page->getRelativeURL() . '">' . $spanl . htmlspecialchars(__FromJson($page->name)) . $spanr . '</a>'; } $links++; } } if (!@$GLOBALS['DBVARS']['disable-hidden-sitemap']) { $c .= '<a class="menuItemTop" style="display:none" href="' . $PAGEDATA->getRelativeURL() . '?cmsspecial=sitemap">' . __('Site Map') . '</a>'; } if ($b['type'] == 'bootstrap') { $c .= '</ul></div></div>'; } else { $c .= '</div>'; } if ($vals['mode'] == 'two-tier') { $pid = $PAGEDATA->getTopParentId(); if ($pid != 2 && $pid != 3 && $pid != 17 && $pid != 32 && $pid != 33 && $pid != 34) { $pid = 2; } $rs = Menu_getChildren($pid, $PAGEDATA->id, 0, $parent); $c .= '<div id="ajaxmenu' . $pid . '" class="menu tier-two">'; if (count($rs)) { foreach ($rs as $r) { $page = Page::getInstance($r['id']); $c .= '<a id="ajaxmenu_link' . $r['id'] . '" class="' . $r['classes'] . '" href="' . $page->getRelativeURL() . '">' . $spanl . htmlspecialchars($page->name) . $spanr . '</a>'; } } else { $c .= '<a><span class="l"></span> <span class="r"></span></a>'; } $c .= '</div>'; } Core_cacheSave('menus', $md5, $c); return $c; }
/** * display page summaries * * PHP version 5.2 * * @category None * @package None * @author Kae Verens <*****@*****.**> * @license GPL 2.0 * @link http://webworks.ie/ */ require_once '../ww.incs/common.php'; header('Content-type: text/xml; charset=utf-8'); $pagename = preg_replace('#^/|.rss$#', '', urldecode($_SERVER['REQUEST_URI'])); $page = Page::getInstanceByName($pagename); if ($page) { $r2 = dbRow('select rss from page_summaries where page_id=' . $page->id); if (count($r2)) { if ($r2['rss'] == '') { require_once SCRIPTBASE . '/ww.incs/page.summaries.php'; PageSummaries_getHtml($page->id); $r2 = dbRow('select rss from page_summaries where page_id=' . $page->id); } $rss = str_replace('’', ''', $r2['rss']); $rss = str_replace('‚', ''', $rss); echo $rss; } } else { echo 'page "' . $pagename . '" not found'; }
function menu_show_fg($opts) { $md5 = md5('menu_fg|' . print_r($opts, true)); $cache = cache_load('menus', $md5); if ($cache) { return $cache; } $options = array('direction' => 0, 'parent' => 0, 'background' => '', 'columns' => 1, 'opacity' => 0, 'type' => 0, 'style_from' => 1); foreach ($opts as $k => $v) { if (isset($options[$k])) { $options[$k] = $v; } } if (!is_numeric($options['parent'])) { $r = Page::getInstanceByName($options['parent']); if ($r) { $options['parent'] = $r->id; } } if (is_numeric($options['direction'])) { if ($options['direction'] == '0') { $options['direction'] = 'horizontal'; } else { $options['direction'] = 'vertical'; } } $options['type'] = (int) $options['type']; $items = array(); $menuid = $GLOBALS['fg_menus']++; $md5 = md5($options['parent'] . '|0|' . json_encode($options)); $html = cache_load('pages', 'fgmenu-' . $md5); if ($html === false) { $html = menu_build_fg($options['parent'], 0, $options); cache_save('pages', 'fgmenu-' . $md5, $html); } if ($options['type']) { WW_addScript('/j/menu-accordion/menu.js'); WW_addCSS('/j/menu-accordion/menu.css'); $c .= '<div class="menu-accordion">' . $html . '</div>'; } else { WW_addScript('/j/fg.menu/fg.menu.js'); WW_addCSS('/j/fg.menu/fg.menu.css'); $c .= '<div class="menu-fg menu-fg-' . $options['direction'] . '" id="menu-fg-' . $menuid . '">' . $html . '</div>'; if ($options['direction'] == 'vertical') { $posopts = "positionOpts: { posX: 'left', posY: 'top',\n\t\t\t\toffsetX: 40, offsetY: 10, directionH: 'right', directionV: 'down',\n\t\t\t\tdetectH: true, detectV: true, linkToFront: false },"; } else { $posopts = ''; } WW_addInlineScript("\$(function(){ \$('#menu-fg-{$menuid}>ul>li>a').each(function(){ \$(this).fgmenu({ content:\$(this).next().outerHTML(), choose:function(ev,ui){ document.location=ui.item[0].childNodes(0).href; }, {$posopts} flyOut:true }); }); \$('.menu-fg>ul>li').addClass('fg-menu-top-level'); });"); } return $c; }