Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/develop' into socialnetworks
Browse files Browse the repository at this point in the history
  • Loading branch information
frederic34 committed Oct 6, 2019
2 parents 6384e7e + 866dcf1 commit ec8569d
Show file tree
Hide file tree
Showing 222 changed files with 855 additions and 879 deletions.
2 changes: 1 addition & 1 deletion htdocs/accountancy/bookkeeping/balance.php
Expand Up @@ -265,7 +265,7 @@
$description = $object->get_compte_desc($line->numero_compte); // Search description of the account
$root_account_description = $object->get_compte_racine($line->numero_compte);
if (empty($description)) {
$link = '<a href="../admin/card.php?action=create&accountingaccount=' . length_accountg($line->numero_compte) . '">' . img_edit_add() . '</a>';
$link = '<a href="'.DOL_URL_ROOT.'/accountancy/admin/card.php?action=create&accountingaccount=' . length_accountg($line->numero_compte) . '">' . img_edit_add() . '</a>';
}
print '<tr class="oddeven">';

Expand Down
6 changes: 3 additions & 3 deletions htdocs/accountancy/bookkeeping/card.php
Expand Up @@ -439,7 +439,7 @@
print $langs->trans('Docdate');
print '</td>';
if ($action != 'editdate')
print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdate&amp;piece_num='. $object->piece_num .'&amp;mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('SetDate'), 1).'</a></td>';
print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=editdate&amp;piece_num='. $object->piece_num .'&amp;mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('SetDate'), 1).'</a></td>';
print '</tr></table>';
print '</td><td colspan="3">';
if ($action == 'editdate') {
Expand All @@ -463,7 +463,7 @@
print $langs->trans('Codejournal');
print '</td>';
if ($action != 'editjournal')
print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editjournal&amp;piece_num='.$object->piece_num.'&amp;mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a></td>';
print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=editjournal&amp;piece_num='.$object->piece_num.'&amp;mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a></td>';
print '</tr></table>';
print '</td><td>';
if ($action == 'editjournal') {
Expand All @@ -487,7 +487,7 @@
print $langs->trans('Piece');
print '</td>';
if ($action != 'editdocref')
print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdocref&amp;piece_num='.$object->piece_num.'&amp;mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a></td>';
print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=editdocref&amp;piece_num='.$object->piece_num.'&amp;mode='. $mode .'">'.img_edit($langs->transnoentitiesnoconv('Edit'), 1).'</a></td>';
print '</tr></table>';
print '</td><td>';
if ($action == 'editdocref') {
Expand Down
15 changes: 4 additions & 11 deletions htdocs/adherents/card.php
Expand Up @@ -68,7 +68,7 @@
$extrafields = new ExtraFields($db);

// fetch optionals attributes and labels
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$socialnetworks = getArrayOfSocialNetworks();

Expand Down Expand Up @@ -328,7 +328,7 @@
$object->public = GETPOST("public", 'alpha');

// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels, $object);
$ret = $extrafields->setOptionalsFromPost(null, $object);
if ($ret < 0) $error++;

// Check if we need to also synchronize user information
Expand Down Expand Up @@ -513,7 +513,7 @@
$object->public = $public;

// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels, $object);
$ret = $extrafields->setOptionalsFromPost(null, $object);
if ($ret < 0) $error++;

// Check parameters
Expand Down Expand Up @@ -1344,15 +1344,8 @@ function initfieldrequired()
else print $langs->trans("NoDolibarrAccess");
print '</td></tr>';

// Other attributes
// Other attributes. Fields from hook formObjectOptions and Extrafields.
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php';
//Hooks here
$reshook=$hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
print $hookmanager->resPrint;
if (empty($reshook))
{
print $object->showOptionals($extrafields, 'edit');
}

print '</table>';
dol_fiche_end();
Expand Down
2 changes: 1 addition & 1 deletion htdocs/adherents/cartes/carte.php
Expand Up @@ -48,7 +48,7 @@

$extrafields = new ExtraFields($db);
// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);


/*
Expand Down
2 changes: 1 addition & 1 deletion htdocs/adherents/list.php
Expand Up @@ -89,7 +89,7 @@
$extrafields = new ExtraFields($db);

// fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$search_array_options=$extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

Expand Down
6 changes: 3 additions & 3 deletions htdocs/adherents/subscription.php
Expand Up @@ -68,7 +68,7 @@
$adht = new AdherentType($db);

// fetch optionals attributes and labels
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$errmsg='';
$errmsgs=array();
Expand Down Expand Up @@ -571,7 +571,7 @@
print '<table class="nobordernopadding" width="100%"><tr><td>';
print $langs->trans("LinkedToDolibarrThirdParty");
print '</td>';
if ($action != 'editthirdparty' && $user->rights->adherent->creer) print '<td class="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editthirdparty&amp;rowid='.$object->id.'">'.img_edit($langs->trans('SetLinkToThirdParty'), 1).'</a></td>';
if ($action != 'editthirdparty' && $user->rights->adherent->creer) print '<td class="right"><a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=editthirdparty&amp;rowid='.$object->id.'">'.img_edit($langs->trans('SetLinkToThirdParty'), 1).'</a></td>';
print '</tr></table>';
print '</td><td colspan="2" class="valeur">';
if ($action == 'editthirdparty')
Expand Down Expand Up @@ -614,7 +614,7 @@
print '<td class="right">';
if ($user->rights->user->user->creer)
{
print '<a href="'.$_SERVER["PHP_SELF"].'?action=editlogin&amp;rowid='.$object->id.'">'.img_edit($langs->trans('SetLinkToUser'), 1).'</a>';
print '<a class="editfielda" href="'.$_SERVER["PHP_SELF"].'?action=editlogin&amp;rowid='.$object->id.'">'.img_edit($langs->trans('SetLinkToUser'), 1).'</a>';
}
print '</td>';
}
Expand Down
2 changes: 1 addition & 1 deletion htdocs/adherents/subscription/list.php
Expand Up @@ -68,7 +68,7 @@
$extrafields = new ExtraFields($db);

// fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$search_array_options=$extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

Expand Down
8 changes: 4 additions & 4 deletions htdocs/adherents/type.php
Expand Up @@ -73,7 +73,7 @@
$extrafields = new ExtraFields($db);

// fetch optionals attributes and labels
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers
{
Expand Down Expand Up @@ -113,7 +113,7 @@
$object->vote = (int) $vote;

// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels, $object);
$ret = $extrafields->setOptionalsFromPost(null, $object);
if ($ret < 0) $error++;

if (empty($object->label)) {
Expand Down Expand Up @@ -168,7 +168,7 @@
$object->vote = (boolean) trim($vote);

// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels, $object);
$ret = $extrafields->setOptionalsFromPost(null, $object);
if ($ret < 0) $error++;

$ret=$object->update($user);
Expand Down Expand Up @@ -713,7 +713,7 @@
print '<td class="center">';
if ($user->rights->adherent->creer)
{
print '<a href="card.php?rowid='.$objp->rowid.'&action=edit&backtopage='.urlencode($_SERVER["PHP_SELF"].'?rowid='.$object->id).'">'.img_edit().'</a>';
print '<a class="editfielda" href="card.php?rowid='.$objp->rowid.'&action=edit&backtopage='.urlencode($_SERVER["PHP_SELF"].'?rowid='.$object->id).'">'.img_edit().'</a>';
}
print '&nbsp;';
if ($user->rights->adherent->supprimer)
Expand Down
4 changes: 2 additions & 2 deletions htdocs/admin/emailcollector_card.php
Expand Up @@ -57,7 +57,7 @@
$hookmanager->initHooks(array('emailcollectorcard')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

Expand Down Expand Up @@ -378,7 +378,7 @@ function init_myfunc()
{
if ($action != 'classify')
{
$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
if ($action == 'classify') {
//$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
$morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
Expand Down
2 changes: 1 addition & 1 deletion htdocs/admin/emailcollector_list.php
Expand Up @@ -68,7 +68,7 @@
$hookmanager->initHooks(array('emailcollectorlist')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

Expand Down
2 changes: 1 addition & 1 deletion htdocs/admin/mails_senderprofile_list.php
Expand Up @@ -61,7 +61,7 @@
$hookmanager->initHooks(array('emailsenderprofilelist')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$search_array_options=$extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

Expand Down
7 changes: 2 additions & 5 deletions htdocs/asset/card.php
Expand Up @@ -45,7 +45,7 @@
$hookmanager->initHooks(array('assetcard')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$search_array_options=$extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

Expand All @@ -64,9 +64,6 @@
//if ($user->societe_id > 0) $socid = $user->societe_id;
//$result = restrictedArea($user, 'asset', $id);

// fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);

// Load object
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once.

Expand Down Expand Up @@ -207,7 +204,7 @@ function init_myfunc()
// Part to show record
if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create')))
{
$res = $object->fetch_optionals($object->id, $extralabels);
$res = $object->fetch_optionals($object->id);

$head = asset_prepare_head($object);
dol_fiche_head($head, 'card', $langs->trans("Asset"), -1, 'generic');
Expand Down
2 changes: 1 addition & 1 deletion htdocs/asset/document.php
Expand Up @@ -62,7 +62,7 @@
$hookmanager->initHooks(array('assetdocument')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

// Load object
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
Expand Down
2 changes: 1 addition & 1 deletion htdocs/asset/list.php
Expand Up @@ -62,7 +62,7 @@
$hookmanager->initHooks(array('assetlist')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

$search_array_options=$extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

Expand Down
4 changes: 2 additions & 2 deletions htdocs/asset/note.php
Expand Up @@ -43,7 +43,7 @@
$hookmanager->initHooks(array('assetnote')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

// Security check - Protection if external user
//if ($user->societe_id > 0) access_forbidden();
Expand Down Expand Up @@ -102,7 +102,7 @@
if ($user->rights->asset->creer)
{
if ($action != 'classify')
//$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
//$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
$morehtmlref.=' : ';
if ($action == 'classify') {
//$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
Expand Down
6 changes: 3 additions & 3 deletions htdocs/asset/type.php
Expand Up @@ -65,7 +65,7 @@
$extrafields = new ExtraFields($db);

// fetch optionals attributes and labels
$extralabels=$extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter', 'alpha')) // All tests are required to be compatible with all browsers
{
Expand Down Expand Up @@ -102,7 +102,7 @@
$object->note = trim($comment);

// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels, $object);
$ret = $extrafields->setOptionalsFromPost(null, $object);
if ($ret < 0) $error++;

if (empty($object->label)) {
Expand Down Expand Up @@ -155,7 +155,7 @@
$object->note = trim($comment);

// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels, $object);
$ret = $extrafields->setOptionalsFromPost(null, $object);
if ($ret < 0) $error++;

$ret=$object->update($user);
Expand Down
4 changes: 2 additions & 2 deletions htdocs/bom/bom_agenda.php
Expand Up @@ -74,7 +74,7 @@
$diroutputmassaction=$conf->bom->dir_output . '/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('bomagenda','globalcard')); // Note that conf->hooks_modules contains array
// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label('bom');
$extrafields->fetch_name_optionals_label($object->table_element);

// Load object
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
Expand Down Expand Up @@ -149,7 +149,7 @@
if ($user->rights->bom->creer)
{
if ($action != 'classify')
//$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
//$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
$morehtmlref.=' : ';
if ($action == 'classify') {
//$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
Expand Down
4 changes: 2 additions & 2 deletions htdocs/bom/bom_card.php
Expand Up @@ -48,7 +48,7 @@
$diroutputmassaction=$conf->bom->dir_output . '/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('bomcard', 'globalcard')); // Note that conf->hooks_modules contains array
// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);
$search_array_options=$extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

// Initialize array of search criterias
Expand Down Expand Up @@ -339,7 +339,7 @@ function init_myfunc()
if ($user->rights->bom->write)
{
if ($action != 'classify')
$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
if ($action == 'classify') {
//$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
$morehtmlref.='<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
Expand Down
2 changes: 1 addition & 1 deletion htdocs/bom/bom_document.php
Expand Up @@ -63,7 +63,7 @@
$diroutputmassaction=$conf->bom->dir_output . '/temp/massgeneration/'.$user->id;
$hookmanager->initHooks(array('bomdocument', 'globalcard')); // Note that conf->hooks_modules contains array
// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

// Load object
include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals
Expand Down
2 changes: 1 addition & 1 deletion htdocs/bom/bom_list.php
Expand Up @@ -62,7 +62,7 @@
$hookmanager->initHooks(array('bomlist')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element); // Load $extrafields->attributes['bom']
$extrafields->fetch_name_optionals_label($object->table_element);

$search_array_options = $extrafields->getOptionalsFromPost($object->table_element, '', 'search_');

Expand Down
4 changes: 2 additions & 2 deletions htdocs/bom/bom_note.php
Expand Up @@ -44,7 +44,7 @@
$hookmanager->initHooks(array('bomnote','globalcard')); // Note that conf->hooks_modules contains array

// Fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
$extrafields->fetch_name_optionals_label($object->table_element);

// Security check - Protection if external user
//if ($user->societe_id > 0) access_forbidden();
Expand Down Expand Up @@ -104,7 +104,7 @@
if ($user->rights->bom->creer)
{
if ($action != 'classify')
//$morehtmlref.='<a href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
//$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&amp;id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a> : ';
$morehtmlref.=' : ';
if ($action == 'classify') {
//$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1);
Expand Down
2 changes: 1 addition & 1 deletion htdocs/bom/tpl/objectline_create.tpl.php
Expand Up @@ -140,7 +140,7 @@

<?php
if (is_object($objectline)) {
print $objectline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
}
?>

Expand Down
2 changes: 1 addition & 1 deletion htdocs/bom/tpl/objectline_edit.tpl.php
Expand Up @@ -138,7 +138,7 @@

<?php
if (is_object($objectline)) {
print $objectline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
print $objectline->showOptionals($extrafields, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay), '', '', empty($conf->global->MAIN_EXTRAFIELDS_IN_ONE_TD)?0:1);
}
?>

Expand Down

0 comments on commit ec8569d

Please sign in to comment.