Merge remote-tracking branch 'Dolibarr/11.0' into 11

This commit is contained in:
Francis Appels 2020-01-13 10:02:16 +01:00
commit ec23789f66
33 changed files with 70 additions and 57 deletions

View File

@ -16,7 +16,9 @@ then
echo "This pull remote transifex files to local dir." echo "This pull remote transifex files to local dir."
echo "Note: If you pull a language file (not source), file will be skipped if local file is newer." echo "Note: If you pull a language file (not source), file will be skipped if local file is newer."
echo " Using -f will overwrite local file (does not work with 'all')." echo " Using -f will overwrite local file (does not work with 'all')."
echo "Usage: ./dev/translation/txpull.sh (all|xx_XX) [-r dolibarr.file] [-f] [-s]" echo " Using -s will force fetching of source file (avoid it, use en_US as language instead)."
echo " Using en_US as language parameter will update source language from transifex (en_US is excluded from 'all')."
echo "Usage: ./dev/translation/txpull.sh (all|en_US|xx_XX) [-r dolibarr.file] [-f] [-s]"
exit exit
fi fi

View File

@ -75,7 +75,7 @@ print '<br>';
$file_list = array('missing' => array(), 'updated' => array()); $file_list = array('missing' => array(), 'updated' => array());
// Local file to compare to // Local file to compare to
$xmlshortfile = GETPOST('xmlshortfile', 'alpha') ?GETPOST('xmlshortfile', 'alpha') : '/install/filelist-'.DOL_VERSION.(empty($conf->global->MAIN_FILECHECK_LOCAL_SUFFIX) ? '' : $conf->global->MAIN_FILECHECK_LOCAL_SUFFIX).'.xml'; $xmlshortfile = GETPOST('xmlshortfile', 'alpha') ?GETPOST('xmlshortfile', 'alpha') : '/install/filelist-'.DOL_VERSION.(empty($conf->global->MAIN_FILECHECK_LOCAL_SUFFIX) ? '' : $conf->global->MAIN_FILECHECK_LOCAL_SUFFIX).'.xml'.(empty($conf->global->MAIN_FILECHECK_LOCAL_EXT) ? '' : $conf->global->MAIN_FILECHECK_LOCAL_EXT);
$xmlfile = DOL_DOCUMENT_ROOT.$xmlshortfile; $xmlfile = DOL_DOCUMENT_ROOT.$xmlshortfile;
// Remote file to compare to // Remote file to compare to
$xmlremote = GETPOST('xmlremote'); $xmlremote = GETPOST('xmlremote');

View File

@ -73,7 +73,6 @@ AccountingCategory=Personalised groups
GroupByAccountAccounting=Group by finance account GroupByAccountAccounting=Group by finance account
AccountingAccountGroupsDesc=Here you can define some groups of financial accounts. They will be used for personalised accounting reports. AccountingAccountGroupsDesc=Here you can define some groups of financial accounts. They will be used for personalised accounting reports.
ByPersonalizedAccountGroups=By personalised groups ByPersonalizedAccountGroups=By personalised groups
ConfirmDeleteMvt=This will delete all lines of the Ledger for the year/month and/or from a specific journal (At least one criterion is required). You will have to reuse the feature 'Registration in accounting' to have the deleted record back in the ledger.
ConfirmDeleteMvtPartial=This will delete the transaction from the Ledger (all lines related to this transaction will be deleted) ConfirmDeleteMvtPartial=This will delete the transaction from the Ledger (all lines related to this transaction will be deleted)
DescJournalOnlyBindedVisible=This is a view of records that are linked to a finance account and can be posted into the Ledger. DescJournalOnlyBindedVisible=This is a view of records that are linked to a finance account and can be posted into the Ledger.
FeeAccountNotDefined=Account for fees not defined FeeAccountNotDefined=Account for fees not defined

View File

@ -6,7 +6,6 @@ SupplierProposalShort=Vendor quote
SupplierProposals=Vendor quotes SupplierProposals=Vendor quotes
SupplierProposalsShort=Vendor quotes SupplierProposalsShort=Vendor quotes
SupplierProposalRefFournNotice=Before closing as "Accepted", think of obtaining suppliers references. SupplierProposalRefFournNotice=Before closing as "Accepted", think of obtaining suppliers references.
CopyAskFrom=Create a price request by copying an existing request
ConfirmReOpenAsk=Are you sure you want to reopen the price request <b>%s</b>? ConfirmReOpenAsk=Are you sure you want to reopen the price request <b>%s</b>?
ActionsOnSupplierProposal=Actions on price request ActionsOnSupplierProposal=Actions on price request
DocModelAuroreDescription=A complete request example (logo...) DocModelAuroreDescription=A complete request example (logo...)

