[interchange-cvs] interchange - heins modified dist/lib/UI/pages/admin/menu_editor.html

interchange-core@icdevgroup.org interchange-core@icdevgroup.org
Thu Sep 12 00:59:01 2002


User:      heins
Date:      2002-09-12 04:58:03 GMT
Modified:  dist/lib/UI/pages/admin menu_editor.html
Log:
* Improve tolerance of editor for tree database structures that don't
  match the menu exactly.

* Add member as a default field.

* Recursive search for menu files, so that a hierarchical menu
  structure can be used.

Revision  Changes    Path
2.15      +36 -10    interchange/dist/lib/UI/pages/admin/menu_editor.html


rev 2.15, prev_rev 2.14
Index: menu_editor.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/menu_editor.html,v
retrieving revision 2.14
retrieving revision 2.15
diff -u -r2.14 -r2.15
--- menu_editor.html	20 Aug 2002 02:51:00 -0000	2.14
+++ menu_editor.html	12 Sep 2002 04:58:03 -0000	2.15
@@ -36,7 +36,7 @@
 	@menufields =3D qw/
         code mgroup msort next_line indicator exclude_on depends_on page
         form name super inactive description help_name img_dn img_up
-        img_sel img_icon url
+        img_sel img_icon url member
 	/;
=20
 	$Tag->tmp('qmenu_fdata');
@@ -107,6 +107,14 @@
 				my $gfield =3D $Variable->{MV_TREE_GROUP_FIELD} || 'mgroup';
 				my $sfield =3D $Variable->{MV_TREE_SORT_FIELD} || 'msort';
=20
+				my @valid;
+				for(my $i =3D 0; $i < @fields; $i++) {
+					push @valid, $i if defined $db->test_column($fields[$i]);
+				}
+#Debug("valid entries=3D" . join(',', @valid));
+
+				@fields =3D @fields[@valid];
+
 				my $gptr;
 				my $sptr;
 				for(my $i =3D 1; $i < @fields; $i++) {
@@ -135,6 +143,7 @@
 					my @row =3D split /\t/, $_, $num;
 					my @f =3D @fields;
 					$#row =3D $last;
+					@row =3D @row[@valid];
 					my $lev =3D $row[$sptr];
 #Debug("menu level=3D$lev");
 					$row[$gptr] =3D $menuname;
@@ -423,31 +432,45 @@
 			$blob =3D~ s/.*?>//;
 			1 while $blob =3D~ s{<.*?>}{};
 			$anchor =3D $blob;
+			my $sort =3D $start;
+			$sort =3D~ s/./x/;
 			my($href, $parms) =3D split /\?/, $link, 2;
-			push @out,=20
-				join "\t", $start, '', 0, $start, $href, $parms, $anchor, $desc;
-			$start++;
+			my %record =3D (
+				code =3D> $start++,
+				msort =3D> $sort,
+				page =3D> $href,
+				form =3D> $parms,
+				name =3D> $anchor,
+				description =3D> $desc,
+			);
+
+			push @out, join "\t", @record{@menufields};
 		}
+
 		$Scratch->{qmenu_data} =3D join "\n", @out, '';
 		$CGI->{qmenu_name} =3D '';
 		$CGI->{qmenu_new} ||=3D 'Untitled';
 	}
=20
-	my @files =3D sort $Tag->list_glob("$menupath/*.txt");
+	my $files =3D $Tag->list_pages({
+											base =3D> $menupath,
+											ext =3D> '.txt',
+											arrayref =3D> 1,
+										});
+#Debug("files=3D" . join(",", @$files));
 	my @names;
-	for(@files) {
+	for(@$files) {
 		my $tmp =3D $_;
-		$tmp =3D~ s:.*/::;
-		$tmp =3D~ s/\.txt$//;
 		$tmp =3D~ s/%([A-Fa-f0-9]{2})/chr(hex $1)/eg;
+		$_ =3D "$menupath/$_.txt";
 		push @names, $tmp;
 	}
=20
-	@qmenu{@names} =3D @files;
+	@qmenu{@names} =3D @$files;
=20
 	my @fdata =3D "code\tfile";
 	for(my $i =3D 0; $i < @names; $i++) {
-		push @fdata, "$names[$i]\t$files[$i]";
+		push @fdata, "$names[$i]\t$files->[$i]";
 	}
 	$Scratch->{qmenu_fdata} =3D join "\n", @fdata;
=20
@@ -977,6 +1000,7 @@
 		var f =3D document.qmenuform;
 		var el =3D f.treebutton;
 		var ch =3D f.qmenu_tree;
+		var cht =3D f.qmenu_write_tree;
 		var tel =3D document.getElementById('treebox');
 // alert("change mode, el=3D" + el);
 		if(mode =3D=3D 'tree') {
@@ -984,6 +1008,7 @@
 			lines[1][MSORT] =3D 0;
 			el.value =3D "Set simple mode";
 			ch.checked =3D 1;
+			cht.checked =3D 1;
 			tel.style.visibility =3D 'Visible';
 		}
 		else {
@@ -991,6 +1016,7 @@
 			lines[1][MSORT] =3D 'x';
 			el.value =3D "Set tree mode";
 			ch.checked =3D 0;
+			cht.checked =3D 0;
 			tel.style.visibility =3D 'Hidden';
 		}
 		var i;