Example #1
0
<?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);
Example #2
0
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>&nbsp;<span class="r"></span></a>';
        }
        $c .= '</div>';
    }
    cache_save('menus', $md5, $c);
    return $c;
}
Example #3
0
/**
 * 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;
}
Example #4
0
<?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>';
}
Example #5
0
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>&nbsp;<span class="r"></span></a>';
        }
        $c .= '</div>';
    }
    Core_cacheSave('menus', $md5, $c);
    return $c;
}
Example #6
0
/**
 * 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('&rsquo;', '&apos;', $r2['rss']);
        $rss = str_replace('&sbquo;', '&apos;', $rss);
        echo $rss;
    }
} else {
    echo 'page "' . $pagename . '" not found';
}
Example #7
0
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;
}