View File

@ -561,9 +561,9 @@ Module200Desc=LDAP directory synchronization
Module210Name=PostNuke Module210Name=PostNuke
Module210Desc=PostNuke integration Module210Desc=PostNuke integration
Module240Name=Data exports Module240Name=Data exports
Module240Desc=Tool to export Dolibarr data (with assistants) Module240Desc=Tool to export Dolibarr data (with assistance)
Module250Name=Data imports Module250Name=Data imports
Module250Desc=Tool to import data into Dolibarr (with assistants) Module250Desc=Tool to import data into Dolibarr (with assistance)
Module310Name=Members Module310Name=Members
Module310Desc=Foundation members management Module310Desc=Foundation members management
Module320Name=RSS Feed Module320Name=RSS Feed
@ -1763,7 +1763,7 @@ ListOfNotificationsPerUser=List of automatic notifications per user*
ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact** ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact**
ListOfFixedNotifications=List of automatic fixed notifications ListOfFixedNotifications=List of automatic fixed notifications
GoOntoUserCardToAddMore=Go to the tab "Notifications" of a user to add or remove notifications for users GoOntoUserCardToAddMore=Go to the tab "Notifications" of a user to add or remove notifications for users
GoOntoContactCardToAddMore=Go on the tab "Notifications" of a third party to add or remove notifications for contacts/addresses GoOntoContactCardToAddMore=Go to the tab "Notifications" of a third party to add or remove notifications for contacts/addresses
Threshold=Threshold Threshold=Threshold
BackupDumpWizard=Wizard to build the backup file BackupDumpWizard=Wizard to build the backup file
SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason: SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason:

View File

@ -79,3 +79,5 @@ InvoiceIsAlreadyValidated=Invoice is already validated
NoLinesToBill=No lines to bill NoLinesToBill=No lines to bill
CustomReceipt=Custom Receipt CustomReceipt=Custom Receipt
ReceiptName=Receipt Name ReceiptName=Receipt Name
ProductSupplements=Product Supplements
SupplementCategory=Supplement category

View File

@ -339,7 +339,7 @@ MyContacts=My contacts
Capital=Capital Capital=Capital
CapitalOf=Capital of %s CapitalOf=Capital of %s
EditCompany=Edit company EditCompany=Edit company
ThisUserIsNot=This user is not a prospect, customer nor vendor ThisUserIsNot=This user is not a prospect, customer or vendor
VATIntraCheck=Check VATIntraCheck=Check
VATIntraCheckDesc=The VAT ID must include the country prefix. The link <b>%s</b> uses the European VAT checker service (VIES) which requires internet access from the Dolibarr server. VATIntraCheckDesc=The VAT ID must include the country prefix. The link <b>%s</b> uses the European VAT checker service (VIES) which requires internet access from the Dolibarr server.
VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do

View File

@ -201,23 +201,23 @@ unitM3=Cubic meter
unitL=Liter unitL=Liter
unitT=ton unitT=ton
unitKG=kg unitKG=kg
unitG=g unitG=Gram
unitMG=mg unitMG=mg
unitLB=pound unitLB=pound
unitOZ=ounce unitOZ=ounce
unitM=m unitM=Meter
unitDM=dm unitDM=dm
unitCM=cm unitCM=cm
unitMM=mm unitMM=mm
unitFT=ft unitFT=ft
unitIN=in unitIN=in
unitM2=m² unitM2=Square meter
unitDM2=dm² unitDM2=dm²
unitCM2=cm² unitCM2=cm²
unitMM2=mm² unitMM2=mm²
unitFT2=ft² unitFT2=ft²
unitIN2=in² unitIN2=in²
unitM3=m³ unitM3=Cubic meter
unitDM3=dm³ unitDM3=dm³
unitCM3=cm³ unitCM3=cm³
unitMM3=mm³ unitMM3=mm³

View File

