ok
Direktori : /proc/thread-self/root/proc/self/root/usr/local/lsws/admin/html.6.0.7/classes/ |
Current File : //proc/thread-self/root/proc/self/root/usr/local/lsws/admin/html.6.0.7/classes/DTbl.php |
<?php class DTbl { public $_id; public $_title; public $_dattrs; public $_helpKey; public $_width = '100%'; public $_align; public $_isMulti;//0:regular, 1:multi-top, 2:multi-detail public $_icon; public $_addTbl; public $_cols; public $_hasNote = false; public $_hasB = false; public $_layerId = NULL; public $_dataLoc = NULL; public $_holderIndex = NULL; public $_subTbls = NULL; public $_defaultExtract = NULL; public $_linkedTbls = NULL; public $_showParentRef = false; public function __construct($id, $title=NULL, $isMulti=0, $addTbl=NULL, $align=0, $icon=NULL, $hasNote=NULL) { $this->_id = $id; $this->_title = $title; $this->_isMulti = $isMulti; $this->_addTbl = $addTbl; $this->_align = $align; $this->_icon = $icon; if ($hasNote === NULL && $this->_isMulti) $this->_hasNote = TRUE; } public function dup($newId, $title=NULL) { $d = new DTbl($newId, $this->_title, $this->_isMulti, $this->_addTbl, $this->_align, $this->_icon); $d->_dattrs = $this->_dattrs; $d->_helpKey = $this->_helpKey; $d->_width = $this->_width; $d->_cols = $this->_cols; $d->_hasNote = $this->_hasNote; $d->_hasB = $this->_hasB; $d->_layerId = $this->_layerId; $d->_dataLoc = $this->_dataLoc; $d->_holderIndex = $this->_holderIndex; $d->_subTbls = $this->_subTbls; $d->_defaultExtract = $this->_defaultExtract; $d->_linkedTbls = $this->_linkedTbls; $d->_showParentRef = $this->_showParentRef; if ($title != NULL) { $d->_title = $title; } return $d; } public function setRepeated( $holderIndex ) { $this->_holderIndex = $holderIndex; } public function setAttr(&$attrs, $dataLoc=NULL, $layerId=NULL, $helpKey=NULL) { $this->_dattrs = &$attrs; $this->_layerId = $layerId; $this->_dataLoc = $dataLoc; $this->_helpKey = $helpKey; if ( $this->_isMulti == 1 ) { $this->_cols = count($attrs); if ($this->_hasNote) $this->_cols++; if($this->_icon != NULL) $this->_cols++; } else { if (count($attrs) == 1 && $this->_dattrs[0]->_label == '') { $this->_cols = 1; } else $this->_cols = 3; } } public function setDataLoc($dataLoc, $layerId=NULL) { $this->_dataLoc = $dataLoc; if ($layerId != NULL) $this->_layerId = $layerId; } public function GetTags() { $tags = array(); $keys = array_keys($this->_dattrs); foreach ( $keys as $key ) { $attr = $this->_dattrs[$key]; $pos = strpos($attr->_key, ':'); if ( $pos === false ) $tags[$attr->_key] = $attr->_multiInd; else { $layer = substr($attr->_key, 0, $pos); $id = substr($attr->_key, $pos+1); $tags[$layer][$id] = $attr->_multiInd; } } return $tags; } public function getActionLink($disp, $actions, $editTid='', $editRef='') { $buf = ''; $allActions = array('a'=>'Add', 'v'=>'View', 'e'=>'Edit', 'E'=>'Edit', 'd'=>'Delete', 's'=>'Save', 'b'=>'Back', 'B'=>'Back', 'n'=>'Next', 'D'=>'Yes', 'c'=>'Cancel', 'C'=>'Cancel', 'i'=>'Instantiate', 'I'=>'Yes', 'X' => 'View/Edit'); $chars = preg_split('//', $actions, -1, PREG_SPLIT_NO_EMPTY); foreach ( $chars as $act ) { $ctrlUrl = '<a href="' . $disp->_ctrlUrl . 'm=' . $disp->_mid . '&p=' . $disp->_pid; $t = ''; $r = ''; $buf .= ' '; $name = $allActions[$act]; if ( $act == 'b' || $act == 'c' ) { $act = 'b'; } elseif ( $act == 'e' ) { $t = '&t=' . $this->_id; } elseif ( $act == 'a' ) { $t = '&t=' . $disp->_tid . '`' . $this->_addTbl; if ( $disp->_ref != NULL ) { $r = '&r=' . $disp->_ref . '`'; } } elseif ( strpos('vEdDCBiI', $act) !== false ) { if ( $act == 'C' ) { $act = 'B'; } if ( isset($this->_hasB) && $this->_hasB && $editTid != '' ) { $t = '&t=' . $disp->_tid . '`' . $editTid; $r = '&r=' . $disp->_ref . '`' . urlencode($editRef); } else { if ( $editTid == '' ) { $editTid = $disp->_tid; } if ( $editRef == '' ) { $editRef = $disp->_ref; } $t = '&t=' . $editTid; $r = '&r=' . urlencode($editRef); } } if ( $act == 's' ) { $buf .= '<a href="javascript:document.confform.submit()">Save</a>'; } elseif ( $act == 'n' ) { $buf .= '<a href="javascript:document.confform.a.value=\'n\';document.confform.submit()">Next</a>'; } elseif( $act == 'X') { //vhtop=>vh_... tptop=>tp_.... sltop=>sl_... $menuType = substr($disp->_type, 0, 2); if ($menuType == 'sl' && isset($disp->_info['LNS_menu'])) { $menuType = $disp->_info['LNS_menu'][$editRef]; // for lslb } elseif ($menuType == 'lb' && isset($disp->_info['CLS_menu'])) { $menuType = $disp->_info['CLS_menu'][$editRef]; // for lslb } $buf .= '<a href="' . $disp->_ctrlUrl . 'm=' . $menuType . '_' . $editRef . "\">{$name}</a>"; } else { $buf .= $ctrlUrl . $t . $r . '&a=' . $act . '&tk=' . $disp->_token . '">' . $name . '</a>'; } } return $buf; } public function PrintHtml(&$data, $ref, $disp, $isEdit) { if ($isEdit) $this->printEditHtml($data, $disp); else $this->printViewHtml($data, $ref, $disp); } private function getPrintHeader($disp, $actString) { $buf = '<tr><td class=xtbl_header colspan="' . $this->_cols . '">'; // tooltip $table_help = ' '; $dhelp_item = DATTR_HELP::GetInstance()->GetItem($this->_helpKey); if($dhelp_item != NULL) { $table_help = '  ' . $dhelp_item->render($this->_helpKey); } else if (count($this->_dattrs) == 1) { $av = array_values($this->_dattrs); $a0 = $av[0]; if ($a0->_inputType == 'textarea1') { $dhelp_item = DATTR_HELP::GetInstance()->GetItem($a0->_helpKey); if($dhelp_item != NULL) { $table_help = ' ' . $dhelp_item->render($a0->_helpKey, $a0->blockedReason()); } } } $title = $this->_title; if ($this->_showParentRef && $disp->_ref != NULL) { $pos = strpos($disp->_ref, '`'); if ($pos !== FALSE) $title .= ' - ' . substr($disp->_ref, 0, $pos); else $title .= ' - ' . $disp->_ref; } $buf .= '<span class="xtbl_title">'. $title . $table_help . '</span>'; $all_blocked = TRUE; $keys = array_keys($this->_dattrs); foreach( $keys as $i ) { if ( $this->_dattrs[$i]->blockedReason() == '' ) { $all_blocked = FALSE; break; } } if ($all_blocked) $actString = NULL; if ( $actString != NULL ) { $titleActionLink = $this->getActionLink($disp, $actString); $buf .= '<span class="xtbl_edit">'.$titleActionLink.'</span>'; } $buf .= "</td></tr>\n"; if ( $this->_isMulti == 1 ) { $buf .= '<tr class="xtbl_title2">'; $hasSort = ( $disp->_sort != NULL && $disp->_sort[0] == $this->_id ); $a = '1'; //ascend $url = $disp->_ctrlUrl . 'm=' . $disp->_mid . '&p=' . $disp->_pid; if ( $disp->_tid != NULL ) $url .= '&t=' . $disp->_tid; if ( $disp->_ref != NULL ) $url .= '&r=' . $disp->_ref; if ($this->_icon != NULL) $buf .= '<td class="icon"></td>'; if ($this->_hasNote) $buf .= '<td class="icon"></td>'; foreach( $keys as $i ) { $attr = $this->_dattrs[$i]; if ( $attr->_FDE[1] == 'N' ) continue; $buf .= '<td'; if ( isset($this->_align[$i]) ) $buf .= ' align="'.$this->_align[$i] .'"'; $buf .= '>' . $attr->_label; if ( $attr->_type != 'action' ) { $buf .= ' <a href="' . $url . '&sort=' . $this->_id . '`'; if ( $hasSort && array_key_exists(2,$disp->_sort) && array_key_exists(1,$disp->_sort) && $disp->_sort[2] == $attr->_key && $disp->_sort[1] == '1' ) $a = '0'; else $a = '1'; $buf .= $a . $attr->_key . '">'; $buf .= ($a=='1')? '<img src="/static/images/icons/up.gif" border="0" width="13" align="absmiddle">' : '<img src="/static/images/icons/down.gif" width="13" align="absmiddle" border="0">'; $buf .= '</a>'; } if ( $attr->_type == 'ctxseq' ) { $attr->_hrefLink = $url . $attr->_href; } $buf .= '</td>'; } $buf .= "</tr>\n"; } return $buf; } private function printViewHtml(&$data, $ref, $disp) { $buf = '<div><table width="'.$this->_width.'" class="xtbl" border="0" cellpadding="5" cellspacing="1">' . "\n"; if ( $this->_isMulti == 1) { if ( $this->_addTbl == NULL ) $actString = 'e'; else if ( $this->_addTbl != 'N' ) $actString = 'a'; else $actString = ''; if ( $this->_hasB ) $actString .= 'B'; $buf .= $this->getPrintHeader($disp, $actString); if ( $data != NULL && count($data) > 0 ) { $keys = array_keys($data); if ( $disp->_sort[0] == $this->_id ) { if ( array_key_exists(2,$disp->_sort) && $this->_holderIndex == $disp->_sort[2] ) { if ( $disp->_sort[1] == 1 ) sort($keys); else rsort($keys); } else { //default context view sort if(!array_key_exists(1,$disp->_sort) && $disp->_pid == "context" ) { $disp->_sort[2] = "order"; $disp->_sort[1] = 0; //asc } $s = array(); if(array_key_exists(2,$disp->_sort)) $by = $disp->_sort[2]; else $by = NULL; foreach( $keys as $key ) { $d = &$data[$key]; if(array_key_exists($by, $d)) { $a = $d[$by]; $a = $a->GetVal(); } else { $a = NULL; } $s[$key] = $a; } if ( array_key_exists(1,$disp->_sort) && $disp->_sort[1] == 1 ) { if ( $by == 'order' ) asort($s, SORT_NUMERIC); else asort($s, SORT_STRING); } else { if ( $by == 'order' ) arsort($s, SORT_NUMERIC); else arsort($s, SORT_STRING); } $keys = array_keys($s); } } $action_attr = NULL; foreach ($this->_dattrs as $attr) { if ($attr->_type == 'action') { $action_attr = $attr; break; } } foreach ( $keys as $key ) { $buf .= $this->getPrintHtmlLine1($data[$key], $key, $disp, $action_attr); } } } else { if ( $ref == NULL ) { $actString = 'e'; if ( $this->_hasB ) $actString .= 'B'; } else { $actString = 'Ed'; $actString .= ($this->_hasB ? 'B' : 'b'); } $buf .= $this->getPrintHeader($disp, $actString); $keys = array_keys($this->_dattrs); foreach( $keys as $i ) { $buf .= $this->getPrintHtmlLine($data, $disp, $i); } } $buf .= '</table></div>'; echo "$buf \n"; } private function getEditTips() { $labels = array($this->_helpKey); foreach ($this->_dattrs as $attr) { $labels[] = $attr->_helpKey; } $tips = DATTR_HELP::GetInstance()->GetEditTip($labels); $buf = ''; if (!empty($tips)) { $buf = '<div class="tips"><ul>'; foreach( $tips as $tip ) { if(strlen($tip)) { $buf .= "<li>$tip</li>\n"; } } $buf .= '</ul></div>'; } return $buf; } private function printEditHtml(&$data, $disp) { $buf = $this->getEditTips(); $buf .= "\n". '<div><table width="'.$this->_width.'" class="xtbl" border="0" cellpadding="5" cellspacing="1">' . "\n"; $actString = ( (substr($this->_id, -3) == 'SEL') ? 'n':'s' ) . ( $this->_hasB ? 'B':'b'); $buf .= $this->getPrintHeader($disp, $actString); $keys = array_keys($this->_dattrs); foreach ( $keys as $key ) { $buf .= $this->getPrintHtmlInputLine($data, $disp->_info, $key); } $buf .= '</table></div>'; echo "$buf \n"; } private function getPrintHtmlLine(&$data, $disp, $index) { $valwid = 0; $attr = $this->_dattrs[$index]; if ( $attr == NULL || $attr->_FDE[1] == 'N') { return ''; } $blockedReason = $attr->blockedReason(); if ( $attr->_type == 'sel1' ) { $attr->populate_sel1_options($disp->_info, $data); } $buf = '<tr class="xtbl_value">'; if ( $attr->_label ) { if ($blockedReason) { $buf .= '<td class="xtbl_label_blocked">'; } else { $buf .= '<td class="xtbl_label">'; } $buf .= $attr->_label; if ($this->_cols == 1) { $buf .= ' '; } else { $buf .= '</td><td class="icon">'; } //add tooltip $dhelp_item = DATTR_HELP::GetInstance()->GetItem($attr->_helpKey); if($dhelp_item != NULL) { $buf .= $dhelp_item->render($attr->_helpKey, $blockedReason); } $buf .= '</td>'; } if ($this->_cols == 1) { $buf .= '</tr><tr class="xtbl_value"><td'; } else { $buf .= '<td'; } if ($blockedReason) { $buf .= ' class="xtbl_value_blocked"'; } if ($valwid > 0) { $buf .= " width=\"$valwid\""; } $buf .= '>'; if ( $attr->_href ) { $link = $disp->_ctrlUrl . 'm=' . $disp->_mid . '&p=' . $disp->_pid; if ( $disp->_tid != NULL ) $link .= '&t=' . $disp->_tid; if ( $disp->_ref != NULL ) $link .= '&r='. $disp->_ref; $link .= $attr->_href; $attr->_hrefLink = str_replace('$R', $disp->_ref, $link); } $buf .= ($attr->toHtml($data[$attr->_key])); $buf .= "</td></tr>\n"; return $buf; } private function getPrintHtmlInputLine(&$data, &$info, $key) { $attr = $this->_dattrs[$key]; if ( $attr == NULL || $attr->_FDE[2] == 'N') return ''; $valwid = 0; $blockedReason = $attr->blockedReason(); if ( $attr->_type == 'sel1' ) { $attr->populate_sel1_options($info, $data); } $buf = '<tr class="xtbl_value">'; if ( $attr->_label ) { if ($blockedReason) { $buf .= '<td class="xtbl_label_blocked">'; } else { $buf .= '<td class="xtbl_label">'; } $buf .= $attr->_label; if ($this->_cols == 1) { $buf .= ' '; } else { $buf .= '</td><td class="icon">'; } //add tooltip $dhelp_item = DATTR_HELP::GetInstance()->GetItem($attr->_helpKey); if($dhelp_item != NULL) { $buf .= $dhelp_item->render($attr->_helpKey, $blockedReason); } $buf .= '</td>'; } if ($this->_cols == 1) { $buf .= '</tr><tr class="xtbl_value"><td'; } else { $buf .= '<td'; } if ($blockedReason) { $buf .= ' class="xtbl_value_blocked" '; } if ($valwid > 0) { $buf .= " width=\"$valwid\""; } $buf .= '>'; if ($blockedReason) $buf .= ($attr->toHtml($data[$attr->_key])); else $buf .= ($attr->toHtmlInput($data[$attr->_key])); $buf .= "</td></tr>\n"; return $buf; } private function getPrintHtmlLine1(&$data, $key0, $disp, $action_attr) { static $htmlid; if (isset($htmlid)) $htmlid++; else $htmlid = 1; $buf = '<tr class="xtbl_value">'; $keys = array_keys($this->_dattrs); //allow index field clickable, same as first action $actionLink = null; $indexActionLink = null; if ($action_attr != NULL) { if ( is_array($action_attr->_minVal) ) { $index = $action_attr->_minVal[0]; $ti = $action_attr->_minVal[$data[$index]->GetVal()]; if ( $ti == NULL ) $ti = $action_attr->_minVal[1]; } else $ti = $action_attr->_minVal; $actionLink = $this->getActionLink($disp, $action_attr->_maxVal, $ti, $key0); $tmp_a = strpos($actionLink, '"') +1; $tmp_e = strpos($actionLink, '">'); $indexActionLink = substr($actionLink, $tmp_a, $tmp_e - $tmp_a); } foreach( $keys as $key ) { $attr = $this->_dattrs[$key]; if ( $attr->_FDE[1] == 'N' ) continue; $linkedData = NULL; if ($attr->_linkedkeys != NULL) { $linkedData = $data[$attr->_linkedkeys]; } if($key == 0) { if ($this->_icon != NULL) { if($attr->_key == "type" && is_array($attr->_maxVal) && is_array($this->_icon)) { $icon_name = array_key_exists($data['type']->GetVal(), $this->_icon) ? $this->_icon[$data['type']->GetVal()] : 'application'; } else { $icon_name = $this->_icon; } $buf .= '<td class="icon"><img src="/static/images/icons/'. $icon_name . '.gif"></td>'; } if ($this->_hasNote) { $buf .= '<td class="icon">'; if(isset($data['note']) && $data['note']->HasVal()) { $buf .= '<img class="xtip-hover-info' . $htmlid . '" src="/static/images/icons/info.gif">' . '<div id="xtip-note-info' . $htmlid . '" class="snp-mouseoffset notedefault">' . htmlspecialchars($data['note']->GetVal(), ENT_QUOTES) . '</div>'; } $buf .= '</td>'; } } $buf .= '<td'; if ( isset($this->_align[$key]) ) $buf .= ' align="'.$this->_align[$key] .'"'; $buf .= '>'; if ( $attr->_type == 'action' ) { $buf .= ($attr->toHtml($actionLink)); } else { if ( $attr->_type == 'sel1' ) { $attr->populate_sel1_options($disp->_info, $data); } if ($attr->_key == $this->_holderIndex) { $buf .= ($attr->toHtml($data[$attr->_key], $indexActionLink, $linkedData)); } else { $buf .= ($attr->toHtml($data[$attr->_key], NULL, $linkedData)); } } $buf .= '</td>'; } $buf .= "</tr>\n"; return $buf; } }