27require
'../main.inc.php';
28require
'class/ProductAttribute.class.php';
29require
'class/ProductAttributeValue.class.php';
30require
'lib/variants.lib.php';
33$langs->loadLangs(array(
'products'));
37$action =
GETPOST(
'action',
'aZ09');
38$confirm =
GETPOST(
'confirm',
'alpha');
39$cancel =
GETPOST(
'cancel',
'alpha');
40$contextpage =
GETPOST(
'contextpage',
'aZ') ?
GETPOST(
'contextpage',
'aZ') :
'productattribute';
41$backtopage =
GETPOST(
'backtopage',
'alpha');
42$backtopageforcancel =
GETPOST(
'backtopageforcancel',
'alpha');
43$lineid =
GETPOST(
'lineid',
'alpha');
46if (!isModEnabled(
'variants')) {
49if ($user->socid > 0) {
54$hookmanager->initHooks(array(
'productattributecard',
'globalcard'));
61include DOL_DOCUMENT_ROOT.
'/core/actions_fetchobject.inc.php';
63$permissiontoread = $user->hasRight(
'variants',
'read');
64$permissiontoadd = $user->hasRight(
'variants',
'write');
65$permissiontoedit = $user->hasRight(
'variants',
'write');
66$permissiontodelete = $user->hasRight(
'variants',
'delete');
78$reshook = $hookmanager->executeHooks(
'doActions', $parameters,
$object, $action);
88 if (empty($backtopage) || ($cancel && empty($id))) {
89 if (empty($backtopage) || ($cancel && strpos($backtopage,
'__ID__'))) {
90 if (empty($id) && (($action !=
'add' && $action !=
'create') || $cancel)) {
91 $backtopage = $backurlforlist;
93 $backtopage =
dol_buildpath(
'/variants/card.php', 1).
'?id='.((!empty($id) &&
$id > 0) ? $id :
'__ID__');
99 include DOL_DOCUMENT_ROOT.
'/core/actions_lineupdown.inc.php';
101 if (!empty($backtopage)) {
102 header(
"Location: " . $backtopage);
109 include DOL_DOCUMENT_ROOT.
'/core/actions_addupdatedelete.inc.php';
112 if ($action ==
'up' && $permissiontoedit) {
115 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'#'.
GETPOST(
'rowid'));
117 } elseif ($action ==
'down' && $permissiontoedit) {
120 header(
'Location: '.$_SERVER[
"PHP_SELF"].
'?id='.
$object->id.
'#'.
GETPOST(
'rowid'));
124 if ($action ==
'addline' && $permissiontoedit) {
125 $line_ref =
GETPOST(
'line_ref',
'alpha');
126 $line_value =
GETPOST(
'line_value',
'alpha');
128 $result =
$object->addLine($line_ref, $line_value);
131 header(
"Location: " . $_SERVER[
'PHP_SELF'] .
'?id=' .
$object->id);
137 } elseif ($action ==
'updateline' && $permissiontoedit) {
138 $line_ref =
GETPOST(
'line_ref',
'alpha');
139 $line_value =
GETPOST(
'line_value',
'alpha');
141 $result =
$object->updateLine($lineid, $line_ref, $line_value);
144 header(
"Location: " . $_SERVER[
'PHP_SELF'] .
'?id=' .
$object->id);
148 $action =
'editline';
159$help_url =
'EN:Module_Products#Variants';
163if ($action ==
'create') {
164 print
load_fiche_titre($langs->trans(
"NewObject", $langs->transnoentitiesnoconv(
"ProductAttribute")),
'',
'object_' .
$object->picto);
166 print
'<form method="POST" action="' . $_SERVER[
"PHP_SELF"] .
'">';
167 print
'<input type="hidden" name="token" value="' .
newToken() .
'">';
168 print
'<input type="hidden" name="action" value="add">';
170 print
'<input type="hidden" name="backtopage" value="' . $backtopage .
'">';
172 if ($backtopageforcancel) {
173 print
'<input type="hidden" name="backtopageforcancel" value="' . $backtopageforcancel .
'">';
178 print
'<table class="border centpercent tableforfieldcreate">' .
"\n";
181 include DOL_DOCUMENT_ROOT .
'/core/tpl/commonfields_add.tpl.php';
183 print
'</table>' .
"\n";
187 print
'<div class="center">';
188 print
'<input type="submit" class="button" name="add" value="' .
dol_escape_htmltag($langs->trans(
"Create")) .
'">';
190 print
'<input type="' . ($backtopage ?
"submit" :
"button") .
'" class="button button-cancel" name="cancel" value="' .
dol_escape_htmltag($langs->trans(
"Cancel")) .
'"' . ($backtopage ?
'' :
' onclick="history.go(-1)"') .
'>';
196} elseif (($id || $ref) && $action ==
'edit') {
200 print
'<form method="POST" action="' . $_SERVER[
"PHP_SELF"] .
'">';
201 print
'<input type="hidden" name="token" value="' .
newToken() .
'">';
202 print
'<input type="hidden" name="action" value="update">';
203 print
'<input type="hidden" name="id" value="' .
$object->id .
'">';
205 print
'<input type="hidden" name="backtopage" value="' . $backtopage .
'">';
207 if ($backtopageforcancel) {
208 print
'<input type="hidden" name="backtopageforcancel" value="' . $backtopageforcancel .
'">';
213 print
'<table class="border centpercent tableforfieldedit">' .
"\n";
216 include DOL_DOCUMENT_ROOT .
'/core/tpl/commonfields_edit.tpl.php';
218 $reshook = $hookmanager->executeHooks(
'formObjectOptions', $parameters,
$object, $action);
219 print $hookmanager->resPrint;
225 print
'<div class="center"><input type="submit" class="button button-save" name="save" value="' . $langs->trans(
"Save") .
'">';
226 print
' <input type="submit" class="button button-cancel" name="cancel" value="' . $langs->trans(
"Cancel") .
'">';
230} elseif (
$object->id > 0 && (empty($action) || ($action !=
'edit' && $action !=
'create'))) {
232 $res =
$object->fetch_optionals();
240 if ($action ==
'delete') {
241 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"] .
'?id=' .
$object->id, $langs->trans(
'DeleteMyObject'), $langs->trans(
'ProductAttributeDeleteDialog'),
'confirm_delete',
'', 0, 1);
242 } elseif ($action ==
'ask_deleteline') {
245 if ($object_value->fetch($lineid) > 0) {
246 $formconfirm = $form->formconfirm($_SERVER[
"PHP_SELF"] .
'?id=' .
$object->id .
'&lineid=' . $lineid, $langs->trans(
'DeleteLine'), $langs->trans(
'ProductAttributeValueDeleteDialog',
dol_htmlentities($object_value->value),
dol_htmlentities($object_value->ref)),
'confirm_deleteline',
'', 0, 1);
251 $parameters = array(
'formConfirm' => $formconfirm,
'lineid' => $lineid);
252 $reshook = $hookmanager->executeHooks(
'formConfirm', $parameters,
$object, $action);
253 if (empty($reshook)) {
254 $formconfirm .= $hookmanager->resPrint;
255 } elseif ($reshook > 0) {
256 $formconfirm = $hookmanager->resPrint;
264 $backtolist = (
GETPOST(
'backtolist') ?
GETPOST(
'backtolist') : DOL_URL_ROOT .
'/variants/list.php?leftmenu=?restore_lastsearch_values=1');
265 $linkback =
'<a href="' .
dol_sanitizeUrl($backtolist) .
'">' . $langs->trans(
"BackToList") .
'</a>';
267 dol_banner_tab(
$object,
'id', $linkback);
269 print
'<div class="fichecenter">';
270 print
'<div class="fichehalfleft">';
271 print
'<div class="underbanner clearboth"></div>';
272 print
'<table class="border centpercent tableforfield">' .
"\n";
275 include DOL_DOCUMENT_ROOT .
'/core/tpl/commonfields_view.tpl.php';
281 print
'<div class="clearboth"></div>';
286 if ($action !=
'editline') {
287 print
'<div class="tabsAction">' .
"\n";
288 $parameters = array();
289 $reshook = $hookmanager->executeHooks(
'addMoreActionsButtons', $parameters,
$object, $action);
294 if (empty($reshook)) {
296 print
dolGetButtonAction($langs->trans(
'Modify'),
'',
'default', $_SERVER[
"PHP_SELF"] .
'?id=' .
$object->id .
'&action=edit',
'', $permissiontoedit);
299 print
dolGetButtonAction($langs->trans(
'Delete'),
'',
'delete', $_SERVER[
'PHP_SELF'] .
'?id=' .
$object->id .
'&action=delete',
'', $permissiontodelete);
301 print
'</div>' .
"\n";
307 if (!empty(
$object->table_element_line)) {
309 $result =
$object->getLinesArray();
311 print
load_fiche_titre($langs->trans(
"PossibleValues") . (!empty(
$object->lines) ?
'<span class="opacitymedium colorblack paddingleft">(' . count(
$object->lines) .
')</span>' :
''));
313 print
' <form name="addproduct" id="addproduct" action="' . $_SERVER[
"PHP_SELF"] .
'?id=' .
$object->id . (($action !=
'editline') ?
'' :
'#line_' .
GETPOSTINT(
'lineid')) .
'" method="POST">
314 <input type="hidden" name="token" value="' .
newToken() .
'">
315 <input type="hidden" name="action" value="' . (($action !=
'editline') ?
'addline' :
'updateline') .
'">
316 <input type="hidden" name="mode" value="">
317 <input type="hidden" name="page_y" value="">
318 <input type="hidden" name="id" value="' .
$object->id .
'">
321 print
'<input type="hidden" name="backtopage" value="' . $backtopage .
'">';
323 if ($backtopageforcancel) {
324 print
'<input type="hidden" name="backtopageforcancel" value="' . $backtopageforcancel .
'">';
327 if (!empty($conf->use_javascript_ajax)) {
328 include DOL_DOCUMENT_ROOT .
'/core/tpl/ajaxrow.tpl.php';
331 print
'<div class="div-table-responsive-no-min">';
332 if (!empty(
$object->lines) || ($permissiontoedit && $action !=
'selectlines' && $action !=
'editline')) {
333 print
'<table id="tablelines" class="noborder centpercent">';
336 $object->printObjectLines($action, $mysoc,
null,
GETPOSTINT(
'lineid'), 1,
'/variants/tpl', ($permissiontoedit ? 1 : 0));
338 if (!empty(
$object->lines) || ($permissiontoedit && $action !=
'selectlines' && $action !=
'editline')) {
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Class ProductAttribute Used to represent a Product attribute Examples:
Class ProductAttributeValue Used to represent a product attribute value.
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0, $attop=0)
Set event messages in dol_events session object.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_set_focus($selector)
Set focus onto field with selector (similar behaviour of 'autofocus' HTML5 tag)
newToken()
Return the value of token currently saved into session with name 'newtoken'.
dolGetButtonAction($label, $text='', $actionType='default', $url='', $id='', $userRight=1, $params=array())
Function dolGetButtonAction.
dol_htmlentities($string, $flags=ENT_QUOTES|ENT_SUBSTITUTE, $encoding='UTF-8', $double_encode=false)
Replace htmlentities functions.
dol_sanitizeUrl($stringtoclean, $type=1)
Clean a string to use it as an URL (into a href or src attribute)
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
restrictedArea(User $user, $features, $object=0, $tableandshare='', $feature2='', $dbt_keyfield='fk_soc', $dbt_select='rowid', $isdraft=0, $mode=0)
Check permissions of a user to show a page and an object.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.
productAttributePrepareHead($object)
Prepare array with list of tabs.