function renderTagCheckbox($inputname, $preselect, $taginfo, $refcnt_realm = '', $level = 0, $inverted_preselect = array()) { $self = __FUNCTION__; $td_class = 'tagbox'; $inverted = tagOnChain($taginfo, $inverted_preselect); $selected = tagOnChain($taginfo, $preselect); $prepared_inputname = $inputname; if ($inverted) { $td_class .= ' inverted'; $prepared_inputname = preg_replace('/^cf/', 'nf', $prepared_inputname); } if ($selected) { $td_class .= ' ' . ($inverted ? 'selected-inverted' : 'selected'); } // calculate html classnames for separators feature static $is_first_time = TRUE; $input_class = 'tag-cb' . ($level == 0 ? ' root' : ''); $tr_class = $level == 0 && $taginfo['id'] > 0 && !$is_first_time ? 'separator' : ''; $is_first_time = FALSE; echo "<tr class='{$tr_class}'><td colspan=2 class='{$td_class}' style='padding-left: " . $level * 16 . "px;'>"; echo "<label><input type=checkbox class='{$input_class}' name='{$prepared_inputname}[]' value='{$taginfo['id']}'" . ($selected ? ' checked' : '') . "> "; echo $taginfo['tag']; if (strlen($refcnt_realm) and isset($taginfo['refcnt'][$refcnt_realm])) { echo ' <i>(' . $taginfo['refcnt'][$refcnt_realm] . ')</i>'; } echo "</label></td></tr>"; if (isset($taginfo['kids'])) { foreach ($taginfo['kids'] as $kid) { $self($inputname, $preselect, $kid, $refcnt_realm, $level + 1, $inverted_preselect); } } }
function buildTagCheckboxRows($inputname, $preselect, $neg_preselect, $taginfo, $refcnt_realm = '', $level = 0) { static $is_first_time = TRUE; $inverted = tagOnChain($taginfo, $neg_preselect); $selected = tagOnChain($taginfo, $preselect); $ret = array('tr_class' => $level == 0 && $taginfo['id'] > 0 && !$is_first_time ? 'separator' : '', 'td_class' => 'tagbox', 'level' => $level, 'input_class' => $level ? 'tag-cb' : 'tag-cb root', 'input_value' => $taginfo['id'], 'text_tagname' => $taginfo['tag']); $is_first_time = FALSE; $prepared_inputname = $inputname; if ($inverted) { $ret['td_class'] .= ' inverted'; $prepared_inputname = preg_replace('/^cf/', 'nf', $prepared_inputname); } $ret['input_name'] = $prepared_inputname; if ($selected) { $ret['td_class'] .= $inverted ? ' selected-inverted' : ' selected'; $ret['input_extraattrs'] = 'checked'; } if (array_key_exists('is_assignable', $taginfo) and $taginfo['is_assignable'] == 'no') { $ret['input_extraattrs'] = 'disabled'; $ret['tr_class'] .= (array_key_exists('kidc', $taginfo) and $taginfo['kidc'] == 0) ? ' trwarning' : ' trnull'; } if (strlen($refcnt_realm) and isset($taginfo['refcnt'][$refcnt_realm])) { $ret['text_refcnt'] = $taginfo['refcnt'][$refcnt_realm]; } $ret = array($ret); if (array_key_exists('kids', $taginfo)) { foreach ($taginfo['kids'] as $kid) { $ret = array_merge($ret, call_user_func(__FUNCTION__, $inputname, $preselect, $neg_preselect, $kid, $refcnt_realm, $level + 1)); } } return $ret; }
function tagChainCmp($chain1, $chain2) { if (count($chain1) != count($chain2)) { return TRUE; } foreach ($chain1 as $taginfo1) { if (!tagOnChain($taginfo1, $chain2)) { return TRUE; } } return FALSE; }