@ -4,8 +4,8 @@ RefReception=Ref. reception
Reception=Reception Reception=Reception
Receptions=Receptions Receptions=Receptions
AllReceptions=All Receptions AllReceptions=All Receptions
Reception=Product reception Reception=Reception
Receptions=Reception Receptions=Receptions
ShowReception=Show Receptions ShowReception=Show Receptions
ReceptionsArea=Receptions area ReceptionsArea=Receptions area
ListOfReceptions=List of receptions ListOfReceptions=List of receptions

View File

@ -216,3 +216,4 @@ StockDecrease=Stock decrease
InventoryForASpecificWarehouse=Inventory for a specific warehouse InventoryForASpecificWarehouse=Inventory for a specific warehouse
InventoryForASpecificProduct=Inventory for a specific product InventoryForASpecificProduct=Inventory for a specific product
StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use
ForceTo=Force to

View File

@ -32,7 +32,7 @@ SupplierProposalStatusValidatedShort=Validated
SupplierProposalStatusClosedShort=Closed SupplierProposalStatusClosedShort=Closed
SupplierProposalStatusSignedShort=Accepted SupplierProposalStatusSignedShort=Accepted
SupplierProposalStatusNotSignedShort=Refused SupplierProposalStatusNotSignedShort=Refused
CopyAskFrom=Create price request by copying existing a request CopyAskFrom=Create a price request by copying an existing request
CreateEmptyAsk=Create blank request CreateEmptyAsk=Create blank request
ConfirmCloneAsk=Are you sure you want to clone the price request <b>%s</b>? ConfirmCloneAsk=Are you sure you want to clone the price request <b>%s</b>?
ConfirmReOpenAsk=Are you sure you want to open back the price request <b>%s</b>? ConfirmReOpenAsk=Are you sure you want to open back the price request <b>%s</b>?

View File

@ -113,7 +113,7 @@ ReplaceString=New string
CSSContentTooltipHelp=Enter here CSS content. To avoid any conflict with the CSS of the application, be sure to prepend all declaration with the .bodywebsite class. For example:<br><br>#mycssselector, input.myclass:hover { ... }<br>must be<br>.bodywebsite #mycssselector, .bodywebsite input.myclass:hover { ... }<br><br>Note: If you have a large file without this prefix, you can use 'lessc' to convert it to append the .bodywebsite prefix everywhere. CSSContentTooltipHelp=Enter here CSS content. To avoid any conflict with the CSS of the application, be sure to prepend all declaration with the .bodywebsite class. For example:<br><br>#mycssselector, input.myclass:hover { ... }<br>must be<br>.bodywebsite #mycssselector, .bodywebsite input.myclass:hover { ... }<br><br>Note: If you have a large file without this prefix, you can use 'lessc' to convert it to append the .bodywebsite prefix everywhere.
LinkAndScriptsHereAreNotLoadedInEditor=Warning: This content is output only when site is accessed from a server. It is not used in Edit mode so if you need to load javascript files also in edit mode, just add your tag 'script src=...' into the page. LinkAndScriptsHereAreNotLoadedInEditor=Warning: This content is output only when site is accessed from a server. It is not used in Edit mode so if you need to load javascript files also in edit mode, just add your tag 'script src=...' into the page.
Dynamiccontent=Sample of a page with dynamic content Dynamiccontent=Sample of a page with dynamic content
ImportSite=Import site ImportSite=Import website
EditInLineOnOff=Mode 'Edit inline' is %s EditInLineOnOff=Mode 'Edit inline' is %s
ShowSubContainersOnOff=Mode to execute 'dynamic content' is %s ShowSubContainersOnOff=Mode to execute 'dynamic content' is %s
GlobalCSSorJS=Global CSS/JS/Header file of web site GlobalCSSorJS=Global CSS/JS/Header file of web site

View File

@ -139,7 +139,6 @@ AccountingAccountGroupsDesc=Puede definir aquí algunos grupos de cuentas contab
DeleteMvt=Eliminar líneas de libro mayor DeleteMvt=Eliminar líneas de libro mayor
DelYear=Año para borrar DelYear=Año para borrar
DelJournal=Diario para eliminar DelJournal=Diario para eliminar
ConfirmDeleteMvt=This will delete all lines of the Ledger for the year/month and/or from a specific journal (At least one criterion is required). You will have to reuse the feature 'Registration in accounting' to have the deleted record back in the ledger.
FinanceJournal=Diario de finanzas FinanceJournal=Diario de finanzas
ExpenseReportsJournal=Diario de informes de gastos ExpenseReportsJournal=Diario de informes de gastos
DescFinanceJournal=Diario financiero que incluye todos los tipos de pagos por cuenta bancaria DescFinanceJournal=Diario financiero que incluye todos los tipos de pagos por cuenta bancaria

