title = $title; $this->help = $help; } function addElement($name,$url = "",$colsize="") { if (!isset($this->elements[$name])) { $this->elements[$name] = array( "name" => $name, "url" => $url, "colsize" => $colsize, "columns" => array(), "rows" => array(), ); } } function deleteElement($name) { unset($this->elements[$name]); } function addSort() { $this->sort = 1; } function addColumn($name,$column_name,$value,$url="",$align="") { if (!isset($name)) return; $this->columns[$column_name] = $column_name; $this->sortby[$column_name] = $column_name; # @@@ should make this a callable function $this->elements[$name]["columns"]["$column_name"] = array( "value" => $value, "url" => $url, "align"=> $align, ); } function renameColumn($oldname,$newname) { $this->columns[$oldname] = $newname; } function removeGetParam($remove) { $res = ""; foreach ($_GET as $key => $val) { if ($key != $remove) { $res .= "$key=".urlencode($val)."&"; } } return $res; } function addRow($name,$row_name,$value,$url="",$align="") { if (!isset($name)) return; $this->elements[$name]["rows"]["$row_name"] = array( "name" => $row_name, "value" => $value, "url" => $url, "align"=> $align, ); } function addInput ($name,$value) { $this->addElement($name); $this->addColumn($name,"value", sprintf('', strtolower($name),$value)); } function addButton($name,$url) { $this->buttons[$name] = $url; } function duplicateButton($name,$rows) { $this->duplicatebuttons[$name] = array( "button" => $name, "rows" => $rows, "rowcount" => 1 ); $this->buttonduplicate = 1; } function listingStart() { return ''; } function listingHeader() { $tophelp = ''; if (!sizeof($this->columns)) { $tophelp = $this->help; } $html = ''; $html .= sprintf('',strtolower($this->title),$tophelp,$this->title); $c = 1; foreach ($this->columns as $column => $columnname) { if ($c == sizeof($this->columns)) { $html .= sprintf('',$columnname,$this->help); } else { if ($this->sortby[$columnname] && $this->sort) { $display = sprintf('%s',$this->removeGetParam("sortby"),urlencode($columnname),$columnname); } else { $display = $columnname; } $html .= sprintf('',$display); } $c++; } # $html .= sprintf('',$lastelement); $html .= ''; return $html; } function listingElement($element) { if ($element["colsize"]) $width = 'width='.$element["colsize"]; else $width = ""; $html = ''; if ($element["url"]) { $html .= sprintf('',$width,$element["url"],$element["name"]); } else { $html .= sprintf('',$width,$element["name"]); } foreach ($this->columns as $column) { if (isset($element["columns"][$column]) && $element["columns"][$column]["value"]) { $value = $element["columns"][$column]["value"]; } else { $value = $column; } if (isset($element["columns"][$column]) && $element["columns"][$column]["align"]) { $align = $element["columns"][$column]["align"]; } else { $align = ''; } if (isset($element["columns"][$column]) && $element["columns"][$column]["url"]) { $html .= sprintf('',$align,$align,$element["columns"][$column]["url"],$value); } elseif (isset($element["columns"][$column])) { $html .= sprintf('',$align,$align,$element["columns"][$column]["value"]); } else { $html .= sprintf('',$align,$align,''); } } $html .= ''; foreach ($element["rows"] as $row) { if ($row["value"]) { $value = $row["value"]; } else { $value = ""; } if ($element["rows"][$row]["align"]) { $align = $element["rows"][$row]["align"]; } else { $align = 'left'; } if ($element["rows"][$row]["url"]) { $html .= sprintf('',$row["url"],$row["name"],$align,sizeof($this->columns),$align,$value); } else { $html .= sprintf('',$row["name"],$align,sizeof($this->columns),$align,$value); } } $html .= sprintf(' ',sizeof($this->columns)+2); # $this->duplicatebuttons[$name] = array( # "button" => $name, # "rows" => $rows, # "rowcount" => 0 # ); $this->buttonduplicate = 1; if ($this->buttonduplicate) { $buttons = ''; foreach ($this->duplicatebuttons as $key => $val) { $this->duplicatebuttons[$key]['rowcount']++; if ($val['rowcount'] >= $val['rows']) { if ($this->buttons[$val['button']]) { $buttons .= sprintf('%s',$this->buttons[$val['button']],strtoupper($val['button'])); } $this->duplicatebuttons[$key]['rowcount'] = 1; } } if ($buttons) { $html .= sprintf(' ',sizeof($this->columns)+2,$buttons); } } return $html; } function listingEnd() { $html = '';$buttons = ""; if (sizeof($this->buttons)) { foreach ($this->buttons as $button => $url) { $buttons .= sprintf('%s',$url,strtoupper($button)); } $html .= sprintf(' ',sizeof($this->columns)+2,$buttons); } $html .= '
%s%s
%s%s
%s
%s
%s%s%s%s%s
%s %s
%s %s
 
%s
 
 
%s
 
'; return $html; } function index() { return "Index:
"; } function cmp($a,$b) { $sortcol = urldecode($_GET["sortby"]); if (!is_array($a) || !is_array($b)) return 0; $val1 = strip_tags($a["columns"][$sortcol]["value"]); $val2 = strip_tags($b["columns"][$sortcol]["value"]); if ($val1 == $val2) return 0; return $val1 < $val2 ? -1 : 1; } function collapse() { $this->initialstate = "none"; } function display($add_index = 0) { $html = ""; if (!sizeof($this->elements)) return ""; # if ($add_index) # $html = $this->index(); $html .= $this->listingStart(); $html .= $this->listingHeader(); # global $float_menu; # $float_menu .= "title)."\">$this->title"; if ($this->sort) { usort($this->elements,array("WebblerListing","cmp")); } foreach ($this->elements as $element) { $html .= $this->listingElement($element); } $html .= $this->listingEnd(); $shader = new WebblerShader($this->title); $shader->addContent($html); $shader->display = $this->initialstate; $html = $shader->shaderStart(); $html .= $shader->header(); $html .= $shader->dividerRow(); $html .= $shader->contentDiv(); $html .= $shader->footer(); return $html; } } class topBar { var $type = ''; function topBar($type) { $this->type = $type; } function display($lid,$bid) { if ($this->type == "admin") { return $this->adminBar($lid,$bid); } else { return $this->defaultBar(); } } function defaultBar() { return ''; } function adminBar($lid,$bid) { global $config; $uri = "http://".$config["websiteurl"].'/?lid='.$lid.'&validate=1'; if ($config["validator"] && in_array($_SESSION["me"]["loginname"],$config["validator_users"])) { $validate = sprintf ('
  • validate
  • ', $config["validator"],urlencode($uri)); } else { $validate = ''; } return '
    [webbler admin bar]
    '; } } class WebblerTabs { var $tabs = array(); var $current = ""; var $linkcode = ""; function addTab($name,$url = "") { $this->tabs[$name] = $url; } function setCurrent($name) { $this->current = strtolower($name); } function addLinkCode($code) { $this->linkcode = $code; } function display() { $html = ''; $html .= '
    '; $html .= ''; $html .= '
    '; # $html .= ' '; $html .= '
    '; return $html; } } class WebblerShader { var $name = "Untitled"; var $content = ""; var $num = 0; var $isfirst = 0; var $display = "block"; var $initialstate = "open"; function WebblerShader($name) { $this->name = $name; if (!isset($GLOBALS["shadercount"])) { $GLOBALS["shadercount"] = 0; $this->isfirst = 1; } $this->num = $GLOBALS["shadercount"]; $GLOBALS["shadercount"]++; } function addContent($content) { $this->content = $content; } function hide() { $this->display = 'none'; } function show() { $this->display = 'block'; } function shaderJavascript() { if ($_SERVER["QUERY_STRING"]) { $cookie = "WS?".$_SERVER["QUERY_STRING"]; } else { $cookie = "WS"; } if (!isset($_COOKIE[$cookie])) { $_COOKIE[$cookie] = ''; } return ' '; } function header() { $html = sprintf(' '); return $html; } function shadeIcon() { return sprintf('   ',$this->num,$this->num); } function titleBar() { return sprintf(' ',$this->shadeIcon(),$this->name); } function dividerRow() { return ' '; } function footer() { $html = sprintf(' '.$this->dividerRow().'
    %s  %s
       


    ',$this->num,$this->display,addslashes($this->name),$this->num,$this->display); return $html; } function contentDiv() { $html = sprintf(' ',$this->num,$this->display); $html .= $this->content; $html .= ' '; return $html; } function shaderStart() { if (!isset($GLOBALS["shaderJSset"])) { $html = $this->shaderJavascript(); $GLOBALS["shaderJSset"] = 1; } else { $html = ""; } return $html; } function display() { $html = $this->shaderStart(); $html .= $this->header(); $html .= $this->titleBar(); $html .= $this->dividerRow(); $html .= $this->contentDiv(); $html .= $this->footer(); return $html; } } ?>