function addColumn($options) { $column_id = arr($options, 'column_id'); if ($column_id == '') { $column_id = rand(100000, 999999); } $dispsize = arr($options, 'dispsize', 10); # KFD 3/6/09 Sourceforge 2668452, respect descshort if present $description = arr($options, 'descshort', ''); if ($description == '') { $description = arr($options, 'description', 'No Desc'); } $type_id = arr($options, 'type_id', 'char'); $forcelong = arr($options, 'forcelong', false); $table_id_fko = arr($options, 'table_id_fko', ''); # Permanently store the column information, # and increment the running total $width1 = max($dispsize, strlen(trim($description))); $width1++; # KFD 1/8/09, expand width (maybe) if this column # gets an x6select if ($table_id_fko != '') { if ($type_id == 'cbool' || $type_id == 'gender') { if ($width1 < 5) { $width1 = 5; } } else { $width1 += 3; } } # Now that we have what we need from description, # turn spaces into $description = str_replace(' ', ' ', $description); # KFD Calculated width of 14 12px chars is 110px # This means avg width is 7.85 pixels # This means the ratio of width to height is .654 # However, if you add sortable, it gets a LEETLE TOO TINY, # so we kicked it up to.... $width1 *= x6CssDefine('bodyfs', '12px') * 0.67; $width = $forcelong ? $width1 : intval(min($width1, 200)); $pad0 = x6CSSDefine('pad0'); $bord = 1; // HARDCODE! $this->colWidths += $width + $pad0 * 2 + $bord * 2; # Save the information about the column permanently, # we will need all of this when adding cells. $colinfo = array('description' => $description, 'dispsize' => $dispsize, 'type_id' => $type_id, 'column_id' => $column_id, 'width' => $width, 'colprec' => arr($options, 'colprec', $dispsize), 'colscale' => arr($options, 'colscale', $dispsize), 'uiro' => arr($options, 'uiro', 'N')); $this->columns[] = $colinfo; $this->columnsById[$column_id] = $colinfo; $cssExtra = ''; if (in_array($type_id, array('int', 'numb', 'money'))) { $cssExtra = 'text-align: right'; } $styleId = 'div.' . $this->hp['id'] . '_' . $column_id; $this->colStyles[$styleId] = "width: {$width}px; {$cssExtra}"; $iWidth = $width; if ($table_id_fko != '') { $iWidth -= x6cssdefine('bodyfs', '12px') * 0.67 * 5; $this->colStyles[$styleId . ' input'] = "width: {$iWidth}px; {$cssExtra}"; } else { if ($type_id == 'mime-f') { $iWidth -= x6cssdefine('bodyfs', '12px') * 0.67 * 20; $this->colStyles[$styleId . ' input'] = "width: {$iWidth}px; {$cssExtra}"; } else { if (!in_array($type_id, array('cbool', 'gender'))) { $this->colStyles[$styleId . ' input'] = "width: {$iWidth}px; {$cssExtra}"; } } } # Finally, generate the HTML. $div = $this->dhead->h('div', $description); $div->hp['xColumn'] = $column_id; $div->addclass($this->hp['id'] . '_' . $column_id); $this->headers[] = $div; }
function x6main() { $top = html('div'); $top->addClass('fadein'); $top->h('h1', 'User Options'); $height = x6cssdefine('insideheight') - x6cssHeight('h1') * 2; $pad1 = x6cssDefine('pad1'); $tabs = $top->addTabs('useroptions', $height); # -------------------------------------------------------------- # This is skin stuff # -------------------------------------------------------------- $tab1 = $tabs->addTab('Appearance'); $tab1->hp['style'] = "padding: {$pad1}px"; $file = fsDirTop() . 'templates/x6/skinsphp/x6skins.ser.txt'; $skins = unserialize(file_get_contents($file)); $select = html('select'); $cookie = arr($_COOKIE, 'x6skin', 'Default.Gray.1024'); foreach ($skins as $name => $stats) { $option = $select->h('option', $name); $option->hp['value'] = $stats; # Note that $cookie was defined above if ($cookie == $stats) { $option->hp['selected'] = 'selected'; } } $select->hp['onchange'] = 'x6ChangeSkin(this)'; ob_start(); ?> <script> window.x6ChangeSkin = function(select) { // Sourceforge 2753325 use quirksmode-supplied set cookie createCookie('x6skin',select.value,3650); //document.cookie // = "x6skin="+select.value+"; expires=12/31/2049 00:00:00;"; window.location.reload(true); } </script> <h2>Skin Selection</h2> Skin: <?php echo $select->render(); ?> <?php $tab1->setHtml(ob_get_clean()); # <------- EARLY RETURN # if (!inGroup('debugging')) { $top->render(); return; } # -------------------------------------------------------------- # Now for javascript and logging # -------------------------------------------------------------- $tab2 = $tabs->addTab('Javascript Development'); $tab2->hp['style'] = "padding: {$pad1}px"; $tab2->h('h2', 'Alternate Javascript Files'); $tab2->h('p', 'You can use this feature to debug and enhance the Andromeda Javascript files without having a complete installation. Here is how it works:'); $ul = $tab2->h('ul'); $ul->h('li', 'Use Firebug to make local copies of x6.js and androLib.js'); $ul->h('li', 'Put these files somewhere you can edit them which is also on a <i>publicly visible website</i>.'); $ul->h('li', 'Put the address of the public website here, including a trailing slash.'); $ul->h('li', '<span style="color:red">If you make a mistake and the files are not visible, this demo will stop working. Close your browser and try again.</span>'); $tab2->h('span', 'Alternate Location: '); $input = html('input'); $input->hp['size'] = 70; $input->hp['id'] = 'altjs'; $input->hp['value'] = arr($_COOKIE, 'altjs', ''); $input->code['change'] = <<<JS function(input) { createCookie('altjs',input.value); } JS; $tab2->addChild($input); $tab2->h('h2', 'Logging'); $tab2->h('p', 'Logging is by default turned off. Use the checkboxes below to turn on the various logging features.'); $a = $tab2->h('a-void', 'Detect console devices'); $a->code['click'] = <<<JS function(input) { var msg = x6consoleActivate(); if(msg==false) { alert("No console devices found, logging is disabled"); } else { alert(msg); } } JS; $tab2->br(2); $loptions = array('Server' => 'Server-Side Query Log', 'FBLite' => 'I am on IE, load Firebug Lite for me', 'Group' => 'Javascript Log Outline', 'Log' => 'Javascript Log Detail', 'Warn' => 'Warnings', 'Info' => 'Informational', 'Error' => 'Errors', 'Time' => 'Time start/end (requires firebug)'); foreach ($loptions as $loption => $description) { $input = html('input'); $input->hp['type'] = 'checkbox'; $input->hp['command'] = $loption; $input->code['click'] = <<<JS function(input) { var command = x6.p(input,'command'); var checked = input.checked; if(checked) { x6.console['enable'+command] = true; createCookie('log_'+command,1); } else { x6.console['enable'+command] = false; eraseCookie('log_'+command); } } JS; if (arr($_COOKIE, 'log_' . $loption, 0) == 1) { $input->hp['checked'] = 'checked'; } $tab2->addChild($input); $tab2->h('span', $description); $tab2->br(); if ($loption == 'Server') { $tab2->br(); } } # -------------------------------------------------------------- # End of the line # -------------------------------------------------------------- $top->render(); }