View File

@ -39,7 +39,6 @@ LabelAccount=Descripción de la cuenta
Sens=Significado Sens=Significado
DelYear=Año a borrar DelYear=Año a borrar
DelJournal=Diario a borrar DelJournal=Diario a borrar
ConfirmDeleteMvt=This will delete all lines of the Ledger for the year/month and/or from a specific journal (At least one criterion is required). You will have to reuse the feature 'Registration in accounting' to have the deleted record back in the ledger.
DescFinanceJournal=Diario financiero incluyendo todos los tipos de pagos por cuenta bancaria DescFinanceJournal=Diario financiero incluyendo todos los tipos de pagos por cuenta bancaria
CustomerInvoicePayment=Pago de factura de cliente CustomerInvoicePayment=Pago de factura de cliente
NewAccountingMvt=Nueva transacción NewAccountingMvt=Nueva transacción

View File

@ -41,6 +41,5 @@ ACCOUNTING_SOCIAL_JOURNAL=Diario Social
ACCOUNTING_ACCOUNT_SUSPENSE=Cuenta contable de espera ACCOUNTING_ACCOUNT_SUSPENSE=Cuenta contable de espera
Sens=Significado Sens=Significado
Codejournal=Periódico Codejournal=Periódico
ConfirmDeleteMvt=This will delete all lines of the Ledger for the year/month and/or from a specific journal (At least one criterion is required). You will have to reuse the feature 'Registration in accounting' to have the deleted record back in the ledger.
FinanceJournal=Periodo Financiero FinanceJournal=Periodo Financiero
TotalMarge=Margen total de ventas TotalMarge=Margen total de ventas

View File

@ -3,7 +3,6 @@ ConfigAccountingExpert=Configuration du module de compta expert
Processing=Exécution Processing=Exécution
Lineofinvoice=Lignes de facture Lineofinvoice=Lignes de facture
Doctype=Type de document Doctype=Type de document
ConfirmDeleteMvt=This will delete all lines of the Ledger for the year/month and/or from a specific journal (At least one criterion is required). You will have to reuse the feature 'Registration in accounting' to have the deleted record back in the ledger.
ErrorDebitCredit=Débit et crédit ne peuvent pas être non-nuls en même temps ErrorDebitCredit=Débit et crédit ne peuvent pas être non-nuls en même temps
TotalMarge=Marge de ventes totale TotalMarge=Marge de ventes totale
Selectmodelcsv=Sélectionnez un modèle d'export Selectmodelcsv=Sélectionnez un modèle d'export

View File

@ -107,7 +107,6 @@ ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte comptable par défaut pour les services v
GroupByAccountAccounting=Groupe par compte comptable GroupByAccountAccounting=Groupe par compte comptable
NotMatch=Pas encore défini NotMatch=Pas encore défini
DeleteMvt=Effacer les lignes du grand livre DeleteMvt=Effacer les lignes du grand livre
ConfirmDeleteMvt=This will delete all lines of the Ledger for the year/month and/or from a specific journal (At least one criterion is required). You will have to reuse the feature 'Registration in accounting' to have the deleted record back in the ledger.
FinanceJournal=Journal des finances FinanceJournal=Journal des finances
ExpenseReportsJournal=Journal des rapports de dépenses ExpenseReportsJournal=Journal des rapports de dépenses
DescFinanceJournal=Journal de banque comprenant tous les types de règlements autres que espèce\t DescFinanceJournal=Journal de banque comprenant tous les types de règlements autres que espèce\t

View File

@ -23,7 +23,6 @@ EndProcessing=Verwerking beëindigd
Lineofinvoice=Factuur lijn Lineofinvoice=Factuur lijn
Docdate=Datum Docdate=Datum
Docref=Artikelcode Docref=Artikelcode
ConfirmDeleteMvt=This will delete all lines of the Ledger for the year/month and/or from a specific journal (At least one criterion is required). You will have to reuse the feature 'Registration in accounting' to have the deleted record back in the ledger.
TotalVente=Totaal omzet voor belastingen TotalVente=Totaal omzet voor belastingen
AccountingJournalType2=Verkoop AccountingJournalType2=Verkoop
AccountingJournalType3=Inkoop AccountingJournalType3=Inkoop

