Merge pull request #2620 from atm-maxime/develop_cat_multiselect
New : categories as multi-select on product
This commit is contained in:
commit
aab9b0ec60
@ -2930,10 +2930,11 @@ class Form
|
|||||||
* @param string $htmlname HTML field name
|
* @param string $htmlname HTML field name
|
||||||
* @param int $maxlength Maximum length for labels
|
* @param int $maxlength Maximum length for labels
|
||||||
* @param int $excludeafterid Exclude all categories after this leaf in category tree.
|
* @param int $excludeafterid Exclude all categories after this leaf in category tree.
|
||||||
|
* @param int $outputmode 0=HTML select string, 1=Array
|
||||||
* @return string
|
* @return string
|
||||||
* @see select_categories
|
* @see select_categories
|
||||||
*/
|
*/
|
||||||
function select_all_categories($type, $selected='', $htmlname="parent", $maxlength=64, $excludeafterid=0)
|
function select_all_categories($type, $selected='', $htmlname="parent", $maxlength=64, $excludeafterid=0, $outputmode=0)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
$langs->load("categories");
|
$langs->load("categories");
|
||||||
@ -2942,6 +2943,7 @@ class Form
|
|||||||
$cate_arbo = $cat->get_full_arbo($type,$excludeafterid);
|
$cate_arbo = $cat->get_full_arbo($type,$excludeafterid);
|
||||||
|
|
||||||
$output = '<select class="flat" name="'.$htmlname.'">';
|
$output = '<select class="flat" name="'.$htmlname.'">';
|
||||||
|
$outarray=array();
|
||||||
if (is_array($cate_arbo))
|
if (is_array($cate_arbo))
|
||||||
{
|
{
|
||||||
if (! count($cate_arbo)) $output.= '<option value="-1" disabled="disabled">'.$langs->trans("NoCategoriesDefined").'</option>';
|
if (! count($cate_arbo)) $output.= '<option value="-1" disabled="disabled">'.$langs->trans("NoCategoriesDefined").'</option>';
|
||||||
@ -2959,12 +2961,16 @@ class Form
|
|||||||
$add = '';
|
$add = '';
|
||||||
}
|
}
|
||||||
$output.= '<option '.$add.'value="'.$cate_arbo[$key]['id'].'">'.dol_trunc($cate_arbo[$key]['fulllabel'],$maxlength,'middle').'</option>';
|
$output.= '<option '.$add.'value="'.$cate_arbo[$key]['id'].'">'.dol_trunc($cate_arbo[$key]['fulllabel'],$maxlength,'middle').'</option>';
|
||||||
|
|
||||||
|
$outarray[$cate_arbo[$key]['id']] = $cate_arbo[$key]['fulllabel'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$output.= '</select>';
|
$output.= '</select>';
|
||||||
$output.= "\n";
|
$output.= "\n";
|
||||||
return $output;
|
|
||||||
|
if ($outputmode) return $outarray;
|
||||||
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
|
|||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/genericobject.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/genericobject.class.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php';
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
|
||||||
if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
if (! empty($conf->propal->enabled)) require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
||||||
if (! empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
if (! empty($conf->facture->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||||
if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
if (! empty($conf->commande->enabled)) require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
||||||
@ -271,6 +272,16 @@ if (empty($reshook))
|
|||||||
|
|
||||||
if ($id > 0)
|
if ($id > 0)
|
||||||
{
|
{
|
||||||
|
// Category association
|
||||||
|
$categories = GETPOST('categories');
|
||||||
|
if(!empty($categories)) {
|
||||||
|
$cat = new Categorie($db);
|
||||||
|
foreach($categories as $id_category) {
|
||||||
|
$cat->fetch($id_category);
|
||||||
|
$cat->add_type($object, 'product');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
|
header("Location: ".$_SERVER['PHP_SELF']."?id=".$id);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@ -349,6 +360,23 @@ if (empty($reshook))
|
|||||||
{
|
{
|
||||||
if ($object->update($object->id, $user) > 0)
|
if ($object->update($object->id, $user) > 0)
|
||||||
{
|
{
|
||||||
|
// Category association
|
||||||
|
// First we delete all categories association
|
||||||
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_product";
|
||||||
|
$sql .= " WHERE fk_product = ".$object->id;
|
||||||
|
$db->query($sql);
|
||||||
|
|
||||||
|
// Then we add the associated categories
|
||||||
|
$categories = GETPOST('categories');
|
||||||
|
if(!empty($categories)) {
|
||||||
|
$cat = new Categorie($db);
|
||||||
|
|
||||||
|
foreach($categories as $id_category) {
|
||||||
|
$cat->fetch($id_category);
|
||||||
|
$cat->add_type($object, 'product');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$action = 'view';
|
$action = 'view';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1003,6 +1031,13 @@ else
|
|||||||
$doleditor->Create();
|
$doleditor->Create();
|
||||||
|
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
|
|
||||||
|
// Categories
|
||||||
|
print '<tr><td valign="top">'.$langs->trans("Categories").'</td><td colspan="3">';
|
||||||
|
$cate_arbo = $form->select_all_categories(0, '', 'parent', 64, 0, 1);
|
||||||
|
print $form->multiselectarray('categories', $cate_arbo, $arrayselected, '', 0, '', 0, 250);
|
||||||
|
print "</td></tr>";
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -1272,6 +1307,18 @@ else
|
|||||||
$doleditor->Create();
|
$doleditor->Create();
|
||||||
|
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
|
|
||||||
|
// Categories
|
||||||
|
print '<tr><td valign="top">'.$langs->trans("Categories").'</td><td colspan="3">';
|
||||||
|
$cate_arbo = $form->select_all_categories(0, '', 'parent', 64, 0, 1);
|
||||||
|
$c = new Categorie($db);
|
||||||
|
$cats = $c->containing($object->id,0);
|
||||||
|
foreach($cats as $cat) {
|
||||||
|
$arrayselected[] = $cat->id;
|
||||||
|
}
|
||||||
|
print $form->multiselectarray('categories', $cate_arbo, $arrayselected, '', 0, '', 0, 250);
|
||||||
|
print "</td></tr>";
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
|
|
||||||
print '<br>';
|
print '<br>';
|
||||||
@ -1561,6 +1608,19 @@ else
|
|||||||
print '<tr><td valign="top">'.$langs->trans("Note").'</td><td colspan="'.(2+(($showphoto||$showbarcode)?1:0)).'">'.(dol_textishtml($object->note)?$object->note:dol_nl2br($object->note,1,true)).'</td></tr>'."\n";
|
print '<tr><td valign="top">'.$langs->trans("Note").'</td><td colspan="'.(2+(($showphoto||$showbarcode)?1:0)).'">'.(dol_textishtml($object->note)?$object->note:dol_nl2br($object->note,1,true)).'</td></tr>'."\n";
|
||||||
print '<!-- End show Note --> '."\n";
|
print '<!-- End show Note --> '."\n";
|
||||||
|
|
||||||
|
// Categories
|
||||||
|
print '<tr><td valign="top">'.$langs->trans("Categories").'</td><td colspan="3">';
|
||||||
|
$cat = new Categorie($db);
|
||||||
|
$categories = $cat->containing($object->id,0);
|
||||||
|
$catarray = $form->select_all_categories(0, '', 'parent', 64, 0, 1);
|
||||||
|
|
||||||
|
$toprint = array();
|
||||||
|
foreach($categories as $c) {
|
||||||
|
$toprint[] = $catarray[$c->id];
|
||||||
|
}
|
||||||
|
print implode('<br>', $toprint);
|
||||||
|
print "</td></tr>";
|
||||||
|
|
||||||
print "</table>\n";
|
print "</table>\n";
|
||||||
|
|
||||||
dol_fiche_end();
|
dol_fiche_end();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user