Beispiel #1
0
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);
        }
    }
}
Beispiel #2
0
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;
}
Beispiel #3
0
function tagChainCmp($chain1, $chain2)
{
    if (count($chain1) != count($chain2)) {
        return TRUE;
    }
    foreach ($chain1 as $taginfo1) {
        if (!tagOnChain($taginfo1, $chain2)) {
            return TRUE;
        }
    }
    return FALSE;
}