Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // -----------------------------------------------------
- header("Content-Type: text/html; charset=utf-8");
- ##### $source = 'http://www.google.com/basepages/producttype/taxonomy.de-DE.txt';
- $filename = 'taxonomy.de-DE.txt'; // ---- local copy of source ----
- $color1 = '#ACACAC'; // ----- Hintergrund-Farbe 1 -----
- $color2 = '#FFFFFF'; // ----- Hintergrund-Farbe 2 -----
- // -----------------------------------------------------
- ?>
- <html>
- <head>
- <title>Taxonomy Tree</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <script type="text/javascript">
- function show(id) {
- if (document.getElementById(id).style.display == "none") {
- document.getElementById(id).style.display = "block";
- } else {
- document.getElementById(id).style.display = "none";
- }
- }
- </script>
- <style type="text/css">
- <!--
- .ktext { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16px; }
- .utext { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; }
- #kat_tree ul { margin:10px 0px 10px 8px; padding:6px 0px 10px 20px; }
- -->
- </style>
- </head>
- <body bgcolor="#FFFFFF" text="#000000">
- <?php
- // -----------------------------------------------------------------
- // -----------------------------------------------------------------
- $fdata1 = file($filename, FILE_IGNORE_NEW_LINES);
- // -----------------------------------------------------------------
- $kat_temp = array(); // --- Hilfs-Array ID->Name
- $kat_data = array(); // --- Ergebnis-Array Daten
- $max_deep = 0; // --- max. Tiefe der Kategorie-Ebenen
- // -----------------------------------------------------------------
- foreach($fdata1 as $key => $line) {
- if ($key > 0) {
- // ------ Kategorie Ebene ($level) ermitteln -----
- $nx = substr_count($line, '>');
- $nxd = ($nx+1);
- if ($nxd > $max_deep) { $max_deep = $nxd; }
- $level = $nx;
- // ------ Element in Array $kat_temp erstellen -----
- $subarray = explode('>', $line);
- $kat_name = trim($subarray[$nx]);
- $kat_temp[$key] = $kat_name;
- // ------ parent_id aus $kat_temp ermitteln -----
- if ($nx > 0) {
- $ny = ($nx-1);
- $kat_pren = trim($subarray[$ny]);
- $kat_prek = array_search($kat_pren, $kat_temp);
- }
- else {
- $kat_pren = 'root';
- $kat_prek = '0';
- }
- // ------ Neues Array-Element erstellen -----
- $kat_data[$key] = array(
- 'id' => $key,
- 'parent_id' => $kat_prek,
- 'level' => $level,
- 'name' => $kat_name
- );
- unset($subarray);
- }
- }
- unset($kat_temp);
- // -----------------------------------------------------------------
- // ------------ DEBUG -----------
- ## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
- ## print_r($kat_data);
- ## print "</pre>\n";
- // -----------------------------------------------------------------
- echo "<br />\n";
- echo "<br />Max Deep: ".$max_deep."\n";
- echo "<br />\n";
- // -----------------------------------------------------------------
- if (!empty($_REQUEST['d'])) {
- $go_d = trim($_REQUEST['d']);
- }
- else {
- $go_d = '1';
- }
- // ------------ Ebenen - Menue -----------
- print "<div id=\"level_menu\" class=\"ktext\">\n";
- print "<ul>\n";
- for ($dx=1; $dx<=$max_deep; $dx++) {
- if ($dx == $go_d) { echo " <li><strong>zeige ".$dx." Ebene(n)</strong></li>\n"; }
- else { echo " <li><a href=\"?d=".$dx."\">zeige ".$dx." Ebene(n)</a></li>\n"; }
- }
- print "</ul>\n";
- print "</div>\n";
- print "<hr />\n";
- // -----------------------------------------------------------------
- // -----------------------------------------------------------------
- $outArray = array();
- $nodeRefs = array(0 => &$outArray);
- foreach ($kat_data as $element) {
- $parent = &$nodeRefs[$element['parent_id']];
- $parent[$element['id']] = array( 'name' => $element['name'], 'parent_id' => $element['parent_id'], 'sub' => array() );
- $nodeRefs[$element['id']] = &$parent[$element['id']]['sub'];
- }
- // ------------ DEBUG -----------
- ## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
- ## print_r($outArray);
- ## print "</pre>\n";
- // -----------------------------------------------------------------
- // -------------------- Ebenen Hintergrund-Farben ------------------
- // -----------------------------------------------------------------
- function tree_color_data($color1, $color2, $max_deep) {
- // -------- Ebenen Hintergrund-Farben --------
- $r1 = hexdec(substr($color1,1,2));
- $g1 = hexdec(substr($color1,3,2));
- $b1 = hexdec(substr($color1,5,2));
- $r2 = hexdec(substr($color2,1,2));
- $g2 = hexdec(substr($color2,3,2));
- $b2 = hexdec(substr($color2,5,2));
- $diff_r = ($r2-$r1);
- $diff_g = ($g2-$g1);
- $diff_b = ($b2-$b1);
- $bgcolorarr = array();
- for ($i=1; $i<=$max_deep; $i++) {
- $factor = ($i / $max_deep);
- $r = round($r1 + $diff_r * $factor);
- $g = round($g1 + $diff_g * $factor);
- $b = round($b1 + $diff_b * $factor);
- ## $xcolor = '#' . sprintf('%02X',$r) . sprintf('%02X',$g) . sprintf('%02X',$b);
- $xcolor = '#' . dechex($r) . dechex($g) . dechex($b);
- $bgcolorarr[$i] = $xcolor;
- }
- return $bgcolorarr;
- }
- // -----------------------------------------------------------------
- // -----------------------------------------------------------------
- // ---- die Variable $max_deep (int) ist aus vorherigem Script vorhanden
- ## $color1 = '#ACACAC'; // ----- Hintergrund-Farbe 1 -----
- ## $color2 = '#FFFFFF'; // ----- Hintergrund-Farbe 2 -----
- if (!isset($bgcolor)) {
- $bgcolor = tree_color_data($color1, $color2, $max_deep);
- $bgcolor[0] = $color1;
- }
- // ------------ DEBUG -----------
- ## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
- ## print_r($bgcolor);
- ## print "</pre>\n";
- // -----------------------------------------------------------------
- // -----------------------------------------------------------------
- // ------------------- print_tree() --- Version: 3 -----------------
- // -----------------------------------------------------------------
- function print_tree($array, $level=0, $view=1) {
- global $bgcolor; // ---- Ebenen Hintergrund-Farben ----
- $anzkat = 1; // ---- Kategorie Zaehler ----
- $prefix = 'kat'; // ---- Prefix fuer ul ID ----
- $cspace = "\t"; // ---- Quellcode Spacer ----
- $spacer = str_repeat($cspace, (($level+1)*2));
- // -------- Ebene 1 --- START --------
- if ($level == 0) {
- print "\n<ul id=\"".$prefix."_root\" style=\"display:block; background:".$bgcolor[0].";\">\n";
- }
- // -------- Baum aus Array --- START --------
- foreach($array as $key => $val) {
- $prelevel = $level;
- $level++;
- if ( isset($val['sub']) && !empty($val['sub']) ) {
- $subcount = count($val['sub']);
- $preid = $val['parent_id'];
- $switch_link = "<a href=\"javascript:show('".$prefix.$key.$level."')\">open/close:</a> + ".$subcount."";
- // -------- Listen-Element mit Unter-Ebene --- START --------
- print $spacer."<li>Level: ".$level." --- ID: ".$key." --- (". str_pad($anzkat,2,'0',STR_PAD_LEFT) .") --- <strong>".$val['name']."</strong> [".$switch_link."] ";
- $anzkat++;
- $ulcolor = 'background:'.$bgcolor[$level].';';
- if ($level >= $view) { $ulview = 'display:none;'; }
- else { $ulview = 'display:block;'; }
- $ulstyle = 'style="'.$ulview.' '.$ulcolor.'"';
- // -------- Sub-Ebene --- START --------
- print "\n".$spacer."<ul id=\"".$prefix.$key.$level."\" ".$ulstyle.">\n";
- print_tree($val['sub'], $level, $view); // ---- rekursiver Funktions-Aufruf ----
- print $spacer."</ul>\n";
- // -------- Sub-Ebene --- ENDE --------
- print $spacer."</li>\n\n";
- // -------- Listen-Element mit Unter-Ebene --- ENDE --------
- }
- else {
- // -------- Listen-Element ohne Unter-Ebene --------
- print $spacer."<li>Level: ".$level." --- ID: ".$key." --- (". str_pad($anzkat,2,'0',STR_PAD_LEFT) .") --- <strong>".$val['name']."</strong></li>\n";
- $anzkat++;
- }
- $level--;
- }
- // -------- Baum aus Array --- ENDE --------
- if ($level == 0) { print "</ul>\n"; }
- // -------- Ebene 1 --- ENDE --------
- }
- // -----------------------------------------------------------------
- // -----------------------------------------------------------------
- // -----------------------------------------------------------------
- print "<br />\n";
- print "<br />\n";
- print "<br />\n";
- print "<div id=\"kat_tree\" class=\"utext\">\n";
- print_tree($outArray, 0, $go_d);
- print "</div>\n";
- print "<br />\n";
- print "<br />\n";
- print "<br />\n";
- // -----------------------------------------------------------------
- // -----------------------------------------------------------------
- // -----------------------------------------------------------------
- ?>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement