mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-02-16 01:44:21 +01:00
Merge branch 'develop' into develop-2
This commit is contained in:
@@ -21,6 +21,7 @@ Following changes may create regressions for some external modules, but were nec
|
||||
* The method get_substitutionarray_shipment_lines() has been removed. Use the generic get_substitutionarray_lines() instead.
|
||||
* Recheck setup of your module workflow to see if you need to enable the new setting to have shipment set to billed automatically
|
||||
when an invoice from a shipment is validated (and if your process is to make invoice on shipment and not on order).
|
||||
* It was possible to use a variable $soc or $right inside a php code condition of some extrafields properties, this is no more true (this vars are no more defined globaly).
|
||||
|
||||
|
||||
***** ChangeLog for 18.0.1 compared to 18.0.0 *****
|
||||
|
||||
@@ -246,11 +246,11 @@ th,td {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.back1 {
|
||||
background-color: #888800;
|
||||
background-color: #884466;
|
||||
color: #FFF;
|
||||
}
|
||||
.back1 {
|
||||
background-color: #880088;
|
||||
.back2 {
|
||||
background-color: #664488;
|
||||
color: #FFF;
|
||||
}
|
||||
</style>';
|
||||
|
||||
@@ -102,7 +102,7 @@ class Availabilities extends CommonObject
|
||||
* @var array Array with all fields and their property. Do not use it as a static var. It may be modified by constructor.
|
||||
*/
|
||||
public $fields=array(
|
||||
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
||||
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
||||
'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>0, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'cssview'=>'wordbreak', 'help'=>"Help text", 'showoncombobox'=>'2', 'validate'=>'1',),
|
||||
'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>3, 'validate'=>'1',),
|
||||
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0, 'cssview'=>'wordbreak', 'validate'=>'1',),
|
||||
|
||||
@@ -300,6 +300,11 @@ class ActionComm extends CommonObject
|
||||
*/
|
||||
public $elementtype;
|
||||
|
||||
/**
|
||||
* @var int id of availability
|
||||
*/
|
||||
public $fk_bookcal_availability;
|
||||
|
||||
/**
|
||||
* @var string Ical name
|
||||
*/
|
||||
@@ -539,6 +544,7 @@ class ActionComm extends CommonObject
|
||||
$sql .= "transparency,";
|
||||
$sql .= "fk_element,";
|
||||
$sql .= "elementtype,";
|
||||
$sql .= "fk_bookcal_availability,";
|
||||
$sql .= "entity,";
|
||||
$sql .= "extraparams,";
|
||||
// Fields emails
|
||||
@@ -581,6 +587,7 @@ class ActionComm extends CommonObject
|
||||
$sql .= "'".$this->db->escape($this->transparency)."', ";
|
||||
$sql .= (!empty($this->fk_element) ? ((int) $this->fk_element) : "null").", ";
|
||||
$sql .= (!empty($this->elementtype) ? "'".$this->db->escape($this->elementtype)."'" : "null").", ";
|
||||
$sql .= (!empty($this->fk_bookcal_availability) ? "'".$this->db->escape($this->fk_bookcal_availability)."'" : "null").", ";
|
||||
$sql .= ((int) $conf->entity).",";
|
||||
$sql .= (!empty($this->extraparams) ? "'".$this->db->escape($this->extraparams)."'" : "null").", ";
|
||||
// Fields emails
|
||||
|
||||
@@ -557,6 +557,34 @@ if ($user->rights->agenda->myactions->create || $user->hasRight('agenda', 'allac
|
||||
$s = ''; $link = '';
|
||||
|
||||
$showextcals = $listofextcals;
|
||||
$bookcalcalendars = array();
|
||||
|
||||
// Load Bookcal Calendars
|
||||
if (isModEnabled("bookcal")) {
|
||||
$sql = "SELECT ba.rowid, bc.label, bc.ref, bc.rowid as id_cal";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."bookcal_availabilities as ba";
|
||||
$sql .= " JOIN ".MAIN_DB_PREFIX."bookcal_calendar as bc";
|
||||
$sql .= " ON bc.rowid = ba.fk_bookcal_calendar";
|
||||
$sql .= " WHERE bc.status = 1";
|
||||
$sql .= " AND ba.status = 1";
|
||||
if (!empty($filtert) && $filtert != -1) {
|
||||
$sql .= " AND bc.visibility = ".(int) $filtert ;
|
||||
}
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
while ($i < $num) {
|
||||
$objp = $db->fetch_object($resql);
|
||||
$label = !empty($objp->label) ? $objp->label : $objp->ref;
|
||||
$bookcalcalendars["calendars"][] = array("id" => $objp->id_cal, "label" => $label);
|
||||
$bookcalcalendars["availabilitieslink"][$objp->rowid] = $objp->id_cal;
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
dol_print_error($db);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($conf->use_javascript_ajax)) { // If javascript on
|
||||
$s .= "\n".'<!-- Div to calendars selectors -->'."\n";
|
||||
@@ -564,6 +592,11 @@ if (!empty($conf->use_javascript_ajax)) { // If javascript on
|
||||
$s .= 'jQuery(document).ready(function () {'."\n";
|
||||
$s .= 'jQuery(".check_birthday").click(function() { console.log("Toggle birthdays"); jQuery(".family_birthday").toggle(); });'."\n";
|
||||
$s .= 'jQuery(".check_holiday").click(function() { console.log("Toggle holidays"); jQuery(".family_holiday").toggle(); });'."\n";
|
||||
if (isModEnabled("bookcal")) {
|
||||
foreach ($bookcalcalendars["calendars"] as $key => $value) {
|
||||
$s .= 'jQuery(".check_bookcal_calendar_'.$value['id'].'").click(function() { console.log("Toggle Bookcal Calendar '.$value['id'].'"); jQuery(".family_bookcal_calendar_'.$value['id'].'").toggle(); });'."\n";
|
||||
}
|
||||
}
|
||||
if ($mode == "show_week" || $mode == "show_month" || empty($mode)) {
|
||||
// Code to enable drag and drop
|
||||
$s .= 'jQuery( "div.sortable" ).sortable({connectWith: ".sortable", placeholder: "ui-state-highlight", items: "div.movable", receive: function( event, ui ) {'."\n";
|
||||
@@ -631,6 +664,14 @@ if (!empty($conf->use_javascript_ajax)) { // If javascript on
|
||||
// Birthdays
|
||||
$s .= '<div class="nowrap inline-block minheight30"><input type="checkbox" id="check_birthday" name="check_birthday" class="check_birthday"><label for="check_birthday"> <span class="check_birthday_text">'.$langs->trans("AgendaShowBirthdayEvents").'</span></label> </div>';
|
||||
|
||||
// Bookcal Calendar
|
||||
if (isModEnabled("bookcal")) {
|
||||
foreach ($bookcalcalendars["calendars"] as $key => $value) {
|
||||
$label = $value['label'];
|
||||
$s .= '<div class="nowrap inline-block minheight30"><input '.(GETPOST('check_bookcal_calendar_'.$value['id']) ? "checked" : "").' type="checkbox" id="check_bookcal_calendar_'.$value['id'].'" name="check_bookcal_calendar_'.$value['id'].'" class="check_bookcal_calendar_'.$value['id'].'"><label for="check_bookcal_calendar_'.$value['id'].'"> <span class="check_bookcal_calendar_'.$value['id'].'_text">'.$langs->trans("AgendaShowBookcalCalendar", $label).'</span></label> </div>';
|
||||
}
|
||||
}
|
||||
|
||||
// Calendars from hooks
|
||||
$parameters = array();
|
||||
$reshook = $hookmanager->executeHooks('addCalendarChoice', $parameters, $object, $action);
|
||||
@@ -673,7 +714,7 @@ $sql .= ' a.datep2,';
|
||||
$sql .= ' a.percent,';
|
||||
$sql .= ' a.fk_user_author,a.fk_user_action,';
|
||||
$sql .= ' a.transparency, a.priority, a.fulldayevent, a.location,';
|
||||
$sql .= ' a.fk_soc, a.fk_contact, a.fk_project,';
|
||||
$sql .= ' a.fk_soc, a.fk_contact, a.fk_project, a.fk_bookcal_availability,';
|
||||
$sql .= ' a.fk_element, a.elementtype,';
|
||||
$sql .= ' ca.code as type_code, ca.libelle as type_label, ca.color as type_color, ca.type as type_type, ca.picto as type_picto';
|
||||
$sql .= ' FROM '.MAIN_DB_PREFIX.'c_actioncomm as ca, '.MAIN_DB_PREFIX."actioncomm as a";
|
||||
@@ -862,6 +903,10 @@ if ($resql) {
|
||||
|
||||
$event->socid = $obj->fk_soc;
|
||||
$event->contact_id = $obj->fk_contact;
|
||||
$event->fk_bookcal_availability = $obj->fk_bookcal_availability;
|
||||
if (!empty($event->fk_bookcal_availability)) {
|
||||
$event->type = "bookcal_calendar";
|
||||
}
|
||||
|
||||
// Defined date_start_in_calendar and date_end_in_calendar property
|
||||
// They are date start and end of action but modified to not be outside calendar view.
|
||||
@@ -1505,7 +1550,7 @@ if (empty($mode) || $mode == 'show_month') { // View by month
|
||||
}
|
||||
//var_dump($todayarray['mday']."==".$tmpday." && ".$todayarray['mon']."==".$month." && ".$todayarray['year']."==".$year.' -> '.$style);
|
||||
echo ' <td class="'.$style.' nowrap tdtop" width="14%">';
|
||||
show_day_events($db, $tmpday, $month, $year, $month, $style, $eventarray, $maxprint, $maxnbofchar, $newparam);
|
||||
show_day_events($db, $tmpday, $month, $year, $month, $style, $eventarray, $maxprint, $maxnbofchar, $newparam, 0, 60, 0, $bookcalcalendars);
|
||||
echo "</td>\n";
|
||||
} else {
|
||||
/* Show days after the current month (next month) */
|
||||
@@ -1578,7 +1623,7 @@ if (empty($mode) || $mode == 'show_month') { // View by month
|
||||
}
|
||||
|
||||
echo ' <td class="'.$style.'" width="14%" valign="top">';
|
||||
show_day_events($db, $tmpday, $tmpmonth, $tmpyear, $month, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300);
|
||||
show_day_events($db, $tmpday, $tmpmonth, $tmpyear, $month, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, 0, $bookcalcalendars);
|
||||
echo " </td>\n";
|
||||
}
|
||||
echo " </tr>\n";
|
||||
@@ -1668,13 +1713,13 @@ if (empty($mode) || $mode == 'show_month') { // View by month
|
||||
|
||||
echo '</div></div>';
|
||||
|
||||
show_day_events($db, $day, $month, $year, $month, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, 1);
|
||||
show_day_events($db, $day, $month, $year, $month, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, 1, $bookcalcalendars);
|
||||
|
||||
print '</div>';
|
||||
} else {
|
||||
print '<div class="div-table-responsive-no-min borderbottom">'; // You can use div-table-responsive-no-min if you dont need reserved height for your table
|
||||
|
||||
show_day_events($db, $day, $month, $year, $month, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, 0);
|
||||
show_day_events($db, $day, $month, $year, $month, $style, $eventarray, 0, $maxnbofchar, $newparam, 1, 300, 0, $bookcalcalendars);
|
||||
|
||||
print '</div>';
|
||||
}
|
||||
@@ -1703,9 +1748,10 @@ $db->close();
|
||||
* @param int $showinfo Add extended information (used by day and week view)
|
||||
* @param int $minheight Minimum height for each event. 60px by default.
|
||||
* @param string $nonew 0=Add "new entry button", 1=No "new entry button", -1=Only "new entry button"
|
||||
* @param string $bookcalcalendarsarray Used for Bookcal module array of calendar of bookcal
|
||||
* @return void
|
||||
*/
|
||||
function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventarray, $maxprint = 0, $maxnbofchar = 16, $newparam = '', $showinfo = 0, $minheight = 60, $nonew = 0)
|
||||
function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventarray, $maxprint = 0, $maxnbofchar = 16, $newparam = '', $showinfo = 0, $minheight = 60, $nonew = 0, $bookcalcalendarsarray = array())
|
||||
{
|
||||
global $user, $conf, $langs;
|
||||
global $action, $mode, $filter, $filtert, $status, $actioncode, $usergroup; // Filters used into search form
|
||||
@@ -1817,6 +1863,11 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
|
||||
$colorindex = 2;
|
||||
$cssclass = 'family_birthday ';
|
||||
$color = sprintf("%02x%02x%02x", $theme_datacolor[$colorindex][0], $theme_datacolor[$colorindex][1], $theme_datacolor[$colorindex][2]);
|
||||
} elseif ($event->type == 'bookcal_calendar') {
|
||||
$numbirthday++;
|
||||
$colorindex = 3;
|
||||
$cssclass = 'family_bookcal_calendar_'.(!empty($bookcalcalendarsarray[$fk_bookcal_availability]) ? $bookcalcalendarsarray[$fk_bookcal_availability][$event->fk_bookcal_availability] : "");
|
||||
$color = sprintf("%02x%02x%02x", $theme_datacolor[$colorindex][0], $theme_datacolor[$colorindex][1], $theme_datacolor[$colorindex][2]);
|
||||
} else {
|
||||
$numother++;
|
||||
$color = ($event->icalcolor ? $event->icalcolor : -1);
|
||||
@@ -1904,6 +1955,9 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
|
||||
if ($event->type == 'holiday' && !GETPOST('check_holiday')) {
|
||||
$morecss = 'hidden';
|
||||
}
|
||||
if ($event->type == 'bookcal_calendar' && !GETPOST('check_bookcal_calendar_'.$bookcalcalendarsarray["availabilitieslink"][$event->fk_bookcal_availability])) {
|
||||
$morecss = 'hidden';
|
||||
}
|
||||
if ($morecss != 'hidden') {
|
||||
$itoshow++;
|
||||
}
|
||||
@@ -1911,8 +1965,11 @@ function show_day_events($db, $day, $month, $year, $monthshown, $style, &$eventa
|
||||
$ireallyshown++;
|
||||
}
|
||||
//var_dump($event->type.' - '.$morecss.' - '.$cssclass.' - '.$i.' - '.$ireallyshown.' - '.$itoshow);
|
||||
|
||||
print '<div id="event_'.$ymd.'_'.$i.'" class="event family_'.$event->type.' '.$cssclass.($morecss ? ' '.$morecss : '').'"';
|
||||
if (isModEnabled("bookcal") && $event->type == 'bookcal_calendar') {
|
||||
print '<div id="event_'.$ymd.'_'.$i.'" class="event family_'.$event->type.'_'.$bookcalcalendarsarray["availabilitieslink"][$event->fk_bookcal_availability].' '.$cssclass.($morecss ? ' '.$morecss : '').'"';
|
||||
} else {
|
||||
print '<div id="event_'.$ymd.'_'.$i.'" class="event family_'.$event->type.' '.$cssclass.($morecss ? ' '.$morecss : '').'"';
|
||||
}
|
||||
//print ' style="height: 100px;';
|
||||
//print ' position: absolute; top: 40px; width: 50%;';
|
||||
//print '"';
|
||||
|
||||
@@ -87,6 +87,10 @@ class BonPrelevement extends CommonObject
|
||||
*/
|
||||
public $file;
|
||||
|
||||
/*
|
||||
* @var string filename
|
||||
*/
|
||||
public $filename;
|
||||
|
||||
const STATUS_DRAFT = 0;
|
||||
const STATUS_TRANSFERED = 1;
|
||||
@@ -891,9 +895,11 @@ class BonPrelevement extends CommonObject
|
||||
$factures_errors = array();
|
||||
|
||||
if (!$error) {
|
||||
dol_syslog(__METHOD__." Read invoices for did=".((int) $did), LOG_DEBUG);
|
||||
|
||||
$sql = "SELECT f.rowid, pd.rowid as pfdrowid, f.fk_soc";
|
||||
$sql .= ", pfd.code_banque, pfd.code_guichet, pfd.number, pfd.cle_rib";
|
||||
$sql .= ", pfd.amount";
|
||||
$sql .= ", pd.code_banque, pd.code_guichet, pd.number, pd.cle_rib";
|
||||
$sql .= ", pd.amount";
|
||||
$sql .= ", s.nom as name";
|
||||
$sql .= ", f.ref, sr.bic, sr.iban_prefix, sr.frstrecur";
|
||||
if ($type != 'bank-transfer') {
|
||||
@@ -915,7 +921,6 @@ class BonPrelevement extends CommonObject
|
||||
if ($did > 0) {
|
||||
$sql .= " AND pd.rowid = ".((int) $did);
|
||||
}
|
||||
dol_syslog(__METHOD__." Read invoices,", LOG_DEBUG);
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
@@ -937,7 +942,9 @@ class BonPrelevement extends CommonObject
|
||||
dol_syslog(__METHOD__." Read invoices, ".$i." invoices to withdraw", LOG_DEBUG);
|
||||
} else {
|
||||
$error++;
|
||||
dol_syslog(__METHOD__." Read invoices error ".$this->db->error(), LOG_ERR);
|
||||
$this->error = $this->db->lasterror();
|
||||
dol_syslog(__METHOD__." Read invoices error ".$this->db->lasterror(), LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -961,7 +968,7 @@ class BonPrelevement extends CommonObject
|
||||
if ($resfetch >= 0) { // Field 0 of $fac is rowid of invoice
|
||||
*/
|
||||
|
||||
// Check if $fac[8] s.nom is null
|
||||
// Check if $fac[8] s.nom is null
|
||||
if ($fac[8] != null) {
|
||||
//$bac = new CompanyBankAccount($this->db);
|
||||
//$bac->fetch(0, $soc->id);
|
||||
|
||||
@@ -128,6 +128,7 @@ if (empty($reshook)) {
|
||||
if (!$error) {
|
||||
// getDolGlobalString('PRELEVEMENT_CODE_BANQUE') and getDolGlobalString('PRELEVEMENT_CODE_GUICHET') should be empty (we don't use them anymore)
|
||||
$result = $bprev->create(getDolGlobalString('PRELEVEMENT_CODE_BANQUE'), getDolGlobalString('PRELEVEMENT_CODE_GUICHET'), $mode, $format, $executiondate, 0, $type);
|
||||
|
||||
if ($result < 0) {
|
||||
setEventMessages($bprev->error, $bprev->errors, 'errors');
|
||||
} elseif ($result == 0) {
|
||||
|
||||
@@ -191,7 +191,7 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes' && !empty($permissionto
|
||||
}
|
||||
} elseif ($action == 'confirm_updateline' && GETPOST('save', 'alpha') && GETPOST('link', 'alpha') && !empty($permissiontoadd)) {
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php';
|
||||
$langs->load('link');
|
||||
|
||||
$link = new Link($db);
|
||||
$f = $link->fetch(GETPOST('linkid', 'int'));
|
||||
if ($f) {
|
||||
|
||||
@@ -80,11 +80,11 @@ if ($action == 'verifyavailability') {
|
||||
}
|
||||
if (!$error) {
|
||||
$datetocheckbooking_end = dol_time_plus_duree($datetocheckbooking, 1, 'd');
|
||||
$sql = "SELECT b.start, b.rowid";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."bookcal_booking as b";
|
||||
$sql = "SELECT b.datep, b.id";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."actioncomm as b";
|
||||
$sql .= " WHERE fk_bookcal_availability = ".((int) $idavailability);
|
||||
$sql .= " AND b.start >= '".$db->idate($datetocheckbooking)."'";
|
||||
$sql .= " AND b.start < '".$db->idate($datetocheckbooking_end)."'";
|
||||
$sql .= " AND b.datep >= '".$db->idate($datetocheckbooking)."'";
|
||||
$sql .= " AND b.datep < '".$db->idate($datetocheckbooking_end)."'";
|
||||
|
||||
$resql = $db->query($sql);
|
||||
if ($resql) {
|
||||
@@ -94,7 +94,7 @@ if ($action == 'verifyavailability') {
|
||||
$response["content"] = array();
|
||||
while ($i < $num) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
$dateobject = $obj->start;
|
||||
$dateobject = $obj->datep;
|
||||
$dateobject = explode(" ", $dateobject)[1];
|
||||
$dateobject = explode(":", $dateobject);
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ class box_scheduled_jobs extends ModeleBoxes
|
||||
while ($i < $num) {
|
||||
$objp = $this->db->fetch_object($result);
|
||||
|
||||
if (dol_eval($objp->test, 1, 1, '')) {
|
||||
if (dol_eval($objp->test, 1, 1, '2')) {
|
||||
$nextrun = $this->db->jdate($objp->datenextrun);
|
||||
if (empty($nextrun)) {
|
||||
$nextrun = $this->db->jdate($objp->datestart);
|
||||
|
||||
@@ -150,6 +150,8 @@ abstract class CommonDocGenerator
|
||||
*/
|
||||
public $result;
|
||||
|
||||
public $posxlabel;
|
||||
public $posxup;
|
||||
public $posxref;
|
||||
public $posxpicture; // For picture
|
||||
public $posxdesc; // For description
|
||||
|
||||
@@ -6165,7 +6165,7 @@ abstract class CommonObject
|
||||
if (empty($conf->disable_compute)) {
|
||||
global $objectoffield; // We set a global variable to $objectoffield so
|
||||
$objectoffield = $this; // we can use it inside computed formula
|
||||
$this->array_options['options_' . $key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0, '');
|
||||
$this->array_options['options_' . $key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0, '2');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6294,8 +6294,8 @@ abstract class CommonObject
|
||||
|
||||
if (!empty($attrfieldcomputed)) {
|
||||
if (!empty($conf->global->MAIN_STORE_COMPUTED_EXTRAFIELDS)) {
|
||||
$value = dol_eval($attrfieldcomputed, 1, 0, '');
|
||||
dol_syslog($langs->trans("Extrafieldcomputed")." sur ".$attributeLabel."(".$value.")", LOG_DEBUG);
|
||||
$value = dol_eval($attrfieldcomputed, 1, 0, '2');
|
||||
dol_syslog($langs->trans("Extrafieldcomputed")." on ".$attributeLabel."(".$value.")", LOG_DEBUG);
|
||||
$new_array_options[$key] = $value;
|
||||
} else {
|
||||
$new_array_options[$key] = null;
|
||||
@@ -6675,7 +6675,7 @@ abstract class CommonObject
|
||||
|
||||
if (!empty($attrfieldcomputed)) {
|
||||
if (!empty($conf->global->MAIN_STORE_COMPUTED_EXTRAFIELDS)) {
|
||||
$value = dol_eval($attrfieldcomputed, 1, 0, '');
|
||||
$value = dol_eval($attrfieldcomputed, 1, 0, '2');
|
||||
dol_syslog($langs->trans("Extrafieldcomputed")." sur ".$attributeLabel."(".$value.")", LOG_DEBUG);
|
||||
$this->array_options["options_".$key] = $value;
|
||||
} else {
|
||||
@@ -7597,7 +7597,7 @@ abstract class CommonObject
|
||||
if ($computed) {
|
||||
// Make the eval of compute string
|
||||
//var_dump($computed);
|
||||
$value = dol_eval($computed, 1, 0, '');
|
||||
$value = dol_eval($computed, 1, 0, '2');
|
||||
}
|
||||
|
||||
if (empty($morecss)) {
|
||||
|
||||
@@ -188,15 +188,13 @@ class FormContract
|
||||
* @param int $showempty Show empty line
|
||||
* @param int $showRef Show customer and supplier reference on each contract (when found)
|
||||
* @param int $noouput 1=Return the output instead of display
|
||||
* @return int Nbr of project if OK, <0 if KO
|
||||
* @return string|void html string
|
||||
*/
|
||||
public function formSelectContract($page, $socid = -1, $selected = '', $htmlname = 'contrattid', $maxlength = 16, $showempty = 1, $showRef = 0, $noouput = 0)
|
||||
{
|
||||
global $langs;
|
||||
|
||||
$ret = '';
|
||||
|
||||
$ret .= '<form method="post" action="'.$page.'">';
|
||||
$ret = '<form method="post" action="'.$page.'">';
|
||||
$ret .= '<input type="hidden" name="action" value="setcontract">';
|
||||
$ret .= '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
$ret .= $this->select_contract($socid, $selected, $htmlname, $maxlength, $showempty, $showRef, 1);
|
||||
@@ -208,7 +206,5 @@ class FormContract
|
||||
}
|
||||
|
||||
print $ret;
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,6 +52,11 @@ class RssParser
|
||||
private $_rssarray = array();
|
||||
|
||||
private $current_namespace;
|
||||
public $items = array();
|
||||
public $current_item = array();
|
||||
public $channel = array();
|
||||
public $textinput = array();
|
||||
public $image = array();
|
||||
|
||||
private $initem;
|
||||
private $intextinput;
|
||||
|
||||
@@ -869,7 +869,7 @@ function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatel
|
||||
|
||||
// Ref
|
||||
print '<td class="nowraponall">';
|
||||
print $projecttmp->getNomUrl(1);
|
||||
print $projecttmp->getNomUrl(1, '', 0, '', '-', 0, 1, '', 'project:'.$_SERVER["PHP_SELF"].'?socid=__SOCID__');
|
||||
print '</td>';
|
||||
|
||||
// Label
|
||||
|
||||
@@ -1885,7 +1885,7 @@ function dol_add_file_process($upload_dir, $allowoverwrite = 0, $donotupdatesess
|
||||
$linkObject->objectid = GETPOST('objectid', 'int');
|
||||
$linkObject->label = GETPOST('label', 'alpha');
|
||||
$res = $linkObject->create($user);
|
||||
$langs->load('link');
|
||||
|
||||
if ($res > 0) {
|
||||
setEventMessages($langs->trans("LinkComplete"), null, 'mesgs');
|
||||
} else {
|
||||
|
||||
@@ -274,6 +274,9 @@ function getEntity($element, $shared = 1, $currentobject = null)
|
||||
|
||||
// fix different element names (France to English)
|
||||
switch ($element) {
|
||||
case 'projet':
|
||||
$element = 'project';
|
||||
break;
|
||||
case 'contrat':
|
||||
$element = 'contract';
|
||||
break; // "/contrat/class/contrat.class.php"
|
||||
@@ -7561,6 +7564,7 @@ function dol_html_entity_decode($a, $b, $c = 'UTF-8', $keepsomeentities = 0)
|
||||
* @param string $encoding Encoding page code
|
||||
* @param bool $double_encode When double_encode is turned off, PHP will not encode existing html entities
|
||||
* @return string $ret Encoded string
|
||||
* @see dol_htmlentitiesbr()
|
||||
*/
|
||||
function dol_htmlentities($string, $flags = ENT_QUOTES|ENT_SUBSTITUTE, $encoding = 'UTF-8', $double_encode = false)
|
||||
{
|
||||
@@ -9141,6 +9145,33 @@ function dol_getIdFromCode($db, $key, $tablename, $fieldkey = 'code', $fieldid =
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a variable with name $var start with $text.
|
||||
* Can be used to forge dol_eval() conditions.
|
||||
*
|
||||
* @param $var string Variable
|
||||
* @param $regextext string Text that must be a valid regex string
|
||||
* @param $matchrule int 1=Test if start with, 0=Test if equal
|
||||
* @return boolean|string True or False, text if bad use.
|
||||
*/
|
||||
function isStringVarMatching($var, $regextext, $matchrule = 1)
|
||||
{
|
||||
if ($matchrule == 1) {
|
||||
if ($var == 'mainmenu') {
|
||||
global $mainmenu;
|
||||
return (preg_match('/^'.$regextext.'/', $mainmenu));
|
||||
} elseif ($var == 'leftmenu') {
|
||||
global $leftmenu;
|
||||
return (preg_match('/^'.$regextext.'/', $leftmenu));
|
||||
} else {
|
||||
return 'This variable is not accessible with dol_eval';
|
||||
}
|
||||
} else {
|
||||
return 'This value for matchrule is not implemented';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Verify if condition in string is ok or not
|
||||
*
|
||||
@@ -9149,15 +9180,15 @@ function dol_getIdFromCode($db, $key, $tablename, $fieldkey = 'code', $fieldid =
|
||||
*/
|
||||
function verifCond($strToEvaluate)
|
||||
{
|
||||
global $user, $conf, $langs;
|
||||
global $conf; // Read of const is done with getDolGlobalString() but we need $conf->currency for example
|
||||
global $user, $langs;
|
||||
global $leftmenu;
|
||||
global $rights; // To export to dol_eval function
|
||||
|
||||
//print $strToEvaluate."<br>\n";
|
||||
$rights = true;
|
||||
if (isset($strToEvaluate) && $strToEvaluate !== '') {
|
||||
//var_dump($strToEvaluate);
|
||||
$rep = dol_eval($strToEvaluate, 1, 1, '1'); // The dol_eval must contains all the global $xxx for all variables $xxx found into the string condition
|
||||
$rep = dol_eval($strToEvaluate, 1, 1, '1'); // The dol_eval() must contains all the "global $xxx;" for all variables $xxx found into the string condition
|
||||
$rights = $rep && (!is_string($rep) || strpos($rep, 'Bad string syntax to evaluate') === false);
|
||||
//var_dump($rights);
|
||||
}
|
||||
@@ -9171,29 +9202,36 @@ function verifCond($strToEvaluate)
|
||||
* @param string $s String to evaluate
|
||||
* @param int $returnvalue 0=No return (used to execute eval($a=something)). 1=Value of eval is returned (used to eval($something)).
|
||||
* @param int $hideerrors 1=Hide errors
|
||||
* @param string $onlysimplestring '0' (used for computed property of extrafields)=Accept all chars, '1' (most common use)=Accept only simple string with char 'a-z0-9\s^$_+-.*>&|=!?():"\',/@';', '2' (rarely used)=Accept also '[]'
|
||||
* @param string $onlysimplestring '0' (deprecated, used for computed property of extrafields)=Accept all chars,
|
||||
* '1' (most common use)=Accept only simple string with char 'a-z0-9\s^$_+-.*>&|=!?():"\',/@';',
|
||||
* '2' (rarely used)=Accept also '[]'
|
||||
* @return mixed Nothing or return result of eval
|
||||
* @see verifCond()
|
||||
*/
|
||||
function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1')
|
||||
{
|
||||
// Only global variables can be changed by eval function and returned to caller
|
||||
global $db, $langs, $user, $conf, $website, $websitepage;
|
||||
// Only this global variables can be read by eval function and returned to caller
|
||||
global $conf; // Read of const is done with getDolGlobalString() but we need $conf->currency for example
|
||||
global $db, $langs, $user, $website, $websitepage;
|
||||
global $action, $mainmenu, $leftmenu;
|
||||
global $mysoc;
|
||||
global $objectoffield;
|
||||
global $objectoffield; // To allow the use of $objectoffield in computed fields
|
||||
|
||||
// Old variables used
|
||||
global $rights;
|
||||
global $object;
|
||||
global $obj; // To get $obj used into list when dol_eval is used for computed fields and $obj is not yet $object
|
||||
global $soc; // For backward compatibility
|
||||
global $obj; // To get $obj used into list when dol_eval() is used for computed fields and $obj is not yet $object
|
||||
//global $rights;
|
||||
//global $soc; // For backward compatibility
|
||||
|
||||
if (!in_array($onlysimplestring, array('0', '1', '2'))) {
|
||||
return "Bad call of dol_eval. Parameter onlysimplestring must be '0' (deprecated), '1' or '2'";
|
||||
}
|
||||
|
||||
try {
|
||||
// Test on dangerous char (used for RCE), we allow only characters to make PHP variable testing
|
||||
if ($onlysimplestring == '1') {
|
||||
// We must accept: '1 && getDolGlobalInt("doesnotexist1") && $conf->global->MAIN_FEATURES_LEVEL'
|
||||
// We must accept: '$conf->barcode->enabled || preg_match(\'/^AAA/\',$leftmenu)'
|
||||
// We must accept: '$user->rights->cabinetmed->read && !$object->canvas=="patient@cabinetmed"'
|
||||
// We must accept: '1 && getDolGlobalInt("doesnotexist1") && getDolGlobalString("MAIN_FEATURES_LEVEL")'
|
||||
// We must accept: '$user->hasRight("cabinetmed", "read") && !$object->canvas=="patient@cabinetmed"'
|
||||
if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-.*>&|=!?():"\',/@', '/').']/i', $s)) {
|
||||
if ($returnvalue) {
|
||||
return 'Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s;
|
||||
@@ -9201,10 +9239,21 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
|
||||
dol_syslog('Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s);
|
||||
return '';
|
||||
}
|
||||
// TODO
|
||||
// We can exclude all parenthesis ( that are not '($db' and 'getDolGlobalInt(' and 'getDolGlobalString(' and 'preg_match(' and 'isModEnabled('
|
||||
// ...
|
||||
}
|
||||
$scheck = preg_replace('/->[a-zA-Z0-9_]+\(/', '->__METHOD__', $s);
|
||||
$scheck = preg_replace('/\s[a-zA-Z0-9_]+\(/', ' __FUNCTION__', $scheck);
|
||||
$scheck = preg_replace('/(\^|\')\(/', '__REGEXSTART__', $scheck); // To allow preg_match('/^(aaa|bbb)/'... or isStringVarMatching('leftmenu', '(aaa|bbb)')
|
||||
//print 'scheck='.$scheck." : ".strpos($scheck, '(')."\n";
|
||||
if (strpos($scheck, '(') !== false) {
|
||||
if ($returnvalue) {
|
||||
return 'Bad string syntax to evaluate (found call of a function or method without using direct name): '.$s;
|
||||
} else {
|
||||
dol_syslog('Bad string syntax to evaluate (found call of a function or method without using direct name): '.$s);
|
||||
return '';
|
||||
}
|
||||
}
|
||||
// TODO
|
||||
// We can exclude $ char that are not: $db, $langs, $leftmenu, $topmenu, $user, $langs, $objectoffield, $object...,
|
||||
} elseif ($onlysimplestring == '2') {
|
||||
// We must accept: (($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : "Parent project not found"
|
||||
if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-.*>&|=!?():"\',/@[]', '/').']/i', $s)) {
|
||||
@@ -9214,10 +9263,17 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
|
||||
dol_syslog('Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s);
|
||||
return '';
|
||||
}
|
||||
// TODO
|
||||
// We can exclude all parenthesis ( that are not '($db' and 'getDolGlobalInt(' and 'getDolGlobalString(' and 'preg_match(' and 'isModEnabled('
|
||||
// ...
|
||||
}
|
||||
if (strpos($scheck, '(') !== false) {
|
||||
if ($returnvalue) {
|
||||
return 'Bad string syntax to evaluate (found call of a function or method without using direct name): '.$s;
|
||||
} else {
|
||||
dol_syslog('Bad string syntax to evaluate (found call of a function or method without using direct name): '.$s);
|
||||
return '';
|
||||
}
|
||||
}
|
||||
// TODO
|
||||
// We can exclude $ char that are not: $db, $leftmenu, $topmenu, $user, $langs, $object...,
|
||||
}
|
||||
if (is_array($s) || $s === 'Array') {
|
||||
return 'Bad string syntax to evaluate (value is Array) '.var_export($s, true);
|
||||
@@ -9251,8 +9307,11 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1'
|
||||
$forbiddenphpstrings = array('$$');
|
||||
$forbiddenphpstrings = array_merge($forbiddenphpstrings, array('_ENV', '_SESSION', '_COOKIE', '_GET', '_POST', '_REQUEST'));
|
||||
|
||||
$forbiddenphpfunctions = array("exec", "passthru", "shell_exec", "system", "proc_open", "popen", "eval", "dol_eval", "executeCLI", "verifCond", "base64_decode");
|
||||
$forbiddenphpfunctions = array("exec", "passthru", "shell_exec", "system", "proc_open", "popen", "eval");
|
||||
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("dol_eval", "executeCLI", "verifCond")); // native dolibarr functions
|
||||
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("base64_decode", "rawurldecode", "urldecode")); // decode string functions
|
||||
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("fopen", "file_put_contents", "fputs", "fputscsv", "fwrite", "fpassthru", "require", "include", "mkdir", "rmdir", "symlink", "touch", "unlink", "umask"));
|
||||
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("get_defined_functions", "get_defined_vars", "get_defined_constants", "get_declared_classes"));
|
||||
$forbiddenphpfunctions = array_merge($forbiddenphpfunctions, array("function", "call_user_func"));
|
||||
|
||||
$forbiddenphpregex = 'global\s+\$|\b('.implode('|', $forbiddenphpfunctions).')\b';
|
||||
|
||||
@@ -448,7 +448,34 @@ function dolGetListOfObjectClasses($destdir)
|
||||
|
||||
return -1;
|
||||
}
|
||||
/**
|
||||
* function for check if comment begin an end exist in modMyModule class
|
||||
* @param string $file filename or path
|
||||
* @param int $number 0 = For Menus,1 = For permissions, 2 = For Dictionaries
|
||||
* @return int 1 if OK , -1 if KO
|
||||
*/
|
||||
function checkExistComment($file, $number)
|
||||
{
|
||||
|
||||
if (!file_exists($file)) {
|
||||
return -1;
|
||||
}
|
||||
$content = file_get_contents($file);
|
||||
if ($number === 0) {
|
||||
if (strpos($content, '/* BEGIN MODULEBUILDER LEFTMENU MYOBJECT */') !== false && strpos($content, '/* END MODULEBUILDER LEFTMENU MYOBJECT */') !== false) {
|
||||
return 1;
|
||||
}
|
||||
} elseif ($number === 1) {
|
||||
if (strpos($content, '/* BEGIN MODULEBUILDER PERMISSIONS */') !== false && strpos($content, '/* END MODULEBUILDER PERMISSIONS */') !== false) {
|
||||
return 1;
|
||||
}
|
||||
} elseif ($number == 2) {
|
||||
if (strpos($content, '/* BEGIN MODULEBUILDER DICTIONARIES */') !== false && strpos($content, '/* END MODULEBUILDER DICTIONARIES */') !== false) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
/**
|
||||
* Delete all permissions
|
||||
*
|
||||
@@ -1290,3 +1317,31 @@ function writeApiUrlsInDoc($file_api, $file_doc)
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* count directories or files in modulebuilder folder
|
||||
* @param string $path path of directory
|
||||
* @param int $type type of file 1= file,2=directory
|
||||
* @return int|bool
|
||||
*/
|
||||
function countItemsInDirectory($path, $type = 1)
|
||||
{
|
||||
if (!is_dir($path)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$allFilesAndDirs = scandir($path);
|
||||
$count = 0;
|
||||
|
||||
foreach ($allFilesAndDirs as $item) {
|
||||
if ($item != '.' && $item != '..') {
|
||||
if ($type == 1 && is_file($path . DIRECTORY_SEPARATOR . $item) && strpos($item, '.back') === false) {
|
||||
$count++;
|
||||
} elseif ($type == 2 && is_dir($path . DIRECTORY_SEPARATOR . $item)) {
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $count;
|
||||
}
|
||||
|
||||
@@ -371,7 +371,7 @@ function restrictedArea(User $user, $features, $object = 0, $tableandshare = '',
|
||||
//dol_syslog("functions.lib:restrictedArea $feature, $objectid, $dbtablename, $feature2, $dbt_socfield, $dbt_select, $isdraft");
|
||||
/*print "user_id=".$user->id.", features=".$features.", feature2=".$feature2.", objectid=".$objectid;
|
||||
print ", dbtablename=".$tableandshare.", dbt_socfield=".$dbt_keyfield.", dbt_select=".$dbt_select;
|
||||
print ", perm: user->right->".$features.($feature2 ? "->".$feature2 : "")."=".($user->hasRight($features, $feature2, 'lire'))."<br>";
|
||||
print ", perm: user->hasRight(".$features.($feature2 ? ",".$feature2 : "").", lire) = ".($feature2 ? $user->hasRight($features, $feature2, 'lire') : $user->hasRight($features, 'lire'))."<br>";
|
||||
*/
|
||||
|
||||
$parentfortableentity = '';
|
||||
@@ -389,6 +389,10 @@ function restrictedArea(User $user, $features, $object = 0, $tableandshare = '',
|
||||
if ($features == 'facturerec') {
|
||||
$features = 'facture';
|
||||
}
|
||||
if ($features == 'supplier_invoicerec') {
|
||||
$features = 'fournisseur';
|
||||
$feature2 = 'facture';
|
||||
}
|
||||
if ($features == 'mo') {
|
||||
$features = 'mrp';
|
||||
}
|
||||
@@ -430,19 +434,21 @@ function restrictedArea(User $user, $features, $object = 0, $tableandshare = '',
|
||||
|
||||
// Get more permissions checks from hooks
|
||||
$parameters = array('features'=>$features, 'originalfeatures'=>$originalfeatures, 'objectid'=>$objectid, 'dbt_select'=>$dbt_select, 'idtype'=>$dbt_select, 'isdraft'=>$isdraft);
|
||||
$reshook = $hookmanager->executeHooks('restrictedArea', $parameters);
|
||||
if (!empty($hookmanager)) {
|
||||
$reshook = $hookmanager->executeHooks('restrictedArea', $parameters);
|
||||
|
||||
if (isset($hookmanager->resArray['result'])) {
|
||||
if ($hookmanager->resArray['result'] == 0) {
|
||||
if ($mode) {
|
||||
return 0;
|
||||
} else {
|
||||
accessforbidden(); // Module returns 0, so access forbidden
|
||||
if (isset($hookmanager->resArray['result'])) {
|
||||
if ($hookmanager->resArray['result'] == 0) {
|
||||
if ($mode) {
|
||||
return 0;
|
||||
} else {
|
||||
accessforbidden(); // Module returns 0, so access forbidden
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($reshook > 0) { // No other test done.
|
||||
return 1;
|
||||
if ($reshook > 0) { // No other test done.
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Features/modules to check
|
||||
|
||||
@@ -76,6 +76,9 @@ function dolStripPhpCode($str, $replacewith = '')
|
||||
function dolKeepOnlyPhpCode($str)
|
||||
{
|
||||
$str = str_replace('<?=', '<?php', $str);
|
||||
$str = str_replace('<?php', '__LTINTPHP__', $str);
|
||||
$str = str_replace('<?', '<?php', $str); // replace the short_open_tag. It is recommended to set this is Off in php.ini
|
||||
$str = str_replace('__LTINTPHP__', '<?php', $str);
|
||||
|
||||
$newstr = '';
|
||||
|
||||
@@ -163,12 +166,14 @@ function dolWebsiteReplacementOfLinks($website, $content, $removephppart = 0, $c
|
||||
if (preg_last_error() == PREG_JIT_STACKLIMIT_ERROR) $content = 'preg_replace error (when removing php tags) PREG_JIT_STACKLIMIT_ERROR';
|
||||
}*/
|
||||
$content = dolStripPhpCode($content, $replacewith);
|
||||
//var_dump($content);
|
||||
|
||||
// Protect the link styles.css.php to any replacement that we make after.
|
||||
$content = str_replace('href="styles.css.php', 'href="!~!~!~styles.css.php', $content);
|
||||
$content = str_replace('src="javascript.js.php', 'src="!~!~!~javascript.js.php', $content);
|
||||
$content = str_replace('href="http', 'href="!~!~!~http', $content);
|
||||
$content = str_replace('xlink:href="', 'xlink:href="!~!~!~', $content);
|
||||
$content = str_replace('href="//', 'href="!~!~!~//', $content);
|
||||
$content = str_replace('src="//', 'src="!~!~!~//', $content);
|
||||
$content = str_replace('src="viewimage.php', 'src="!~!~!~/viewimage.php', $content);
|
||||
$content = str_replace('src="/viewimage.php', 'src="!~!~!~/viewimage.php', $content);
|
||||
$content = str_replace('src="'.DOL_URL_ROOT.'/viewimage.php', 'src="!~!~!~'.DOL_URL_ROOT.'/viewimage.php', $content);
|
||||
@@ -301,11 +306,15 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '')
|
||||
}
|
||||
} elseif (defined('USEDOLIBARRSERVER')) { // REPLACEMENT OF LINKS When page called from Dolibarr server
|
||||
$content = str_replace('<link rel="stylesheet" href="/styles.css', '<link rel="stylesheet" href="styles.css', $content);
|
||||
$content = str_replace(' async src="/javascript.js', ' async src="javascript.js', $content);
|
||||
|
||||
// Protect the link styles.css.php to any replacement that we make after.
|
||||
$content = str_replace('href="styles.css.php', 'href="!~!~!~styles.css.php', $content);
|
||||
$content = str_replace('src="javascript.css.php', 'src="!~!~!~javascript.css.php', $content);
|
||||
$content = str_replace('href="http', 'href="!~!~!~http', $content);
|
||||
$content = str_replace('xlink:href="', 'xlink:href="!~!~!~', $content);
|
||||
$content = str_replace('href="//', 'href="!~!~!~//', $content);
|
||||
$content = str_replace('src="//', 'src="!~!~!~//', $content);
|
||||
$content = str_replace(array('src="viewimage.php', 'src="/viewimage.php'), 'src="!~!~!~/viewimage.php', $content);
|
||||
$content = str_replace('src="'.DOL_URL_ROOT.'/viewimage.php', 'src="!~!~!~'.DOL_URL_ROOT.'/viewimage.php', $content);
|
||||
$content = str_replace(array('href="document.php', 'href="/document.php'), 'href="!~!~!~/document.php', $content);
|
||||
@@ -354,8 +363,7 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '')
|
||||
if (empty($includehtmlcontentopened)) {
|
||||
$content = str_replace('!~!~!~', '', $content);
|
||||
}
|
||||
} else // REPLACEMENT OF LINKS When page called from virtual host web server
|
||||
{
|
||||
} else { // REPLACEMENT OF LINKS When page called from virtual host web server
|
||||
$symlinktomediaexists = 1;
|
||||
if ($website->virtualhost) {
|
||||
$content = preg_replace('/^(<link[^>]*rel="canonical" href=")\//m', '\1'.$website->virtualhost.'/', $content, -1, $nbrep);
|
||||
|
||||
@@ -248,7 +248,7 @@ function dolSavePageContent($filetpl, Website $object, WebsitePage $objectpage,
|
||||
// Add js
|
||||
$tplcontent .= '<link rel="stylesheet" href="/styles.css.php?website=<?php echo $websitekey; ?>" type="text/css" />'."\n";
|
||||
$tplcontent .= '<!-- Include link to JS file -->'."\n";
|
||||
$tplcontent .= '<script nonce="'.getNonce().'" async src="/javascript.js.php"></script>'."\n";
|
||||
$tplcontent .= '<script nonce="'.getNonce().'" async src="/javascript.js.php?website=<?php echo $websitekey; ?>"></script>'."\n";
|
||||
// Add headers
|
||||
$tplcontent .= '<!-- Include HTML header from common file -->'."\n";
|
||||
$tplcontent .= '<?php if (file_exists(DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html")) include DOL_DATA_ROOT."/website/".$websitekey."/htmlheader.html"; ?>'."\n";
|
||||
|
||||
@@ -102,7 +102,7 @@ class mod_contract_magre extends ModelNumRefContracts
|
||||
*/
|
||||
public function getExample()
|
||||
{
|
||||
global $conf, $langs, $mysoc;
|
||||
global $langs, $mysoc;
|
||||
|
||||
$old_code_client = $mysoc->code_client;
|
||||
$mysoc->code_client = 'CCCCCCCCCC';
|
||||
|
||||
@@ -78,6 +78,16 @@ class mod_contract_olive extends ModelNumRefContracts
|
||||
return $langs->trans("LeopardNumRefModelDesc");
|
||||
}
|
||||
|
||||
/**
|
||||
* Return numbering example
|
||||
*
|
||||
* @return string Example
|
||||
*/
|
||||
public function getExample()
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Return an example of result returned by getNextValue
|
||||
*
|
||||
@@ -87,7 +97,6 @@ class mod_contract_olive extends ModelNumRefContracts
|
||||
*/
|
||||
public function getNextValue($objsoc, $contract)
|
||||
{
|
||||
global $langs;
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -112,9 +121,9 @@ class mod_contract_olive extends ModelNumRefContracts
|
||||
$result = 0;
|
||||
$code = strtoupper(trim($code));
|
||||
|
||||
if (empty($code) && $this->code_null && empty($conf->global->MAIN_CONTARCT_CODE_ALWAYS_REQUIRED)) {
|
||||
if (empty($code) && $this->code_null && empty($conf->global->MAIN_CONTRACT_CODE_ALWAYS_REQUIRED)) {
|
||||
$result = 0;
|
||||
} elseif (empty($code) && (!$this->code_null || !empty($conf->global->MAIN_CONTARCT_CODE_ALWAYS_REQUIRED))) {
|
||||
} elseif (empty($code) && (!$this->code_null || !empty($conf->global->MAIN_CONTRACT_CODE_ALWAYS_REQUIRED))) {
|
||||
$result = -2;
|
||||
}
|
||||
|
||||
|
||||
@@ -163,7 +163,6 @@ class modApi extends DolibarrModules
|
||||
'langs'=>'modulebuilder',
|
||||
'position'=>100,
|
||||
'perms'=>'1',
|
||||
//'enabled'=>'isModEnabled("api") && preg_match(\'/^(devtools)/\',$leftmenu)',
|
||||
'enabled'=>'isModEnabled("api")',
|
||||
'target'=>'_apiexplorer',
|
||||
'user'=>0);
|
||||
|
||||
@@ -297,7 +297,7 @@ class modBookCal extends DolibarrModules
|
||||
$r = 0;
|
||||
// Add here entries to declare new menus
|
||||
/* BEGIN MODULEBUILDER TOPMENU */
|
||||
$this->menu[$r++] = array(
|
||||
/*$this->menu[$r++] = array(
|
||||
'fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||
'type'=>'top', // This is a Top menu entry
|
||||
'titre'=>'ModuleBookCalName',
|
||||
@@ -311,18 +311,33 @@ class modBookCal extends DolibarrModules
|
||||
'perms'=>'$user->rights->bookcal->availabilities->read', // Use 'perms'=>'$user->rights->bookcal->availabilities->read' if you want your menu with a permission rules
|
||||
'target'=>'',
|
||||
'user'=>2, // 0=Menu for internal users, 1=external users, 2=both
|
||||
);
|
||||
);*/
|
||||
/* END MODULEBUILDER TOPMENU */
|
||||
|
||||
/* BEGIN MODULEBUILDER LEFTMENU CALENDAR */
|
||||
$this->menu[$r++] = array(
|
||||
'fk_menu'=>'fk_mainmenu=agenda',
|
||||
'type'=>'left',
|
||||
'titre'=> 'MenuBookcalIndex',
|
||||
'prefix' => img_picto('', $this->picto, 'class="paddingright pictofixedwidth em92"'),
|
||||
'mainmenu'=>'agenda',
|
||||
'leftmenu'=> 'bookcal',
|
||||
'url'=> '/bookcal/bookcalindex.php',
|
||||
'langs'=> 'bookcal',
|
||||
'position'=> 1100+$r,
|
||||
'enabled'=> '1',
|
||||
'perms'=> '$user->rights->bookcal->calendar->read',
|
||||
'user'=> 0
|
||||
);
|
||||
|
||||
$this->menu[$r++]=array(
|
||||
// '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||
'fk_menu'=>'fk_mainmenu=bookcal',
|
||||
'fk_menu'=>'fk_mainmenu=agenda,fk_leftmenu=bookcal',
|
||||
// This is a Left menu entry
|
||||
'type'=>'left',
|
||||
'titre'=>'List Calendar',
|
||||
'mainmenu'=>'bookcal',
|
||||
'leftmenu'=>'bookcal_calendar',
|
||||
'titre'=>'Calendar',
|
||||
'mainmenu'=>'agenda',
|
||||
'leftmenu'=>'bookcal_calendar_list',
|
||||
'url'=>'/bookcal/calendar_list.php',
|
||||
// Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'langs'=>'bookcal',
|
||||
@@ -337,12 +352,12 @@ class modBookCal extends DolibarrModules
|
||||
);
|
||||
$this->menu[$r++]=array(
|
||||
// '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||
'fk_menu'=>'fk_mainmenu=bookcal,fk_leftmenu=bookcal_calendar',
|
||||
'fk_menu'=>'fk_mainmenu=agenda,fk_leftmenu=bookcal_calendar_list',
|
||||
// This is a Left menu entry
|
||||
'type'=>'left',
|
||||
'titre'=>'New Calendar',
|
||||
'mainmenu'=>'bookcal',
|
||||
'leftmenu'=>'bookcal_calendar',
|
||||
'titre'=>'NewCalendar',
|
||||
'mainmenu'=>'agenda',
|
||||
'leftmenu'=>'bookcal_new',
|
||||
'url'=>'/bookcal/calendar_card.php?action=create',
|
||||
// Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
'langs'=>'bookcal',
|
||||
@@ -405,11 +420,11 @@ class modBookCal extends DolibarrModules
|
||||
|
||||
$this->menu[$r++]=array(
|
||||
// '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||
'fk_menu'=>'fk_mainmenu=bookcal',
|
||||
'fk_menu'=>'fk_mainmenu=agenda,fk_leftmenu=bookcal',
|
||||
// This is a Left menu entry
|
||||
'type'=>'left',
|
||||
'titre'=>'List Availabilities',
|
||||
'mainmenu'=>'bookcal',
|
||||
'titre'=>'Availabilities',
|
||||
'mainmenu'=>'agenda',
|
||||
'leftmenu'=>'bookcal_availabilities',
|
||||
'url'=>'/bookcal/availabilities_list.php',
|
||||
// Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
@@ -425,11 +440,11 @@ class modBookCal extends DolibarrModules
|
||||
);
|
||||
$this->menu[$r++]=array(
|
||||
// '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
|
||||
'fk_menu'=>'fk_mainmenu=bookcal,fk_leftmenu=bookcal_availabilities',
|
||||
'fk_menu'=>'fk_mainmenu=agenda,fk_leftmenu=bookcal_availabilities',
|
||||
// This is a Left menu entry
|
||||
'type'=>'left',
|
||||
'titre'=>'New Availabilities',
|
||||
'mainmenu'=>'bookcal',
|
||||
'titre'=>'NewAvailabilities',
|
||||
'mainmenu'=>'agenda',
|
||||
'leftmenu'=>'bookcal_availabilities',
|
||||
'url'=>'/bookcal/availabilities_card.php?action=create',
|
||||
// Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
|
||||
|
||||
@@ -35,7 +35,7 @@ if (!empty($extrafieldsobjectkey) && !empty($extrafields->attributes[$extrafield
|
||||
// If field is a computed field, we make computation to get value
|
||||
if ($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key]) {
|
||||
$objectoffield = $object; //For compatibily with the computed formula
|
||||
$value = dol_eval($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key], 1, 1, '0');
|
||||
$value = dol_eval($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key], 1, 1, '2');
|
||||
if (is_numeric(price2num($value)) && $extrafields->attributes[$extrafieldsobjectkey]['totalizable'][$key]) {
|
||||
$obj->$tmpkey = price2num($value);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
// $sendto
|
||||
// $withmaindocfilemail
|
||||
|
||||
|
||||
if ($massaction == 'predeletedraft') {
|
||||
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmMassDraftDeletion"), $langs->trans("ConfirmMassDeletionQuestion", count($toselect)), "delete", null, '', 0, 200, 500, 1);
|
||||
}
|
||||
@@ -94,7 +93,7 @@ if ($massaction == 'preaffecttag' && isModEnabled('category')) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($massaction == 'preupdateprice' && isModEnabled('category')) {
|
||||
if ($massaction == 'preupdateprice') {
|
||||
$formquestion = array();
|
||||
|
||||
$valuefield = '<div style="display: flex; align-items: center; justify-content: flex-end; padding-right: 150px">';
|
||||
|
||||
@@ -3225,6 +3225,7 @@ class EmailCollector extends CommonObject
|
||||
} else {
|
||||
$langs->load("admin");
|
||||
$output = $langs->trans('NoNewEmailToProcess');
|
||||
$output .= ' (defaultlang='.$langs->defaultlang.')';
|
||||
}
|
||||
|
||||
// Disconnect
|
||||
|
||||
@@ -366,7 +366,7 @@ $num = $db->num_rows($resql);
|
||||
if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all && !$page) {
|
||||
$obj = $db->fetch_object($resql);
|
||||
$id = $obj->rowid;
|
||||
header("Location: ".dol_buildpath('/mymodule/myobject_card.php', 1).'?id='.$id);
|
||||
header("Location: ".dol_buildpath('/fichinter/card.php', 1).'?id='.$id);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
@@ -126,7 +126,8 @@ $now = dol_now();
|
||||
|
||||
$error = 0;
|
||||
|
||||
$result = restrictedArea($user, 'facture', $object->id, $objecttype);
|
||||
$result = restrictedArea($user, 'supplier_invoicerec', $object->id, $objecttype);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -66,7 +66,6 @@ $objecttype = 'facture_fourn_rec';
|
||||
if ($action == "create" || $action == "add") {
|
||||
$objecttype = '';
|
||||
}
|
||||
$result = restrictedArea($user, 'facture', $id, $objecttype);
|
||||
|
||||
$search_ref = GETPOST('search_ref');
|
||||
$search_societe = GETPOST('search_societe');
|
||||
@@ -169,7 +168,7 @@ if ($socid > 0) {
|
||||
}
|
||||
$objecttype = 'facture_fourn_rec';
|
||||
|
||||
$result = restrictedArea($user, 'facture', $object->id, $objecttype);
|
||||
$result = restrictedArea($user, 'supplier_invoicerec', $object->id, $objecttype);
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -455,7 +455,7 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) {
|
||||
|
||||
// We calculate $totallate. Must be defined before start of next loop because it is show in first fetch on next loop
|
||||
foreach ($valid_dashboardlines as $board) {
|
||||
if ($board->nbtodolate > 0) {
|
||||
if (is_numeric($board->nbtodo) && is_numeric($board->nbtodolate) && $board->nbtodolate > 0) {
|
||||
$totaltodo += $board->nbtodo;
|
||||
$totallate += $board->nbtodolate;
|
||||
}
|
||||
|
||||
@@ -4100,6 +4100,7 @@ function migrate_delete_old_files($db, $langs, $conf)
|
||||
|
||||
// List of files to delete
|
||||
$filetodeletearray = array(
|
||||
'/core/ajax/ajaxcompanies.php',
|
||||
'/core/triggers/interface_demo.class.php',
|
||||
'/core/menus/barre_left/default.php',
|
||||
'/core/menus/barre_top/default.php',
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=ربط ملف جديد/ وثيقة
|
||||
LinkedFiles=الملفات والمستندات المرتبطة
|
||||
NoLinkFound=لا يوجد روابط مسجلة
|
||||
LinkComplete=تم ربط الملف بنجاح
|
||||
ErrorFileNotLinked=لا يمكن ربط الملف
|
||||
LinkRemoved= الرابط%sتم إزالتة
|
||||
ErrorFailedToDeleteLink= فشل في إزالة الرابط '<b> %s </b>'
|
||||
ErrorFailedToUpdateLink= فشل تحديث الرابط '<b> %s </b>'
|
||||
URLToLink=عنوان URL للربط
|
||||
OverwriteIfExists=إستبدال محتوى الملف إذا كان موجوداً
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Свързване на нов файл / документ
|
||||
LinkedFiles=Свързани файлове и документи
|
||||
NoLinkFound=Няма регистрирани връзки
|
||||
LinkComplete=Файлът е успешно свързан
|
||||
ErrorFileNotLinked=Файлът не може да бъде свързан
|
||||
LinkRemoved=Връзката %s е премахната
|
||||
ErrorFailedToDeleteLink= Премахването на връзката '<b>%s</b>' не е успешно
|
||||
ErrorFailedToUpdateLink= Актуализацията на връзката '<b>%s</b>' не е успешна
|
||||
URLToLink=URL адрес
|
||||
OverwriteIfExists=Презаписване на файл, ако съществува
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Enllaça un nou arxiu/document
|
||||
LinkedFiles=Arxius i documents enllaçats
|
||||
NoLinkFound=No hi ha enllaços registrats
|
||||
LinkComplete=L'arxiu s'ha enllaçat correctament
|
||||
ErrorFileNotLinked=L'arxiu no s'ha enllaçat
|
||||
LinkRemoved=L'enllaç %s s'ha eliminat
|
||||
ErrorFailedToDeleteLink= Error en eliminar l'enllaç '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Error en actualitzar l'enllaç '<b>%s</b>'
|
||||
URLToLink=URL a enllaçar
|
||||
OverwriteIfExists=Sobreescriu el fitxer si existeix
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Připojit nový soubor/dokument
|
||||
LinkedFiles=Připojené soubory a dokumenty
|
||||
NoLinkFound=Žádné odkazy
|
||||
LinkComplete=Soubor byl úspěšně připojen
|
||||
ErrorFileNotLinked=Soubor nemohl být připojen
|
||||
LinkRemoved=Odkaz %s byl odstraněn
|
||||
ErrorFailedToDeleteLink= Nepodařilo se odstranit odkaz '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Nepodařilo se aktualizovat odkaz '<b>%s</b>'
|
||||
URLToLink=Připojit URL
|
||||
OverwriteIfExists=Pokud existuje, přepište soubor
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Cysylltwch ffeil/dogfen newydd
|
||||
LinkedFiles=Ffeiliau a dogfennau cysylltiedig
|
||||
NoLinkFound=Dim dolenni cofrestredig
|
||||
LinkComplete=Mae'r ffeil wedi'i chysylltu'n llwyddiannus
|
||||
ErrorFileNotLinked=Nid oedd modd cysylltu'r ffeil
|
||||
LinkRemoved=Mae'r cyswllt %s wedi'i ddileu
|
||||
ErrorFailedToDeleteLink= Wedi methu tynnu dolen ' <b> %s </b> '
|
||||
ErrorFailedToUpdateLink= Wedi methu diweddaru'r ddolen ' <b> %s </b> '
|
||||
URLToLink=URL i'r ddolen
|
||||
OverwriteIfExists=Trosysgrifo ffeil os yw'n bodoli
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link en ny fil / et dokument
|
||||
LinkedFiles=Sammenkædede filer og dokumenter
|
||||
NoLinkFound=Ingen registrerede links
|
||||
LinkComplete=Filen er blevet linket korrekt
|
||||
ErrorFileNotLinked=Filen kunne ikke forbindes
|
||||
LinkRemoved=Linket %s er blevet fjernet
|
||||
ErrorFailedToDeleteLink= Kunne ikke fjerne linket '<b> %s </b>'
|
||||
ErrorFailedToUpdateLink= Kunne ikke opdatere linket '<b> %s </b>'
|
||||
URLToLink=URL til link
|
||||
OverwriteIfExists=Overskriv fil, hvis den findes
|
||||
@@ -1,5 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkANewFile=Verknüpfe eine neue Datei /Dokument
|
||||
LinkComplete=Die Datei wurde erfolgreich verlinkt
|
||||
ErrorFileNotLinked=Die Datei konnte nicht verlinkt werden
|
||||
URLToLink=URL zum Verlinken
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Neue Verknüpfung erstellen
|
||||
LinkedFiles=Verknüpfte Dateien
|
||||
NoLinkFound=Keine verknüpften Links
|
||||
LinkComplete=Die Datei wurde erfolgreich verlinkt.
|
||||
ErrorFileNotLinked=Die Datei konnte nicht verlinkt werden.
|
||||
LinkRemoved=Der Link %s wurde entfernt
|
||||
ErrorFailedToDeleteLink= Fehler beim entfernen des Links '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Fehler beim aktualisieren des Link '<b>%s</b>'
|
||||
URLToLink=zu verlinkende URL
|
||||
OverwriteIfExists=Datei überschreiben, falls vorhanden
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Συνδέστε ένα νέο αρχείο / έγγραφο
|
||||
LinkedFiles=Συνδεδεμένα αρχεία και έγγραφα
|
||||
NoLinkFound=Δεν υπάρχουν εγγεγραμμένοι σύνδεσμοι
|
||||
LinkComplete=Το αρχείο έχει συνδεθεί με επιτυχία
|
||||
ErrorFileNotLinked=Το αρχείο δεν μπορεί να συνδεθεί
|
||||
LinkRemoved=Ο σύνδεσμος %s έχει αφαιρεθεί
|
||||
ErrorFailedToDeleteLink= Απέτυχε η αφαίρεση του συνδέσμου '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Απέτυχε η ενημέρωση του σύνδεσμο '<b>%s</b>'
|
||||
URLToLink=Διεύθυνση URL για σύνδεση
|
||||
OverwriteIfExists=Επανεγγραφή αρχείου εάν υπάρχει
|
||||
@@ -180,4 +180,5 @@ BrowserPush=Browser Popup Notification
|
||||
Reminders=Reminders
|
||||
ActiveByDefault=Enabled by default
|
||||
Until=until
|
||||
DataFromWasMerged=Data from %s was merged
|
||||
DataFromWasMerged=Data from %s was merged
|
||||
AgendaShowBookcalCalendar=Booking calendar: %s
|
||||
@@ -1,5 +1,5 @@
|
||||
# Dolibarr language file - Source file is en_US - companies
|
||||
newSocieteAdded=Your contact has been recorded. We will go back to you soon...
|
||||
newSocieteAdded=Your contact details have been recorded. We will get back to you soon...
|
||||
ContactUsDesc=This form allows you to send us a message for a first contact.
|
||||
ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one.
|
||||
ErrorSetACountryFirst=Set the country first
|
||||
|
||||
@@ -45,7 +45,7 @@ ExtraFieldsEcmFiles=Extrafields Ecm Files
|
||||
ExtraFieldsEcmDirectories=Extrafields Ecm Directories
|
||||
ECMSetup=ECM Setup
|
||||
GenerateImgWebp=Duplicate all images with another version with .webp format
|
||||
ConfirmGenerateImgWebp=If you confirm, you will generate an image in .webp format for all images currently into this folder (subfolders are not included)...
|
||||
ConfirmGenerateImgWebp=If you confirm, you will generate an image in .webp format for all images currently into this folder (subfolders are not included, webp images will not be generated if size is greater than original)...
|
||||
ConfirmImgWebpCreation=Confirm all images duplication
|
||||
GenerateChosenImgWebp=Duplicate chosen image with another version with .webp format
|
||||
ConfirmGenerateChosenImgWebp=If you confirm, you will generate an image in .webp format for the image %s
|
||||
|
||||
@@ -363,6 +363,7 @@ WarningModuleNeedRefrech = Module <b>%s</b> has been disabled. Don't forget to e
|
||||
WarningPermissionAlreadyExist=Existing permissions for this object
|
||||
WarningGoOnAccountancySetupToAddAccounts=If this list is empty, go into menu %s - %s - %s to load or create accounts for your chart of account.
|
||||
WarningCorrectedInvoiceNotFound=Corrected invoice not found
|
||||
WarningCommentNotFound=Please check placement of start and end comments for <b>%s</b> section in file <b>%s</b> before submitting your action
|
||||
|
||||
SwissQrOnlyVIR = SwissQR invoice can only be added on invoices set to be paid with credit transfer payments.
|
||||
SwissQrCreditorAddressInvalid = Creditor address is invalid (are ZIP and city set? (%s)
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1239,3 +1239,13 @@ DateOfPrinting=Date of printing
|
||||
ClickFullScreenEscapeToLeave=Click here to switch in Full screen mode. Press ESCAPE to leave Full screen mode.
|
||||
UserNotYetValid=Not yet valid
|
||||
UserExpired=Expired
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite if file exists
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkANewFile=Enlazar a un nuevo archivo/documento
|
||||
LinkedFiles=Archivos y documentos enlazados
|
||||
NoLinkFound=No hay enlaces registrados
|
||||
LinkComplete=El archivo se ha enlazado correctamente
|
||||
ErrorFileNotLinked=El archivo no pudo ser enlazado
|
||||
LinkRemoved=El enlace %s ha sido eliminado
|
||||
ErrorFailedToDeleteLink=Error al eliminar el enlace '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink=Error al actualizar enlace '<b>%s</b>'
|
||||
URLToLink=URL del enlace
|
||||
@@ -1,10 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkANewFile=Enlace un nuevo archivo / documento
|
||||
LinkedFiles=Links archivos y documentos
|
||||
NoLinkFound=No hay enlaces registrados
|
||||
LinkComplete=El archivo ha sido vinculado exitosamente
|
||||
ErrorFileNotLinked=El archivo no pudo ser vinculado
|
||||
LinkRemoved=El enlace %s ha sido eliminado
|
||||
ErrorFailedToDeleteLink=Error al eliminar el enlace '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink=Error al actualizar el enlace '<b>%s</b>'
|
||||
URLToLink=URL para enlazar
|
||||
@@ -1,9 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkANewFile=Vincular un nuevo archivo / documento
|
||||
NoLinkFound=No hay enlaces registrados
|
||||
LinkComplete=El archivo se ha vinculado correctamente
|
||||
ErrorFileNotLinked=El archivo no se pudo vincular
|
||||
LinkRemoved=El enlace %s ha sido eliminado
|
||||
ErrorFailedToDeleteLink=Error al eliminar el enlace '<b> %s </b>'
|
||||
ErrorFailedToUpdateLink=Error al actualizar el enlace '<b> %s </b>'
|
||||
URLToLink=URL para vincular
|
||||
@@ -1,8 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
NoLinkFound=No hay enlaces registrados
|
||||
LinkComplete=El archivo se ha vinculado con éxito.
|
||||
ErrorFileNotLinked=No se pudo vincular el archivo
|
||||
LinkRemoved=El enlace %s ha sido eliminado
|
||||
ErrorFailedToDeleteLink=Error al eliminar el enlace ' <b> %s </b> '
|
||||
ErrorFailedToUpdateLink=Error al actualizar el enlace '<b> %s </b>'
|
||||
URLToLink=URL para vincular
|
||||
@@ -1,7 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkComplete=El archivo se ha vinculado con éxito.
|
||||
ErrorFileNotLinked=No se pudo vincular el archivo
|
||||
LinkRemoved=El enlace %s ha sido eliminado
|
||||
ErrorFailedToDeleteLink=Error al eliminar el enlace ' <b> %s </b> '
|
||||
ErrorFailedToUpdateLink=Error al actualizar el enlace ' <b> %s </b> '
|
||||
URLToLink=URL para vincular
|
||||
@@ -1,8 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkedFiles=Archivos enlazados y documentos
|
||||
NoLinkFound=No hay enlaces registrados
|
||||
LinkComplete=El archivo se ha vinculado correctamente
|
||||
ErrorFileNotLinked=No se pudo vincular el archivo.
|
||||
LinkRemoved=Se ha eliminado el enlace %s
|
||||
ErrorFailedToDeleteLink=No se pudo eliminar el vínculo '<b>%s</b>'
|
||||
URLToLink=URL para vincular
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Vincular un nuevo archivo/documento
|
||||
LinkedFiles=Archivos y documentos vinculados
|
||||
NoLinkFound=Sin enlaces registrados
|
||||
LinkComplete=El archivo ha sido vinculado correctamente
|
||||
ErrorFileNotLinked=El archivo no ha podido ser vinculado
|
||||
LinkRemoved=El vínculo %s ha sido eliminado
|
||||
ErrorFailedToDeleteLink= Error al eliminar el vínculo '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Error al actualizar el vínculo '<b>%s</b>'
|
||||
URLToLink=URL a enlazar
|
||||
OverwriteIfExists=Sobrescribir archivo si existe
|
||||
@@ -1,10 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkANewFile=Vincular un nuevo archivo / documento
|
||||
LinkedFiles=Archivos enlazados y documentos
|
||||
NoLinkFound=No hay enlaces registrados
|
||||
LinkComplete=El archivo se ha vinculado correctamente
|
||||
ErrorFileNotLinked=No se pudo vincular el archivo.
|
||||
LinkRemoved=Se ha eliminado el enlace %s
|
||||
ErrorFailedToDeleteLink=No se pudo eliminar el vínculo '<b> %s </b>'
|
||||
ErrorFailedToUpdateLink=Error al actualizar el vínculo '<b> %s </b>'
|
||||
URLToLink=URL para vincular
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Fitxategi/dokumentu berria estekatu
|
||||
LinkedFiles=Estekatutako fitxategi eta dokumentuak
|
||||
NoLinkFound=Ez dago gordetako estekarik
|
||||
LinkComplete=Fitxategia ondo estekatu da
|
||||
ErrorFileNotLinked=Ezin izan da fitxategia estekatu
|
||||
LinkRemoved=%s esteka ezabatua izan da
|
||||
ErrorFailedToDeleteLink= Ezin izan da '<b>%s</b>' esteka ezabatu
|
||||
ErrorFailedToUpdateLink= Ezin izan da '<b>%s</b>' esteka berritu
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=پیوند یک فایل/سند
|
||||
LinkedFiles=اسناد و فایلهای مرتبط
|
||||
NoLinkFound=پیوند ثبتشدهای وجود ندارد
|
||||
LinkComplete=فایل با موفقیت پیوند شد
|
||||
ErrorFileNotLinked=امکان پیوند فایل وجود ندارد
|
||||
LinkRemoved=پیوند %s برداشته شد
|
||||
ErrorFailedToDeleteLink= امکان حذف پیوند '<b>%s</b>' نبود
|
||||
ErrorFailedToUpdateLink= امکان روزآمدسازی پیوند '<b>%s</b>' نبود
|
||||
URLToLink=نشانی برای پیوند کردن
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Luo uusi linkki tiedostoon/dokumenttiin
|
||||
LinkedFiles=Linkitetyt tiedostot ja dokumentit
|
||||
NoLinkFound=Rekisteröityjä linkkejä ei ole
|
||||
LinkComplete=Tiedosto on linkitetty onnistuneesti
|
||||
ErrorFileNotLinked=Tiedostoa ei voitu linkittää
|
||||
LinkRemoved=%s linkki on poistettu
|
||||
ErrorFailedToDeleteLink= Linkin '<b>%s</b>' poisto ei onnistunut
|
||||
ErrorFailedToUpdateLink= Linkin '<b>%s</b>' päivitys ei onnistunut
|
||||
URLToLink=URL linkiksi
|
||||
OverwriteIfExists=Korvaa tiedosto jos olemassa
|
||||
@@ -1,6 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkANewFile=Relier un nouveau fichier / document
|
||||
NoLinkFound=Pas de liens enregistrés
|
||||
LinkComplete=Le fichier a été lié avec succès
|
||||
ErrorFailedToDeleteLink=Impossible d'enlever le lien '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink=Impossible de mettre à jour le lien '<b>%s</b>'
|
||||
@@ -363,6 +363,7 @@ WarningModuleNeedRefrech = Le module <b>%s</b> a été désactivé. N'oubliez pa
|
||||
WarningPermissionAlreadyExist=Autorisations existantes pour cet objet
|
||||
WarningGoOnAccountancySetupToAddAccounts=Si cette liste est vide, allez dans le menu %s - %s - %s pour charger ou créer des comptes pour votre plan comptable.
|
||||
WarningCorrectedInvoiceNotFound=Facture corrigée introuvable
|
||||
WarningCommentNotFound=Verifier l'emplacement des commentaires debut et fin pour la section <b>%s</b> dans le fichier <b>%s</b> avant de soumettre votre action
|
||||
|
||||
SwissQrOnlyVIR = La facture SwissQR ne peut être ajoutée que sur les factures définies pour être payées avec des paiements par virement.
|
||||
SwissQrCreditorAddressInvalid = L'adresse du créancier n'est pas valide (le code postal et la ville sont-ils définis ? (%s)
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Lier un nouveau fichier/document
|
||||
LinkedFiles=Fichiers et documents liés
|
||||
NoLinkFound=Aucun lien associé
|
||||
LinkComplete=Le fichier a été correctement lié
|
||||
ErrorFileNotLinked=Le fichier n'a pas pu être lié
|
||||
LinkRemoved=Le lien %s a été supprimé
|
||||
ErrorFailedToDeleteLink= Impossible de supprimer le lien '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Impossible de modifier le lien '<b>%s</b>'
|
||||
URLToLink=URL à lier
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Ligar un novo ficheiro/documento
|
||||
LinkedFiles=Ficheiros e documentos ligados
|
||||
NoLinkFound=Sen ligazóns registrados
|
||||
LinkComplete=O ficheiro foi ligado correctamente
|
||||
ErrorFileNotLinked=O ficheiro non puido ser ligado
|
||||
LinkRemoved=A ligazón %s foi eliminada
|
||||
ErrorFailedToDeleteLink= Erro ao eliminar a ligazón '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Erro ao actualizar a ligazón '<b>%s</b>'
|
||||
URLToLink=URL a ligar
|
||||
OverwriteIfExists=Sobrescribir ficheiro se existe
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Poveži novu datoteku/dokument
|
||||
LinkedFiles=Povezane datoteke i dokumenti
|
||||
NoLinkFound=Nema registriranih veza
|
||||
LinkComplete=Datoteka je uspješno povezana
|
||||
ErrorFileNotLinked=Datoteku je nemoguće povezati
|
||||
LinkRemoved=Veza %s je obrisana
|
||||
ErrorFailedToDeleteLink= Neuspješno brisanje veze '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Neuspješna promjena veze '<b>%s</b>'
|
||||
URLToLink=URL prema vezi
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Új fájl/dokumentum hivatkozása
|
||||
LinkedFiles=Hivatkozott fájlok és dokumentumok
|
||||
NoLinkFound=Nincs mentett hivatkozás
|
||||
LinkComplete=A fájlra történt hivatkozás sikerült
|
||||
ErrorFileNotLinked=A fájlra nem lehet hivatkozni
|
||||
LinkRemoved=A %s hivatkozás törölve
|
||||
ErrorFailedToDeleteLink= A '<b>%s</b>' hivakozás törlése sikertelen
|
||||
ErrorFailedToUpdateLink= A '<b>%s</b>' hivakozás frissítése sikertelen
|
||||
URLToLink=A hivatkozás címe
|
||||
OverwriteIfExists=Fájl felülírása, ha létezik
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Tautan untuk berkas/dokumen baru
|
||||
LinkedFiles=Tautan berkas dan dokumen
|
||||
NoLinkFound=Link tidak terdaftar
|
||||
LinkComplete=Berkas telah berhasil ditautkan
|
||||
ErrorFileNotLinked=Berkas tidak dapat ditautkan
|
||||
LinkRemoved=Tautan %s telah dihapus
|
||||
ErrorFailedToDeleteLink= gagal untuk menghapus tautan '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Gagal untuk memperbaharui tautan '<b>%s</b>'
|
||||
URLToLink=URL untuk ditautkan
|
||||
OverwriteIfExists=Timpa file jika ada
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Collega un nuovo file/documento
|
||||
LinkedFiles=File e documenti collegati
|
||||
NoLinkFound=Nessun collegamento registrato
|
||||
LinkComplete=Il file è stato correttamente collegato
|
||||
ErrorFileNotLinked=Il file non può essere collegato
|
||||
LinkRemoved=Il collegamento %s è stato rimosso
|
||||
ErrorFailedToDeleteLink= Impossibile rimuovere il collegamento '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Impossibile caricare il collegamento '<b>%s</b>'
|
||||
URLToLink=Indirizzo del link
|
||||
OverwriteIfExists=Sovrascrivi file se esiste
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=新規ファイル/ドキュメントをリンクする
|
||||
LinkedFiles=ファイルとドキュメントをリンクした
|
||||
NoLinkFound=リンクは登録されていない
|
||||
LinkComplete=ファイルを正常にリンクした
|
||||
ErrorFileNotLinked=ファイルをリンクできなかった
|
||||
LinkRemoved=リンク %s が削除された
|
||||
ErrorFailedToDeleteLink= リンク '<b>%s</b>' を削除できなかった
|
||||
ErrorFailedToUpdateLink= リンク '<b>%s</b>' を更新できなかった
|
||||
URLToLink=リンクの URL
|
||||
OverwriteIfExists=存在する場合はファイルを上書きする
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Жаңа файлды/құжатты байланыстырыңыз
|
||||
LinkedFiles=Байланысты файлдар мен құжаттар
|
||||
NoLinkFound=Тіркелген сілтемелер жоқ
|
||||
LinkComplete=Файл сәтті байланыстырылды
|
||||
ErrorFileNotLinked=Файлды байланыстыру мүмкін болмады
|
||||
LinkRemoved=%s сілтемесі жойылды
|
||||
ErrorFailedToDeleteLink= '<b> %s </b>' сілтемесі жойылмады
|
||||
ErrorFailedToUpdateLink= '<b> %s </b>' сілтемесі жаңартылмады
|
||||
URLToLink=Сілтеме үшін URL
|
||||
OverwriteIfExists=Егер бар болса, файлды қайта жазыңыз
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=ເຊື່ອມໂຍງໄຟລ//ເອກະສານໃ່
|
||||
LinkedFiles=ໄຟລ Linked ແລະເອກະສານທີ່ເຊື່ອມໂຍງ
|
||||
NoLinkFound=ບໍ່ມີລິ້ງເຊື່ອມຕໍ່ທີ່ລົງທະບຽນ
|
||||
LinkComplete=ໄຟລ has ໄດ້ຖືກເຊື່ອມຕໍ່ ສຳ ເລັດແລ້ວ
|
||||
ErrorFileNotLinked=ບໍ່ສາມາດເຊື່ອມໂຍງໄຟລໄດ້
|
||||
LinkRemoved=ລິ້ງ %s ໄດ້ຖືກລຶບອອກແລ້ວ
|
||||
ErrorFailedToDeleteLink= ລຶບລິ້ງ '<b> %s </b> ບໍ່ ສຳ ເລັດ'
|
||||
ErrorFailedToUpdateLink= ອັບເດດລິ້ງ '<b> %s </b> ບໍ່ ສຳ ເລັດ'
|
||||
URLToLink=URL ເພື່ອເຊື່ອມຕໍ່
|
||||
OverwriteIfExists=ຂຽນທັບໄຟລ if ຖ້າມີ
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Susieti naują filą / dokumentą
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Nesėkmingas sąsajos '<b>%s</b>' atnaujinimas
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Salinkot jaunu failu/dokumentu
|
||||
LinkedFiles=Salinkotie faili un dokumenti
|
||||
NoLinkFound=Nav reģistrētas saites
|
||||
LinkComplete=Fails veiksmīgi salinkots
|
||||
ErrorFileNotLinked=Failu nevar salinkot
|
||||
LinkRemoved=Saite %s tika dzēsta
|
||||
ErrorFailedToDeleteLink= Kļūda dzēšot saiti '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Kļūda atjaunojot saiti '<b>%s</b>'
|
||||
URLToLink=Saites uz URL
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Koble en ny fil/dokument
|
||||
LinkedFiles=Koblede filer og dokumenter
|
||||
NoLinkFound=Ingen registrerte koblinger
|
||||
LinkComplete=Filkoblingen ble opprettet
|
||||
ErrorFileNotLinked=Filen kunne ikke kobles
|
||||
LinkRemoved=Koblingen til %s ble fjernet
|
||||
ErrorFailedToDeleteLink= Klarte ikke å fjerne kobling'<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Klarte ikke å oppdatere koblingen til '<b>%s</b>'
|
||||
URLToLink=URL til link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link a new file/document
|
||||
LinkedFiles=Linked files and documents
|
||||
NoLinkFound=No registered links
|
||||
LinkComplete=The file has been linked successfully
|
||||
ErrorFileNotLinked=The file could not be linked
|
||||
LinkRemoved=The link %s has been removed
|
||||
ErrorFailedToDeleteLink= Failed to remove link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Failed to update link '<b>%s</b>'
|
||||
URLToLink=URL to link
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Koppel een nieuw bestand/document
|
||||
LinkedFiles=Gekoppelde bestanden en documenten
|
||||
NoLinkFound=Geen geregistreerde koppelingen
|
||||
LinkComplete=Het bestand is succesvol gekoppeld
|
||||
ErrorFileNotLinked=Het bestand kon niet gekoppeld worden
|
||||
LinkRemoved=De koppeling %s is verwijderd
|
||||
ErrorFailedToDeleteLink= Kon de verbinding '<b>%s</b>' niet verwijderen
|
||||
ErrorFailedToUpdateLink= Kon verbinding '<b>%s</b>' niet bijwerken
|
||||
URLToLink=URL naar link
|
||||
OverwriteIfExists=Overschrijf bestand indien aanwezig
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Podepnij nowy plik/dokument
|
||||
LinkedFiles=Podpięte pliki i dokumenty
|
||||
NoLinkFound=Brak zarejestrowanych linków
|
||||
LinkComplete=Plik został podlinkowany poprawnie
|
||||
ErrorFileNotLinked=Plik nie mógł zostać podlinkowany
|
||||
LinkRemoved=Link %s został usunięty
|
||||
ErrorFailedToDeleteLink= Niemożna usunąc linku '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Niemożna uaktualnić linku '<b>%s</b>'
|
||||
URLToLink=Adres URL linka
|
||||
OverwriteIfExists=Zastąp plik, jeśli istnieje
|
||||
@@ -1,10 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkANewFile=Vincular um novo arquivo/documento
|
||||
LinkedFiles=Arquivos vinculados e documentos
|
||||
NoLinkFound=Não há links registrados
|
||||
LinkComplete=O arquivo foi associada com sucesso
|
||||
ErrorFileNotLinked=O arquivo não pôde ser vinculado
|
||||
LinkRemoved=A ligação %s foi removida
|
||||
ErrorFailedToDeleteLink=Falha ao remover link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink=Falha ao atualizar link '<b>%s</b>'
|
||||
URLToLink=URL para link
|
||||
@@ -1,10 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - link
|
||||
LinkANewFile=Vincular um novo arquivo/documento
|
||||
LinkedFiles=Arquivos vinculados e documentos
|
||||
NoLinkFound=Não há links registrados
|
||||
LinkComplete=O arquivo foi associada com sucesso
|
||||
ErrorFileNotLinked=O arquivo não pôde ser vinculado
|
||||
LinkRemoved=A ligação %s foi removida
|
||||
ErrorFailedToDeleteLink=Falha ao remover link '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink=Falha ao atualizar link '<b>%s</b>'
|
||||
URLToLink=URL para link
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Associar um novo ficheiro/documento
|
||||
LinkedFiles=Ficheiros e documentos associados
|
||||
NoLinkFound=Nenhumas ligações registadas
|
||||
LinkComplete=Os ficheiros foram ligados com sucesso
|
||||
ErrorFileNotLinked=Os ficheiros não puderam ser ligados
|
||||
LinkRemoved=A hiperligação %s foi removida
|
||||
ErrorFailedToDeleteLink= falhou a remoção da ligação '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Falha na atualização de ligação '<b>%s</b>'
|
||||
URLToLink=URL para hiperligação
|
||||
OverwriteIfExists=Overwrite file if exists
|
||||
@@ -1,11 +0,0 @@
|
||||
# Dolibarr language file - Source file is en_US - languages
|
||||
LinkANewFile=Link fişier/document nou
|
||||
LinkedFiles=Fişiere şi documente ataşate
|
||||
NoLinkFound=Niciun link inregistrat
|
||||
LinkComplete=Fişierul a fost ataşat cu succes
|
||||
ErrorFileNotLinked=Fişierul nu a putut fi ataşat
|
||||
LinkRemoved=Linkul %s a fost înlăturat
|
||||
ErrorFailedToDeleteLink= Eşec la înlăturarea linkului '<b>%s</b>'
|
||||
ErrorFailedToUpdateLink= Eşec la modificarea linkului '<b>%s</b>'
|
||||
URLToLink=URL la link
|
||||
OverwriteIfExists=Suprascrie dacă fişierul există
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user