Mercurial > hg > mgallery
view mgallery.php @ 4:014e1d6991a3
Oops, fix the last breadcrumb.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 15 May 2015 16:29:38 +0300 |
parents | c85f630a4198 |
children | 1bf73b49fc91 |
line wrap: on
line source
<?php // // Yet Another Image Gallery // (C) Copyright 2015 Tecnic Software productions (TNSP) // require "msitegen.inc.php"; require "mgallery.inc.php"; // // Various utility functions // function mgGetImageURL() { global $galImageURL, $galPath; return $galImageURL.$galPath."/".implode("", func_get_args()); } function mgGetURL($path, $image, $entities = TRUE) { global $galBaseURL, $galCleanURLS; $amp = $entities ? "&" : "&"; if ($galCleanURLS) { return $galBaseURL.$path."/".($image !== FALSE ? $image : ""); } else { return $galBaseURL.mgGetSetting("mgallery_php")."?path=". $path.($image !== FALSE ? $amp."image=".$image : ""); } } function mgGetNaviActive(&$galIndex, $index, $delta, &$res, &$url, $entities) { global $galPath; $res = $index + $delta; if ($res >= 0 && $res <= sizeof($galIndex) - 1) { $url = mgGetURL($galPath, $galIndex[$res], $entities); return TRUE; } else return FALSE; } function mgGetNaviControlImage(&$galIndex, $index, $class, $url) { global $galTNPath; $img = "<div class=\"imageCtrl ".$class."\">"; if ($url !== FALSE) { $img .= "<a href=\"".$url."\"><img src=\"". mgGetImageURL($galTNPath, $galIndex[$index]). "\" alt=\"".$galIndex[$index]."\" /></a>"; } return $img."</div>\n"; } function mgGetNaviControlImageBox(&$galIndex, $index, $class, $delta) { if (!mgGetNaviActive($galIndex, $index, $delta, $res, $url, TRUE)) $url = FALSE; return mgGetNaviControlImage($galIndex, $res, $class, $url); } function mgGetControl($str, $class, &$galIndex, $index, $delta, $naviFlags) { $active = mgGetNaviActive($galIndex, $index, $delta, $res, $url, TRUE); if ($active && ($naviFlags & GNAV_IMG)) $img = mgGetNaviControlImage($galIndex, $res, $class, $url); else $img = ""; if ($naviFlags & GNAV_TEXT) $str = "<span class=\"naviControl ".$class."\">[".($active ? "<a href=\"".$url."\">".$str."</a>" : $str)."]</span>"; else $str = ""; if ($delta < 0) return $img.$str; else return $str.$img; } function mgGetNaviControls(&$galIndex, $index, $naviFlags) { global $galPath; return "<div class=\"naviControls\">". mgGetControl("<<", "prev", $galIndex, $index, -1, $naviFlags). "[<a href=\"".mgGetURL($galPath, FALSE)."\">^^</a>]". mgGetControl(">>", "next", $galIndex, $index, 1, $naviFlags). "</div>\n"; } function mgPrintTable($class, &$galEntries, &$galIndex, $start, $limit) { global $galAlbumIcon, $galPath, $galTNPath; $galCount = count($galIndex); if ($start >= $galCount) return $start; $end = ($limit === FALSE) ? $galCount : $start + $limit; if ($end > $galCount) $end = $galCount; $rowLimit = mgGetSetting("album_row_limit"); $n = 0; echo "<table class=\"".$class."\">\n"; for ($index = $start; $index < $end; $index++) { $filename = &$galIndex[$index]; $data = &$galEntries[$filename]; if ($n == 0) echo " <tr>\n"; echo " <td id=\"cd".$data["base"]."\">\n"; if ($data["type"] == 0) { echo "<div class=\"imageBox\"><a href=\"".mgGetURL($galPath, $filename)."\">". "<img src=\"".mgGetImageURL($galTNPath, $filename)."\" alt=\"". chentities($filename)."\"></a>". "</div>". mgGetArr($data, "caption", "<div class=\"imageCaption\">%1</div>", "", "chentities"); /* if ($mode == "") { echo " <select class=\"dropdown\" id=\"dd".$data["base"]."\" name=\"dd".$data["base"]. "\" onchange=\"galPhotoDataChanged('".$data["base"]."');\">\n"; foreach ($picChoices as $name => $value) { echo " <option value=\"$value\"".($value == $data["id"] ? " selected=\"selected\"" : "").">".chentities($name)."</option>\n"; } echo " </select>\n"; } */ } else { echo " <a href=\"".mgGetURL(mgCleanPath(TRUE, $galPath, $data["base"]), FALSE)."\">". "<img class=\"albumIcon\" src=\"".$galAlbumIcon."\" alt=\"".chentities($data["caption"])."\" />\n". "<div class=\"albumTitle\">".chentities($data["caption"])."</div></a>\n"; } echo " </td>\n"; if (++$n >= $rowLimit) { echo " </tr>\n"; $n = 0; } } if ($n > 0) { while ($n++ < $rowLimit) echo " <td></td>\n"; echo " </tr>\n"; } echo "</table>\n"; return $index; } function mgTimeStr($str) { $tmp = date_create_from_format("Y:m:d H:i:s", $str); return date_format($tmp, "d M Y (H:i)"); } function mgPrintPageInfoFooter() { if (($str = mgGetSetting("page_info")) !== FALSE) echo "<div class=\"pageInfoFooter\">".$str."</div>"; } function mgPrintBreadCrumbs($galData) { $res = array(); if ($galData["caption"]) $res[] = "<a class=\"naviBreadCrumbCurr\" href=\"".mgGetURL($galData["path"], FALSE)."\">".chentities($galData["caption"])."</a>"; $tmp = $galData; while (isset($tmp["parent"])) { $pdata = $tmp["parent"]; $res[] = "<a class=\"naviBreadCrumbItem\" href=\"".mgGetURL($pdata["path"], FALSE)."\">".chentities($pdata["caption"])."</a>"; $tmp = $tmp["parent"]; } if (count($res) > 1) { echo "<div class=\"naviBreadCrumbs\">". implode("<span class=\"naviBreadCrumbSep\"></span>", array_reverse($res)). "</div>\n"; } } // // Get gallery settings // mgReadSettings(); $pageCSS = mgGetSetting("css"); $pageCSSSelect = mgGetSetting("css_select"); $galBasePath = mgGetSetting("base_path"); $galBaseURL = mgGetSetting("base_url"); $galImageURL = mgGetSetting("image_url", mgGetSetting("base_url")); $galAlbumIcon = mgGetSetting("album_icon"); $galCleanURLS = mgGetSetting("clean_urls"); $galTNPath = mgGetSetting("tn_path"); $galMedSuffix = mgGetSetting("med_suffix"); $galTitlePrefix = mgGetSetting("title_prefix"); $galTitleSep = mgGetSetting("title_sep"); $galMode = stGetRequestItem("mode", "view", TRUE); $galPath = stGetRequestItem("path", ".", TRUE); $galPageIndex = intval(stGetRequestItem("index", 0, TRUE)); $galImage = stGetRequestItem("image", FALSE, TRUE); if (is_string($galImage)) $galImage = basename($galImage); // // Attempt to read the data cache file // $filename = mgGetPath(mgCleanPath(TRUE, $galBasePath, $galPath), "cache_file"); $filename2 = mgGetPath(mgCleanPath(FALSE, $galBasePath, $galPath), "cache_file"); if ($filename == $filename2 && file_exists($filename) && ($fp = @fopen($filename, "rb")) !== FALSE) { if (flock($fp, LOCK_SH)) { require($filename); flock($fp, LOCK_UN); } fclose($fp); } // If no data available, show an error page if (!isset($galData) || !isset($galEntries) || !isset($galAlbumsIndex) || !isset($galImagesIndex)) { cmPrintPageHeader(mgGetVal(array("title_prefix", "title_sep"), "%1%2")."ERROR!"); echo "<h1>Gallery error</h1>\n". "<p>Gallery path <b>".chentities($galPath)."</b> does not exist or is invalid.</p>\n"; //echo "<p>".$filename."</p><p>".$filename2."</p>"; mgPrintPageInfoFooter(); cmPrintPageFooter(TRUE); exit; } // // Print page header, etc. // if (($index = array_search($galImage, $galImagesIndex)) !== FALSE) { // // Single image mode // $naviFlags = mgGetSetting("image_navigation"); $data = $galEntries[$galImage]; $pageTitle = $galTitlePrefix.$galTitleSep.$galData["caption"]." - ".$galImage; cmPrintPageHeader($pageTitle); echo "<h1>".chentities($pageTitle)."</h1>\n"; if ($naviFlags & GNAV_BREADCRUMBS) mgPrintBreadCrumbs($galData); if ($naviFlags & GNAV_TOP) echo mgGetNaviControls($galImagesIndex, $index, $naviFlags); echo "<div class=\"imageCBox\">\n". mgGetNaviControlImageBox($galImagesIndex, $index, "prev", -1). "<div class=\"imageBox\">\n". "<a target=\"_blank\" href=\"".$galImageURL.$galPath."/".$galImage."\">". "<img src=\"".mgGetImageURL($galTNPath, $data["base"].$galMedSuffix.$data["ext"])."\" alt=\"". chentities($data["base"].$galMedSuffix.$data["ext"])."\"></a>\n". "</div>\n". mgGetNaviControlImageBox($galImagesIndex, $index, "next", 1). "</div>\n". "<div class=\"imageCaption\">".mgGetArr($data, "caption", "%1", "")."</div>\n"; $list = array( mgGetArr($data, array("width", "height"), "<span class=\"infoDimensions\"><b>%1</b> x <b>%2</b> px</span>", NULL), mgGetArr($data, "model", "<span class=\"infoModel\"><b>%1</b></span>", NULL), mgGetArr($data, "fnumber", "<span class=\"infoFNumber\"><b>f/%1</b></span>", NULL), mgGetArr($data, "exposure", "<span class=\"infoExposure\"><b>%1</b> sec</span>", NULL, NULL), mgGetArr($data, "iso", "<span class=\"infoISO\">ISO <b>%1</b></span>", NULL), ); echo "<div class=\"infoBox\">\n". mgGetArr($data, "datetime", "<span class=\"infoDateTime\">%1</span>", "", "mgTimeStr"). implode(", ", array_filter($list, function($a) { return $a !== NULL; })). "</div>\n"; if ($naviFlags & GNAV_BOTTOM) echo mgGetNaviControls($galImagesIndex, $index, $naviFlags); // Javascript navigation if ($naviFlags & GNAV_JAVASCRIPT) { $prevActive = mgGetNaviActive($galImagesIndex, $index, -1, $res, $prevURL, FALSE); $nextActive = mgGetNaviActive($galImagesIndex, $index, 1, $res, $nextURL, FALSE); echo "<script type=\"text/javascript\">\n". "var mgalPrevURL = \"".($prevActive ? $prevURL : "")."\";\n". "var mgalNextURL = \"".($nextActive ? $nextURL : "")."\";\n". "\n"; ?> function mgalNavigateTo(url) { if (url != "") window.location = url; } function mgalProcessKeyPress(ev) { ev = ev || window.event; var key = ev.keyCode ? ev.keyCode : ev.which; switch (key) { case 37: case 65: // left mgalNavigateTo(mgalPrevURL); break; case 39: case 68: // right mgalNavigateTo(mgalNextURL); break; } } document.onkeypress = mgalProcessKeyPress; <? echo "</script>\n"; } } else { // // Gallery mode // // - needs sub-modes / handling of order shit // - Javascript stuff for picture data updates // $pageTitle = $galTitlePrefix.mgGetArr($galData, "caption", " - %1", "", "chentities"); cmPrintPageHeader($pageTitle); echo "<h1>".$pageTitle."</h1>\n"; $naviFlags = mgGetSetting("album_navigation"); if ($naviFlags & GNAV_BREADCRUMBS) mgPrintBreadCrumbs($galData); if (isset($galData["header"]) && strlen($galData["header"]) > 0) echo "<div class=\"albumHeaderText\">".$galData["header"]."</div>\n"; mgPrintTable("albumTable", $galEntries, $galAlbumsIndex, 0, FALSE); mgPrintTable("imageTable", $galEntries, $galImagesIndex, 0, FALSE); } mgPrintPageInfoFooter(); cmPrintPageFooter(TRUE); ?>