View File

@ -421,10 +421,10 @@ class WebsitePage extends CommonObject
* @param string $newlang New language * @param string $newlang New language
* @param int $istranslation 1=New page is a translation of the cloned page. * @param int $istranslation 1=New page is a translation of the cloned page.
* @param int $newwebsite 0=Same web site, >0=Id of new website * @param int $newwebsite 0=Same web site, >0=Id of new website
* @param int $keeptitleunchanged 1=Keep title unchanged * @param string $newtitle New title
* @return mixed New object created, <0 if KO * @return mixed New object created, <0 if KO
*/ */
public function createFromClone(User $user, $fromid, $newref, $newlang = '', $istranslation = 0, $newwebsite = 0, $keeptitleunchanged = 0) public function createFromClone(User $user, $fromid, $newref, $newlang = '', $istranslation = 0, $newwebsite = 0, $newtitle = '')
{ {
global $hookmanager, $langs; global $hookmanager, $langs;
@ -435,6 +435,18 @@ class WebsitePage extends CommonObject
$object = new self($this->db); $object = new self($this->db);
// Clean parameters
if (empty($newref) && ! empty($newtitle)) {
$newref=strtolower(dol_sanitizeFileName(preg_replace('/\s+/', '-', $newtitle), '-', 1));
}
// Check parameters
if (empty($newref)) {
$langs->load("errors");
$this->error=$langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("WEBSITE_TITLE"));
return -1;
}
$this->db->begin(); $this->db->begin();
// Load source object // Load source object
@ -448,7 +460,7 @@ class WebsitePage extends CommonObject
$object->aliasalt = ''; $object->aliasalt = '';
$object->fk_user_creat = $user->id; $object->fk_user_creat = $user->id;
$object->date_creation = $now; $object->date_creation = $now;
$object->title = ($keeptitleunchanged ? '' : $langs->trans("CopyOf").' ').$object->title; $object->title = ($newtitle == '1' ? $object->title : ($newtitle ? $newtitle : $object->title));
if (!empty($newlang)) $object->lang = $newlang; if (!empty($newlang)) $object->lang = $newlang;
if ($istranslation) $object->fk_page = $fromid; if ($istranslation) $object->fk_page = $fromid;
else $object->fk_page = 0; else $object->fk_page = 0;

View File

@ -1563,6 +1563,7 @@ if (($action == 'updatesource' || $action == 'updatecontent' || $action == 'conf
if ($action == 'confirm_createpagefromclone') if ($action == 'confirm_createpagefromclone')
{ {
$istranslation = (GETPOST('is_a_translation', 'aZ09') == 'on' ? 1 : 0); $istranslation = (GETPOST('is_a_translation', 'aZ09') == 'on' ? 1 : 0);
// Protection if it is a translation page
if ($istranslation) if ($istranslation)
{ {
if (GETPOST('newlang', 'aZ09') == $objectpage->lang) if (GETPOST('newlang', 'aZ09') == $objectpage->lang)
@ -1571,6 +1572,11 @@ if (($action == 'updatesource' || $action == 'updatecontent' || $action == 'conf
setEventMessages($langs->trans("LanguageMustNotBeSameThanClonedPage"), null, 'errors'); setEventMessages($langs->trans("LanguageMustNotBeSameThanClonedPage"), null, 'errors');
$action = 'preview'; $action = 'preview';
} }
if (GETPOST('newwebsite', 'int') != $object->id) {
$error++;
setEventMessages($langs->trans("WebsiteMustBeSameThanClonedPageIfTranslation"), null, 'errors');
$action = 'preview';
}
} }
if (!$error) if (!$error)
@ -1592,7 +1598,7 @@ if (($action == 'updatesource' || $action == 'updatecontent' || $action == 'conf
} }
$objectpage = new WebsitePage($db); $objectpage = new WebsitePage($db);
$resultpage = $objectpage->createFromClone($user, $pageid, GETPOST('pageurl', 'aZ09'), (GETPOST('newlang', 'aZ09') ?GETPOST('newlang', 'aZ09') : ''), $istranslation, $newwebsiteid); $resultpage = $objectpage->createFromClone($user, $pageid, GETPOST('newpageurl', 'aZ09'), (GETPOST('newlang', 'aZ09') ? GETPOST('newlang', 'aZ09') : ''), $istranslation, $newwebsiteid, GETPOST('newtitle', 'alphanohtml'));
if ($resultpage < 0) if ($resultpage < 0)
{ {
$error++; $error++;
@ -2283,10 +2289,7 @@ if (!GETPOST('hide_websitemenu'))
if ($action == 'createfromclone') { if ($action == 'createfromclone') {
// Create an array for form // Create an array for form
$formquestion = array( $formquestion = array(
array('type' => 'text', 'name' => 'siteref', 'label'=> $langs->trans("WebSite"), 'value'=> 'copy_of_'.$object->ref), array('type' => 'text', 'name' => 'siteref', 'label'=> $langs->trans("WebSite"), 'value'=> 'copy_of_'.$object->ref)
//array('type' => 'checkbox', 'name' => 'is_a_translation', 'label' => $langs->trans("SiteIsANewTranslation"), 'value' => 0),
//array('type' => 'other','name' => 'newlang','label' => $langs->trans("Language"), 'value' => $formadmin->select_language(GETPOST('newlang', 'aZ09')?GETPOST('newlang', 'aZ09'):$langs->defaultlang, 'newlang', 0, null, '', 0, 0, 'minwidth200')),
//array('type' => 'other','name' => 'newwebsite','label' => $langs->trans("WebSite"), 'value' => $formwebsite->selectWebsite($object->id, 'newwebsite', 0))
); );
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('CloneSite'), '', 'confirm_createfromclone', $formquestion, 0, 1, 200); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('CloneSite'), '', 'confirm_createfromclone', $formquestion, 0, 1, 200);
@ -2305,7 +2308,8 @@ if (!GETPOST('hide_websitemenu'))
array('type' => 'checkbox', 'tdclass'=>'maxwidth200', 'name' => 'is_a_translation', 'label' => $langs->trans("PageIsANewTranslation"), 'value' => 0), array('type' => 'checkbox', 'tdclass'=>'maxwidth200', 'name' => 'is_a_translation', 'label' => $langs->trans("PageIsANewTranslation"), 'value' => 0),
array('type' => 'other', 'name' => 'newlang', 'label' => $langs->trans("Language"), 'value' => $formadmin->select_language($preselectedlanguage, 'newlang', 0, null, 1, 0, 0, 'minwidth200', 0, 1)), array('type' => 'other', 'name' => 'newlang', 'label' => $langs->trans("Language"), 'value' => $formadmin->select_language($preselectedlanguage, 'newlang', 0, null, 1, 0, 0, 'minwidth200', 0, 1)),
array('type' => 'other', 'name' => 'newwebsite', 'label' => $langs->trans("WebSite"), 'value' => $formwebsite->selectWebsite($object->id, 'newwebsite', 0)), array('type' => 'other', 'name' => 'newwebsite', 'label' => $langs->trans("WebSite"), 'value' => $formwebsite->selectWebsite($object->id, 'newwebsite', 0)),
array('type' => 'text', 'tdclass'=>'maxwidth200 fieldrequired', 'name' => 'pageurl', 'label'=> $langs->trans("WEBSITE_PAGENAME"), 'value'=> 'copy_of_'.$objectpage->pageurl), array('type' => 'text', 'tdclass'=>'maxwidth200 fieldrequired', 'name' => 'newtitle', 'label'=> $langs->trans("WEBSITE_TITLE"), 'value'=> $langs->trans("CopyOf").' '.$objectpage->title),
array('type' => 'text', 'tdclass'=>'maxwidth200', 'name' => 'newpageurl', 'label'=> $langs->trans("WEBSITE_PAGENAME"), 'value'=> ''),
); );
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?website='.$object->ref.'&pageid='.$pageid, $langs->trans('ClonePage'), '', 'confirm_createpagefromclone', $formquestion, 0, 1, 300, 550); $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?website='.$object->ref.'&pageid='.$pageid, $langs->trans('ClonePage'), '', 'confirm_createpagefromclone', $formquestion, 0, 1, 300, 550);