[fusion-commits] r2285 - in trunk/layers/MapServer: . php
svn_fusion at osgeo.org
svn_fusion at osgeo.org
Tue Nov 23 15:04:02 EST 2010
Author: madair
Date: 2010-11-23 12:04:02 -0800 (Tue, 23 Nov 2010)
New Revision: 2285
Modified:
trunk/layers/MapServer/MapServer.js
trunk/layers/MapServer/php/LoadMap.php
Log:
re #79: allow for multi-level of nested groups by using a "parentGroup" metadata element in the mapfile to list the parent group name. List parent groups first, separated by the '|' char to build nested groups. Lowest level group (ie. the one that holds the layer) is still specified in the mapfile using the GROUP keyword.
Modified: trunk/layers/MapServer/MapServer.js
===================================================================
--- trunk/layers/MapServer/MapServer.js 2010-11-22 18:58:02 UTC (rev 2284)
+++ trunk/layers/MapServer/MapServer.js 2010-11-23 20:04:02 UTC (rev 2285)
@@ -569,6 +569,11 @@
} else {
this.aVisibleGroups.push(group.uniqueId);
this.deferredDraw = true;
+ for (var i=0; i<group.groups.length; ++i) {
+ if (group.groups[i].wasVisibleInGroup) {
+ this.showGroup(group.groups[i], true);
+ }
+ }
for (var i=0; i<group.layers.length; ++i) {
if (group.layers[i].wasVisibleInGroup) {
group.layers[i].show();
@@ -591,6 +596,12 @@
}
}
this.deferredDraw = true;
+ for (var i=0; i<group.groups.length; ++i) {
+ if (group.groups[i].visible) {
+ group.groups[i].wasVisibleInGroup = true;
+ this.hideGroup(group.groups[i], true);
+ }
+ }
for (var i=0; i<group.layers.length; ++i) {
if (group.layers[i].visible) {
group.layers[i].wasVisibleInGroup = true;
Modified: trunk/layers/MapServer/php/LoadMap.php
===================================================================
--- trunk/layers/MapServer/php/LoadMap.php 2010-11-22 18:58:02 UTC (rev 2284)
+++ trunk/layers/MapServer/php/LoadMap.php 2010-11-23 20:04:02 UTC (rev 2285)
@@ -407,18 +407,25 @@
array_push($mapObj->layers, $layerObj);
//allow for nested groups using a "parentGroup" piece of metadata
- $parent = $layer->getMetaData('parentGroup');
- if (strlen($parent)>0) {
- $alreadyListed = false;
- foreach($mapObj->groups as $pGroup){
- if ($pGroup->groupName == $parent) {
- $alreadyListed = true;
- break;
- }
+ //nesting of groups is accomplished by using the | as a separator
+ $parentStr = $layer->getMetaData('parentGroup');
+ $nestedParents = explode('|',$parentStr);
+ $parentParent = '';
+ foreach($nestedParents as $parent) {
+ //echo "testing:".$parent;
+ if (strlen($parent)>0) {
+ $alreadyListed = false;
+ foreach($mapObj->groups as $pGroup){
+ if ($pGroup->groupName == $parent) {
+ $alreadyListed = true;
+ break;
+ }
+ }
+ if (!$alreadyListed) {
+ array_push($mapObj->groups, getParentGroupObject($layer, $parent, $parentParent));
+ }
}
- if (!$alreadyListed) {
- array_push($mapObj->groups, getParentGroupObject($layer));
- }
+ $parentParent = $parent;
}
}
@@ -447,7 +454,9 @@
$group->expandInLegend = ($b == 'false') ? false : true;
$group->layerGroupType = '';
/* parent group for nested groups */
- $parent = $layer->getMetaData('parentGroup');
+ $parentStr = $layer->getMetaData('parentGroup');
+ $nestedParents = explode('|',$parentStr);
+ $parent = array_pop($nestedParents);
$group->parentUniqueId = $parent;
$group->parent = $parent;
$b = $layer->getMetaData('groupVisible');
@@ -458,10 +467,10 @@
return $group;
}
-function getParentGroupObject($layer) {
+function getParentGroupObject($layer,$groupName,$parent) {
$parentGroup = $layer->getMetaData('parentGroup');
$group = NULL;
- $group->groupName = $parentGroup;
+ $group->groupName = $groupName;
$ll = $layer->getMetaData('parentGroupLegendLabel');
$group->legendLabel = $ll != '' ? $ll : $group->groupName;
$group->uniqueId = $group->groupName;
@@ -471,8 +480,8 @@
$group->expandInLegend = ($b == 'false') ? false : true;
$group->layerGroupType = '';
/* maybe do some parsing of the metadata to get parents of paretns? */
- $group->parentUniqueId = '';
- $group->parent = '';
+ $group->parentUniqueId = $parent;
+ $group->parent = $parent;
$b = $layer->getMetaData('groupVisible');
$group->visible = ($b == 'false') ? false : true;
$group->actuallyVisible = $layer->isVisible();
More information about the fusion-commits
mailing list