Fix: Error management

New: Autoselect category in list if there is only one element in list.
This commit is contained in:
Laurent Destailleur 2013-08-21 13:02:33 +02:00
parent c4bc10b8eb
commit 327aa80ed0
3 changed files with 19 additions and 8 deletions

View File

@ -2,7 +2,7 @@
/* Copyright (C) 2001-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005 Brice Davoleau <brice.davoleau@gmail.com>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2006-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2007 Patrick Raguin <patrick.raguin@gmail.com>
* Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
@ -608,7 +608,7 @@ else if ($id || $ref)
/**
* Function to output a HTML select for a category
* Function to output a form to add object into a category
*
* @param DoliDb $db Database handler
* @param Object $object Object we want to see categories it can be classified into
@ -626,7 +626,7 @@ function formCategory($db,$object,$typeid,$socid=0)
if ($typeid == 3) $title = $langs->trans("MembersCategoriesShort");
if ($typeid == 4) $title = $langs->trans("ContactCategoriesShort");
// Formulaire ajout dans une categorie
// Form to add record into a category
print '<br>';
print_fiche_titre($title,'','');
print '<form method="post" action="'.DOL_URL_ROOT.'/categories/categorie.php">';
@ -637,7 +637,7 @@ function formCategory($db,$object,$typeid,$socid=0)
print '<table class="noborder" width="100%">';
print '<tr class="liste_titre"><td width="40%">';
print $langs->trans("ClassifyInCategory").' &nbsp;';
print $form->select_all_categories($typeid);
print $form->select_all_categories($typeid,'auto');
print '</td><td>';
print '<input type="submit" class="button" value="'.$langs->trans("Classify").'"></td>';
if ($user->rights->categorie->creer)

View File

@ -420,16 +420,27 @@ class Categorie
{
$objparent = $this->db->fetch_object($resql);
if (!empty($objparent->fk_parent)) {
if (!empty($objparent->fk_parent))
{
$cat = new Categorie($this->db);
$cat->id=$objparent->fk_parent;
$cat->add_type($obj, $type);
$result=$cat->add_type($obj, $type);
if ($result < 0)
{
$this->error=$cat->error;
$error++;
}
}
}
}
else
{
$error++;
$this->error=$this->db->lasterror();
}
if ($error)
{
return -1;
}
}

View File

@ -2407,7 +2407,7 @@ class Form
* Return list of categories having choosed type
*
* @param int $type Type de categories (0=product, 1=supplier, 2=customer, 3=member)
* @param string $selected Id of category preselected
* @param string $selected Id of category preselected or 'auto' (autoselect category if there is only one element)
* @param string $htmlname HTML field name
* @param int $maxlength Maximum length for labels
* @param int $excludeafterid Exclude all categories after this leaf in category tree.
@ -2430,7 +2430,7 @@ class Form
$output.= '<option value="-1">&nbsp;</option>';
foreach($cate_arbo as $key => $value)
{
if ($cate_arbo[$key]['id'] == $selected)
if ($cate_arbo[$key]['id'] == $selected || ($selected == 'auto' && count($cate_arbo) == 1))
{
$add = 'selected="selected" ';
}