Merge remote-tracking branch 'upstream/develop' into develop
This commit is contained in:
commit
804badd561
@ -85,7 +85,6 @@ class PaymentVarious extends CommonObject
|
|||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->element = 'payment_various';
|
$this->element = 'payment_various';
|
||||||
$this->table_element = 'payment_various';
|
$this->table_element = 'payment_various';
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -387,13 +386,14 @@ class PaymentVarious extends CommonObject
|
|||||||
|
|
||||||
// Insert payment into llx_bank
|
// Insert payment into llx_bank
|
||||||
// Add link 'payment_various' in bank_url between payment and bank transaction
|
// Add link 'payment_various' in bank_url between payment and bank transaction
|
||||||
if ($this->sens == '0') $sign='-';
|
$sign=1;
|
||||||
|
if ($this->sens == '0') $sign=-1;
|
||||||
|
|
||||||
$bank_line_id = $acc->addline(
|
$bank_line_id = $acc->addline(
|
||||||
$this->datep,
|
$this->datep,
|
||||||
$this->type_payment,
|
$this->type_payment,
|
||||||
$this->label,
|
$this->label,
|
||||||
$sign.abs($this->amount),
|
$sign * abs($this->amount),
|
||||||
$this->num_payment,
|
$this->num_payment,
|
||||||
'',
|
'',
|
||||||
$user
|
$user
|
||||||
@ -545,9 +545,11 @@ class PaymentVarious extends CommonObject
|
|||||||
*
|
*
|
||||||
* @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto
|
* @param int $withpicto 0=No picto, 1=Include picto into link, 2=Only picto
|
||||||
* @param string $option link option
|
* @param string $option link option
|
||||||
* @return string Chaine with URL
|
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
|
||||||
|
* @param int $notooltip 1=Disable tooltip
|
||||||
|
* @return string String with URL
|
||||||
*/
|
*/
|
||||||
function getNomUrl($withpicto=0,$option='')
|
function getNomUrl($withpicto=0, $option='', $save_lastsearch_value=-1, $notooltip=0)
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
|
|
||||||
@ -558,8 +560,8 @@ class PaymentVarious extends CommonObject
|
|||||||
$linkend='</a>';
|
$linkend='</a>';
|
||||||
|
|
||||||
$result .= $linkstart;
|
$result .= $linkstart;
|
||||||
if ($withpicto) $result.=img_object(($notooltip?'':$label), ($this->picto?$this->picto:'generic'), ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
|
if ($withpicto) $result.=img_object(($notooltip?'':$label), $this->picto, ($notooltip?(($withpicto != 2) ? 'class="paddingright"' : ''):'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip?0:1);
|
||||||
if ($withpicto != 2) $result.= ($maxlen?dol_trunc($this->ref,$maxlen):$this->ref);
|
if ($withpicto != 2) $result.= $this->ref.($option == 'reflabel' && $this->label ? ' - '.$this->label : '');
|
||||||
$result .= $linkend;
|
$result .= $linkend;
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
|
|||||||
@ -1268,7 +1268,7 @@ function dol_delete_dir($dir,$nophperrors=0)
|
|||||||
* @param int $nophperrors Disable all PHP output errors
|
* @param int $nophperrors Disable all PHP output errors
|
||||||
* @param int $onlysub Delete only files and subdir, not main directory
|
* @param int $onlysub Delete only files and subdir, not main directory
|
||||||
* @param int $countdeleted Counter to count nb of elements found really deleted
|
* @param int $countdeleted Counter to count nb of elements found really deleted
|
||||||
* @return int Number of files and directory we try to remove. NB really removed is returned into $countdeleted.
|
* @return int Number of files and directory we try to remove. NB really removed is returned into var by reference $countdeleted.
|
||||||
*/
|
*/
|
||||||
function dol_delete_dir_recursive($dir, $count=0, $nophperrors=0, $onlysub=0, &$countdeleted=0)
|
function dol_delete_dir_recursive($dir, $count=0, $nophperrors=0, $onlysub=0, &$countdeleted=0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -451,7 +451,7 @@ function pdf_build_address($outputlangs,$sourcecompany,$targetcompany='',$target
|
|||||||
// Contact on a thirdparty that is a different thirdparty than the thirdparty of object
|
// Contact on a thirdparty that is a different thirdparty than the thirdparty of object
|
||||||
if ($targetcontact->socid > 0 && $targetcontact->socid != $targetcompany->id)
|
if ($targetcontact->socid > 0 && $targetcontact->socid != $targetcompany->id)
|
||||||
{
|
{
|
||||||
$targetcontact->fetch_thirparty();
|
$targetcontact->fetch_thirdparty();
|
||||||
$companytouseforaddress = $targetcontact->thirdparty;
|
$companytouseforaddress = $targetcontact->thirdparty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -150,9 +150,11 @@ function dolWebsiteOutput($content)
|
|||||||
$nbrep=0;
|
$nbrep=0;
|
||||||
if (! $symlinktomediaexists)
|
if (! $symlinktomediaexists)
|
||||||
{
|
{
|
||||||
$content=preg_replace('/(<a[^>]*href=")[^\"]*viewimage\.php([^\"]*)modulepart=medias([^\"]*)file=([^\"]*)("[^>]*>)/', '\1'.$urlwithroot.'/viewimage.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep);
|
$content=preg_replace('/(<script[^>]*src=")[^\"]*document\.php([^\"]*)modulepart=medias([^\"]*)file=([^\"]*)("[^>]*>)/', '\document.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep);
|
||||||
$content=preg_replace('/(<img[^>]*src=")[^\"]*viewimage\.php([^\"]*)modulepart=medias([^\"]*)file=([^\"]*)("[^>]*>)/', '\1'.$urlwithroot.'/viewimage.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep);
|
|
||||||
$content=preg_replace('/(url\(["\']?)[^\)]*viewimage\.php([^\)]*)modulepart=medias([^\)]*)file=([^\)]*)(["\']?\))/', '\1'.$urlwithroot.'/viewimage.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep);
|
$content=preg_replace('/(<a[^>]*href=")[^\"]*viewimage\.php([^\"]*)modulepart=medias([^\"]*)file=([^\"]*)("[^>]*>)/', '\1/viewimage.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep);
|
||||||
|
$content=preg_replace('/(<img[^>]*src=")[^\"]*viewimage\.php([^\"]*)modulepart=medias([^\"]*)file=([^\"]*)("[^>]*>)/', '\1/viewimage.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep);
|
||||||
|
$content=preg_replace('/(url\(["\']?)[^\)]*viewimage\.php([^\)]*)modulepart=medias([^\)]*)file=([^\)]*)(["\']?\))/', '\1/viewimage.php\2modulepart=medias\3file=\4\5', $content, -1, $nbrep);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
0
htdocs/install/doctemplates/websites/index.html
Normal file
0
htdocs/install/doctemplates/websites/index.html
Normal file
Binary file not shown.
@ -485,8 +485,8 @@ if (! $error && $db->connected && $action == "set")
|
|||||||
'products' => 'product',
|
'products' => 'product',
|
||||||
'projects' => 'project',
|
'projects' => 'project',
|
||||||
'proposals' => 'proposal',
|
'proposals' => 'proposal',
|
||||||
'shipment' => 'shipment',
|
'shipments' => 'shipment',
|
||||||
'supplier_proposal' => 'supplier_proposal',
|
'supplier_proposals' => 'supplier_proposal',
|
||||||
'tasks' => 'task_summary',
|
'tasks' => 'task_summary',
|
||||||
'thirdparties' => 'thirdparty',
|
'thirdparties' => 'thirdparty',
|
||||||
'usergroups' => 'usergroups',
|
'usergroups' => 'usergroups',
|
||||||
|
|||||||
@ -18,10 +18,10 @@ HtmlHeaderPage=HTML header (specific to this page only)
|
|||||||
PageNameAliasHelp=Name or alias of the page.<br>This alias is also used to forge a SEO URL when website is ran from a Virtual host of a Web server (like Apacke, Nginx, ...). Use the button "<strong>%s</strong>" to edit this alias.
|
PageNameAliasHelp=Name or alias of the page.<br>This alias is also used to forge a SEO URL when website is ran from a Virtual host of a Web server (like Apacke, Nginx, ...). Use the button "<strong>%s</strong>" to edit this alias.
|
||||||
EditTheWebSiteForACommonHeader=Note: If you want to define a personalized header for all pages, edit the header on the site level instead of on the page/container.
|
EditTheWebSiteForACommonHeader=Note: If you want to define a personalized header for all pages, edit the header on the site level instead of on the page/container.
|
||||||
MediaFiles=Media library
|
MediaFiles=Media library
|
||||||
EditCss=Edit Style/CSS or HTML header
|
EditCss=Edit website properties
|
||||||
EditMenu=Edit menu
|
EditMenu=Edit menu
|
||||||
EditMedias=Edit medias
|
EditMedias=Edit medias
|
||||||
EditPageMeta=Edit Meta
|
EditPageMeta=Edit page/container properties
|
||||||
EditInLine=Edit inline
|
EditInLine=Edit inline
|
||||||
AddWebsite=Add website
|
AddWebsite=Add website
|
||||||
Webpage=Web page/container
|
Webpage=Web page/container
|
||||||
@ -30,6 +30,7 @@ HomePage=Home Page
|
|||||||
PageContainer=Page/container
|
PageContainer=Page/container
|
||||||
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first add a page.
|
PreviewOfSiteNotYetAvailable=Preview of your website <strong>%s</strong> not yet available. You must first add a page.
|
||||||
RequestedPageHasNoContentYet=Requested page with id %s has no content yet, or cache file .tpl.php was removed. Edit content of the page to solve this.
|
RequestedPageHasNoContentYet=Requested page with id %s has no content yet, or cache file .tpl.php was removed. Edit content of the page to solve this.
|
||||||
|
SiteDeleted=Web site '%s' deleted
|
||||||
PageContent=Page/Contenair
|
PageContent=Page/Contenair
|
||||||
PageDeleted=Page/Contenair '%s' of website %s deleted
|
PageDeleted=Page/Contenair '%s' of website %s deleted
|
||||||
PageAdded=Page/Contenair '%s' added
|
PageAdded=Page/Contenair '%s' added
|
||||||
@ -38,8 +39,8 @@ ViewPageInNewTab=View page in new tab
|
|||||||
SetAsHomePage=Set as Home page
|
SetAsHomePage=Set as Home page
|
||||||
RealURL=Real URL
|
RealURL=Real URL
|
||||||
ViewWebsiteInProduction=View web site using home URLs
|
ViewWebsiteInProduction=View web site using home URLs
|
||||||
SetHereVirtualHost=If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then enter here the virtual hostname you have created, so the preview can be done also using this dedicated web server access instead of only using Dolibarr server.
|
SetHereVirtualHost=<u>Use with Apache/NGinx/...</u><br>If you can create, on your web server (Apache, Nginx, ...), a dedicated Virtual Host with PHP enabled and a Root directory on<br><strong>%s</strong><br>then enter here the virtual hostname you have created, so the preview can be done also using this dedicated web server access instead of only using Dolibarr server.
|
||||||
YouCanAlsoTestWithPHPS=On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong>
|
YouCanAlsoTestWithPHPS=<u>Use with PHP embedded server</u><br>On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running<br><strong>php -S 0.0.0.0:8080 -t %s</strong>
|
||||||
CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong>
|
CheckVirtualHostPerms=Check also that virtual host has permission <strong>%s</strong> on files into<br><strong>%s</strong>
|
||||||
ReadPerm=Read
|
ReadPerm=Read
|
||||||
WritePerm=Write
|
WritePerm=Write
|
||||||
@ -50,7 +51,7 @@ NoPageYet=No pages yet
|
|||||||
YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template
|
YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template
|
||||||
SyntaxHelp=Help on specific syntax tips
|
SyntaxHelp=Help on specific syntax tips
|
||||||
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
|
YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor.
|
||||||
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $langs, $db, $mysoc, $user, $website.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax:<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open access), syntax is:<br><strong><a href="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>
|
YouCanEditHtmlSource=<br><span class="fa fa-bug"></span> You can include PHP code into this source using tags <strong><?php ?></strong>. The following global variables are available: $conf, $langs, $db, $mysoc, $user, $website.<br><br><span class="fa fa-bug"></span> You can also include content of another Page/Container with the following syntax:<br><strong><?php includeContainer('alias_of_container_to_include'); ?></strong><br><br><span class="fa fa-bug"></span> You can make a redirect to another Page/Container with the following syntax (Note: do not output any content before a redirect):<br><strong><?php redirectToContainer('alias_of_container_to_redirect_to'); ?></strong><br><br><span class="fa fa-download"></span> To include a <strong>link to download</strong> a file stored into the <strong>documents</strong> directory, use the <strong>document.php</strong> wrapper:<br>Example, for a file into documents/ecm (need to be logged), syntax is:<br><strong><a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext"></strong><br>For a file into documents/medias (open directory for public access), syntax is:<br><strong><a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>For a file shared with a share link (open access using the sharing hash key of file), syntax is:<br><strong><a href="/document.php?hashp=publicsharekeyoffile"></strong><br><br><span class="fa fa-picture-o"></span> To include an <strong>image</strong> stored into the <strong>documents</strong> directory, use the <strong>viewimage.php</strong> wrapper:<br>Example, for an image into documents/medias (open directory for public access), syntax is:<br><strong><img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext"></strong><br>
|
||||||
ClonePage=Clone page/container
|
ClonePage=Clone page/container
|
||||||
CloneSite=Clone site
|
CloneSite=Clone site
|
||||||
SiteAdded=Web site added
|
SiteAdded=Web site added
|
||||||
|
|||||||
@ -120,6 +120,7 @@ class MyModuleApi extends DolibarrApi
|
|||||||
$restictonsocid = 0; // Set to 1 if there is a field socid in table of object
|
$restictonsocid = 0; // Set to 1 if there is a field socid in table of object
|
||||||
|
|
||||||
// If the internal user must only see his customers, force searching by him
|
// If the internal user must only see his customers, force searching by him
|
||||||
|
$search_sale = 0;
|
||||||
if ($restictonsocid && ! DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id;
|
if ($restictonsocid && ! DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id;
|
||||||
|
|
||||||
$sql = "SELECT t.rowid";
|
$sql = "SELECT t.rowid";
|
||||||
|
|||||||
@ -484,6 +484,14 @@ class Website extends CommonObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (! $error && ! empty($this->ref))
|
||||||
|
{
|
||||||
|
global $dolibarr_main_data_root;
|
||||||
|
$pathofwebsite=$dolibarr_main_data_root.'/website/'.$this->ref;
|
||||||
|
|
||||||
|
dol_delete_dir_recursive($pathofwebsite);
|
||||||
|
}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
if ($error) {
|
if ($error) {
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
|
|||||||
@ -58,6 +58,7 @@ $type_container=GETPOST('WEBSITE_TYPE_CONTAINER', 'alpha');
|
|||||||
$section_dir = GETPOST('section_dir', 'alpha');
|
$section_dir = GETPOST('section_dir', 'alpha');
|
||||||
$file_manager = GETPOST('file_manager', 'alpha');
|
$file_manager = GETPOST('file_manager', 'alpha');
|
||||||
|
|
||||||
|
if (GETPOST('deletesite','alpha')) { $action='deletesite'; }
|
||||||
if (GETPOST('delete','alpha')) { $action='delete'; }
|
if (GETPOST('delete','alpha')) { $action='delete'; }
|
||||||
if (GETPOST('preview','alpha')) $action='preview';
|
if (GETPOST('preview','alpha')) $action='preview';
|
||||||
if (GETPOST('createsite','alpha')) { $action='createsite'; }
|
if (GETPOST('createsite','alpha')) { $action='createsite'; }
|
||||||
@ -714,6 +715,41 @@ if ($action == 'addcontainer')
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete site
|
||||||
|
if ($action == 'deletesite')
|
||||||
|
{
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
|
$db->begin();
|
||||||
|
|
||||||
|
$res = $object->fetch(0, $websitekey);
|
||||||
|
$website = $object;
|
||||||
|
|
||||||
|
if ($res > 0)
|
||||||
|
{
|
||||||
|
$res = $object->delete($user);
|
||||||
|
if ($res <= 0)
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$db->commit();
|
||||||
|
setEventMessages($langs->trans("SiteDeleted", $object->ref, $websitekey), null, 'mesgs');
|
||||||
|
|
||||||
|
header("Location: ".$_SERVER["PHP_SELF"]);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$db->rollback();
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Delete page
|
// Delete page
|
||||||
if ($action == 'delete')
|
if ($action == 'delete')
|
||||||
{
|
{
|
||||||
@ -1590,6 +1626,8 @@ if (count($object->records) > 0)
|
|||||||
print '<input type="submit" class="button nobordertransp" disabled="disabled" value="'.dol_escape_htmltag($langs->trans("ImportSite")).'" name="importsite">';
|
print '<input type="submit" class="button nobordertransp" disabled="disabled" value="'.dol_escape_htmltag($langs->trans("ImportSite")).'" name="importsite">';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
print '<input type="submit" class="buttonDelete" name="deletesite" value="'.$langs->trans("Delete").'"'.($atleastonepage?' disabled="disabled"':'').'>';
|
||||||
|
|
||||||
print ' ';
|
print ' ';
|
||||||
|
|
||||||
print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("MediaFiles")).'" name="file_manager">';
|
print '<input type="submit" class="button nobordertransp"'.$disabled.' value="'.dol_escape_htmltag($langs->trans("MediaFiles")).'" name="file_manager">';
|
||||||
@ -1635,11 +1673,11 @@ if (count($object->records) > 0)
|
|||||||
//print '<input type="submit" class="button" name="previewwebsite" target="tab'.$websitekey.'" value="'.$langs->trans("ViewSiteInNewTab").'">';
|
//print '<input type="submit" class="button" name="previewwebsite" target="tab'.$websitekey.'" value="'.$langs->trans("ViewSiteInNewTab").'">';
|
||||||
$htmltext =$langs->trans("SetHereVirtualHost", $dataroot);
|
$htmltext =$langs->trans("SetHereVirtualHost", $dataroot);
|
||||||
$htmltext.='<br>';
|
$htmltext.='<br>';
|
||||||
$htmltext.='<br>';
|
|
||||||
$htmltext.=$langs->trans("YouCanAlsoTestWithPHPS", $dataroot);
|
|
||||||
$htmltext.='<br>';
|
|
||||||
$htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("ReadPerm"), DOL_DOCUMENT_ROOT);
|
$htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("ReadPerm"), DOL_DOCUMENT_ROOT);
|
||||||
$htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("WritePerm"), DOL_DATA_ROOT);
|
$htmltext.='<br>'.$langs->trans("CheckVirtualHostPerms", $langs->transnoentitiesnoconv("WritePerm"), DOL_DATA_ROOT);
|
||||||
|
$htmltext.='<br>';
|
||||||
|
$htmltext.='<br>';
|
||||||
|
$htmltext.=$langs->trans("YouCanAlsoTestWithPHPS", $dataroot);
|
||||||
print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'helpvirtualhost');
|
print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'helpvirtualhost');
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user