[interchange-cvs] interchange - heins modified 6 files
interchange-core@icdevgroup.org
interchange-core@icdevgroup.org
Sat Aug 3 17:38:01 2002
User: heins
Date: 2002-08-03 21:37:29 GMT
Added: dist/foundation/dbconf/default_db tree.dbm
Added: dist/foundation/dbconf/mysql tree.mysql
Added: dist/foundation/dbconf/oracle tree.ora
Added: dist/foundation/dbconf/pgsql tree.pgsql
Added: dist/foundation/products tree.txt
Added: dist/foundation/templates/components product_tree
Log:
* Add rudimentary product_tree component and the supporting tree table.
* product_tree will be changing to use the new super-duper menu
tag, but this gives an idea of what it will do.
Revision Changes Path
1.1 interchange/dist/foundation/dbconf/default_db/tree.dbm
rev 1.1, prev_rev 1.0
Index: tree.dbm
=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
Database tree tree.txt TAB
Database tree AUTO_NUMBER 00000001
1.1 interchange/dist/foundation/dbconf/mysql/tree.mysql
rev 1.1, prev_rev 1.0
Index: tree.mysql
=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
Database tree tree.txt __SQLDSN__
ifdef SQLUSER
Database tree USER __SQLUSER__
endif
ifdef SQLPASS
Database tree PASS __SQLPASS__
endif
Database tree DEFAULT_TYPE varchar(255)
Database tree AUTO_SEQUENCE tree_seq
Database tree KEY code
Database tree COLUMN_DEF "parent_fld=3Dvarchar(20)"
Database tree COLUMN_DEF "msort=3Dvarchar(8)"
Database tree COLUMN_DEF "extended=3Dtext"
Database tree COLUMN_DEF "inactive=3Dint not null default 0"
Database tree INDEX parent_fld
Database tree INDEX mgroup
Database tree INDEX msort
Database tree NO_ASCII_INDEX 1
Database tree HIDE_FIELD inactive
1.1 interchange/dist/foundation/dbconf/oracle/tree.ora
rev 1.1, prev_rev 1.0
Index: tree.ora
=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
Database tree tree.txt __SQLDSN__
ifdef SQLUSER
Database tree USER __SQLUSER__
endif
ifdef SQLPASS
Database tree PASS __SQLPASS__
endif
Database tree DEFAULT_TYPE varchar(255)
Database tree AUTO_SEQUENCE tree_seq
Database tree AUTO_SEQUENCE_DROP 1
Database tree KEY code
Database tree COLUMN_DEF "parent_fld=3Dvarchar(20)"
Database tree COLUMN_DEF "msort=3Dvarchar(8)"
Database tree COLUMN_DEF "extended=3Dvarchar2(4000)"
Database tree COLUMN_DEF "inactive=3Dint not null default 0"
Database tree INDEX parent_fld
Database tree INDEX mgroup
Database tree INDEX msort
Database tree NO_ASCII_INDEX 1
Database tree HIDE_FIELD inactive
Database tree UPPERCASE 1
1.1 interchange/dist/foundation/dbconf/pgsql/tree.pgsql
rev 1.1, prev_rev 1.0
Index: tree.pgsql
=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
Database tree tree.txt __SQLDSN__
ifdef SQLUSER
Database tree USER __SQLUSER__
endif
ifdef SQLPASS
Database tree PASS __SQLPASS__
endif
Database tree DEFAULT_TYPE varchar(255)
Database tree AUTO_SEQUENCE tree_seq
Database tree AUTO_SEQUENCE_DROP 1
Database tree KEY code
Database tree COLUMN_DEF "parent_fld=3Dvarchar(20)"
Database tree COLUMN_DEF "msort=3Dvarchar(8)"
Database tree COLUMN_DEF "extended=3Dtext"
Database tree COLUMN_DEF "inactive=3Dint not null default 0"
Database tree INDEX parent_fld
Database tree INDEX mgroup
Database tree INDEX msort
Database tree NO_ASCII_INDEX 1
Database tree HIDE_FIELD inactive
1.1 interchange/dist/foundation/products/tree.txt
rev 1.1, prev_rev 1.0
Index: tree.txt
=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
code parent_fld mgroup msort page form name description inactive extended
1.1 interchange/dist/foundation/templates/components/produ=
ct_tree
rev 1.1, prev_rev 1.0
Index: product_tree
=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
[comment]
ui_component: product_tree
ui_type: component
ui_name: product_tree
ui_class: vertical
ui_group: Navigation
ui_label: Vertical category list
ui_source: templates/components/product_tree
tree_selector:
advanced: 1
help: Defines which tree menu is selected
label: Tree name
db: tree
lookup: mgroup
type: select
[/comment]
<!-- BEGIN COMPONENT [control component product_tree] -->
<tr><td align=3D"left" class=3D"categorybar">
<br>
<table width=3D"90%" align=3D"center">
<tr>=20
<td valign=3D"top" class=3D"categorybar">
[tmpn OLDBROWSER][/tmpn]
[if type=3Dsession term=3Dbrowser op=3D"!~" compare=3D"/MSIE [5-9].*Windows=
|Mozilla.*Gecko/"]
[set OLDBROWSER]1[/set]
[/if]
[goto name=3DOLDBROWSER if=3D"[scratch OLDBROWSER]"]
<P>
<A HREF=3D"javascript:do_explode(); void(0)" class=3Dbarlink>Explode tree</=
A><br>
<A HREF=3D"javascript:do_collapse(); void(0)" class=3Dbarlink>Collaps tree<=
/A><br>
</P>
<script>
var lines =3D new Array;
[tmpn tmp_field_vars][/tmpn]
[tree start=3DProducts
table=3Dtree
master=3Dparent_fld
subordinate=3Dcode
autodetect=3D1
toggle=3Dtoggle
sort=3Dcode
iterator=3Djsline
full=3D1
spacing=3D4
][item-sub jsline]
sub {
my $loopname =3D shift;
my $row =3D shift;
$loopinc =3D 0 if ! defined $loopinc;
#Debug("loopname=3D$loopname row=3D" . uneval($row));
$loopname =3D~ s/^\s+//;
$loopname =3D~ s/\s+$//;
my $fields;
$loopname =3D~ s/[\s,]+(.*)//s
and $fields =3D $1;
$fields ||=3D q{
code
parent_fld
mv_level
mv_children
mv_increment
page
form
name
description};
$fields =3D~ s/^\s+//;
my @fields =3D split /[\s,\0]+/, $fields;
#Debug("form=3D$row->{form}");
if($row->{page}) {
my $form =3D $row->{form};
if($form) {
$form =3D~ s/&/\n/g;
$form .=3D "\nopen=3D";
}
else {
$form =3D 'open=3D';
}
$row->{page} =3D $Tag->area( { href =3D> $row->{page}, form =3D> $form });
}
$row->{description} =3D $Tag->filter('encode_entities', $row->{description=
});
my @values =3D @{$row}{@fields};
if(! $Scratch->{tmp_field_vars}) {
push @fields, 'open';
my @out;
for(my $i =3D 0; $i < @fields; $i++) {
push @out, " var \U$fields[$i]\E =3D $i;";
}
$Scratch->{tmp_field_vars} =3D join "\n", @out;
pop @fields;
}
for(@values) {
my $foundit =3D '';
if(s/^\s*{\s+//) {
s/(,?\s*\}\s*)$//;
$foundit =3D 1;
}
s/\\'/-_ESC_QUOTE_-/g;
s/'/\\'/g;
s/\r+$/' + "\\r"/g;
s/\r/' + "\\r" + '/g;
s/-_ESC_QUOTE_-/\\\\\\'/g;
if($foundit) {
$_ =3D "{" . $_ . "}";
}
if(/\D/) {
$_ =3D qq{'$_'};
}
}
my $out =3D "$loopname\[" . $loopinc++ . "] =3D [" . join(", ", @values) =
"];";
return $out;
}
[/item-sub]lines[/tree]
[calc]
my $out =3D ' var openstatus =3D [';
$out .=3D join ",", split //, $CGI->{open};
$out .=3D "];\n";
$out .=3D " var explode =3D ";
$out .=3D $CGI->{explode} ? 1 : 0;
$out .=3D ";\n";
$out .=3D " var collapse =3D ";
$out .=3D $CGI->{collapse} ? 1 : 0;
$out .=3D ";\n";
return $out;
[/calc]
[scratch tmp_field_vars]
[restrict log=3Dnone]
var next_level =3D 0;
var openstring =3D '';
function tree_link (idx) {
var out =3D '';
var treebox;
var l =3D lines[idx];
if(l =3D=3D undefined) {
do_alert("Bad idx=3D" + idx + ", no line there.");
return;
}
if(l[MV_LEVEL] > next_level)
return '';
// return 'next_level=3D' + next_level + ', mv_level=3D' + l[MV_LEVEL] +=
'<br>';
// alert("line is " + l);
var i;
var needed =3D l[MV_LEVEL];
for(i =3D 1; i <=3D needed; i++)
out =3D out + ' ';
if(l[MV_CHILDREN] > 0) {
out =3D out + '<a href=3D"javascript:toggit(' + idx + ');void(0)">';
var iname;
if(openstatus[idx] =3D=3D 1) {
iname =3D "__IMAGE_DIR__/" + "folder.open.gif";
out =3D out + '<img src=3D' + '"' + iname + '" border=3D0 align=3Dabsbo=
ttom>';
next_level =3D l[MV_LEVEL] + 1;
}
else {
iname =3D "__IMAGE_DIR__/folder.gif";
out =3D out + '<img src=3D' + '"' + iname + '" border=3D0 align=3Dabsbo=
ttom>';
next_level =3D l[MV_LEVEL];
}
out =3D out + '</a>';
}
else {
out =3D out + '<img'; // > Defeate image subst
out =3D out + ' src=3D"' + '__IMAGE_DIR__/bg.gif" height=3D22';
out =3D out + ' width=3D20 border=3D0 align=3Dabsbottom>';
next_level =3D l[MV_LEVEL];
}
if(l[PAGE]) {
out =3D out + '<a class=3Dbarlink href=3D"' + l[PAGE] + openstring + '"';
out =3D out + ' onDblClick=3D"toggit(' + idx + ')"';
if(l[DESCRIPTION])
out =3D out + ' title=3D"' + l[DESCRIPTION] + '"';
out =3D out + '>';
out =3D out + l[NAME] + '</a>';
}
else {
out =3D out + l[NAME];
}
// out =3D out + ' level=3D' + l[MV_LEVEL] + ' children=3D' + l[MV_CHILDR=
EN];
// out =3D out + ' needed=3D' + needed + ", next_level=3D" + next_level;
out =3D out + '<br>';
return out;
}
function toggit (idx) {
var l =3D lines[idx];
if(l =3D=3D undefined) {
alert("bad index " + idx);
return;
}
if(l[MV_CHILDREN] < 1) {
alert("nothing to toggle at index " + idx);
return;
}
openstatus[idx] =3D openstatus[idx] =3D=3D 1 ? 0 : 1;
openstring =3D openstatus.join('');
openstring =3D openstring.replace(/0+$/, '');
rewrite_tree();
}
function do_explode () {
for(var i =3D 0; i < lines.length; i++)
openstatus[i] =3D 1;
rewrite_tree();
}
function do_collapse () {
for(var i =3D 0; i < lines.length; i++)
openstatus[i] =3D 0;
rewrite_tree();
}
function rewrite_tree () {
var thing =3D '';
for(i =3D 0; i < lines.length; i++) {
thing =3D thing + tree_link(i);
}
treebox.innerHTML =3D thing;
next_level =3D 0;
}
</script>
[/restrict]
<div id=3Dtreebox style=3D"Visibility: Visible">
Test.
</div>
<script>
treebox =3D document.getElementById('treebox');
if(collapse =3D=3D 1 || explode =3D=3D 1) {
openstatus.length =3D 0;
}
for( var i =3D 0; i < lines.length; i++) {
if(openstatus[i] =3D=3D undefined)
openstatus[i] =3D explode;
}
collapse =3D 0;
explode =3D 0;
openstring =3D openstatus.join('');
openstring =3D openstring.replace(/0+$/, '');
rewrite_tree();
</script>
[goto LAST]
[label OLDBROWSER]
<P>
<a href=3D"[area href=3D@@MV_PAGE@@ form=3D"explode=3D1"]" class=3Dbarlink>=
Explode tree</A><br>
<a href=3D"[area href=3D@@MV_PAGE@@ form=3D"collapse=3D1"]" class=3Dbarlink=
>Collapse tree</A>
</P>
[tree start=3D"[control tree_selector Products]"
table=3Dtree
master=3Dparent_fld
subordinate=3Dcode
autodetect=3D1
toggle=3Dtoggle
memo=3Dmemo
sort=3Dcode
collapse=3Dcollapse
explode=3Dexplode
spacer=3D" "
spacing=3D4
iterator=3Dtree_link
/]
[label LAST]
</td>
</tr>
</table>
<br>
</td></tr>
<!-- END COMPONENT [control component product_tree] -->