1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-06 14:46:56 +02:00

Admin > Users would only allow viewing of one user extended-field in list mode under some circumstances. Checkbox field-type corrected.

This commit is contained in:
Cameron
2016-03-22 00:02:05 -07:00
parent 982082c6da
commit a8250858e3
5 changed files with 121 additions and 5 deletions

View File

@@ -350,22 +350,23 @@ class users_admin_ui extends e_admin_ui
// Extended fields - FIXME - better field types
if($sql->select('user_extended_struct', '*', "user_extended_struct_type > 0 AND user_extended_struct_text != '_system_' ORDER BY user_extended_struct_parent ASC"))
if($rows = $sql->retrieve('user_extended_struct', '*', "user_extended_struct_type > 0 AND user_extended_struct_text != '_system_' ORDER BY user_extended_struct_parent ASC",true))
{
// TODO FIXME use the handler to build fields and field attributes
// FIXME a way to load 3rd party language files for extended user fields
e107::coreLan('user_extended');
while ($row = $sql->fetch())
foreach ($rows as $row)
{
$field = "user_".$row['user_extended_struct_name'];
// $title = ucfirst(str_replace("user_","",$field));
$label = $tp->toHtml($row['user_extended_struct_text'],false,'defs');
$this->fields[$field] = array('title' => $label,'width' => 'auto', 'type'=>'method', 'method'=>'user_extended', 'data'=>false, 'tab'=>1, 'noedit'=>false);
$this->fields[$field] = array('title' => $label,'width' => 'auto', 'type'=>'method', 'readParms'=>array('ueType'=>$row['user_extended_struct_type']), 'method'=>'user_extended', 'data'=>false, 'tab'=>1, 'noedit'=>false);
$this->extended[] = $field;
$this->extendedData[$field] = $row;
}
}
$this->fields['user_signature']['writeParms']['data'] = e107::getUserClass()->uc_required_class_list("classes");
$this->fields['user_signature'] = array('title' => LAN_USER_09, 'type' => 'textarea', 'data'=>'str', 'width' => 'auto');
@@ -2315,6 +2316,13 @@ class users_admin_form_ui extends e_admin_form_ui
{
$field = $att['field'];
$data = $this->getController()->getListModel()->get($field); // ($att['field']);
return e107::getUserExt()->renderValue($data, $att['ueType']);
return print_a($att,true);
return $data;
}

View File

@@ -570,6 +570,12 @@ if (isset($_POST['add_field']))
{
$_POST['user_values'] = array($_POST['table_db'],$_POST['field_id'],$_POST['field_value'],$_POST['field_order']);
}
if(!empty($_POST['sort_user_values']))
{
sort($_POST['user_values']);
}
$new_values = $user->make_delimited($_POST['user_values']);
$new_parms = $tp->toDB($_POST['user_include']."^,^".$_POST['user_regex']."^,^".$_POST['user_regexfail']."^,^".$_POST['user_hide']);
@@ -611,6 +617,12 @@ if (isset($_POST['update_field']))
{
$_POST['user_values'] = array($_POST['table_db'],$_POST['field_id'],$_POST['field_value'],$_POST['field_order']);
}
if(!empty($_POST['sort_user_values']))
{
sort($_POST['user_values']);
}
$upd_values = $user->make_delimited($_POST['user_values']);
$upd_parms = $tp->toDB($_POST['user_include']."^,^".$_POST['user_regex']."^,^".$_POST['user_regexfail']."^,^".$_POST['user_hide']);
$result = $mes->addAuto($ue->user_extended_modify($sub_action, $tp->toDB($_POST['user_field']), $tp->toDB($_POST['user_text']), intval($_POST['user_type']), $upd_parms, $upd_values, $tp->toDB($_POST['user_default']), intval($_POST['user_required']), intval($_POST['user_read']), intval($_POST['user_write']), intval($_POST['user_applicable']), intval($_POST['user_parent'])), 'update', EXTLAN_29, false, false);
@@ -1071,7 +1083,12 @@ class users_ext
$text .= "
</div>
<input type='button' class='btn btn-primary' value='".EXTLAN_48."' onclick=\"duplicateHTML('value_line','value_container');\" />
<br /><span class='field-help'>".EXTLAN_17."</span></div>";
<br /><span class='field-help'>".EXTLAN_17."</span>
<div style='margin-top:10px'>".$frm->checkbox('sort_user_values',1, false, "Sort values")."</div>
</div>";
// End of Values. --------------------------------------

View File

@@ -144,6 +144,29 @@
$uVal = str_replace(chr(1), '', $udata['user_'.$parms[0]]);
switch ($ueStruct["user_".$parms[0]]['user_extended_struct_type'])
{
case EUF_CHECKBOX:
$uVal = e107::unserialize($uVal);
if(!empty($uVal))
{
return implode(', ',$uVal);
/*
$text = '<ul>';
foreach($uVal as $v)
{
$text .= "<li>".$v."</li>";
}
$text .= "</ul>";
$ret_data = $text;*/
}
break;
case EUF_DB_FIELD : // check for db_lookup type
$tmp = explode(',',$ueStruct['user_'.$parms[0]]['user_extended_struct_values']);
$sql_ue = new db; // Use our own DB object to avoid conflicts

View File

@@ -772,7 +772,10 @@ class e107_user_extended
case EUF_CHECKBOX : //checkboxes
// print_a($choices);
$curval = e107::unserialize($curval);
if(!is_array($curval))
{
$curval = e107::unserialize($curval);
}
return e107::getForm()->checkboxes($fname.'[]',$choices, $curval, array('useLabelValues'=>1));
/*
@@ -1108,5 +1111,54 @@ class e107_user_extended
return $temp->getValue($value);
}
/**
* Render Extended User Field Data in a read-only fashion.
* @param $value
* @param $type
* @return array|string
*/
function renderValue($value, $type)
{
//TODO FIXME Add more types.
switch($type)
{
case EUF_CHECKBOX:
$value = e107::unserialize($value);
if(!empty($value))
{
sort($value);
return implode('<br />',$value);
/*
$text = '<ul>';
foreach($uVal as $v)
{
$text .= "<li>".$v."</li>";
}
$text .= "</ul>";
$ret_data = $text;*/
}
break;
case EUF_DATE : //check for 0000-00-00 in date field
if($value == '0000-00-00') { $value = ''; }
return $value;
break;
default:
return $value;
// code to be executed if n is different from all labels;
}
}
}
?>

View File

@@ -130,6 +130,22 @@ img.featurebox { border-radius: 5px }
#login-template .logo { padding-top:50px; margin-left:auto; margin-right: auto }
.modal-lg { width: 70% }
table label.checkbox {
margin-left: 20px;
}
/* CUSTOM Responsive Styles */