diff options
Diffstat (limited to 'modules/googlemap/pgv_module.php')
| -rw-r--r-- | modules/googlemap/pgv_module.php | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/modules/googlemap/pgv_module.php b/modules/googlemap/pgv_module.php new file mode 100644 index 0000000000..d3bf8aa9c1 --- /dev/null +++ b/modules/googlemap/pgv_module.php @@ -0,0 +1,223 @@ +<?php +/** + * Classes and libraries for module system + * + * webtrees: Web based Family History software + * Copyright (C) 2010 webtrees development team. + * + * Derived from PhpGedView + * Copyright (C) 2009 John Finlay + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * @package webtrees + * @subpackage Modules + * @version $Id$ + */ + +if (!defined('WT_WEBTREES')) { + header('HTTP/1.0 403 Forbidden'); + exit; +} + +require_once WT_ROOT.'includes/classes/class_module.php'; +require_once WT_ROOT.'modules/googlemap/googlemap.php'; + +class googlemap_WT_Module extends WT_Module implements WT_Module_Config, WT_Module_Tab { + // Extend WT_Module + public function getTitle() { + return i18n::translate('Googlemap'); + } + + // Extend WT_Module + public function getDescription() { + return i18n::translate('Adds a tab to the individual page which maps the events of an individual and their close relatives on a Google map.'); + } + + // Implement WT_Module_Config + public function getConfigLink() { + return 'module.php?mod=googlemap&pgvaction=admin-config'; + } + + // Implement WT_Module_Tab + public function defaultTabOrder() { + return 80; + } + + // Implement WT_Module_Tab + public function getPreLoadContent() { + $out = ''; + ob_start(); + setup_map(); + $out.=ob_get_contents(); + ob_end_clean(); + return $out; + } + + // Implement WT_Module_Tab + public function canLoadAjax() { + return true; + } + + // Implement WT_Module_Tab + public function getTabContent() { + global $SEARCH_SPIDER, $SESSION_HIDE_GOOGLEMAP, $CONTACT_EMAIL, $WT_IMAGE_DIR, $WT_IMAGES; + global $TBLPREFIX; + global $GOOGLEMAP_ENABLED, $GOOGLEMAP_API_KEY, $GOOGLEMAP_MAP_TYPE, $GOOGLEMAP_MIN_ZOOM, $GOOGLEMAP_MAX_ZOOM, $GEDCOM; + global $GOOGLEMAP_XSIZE, $GOOGLEMAP_YSIZE, $SHOW_LIVING_NAMES; + global $TEXT_DIRECTION, $GM_DEFAULT_TOP_VALUE, $GOOGLEMAP_COORD, $GOOGLEMAP_PH_CONTROLS; + global $GM_MARKER_COLOR, $GM_MARKER_SIZE, $GM_PREFIX, $GM_POSTFIX, $GM_PRE_POST_MODE; + + ob_start(); + ?> +<div id="gg_map_content"> +<table border="0" width="100%"> + <tr> + <td><?php + if (!$GOOGLEMAP_ENABLED) { + print "<table class=\"facts_table\">\n"; + print "<tr><td id=\"no_tab8\" colspan=\"2\" class=\"facts_value\">".i18n::translate('GoogleMap module disabled')."</td></tr>\n"; + if (WT_USER_IS_ADMIN) { + print "<tr><td align=\"center\" colspan=\"2\">\n"; + print "<a href=\"module.php?mod=googlemap&pgvaction=editconfig\">".i18n::translate('Manage GoogleMap configuration')."</a>"; + print "</td>"; + print "</tr>\n"; + } + print "\n\t</table>\n<br />"; + ?> <script language="JavaScript" type="text/javascript"> + <!-- + function ResizeMap () {} + function SetMarkersAndBounds () {} + //--> + </script> <?php + }else{ + $tNew = str_replace(array("&HIDE_GOOGLEMAP=true", "&HIDE_GOOGLEMAP=false", "action=ajax&module=googlemap&"), "", $_SERVER["REQUEST_URI"]); + $tab = WT_DB::prepare("SELECT mod_taborder AS tab FROM {$TBLPREFIX}module WHERE mod_name=?") + ->execute(array('googlemap')) + ->fetchOneRow(); + $tab = $tab->tab-2; + $tNew .= "&tab=".$tab; + $tNew = str_replace("&", "&", $tNew); + if($SESSION_HIDE_GOOGLEMAP=="true") { + print " <span class=\"font9\"><a href=\"".$tNew."&HIDE_GOOGLEMAP=false\">"; + print "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["plus"]["other"]."\" border=\"0\" width=\"11\" height=\"11\" alt=\"".i18n::translate('Activate')."\" title=\"".i18n::translate('Activate')."\" />"; + print " ".i18n::translate('Activate')."</a></span>\n"; + } else { + print " <span class=\"font9\"><a href=\"" .$tNew."&HIDE_GOOGLEMAP=true\">"; + print "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["minus"]["other"]."\" border=\"0\" width=\"11\" height=\"11\" alt=\"".i18n::translate('Deactivate')."\" title=\"".i18n::translate('Deactivate')."\" />"; + print " ".i18n::translate('Deactivate')."</a></span>\n"; + } + + if (!$this->controller->indi->canDisplayName()) { + print "\n\t<table class=\"facts_table\">"; + print "<tr><td class=\"facts_value\">"; + print_privacy_error($CONTACT_EMAIL); + print "</td></tr>"; + print "\n\t</table>\n<br />"; + print "<script type=\"text/javascript\">\n"; + print "function ResizeMap ()\n{\n}\n</script>\n"; + } else { + if($SESSION_HIDE_GOOGLEMAP=="false") { + print "<table width=\"100%\" border=\"0\" class=\"facts_table\">\n"; + print "<tr><td valign=\"top\">\n"; + print "<div id=\"googlemap_left\">\n"; + print "<img src=\"images/hline.gif\" width=\"".$GOOGLEMAP_XSIZE."\" height=\"0\" alt=\"\" /><br/>"; + print "<div id=\"map_pane\" style=\"border: 1px solid gray; color:black; width: 100%; height: ".$GOOGLEMAP_YSIZE."px\"></div>\n"; + if (WT_USER_IS_ADMIN) { + print "<table width=\"100%\"><tr>\n"; + print "<td width=\"33%\" align=\"left\">\n"; + print "<a href=\"module.php?mod=googlemap&pgvaction=editconfig\">".i18n::translate('Manage GoogleMap configuration')."</a>"; + print "</td>\n"; + print "<td width=\"33%\" align=\"center\">\n"; + print "<a href=\"module.php?mod=googlemap&pgvaction=places\">".i18n::translate('Edit geographic place locations')."</a>"; + print "</td>\n"; + print "<td width=\"33%\" align=\"right\">\n"; + print "<a href=\"module.php?mod=googlemap&pgvaction=placecheck\">".i18n::translate('Place Check')."</a>"; + print "</td>\n"; + print "</tr></table>\n"; + } + print "</div>\n"; + print "</td>\n"; + print "<td valign=\"top\" width=\"30%\">\n"; + print "<div id=\"googlemap_content\">\n"; + //setup_map(); + + $famids = array(); + $families = $this->controller->indi->getSpouseFamilies(); + foreach ($families as $famid=>$family) { + $famids[] = $family->getXref(); + } + $this->controller->indi->add_family_facts(false); + create_indiv_buttons(); + build_indiv_map($this->controller->getIndiFacts(), $famids); + print "</div>\n"; + print "</td>"; + + print "</tr></table>\n"; + + } + } + } + // start + print "<img src=\"".$WT_IMAGE_DIR."/".$WT_IMAGES["spacer"]["other"]."\" id=\"marker6\" width=\"1\" height=\"1\" alt=\"\" />"; + // end + ?> + </td> + </tr> +</table> +</div> +</div> + <?php + return ob_get_clean(); + } + + // Implement WT_Module_Tab + public function hasTabContent() { + global $GOOGLEMAP_ENABLED, $SEARCH_SPIDER; + + return !$SEARCH_SPIDER && ($GOOGLEMAP_ENABLED || WT_USER_IS_ADMIN); + } + + // Implement WT_Module_Tab + public function getJSCallback() { + global $GOOGLEMAP_PH_CONTROLS; + $out = "loadMap();\n"; + if ($GOOGLEMAP_PH_CONTROLS) { + $out .= '// hide controls + GEvent.addListener(map,"mouseout",function() + { + map.hideControls(); + }); + // show controls + GEvent.addListener(map,"mouseover",function() + { + map.showControls(); + }); + GEvent.trigger(map,"mouseout"); + '; + + } + $out.='map.setMapType(GOOGLEMAP_MAP_TYPE); + SetMarkersAndBounds(); + ResizeMap(); + '; + return $out; + } + + // Implement WT_Module_Tab + public function getJSCallbackAllTabs() { + return ''; + } +} |
