summaryrefslogtreecommitdiff
path: root/modules_v4
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2019-04-11 23:11:52 +0100
committerGreg Roach <fisharebest@webtrees.net>2019-04-11 23:13:20 +0100
commit2ebb07b4bd8cf7010946ea4d75bb6160666157f6 (patch)
tree1a2d6800033f777f15151d45a763a112f8b1c38a /modules_v4
parenta0801ffbb59d5bed474fc7a91bf1863ebca47791 (diff)
downloadwebtrees-2ebb07b4bd8cf7010946ea4d75bb6160666157f6.tar.gz
webtrees-2ebb07b4bd8cf7010946ea4d75bb6160666157f6.tar.bz2
webtrees-2ebb07b4bd8cf7010946ea4d75bb6160666157f6.zip
Move treeview css/js from modules_v4 to resources
Diffstat (limited to 'modules_v4')
-rw-r--r--modules_v4/tree/css/treeview.css336
-rw-r--r--modules_v4/tree/css/vline.gifbin67 -> 0 bytes
-rw-r--r--modules_v4/tree/css/vline_b.gifbin82 -> 0 bytes
-rw-r--r--modules_v4/tree/css/vline_t.gifbin131 -> 0 bytes
-rw-r--r--modules_v4/tree/images/compact.pngbin295 -> 0 bytes
-rw-r--r--modules_v4/tree/js/treeview.js362
-rw-r--r--modules_v4/tree/module.php22
7 files changed, 0 insertions, 720 deletions
diff --git a/modules_v4/tree/css/treeview.css b/modules_v4/tree/css/treeview.css
deleted file mode 100644
index 896df55e6f..0000000000
--- a/modules_v4/tree/css/treeview.css
+++ /dev/null
@@ -1,336 +0,0 @@
-/**
- * webtrees: online genealogy
- * Copyright (C) 2019 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 3 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, see <http://www.gnu.org/licenses/>.
- */
-
-.tv_out {
- position: relative;
- overflow: hidden;
- height: 100%;
- border: thin solid #CCCCCC; /* customizable */
- min-height: 350px; /* customizable, not mandatory, but should be set to have allways something to display */
- max-height: 95vh; /* customizable, not mandatory, but should be set not too high to limit the size of ajax requests and not too low to enable whole big trees printing */
- background: #E6E6E6; /* customizable */
- display: -webkit-box;
- display: -moz-box;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-.tv_out img {
- border: 0;
-}
-
-.tv_in {
- clear: both;
- cursor: move;
- display: inline-block; /* prevent from blinking on IE */
-}
-
-.tv_in table.tv_tree,
-.tv_in table.tv_tree tbody,
-.tv_in table.tv_tree tr,
-.tv_in table.tv_tree td {
- border: 0 none;
- padding: 0;
- margin: 0;
- background: none;
- font-size: 11px;
-}
-.tv_in table.tv_tree {
- border-collapse: collapse;
-}
-
-/* Border (also have class table.tv_tree) */
-table#tvTreeBorder td#tv_tree_topleft {
- background: none;
-}
-table#tvTreeBorder td#tv_tree_top {
- background: none;
-}
-table#tvTreeBorder td#tv_tree_top div{
- font-family: Arial,Verdana,sans-serif;
- font-size: 18px;
-}
-table#tvTreeBorder td#tv_tree_topright {
- background: none;
-}
-table#tvTreeBorder td#tv_tree_left {
- background: none;
-}
-table#tvTreeBorder td#tv_tree_right {
- background: none;
-}
-table#tvTreeBorder td#tv_tree_bottomleft {
- background: none;
-}
-table#tvTreeBorder td#tv_tree_bottom {
- background: none;
-}
-table#tvTreeBorder td#tv_tree_bottomright {
- background: none;
-}
-/* tree */
-table#tvTreeBorder td,
-#tv_tree {
- background: none;
-}
-
-/* horizontal and vertical lines color */
-#tv_tree div.tv_vline,
-#tv_tree div.tv_hline {
- background-color: #81A9CB; /* customizable :should be the same color than in background images of td.tv_vline_x */
-}
-
-/* TD container for a vertical line */
-#tv_tree table.tv_tree td.tv_vline {
- width: 1px;
- background: repeat-x 50% 50%;
- height: 100%; /* required */
-}
-#tv_tree table.tv_tree td.tv_vline_h {
- background-image: url(vline.gif); /* customizable: image color must be the same color than div.tv_vline and div.tv_hline */
-}
-#tv_tree table.tv_tree td.tv_vline_t {
- vertical-align: bottom;
- background-image: url(vline_t.gif); /* customizable: image color must be the same color than div.tv_vline and div.tv_hline */
-}
-#tv_tree table.tv_tree td.tv_vline_b {
- vertical-align: top;
- background-image: url(vline_b.gif); /* customizable: image color must be the same color than div.tv_vline and div.tv_hline */
-}
-#tv_tree table.tv_tree td.tv_vline_c,
-.tv_in table.tv_tree td.tv_vline_h {
- vertical-align: middle;
-}
-#tv_tree table.tv_tree td.tv_vline_c {
- height: 1px;
-}
-/* vertical line drawing */
-#tv_tree table.tv_tree div.tv_vline {
- width: 1px;
-}
-#tv_tree table.tv_tree div.tv_vline_t,
-#tv_tree table.tv_tree div.tv_vline_b {
- height: 50%;
-}
-#tv_tree table.tv_tree div.tv_vline_c {
- height: 1px;
- overflow: hidden; /* required for IE */
-}
-#tv_tree table.tv_tree div.tv_vline_h {
- height: 100%;
-}
-
-/* horizontal line drawing */
-#tv_tree td.tv_hline,
-#tv_tree div.tv_hline {
- overflow: hidden; /* required for IE */
- width: 8px; /* customizable */
-}
-#tv_tree div.tv_hline {
- height: 1px;
-}
-
-/* Person or couple(s) box style */
-#tv_tree div.tv_box {
- border: thin outset #81A9CB; /* customizable */
- background: #fffdfd; /* customizable */
- margin-top: 2px;
- margin-bottom: 2px;
- padding: 0;
- width: 180px; /* customizable:initial box width */
- cursor: help; /* customizable */
- border-collapse: collapse; /* required */
- border-radius: 4px; /* customizable */
- box-shadow: 1px 1px 2px #cfcfdf; /* customizable */
-}
-#tv_tree div.boxExpanded {
- width: 250px; /* customizable:initial expanded box width */
-}
-#tv_tree div.tv_box div.tvM {
- background: #f5fdff; /* customizable */
- color: #220000; /* customizable */
-}
-#tv_tree div.tv_box div.tvF {
- background: #fff8f5; /* customizable */
- color: #000022; /* customizable */
-}
-#tv_tree div.tv_box span.tvSexSymbol {
- font-weight: bold;
- font-family: x-large, serif; /*Arial Unicode MS, monospace; /* customizable, BUT test required for ALL browsers */
- vertical-align: top;
- margin: 1px;
-}
-#tv_tree div.tv_box span.tvM {
- color: #8f8fdf; /* customizable */
-}
-#tv_tree div.tv_box span.tvF {
- color: #df8f8f; /* customizable */
-}
-
-#tv_tree div.tv_box div.tvM,
-#tv_tree .tv_box div.tvF {
- clear: both;
- border: 0;
- margin: 0;
- padding: 1px 4px;
- border-radius: 4px; /* customizable */
-}
-#tv_tree div.tv_box i.dates {
- float: right;
- font-size: 75%;
- margin-left: 4px;
-}
-#tv_tree div.tv_box img.tv_treelink {
- height: 15px;
- width: 15px;
- float: right;
-}
-#tv_tree div.tv_box img.tv_box_loading {
- height: 12px;
- width: 12px;
- margin: 2px;
- float: right;
-}
-#tv_tree div.tv_box div.tv_person_expanded {
- min-height: 55px;
- padding: 2px;
-}
-#tv_tree div.tv_box img {
- float: left;
- margin: 2px;
- max-height: 50px;
- max-width: 80px;
- width: auto;
-}
-[dir=rtl] #tv_tree div.tv_box img {
- float: right;
-}
-#tv_tree div.tv_box .icon-silhouette-M,
-#tv_tree div.tv_box .icon-silhouette-F,
-#tv_tree div.tv_box .icon-silhouette-U {
- float: left;
-}
-[dir=rtl] #tv_tree div.tv_box .icon-silhouette-M,
-[dir=rtl] #tv_tree div.tv_box .icon-silhouette-F,
-[dir=rtl] #tv_tree div.tv_box .icon-silhouette-U {
- float: right;
-}
-
-#tv_tree div.tv_box div.tv_person_expanded a {
- font-weight: bold;
-}
-
-/* The toolbox style. Button's images come from the active theme */
-#tv_tools,
-#tvStylesSubmenu {
- display: inline-block;
- position: absolute;
- left: 0;
- top: 0;
- padding: 0;
- margin: 0; /* required */
- z-index: 90; /* should be < 100 because 100 is the z-index of WT menus */
- background-color: #efefef; /* customizable */
- border: 1px outset #dfdfdf; /* customizable */
- border-radius: 4px; /* customizable */
- box-shadow: 1px 1px 2px #cfcfdf; /* customizable */
-}
-
-/* styles submenu */
-#tvStylesSubmenu {
- display: none;
- left: 0;
- top: 0;
- z-index: 91; /* just over tv_tools */
-}
-
-#tv_tools ul {
- list-style: none;
- margin: 0;
- padding: 0; /* required */
-}
-#tv_tools li.tv_button {
- float: left;
- position: relative;
- padding: 0; /* required */
- margin: 0;
- width: 24px;
- height: 24px;
- text-align: center;
- vertical-align: middle;
- border: thin solid #efefef; /* customizable */
- background-color: #efefef; /* customizable */
- border-radius: 4px;
-}
-#tvStylesSubmenu li.tv_button {
- float : none;
-}
-#tv_tools li.tv_button a {
- margin: 0;
- display: block;
-}
-#tv_tools li.tv_button:hover {
- background: #fffdfd; /* customizable */
- border: thin outset #fdfffd; /* customizable */
- cursor: pointer;
-}
-#tv_tools li.tvPressed {
- border: thin inset #ffffff; /* customizable */
-}
-#tv_tools ul li img {
- border: none;
- margin: 0;
- padding: 0;
- width: 22px;
- height: 22px;
- cursor: pointer;
- text-align: center;
- vertical-align: middle;
-}
-#tv_tools ul li a.help img.icon {
- margin: 3px 0 0;
- padding: 0;
- width: 15px;
- height: 15px;
-}
-
-#tvToolsHandler {
- float: left;
- cursor: move;
- height: 22px;
- width: 2px;
- border: thin inset #f6f6f6; /* customizable */
- margin: 2px;
- overflow: hidden; /* required for IE */
-}
-
-#tvToolsHandler:hover {
- border: thin outset #f6f6f6; /* customizable */
-}
-
-
-#tv_tree div.tv_box div.tvM,
-#tv_tree div.tv_box div.tvF {
- background: none;
- color: #000;
- border: 0;
- margin: 0;
- padding: 0 4px;
-}
-
-.tvM {background-color: #DDF !important;}
-.tvF {background-color: #FDD !important;}
-
-.dashed {border-top: thin dashed #81A9CB !important;}
diff --git a/modules_v4/tree/css/vline.gif b/modules_v4/tree/css/vline.gif
deleted file mode 100644
index 22ea74d62e..0000000000
--- a/modules_v4/tree/css/vline.gif
+++ /dev/null
Binary files differ
diff --git a/modules_v4/tree/css/vline_b.gif b/modules_v4/tree/css/vline_b.gif
deleted file mode 100644
index c29c4106d7..0000000000
--- a/modules_v4/tree/css/vline_b.gif
+++ /dev/null
Binary files differ
diff --git a/modules_v4/tree/css/vline_t.gif b/modules_v4/tree/css/vline_t.gif
deleted file mode 100644
index f37cf7d9f5..0000000000
--- a/modules_v4/tree/css/vline_t.gif
+++ /dev/null
Binary files differ
diff --git a/modules_v4/tree/images/compact.png b/modules_v4/tree/images/compact.png
deleted file mode 100644
index 07b092d1ed..0000000000
--- a/modules_v4/tree/images/compact.png
+++ /dev/null
Binary files differ
diff --git a/modules_v4/tree/js/treeview.js b/modules_v4/tree/js/treeview.js
deleted file mode 100644
index b625d43f30..0000000000
--- a/modules_v4/tree/js/treeview.js
+++ /dev/null
@@ -1,362 +0,0 @@
-/**
- * webtrees: online genealogy
- * Copyright (C) 2019 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 3 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, see <http://www.gnu.org/licenses/>.
- */
-
-function TreeViewHandler(treeview_instance, ged) {
- var tv = this; // Store "this" for usage within jQuery functions where "this" is not this ;-)
-
- this.treeview = $("#" + treeview_instance + "_in");
- this.loadingImage = $("#" + treeview_instance + "_loading");
- this.toolbox = $("#tv_tools");
- this.buttons = $(".tv_button:first", this.toolbox);
- this.zoom = 100; // in percent
- this.boxWidth = 180; // default family box width
- this.boxExpandedWidth = 250; // default expanded family box width
- this.cookieDays = 3; // lifetime of preferences memory, in days
- this.ajaxUrl = "index.php?route=module&module=tree&ged=" + encodeURIComponent(ged) + "&instance=" + treeview_instance + "&action=";
-
- this.container = this.treeview.parent(); // Store the container element ("#" + treeview_instance + "_out")
- this.auto_box_width = false;
- this.updating = false;
-
- // Restore user preferences
- if (readCookie("compact") === "true") {
- tv.compact();
- }
-
- ///////////////////////////////////////////////
- // Based on https://codepen.io/chriscoyier/pen/zdsty
- (function($) {
- $.fn.drags = function(opt) {
- var $el = this;
-
- return $el.css('cursor', 'move').on("mousedown", function(e) {
- var $drag = $(this);
- var drg_h = $drag.outerHeight();
- var drg_w = $drag.outerWidth();
- var pos_y = $drag.offset().top + drg_h - e.pageY;
- var pos_x = $drag.offset().left + drg_w - e.pageX;
-
- $drag.addClass('draggable');
-
- $(document)
- .on("mousemove", function(e) {
- $('.draggable').offset({
- top:e.pageY + pos_y - drg_h,
- left:e.pageX + pos_x - drg_w
- }).on("mouseup", function() {
- $drag.removeClass('draggable');
- });
- }).on("mouseup", function() {
- $drag.removeClass('draggable');
- tv.updateTree();
- });
- e.preventDefault();
- });
-
- }
- })(jQuery);
-
- tv.treeview.drags();
- ///////////////////////////////////////////////
-
- // Add click handlers to buttons
- tv.toolbox.find("#tvbCompact").each(function (index, tvCompact) {
- tvCompact.onclick = function () {
- tv.compact();
- };
- });
- // If we click the "hide/show all partners" button, toggle the setting before reloading the page
- tv.toolbox.find("#tvbAllPartners").each(function (index, tvAllPartners) {
- tvAllPartners.onclick = function () {
- createCookie("allPartners", readCookie("allPartners") === "true" ? "false" : "true", tv.cookieDays);
- document.location = document.location;
- };
- });
- tv.toolbox.find("#tvbOpen").each(function (index, tvbOpen) {
- var b = $(tvbOpen, tv.toolbox);
- tvbOpen.onclick = function () {
- b.addClass("tvPressed");
- tv.setLoading();
- var e = jQuery.Event("click");
- tv.treeview.find(".tv_box:not(.boxExpanded)").each(function (index, box) {
- var pos = $(box, tv.treeview).offset();
- if (pos.left >= tv.leftMin && pos.left <= tv.leftMax && pos.top >= tv.topMin && pos.top <= tv.topMax) {
- tv.expandBox(box, e);
- }
- });
- b.removeClass("tvPressed");
- tv.setComplete();
- };
- });
- tv.toolbox.find("#tvbClose").each(function (index, tvbClose) {
- var b = $(tvbClose, tv.toolbox);
- tvbClose.onclick = function () {
- b.addClass("tvPressed");
- tv.setLoading();
- tv.treeview.find(".tv_box.boxExpanded").each(function (index, box) {
- $(box).css("display", "none").removeClass("boxExpanded").parent().find(".tv_box.collapsedContent").css("display", "block");
- });
- b.removeClass("tvPressed");
- tv.setComplete();
- };
- });
-
- tv.centerOnRoot(); // fire ajax update if needed, which call setComplete() when all is loaded
-}
-/**
- * Class TreeView setLoading method
- */
-TreeViewHandler.prototype.setLoading = function () {
- this.treeview.css("cursor", "wait");
- this.loadingImage.css("display", "block");
-};
-/**
- * Class TreeView setComplete method
- */
-TreeViewHandler.prototype.setComplete = function () {
- this.treeview.css("cursor", "move");
- this.loadingImage.css("display", "none");
-};
-
-/**
- * Class TreeView getSize method
- * Store the viewport current size
- */
-TreeViewHandler.prototype.getSize = function () {
- var tv = this;
- // retrieve the current container bounding box
- var container = tv.container.parent();
- var offset = container.offset();
- tv.leftMin = offset.left;
- tv.leftMax = tv.leftMin + container.innerWidth();
- tv.topMin = offset.top;
- tv.topMax = tv.topMin + container.innerHeight();
- /*
- var frm = $("#tvTreeBorder");
- tv.treeview.css("width", frm.width());
- tv.treeview.css("height", frm.height());*/
-};
-
-/**
- * Class TreeView updateTree method
- * Perform ajax requests to complete the tree after drag
- * param boolean @center center on root person when done
- */
-TreeViewHandler.prototype.updateTree = function (center, button) {
- var tv = this; // Store "this" for usage within jQuery functions where "this" is not this ;-)
- var to_load = [];
- var elts = [];
- this.getSize();
-
- // check which td with datafld attribute are within the container bounding box
- // and therefore need to be dynamically loaded
- tv.treeview.find("td[abbr]").each(function (index, el) {
- el = $(el, tv.treeview);
- var pos = el.offset();
- if (pos.left >= tv.leftMin && pos.left <= tv.leftMax && pos.top >= tv.topMin && pos.top <= tv.topMax) {
- to_load.push(el.attr("abbr"));
- elts.push(el);
- }
- });
- // if some boxes need update, we perform an ajax request
- if (to_load.length > 0) {
- tv.updating = true;
- tv.setLoading();
- jQuery.ajax({
- url: tv.ajaxUrl + "Persons",
- dataType: "json",
- data: "q=" + to_load.join(";"),
- success: function (ret) {
- var nb = elts.length;
- var root_element = $(".rootPerson", this.treeview);
- var l = root_element.offset().left;
- for (var i = 0; i < nb; i++) {
- elts[i].removeAttr("abbr").html(ret[i]);
- }
- // we now ajust the draggable treeview size to its content size
- tv.getSize();
- },
- complete: function () {
- if (tv.treeview.find("td[abbr]").length) {
- tv.updateTree(center, button); // recursive call
- }
- // the added boxes need that in mode compact boxes
- if (tv.auto_box_width) {
- tv.treeview.find(".tv_box").css("width", "auto");
- }
- tv.updating = true; // avoid an unuseful recursive call when all requested persons are loaded
- if (center) {
- tv.centerOnRoot();
- }
- if (button) {
- button.removeClass("tvPressed");
- }
- tv.setComplete();
- tv.updating = false;
- },
- timeout: function () {
- if (button) {
- button.removeClass("tvPressed");
- }
- tv.updating = false;
- tv.setComplete();
- }
- });
- } else {
- if (button) {
- button.removeClass("tvPressed");
- }
- tv.setComplete();
- }
- return false;
-};
-
-/**
- * Class TreeView compact method
- */
-TreeViewHandler.prototype.compact = function () {
- var tv = this;
- var b = $("#tvbCompact", tv.toolbox);
- tv.setLoading();
- if (tv.auto_box_width) {
- var w = tv.boxWidth * (tv.zoom / 100) + "px";
- var ew = tv.boxExpandedWidth * (tv.zoom / 100) + "px";
- tv.treeview.find(".tv_box:not(boxExpanded)", tv.treeview).css("width", w);
- tv.treeview.find(".boxExpanded", tv.treeview).css("width", ew);
- tv.auto_box_width = false;
- if (readCookie("compact")) {
- createCookie("compact", false, tv.cookieDays);
- }
- b.removeClass("tvPressed");
- } else {
- tv.treeview.find(".tv_box").css("width", "auto");
- tv.auto_box_width = true;
- if (!readCookie("compact")) {
- createCookie("compact", true, tv.cookieDays);
- }
- if (!tv.updating) {
- tv.updateTree();
- }
- b.addClass("tvPressed");
- }
- tv.setComplete();
- return false;
-};
-
-/**
- * Class TreeView centerOnRoot method
- */
-TreeViewHandler.prototype.centerOnRoot = function () {
- this.loadingImage.css("display", "block");
- var tv = this;
- var tvc = this.container;
- var tvc_width = tvc.innerWidth() / 2;
- if (isNaN(tvc_width)) {
- return false;
- }
- var tvc_height = tvc.innerHeight() / 2;
- var root_person = $(".rootPerson", this.treeview);
-
- if (!this.updating) {
- tv.setComplete();
- }
- return false;
-};
-
-/**
- * Class TreeView expandBox method
- * param string @box the person box element
- * param string @event the call event
- * param string @pid the person id
- *
- * called ONLY for elements which have NOT the class tv_link to avoid unuseful requests to the server
- */
-TreeViewHandler.prototype.expandBox = function (box, event) {
- var t = $(event.target);
- if (t.hasClass("tv_link")) {
- return false;
- }
-
- var box = $(box, this.treeview);
- var bc = box.parent(); // bc is Box Container
- var pid = box.attr("abbr");
- var tv = this; // Store "this" for usage within jQuery functions where "this" is not this ;-)
- var expanded;
- var collapsed;
-
- if (bc.hasClass("detailsLoaded")) {
- collapsed = bc.find(".collapsedContent");
- expanded = bc.find(".tv_box:not(.collapsedContent)");
- } else {
- // Cache the box content as an hidden person's box in the box's parent element
- expanded = box;
- collapsed = box.clone();
- bc.append(collapsed.addClass("collapsedContent").css("display", "none"));
- // we add a waiting image at the right side of the box
- var loading_image = this.loadingImage.find("img").clone().addClass("tv_box_loading").css("display", "block");
- box.prepend(loading_image);
- tv.updating = true;
- tv.setLoading();
- // perform the Ajax request and load the result in the box
- box.load(tv.ajaxUrl + "Details&pid=" + pid, function () {
- // If Lightbox module is active, we reinitialize it for the new links
- if (typeof CB_Init === "function") {
- CB_Init();
- }
- box.css("width", tv.boxExpandedWidth * (tv.zoom / 100) + "px");
- loading_image.remove();
- bc.addClass("detailsLoaded");
- tv.setComplete();
- tv.updating = false;
- });
- }
- if (box.hasClass("boxExpanded")) {
- expanded.css("display", "none");
- collapsed.css("display", "block");
- box.removeClass("boxExpanded");
- } else {
- expanded.css("display", "block");
- collapsed.css("display", "none");
- expanded.addClass("boxExpanded");
- }
- // we must ajust the draggable treeview size to its content size
- this.getSize();
- return false;
-};
-
-function createCookie(name, value, days) {
- if (days) {
- var date = new Date();
- date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
- document.cookie = name + "=" + value + "; expires=" + date.toGMTString() + "; path=/";
- } else {
- document.cookie = name + "=" + value + "; path=/";
- }
-}
-
-function readCookie(name) {
- var name_equals = name + "=";
- var ca = document.cookie.split(';');
- for (var i = 0; i < ca.length; i++) {
- var c = ca[i];
- while (c.charAt(0) === ' ') {
- c = c.substring(1, c.length);
- }
- if (c.indexOf(name_equals) === 0) {
- return c.substring(name_equals.length, c.length);
- }
- }
- return null;
-}
diff --git a/modules_v4/tree/module.php b/modules_v4/tree/module.php
deleted file mode 100644
index 8cbf0ebe8c..0000000000
--- a/modules_v4/tree/module.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * webtrees: online genealogy
- * Copyright (C) 2019 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 3 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, see <http://www.gnu.org/licenses/>.
- */
-declare(strict_types=1);
-
-namespace Fisharebest\Webtrees;
-
-use Fisharebest\Webtrees\Module\InteractiveTreeModule;
-
-return new InteractiveTreeModule();