diff options
| author | fisharebest <fisharebest@gmail.com> | 2011-08-04 19:03:17 +0000 |
|---|---|---|
| committer | fisharebest <fisharebest@gmail.com> | 2011-08-04 19:03:17 +0000 |
| commit | 3a66749533ae4ec372c95f7b0a6363efa4f5d294 (patch) | |
| tree | 48931d265ee51c08f56820a767237975b00ebc3a /modules_v3/tree/module.php | |
| parent | d83d060a1ac10dc72134c3d4804e89b04cc68ad6 (diff) | |
| download | webtrees-3a66749533ae4ec372c95f7b0a6363efa4f5d294.tar.gz webtrees-3a66749533ae4ec372c95f7b0a6363efa4f5d294.tar.bz2 webtrees-3a66749533ae4ec372c95f7b0a6363efa4f5d294.zip | |
#821050 - Error calling page after update to 1.2.2
Diffstat (limited to 'modules_v3/tree/module.php')
| -rw-r--r-- | modules_v3/tree/module.php | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/modules_v3/tree/module.php b/modules_v3/tree/module.php new file mode 100644 index 0000000000..0ff810b229 --- /dev/null +++ b/modules_v3/tree/module.php @@ -0,0 +1,157 @@ +<?php +// TreeView module class +// +// Tip : you could change the number of generations loaded before ajax calls both in individual page and in treeview page to optimize speed and server load +// +// Copyright (C) 2011 webtrees development team +// +// 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 +// +// $Id$ + +if (!defined('WT_WEBTREES')) { + header('HTTP/1.0 403 Forbidden'); + exit; +} + +class tree_WT_Module extends WT_Module implements WT_Module_Tab { + var $headers; // CSS and script to include in the top of <head> section, before theme's CSS + var $style; // the name of the active style, or false + var $css; // a customized CSS to load AFTER theme's CSS if $style is defined + var $js; // the TreeViewHandler javascript + + function __construct() { + // define the module inclusions for the page header + $this->headers = '<link rel="stylesheet" type="text/css" href="'.WT_MODULES_DIR.$this->getName().'/css/treeview.css" />'; + $this->js = '<script type="text/javascript" language="javascript" src="'.WT_MODULES_DIR.$this->getName().'/js/treeview.js"></script>'; + + // Retrieve the user's personalized style + if (isset($_COOKIE['tvStyle'])) { + $this->style = $_COOKIE['tvStyle']; + $this->css = '<link id="tvCSS" rel="stylesheet" type="text/css" href="'.WT_MODULES_DIR.$this->getName().'/css/styles/'.$this->style.'/'.$this->style.'.css" />'; + } + else { + $this->style = false; + $this->css = ''; + } + $this->css .= '<link rel="stylesheet" type="text/css" href="'.WT_MODULES_DIR.$this->getName().'/css/treeview_print.css" media="print" />'; + } + + // Extend WT_Module. This title should be normalized when this module will be added officially + public function getTitle() { + return /* I18N: Name of a module */ WT_I18N::translate('Interactive tree'); + } + + // Extend WT_Module + public function getDescription() { + return /* I18N: Description of the "Interactive tree" module */ WT_I18N::translate('An interactive tree, showing all the ancestors and descendants of a person.'); + } + + // Implement WT_Module_Tab + public function defaultTabOrder() { + return 68; + } + + // Implement WT_Module_Tab + public function getJSCallback() { + return ''; +} + + // Implement WT_Module_Tab + public function getTabContent() { + require_once WT_MODULES_DIR.$this->getName().'/class_treeview.php'; + $tv = new TreeView('tvTab'); + $r = $tv->drawViewport($this->controller->pid, 3, $this->style); + return $r; + } + + // Implement WT_Module_Tab + public function hasTabContent() { + return true; + } + // Implement WT_Module_Tab + public function isGrayedOut() { + return false; + } + // Implement WT_Module_Tab + public function canLoadAjax() { + return true; + } + + // Implement WT_Module_Tab + public function getPreLoadContent() { + // a workaround to the lack of a proper method of class Module to insert css and scripts in <head> where needed + // the required loading order is : headers, theme, css + return $this->js.'<script language="javascript" type="text/javascript">jQuery("head").prepend(\''.$this->headers.'\').append(\''.$this->css.'\');</script>'; + } + + // Extend WT_Module + // We define here actions to proceed when called, either by Ajax or not + public function modAction($mod_action) { + require_once WT_MODULES_DIR.$this->getName().'/class_treeview.php'; + switch($mod_action) { + case 'treeview': + $tvName = 'tv'; + $rootid = safe_GET('rootid'); + $rootid = check_rootid($rootid); + $tv = new TreeView('tv'); + ob_start(); + $person=WT_Person::getInstance($rootid); + print_header(WT_I18N::translate('Interactive tree of %s', $person->getFullName())); + if (WT_USE_LIGHTBOX) { + require WT_MODULES_DIR.'lightbox/functions/lb_call_js.php'; + } + $header = ob_get_clean(); + // we do this trick to insert headers js calls and css + // should be improved as soon as webtrees will have provided a way to do that + // in a more proper way (a method of Module object to insert its css and scripts calls in the <head>) + // The CSS inserted here could be overided by cascading style sheet mechanism + // when relevant properties are defined in the theme's CSS + $header = str_replace('<head>', '<head>'.$this->headers, $header); + // If TreeView was personalized, include the custom CSS at the end of the header, to "cascade" previously loaded CSS + $header = str_replace('</head>', $this->js.$this->css.'</head>', $header); + echo $header; + echo $tv->drawViewport($rootid, 4, $this->style); + print_footer(); + break; + + case 'getDetails': + header('Content-Type: text/html; charset=UTF-8'); + $pid = safe_GET('pid'); + $i = safe_GET('instance'); + $tv = new TreeView($i); + echo $tv->getDetails($pid); + break; + + case 'getPersons': + $q = $_REQUEST["q"]; + $i = safe_GET('instance'); + $tv = new TreeView($i); + echo $tv->getPersons($q); + break; + + // dynamically load full medias instead of thumbnails for opened boxes before printing + case 'getMedias': + $q = $_REQUEST["q"]; + $i = safe_GET('instance'); + $tv = new TreeView($i); + echo $tv->getMedias($q); + break; + + default: + header('HTTP/1.0 404 Not Found'); + } + } +} |
