From 9c7647a7aeb8778faa5361dbd97cc765476b03c8 Mon Sep 17 00:00:00 2001 From: astebert Date: Tue, 12 Aug 2014 11:45:11 +0200 Subject: [PATCH 001/111] Update bills.lang Ligne 252 : Changement grammatical - de "Paiements issue de l'acompte" - en "Paiement issu de l'acompte" --- htdocs/langs/fr_FR/bills.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index debbe4f4d33..9e9980f9091 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -249,7 +249,7 @@ AddCreditNote=Créer facture avoir Deposit=Acompte Deposits=Acomptes DiscountFromCreditNote=Remise issue de l'avoir %s -DiscountFromDeposit=Paiements issue de l'acompte %s +DiscountFromDeposit=Paiement issu de l'acompte %s AbsoluteDiscountUse=Ce type de crédit ne peut s'utiliser que sur une facture non validée CreditNoteDepositUse=La facture doit être validée pour pouvoir utiliser ce type de crédit NewGlobalDiscount=Nouvelle ligne de déduction From f3eec7582ee281fb59a2659e8154854d6651434a Mon Sep 17 00:00:00 2001 From: BadPixxel Date: Tue, 30 Sep 2014 16:00:04 +0200 Subject: [PATCH 002/111] Minor BugFix : Wrong variable reference in getNomUrl Display of Category Url was incompete due to reference to "$ref" instead of "$label" --- htdocs/categories/class/categorie.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index f9c4a96dcaa..59d2ff4a766 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1271,7 +1271,7 @@ class Categorie extends CommonObject if ($withpicto) $result.=($lien.img_object($label,$picto).$lienfin); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.dol_trunc($this->ref,$maxlength).$lienfin; + if ($withpicto != 2) $result.=$lien.dol_trunc($this->label,$maxlength).$lienfin; return $result; } From 820e6e5d95fb879776dd51dfa64797401a29fff9 Mon Sep 17 00:00:00 2001 From: BadPixxel Date: Tue, 30 Sep 2014 19:01:43 +0200 Subject: [PATCH 003/111] Minor BugFix : Compatibility of function getNomUrl Using Ref & Label for Category Name display is necessary for compatibility --- htdocs/categories/class/categorie.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 59d2ff4a766..51308174112 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1263,7 +1263,7 @@ class Categorie extends CommonObject $result=''; $lien = ''; - $label=$langs->trans("ShowCategory").': '.$this->label; + $label=$langs->trans("ShowCategory").': '. ($this->ref?$this->ref:$this->label); $lienfin=''; $picto='category'; @@ -1271,7 +1271,7 @@ class Categorie extends CommonObject if ($withpicto) $result.=($lien.img_object($label,$picto).$lienfin); if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.dol_trunc($this->label,$maxlength).$lienfin; + if ($withpicto != 2) $result.=$lien.dol_trunc(($this->ref?$this->ref:$this->label),$maxlength).$lienfin; return $result; } From 12e6d1bf6c2d253ee3f051cc5577670bd94581fc Mon Sep 17 00:00:00 2001 From: BadPixxel Date: Tue, 30 Sep 2014 19:09:59 +0200 Subject: [PATCH 004/111] Missing Key for getNomUrl function --- htdocs/langs/fr_FR/categories.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/fr_FR/categories.lang b/htdocs/langs/fr_FR/categories.lang index 6570eec5638..90e8c086d43 100644 --- a/htdocs/langs/fr_FR/categories.lang +++ b/htdocs/langs/fr_FR/categories.lang @@ -111,3 +111,4 @@ ExtraFieldsCategories=Attributs supplémentaires CategoriesSetup=Configuration du module catégories CategorieRecursiv=Lier avec les catégories parentes CategorieRecursivHelp=Si activer, quand un élément est ajouté dans une catégorie, ajouter aussi l'élément dans toutes les catégories parentes +ShowCategory=Afficher la catégorie From cf2ba78fc1be4a46a0d443fc8d510d8eca2ad20b Mon Sep 17 00:00:00 2001 From: BadPixxel Date: Tue, 30 Sep 2014 19:11:01 +0200 Subject: [PATCH 005/111] Missing Key for getNomUrl function --- htdocs/langs/en_US/categories.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/categories.lang b/htdocs/langs/en_US/categories.lang index fb9ad8a3b6d..1cfccd75d5d 100644 --- a/htdocs/langs/en_US/categories.lang +++ b/htdocs/langs/en_US/categories.lang @@ -111,3 +111,4 @@ ExtraFieldsCategories=Complementary attributes CategoriesSetup=Categories setup CategorieRecursiv=Link with parent category automatically CategorieRecursivHelp=If activated, product will also linked to parent category when adding into a subcategory +ShowCategory=Show category From d6c8f65dad43bc0734b0b4b69dd3f9f14318055f Mon Sep 17 00:00:00 2001 From: BadPixxel Date: Tue, 30 Sep 2014 19:37:13 +0200 Subject: [PATCH 006/111] Minor BugFix : Missing thumbs folder in Category Images List Sub-folder for thumbs was missing in category image list, url was wrong.... --- htdocs/categories/class/categorie.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 51308174112..af16ca2d28e 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -1369,7 +1369,7 @@ class Categorie extends CommonObject // Objet $obj=array(); $obj['photo']=$photo; - if ($photo_vignette && is_file($dirthumb.$photo_vignette)) $obj['photo_vignette']=$photo_vignette; + if ($photo_vignette && is_file($dirthumb.$photo_vignette)) $obj['photo_vignette']='thumbs/' . $photo_vignette; else $obj['photo_vignette']=""; $tabobj[$nbphoto-1]=$obj; From f178aa65ca86984817dcfb04ff1c4b8765a95af9 Mon Sep 17 00:00:00 2001 From: BadPixxel Date: Tue, 30 Sep 2014 19:43:21 +0200 Subject: [PATCH 007/111] removed "thumb\" subdir addition Category Image Thumb sub-folder now directly added by function liste_photos --- htdocs/categories/photos.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/categories/photos.php b/htdocs/categories/photos.php index 69a8bb97eab..c54d7d889b2 100644 --- a/htdocs/categories/photos.php +++ b/htdocs/categories/photos.php @@ -241,7 +241,7 @@ if ($object->id) // Si fichier vignette disponible, on l'utilise, sinon on utilise photo origine if ($obj['photo_vignette']) { - $filename='thumbs/'.$obj['photo_vignette']; + $filename=$obj['photo_vignette']; } else { From 87fc27c7e649566ebb467dc32af7b65ee623f292 Mon Sep 17 00:00:00 2001 From: jfefe Date: Mon, 6 Oct 2014 13:31:01 +0200 Subject: [PATCH 008/111] Avoid missing class error for fetch_thirdparty method --- htdocs/core/class/commonobject.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 6439e3e003e..7c803a0b8a9 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -576,6 +576,9 @@ abstract class CommonObject if (empty($this->socid)) return 0; + if (!class_exists('Societe')) + require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; + $thirdparty = new Societe($this->db); $result=$thirdparty->fetch($this->socid); $this->client = $thirdparty; // deprecated From 6a4468d94ea397695033249d40e73095970fd247 Mon Sep 17 00:00:00 2001 From: jfefe Date: Mon, 6 Oct 2014 14:18:28 +0200 Subject: [PATCH 009/111] Not need to test if class exists with require_once --- htdocs/core/class/commonobject.class.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 7c803a0b8a9..3ef8241f83f 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -576,8 +576,7 @@ abstract class CommonObject if (empty($this->socid)) return 0; - if (!class_exists('Societe')) - require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; + require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; $thirdparty = new Societe($this->db); $result=$thirdparty->fetch($this->socid); From 104592b349bfe241907266a51361d48413b62f72 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Sun, 12 Oct 2014 19:08:34 +0200 Subject: [PATCH 010/111] Fix: wrong function name --- htdocs/core/class/translate.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 7a855eb9325..394dd4fad82 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -703,7 +703,7 @@ class Translate */ function getCurrencyAmount($currency_code, $amount) { - $symbol=$this->getCurrencSymbol($currency_code); + $symbol=$this->getCurrencySymbol($currency_code); if (in_array($currency_code, array('USD'))) return $symbol.$amount; else return $amount.$symbol; From 756b1d31ad24a7908a875e180ebc7a759ef31311 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Oct 2014 01:01:30 +0200 Subject: [PATCH 011/111] Add function dolEscapeXML --- htdocs/core/lib/functions.lib.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index b5bac3b0ab0..c7d1546e976 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -427,6 +427,18 @@ function dol_string_nospecial($str,$newstr='_',$badchars='') return str_replace($forbidden_chars_to_replace,$newstr,str_replace($forbidden_chars_to_remove,"",$str)); } + +/** + * Encode string for xml usage + * + * @param string $string String to encode + * @return string String encoded + */ +function dolEscapeXML($string) +{ + return strtr($string, array('\''=>''','"'=>'"','&'=>'&','<'=>'<','>'=>'>')); +} + /** * Returns text escaped for inclusion into javascript code * @@ -3468,6 +3480,7 @@ function dol_nl2br($stringtoencode,$nl2brmode=0,$forxml=false) } } + /** * This function is called to encode a string into a HTML string but differs from htmlentities because * all entities but &,<,> are converted. This permits to encode special chars to entities with no double From a94f7dc3ad0ca782941c5c9129828e2c32f9524d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 16 Oct 2014 01:21:33 +0200 Subject: [PATCH 012/111] Revert "Add function dolEscapeXML" This reverts commit 756b1d31ad24a7908a875e180ebc7a759ef31311. --- htdocs/core/lib/functions.lib.php | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index c7d1546e976..b5bac3b0ab0 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -427,18 +427,6 @@ function dol_string_nospecial($str,$newstr='_',$badchars='') return str_replace($forbidden_chars_to_replace,$newstr,str_replace($forbidden_chars_to_remove,"",$str)); } - -/** - * Encode string for xml usage - * - * @param string $string String to encode - * @return string String encoded - */ -function dolEscapeXML($string) -{ - return strtr($string, array('\''=>''','"'=>'"','&'=>'&','<'=>'<','>'=>'>')); -} - /** * Returns text escaped for inclusion into javascript code * @@ -3480,7 +3468,6 @@ function dol_nl2br($stringtoencode,$nl2brmode=0,$forxml=false) } } - /** * This function is called to encode a string into a HTML string but differs from htmlentities because * all entities but &,<,> are converted. This permits to encode special chars to entities with no double From 29db45c76330900046cb456de645357f17f6a107 Mon Sep 17 00:00:00 2001 From: jfefe Date: Thu, 23 Oct 2014 01:15:05 +0200 Subject: [PATCH 013/111] Avoid missing class error for fetch_thirdparty method --- htdocs/core/class/commonobject.class.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 6439e3e003e..e363eda6e4a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -575,6 +575,9 @@ abstract class CommonObject global $conf; if (empty($this->socid)) return 0; + + if (!class_exists('Societe')) + require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; $thirdparty = new Societe($this->db); $result=$thirdparty->fetch($this->socid); From 1405c03f7d78dc6b65d8c1880dcfde2900cf0d6d Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 26 Oct 2014 06:48:08 +0100 Subject: [PATCH 014/111] Fix: Civility & birthdate wasn't save into adherent module --- ChangeLog | 11 ++++++----- htdocs/adherents/class/adherent.class.php | 13 +++++++------ htdocs/adherents/fiche.php | 5 +++-- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index a1ec979f287..cc1c3c0de2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,17 +4,18 @@ English Dolibarr ChangeLog ***** ChangeLog for 3.6.2 compared to 3.6.1 ***** -- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice -- Fix: bug 1588 : relative discount +- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice. +- Fix: bug 1588 : relative discount. - Fix: label of input method not tranlated. - Fix: box of customer and propsects were not correctly disabled. -- Fix: right and error management #1961 -- Fix: Fix Error when trying to clone an Order #1943 +- Fix: right and error management #1961. +- Fix: Fix Error when trying to clone an Order #1943. +- Fix: Civility & birthdate wasn't save into adherent module. ***** ChangeLog for 3.6.1 compared to 3.6.* ***** For users: - Fix: Can upload files on services. -- Fix: sql errors on updat fichinter. +- Fix: sql errors on update fichinter. - Fix: debian script syntax error. - Fix: error "menu param is not inside list" into pos module. - Fix: Salary payments are not reflected on the reporting sheets. diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index 04056e0bbb0..0fa60a0d421 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -5,6 +5,7 @@ * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2009-2012 Regis Houssin + * Copyright (C) 2014 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -124,7 +125,7 @@ class Adherent extends CommonObject /** - * Fonction envoyant un email a l'adherent avec le texte fourni en parametre. + * Function sending an email has the adherent with the text supplied in parameter. * * @param string $text Content of message (not html entities encoded) * @param string $subject Subject of message @@ -247,9 +248,9 @@ class Adherent extends CommonObject /** - * Renvoie le libelle traduit de la nature d'un adherent (physique ou morale) + * Return translated label by the nature of a adherent (physical or moral) * - * @param string $morphy Nature physique ou morale de l'adherent + * @param string $morphy Nature of the adherent (physical or moral) * @return string Label */ function getmorphylib($morphy='') @@ -348,12 +349,12 @@ class Adherent extends CommonObject if (! $notrigger) { - // Appel des triggers + // Call triggers include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $interface=new Interfaces($this->db); $result=$interface->run_triggers('MEMBER_CREATE',$this,$user,$langs,$conf); if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers + // End call triggers } if (count($this->errors)) @@ -1101,7 +1102,7 @@ class Adherent extends CommonObject $this->ref = $obj->rowid; $this->id = $obj->rowid; $this->ref_ext = $obj->ref_ext; - $this->civility_id = $obj->civility; + $this->civility_id = $obj->civility_id; $this->firstname = $obj->firstname; $this->lastname = $obj->lastname; $this->login = $obj->login; diff --git a/htdocs/adherents/fiche.php b/htdocs/adherents/fiche.php index cd398c75859..ef04edeeb53 100644 --- a/htdocs/adherents/fiche.php +++ b/htdocs/adherents/fiche.php @@ -5,6 +5,7 @@ * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2012 Marcos García * Copyright (C) 2012-2013 Philippe Grand + * Copyright (C) 2014 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -707,7 +708,7 @@ else { /* ************************************************************************** */ /* */ - /* Fiche creation */ + /* Creation card */ /* */ /* ************************************************************************** */ $object->canvas=$canvas; @@ -870,7 +871,7 @@ else // Birthday print "".$langs->trans("Birthday")."\n"; - $form->select_date(($object->naiss ? $object->naiss : -1),'naiss','','',1,'formsoc'); + $form->select_date(($object->birth ? $object->birth : -1),'birth','','',1,'formsoc'); print "\n"; // Profil public From d846dd24316acf8f9fc6fce9680b700a013a7de5 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 27 Oct 2014 19:38:27 +0100 Subject: [PATCH 015/111] Fix extrafield from list feature where filter is provided --- htdocs/core/class/extrafields.class.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index c9e5d937a18..16583c0703c 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -743,15 +743,17 @@ class ExtraFields if (strpos($InfoFieldList[4], 'extra')!==false) { $sql.= ' as main, '.MAIN_DB_PREFIX .$InfoFieldList[0].'_extrafields as extra'; - $sqlwhere.= ' AND extra.fk_object=main.'.$InfoFieldList[2]. ' AND '.$InfoFieldList[4]; + $sqlwhere.= ' WHERE extra.fk_object=main.'.$InfoFieldList[2]. ' AND '.$InfoFieldList[4]; } else { - $sqlwhere.= ' AND '.$InfoFieldList[4]; + $sqlwhere.= ' WHERE '.$InfoFieldList[4]; } + }else { + $sqlwhere.= ' WHERE 1'; } if (in_array($InfoFieldList[0],array('tablewithentity'))) $sqlwhere.= ' AND entity = '.$conf->entity; // Some tables may have field, some other not. For the moment we disable it. - $sql.=preg_replace('/^ AND /','',$sqlwhere); + //$sql.=preg_replace('/^ AND /','',$sqlwhere); //print $sql; dol_syslog(get_class($this).'::showInputField type=sellist sql='.$sql); @@ -979,7 +981,10 @@ class ExtraFields { foreach ($fields_label as $field_toshow) { - $translabel=$langs->trans($obj->$field_toshow); + $translabel=''; + if (!empty($obj->$field_toshow)) { + $translabel=$langs->trans($obj->$field_toshow); + } if ($translabel!=$field_toshow) { $value.=dol_trunc($translabel,18).' '; }else { @@ -989,7 +994,10 @@ class ExtraFields } else { - $translabel=$langs->trans($obj->$InfoFieldList[1]); + $translabel=''; + if (!empty($obj->$InfoFieldList[1])) { + $translabel=$langs->trans($obj->$InfoFieldList[1]); + } if ($translabel!=$obj->$InfoFieldList[1]) { $value=dol_trunc($translabel,18); }else { From 834a6dc2af74a4fc482171a8e3c352acb7a54e10 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Tue, 28 Oct 2014 16:50:44 +0100 Subject: [PATCH 016/111] webservice Thirdparty parameter lastname for invidual creation is now lastname and not ref --- ChangeLog | 1 + htdocs/webservices/server_thirdparty.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c2ad4b7ecf1..b75afb18be0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,7 @@ English Dolibarr ChangeLog - Fix: right and error management #1961 - Fix: Fix Error when trying to clone an Order #1943 - Fix: [ bug #1618 ] PHP Error thrown when saving a barcode +- Fix: webservice Thirdparty parameter lastname for invidual creation is now lastname and not ref ***** ChangeLog for 3.6.1 compared to 3.6.* ***** For users: diff --git a/htdocs/webservices/server_thirdparty.php b/htdocs/webservices/server_thirdparty.php index c5ac0c8c686..4a295cd3bfa 100644 --- a/htdocs/webservices/server_thirdparty.php +++ b/htdocs/webservices/server_thirdparty.php @@ -460,7 +460,7 @@ function createThirdParty($authentication,$thirdparty) $result=$newobject->create($fuser); if ($newobject->particulier && $result > 0) { $newobject->firstname = $thirdparty['firstname']; - $newobject->name_bis = $thirdparty['ref']; + $newobject->name_bis = $thirdparty['lastname']; $result = $newobject->create_individual($fuser); } if ($result <= 0) From c5045a75d8884fe8ce871c3836137b57793be8d5 Mon Sep 17 00:00:00 2001 From: jfefe Date: Thu, 30 Oct 2014 01:16:37 +0100 Subject: [PATCH 017/111] Missing trans key into resource module --- htdocs/langs/en_US/resource.lang | 4 +++- htdocs/langs/fr_FR/resource.lang | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/resource.lang b/htdocs/langs/en_US/resource.lang index 502d328d7c3..b17cae82f29 100755 --- a/htdocs/langs/en_US/resource.lang +++ b/htdocs/langs/en_US/resource.lang @@ -32,4 +32,6 @@ ResourceLinkedWithSuccess=Resource linked with success TitleResourceCard=Resource card ConfirmDeleteResource=Confirm to delete this resource RessourceSuccessfullyDeleted=Resource successfully deleted -DictionaryResourceType=Type of resources \ No newline at end of file +DictionaryResourceType=Type of resources + +SelectResource=Select resource diff --git a/htdocs/langs/fr_FR/resource.lang b/htdocs/langs/fr_FR/resource.lang index e4c8a6ade87..5059d628092 100755 --- a/htdocs/langs/fr_FR/resource.lang +++ b/htdocs/langs/fr_FR/resource.lang @@ -32,4 +32,6 @@ ResourceLinkedWithSuccess=Ressource liée avec succès TitleResourceCard=Fiche ressource ConfirmDeleteResource=Confirmer la suppression de cette ressource? RessourceSuccessfullyDeleted=Ressource effacée avec succès -DictionaryResourceType=Type de ressources \ No newline at end of file +DictionaryResourceType=Type de ressources + +SelectResource=Sélectionner la ressource From e370ffb2d44cdd453fde42e48e9955908f073330 Mon Sep 17 00:00:00 2001 From: jfefe Date: Thu, 30 Oct 2014 01:33:39 +0100 Subject: [PATCH 018/111] Bad function call --- htdocs/resource/class/resource.class.php | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php index 9cf6a83ef1d..d9ad13f83b1 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/resource.class.php @@ -23,8 +23,8 @@ */ // Put here all includes required by your class file -require_once(DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"); - +require_once DOL_DOCUMENT_ROOT."/core/class/commonobject.class.php"; +require_once DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"; /** * DAO Resource object @@ -330,12 +330,12 @@ class Resource extends CommonObject function delete($rowid, $notrigger=0) { global $user,$langs,$conf; - + $error=0; - + $sql = "DELETE FROM ".MAIN_DB_PREFIX."resource"; $sql.= " WHERE rowid =".$rowid; - + dol_syslog(get_class($this)."::delete sql=".$sql); if ($this->db->query($sql)) { @@ -355,7 +355,7 @@ class Resource extends CommonObject } // End call triggers } - + return 1; } else { @@ -371,7 +371,7 @@ class Resource extends CommonObject return -1; } } - + /** * Load resource objects into $this->lines * @@ -507,9 +507,9 @@ class Resource extends CommonObject $line->fk_user_create = $obj->fk_user_create; if($obj->resource_id && $obj->resource_type) - $line->objresource = $this->fetchObjectByElement($obj->resource_id,$obj->resource_type); + $line->objresource = fetchObjectByElement($obj->resource_id,$obj->resource_type); if($obj->element_id && $obj->element_type) - $line->objelement = $this->fetchObjectByElement($obj->element_id,$obj->element_type); + $line->objelement = fetchObjectByElement($obj->element_id,$obj->element_type); $this->lines[$i] = $line; $i++; @@ -591,7 +591,7 @@ class Resource extends CommonObject $line->mandatory = $obj->mandatory; $line->fk_user_create = $obj->fk_user_create; - $this->lines[$i] = $this->fetchObjectByElement($obj->resource_id,$obj->resource_type); + $this->lines[$i] = fetchObjectByElement($obj->resource_id,$obj->resource_type); $i++; } @@ -814,7 +814,7 @@ class Resource extends CommonObject $i=0; foreach($resources as $nb => $resource) { - $this->lines[$i] = $this->fetchObjectByElement($resource['resource_id'],$resource['resource_type']); + $this->lines[$i] = fetchObjectByElement($resource['resource_id'],$resource['resource_type']); $i++; } return $i; From e3041f45ee9f61dccfdfed370acbd97ce9364656 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 30 Oct 2014 18:08:42 +0100 Subject: [PATCH 019/111] Update changelog --- ChangeLog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ChangeLog b/ChangeLog index cc36bf92412..bab2b804a5c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ English Dolibarr ChangeLog -------------------------------------------------------------- + +***** ChangeLog for 3.5.6 compared to 3.5.5 ***** +Fix: Avoid missing class error for fetch_thirdparty method #1973 + ***** ChangeLog for 3.5.5 compared to 3.5.4 ***** Fix: Holiday module was broken. Initializaion of amount of holidays failed. Fix: [ bug #1523 ] suite bug #1334 : filtre et ordre de tri conjoints ne s'appliquent pas. From 57f49ec5d4ddcd4b30c24255eb8ac822aa110aad Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 30 Oct 2014 20:41:08 +0100 Subject: [PATCH 020/111] GPLv3 --- .../admin/adherent_type_extrafields.php | 3 +- htdocs/core/class/html.formcron.class.php | 3 +- htdocs/core/lib/invoice2.lib.php | 27 ++++++++-------- htdocs/install/mssql/functions/functions.sql | Bin 5088 -> 5010 bytes .../class/html.formresource.class.php | 29 +++++++++--------- 5 files changed, 33 insertions(+), 29 deletions(-) diff --git a/htdocs/adherents/admin/adherent_type_extrafields.php b/htdocs/adherents/admin/adherent_type_extrafields.php index dca8796b681..aa5e8cfa8d9 100644 --- a/htdocs/adherents/admin/adherent_type_extrafields.php +++ b/htdocs/adherents/admin/adherent_type_extrafields.php @@ -7,7 +7,7 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -17,6 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . + * or see http://www.gnu.org/ */ /** diff --git a/htdocs/core/class/html.formcron.class.php b/htdocs/core/class/html.formcron.class.php index bce8d9f041e..4de88a7bfc9 100644 --- a/htdocs/core/class/html.formcron.class.php +++ b/htdocs/core/class/html.formcron.class.php @@ -4,7 +4,7 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, @@ -14,6 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . + * or see http://www.gnu.org/ */ /** diff --git a/htdocs/core/lib/invoice2.lib.php b/htdocs/core/lib/invoice2.lib.php index 9309d083187..fb9d8f90f70 100644 --- a/htdocs/core/lib/invoice2.lib.php +++ b/htdocs/core/lib/invoice2.lib.php @@ -2,19 +2,20 @@ /* * Copyright (C) 2009-2013 Laurent Destailleur * -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see http://www.gnu.org/ + */ /** * \file htdocs/core/lib/invoice2.lib.php diff --git a/htdocs/install/mssql/functions/functions.sql b/htdocs/install/mssql/functions/functions.sql index 93766a224064a3dc68cab3dc0878f1477af69f1d..1c2c76996dc312cc2440a2329d46530adb815d7c 100644 GIT binary patch delta 170 zcmaE$K1qE87c-;rW^QI(=6XE_1qM%sG$5JBkk3%UpaWzTGo%8c0)q`h22iAgp@6}P zK_3Xq!BCGO9jLaHK@X_D2*}oF$YIE2NCxW21M4gXir4{VxfpbTPywt8VJ4c1V%Uw` JEX{tD2LNb29=HGi delta 197 zcmbQF{y=>L7c-;LW^QI(W@T#z1%^z9G$5JBkk3%UpaW!;GZX>EN*Gds>=K6j$!nQZ zS-BW=8FVLKWD>6jsqh4H -* -* This program is free software; you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation; either version 2 of the License, or -* (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -*/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see http://www.gnu.org/ + */ /** * \file place/class/html.place.class.php From e43de8b815f46a690c62cc0284120cc34623be35 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Fri, 31 Oct 2014 07:37:59 +0100 Subject: [PATCH 021/111] Update module accounting --- htdocs/accountancy/admin/account.php | 60 ++++++++++++++------- htdocs/accountancy/admin/card.php | 5 -- htdocs/core/menus/standard/eldy.lib.php | 2 +- htdocs/core/modules/modAccounting.class.php | 8 +++ 4 files changed, 49 insertions(+), 26 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 60ff4b125c3..fbb8cf84baa 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -37,6 +37,12 @@ $mesg = ''; $action = GETPOST('action'); $id = GETPOST('id', 'int'); $rowid = GETPOST('rowid', 'int'); +$search= GETPOST("search"); +$search_account = GETPOST("search_account"); +$search_label = GETPOST("search_label"); +$search_accountparent = GETPOST("search_accountparent"); +$search_pcgtype = GETPOST("search_pcgtype"); +$search_pcgsubtype = GETPOST("search_pcgsubtype"); // Security check if (!$user->admin) @@ -83,6 +89,16 @@ if ($action == 'disable') { } } +if (GETPOST("button_removefilter")) +{ + $search=""; + $search_account=""; + $search_label=""; + $search_accountparent=""; + $search_pcgtype=""; + $search_pcgsubtype=""; +} + /* * View * @@ -96,20 +112,20 @@ $sql .= " FROM " . MAIN_DB_PREFIX . "accountingaccount as aa, " . MAIN_DB_PREFIX $sql .= " WHERE aa.fk_pcg_version = asy.pcg_version"; $sql .= " AND asy.rowid = " . $pcgver; -if (strlen(trim($_GET["search_account"]))) { - $sql .= " AND aa.account_number like '%" . $_GET["search_account"] . "%'"; +if (strlen(trim($search_account))) { + $sql .= " AND aa.account_number like '%" . $search_account . "%'"; } -if (strlen(trim($_GET["search_label"]))) { - $sql .= " AND aa.label like '%" . $_GET["search_label"] . "%'"; +if (strlen(trim($search_label))) { + $sql .= " AND aa.label like '%" . $search_label . "%'"; } -if (strlen(trim($_GET["search_accountparent"]))) { - $sql .= " AND aa.account_parent like '%" . $_GET["search_accountparent"] . "%'"; +if (strlen(trim($search_accountparent))) { + $sql .= " AND aa.account_parent like '%" . $search_accountparent . "%'"; } -if (strlen(trim($_GET["search_pcgtype"]))) { - $sql .= " AND aa.pcg_type like '%" . $_GET["search_pcgtype"] . "%'"; +if (strlen(trim($search_pcgtype))) { + $sql .= " AND aa.pcg_type like '%" . $search_pcgtype . "%'"; } -if (strlen(trim($_GET["search_pcgsubtype"]))) { - $sql .= " AND aa.pcg_subtype like '%" . $_GET["search_pcgsubtype"] . "%'"; +if (strlen(trim($search_pcgsubtype))) { + $sql .= " AND aa.pcg_subtype like '%" . $search_pcgsubtype . "%'"; } $sql .= $db->order($sortfield, $sortorder); @@ -141,18 +157,20 @@ if ($result) { print_liste_field_titre($langs->trans("Pcgtype"), $_SERVER["PHP_SELF"], "aa.pcg_type", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Pcgsubtype"), $_SERVER["PHP_SELF"], "aa.pcg_subtype", "", $param, "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Active"), $_SERVER["PHP_SELF"], "aa.active", "", $param, "", $sortfield, $sortorder); - print_liste_field_titre(" "); + print_liste_field_titre($langs->trans("Action"),$_SERVER["PHP_SELF"],"",$param,"",'width="60" align="center"',$sortfield,$sortorder); print ''; print ''; - print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; + print ''; print ' '; - print ''; - print ''; + print ''; + print ''; + print '  '; + print ''; print ''; print ''; @@ -180,11 +198,13 @@ if ($result) { } print ''; - print ''; + // Action + print ''; if ($user->admin) { print ''; print img_edit(); - print ' '; + print ''; + print ' '; print ''; print img_delete(); print ''; diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 9ebdea5fefc..ad6ca01b6ca 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -181,11 +181,6 @@ else if ($id) if ($action == 'update') { - // WYSIWYG Editor - $htmlacc = new FormVentilation($db); - - require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; - $soc = new Societe($db); if ($object->socid) { $soc->fetch($object->socid); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 1d6e12b1357..71b6d29ea42 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -952,7 +952,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->accounting->enabled)) { $newmenu->add("/accountancy/admin/fiscalyear.php?mainmenu=accountancy", $langs->trans("Fiscalyear"),0,$user->rights->accounting->fiscalyear, '', $mainmenu, 'fiscalyear'); - $newmenu->add("/accountancy/admin/account.php?mainmenu=home", $langs->trans("Chartofaccounts"),0,$user->rights->accounting->fiscalyear, '', $mainmenu, 'fiscalyear'); + $newmenu->add("/accountancy/admin/account.php?mainmenu=accountancy", $langs->trans("Chartofaccounts"),0,$user->rights->accounting->chartofaccount, '', $mainmenu, 'chartofaccount'); } } diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index 9a544b1ece0..e074bfe82f1 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -229,6 +229,14 @@ class modAccounting extends DolibarrModules $this->rights[$r][4] = 'fiscalyear'; $this->rights[$r][5] = ''; $r++; + + $this->rights[$r][0] = 50440; + $this->rights[$r][1] = 'Manage chart of accounts'; + $this->rights[$r][2] = 'r'; + $this->rights[$r][3] = 1; + $this->rights[$r][4] = 'chartofaccount'; + $this->rights[$r][5] = ''; + $r++; // Main menu entries $this->menus = array(); From ccddf0d1bee301e91b65128ff757dfbe997683ae Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Fri, 31 Oct 2014 16:56:14 +0100 Subject: [PATCH 022/111] Fix : actioncomme report was not filtering by entity... --- htdocs/core/modules/action/rapport.pdf.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/modules/action/rapport.pdf.php b/htdocs/core/modules/action/rapport.pdf.php index d595dfe5579..ea92973101f 100644 --- a/htdocs/core/modules/action/rapport.pdf.php +++ b/htdocs/core/modules/action/rapport.pdf.php @@ -182,6 +182,7 @@ class CommActionRapport $sql.= " WHERE c.id=a.fk_action AND a.fk_user_author = u.rowid"; $sql.= " AND a.datep BETWEEN '".$this->db->idate(dol_get_first_day($this->year,$this->month,false))."'"; $sql.= " AND '".$this->db->idate(dol_get_last_day($this->year,$this->month,false))."'"; + $sql.= " AND a.entity = ".$conf->entity; $sql.= " ORDER BY a.datep DESC"; dol_syslog(get_class($this)."::_page sql=".$sql); From 4951feeb8f05cdbb21e8b4f5e30d91dd57f985a4 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 1 Nov 2014 07:59:52 +0100 Subject: [PATCH 023/111] Correct rights & presentation --- htdocs/accountancy/admin/account.php | 4 +- htdocs/accountancy/bookkeeping/card.php | 38 +++++----- htdocs/accountancy/bookkeeping/list.php | 70 ++++++++++++------- htdocs/accountancy/customer/card.php | 6 +- htdocs/accountancy/customer/index.php | 8 +-- htdocs/accountancy/journal/bankjournal.php | 2 - htdocs/accountancy/journal/cashjournal.php | 2 - htdocs/accountancy/journal/index.php | 2 - .../accountancy/journal/purchasesjournal.php | 2 - htdocs/accountancy/journal/sellsjournal.php | 2 - htdocs/accountancy/supplier/card.php | 7 +- htdocs/accountancy/supplier/index.php | 6 +- 12 files changed, 73 insertions(+), 76 deletions(-) diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index fbb8cf84baa..36739254d06 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -37,7 +37,6 @@ $mesg = ''; $action = GETPOST('action'); $id = GETPOST('id', 'int'); $rowid = GETPOST('rowid', 'int'); -$search= GETPOST("search"); $search_account = GETPOST("search_account"); $search_label = GETPOST("search_label"); $search_accountparent = GETPOST("search_accountparent"); @@ -91,7 +90,6 @@ if ($action == 'disable') { if (GETPOST("button_removefilter")) { - $search=""; $search_account=""; $search_label=""; $search_accountparent=""; @@ -169,7 +167,7 @@ if ($result) { print ' '; print ''; print ''; - print '  '; + print ' '; print ''; print ''; print ''; diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index 9e109c7feeb..608c62cf1d0 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -35,8 +35,6 @@ $langs->load("accounting"); $id = GETPOST('id', 'int'); if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); $action = GETPOST('action'); $piece_num = GETPOST("piece_num"); @@ -238,7 +236,9 @@ if ($action == 'create') { print ''; print ''; -} else { +} +else +{ $book = new BookKeeping($db); $result = $book->fetch_per_mvt($piece_num); if ($result < 0) { @@ -309,14 +309,12 @@ if ($action == 'create') { print ''; print '' . $line->montant . ''; print '' . $line->sens . ''; - print ''; - if ($user->rights->accounting->access) { - print ''; - } + print ''; print ''; print ''; - } else { + } + else { print '' . $line->numero_compte . ''; print '' . $line->code_tiers . ''; print '' . $line->label_compte . ''; @@ -324,16 +322,15 @@ if ($action == 'create') { print '' . $line->credit . ''; print '' . $line->montant . ''; print '' . $line->sens . ''; - + print ''; - if ($user->rights->accouting->access) { - print ''; - print img_edit(); - print ' '; - print ''; - print img_delete(); - print ''; - } + print ''; + print img_edit(); + print ' '; + print ''; + print img_delete(); + print ''; + print ''; } print "\n"; @@ -342,7 +339,7 @@ if ($action == 'create') { if ($action == "" || $action == 'add') { $var = ! $var; print ""; - + print '
'; print '' . "\n"; print '' . "\n"; @@ -359,14 +356,13 @@ if ($action == 'create') { print ''; print ''; print ''; - print ''; } - print ""; } } - } else { + } + else { print_fiche_titre($langs->trans("NoRecords")); } } diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index b0e5096699b..21da5bacbb9 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -36,6 +36,11 @@ $page = GETPOST("page"); $sortorder = GETPOST("sortorder"); $sortfield = GETPOST("sortfield"); $action = GETPOST('action', 'alpha'); +$search_doc_type = GETPOST("search_doc_type"); +$search_doc_ref = GETPOST("search_doc_ref"); +$search_account = GETPOST("search_account"); +$search_thirdparty = GETPOST("search_thirdparty"); +$search_journal = GETPOST("search_journal"); if ($sortorder == "") $sortorder = "ASC"; @@ -46,6 +51,15 @@ $offset = $conf->liste_limit * $page; $formventilation = new FormVentilation($db); +if (GETPOST("button_removefilter")) +{ + $search_doc_type=""; + $search_doc_ref=""; + $search_account=""; + $search_thirdparty=""; + $search_journal=""; +} + /* * Action */ @@ -100,25 +114,25 @@ else { $sql = "SELECT bk.rowid, bk.doc_date, bk.doc_type, bk.doc_ref, bk.code_tiers, bk.numero_compte , bk.label_compte, bk.debit , bk.credit, bk.montant , bk.sens , bk.code_journal , bk.piece_num "; $sql .= " FROM " . MAIN_DB_PREFIX . "accounting_bookkeeping as bk"; - if (dol_strlen(trim(GETPOST("search_doc_type")))) { + if (dol_strlen(trim($search_doc_type))) { - $sql .= " WHERE bk.doc_type LIKE '%" . GETPOST("search_doc_type") . "%'"; + $sql .= " WHERE bk.doc_type LIKE '%" . $search_doc_type . "%'"; - if (dol_strlen(trim(GETPOST("search_doc_ref")))) { - $sql .= " AND bk.doc_ref LIKE '%" . GETPOST("search_doc_ref") . "%'"; + if (dol_strlen(trim($search_doc_ref))) { + $sql .= " AND bk.doc_ref LIKE '%" . $search_doc_ref . "%'"; } } - if (dol_strlen(trim(GETPOST("search_doc_ref")))) { - $sql .= " WHERE bk.doc_ref LIKE '%" . GETPOST("search_doc_ref") . "%'"; + if (dol_strlen(trim($search_doc_ref))) { + $sql .= " WHERE bk.doc_ref LIKE '%" . $search_doc_ref . "%'"; } - if (dol_strlen(trim(GETPOST("search_compte")))) { - $sql .= " WHERE bk.numero_compte LIKE '%" . GETPOST("search_compte") . "%'"; + if (dol_strlen(trim($search_account))) { + $sql .= " WHERE bk.numero_compte LIKE '%" . $search_account . "%'"; } - if (dol_strlen(trim(GETPOST("search_tiers")))) { - $sql .= " WHERE bk.code_tiers LIKE '%" . GETPOST("search_tiers") . "%'"; + if (dol_strlen(trim($search_thirdparty))) { + $sql .= " WHERE bk.code_tiers LIKE '%" . $search_thirdparty . "%'"; } - if (dol_strlen(trim(GETPOST("search_journal")))) { - $sql .= " WHERE bk.code_journal LIKE '%" . GETPOST("search_journal") . "%'"; + if (dol_strlen(trim($search_journal))) { + $sql .= " WHERE bk.code_journal LIKE '%" . $search_journal . "%'"; } $sql .= " ORDER BY $sortfield $sortorder " . $db->plimit($conf->liste_limit + 1, $offset); @@ -149,7 +163,7 @@ else { print ''; print '
'; - print ""; + print '
'; print ''; print_liste_field_titre($langs->trans("Doctype"), $_SERVER['PHP_SELF'], "bk.doc_type", "", "", "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Docdate"), $_SERVER['PHP_SELF'], "bk.doc_date", "", "", "", $sortfield, $sortorder); @@ -157,29 +171,31 @@ else { print_liste_field_titre($langs->trans("Numerocompte"), $_SERVER['PHP_SELF'], "bk.numero_compte", "", "", "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Code_tiers"), $_SERVER['PHP_SELF'], "bk.code_tiers", "", "", "", $sortfield, $sortorder); print_liste_field_titre($langs->trans("Labelcompte"), $_SERVER['PHP_SELF'], "bk_label_compte", "", "", "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Debit"), $_SERVER['PHP_SELF'], "bk.debit", "", "", "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Credit"), $_SERVER['PHP_SELF'], "bk.credit", "", "", "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Amount"), $_SERVER['PHP_SELF'], "bk.montant", "", "", "", $sortfield, $sortorder); - print_liste_field_titre($langs->trans("Sens"), $_SERVER['PHP_SELF'], "bk.sens", "", "", "", $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Debit"), $_SERVER['PHP_SELF'], "bk.debit", "", "", 'align="center"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Credit"), $_SERVER['PHP_SELF'], "bk.credit", "", "", 'align="center"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Amount"), $_SERVER['PHP_SELF'], "bk.montant", "", "", 'align="center"', $sortfield, $sortorder); + print_liste_field_titre($langs->trans("Sens"), $_SERVER['PHP_SELF'], "bk.sens", "", "", 'align="center"', $sortfield, $sortorder); print_liste_field_titre($langs->trans("Codejournal"), $_SERVER['PHP_SELF'], "bk.code_journal", "", "", "", $sortfield, $sortorder); - print_liste_field_titre(" "); + print_liste_field_titre($langs->trans("Action"),$_SERVER["PHP_SELF"],"",$param,"",'width="60" align="center"',$sortfield,$sortorder); print "\n"; print ''; print ''; - print ''; + print ''; print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; print ''; print ''; print ''; print ''; print ''; - print ''; - print ''; + print ''; print ''; print ''; @@ -201,9 +217,9 @@ else { print ''; print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print "\n"; $i ++; } diff --git a/htdocs/accountancy/customer/card.php b/htdocs/accountancy/customer/card.php index 91a0eb5df8b..28d3d0c1f79 100644 --- a/htdocs/accountancy/customer/card.php +++ b/htdocs/accountancy/customer/card.php @@ -40,14 +40,12 @@ $id = GETPOST('id'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); /* * Actions */ -if ($action == 'ventil' && $user->rights->accounting->access) +if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) { if (! GETPOST('cancel', 'alpha')) { @@ -109,7 +107,7 @@ if (! empty($id)) { print ''; $linkback=''.$langs->trans("Back").''; - print_fiche_titre($langs->trans('AccountingVentilationCustomer'),$linkback,'setup'); + print_fiche_titre($langs->trans('CustomersVentilation'),$linkback,'setup'); print '
      '; - print ''; + print ''; + print ''; + print ' '; + print ''; print '
' . price($obj->debit) . '' . price($obj->credit) . '' . price($obj->montant) . '' . $obj->sens . '' . $obj->sens . '' . $obj->code_journal . '' . img_edit() . '' . img_edit() . '
'; diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index 9ae070c25e0..cb40b7b361b 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -93,8 +93,8 @@ if ($action == 'validatehistory') { */ llxHeader('', $langs->trans("CustomersVentilation")); -$textprevyear = "" . img_previous() . ""; -$textnextyear = " " . img_next() . ""; +$textprevyear = '' . img_previous() . ''; +$textnextyear = ' ' . img_next() . ''; print_fiche_titre($langs->trans("CustomersVentilation") . " " . $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear); @@ -197,7 +197,7 @@ print "
\n"; print "
\n"; print ''; -print ''; +print ''; print ''; print ''; print ''; @@ -212,7 +212,7 @@ print ''; print ''; print ''; -$sql = "SELECT '" . $langs->trans("Vide") . "' AS 'Total',"; +$sql = "SELECT '" . $langs->trans("TotalVente") . "' AS 'Total',"; $sql .= " ROUND(SUM(IF(MONTH(f.datef)=1,fd.total_ht,0)),2) AS 'Janvier',"; $sql .= " ROUND(SUM(IF(MONTH(f.datef)=2,fd.total_ht,0)),2) AS 'Fevrier',"; $sql .= " ROUND(SUM(IF(MONTH(f.datef)=3,fd.total_ht,0)),2) AS 'Mars',"; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index dcd8fca4d41..1f9b0549121 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -68,8 +68,6 @@ $action = GETPOST('action'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); /* * View diff --git a/htdocs/accountancy/journal/cashjournal.php b/htdocs/accountancy/journal/cashjournal.php index 8af84a9ed58..fb5a15a513c 100644 --- a/htdocs/accountancy/journal/cashjournal.php +++ b/htdocs/accountancy/journal/cashjournal.php @@ -62,8 +62,6 @@ $date_endyear = GETPOST('date_endyear'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); $action = GETPOST('action'); diff --git a/htdocs/accountancy/journal/index.php b/htdocs/accountancy/journal/index.php index 272d76fa20f..36286ce265e 100644 --- a/htdocs/accountancy/journal/index.php +++ b/htdocs/accountancy/journal/index.php @@ -36,8 +36,6 @@ $langs->load("accountancy"); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); llxHeader('', 'Journaux', ''); diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 789aa1111af..97d52124c01 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -55,8 +55,6 @@ $date_endyear = GETPOST('date_endyear'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); $action = GETPOST('action'); diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index a7c0266998f..5bb1f989a92 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -56,8 +56,6 @@ $date_endyear = GETPOST('date_endyear'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->access) - accessforbidden(); $action = GETPOST('action'); diff --git a/htdocs/accountancy/supplier/card.php b/htdocs/accountancy/supplier/card.php index b0078839b55..45c8de9b165 100644 --- a/htdocs/accountancy/supplier/card.php +++ b/htdocs/accountancy/supplier/card.php @@ -46,10 +46,9 @@ $codeventil = GETPOST('codeventil'); // Security check if ($user->societe_id > 0) accessforbidden(); -if (! $user->rights->accounting->ventilation->dispatch) - accessforbidden(); -if ($action == 'ventil' && $user->rights->accounting->access) { +if ($action == 'ventil' && $user->rights->accounting->ventilation->dispatch) +{ $sql = " UPDATE " . MAIN_DB_PREFIX . "facture_fourn_det"; $sql .= " SET fk_code_ventilation = " . $codeventil; $sql .= " WHERE rowid = " . $id; @@ -103,7 +102,7 @@ if ($_GET["id"]) { print ''; print ''; - print_fiche_titre($langs->trans("Ventilation")); + print_fiche_titre($langs->trans("SuppliersVentilation")); print '
' . $langs->trans("TotalVente") . '
' . $langs->trans("Total") . '' . $langs->trans("JanuaryMin") . '' . $langs->trans("FebruaryMin") . '' . $langs->trans("MarchMin") . '' . $langs->trans("NovemberMin") . '' . $langs->trans("DecemberMin") . '' . $langs->trans("Total") . '
'; diff --git a/htdocs/accountancy/supplier/index.php b/htdocs/accountancy/supplier/index.php index 7d633c575f1..edebcfd9d46 100644 --- a/htdocs/accountancy/supplier/index.php +++ b/htdocs/accountancy/supplier/index.php @@ -92,10 +92,10 @@ if ($action == 'validatehistory') { llxHeader('', $langs->trans("SuppliersVentilation")); -$textprevyear = "" . img_previous() . ""; -$textnextyear = " " . img_next() . ""; +$textprevyear = '' . img_previous() . ''; +$textnextyear = ' ' . img_next() . ''; -print_fiche_titre($langs->trans("AccountingVentilationSupplier") . " " . $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear); +print_fiche_titre($langs->trans("SuppliersVentilation") . " " . $textprevyear . " " . $langs->trans("Year") . " " . $year_start . " " . $textnextyear); print '' . $langs->trans("DescVentilSupplier") . ''; print ''; From 53dfda1413069c1e8f4979a171be5a72053030fa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 1 Nov 2014 19:34:20 +0100 Subject: [PATCH 024/111] Fix: Chars - is no more allowed into value for code for extra fields. --- ChangeLog | 3 ++- htdocs/core/class/extrafields.class.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index abbe486707f..28d86310494 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,7 +10,8 @@ English Dolibarr ChangeLog - Fix: box of customer and propsects were not correctly disabled. - Fix: [ bug #1618 ] PHP Error thrown when saving a barcode - Fix: Civility & birthdate wasn't save into adherent module. -- Fix: webservice Thirdparty parameter lastname for invidual creation is now lastname and not ref +- Fix: webservice Thirdparty parameter lastname for invidual creation is now lastname and not ref +- Fix: Chars - is no more allowed into value for code for extra fields. ***** ChangeLog for 3.6.1 compared to 3.6.* ***** For users: diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 16583c0703c..8ce0a1b3b45 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -154,7 +154,7 @@ class ExtraFields { $table=$elementtype.'_extrafields'; - if (! empty($attrname) && preg_match("/^\w[a-zA-Z0-9-_]*$/",$attrname) && ! is_numeric($attrname)) + if (! empty($attrname) && preg_match("/^\w[a-zA-Z0-9_]*$/",$attrname) && ! is_numeric($attrname)) { if ($type=='boolean') { $typedb='int'; From f23f16da861d128c7f1e2e355fbfd151a0c7b4ac Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sat, 1 Nov 2014 21:38:50 +0100 Subject: [PATCH 025/111] Try to improve stock display for all stock increase/decrease options --- htdocs/langs/en_US/sendings.lang | 2 + htdocs/langs/fr_FR/sendings.lang | 2 + htdocs/product/class/product.class.php | 78 ++++++++++++--------- htdocs/product/stock/product.php | 95 ++++++++++++++------------ 4 files changed, 100 insertions(+), 77 deletions(-) diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index 2ae43f39766..855fced7310 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -61,6 +61,8 @@ ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is do RelatedShippings=Related shippings ShipmentLine=Shipment line CarrierList=List of transporters +SendingRunning=Product from customer order already sent +SuppliersReceiptRunning=Product from supplier order alrady received # Sending methods SendingMethodCATCH=Catch by customer diff --git a/htdocs/langs/fr_FR/sendings.lang b/htdocs/langs/fr_FR/sendings.lang index 47b359318e4..59c937c97b6 100644 --- a/htdocs/langs/fr_FR/sendings.lang +++ b/htdocs/langs/fr_FR/sendings.lang @@ -61,6 +61,8 @@ ShipmentCreationIsDoneFromOrder=Pour le moment, la création d'une nouvelle exp RelatedShippings=Expédition(s) associée(s) ShipmentLine=Ligne d'expédition CarrierList=Liste des transporteurs +SendingRunning=Produits de commandes clients déjà expédiés +SuppliersReceiptRunning=Produit de commandes fournisseurs déjà réceptionnés # Sending methods SendingMethodCATCH=Enlèvement par le client diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 226a3501652..98b5d155ba7 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3032,42 +3032,56 @@ class Product extends CommonObject * * @return int < 0 if KO, > 0 if OK */ - function load_virtual_stock() - { - global $conf; + function load_virtual_stock() + { + global $conf; - if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) - { - $stock_commande_client=$stock_commande_fournisseur=0; - $stock_sending_client=$stock_reception_fournisseur=0; + $stock_commande_client=0; + $stock_commande_fournisseur=0; + $stock_sending_client=0; + $stock_reception_fournisseur=0; - if (! empty($conf->commande->enabled)) - { - $result=$this->load_stats_commande(0,'1,2'); - if ($result < 0) dol_print_error($db,$this->error); - $stock_commande_client=$this->stats_commande['qty']; - } - if (! empty($conf->expedition->enabled)) - { - $result=$this->load_stats_sending(0,'1,2'); - if ($result < 0) dol_print_error($db,$this->error); - $stock_sending_client=$this->stats_expedition['qty']; - } - if (! empty($conf->fournisseur->enabled)) - { - $result=$this->load_stats_commande_fournisseur(0,'3'); - if ($result < 0) dol_print_error($db,$this->error); - $stock_commande_fournisseur=$this->stats_commande_fournisseur['qty']; + if (! empty($conf->commande->enabled)) { + $result=$this->load_stats_commande(0,'1,2'); + if ($result < 0) dol_print_error($db,$this->error); + $stock_commande_client=$this->stats_commande['qty']; + } + if (! empty($conf->expedition->enabled)) { + $result=$this->load_stats_sending(0,'1,2'); + if ($result < 0) dol_print_error($db,$this->error); + $stock_sending_client=$this->stats_expedition['qty']; + } + if (! empty($conf->fournisseur->enabled)) { + $result=$this->load_stats_commande_fournisseur(0,'3,4'); + if ($result < 0) dol_print_error($db,$this->error); + $stock_commande_fournisseur=$this->stats_commande_fournisseur['qty']; - $result=$this->load_stats_reception(0,'3'); - if ($result < 0) dol_print_error($db,$this->error); - $stock_reception_fournisseur=$this->stats_reception['qty']; - } + $result=$this->load_stats_reception(0,'4'); + if ($result < 0) dol_print_error($db,$this->error); + $stock_reception_fournisseur=$this->stats_reception['qty']; + } - $this->stock_theorique=$this->stock_reel-($stock_commande_client-$stock_sending_client)+($stock_commande_fournisseur-$stock_reception_fournisseur); - //echo $this->stock_theorique.' = '.$this->stock_reel.' - ('.$stock_commande_client.' - '.$stock_sending_client.') + ('.$stock_commande_fournisseur.' - '.$stock_reception_fournisseur.')'; - } - } + // Stock decrease mode + if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) { + $this->stock_theorique=$this->stock_reel-$stock_commande_client+$stock_sending_client; + } + if (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)) { + $this->stock_theorique=$this->stock_reel; + } + if (! empty($conf->global->STOCK_CALCULATE_ON_BILL)) { + $this->stock_theorique=$this->stock_reel-$stock_commande_client; + } + // Stock Increase mode + if (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)) { + $this->stock_theorique+=$stock_commande_fournisseur-$stock_reception_fournisseur; + } + if (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER)) { + $this->stock_theorique-=$stock_reception_fournisseur; + } + if (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL)) { + $this->stock_theorique+=$stock_commande_fournisseur-$stock_reception_fournisseur; + } + } /** * Move an uploaded file described into $file array into target directory $sdir. diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 7885553095e..22dc080d6e2 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -39,6 +39,7 @@ $langs->load("products"); $langs->load("orders"); $langs->load("bills"); $langs->load("stocks"); +$langs->load("sendings"); if (! empty($conf->productbatch->enabled)) $langs->load("productbatch"); @@ -331,58 +332,62 @@ if ($id > 0 || $ref) print ''; print ''; - // Calculating a theorical value + // Calculating a theorical value + print ''; + print "'; + print ''; - // If stock if stock increment is done on real sending - if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) - { - // Stock theorique - print ''; - print "'; - print ''; + print ''; + print ''; - print ''; - } + // Number of supplier order running + if (! empty($conf->fournisseur->enabled)) { + if ($found) print '
'; else $found=1; + $result=$product->load_stats_commande_fournisseur(0,'3,4'); + print $langs->trans("SuppliersOrdersRunning").': '.$product->stats_commande_fournisseur['qty']; + $result=$product->load_stats_commande_fournisseur(0,'0,1,2'); + if ($result < 0) dol_print_error($db,$product->error); + print ' ('.$langs->trans("DraftOrWaitingApproved").': '.$product->stats_commande_fournisseur['qty'].')'; + } - // If stock if stock increment is done on - // TODO Add information when stock increment is done on other option - - // TODO Add also information on possible decrease stock accroding to stock decrease option + // Number of product from supplier order already received (partial receipt) + if (! empty($conf->fournisseur->enabled)) { + if ($found) print '
'; else $found=1; + print $langs->trans("SuppliersReceiptRunning").': '.$product->stats_reception['qty']; + } + print ''; // Last movement $sql = "SELECT max(m.datem) as datem"; From 77f1e587e63f4bb4b34f64ff8c553e5f33eb0123 Mon Sep 17 00:00:00 2001 From: frederic34 Date: Sat, 1 Nov 2014 22:08:18 +0100 Subject: [PATCH 026/111] Some translations --- htdocs/langs/en_US/sendings.lang | 2 +- htdocs/langs/fr_FR/deliveries.lang | 2 ++ htdocs/langs/fr_FR/sendings.lang | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/langs/en_US/sendings.lang b/htdocs/langs/en_US/sendings.lang index 855fced7310..f6111bac684 100644 --- a/htdocs/langs/en_US/sendings.lang +++ b/htdocs/langs/en_US/sendings.lang @@ -62,7 +62,7 @@ RelatedShippings=Related shippings ShipmentLine=Shipment line CarrierList=List of transporters SendingRunning=Product from customer order already sent -SuppliersReceiptRunning=Product from supplier order alrady received +SuppliersReceiptRunning=Product from supplier order already received # Sending methods SendingMethodCATCH=Catch by customer diff --git a/htdocs/langs/fr_FR/deliveries.lang b/htdocs/langs/fr_FR/deliveries.lang index 4f61426e83c..02dd54275f6 100644 --- a/htdocs/langs/fr_FR/deliveries.lang +++ b/htdocs/langs/fr_FR/deliveries.lang @@ -24,3 +24,5 @@ Deliverer=Livreur(s) : Sender=Expéditeur Recipient=Destinataire ErrorStockIsNotEnough=Le stock est insuffisant +Shippable=Expédiable +NonShippable=Non Expédiable diff --git a/htdocs/langs/fr_FR/sendings.lang b/htdocs/langs/fr_FR/sendings.lang index 59c937c97b6..3f839ba9416 100644 --- a/htdocs/langs/fr_FR/sendings.lang +++ b/htdocs/langs/fr_FR/sendings.lang @@ -62,7 +62,7 @@ RelatedShippings=Expédition(s) associée(s) ShipmentLine=Ligne d'expédition CarrierList=Liste des transporteurs SendingRunning=Produits de commandes clients déjà expédiés -SuppliersReceiptRunning=Produit de commandes fournisseurs déjà réceptionnés +SuppliersReceiptRunning=Produits de commandes fournisseurs déjà réceptionnés # Sending methods SendingMethodCATCH=Enlèvement par le client From 627f5694f0a71b0b7fdb6a82188d732c54d029b6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 2 Nov 2014 21:16:31 +0100 Subject: [PATCH 027/111] Fix: Infinite loop --- htdocs/core/lib/date.lib.php | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 48ccec88cf1..6a5024c1c80 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -563,9 +563,10 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') $nbFerie = 0; // Check to ensure we use correct parameters - if ((($timestampEnd - $timestampStart) % 86400) != 0) return 'ErrorDates must use same hour and be GMT dates'; + if ((($timestampEnd - $timestampStart) % 86400) != 0) return 'ErrorDates must use same hours and must be GMT dates'; - while ($timestampStart < $timestampEnd) // Loop end when equals + $i=0; + while ($timestampStart < $timestampEnd && ($i < 50000)) // Loop end when equals (Test on i is a security loop to avoid infinite loop) { $ferie=false; $countryfound=0; @@ -573,7 +574,6 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') $jour = date("d", $timestampStart); $mois = date("m", $timestampStart); $annee = date("Y", $timestampStart); - if ($countrycode == 'FR') { $countryfound=1; @@ -676,8 +676,10 @@ function num_public_holiday($timestampStart, $timestampEnd, $countrycode='FR') if ($ferie) $nbFerie++; // Increase number of days (on go up into loop) - $jour++; - $timestampStart=dol_mktime(0,0,0,$mois,$jour,$annee,1); // Generate GMT date for next day + $timestampStart=dol_time_plus_duree($timestampStart, 1, 'd'); + //var_dump($jour.' '.$mois.' '.$annee.' '.$timestampStart); + + $i++; } return $nbFerie; @@ -718,13 +720,16 @@ function num_between_day($timestampStart, $timestampEnd, $lastday=0) * @param int $inhour 0: return number of days, 1: return number of hours * @param int $lastday We include last day, 0: no, 1:yes * @param int $halfday Tag to define half day when holiday start and end + * @param string $countrycode Country code (company country code if not defined) * @return int Number of days or hours */ -function num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $halfday=0) +function num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $halfday=0, $country_code='') { - global $langs; + global $langs,$mysoc; - dol_syslog('num_open_day timestampStart='.$timestampStart.' timestampEnd='.$timestampEnd.' bit='.$lastday); + if (empty($country_code)) $country_code=$mysoc->country_code; + + dol_syslog('num_open_day timestampStart='.$timestampStart.' timestampEnd='.$timestampEnd.' bit='.$lastday.' country_code='.$country_code); // Check parameters if (! is_int($timestampStart) && ! is_float($timestampStart)) return 'ErrorBadParameter_num_open_day'; @@ -733,7 +738,9 @@ function num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $ha //print 'num_open_day timestampStart='.$timestampStart.' timestampEnd='.$timestampEnd.' bit='.$lastday; if ($timestampStart < $timestampEnd) { - $nbOpenDay = num_between_day($timestampStart, $timestampEnd, $lastday) - num_public_holiday($timestampStart, $timestampEnd, $lastday); + $numdays = num_between_day($timestampStart, $timestampEnd, $lastday); + $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code); + $nbOpenDay = $numdays - $numholidays; $nbOpenDay.= " " . $langs->trans("Days"); if ($inhour == 1 && $nbOpenDay <= 3) $nbOpenDay = $nbOpenDay*24 . $langs->trans("HourShort"); return $nbOpenDay - (($inhour == 1 ? 12 : 0.5) * abs($halfday)); From ca69bf9d7eb7b611bc09f8b32faaf69531df4edb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 2 Nov 2014 21:20:24 +0100 Subject: [PATCH 028/111] Fix: Infinite loop --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 28d86310494..25d8c7d638d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,7 @@ English Dolibarr ChangeLog - Fix: Civility & birthdate wasn't save into adherent module. - Fix: webservice Thirdparty parameter lastname for invidual creation is now lastname and not ref - Fix: Chars - is no more allowed into value for code for extra fields. +( Fix: [ bug #1622 ] Requesting holiday than spans across two years cause high CPU usage by Apache ***** ChangeLog for 3.6.1 compared to 3.6.* ***** For users: From d177a2fbb4b0eebb2586cc8fd562391a68ff5872 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Tue, 4 Nov 2014 16:13:51 +0100 Subject: [PATCH 029/111] fix bug on thm --- htdocs/projet/class/task.class.php | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index c97b51e53a4..642441a27b6 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -769,7 +769,7 @@ class Task extends CommonObject if ($this->db->query($sql) ) { $tasktime_id = $this->db->last_insert_id(MAIN_DB_PREFIX."projet_task_time"); - $ret = $tasktme_id; + $ret = $tasktime_id; if (! $notrigger) { @@ -801,10 +801,7 @@ class Task extends CommonObject dol_syslog(get_class($this)."::addTimeSpent error -2 ".$this->error, LOG_ERR); $ret = -2; } - } - - if ($ret >= 0) - { + $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task_time"; $sql.= " SET thm = (SELECT thm FROM ".MAIN_DB_PREFIX."user WHERE rowid = ".$this->timespent_fk_user.")"; $sql.= " WHERE rowid = ".$tasktime_id; From 5742e42689a8090fa92818022689e9c30a34621e Mon Sep 17 00:00:00 2001 From: Andrelec1 Date: Wed, 5 Nov 2014 14:24:02 +0100 Subject: [PATCH 030/111] Fix require FormOther ! If agenda module is desable --- htdocs/user/card.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/user/card.php b/htdocs/user/card.php index 4760f73f855..9c2290cc629 100644 --- a/htdocs/user/card.php +++ b/htdocs/user/card.php @@ -36,7 +36,8 @@ require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/usergroups.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; -if (! empty($conf->agenda->enabled))require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; +//if (! empty($conf->agenda->enabled))require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; if (! empty($conf->ldap->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/class/ldap.class.php'; if (! empty($conf->adherent->enabled)) require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; if (! empty($conf->multicompany->enabled)) dol_include_once('/multicompany/class/actions_multicompany.class.php'); From 90fb05805c46e2ab0e25804ed3a9b44624c51d6e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 5 Nov 2014 16:21:17 +0100 Subject: [PATCH 031/111] Fix: Missing translation --- htdocs/compta/prelevement/factures.php | 3 ++- htdocs/langs/en_US/main.lang | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/prelevement/factures.php b/htdocs/compta/prelevement/factures.php index bf3e428cd0e..d11fefbb6cb 100644 --- a/htdocs/compta/prelevement/factures.php +++ b/htdocs/compta/prelevement/factures.php @@ -213,6 +213,7 @@ else dol_print_error($db); } -$db->close(); llxFooter(); + +$db->close(); diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index a18522be5f8..cbc4deb40d7 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -367,6 +367,7 @@ ActionsOnCompany=Events about this third party ActionsOnMember=Events about this member NActions=%s events NActionsLate=%s late +RequestAlreadyDone=Request already recorded Filter=Filter RemoveFilter=Remove filter ChartGenerated=Chart generated From f7e71d88480ff1daf782836e8c1832dfe5772d1e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 5 Nov 2014 16:23:10 +0100 Subject: [PATCH 032/111] Fix: checkstyle --- .../generate/modGeneratePassPerso.class.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php b/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php index aedc870560f..7440a357ea8 100644 --- a/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php +++ b/htdocs/core/modules/security/generate/modGeneratePassPerso.class.php @@ -90,11 +90,12 @@ class modGeneratePassPerso extends ModeleGenPassword $this->NbRepeat = $tabConf[4]; $this->WithoutAmbi = $tabConf[5]; - if($this->WithoutAmbi){ - $this->Maj = str_replace($this->Ambi,"",$this->Maj ); - $this->Min = str_replace($this->Ambi,"",$this->Min ); - $this->Nb = str_replace($this->Ambi,"",$this->Nb ); - $this->Spe = str_replace($this->Ambi,"",$this->Spe ); + if ($this->WithoutAmbi) + { + $this->Maj = str_replace($this->Ambi,"",$this->Maj); + $this->Min = str_replace($this->Ambi,"",$this->Min); + $this->Nb = str_replace($this->Ambi,"",$this->Nb); + $this->Spe = str_replace($this->Ambi,"",$this->Spe); } $this->All = str_shuffle($this->Maj. $this->Min. $this->Nb. $this->Spe); @@ -148,11 +149,13 @@ class modGeneratePassPerso extends ModeleGenPassword $pass .= $this->All[rand(0,strlen($this->All) -1)]; } - $pass = str_shuffle($pass) ; + $pass = str_shuffle($pass); - if($this->validatePassword($pass)) { + if ($this->validatePassword($pass)) + { return $pass; } + return $this->getNewGeneratedPassword(); } From 31c38cedbc4119965d02bb2d9b844791e6f90f30 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 5 Nov 2014 16:26:11 +0100 Subject: [PATCH 033/111] Fix: checkstyle --- htdocs/core/lib/date.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 6a5024c1c80..924d3da2259 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -524,7 +524,7 @@ function dol_get_first_day_week($day,$month,$year,$gm=false) } $tmpmonth = $prev_month; $tmpyear = $prev_year; - + //Get first day of next week $tmptime=dol_mktime(12,0,0,$month,$tmpday,$year,1,0); $tmptime-=24*60*60*7; @@ -720,7 +720,7 @@ function num_between_day($timestampStart, $timestampEnd, $lastday=0) * @param int $inhour 0: return number of days, 1: return number of hours * @param int $lastday We include last day, 0: no, 1:yes * @param int $halfday Tag to define half day when holiday start and end - * @param string $countrycode Country code (company country code if not defined) + * @param string $country_code Country code (company country code if not defined) * @return int Number of days or hours */ function num_open_day($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $halfday=0, $country_code='') From 44882f40352a864bad90ec65c2f1b5ce7c886745 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Wed, 5 Nov 2014 17:03:53 +0100 Subject: [PATCH 034/111] improve "hide margin infos" button : hide ALL informations relatives to margin AND store the state of the button in a cookie instead of shared config option --- htdocs/core/class/commonobject.class.php | 23 ++++++++++++++--------- htdocs/core/tpl/objectline_create.tpl.php | 12 ++++++------ htdocs/core/tpl/objectline_edit.tpl.php | 10 +++++----- htdocs/core/tpl/objectline_view.tpl.php | 6 +++--- htdocs/langs/en_US/margins.lang | 1 + htdocs/langs/fr_FR/margins.lang | 2 ++ 6 files changed, 31 insertions(+), 23 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index a9c39fa790f..df6d7988560 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2525,14 +2525,14 @@ abstract class CommonObject if (! empty($conf->margin->enabled) && empty($user->societe_id)) { if ($conf->global->MARGIN_TYPE == "1") - print ''; + print ''; else - print ''; + print ''; if (! empty($conf->global->DISPLAY_MARGIN_RATES) && $user->rights->margins->liretous) - print ''; + print ''; if (! empty($conf->global->DISPLAY_MARK_RATES) && $user->rights->margins->liretous) - print ''; + print ''; } // Total HT @@ -3012,11 +3012,16 @@ abstract class CommonObject $marginInfo = $this->getMarginInfos($force_price); - if (! empty($conf->global->MARGININFO_HIDE_SHOW)) - { - print ""; - if ($conf->global->MARGININFO_HIDE_SHOW == 2) print ''; // hide by default - } + print $langs->trans('ShowMarginInfos').' : '; + $hidemargininfos = $_COOKIE['DOLUSER_MARGININFO_HIDE_SHOW']; + print ''.img_picto($langs->trans("Disabled"),'switch_off').''; + print ''.img_picto($langs->trans("Enabled"),'switch_on').''; + + print ''; + if (!empty($hidemargininfos)) print ''; print '
'.$langs->trans("VirtualStock").'".$product->stock_theorique; + if ($product->stock_theorique < $product->seuil_stock_alerte) { + print ' '.img_warning($langs->trans("StockLowerThanLimit")); + } + print '
'.$langs->trans("VirtualStock").'".$product->stock_theorique; - if ($product->stock_theorique < $product->seuil_stock_alerte) - { - print ' '.img_warning($langs->trans("StockLowerThanLimit")); - } - print '
'; + $text_stock_options = (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)?$langs->trans("DeStockOnShipment").'
':''); + $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER)?$langs->trans("DeStockOnValidateOrder").'
':''); + $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_BILL)?$langs->trans("DeStockOnBill").'
':''); + $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL)?$langs->trans("ReStockOnBill").'
':''); + $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER)?$langs->trans("ReStockOnValidateOrder").'
':''); + $text_stock_options.= (! empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER)?$langs->trans("ReStockOnDispatchOrder").'
':''); + print $form->textwithtooltip($langs->trans("StockDiffPhysicTeoric"),$text_stock_options,2,1,img_picto('', 'info'),'',0);; + print '
'; - print '
'; - if ($product->stock_theorique != $product->stock_reel) print $langs->trans("StockDiffPhysicTeoric"); - else print $langs->trans("RunningOrders"); - print ''; + $found=0; - $found=0; + // Number of customer orders running + if (! empty($conf->commande->enabled)) + { + if ($found) print '
'; else $found=1; + print $langs->trans("CustomersOrdersRunning").': '.$product->stats_commande['qty']; + $result=$product->load_stats_commande(0,'0'); + if ($result < 0) dol_print_error($db,$product->error); + print ' ('.$langs->trans("Draft").': '.$product->stats_commande['qty'].')'; + } - // Nbre de commande clients en cours - if (! empty($conf->commande->enabled)) - { - if ($found) print '
'; else $found=1; - print $langs->trans("CustomersOrdersRunning").': '.($product->stats_commande['qty']-$product->stats_sendings['qty']); - $result=$product->load_stats_commande(0,'0'); - if ($result < 0) dol_print_error($db,$product->error); - print ' ('.$langs->trans("Draft").': '.$product->stats_commande['qty'].')'; - //print '
'; - //print $langs->trans("CustomersSendingRunning").': '.$stock_sending_client; - } + // Number of product from customer order already sent (partial shipping) + if (! empty($conf->expedition->enabled)) { + if ($found) print '
'; else $found=1; + $result=$product->load_stats_sending(0,'2'); + print $langs->trans("SendingRunning").': '.$product->stats_expedition['qty']; + } - // Nbre de commande fournisseurs en cours - if (! empty($conf->fournisseur->enabled)) - { - if ($found) print '
'; else $found=1; - print $langs->trans("SuppliersOrdersRunning").': '.($product->stats_commande_fournisseur['qty']-$product->stats_reception['qty']); - $result=$product->load_stats_commande_fournisseur(0,'0,1,2'); - if ($result < 0) dol_print_error($db,$product->error); - print ' ('.$langs->trans("DraftOrWaitingApproved").': '.$product->stats_commande_fournisseur['qty'].')'; - } - print '
'.$langs->trans('BuyingPrice').''.$langs->trans('BuyingPrice').''.$langs->trans('CostPrice').''.$langs->trans('CostPrice').''.$langs->trans('MarginRate').''.$langs->trans('MarginRate').''.$langs->trans('MarkRate').''.$langs->trans('MarkRate').'
'; print ''; diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 6af092c7e92..86ef648bf94 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -61,7 +61,7 @@ if (in_array($object->element,array('propal','facture','invoice','commande','ord if (! empty($usemargins)) { ?> - rights->margins->creer && ! empty($conf->global->DISPLAY_MARGIN_RATES)) echo ''; - if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARK_RATES)) echo ''; + if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARGIN_RATES)) echo ''; + if ($user->rights->margins->creer && ! empty($conf->global->DISPLAY_MARK_RATES)) echo ''; } ?> @@ -217,7 +217,7 @@ else { if (! empty($usemargins)) { ?> - '; + echo ''; $coldisplay++; } if (! empty($conf->global->DISPLAY_MARK_RATES)) { - echo ''; + echo ''; $coldisplay++; } } diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 68a19c0bb73..fbe2870a6a4 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -125,7 +125,7 @@ $coldisplay=-1; // We remove first td if (! empty($usemargins)) { ?> - '; + echo ''; else - echo ''; + echo ''; $coldisplay++; } elseif (! empty($conf->global->DISPLAY_MARK_RATES)) @@ -149,9 +149,9 @@ $coldisplay=-1; // We remove first td $mark_rate = (isset($_POST["np_markRate"])?$_POST["np_markRate"]:price($line->marque_tx)); // if credit note, dont allow to modify margin if ($line->subprice < 0) - echo ''; + echo ''; else - echo ''; + echo ''; $coldisplay++; } } diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index 777732aa192..1c8bb07f560 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -141,13 +141,13 @@ if (empty($inputalsopricewithtax)) $inputalsopricewithtax=0; if (! empty($conf->margin->enabled) && empty($user->societe_id)) { $rounding = min($conf->global->MAIN_MAX_DECIMALS_UNIT,$conf->global->MAIN_MAX_DECIMALS_TOT); ?> - + global->DISPLAY_MARGIN_RATES) && $user->rights->margins->liretous) {?> - + global->DISPLAY_MARK_RATES) && $user->rights->margins->liretous) {?> - + special_code == 3) { ?> diff --git a/htdocs/langs/en_US/margins.lang b/htdocs/langs/en_US/margins.lang index 38b6482a4f3..0cf9bc34410 100644 --- a/htdocs/langs/en_US/margins.lang +++ b/htdocs/langs/en_US/margins.lang @@ -41,3 +41,4 @@ AgentContactType=Commercial agent contact type AgentContactTypeDetails=Define what contact type (linked on invoices) will be used for margin report per sale representative rateMustBeNumeric=Rate must be a numeric value markRateShouldBeLesserThan100=Mark rate should be lower than 100 +ShowMarginInfos=Show margin infos \ No newline at end of file diff --git a/htdocs/langs/fr_FR/margins.lang b/htdocs/langs/fr_FR/margins.lang index dabd381ab1a..42951e5979e 100644 --- a/htdocs/langs/fr_FR/margins.lang +++ b/htdocs/langs/fr_FR/margins.lang @@ -48,3 +48,5 @@ Charges=Charges AgentContactType=Type de contact agent commercial AgentContactTypeDetails=Permet de définir le type de contact associé aux factures qui sera utilisé pour le rapport de marges par agent commercial + +ShowMarginInfos=Afficher les infos liées aux marges \ No newline at end of file From 60ca5aa02664706751a3645dbd294a7e39382024 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 5 Nov 2014 17:32:42 +0100 Subject: [PATCH 035/111] Debug of module withdraw. --- htdocs/compta/prelevement/bon.php | 103 ------------------ .../class/bonprelevement.class.php | 19 ++-- .../class/rejetprelevement.class.php | 5 +- htdocs/compta/prelevement/demandes.php | 2 +- htdocs/compta/prelevement/ligne.php | 31 ++++-- htdocs/core/lib/prelevement.lib.php | 8 -- htdocs/langs/en_US/withdrawals.lang | 3 +- 7 files changed, 38 insertions(+), 133 deletions(-) delete mode 100644 htdocs/compta/prelevement/bon.php diff --git a/htdocs/compta/prelevement/bon.php b/htdocs/compta/prelevement/bon.php deleted file mode 100644 index 20d60c3a55b..00000000000 --- a/htdocs/compta/prelevement/bon.php +++ /dev/null @@ -1,103 +0,0 @@ - - * Copyright (C) 2005 Laurent Destailleur - * Copyright (C) 2010-2012 Juanjo Menent - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file htdocs/compta/prelevement/bon.php - * \ingroup prelevement - * \brief Fiche apercu du bon de prelevement - */ - -require('../../main.inc.php'); -require_once DOL_DOCUMENT_ROOT.'/core/lib/prelevement.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php'; -require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; - -$langs->load("banks"); -$langs->load("categories"); -$langs->load("bills"); -$langs->load("categories"); - -// Security check -$socid=0; -$id = GETPOST('id','int'); -$ref = GETPOST('ref','alpha'); -if ($user->societe_id) $socid=$user->societe_id; -$result = restrictedArea($user, 'prelevement', $id); - - -llxHeader('','Bon de prelevement'); - -$form = new Form($db); - -if ($id > 0 || ! empty($ref)) -{ - $object = new BonPrelevement($db,""); - - if ($object->fetch($id) == 0) - { - $head = prelevement_prepare_head($object); - dol_fiche_head($head, 'preview', 'Prelevement : '. $object->ref); - - print '
+ '; if ($conf->global->MARGIN_TYPE == "1") @@ -72,8 +72,8 @@ if (in_array($object->element,array('propal','facture','invoice','commande','ord ?> '.$langs->trans('MarginRate').''.$langs->trans('MarkRate').''.$langs->trans('MarginRate').''.$langs->trans('MarkRate').'  + product->enabled) || ! empty($conf->service->enabled)) { ?> @@ -232,12 +232,12 @@ else { { if (! empty($conf->global->DISPLAY_MARGIN_RATES)) { - echo '%%%% + product->enabled) || ! empty($conf->service->enabled)) { ?> @@ -139,9 +139,9 @@ $coldisplay=-1; // We remove first td $margin_rate = (isset($_POST["np_marginRate"])?$_POST["np_marginRate"]:(($line->pa_ht == 0)?'':price($line->marge_tx))); // if credit note, dont allow to modify margin if ($line->subprice < 0) - echo ''.$margin_rate.'%'.$margin_rate.'%%%'.$mark_rate.'%'.$mark_rate.'%%%
pa_ht); ?>
pa_ht); ?> pa_ht == 0)?'n/a':price($line->marge_tx, null, null, null, null, $rounding).'%'); ?>pa_ht == 0)?'n/a':price($line->marge_tx, null, null, null, null, $rounding).'%'); ?> marque_tx, null, null, null, null, $rounding).'%'; ?>marque_tx, null, null, null, null, $rounding).'%'; ?>
'; - - print ''; - print ''; - print ''; - print '
'.$langs->trans("Ref").''.$object->ref.'
'.$langs->trans("Amount").''.price($object->amount).'
'.$langs->trans("File").''; - - $relativepath = 'bon/'.$object->ref; - - print ''.$object->ref.''; - - print '

'; - - $fileimage = $conf->prelevement->dir_output.'/receipts/'.$object->ref.'.ps.png.0'; - $fileps = $conf->prelevement->dir_output.'/receipts/'.$object->ref.'.ps'; - - // Conversion du PDF en image png si fichier png non existant - if (!file_exists($fileimage)) - { - if (class_exists("Imagick")) - { - $ret = dol_convert_file($file,'png',$fileimage); - if ($ret < 0) $error++; - } - else - { - $langs->load("errors"); - print ''.$langs->trans("ErrorNoImagickReadimage").''; - } - } - - if (file_exists($fileimage)) - { - print ''; - - } - - dol_fiche_end(); - } - else - { - dol_print_error($db); - } -} - -llxFooter(); diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 87bab387344..66a1c81e8e9 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -821,7 +821,9 @@ class BonPrelevement extends CommonObject { $bac = new CompanyBankAccount($this->db); $bac->fetch(0,$soc->id); + if ($bac->verif() >= 1) + //if (true) { $factures_prev[$i] = $fac; /* second tableau necessaire pour BonPrelevement */ @@ -1226,26 +1228,24 @@ class BonPrelevement extends CommonObject * @return int 0 if OK, <0 if KO */ //TODO: Optimize code to read lines in a single function - function Generate() + function generate() { global $conf,$langs,$mysoc; $result = 0; - dol_syslog(get_class($this)."::Generate build file ".$this->filename); + dol_syslog(get_class($this)."::generate build file ".$this->filename); $this->file = fopen($this->filename,"w"); $found=0; // Build file for European countries - if (! $mysoc->isInEEC()) + if ($mysoc->isInEEC()) { $found++; /** - * SECTION CREATION FICHIER SEPA - * SECTION CREATION FICHIER SEPA * SECTION CREATION FICHIER SEPA */ // SEPA Initialisation @@ -1308,8 +1308,6 @@ class BonPrelevement extends CommonObject } /** - * SECTION CREATION FICHIER SEPA - * SECTION CREATION FICHIER SEPA * SECTION CREATION FICHIER SEPA */ // SEPA File Header @@ -1401,11 +1399,14 @@ class BonPrelevement extends CommonObject } } else - { + { $result = -2; } + $langs->load('withdrawals'); - fputs($this->file, $langs->trans('WithdrawalFileNotCapable')); + + // TODO Add here code to generate a generic file + fputs($this->file, $langs->trans('WithdrawalFileNotCapable', $mysoc->country_code)); } fclose($this->file); diff --git a/htdocs/compta/prelevement/class/rejetprelevement.class.php b/htdocs/compta/prelevement/class/rejetprelevement.class.php index 27ae87ca3b4..d0b467f294b 100644 --- a/htdocs/compta/prelevement/class/rejetprelevement.class.php +++ b/htdocs/compta/prelevement/class/rejetprelevement.class.php @@ -173,7 +173,8 @@ class RejetPrelevement } //Tag invoice as unpaid dol_syslog("RejetPrelevement::Create set_unpaid fac ".$fac->ref); - $fac->set_unpaid($fac->id, $user); + + $fac->set_unpaid($user); //TODO: Must be managed by notifications module // Send email to sender of the standing order request @@ -194,7 +195,7 @@ class RejetPrelevement } /** - * Envoi mail + * Send email to all users that has asked the withdraw request * * @param Facture $fac Invoice object * @return void diff --git a/htdocs/compta/prelevement/demandes.php b/htdocs/compta/prelevement/demandes.php index c99744f7430..364e073676b 100644 --- a/htdocs/compta/prelevement/demandes.php +++ b/htdocs/compta/prelevement/demandes.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load("banks"); $langs->load("categories"); -$langs->load("widthdrawals"); +$langs->load("withdrawals"); $langs->load("companies"); // Security check diff --git a/htdocs/compta/prelevement/ligne.php b/htdocs/compta/prelevement/ligne.php index b3f9acb3570..f1617979645 100644 --- a/htdocs/compta/prelevement/ligne.php +++ b/htdocs/compta/prelevement/ligne.php @@ -105,10 +105,13 @@ if ($action == 'confirm_rejet') } } + /* * View */ +$invoicestatic=new Facture($db); + llxHeader('',$langs->trans("StandingOrder")); $h = 0; @@ -134,9 +137,7 @@ if ($id) print ''.$lipre->bon_ref.''; print ''.$langs->trans("Date").''.dol_print_date($bon->datec,'day').''; print ''.$langs->trans("Amount").''.price($lipre->amount).''; - print ''.$langs->trans("Status").''; - - print $lipre->LibStatut($lipre->statut,1).''; + print ''.$langs->trans("Status").''.$lipre->LibStatut($lipre->statut,1).''; if ($lipre->statut == 3) { @@ -215,7 +216,7 @@ if ($id) print '
'; //Confirm Button - print '
'; + print '
'; print ''; } @@ -229,13 +230,20 @@ if ($id) if ($action == '') { - if ($bon->statut == 2 && $lipre->statut == 2 && $user->rights->prelevement->bons->credit) + if ($bon->statut == 2 && $lipre->statut == 2) { - print "id\">".$langs->trans("StandingOrderReject").""; + if ($user->rights->prelevement->bons->credit) + { + print "id\">".$langs->trans("StandingOrderReject").""; + } + else + { + print "trans("NotAllowed")."\">".$langs->trans("StandingOrderReject").""; + } } else { - print "".$langs->trans("StandingOrderReject").""; + print "trans("NotPossibleForThisStatusOfWithdrawReceiptORLine")."\">".$langs->trans("StandingOrderReject").""; } } @@ -256,7 +264,7 @@ if ($id) * Liste des factures */ $sql = "SELECT pf.rowid"; - $sql.= " ,f.rowid as facid, f.facnumber as ref, f.total_ttc"; + $sql.= " ,f.rowid as facid, f.facnumber as ref, f.total_ttc, f.paye, f.fk_statut"; $sql.= " , s.rowid as socid, s.nom as name"; $sql.= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $sql.= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl"; @@ -287,7 +295,7 @@ if ($id) print"\n\n"; print ''; print ''; - print ''; + print ''; print ''; $var=True; @@ -312,6 +320,11 @@ if ($id) print '\n"; + print '\n"; + print "\n"; $i++; diff --git a/htdocs/core/lib/prelevement.lib.php b/htdocs/core/lib/prelevement.lib.php index 257f13558ee..53f54d66f70 100644 --- a/htdocs/core/lib/prelevement.lib.php +++ b/htdocs/core/lib/prelevement.lib.php @@ -44,14 +44,6 @@ function prelevement_prepare_head($object) $head[$h][2] = 'prelevement'; $h++; - if (! empty($conf->global->MAIN_USE_PREVIEW_TABS)) - { - $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/bon.php?id='.$object->id; - $head[$h][1] = $langs->trans("Preview"); - $head[$h][2] = 'preview'; - $h++; - } - $head[$h][0] = DOL_URL_ROOT.'/compta/prelevement/lignes.php?id='.$object->id; $head[$h][1] = $langs->trans("Lines"); $head[$h][2] = 'lines'; diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index dccee9d0c8e..35cfa23d9e2 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -16,6 +16,7 @@ WithdrawedBills=Withdrawn invoices WithdrawalsLines=Withdrawal lines RequestStandingOrderToTreat=Request for standing orders to process RequestStandingOrderTreated=Request for standing orders processed +NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. CustomersStandingOrders=Customer standing orders CustomerStandingOrder=Customer standing order NbOfInvoiceToWithdraw=Nb. of invoice with withdraw request @@ -76,7 +77,7 @@ WithBankUsingRIB=For bank accounts using RIB WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT BankToReceiveWithdraw=Bank account to receive withdraws CreditDate=Credit on -WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country +WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) ShowWithdraw=Show Withdraw IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as paid to allow prior withdrawal management. DoStandingOrdersBeforePayments=This tab allows you to request a standing order. Once it is complete, you can type the payment to close the invoice. From 4cb3dc4238a97ca1045b0243d0361708bca841f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Wed, 5 Nov 2014 20:02:58 +0100 Subject: [PATCH 036/111] Update antispamimage.php If imagecreate fail, we can't see error message --- htdocs/core/antispamimage.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/antispamimage.php b/htdocs/core/antispamimage.php index c3bc217e100..a16844dd715 100644 --- a/htdocs/core/antispamimage.php +++ b/htdocs/core/antispamimage.php @@ -51,8 +51,6 @@ for($i = 0; $i < $length; $i++) $sessionkey='dol_antispam_value'; $_SESSION[$sessionkey]=$string; -header("Content-type: image/png"); - $img = imagecreate(80,32); if (empty($img)) { @@ -60,6 +58,8 @@ if (empty($img)) exit; } +header("Content-type: image/png"); + $background_color = imagecolorallocate($img, 250, 250, 250); $ecriture_color = imagecolorallocate($img, 0, 0, 0); imagestring($img, 4, 24, 8, $string, $ecriture_color); From 89296e3011eb9dc7f1a7a0c8d1862d6a8e076173 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 5 Nov 2014 22:27:26 +0100 Subject: [PATCH 037/111] Typo search list --- htdocs/compta/deplacement/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/deplacement/list.php b/htdocs/compta/deplacement/list.php index da0e3e21dcd..42a6713c1ce 100644 --- a/htdocs/compta/deplacement/list.php +++ b/htdocs/compta/deplacement/list.php @@ -115,7 +115,7 @@ if ($month > 0) } else if ($year > 0) { - $sql.= " AND bc.date_bordereau BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'"; + $sql.= " AND d.dated BETWEEN '".$db->idate(dol_get_first_day($year,1,false))."' AND '".$db->idate(dol_get_last_day($year,12,false))."'"; } $sql.= $db->order($sortfield,$sortorder); From eadb10e71e6b6b9b0479e0926b21a2eb6a08ea6c Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Wed, 5 Nov 2014 22:31:23 +0100 Subject: [PATCH 038/111] Trad: update es_ES from transifex --- htdocs/langs/es_ES/admin.lang | 24 ++++++++++++--------- htdocs/langs/es_ES/agenda.lang | 14 ++++++------- htdocs/langs/es_ES/bills.lang | 30 +++++++++++++-------------- htdocs/langs/es_ES/boxes.lang | 25 +++++++++++++--------- htdocs/langs/es_ES/companies.lang | 2 +- htdocs/langs/es_ES/deliveries.lang | 2 ++ htdocs/langs/es_ES/donations.lang | 2 +- htdocs/langs/es_ES/errors.lang | 3 ++- htdocs/langs/es_ES/holiday.lang | 10 ++++----- htdocs/langs/es_ES/interventions.lang | 1 + htdocs/langs/es_ES/mails.lang | 4 ++-- htdocs/langs/es_ES/main.lang | 5 +++-- htdocs/langs/es_ES/margins.lang | 4 +++- htdocs/langs/es_ES/members.lang | 4 ++-- htdocs/langs/es_ES/other.lang | 2 +- htdocs/langs/es_ES/products.lang | 10 ++++----- htdocs/langs/es_ES/projects.lang | 2 +- htdocs/langs/es_ES/propal.lang | 2 -- htdocs/langs/es_ES/suppliers.lang | 2 +- htdocs/langs/es_ES/users.lang | 1 + htdocs/langs/es_ES/withdrawals.lang | 4 ++-- 21 files changed, 84 insertions(+), 69 deletions(-) diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 8dfcbfc080f..5e90bd39931 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -484,7 +484,7 @@ Module500Desc=Gestión de los gastos especiales como impuestos, gastos sociales, Module510Name=Salarios Module510Desc=Gestión de salarios y pagos Module600Name=Notificaciones -Module600Desc=Envío de notificaciones (por correo electrónico) sobre los eventos de trabajo Dolibarr +Module600Desc=Envío de notificaciones por e-mail en algunos eventos de negocio de Dolibarr a contactos de terceros (configurado en cada tercero) Module700Name=Donaciones Module700Desc=Gestión de donaciones Module1200Name=Mantis @@ -514,7 +514,7 @@ Module5000Name=Multi-empresa Module5000Desc=Permite gestionar varias empresas Module6000Name=Flujo de trabajo Module6000Desc=Gestión del flujo de trabajo -Module20000Name=Días libres +Module20000Name=Quitar gestión de vacaciones Module20000Desc=Gestión de los días libres de los empleados Module39000Name=Lotes de productos Module39000Desc=Gestión de lotes y fechas de caducidad y venta de los productos @@ -522,8 +522,8 @@ Module50000Name=PayBox Module50000Desc=Módulo para proporcionar un pago en línea con tarjeta de crédito mediante Paybox Module50100Name=TPV Module50100Desc=Terminal Punto de Venta para la venta en mostrador -Module50200Name= Paypal -Module50200Desc= Módulo para proporcionar un pago en línea con tarjeta de crédito mediante Paypal +Module50200Name=Paypal +Module50200Desc=Módulo para proporcionar un pago en línea con tarjeta de crédito mediante Paypal Module50400Name=Contabilidad (avanzada) Module50400Desc=Gestión contable (doble partida) Module54000Name=PrintIPP @@ -611,10 +611,11 @@ Permission162=Crear/modificar contratos de servicio Permission163=Activar los servicios de un contrato Permission164=Desactivar los servicios de un contrato Permission165=Eliminar contratos -Permission171=Leer los desplazamientos -Permission172=Crear/modificar los desplazamientos -Permission173=Eliminar desplazamientos -Permission178=Exportar desplazamientos +Permission171=Leer honorarios (propios y de sus subordinados) +Permission172=Crear/modificar honorarios +Permission173=Eliminar honorarios +Permission174=Leer todos los honorarios +Permission178=Exportar honorarios Permission180=Consultar proveedores Permission181=Consultar pedidos a proveedores Permission182=Crear/modificar pedidos a proveedores @@ -1074,7 +1075,7 @@ ModuleCompanyCodeAquarium=Devuelve un código contable compuesto de
%s seguid ModuleCompanyCodePanicum=Devuelve un código contable vacío. ModuleCompanyCodeDigitaria=Devuelve un código contable compuesto siguiendo el código de tercero. El código está formado por carácter ' C ' en primera posición seguido de los 5 primeros caracteres del código tercero. UseNotifications=Usar notificaciones -NotificationsDesc=La función de las notificaciones permite enviar automáticamente un correo electrónico para un determinado evento Dolibarr en las empresas configuradas para ello +NotificationsDesc=La función de las notificaciones permite enviar automáticamente un e-mail para algunos eventos de Dolibarr. Los destinatarios de las notificaciones pueden definirse:
* por contactos de terceros (clientes o proveedores), un tercero a la vez.
* o configurando un destinatario global en la configuración del módulo. ModelModules=Modelos de documentos DocumentModelOdt=Generación desde los documentos OpenDocument (Archivo .ODT OpenOffice, KOffice, TextEdit,...) WatermarkOnDraft=Marca de agua en los documentos borrador @@ -1146,6 +1147,7 @@ HideTreadedOrders=Ocultar del listado los pedidos tratados o cancelados ValidOrderAfterPropalClosed=Validar el pedido después del cierre del presupuesto, permite no pasar por el pedido provisional FreeLegalTextOnOrders=Texto libre en pedidos WatermarkOnDraftOrders=Marca de agua en pedidos borrador (en caso de estar vacío) +ShippableOrderIconInList=Añadir un icono en el listado de pedidos que indica si el pedido es enviable ##### Clicktodial ##### ClickToDialSetup=Configuración del módulo Click To Dial ClickToDialUrlDesc=URL de llamada haciendo click en el icono teléfono.
La URL completa de llamada será: URL?login=...&password=...&caller=...&called=telellamada @@ -1384,7 +1386,8 @@ MailingEMailError=E-Mail de respuesta (Errors-to) para las respuestas acerca de ##### Notification ##### NotificationSetup=Configuración del módulo notificaciones NotificationEMailFrom=E-Mail emisor (From) de los correos enviados a través de notificaciones -ListOfAvailableNotifications=Listado de notificaciones disponibles (depende de los módulos activados) +ListOfAvailableNotifications=Listado de eventos que se pueden configurar para notificar para cada tercero (entrar a la ficha del tercero para configurar) o configurando un e-mail fijo (El listado depende de los módulos activados) +FixedEmailTarget=Destinatario fijo ##### Sendings ##### SendingsSetup=Configuración del módulo Expediciones SendingsReceiptModel=Modelo de notas de entrega @@ -1535,6 +1538,7 @@ DeleteFiscalYear=Eliminar año fiscal ConfirmDeleteFiscalYear=¿Está seguro de querer eliminar este año fiscal? Opened=Abierto Closed=Cerrado +AlwaysEditable=Puede editarse siempre Format=Formatear TypePaymentDesc=0:Pago cliente,1:Pago proveedor,2:Tanto pago de cliente como de proveedor diff --git a/htdocs/langs/es_ES/agenda.lang b/htdocs/langs/es_ES/agenda.lang index 839bbbdceba..c357756f95a 100644 --- a/htdocs/langs/es_ES/agenda.lang +++ b/htdocs/langs/es_ES/agenda.lang @@ -7,10 +7,10 @@ Agendas=Agendas Calendar=Calendario Calendars=Calendarios LocalAgenda=Calendario interno -ActionsOwnedBy=Evento asignado a +ActionsOwnedBy=Acontecimiento asignado a AffectedTo=Asignada a DoneBy=Realizado por -Event=Evento +Event=Acontecimiento Events=Eventos EventsNb=Número de eventos MyEvents=Mis eventos @@ -23,12 +23,12 @@ MenuToDoActions=Eventos incompletos MenuDoneActions=Eventos terminados MenuToDoMyActions=Mis eventos incompletos MenuDoneMyActions=Mis eventos terminados -ListOfEvents=Listado de eventos (calendario interno) +ListOfEvents=lista de acontecimientos (calendario interno) ActionsAskedBy=Eventos registrados por ActionsToDoBy=Eventos asignados a ActionsDoneBy=Eventos realizados por -ActionsForUser=Eventos del usuario -ActionsForUsersGroup=Eventos de todos los usuarios del grupo +ActionsForUser=Acontecimientos del usuario +ActionsForUsersGroup=Acontecimientos de todos los usuarios del grupo AllMyActions= Todos mis eventos/tareas AllActions= Todos los eventos/tareas ViewList=Vista listado @@ -72,7 +72,7 @@ AgendaUrlOptions1=Puede también añadir estos parámetros al filtro de salida: AgendaUrlOptions2=login=%s para restringir inserciones a acciones creadas , que afecten o realizadas por el usuario %s. AgendaUrlOptions3=logina=%s para restringir inserciones a acciones creadas por el usuario %s. AgendaUrlOptions4=logint=%s para restringir inserciones a acciones que afecten al usuario %s. -AgendaUrlOptions5=logind=%s para restringir inserciones a acciones realizadas por el usuario %s. +AgendaUrlOptionsProject=project=PROJECT_ID para restringir inserciones a acciones asociadas al proyecto PROJECT_ID. AgendaShowBirthdayEvents=Mostrar cumpleaños de los contactos AgendaHideBirthdayEvents=Ocultar cumpleaños de los contactos Busy=Ocupado @@ -89,5 +89,5 @@ ExtSiteUrlAgenda=Url de acceso al archivo .ical ExtSiteNoLabel=Sin descripción WorkingTimeRange=Rango temporal WorkingDaysRange=Rango diario -AddEvent=Añadir evento +AddEvent=Crear evento MyAvailability=Mi disponibilidad diff --git a/htdocs/langs/es_ES/bills.lang b/htdocs/langs/es_ES/bills.lang index f9d7f316b04..e5f939a753f 100644 --- a/htdocs/langs/es_ES/bills.lang +++ b/htdocs/langs/es_ES/bills.lang @@ -28,8 +28,8 @@ InvoiceAvoir=Abono InvoiceAvoirAsk=Abono para corregir la factura InvoiceAvoirDesc=El abono es una factura negativa destinada a compensar un importe de factura que difiere del importe realmente pagado (por haber pagado de más o por devolución de productos, por ejemplo). invoiceAvoirWithLines=Crear abono con las líneas de la factura original -invoiceAvoirWithPaymentRestAmount=Crear abono con el importe pendiente de la factura origen -invoiceAvoirLineWithPaymentRestAmount=Abono del importe pendiente de la factura +invoiceAvoirWithPaymentRestAmount=Crear abono con el resto a cobrar de la factura origen +invoiceAvoirLineWithPaymentRestAmount=Abono del resto por cobrar ReplaceInvoice=Rectificar la factura %s ReplacementInvoice=Rectificación factura ReplacedByInvoice=Rectificada por la factura %s @@ -156,9 +156,9 @@ ConfirmCancelBill=¿Está seguro de querer anular la factura %s ? ConfirmCancelBillQuestion=¿Por qué razón quiere abandonar la factura? ConfirmClassifyPaidPartially=¿Está seguro de querer clasificar la factura %s como pagada? ConfirmClassifyPaidPartiallyQuestion=Esta factura no ha sido totalmente pagada. ¿Por qué quiere clasificarla como pagada? -ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar (%s %s) se ha regularizado (ya que artículo se ha devuelto, olvidado entregar, descuento no definido...) mediante un abono -ConfirmClassifyPaidPartiallyReasonDiscountNoVat=El resto a pagar (%s %s) es un descuento acordado después de la factura. Acepto perder el IVA de este descuento -ConfirmClassifyPaidPartiallyReasonDiscountVat=El resto a pagar(%s %s) es un descuento +ConfirmClassifyPaidPartiallyReasonAvoir=El resto a pagar (%s %s) es un descuento otorgado por pronto pago. Regularizaré el IVA con un abono. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=El resto a pagar (%s %s) es un descuento otorgado por pronto pago. Acepto perder el IVA en este descuento. +ConfirmClassifyPaidPartiallyReasonDiscountVat=El resto a pagar (%s %s) es un descuento otorgado por pronto pago. Recuperaré el IVA sin usar un abono. ConfirmClassifyPaidPartiallyReasonBadCustomer=Cliente moroso ConfirmClassifyPaidPartiallyReasonProductReturned=Productos devueltos en parte ConfirmClassifyPaidPartiallyReasonOther=Por otra razón @@ -191,9 +191,9 @@ AlreadyPaid=Ya pagado AlreadyPaidBack=Ya reembolsado AlreadyPaidNoCreditNotesNoDeposits=Ya pagado (excluidos los abonos y anticipos) Abandoned=Abandonada -RemainderToPay=Queda por pagar -RemainderToTake=Queda por cobrar -RemainderToPayBack=Queda por reembolsar +RemainderToPay=Resta por pagar +RemainderToTake=Resta por cobrar +RemainderToPayBack=Resta por reembolsar Rest=Pendiente AmountExpected=Importe reclamado ExcessReceived=Recibido en exceso @@ -225,13 +225,13 @@ NonPercuRecuperable=No percibido recuperable SetConditions=Definir condiciones de pago SetMode=Definir modo de pago Billed=Facturado -RepeatableInvoice=Factura recurrente -RepeatableInvoices=Facturas recurrentes -Repeatable=Recurrente -Repeatables=Recurrentes -ChangeIntoRepeatableInvoice=Convertir en recurrente -CreateRepeatableInvoice=Crear factura recurrente -CreateFromRepeatableInvoice=Crear desde factura recurrente +RepeatableInvoice=Plantilla de factura +RepeatableInvoices=Plantilla de facturas +Repeatable=Plantilla +Repeatables=Plantillas +ChangeIntoRepeatableInvoice=Convertir en plantilla +CreateRepeatableInvoice=Crear plantilla de factura +CreateFromRepeatableInvoice=Crear desde plantilla de factura CustomersInvoicesAndInvoiceLines=Facturas a clientes y líneas de facturas CustomersInvoicesAndPayments=Facturas a clientes y pagos ExportDataset_invoice_1=Facturas a clientes y líneas de factura diff --git a/htdocs/langs/es_ES/boxes.lang b/htdocs/langs/es_ES/boxes.lang index 5038f138113..56353b2006e 100644 --- a/htdocs/langs/es_ES/boxes.lang +++ b/htdocs/langs/es_ES/boxes.lang @@ -12,6 +12,7 @@ BoxLastProspects=Últimos clientes potenciales modificados BoxLastCustomers=Últimos clientes modificados BoxLastSuppliers=Últimos proveedores modificados BoxLastCustomerOrders=Últimos pedidos +BoxLastValidatedCustomerOrders=Últimos pedidos de clientes validados BoxLastBooks=Últimos books BoxLastActions=Últimos eventos BoxLastContracts=Últimos contratos @@ -27,26 +28,29 @@ BoxTitleNbOfCustomers=Número de clientes BoxTitleLastRssInfos=Las %s últimas infos de %s BoxTitleLastProducts=Los %s últimos productos/servicios registrados BoxTitleProductsAlertStock=Productos en alerta de stock -BoxTitleLastCustomerOrders=Los %s últimos pedidos de clientes modificados +BoxTitleLastCustomerOrders=Últimos %s pedidos de clientes +BoxTitleLastModifiedCustomerOrders=Últimos %s pedidos de clientes modificados BoxTitleLastSuppliers=Los %s últimos proveedores registrados BoxTitleLastCustomers=Los %s últimos clientes registrados BoxTitleLastModifiedSuppliers=Los %s últimos proveedores modificados BoxTitleLastModifiedCustomers=Los %s últimos clientes modificados -BoxTitleLastCustomersOrProspects=Los %s últimos clientes o clientes potenciales registrados -BoxTitleLastPropals=Los %s últimos presupuestos registrados +BoxTitleLastCustomersOrProspects=Últimos %s clientes o clientes potenciales +BoxTitleLastPropals=Últimos %s presupuestos +BoxTitleLastModifiedPropals=Últimos %s presupuestos modificados BoxTitleLastCustomerBills=Las %s últimas facturas a clientes modificadas +BoxTitleLastModifiedCustomerBills=Últimas %s facturas a clientes modificadas BoxTitleLastSupplierBills=Las %s últimas facturas de proveedores modificadas -BoxTitleLastProspects=Los %s últimos clientes potenciales registrados +BoxTitleLastModifiedSupplierBills=Últimas %s facturas de proveedores modificadas BoxTitleLastModifiedProspects=Los %s últimos clientes potenciales modificados BoxTitleLastProductsInContract=Los %s últimos productos/servicios contratados -BoxTitleLastModifiedMembers=Los %s últimos miembros modificados +BoxTitleLastModifiedMembers=Últimos %s miembros BoxTitleLastFicheInter=Las %s últimas intervenciones modificadas -BoxTitleOldestUnpaidCustomerBills=Las %s facturas más antiguas a clientes pendientes de cobro -BoxTitleOldestUnpaidSupplierBills=Las %s facturas más antiguas de proveedores pendientes de pago +BoxTitleOldestUnpaidCustomerBills=%s facturas a clientes más antiguras pendientes de cobro +BoxTitleOldestUnpaidSupplierBills=%s facturas de proveedores más antiguas pendientes de pago BoxTitleCurrentAccounts=Balances de cuentas abiertas BoxTitleSalesTurnover=Volumen de ventas realizado -BoxTitleTotalUnpaidCustomerBills=Pendiente de clientes -BoxTitleTotalUnpaidSuppliersBills=Pendiente a proveedores +BoxTitleTotalUnpaidCustomerBills=Facturas a clientes pendientes de cobro +BoxTitleTotalUnpaidSuppliersBills=Facturas de proveedores pendientes de pago BoxTitleLastModifiedContacts=Los %s últimos contactos/direcciones modificadas BoxMyLastBookmarks=Mis %s últimos marcadores BoxOldestExpiredServices=Servicios antiguos expirados @@ -76,7 +80,8 @@ NoContractedProducts=Sin productos/servicios contratados NoRecordedContracts=Sin contratos registrados NoRecordedInterventions=Sin intervenciones guardadas BoxLatestSupplierOrders=Últimos pedidos a proveedores -BoxTitleLatestSupplierOrders=Los %s últimos pedidos a proveedores +BoxTitleLatestSupplierOrders=Últimos %s pedidos a proveedores +BoxTitleLatestModifiedSupplierOrders=Últimos %s pedidos a proveedores modificados NoSupplierOrder=Sin pedidos a proveedores BoxCustomersInvoicesPerMonth=Facturas a clientes por mes BoxSuppliersInvoicesPerMonth=Facturas de proveedores por mes diff --git a/htdocs/langs/es_ES/companies.lang b/htdocs/langs/es_ES/companies.lang index 9fa3e27be18..f86ea312ac3 100644 --- a/htdocs/langs/es_ES/companies.lang +++ b/htdocs/langs/es_ES/companies.lang @@ -379,7 +379,7 @@ DeliveryAddressLabel=Etiqueta de envío DeleteDeliveryAddress=Eliminar una dirección de envío ConfirmDeleteDeliveryAddress=¿Está seguro de querer eliminar esta dirección de envío? NewDeliveryAddress=Nueva dirección de envío -AddDeliveryAddress=Añadir la dirección +AddDeliveryAddress=Crear dirección AddAddress=Crear dirección NoOtherDeliveryAddress=No hay direcciones alternativas definidas SupplierCategory=Categoría de proveedor diff --git a/htdocs/langs/es_ES/deliveries.lang b/htdocs/langs/es_ES/deliveries.lang index 4cfe6c90065..6dbcd26544c 100644 --- a/htdocs/langs/es_ES/deliveries.lang +++ b/htdocs/langs/es_ES/deliveries.lang @@ -24,3 +24,5 @@ Deliverer=Destinatario : Sender=Origen Recipient=Destinatario ErrorStockIsNotEnough=No hay suficiente stock +Shippable=Enviable +NonShippable=No enviable diff --git a/htdocs/langs/es_ES/donations.lang b/htdocs/langs/es_ES/donations.lang index 31c89f77209..064e6587789 100644 --- a/htdocs/langs/es_ES/donations.lang +++ b/htdocs/langs/es_ES/donations.lang @@ -4,7 +4,7 @@ Donations=Donaciones DonationRef=Ref. donación Donor=Donante Donors=Donantes -AddDonation=Añadir donación +AddDonation=Crear una donación NewDonation=Nueva donación ShowDonation=Mostrar donación DonationPromise=Promesa de donación diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index bccee64bcfc..7ac24f97c46 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -37,7 +37,7 @@ ErrorSupplierCodeRequired=Código proveedor obligatorio ErrorSupplierCodeAlreadyUsed=Código de proveedor ya utilizado ErrorBadParameters=Parámetros incorrectos ErrorBadValueForParameter=Valor '%s' incorrecto para el parámetro '%s' -ErrorBadImageFormat=La imagen no tiene un formato reconocido +ErrorBadImageFormat=El archivo de imagen es de un formato no soportado (Su PHP no soporta las funciones de conversión de este formato de imagen) ErrorBadDateFormat=El valor '%s' tiene un formato de fecha no reconocido ErrorWrongDate=¡La fecha no es correcta! ErrorFailedToWriteInDir=Imposible escribir en el directorio %s @@ -114,6 +114,7 @@ ErrorLoginDoesNotExists=La cuenta de usuario de %s no se ha encontrado. ErrorLoginHasNoEmail=Este usuario no tiene e-mail. Imposible continuar. ErrorBadValueForCode=Valor incorrecto para el código. Vuelva a intentar con un nuevo valor... ErrorBothFieldCantBeNegative=Los campos %s y %s no pueden ser negativos +ErrorQtyForCustomerInvoiceCantBeNegative=Las cantidades en las líneas de facturas a clientes no pueden ser negativas ErrorWebServerUserHasNotPermission=La cuenta de ejecución del servidor web %s no dispone de los permisos para esto ErrorNoActivatedBarcode=No hay activado ningún tipo de código de barras ErrUnzipFails=No se ha podido descomprimir el archivo %s con ZipArchive diff --git a/htdocs/langs/es_ES/holiday.lang b/htdocs/langs/es_ES/holiday.lang index 60e8fc0327f..78cd612783e 100644 --- a/htdocs/langs/es_ES/holiday.lang +++ b/htdocs/langs/es_ES/holiday.lang @@ -53,7 +53,7 @@ CantUpdate=No puede actualizar esta petición de vacaciones. NoDateDebut=Debe indicar una fecha de inicio. NoDateFin=Debe indicar una fecha de fin. ErrorDureeCP=Su petición de vacaciones no contiene ningún día hábil. -TitleValidCP=Validar la petición de vacaciones +TitleValidCP=Aprobar la petición de vacaciones ConfirmValidCP=¿Está seguro de querer validar esta petición de vacaciones? DateValidCP=Fecha de validación TitleToValidCP=Enviar la petición de vacaciones @@ -61,7 +61,7 @@ ConfirmToValidCP=¿Está seguro de querer enviar la petición de vacaciones? TitleRefuseCP=Rechazar la petición de vacaciones ConfirmRefuseCP=¿Está seguro de querer rechazar la petición de vacaciones? NoMotifRefuseCP=Debe seleccionar un motivo para rechazar esta petición. -TitleCancelCP=Anular la petición de vacaciones +TitleCancelCP=Cancelar la petición de vacaciones ConfirmCancelCP=¿Está seguro de querer anular la petición de vacaciones? DetailRefusCP=Motivo del rechazo DateRefusCP=Fecha del rechazo @@ -88,7 +88,7 @@ ManualUpdate=Actualización manual HolidaysCancelation=Anulación vacaciones ## Configuration du Module ## -ConfCP=Configuración del módulo Vacaciones +ConfCP=Configuración del módulo de vacaciones DescOptionCP=Descripción de la opción ValueOptionCP=Valor GroupToValidateCP=Grupo con posibilidad de aprobar las vacaciones @@ -97,13 +97,13 @@ LastUpdateCP=Última actualización automática de vacaciones UpdateConfCPOK=Actualización efectuada correctamente. ErrorUpdateConfCP=Se ha producido un error durante la actualización, vuélvalo a intentar. AddCPforUsers=Añada los saldos de vacaciones de los usuarios haciendo clic aquí. -DelayForSubmitCP=Antelación mínima para solicitar vacaciones +DelayForSubmitCP=Fecha límite para realizar peticiones de vacaciones AlertapprobatortorDelayCP=Advertir al validador si la petición no corresponde a la fecha límite AlertValidatorDelayCP=Advertir al usuario validador si la petición no respeta el límite previsto AlertValidorSoldeCP=Advertir al usuario validador si el usuario pide vacaciones superiores a su saldo nbUserCP=Número de usuarios tomados en cuenta en el módulo vacaciones nbHolidayDeductedCP=Número de días retribuídos a deducir por día de vacaciones -nbHolidayEveryMonthCP=Número de días de vacaciones añadidos por mes +nbHolidayEveryMonthCP=Número de vacaciones añadidas por mes Module27130Name= Gestion de las vacaciones Module27130Desc= Gestión de días libres TitleOptionMainCP=Ajustes principales de vacaciones diff --git a/htdocs/langs/es_ES/interventions.lang b/htdocs/langs/es_ES/interventions.lang index 4f838816de2..f973ac56e78 100644 --- a/htdocs/langs/es_ES/interventions.lang +++ b/htdocs/langs/es_ES/interventions.lang @@ -30,6 +30,7 @@ StatusInterInvoiced=Facturado RelatedInterventions=Intervenciones adjuntas ShowIntervention=Mostrar intervención SendInterventionRef=Envío de la intervención %s +SendInterventionByMail=Enviar intervención por e-mail ##### Types de contacts ##### TypeContact_fichinter_internal_INTERREPFOLL=Responsable seguimiento de la intervención TypeContact_fichinter_internal_INTERVENING=Interventor diff --git a/htdocs/langs/es_ES/mails.lang b/htdocs/langs/es_ES/mails.lang index 9c2dd9f8d4e..233ad054aa1 100644 --- a/htdocs/langs/es_ES/mails.lang +++ b/htdocs/langs/es_ES/mails.lang @@ -133,6 +133,6 @@ Notifications=Notificaciones NoNotificationsWillBeSent=Ninguna notificación por e-mail está prevista para este evento y empresa ANotificationsWillBeSent=1 notificación va a ser enviada por e-mail SomeNotificationsWillBeSent=%s notificaciones van a ser enviadas por e-mail -AddNewNotification=Activar una nueva solicitud de notificación -ListOfActiveNotifications=Lista de las solicitudes de notificaciones activas +AddNewNotification=Activar un nuevo objetivo de notificación +ListOfActiveNotifications=Listado de todos los objetivos de notificación ListOfNotificationsDone=Lista de notificaciones de e-mails enviadas diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index a9f20e07d72..862ed1a9495 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -58,12 +58,12 @@ ErrorCantLoadUserFromDolibarrDatabase=Imposible encontrar el usuario %s e ErrorNoVATRateDefinedForSellerCountry=Error, ningún tipo de IVA definido para el país '%s'. ErrorNoSocialContributionForSellerCountry=Error, ningún tipo de carga social definida para el país '%s'. ErrorFailedToSaveFile=Error, el registro del archivo falló. -ErrorOnlyPngJpgSupported=Error, solamente se soportan los formatos de imagen jpg y png. -ErrorImageFormatNotSupported=Su PHP no soporta las funciones de conversión de este formato de imagen. SetDate=Fijar fecha SelectDate=Seleccione una fecha SeeAlso=Ver también %s BackgroundColorByDefault=Color de fondo +FileNotUploaded=No se ha subido el archivo +FileUploaded=El archivo se ha subido correctamente FileWasNotUploaded=Un archivo ha sido seleccionado para adjuntarlo, pero aún no se ha subido. Haga clic en "Adjuntar este archivo" para ello. NbOfEntries=Nº de entradas GoToWikiHelpPage=Consultar la ayuda (puede requerir acceso a Internet) @@ -341,6 +341,7 @@ FullList=Listado completo Statistics=Estadísticas OtherStatistics=Otras estadísticas Status=Estado +Favorite=Favorito ShortInfo=Info. Ref=Ref. RefSupplier=Ref. proveedor diff --git a/htdocs/langs/es_ES/margins.lang b/htdocs/langs/es_ES/margins.lang index 23b8e9acd90..f1c356ab871 100644 --- a/htdocs/langs/es_ES/margins.lang +++ b/htdocs/langs/es_ES/margins.lang @@ -38,4 +38,6 @@ BuyingCost=Costos UnitCharges=Carga unitaria Charges=Cargas AgentContactType=Tipo de contacto comisionado -AgentContactTypeDetails=Indica el tipo de contacto enlazado a las facturas que serán asociados a los agentes comerciales +AgentContactTypeDetails=Indique qué tipo de contacto (enlazado a las facturas) será el utilizado para el informe de márgenes de agentes comerciales +rateMustBeNumeric=El margen debe ser un valor numérico +markRateShouldBeLesserThan100=El margen tiene que ser menor que 100 diff --git a/htdocs/langs/es_ES/members.lang b/htdocs/langs/es_ES/members.lang index ebccec6be14..dd1989dbb48 100644 --- a/htdocs/langs/es_ES/members.lang +++ b/htdocs/langs/es_ES/members.lang @@ -85,7 +85,7 @@ SubscriptionLateShort=En retraso SubscriptionNotReceivedShort=No recibida ListOfSubscriptions=Listado de afiliaciones SendCardByMail=Enviar ficha por e-mail -AddMember=Añadir miembro +AddMember=Crear miembro NoTypeDefinedGoToSetup=Ningún tipo de miembro definido. Vaya a Configuración -> Tipos de miembros NewMemberType=Nuevo tipo de miembro WelcomeEMail=E-mail @@ -125,7 +125,7 @@ Date=Fecha DateAndTime=Fecha y hora PublicMemberCard=Ficha pública miembro MemberNotOrNoMoreExpectedToSubscribe=No sometida a cotización -AddSubscription=Añadir afiliación +AddSubscription=Crear afiliación ShowSubscription=Mostrar afiliación MemberModifiedInDolibarr=Miembro modificado en Dolibarr SendAnEMailToMember=Enviar e-mail de información al miembro (E-mail: %s) diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang index 107c47e0cf8..9de70d01f95 100644 --- a/htdocs/langs/es_ES/other.lang +++ b/htdocs/langs/es_ES/other.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - other SecurityCode=Código seguridad Calendar=Calendario -AddTrip=Crear honorario Tools=Utilidades ToolsDesc=Esta área está dedicada al reagrupamiento de diversas utilidades no disponibles en las otras entradas de menú.

La lista de estas utilidades es accesible mediante el menú de al lado. Birthday=Aniversario @@ -48,6 +47,7 @@ Notify_PROJECT_CREATE=Creación de proyecto Notify_TASK_CREATE=Tarea creada Notify_TASK_MODIFY=Tarea modificada Notify_TASK_DELETE=Tarea eliminada +SeeModuleSetup=Consulte la configuración del módulo NbOfAttachedFiles=Número archivos/documentos adjuntos TotalSizeOfAttachedFiles=Tamaño total de los archivos/documentos adjuntos MaxSize=Tamaño máximo diff --git a/htdocs/langs/es_ES/products.lang b/htdocs/langs/es_ES/products.lang index c07cb7c7485..1a4726afcc2 100644 --- a/htdocs/langs/es_ES/products.lang +++ b/htdocs/langs/es_ES/products.lang @@ -117,12 +117,12 @@ ServiceLimitedDuration=Si el servicio es de duración limitada : MultiPricesAbility=Varios niveles de precio por producto/servicio MultiPricesNumPrices=Nº de precios MultiPriceLevelsName=Categoría de precios -AssociatedProductsAbility=Activar productos compuestos -AssociatedProducts=Productos compuestos +AssociatedProductsAbility=Activar la funcionalidad de productos compuestos +AssociatedProducts=Producto compuesto AssociatedProductsNumber=Nº de productos que componen este producto ParentProductsNumber=Nº de productos que este producto compone -IfZeroItIsNotAVirtualProduct=Si 0, este producto no es un producto virtual -IfZeroItIsNotUsedByVirtualProduct=Si 0, este producto no está siendo utilizado por ningún producto virtual +IfZeroItIsNotAVirtualProduct=Si 0, este producto no es un producto compuesto +IfZeroItIsNotUsedByVirtualProduct=Si 0, este producto no puede ser usado por ningún producto compuesto EditAssociate=Componer Translation=Traducción KeywordFilter=Filtro por clave @@ -179,7 +179,7 @@ CloneProduct=Clonar producto/servicio ConfirmCloneProduct=¿Está seguro de querer clonar el producto o servicio %s? CloneContentProduct=Clonar solamente la información general del producto/servicio ClonePricesProduct=Clonar la información general y los precios -CloneCompositionProduct=Clonar producto/servicio virtual +CloneCompositionProduct=Clonar productos/servicios compuestos ProductIsUsed=Este producto es utilizado NewRefForClone=Ref. del nuevo producto/servicio CustomerPrices=Precios clientes diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index 6a1cf66ddd0..da5a65ceb96 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -45,7 +45,7 @@ TaskDateStart=Fecha inicio TaskDateEnd=Fecha finalización TaskDescription=Descripción tarea NewTask=Nueva tarea -AddTask=Añadir tarea +AddTask=Crear tarea AddDuration=Indicar duración Activity=Actividad Activities=Tareas/actividades diff --git a/htdocs/langs/es_ES/propal.lang b/htdocs/langs/es_ES/propal.lang index b90258f5049..7ae23c89413 100644 --- a/htdocs/langs/es_ES/propal.lang +++ b/htdocs/langs/es_ES/propal.lang @@ -55,8 +55,6 @@ NoOpenedPropals=Sin presupuestos abiertos NoOtherOpenedPropals=Ningún otro presupuesto abierto RefProposal=Ref. presupuesto SendPropalByMail=Enviar presupuesto por e-mail -FileNotUploaded=No se ha subido el archivo -FileUploaded=El archivo se ha subido correctamente AssociatedDocuments=Documentos asociados al presupuesto: ErrorCantOpenDir=Imposible abrir el directorio DatePropal=Fecha presupuesto diff --git a/htdocs/langs/es_ES/suppliers.lang b/htdocs/langs/es_ES/suppliers.lang index 1998f61ac0c..06079f22874 100644 --- a/htdocs/langs/es_ES/suppliers.lang +++ b/htdocs/langs/es_ES/suppliers.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Proveedores Supplier=Proveedor -AddSupplier=Añadir proveedor +AddSupplier=Crear un proveedor SupplierRemoved=Proveedor eliminado SuppliersInvoice=Factura proveedor NewSupplier=Nuevo proveedor diff --git a/htdocs/langs/es_ES/users.lang b/htdocs/langs/es_ES/users.lang index 65b6d8ed0a0..e27f8b111e5 100644 --- a/htdocs/langs/es_ES/users.lang +++ b/htdocs/langs/es_ES/users.lang @@ -120,3 +120,4 @@ UseTypeFieldToChange=Modificar el campo Tipo para cambiar OpenIDURL=Dirección OpenID LoginUsingOpenID=Usar OpenID para iniciar sesión WeeklyHours=Horas semanales +ColorUser=Color para el usuario diff --git a/htdocs/langs/es_ES/withdrawals.lang b/htdocs/langs/es_ES/withdrawals.lang index 6e12cbccf47..5c241d76553 100644 --- a/htdocs/langs/es_ES/withdrawals.lang +++ b/htdocs/langs/es_ES/withdrawals.lang @@ -14,8 +14,8 @@ WithdrawalReceiptShort=Orden LastWithdrawalReceipts=Las %s últimas órdenes de domiciliación WithdrawedBills=Facturas domiciliadas WithdrawalsLines=Lineas de domiciliación -RequestStandingOrderToTreat=Pedidos de domiciliaciones a tratar -RequestStandingOrderTreated=Pedidos de domiciliaciones procesados +RequestStandingOrderToTreat=Peticiones de domiciliaciones a procesar +RequestStandingOrderTreated=Peticiones de domiciliaciones procesadas CustomersStandingOrders=Domiciliaciones de clientes CustomerStandingOrder=Domiciliación cliente NbOfInvoiceToWithdraw=Nº de facturas pendientes de domiciliación From 4c95cab35feb3c1b1fc1e4539acf923c0ec032ea Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 6 Nov 2014 07:13:03 +0100 Subject: [PATCH 039/111] Improve search in customer command list --- htdocs/commande/list.php | 96 ++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 84f8e455d11..ea17d895b95 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -43,9 +43,9 @@ $orderyear=GETPOST("orderyear","int"); $ordermonth=GETPOST("ordermonth","int"); $deliveryyear=GETPOST("deliveryyear","int"); $deliverymonth=GETPOST("deliverymonth","int"); -$sref=GETPOST('sref','alpha'); -$sref_client=GETPOST('sref_client','alpha'); -$snom=GETPOST('snom','alpha'); +$search_ref=GETPOST('search_ref','alpha'); +$search_ref_customer=GETPOST('search_ref_customer','alpha'); +$search_company=GETPOST('search_company','alpha'); $sall=GETPOST('sall'); $socid=GETPOST('socid','int'); $search_user=GETPOST('search_user','int'); @@ -69,6 +69,20 @@ $limit = $conf->liste_limit; $viewstatut=GETPOST('viewstatut'); +// Purge search criteria +if (GETPOST("button_removefilter")) +{ + $search_categ=''; + $search_user=''; + $search_sale=''; + $search_ref=''; + $search_ref_customer=''; + $search_company=''; + $orderyear=''; + $ordermonth=''; + $deliverymonth=''; + $deliveryyear=''; +} // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('orderlist')); @@ -81,24 +95,6 @@ $parameters=array('socid'=>$socid); $reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -// Do we click on purge search criteria ? -if (GETPOST("button_removefilter_x")) -{ - $search_categ=''; - $search_user=''; - $search_sale=''; - $search_ref=''; - $search_refcustomer=''; - $search_societe=''; - $search_montant_ht=''; - $orderyear=''; - $ordermonth=''; - $deliverymonth=''; - $deliveryyear=''; -} - - - /* * View */ @@ -128,8 +124,8 @@ $sql.= ' WHERE c.fk_soc = s.rowid'; $sql.= ' AND c.entity = '.$conf->entity; if ($socid) $sql.= ' AND s.rowid = '.$socid; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; -if ($sref) { - $sql .= natural_search('c.ref', $sref); +if ($search_ref) { + $sql .= natural_search('c.ref', $search_ref); } if ($sall) { @@ -188,13 +184,13 @@ else if ($deliveryyear > 0) { $sql.= " AND c.date_livraison BETWEEN '".$db->idate(dol_get_first_day($deliveryyear,1,false))."' AND '".$db->idate(dol_get_last_day($deliveryyear,12,false))."'"; } -if (!empty($snom)) +if (!empty($search_company)) { - $sql .= natural_search('s.nom', $snom); + $sql .= natural_search('s.nom', $search_company); } -if (!empty($sref_client)) +if (!empty($search_ref_customer)) { - $sql.= ' AND c.ref_client LIKE \'%'.$db->escape($sref_client).'%\''; + $sql.= ' AND c.ref_client LIKE \'%'.$db->escape($search_ref_customer).'%\''; } if ($search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$search_sale; if ($search_user > 0) @@ -246,15 +242,15 @@ if ($resql) $title.=' - '.$langs->trans('StatusOrderValidated').', '.(empty($conf->expedition->enabled)?'':$langs->trans("StatusOrderSent").', ').$langs->trans('StatusOrderToBill'); $param='&socid='.$socid.'&viewstatut='.$viewstatut; - if ($ordermonth) $param.='&ordermonth='.$ordermonth; - if ($orderyear) $param.='&orderyear='.$orderyear; - if ($deliverymonth) $param.='&deliverymonth='.$deliverymonth; - if ($deliveryyear) $param.='&deliveryyear='.$deliveryyear; - if ($sref) $param.='&sref='.$sref; - if ($snom) $param.='&snom='.$snom; - if ($sref_client) $param.='&sref_client='.$sref_client; - if ($search_user > 0) $param.='&search_user='.$search_user; - if ($search_sale > 0) $param.='&search_sale='.$search_sale; + if ($ordermonth) $param.='&ordermonth='.$ordermonth; + if ($orderyear) $param.='&orderyear='.$orderyear; + if ($deliverymonth) $param.='&deliverymonth='.$deliverymonth; + if ($deliveryyear) $param.='&deliveryyear='.$deliveryyear; + if ($search_ref) $param.='&search_ref='.$search_ref; + if ($search_company) $param.='&search_company='.$search_company; + if ($search_ref_customer) $param.='&search_ref_customer='.$search_ref_customer; + if ($search_user > 0) $param.='&search_user='.$search_user; + if ($search_sale > 0) $param.='&search_sale='.$search_sale; $num = $db->num_rows($resql); print_barre_liste($title, $page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords); @@ -294,33 +290,35 @@ if ($resql) print_liste_field_titre($langs->trans('Ref'),$_SERVER["PHP_SELF"],'c.ref','',$param,'width="25%"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('RefCustomerOrder'),$_SERVER["PHP_SELF"],'c.ref_client','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Company'),$_SERVER["PHP_SELF"],'s.nom','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('OrderDate'),$_SERVER["PHP_SELF"],'c.date_commande','',$param, 'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('DeliveryDate'),$_SERVER["PHP_SELF"],'c.date_livraison','',$param, 'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('OrderDate'),$_SERVER["PHP_SELF"],'c.date_commande','',$param, 'align="center"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('DeliveryDate'),$_SERVER["PHP_SELF"],'c.date_livraison','',$param, 'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('AmountHT'),$_SERVER["PHP_SELF"],'c.total_ht','',$param, 'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans('Status'),$_SERVER["PHP_SELF"],'c.fk_statut','',$param,'align="right"',$sortfield,$sortorder); print ''; + print '
'; print ''; print ''; print ''; - print ''; + print ''; + print ''; + print '\n"; $var=true; $total=0; @@ -443,12 +441,12 @@ if ($resql) print ''; // Order date - print ''; // Delivery date - print ''; From b60f834d8d8bdaea1d0ead34b1fb8582e7745d02 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 6 Nov 2014 07:19:16 +0100 Subject: [PATCH 040/111] Improve search into supplier command list --- htdocs/fourn/commande/list.php | 44 +++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 58abe457831..97b8900bd4b 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -39,12 +39,12 @@ $langs->load("sendings"); $search_ref=GETPOST('search_ref'); $search_refsupp=GETPOST('search_refsupp'); -$search_nom=GETPOST('search_nom'); +$search_company=GETPOST('search_company'); $search_user=GETPOST('search_user'); $search_ttc=GETPOST('search_ttc'); $sall=GETPOST('search_all'); $search_status=GETPOST('search_status','int'); -if ($search_status == '') $search_status=-1; + $page = GETPOST('page','int'); $socid = GETPOST('socid','int'); @@ -58,6 +58,18 @@ $orderid = GETPOST('orderid'); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'fournisseur', $orderid, '', 'commande'); +// Purge search criteria +if (GETPOST("button_removefilter")) +{ + $search_ref=''; + $search_refsupp=''; + $search_company=''; + $search_user=''; + $search_ttc=''; + $search_status=''; +} + +if ($search_status == '') $search_status=-1; /* * View @@ -102,9 +114,9 @@ if ($search_ref) { $sql .= natural_search('cf.ref', $search_ref); } -if ($search_nom) +if ($search_company) { - $sql .= natural_search('s.nom', $search_nom); + $sql .= natural_search('s.nom', $search_company); } if ($search_user) { @@ -154,13 +166,14 @@ if ($resql) $i = 0; $param=""; - if ($search_ref) $param.="&search_ref=".$search_ref; - if ($search_nom) $param.="&search_nom=".$search_nom; - if ($search_user) $param.="&search_user=".$search_user; - if ($search_ttc) $param.="&search_ttc=".$search_ttc; - if ($search_refsupp) $param.="&search_refsupp=".$search_refsupp; - if ($socid) $param.="&socid=".$socid; - if ($search_status >= 0) $param.="&search_status=".$search_status; + if ($search_ref) $param.="&search_ref=".$search_ref; + if ($search_company) $param.="&search_company=".$search_company; + if ($search_user) $param.="&search_user=".$search_user; + if ($search_ttc) $param.="&search_ttc=".$search_ttc; + if ($search_refsupp) $param.="&search_refsupp=".$search_refsupp; + if ($socid) $param.="&socid=".$socid; + if ($search_status >= 0) $param.="&search_status=".$search_status; + print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords); print '
'; print '
'.$langs->trans("Invoice").''.$langs->trans("ThirdParty").''.$langs->trans("Amount").''.$langs->trans("Invoice").''.$langs->trans("ThirdParty").''.$langs->trans("Amount").''.$langs->trans("Status").'
'.price($obj->total_ttc)."'; + $invoicestatic->fetch($obj->facid); + print $invoicestatic->getLibStatut(5); + print "
'; - print ''; + print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; print ''; + print ''; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; print ''; $formother->select_year($orderyear?$orderyear:-1,'orderyear',1, 20, 5); - print ''; + print ''; if (! empty($conf->global->MAIN_LIST_FILTER_ON_DAY)) print ''; print ''; $formother->select_year($deliveryyear?$deliveryyear:-1,'deliveryyear',1, 20, 5); - print ' '; - print ''; - print ''; - print '
 '; + print ''; + print "
'; + print ''; print dol_print_date($db->jdate($objp->date_commande), 'day'); print ''; + print ''; print dol_print_date($db->jdate($objp->date_livraison), 'day'); print '
'; @@ -180,7 +193,7 @@ if ($resql) print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; @@ -188,10 +201,9 @@ if ($resql) print ''; - print ''; - print ''; + print '\n"; $var=true; From 6f9d283ddc6c3a170088abb3fc063d1449916e0f Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Thu, 6 Nov 2014 11:20:47 +0100 Subject: [PATCH 041/111] Fix: Module notifications DB Error "unknown field type" into third tab notifications --- htdocs/core/class/notify.class.php | 11 ++++++----- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 1 + htdocs/install/mysql/tables/llx_notify.sql | 2 ++ htdocs/societe/notify/card.php | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/htdocs/core/class/notify.class.php b/htdocs/core/class/notify.class.php index 26506360e66..db88671f7ff 100644 --- a/htdocs/core/class/notify.class.php +++ b/htdocs/core/class/notify.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2014 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -173,7 +174,7 @@ class Notify // Check notification per third party $sql = "SELECT s.nom, c.email, c.rowid as cid, c.lastname, c.firstname, c.default_lang,"; - $sql.= " a.rowid as adid, a.label, a.code, n.rowid"; + $sql.= " a.rowid as adid, a.label, a.code, n.rowid, n.type"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as c,"; $sql.= " ".MAIN_DB_PREFIX."c_action_trigger as a,"; $sql.= " ".MAIN_DB_PREFIX."notify_def as n,"; @@ -292,8 +293,8 @@ class Notify if ($mailfile->sendfile()) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, objet_type, objet_id, email)"; - $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", ".$obj->cid.", '".$object_type."', ".$object->id.", '".$this->db->escape($obj->email)."')"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; + $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", ".$obj->cid.", '".$obj->type."', '".$object_type."', ".$object->id.", '".$this->db->escape($obj->email)."')"; if (! $this->db->query($sql)) { dol_print_error($this->db); @@ -421,8 +422,8 @@ class Notify if ($mailfile->sendfile()) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, objet_type, objet_id, email)"; - $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", null, '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."notify (daten, fk_action, fk_soc, fk_contact, type, objet_type, objet_id, email)"; + $sql.= " VALUES ('".$this->db->idate(dol_now())."', ".$actiondefid.", ".$object->socid.", null, '".$obj->type."', '".$object_type."', ".$object->id.", '".$this->db->escape($conf->global->$param)."')"; if (! $this->db->query($sql)) { dol_print_error($this->db); diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 4c31bef8055..5e1119ed4b4 100644 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -28,6 +28,7 @@ insert into llx_c_action_trigger (code,label,description,elementtype,rang) value insert into llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2); ALTER TABLE llx_notify ADD COLUMN fk_soc integer NULL after fk_action; +ALTER TABLE llx_notify ADD COLUMN type varchar(16) DEFAULT 'email' after fk_soc; ALTER TABLE llx_bank_account ADD COLUMN fk_user_author integer; diff --git a/htdocs/install/mysql/tables/llx_notify.sql b/htdocs/install/mysql/tables/llx_notify.sql index 21a7b833dec..1dcfe6af8e6 100644 --- a/htdocs/install/mysql/tables/llx_notify.sql +++ b/htdocs/install/mysql/tables/llx_notify.sql @@ -1,6 +1,7 @@ -- =================================================================== -- Copyright (C) 2003 Rodolphe Quiedeville -- Copyright (C) 2009 Laurent Destailleur +-- Copyright (C) 2014 Juanjo Menent -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -26,6 +27,7 @@ create table llx_notify fk_soc integer NULL, fk_contact integer NULL, fk_user integer NULL, + type varchar(16) DEFAULT 'email', objet_type varchar(24) NOT NULL, objet_id integer NOT NULL, email varchar(255) diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 542a2066e93..1845669dcfc 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -1,7 +1,7 @@ * Copyright (C) 2004-2014 Laurent Destailleur - * Copyright (C) 2010-2012 Juanjo Menent + * Copyright (C) 2010-2014 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -376,7 +376,7 @@ if ($result > 0) print ''; // List - $sql = "SELECT n.rowid, n.daten, n.email, n.objet_type, n.objet_id as object_id, n.type,"; + $sql = "SELECT n.rowid, n.daten, n.email, n.objet_type as object_type, n.objet_id as object_id, n.type,"; $sql.= " c.rowid as id, c.lastname, c.firstname, c.email as contactemail,"; $sql.= " a.code, a.label"; $sql.= " FROM ".MAIN_DB_PREFIX."c_action_trigger as a,"; From c422024cb94145d95e1f08ca153e6f557fd3592a Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Thu, 6 Nov 2014 11:55:26 +0100 Subject: [PATCH 042/111] Trad: More accurate trad of notifications. Update form transifex --- htdocs/langs/es_ES/admin.lang | 2 +- htdocs/langs/es_ES/mails.lang | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 5e90bd39931..7973d578e24 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -1440,7 +1440,7 @@ DetailEnabled=Condición de mostrar o no DetailRight=Condición de visualización completa o restringida DetailLangs=Archivo .lang para la traducción del título DetailUser=Interno / Externo / Todos -Target=Objetivo +Target=Destinatario DetailTarget=Comportamiento del enlace (_blank para abrir una nueva ventana) DetailLevel=Nivel (-1:menú superior, 0:principal, >0 menú y submenú) ModifMenu=Modificación del menú diff --git a/htdocs/langs/es_ES/mails.lang b/htdocs/langs/es_ES/mails.lang index 233ad054aa1..531f4ce42d5 100644 --- a/htdocs/langs/es_ES/mails.lang +++ b/htdocs/langs/es_ES/mails.lang @@ -133,6 +133,6 @@ Notifications=Notificaciones NoNotificationsWillBeSent=Ninguna notificación por e-mail está prevista para este evento y empresa ANotificationsWillBeSent=1 notificación va a ser enviada por e-mail SomeNotificationsWillBeSent=%s notificaciones van a ser enviadas por e-mail -AddNewNotification=Activar un nuevo objetivo de notificación -ListOfActiveNotifications=Listado de todos los objetivos de notificación -ListOfNotificationsDone=Lista de notificaciones de e-mails enviadas +AddNewNotification=Activar un nuevo destinatario de notificaciones +ListOfActiveNotifications=Listado de todos los destinatarios de notificaciones +ListOfNotificationsDone=Listado de notificaciones enviadas From 0f22ebb7b548646ca3801aa540d3f749c6cc4064 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Thu, 6 Nov 2014 12:26:15 +0100 Subject: [PATCH 043/111] Trad: More accurate trad es_ES of after order. Update form transifex --- htdocs/langs/es_ES/propal.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/es_ES/propal.lang b/htdocs/langs/es_ES/propal.lang index 7ae23c89413..2dc18972359 100644 --- a/htdocs/langs/es_ES/propal.lang +++ b/htdocs/langs/es_ES/propal.lang @@ -81,7 +81,7 @@ ProposalsAndProposalsLines=Presupuestos a clientes y líneas de presupuestos ProposalLine=Línea de presupuesto AvailabilityPeriod=Tiempo de entrega SetAvailability=Definir el tiempo de entrega -AfterOrder=despues del pedido +AfterOrder=desde la firma ##### Availability ##### AvailabilityTypeAV_NOW=Inmediata AvailabilityTypeAV_1W=1 semana From b68bfac593a7f33edfe72f390ea4d557ef0580a2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 6 Nov 2014 13:46:12 +0100 Subject: [PATCH 044/111] Fix: Usage of migration scripts from command line --- .../install/mysql/migration/3.5.0-3.6.0.sql | 0 .../install/mysql/migration/3.6.0-3.7.0.sql | 0 htdocs/install/mysql/migration/repair.sql | 0 htdocs/install/upgrade.php | 23 ++++++++++++++----- htdocs/install/upgrade2.php | 15 ++++++++++++ 5 files changed, 32 insertions(+), 6 deletions(-) mode change 100644 => 100755 htdocs/install/mysql/migration/3.5.0-3.6.0.sql mode change 100644 => 100755 htdocs/install/mysql/migration/3.6.0-3.7.0.sql mode change 100644 => 100755 htdocs/install/mysql/migration/repair.sql mode change 100644 => 100755 htdocs/install/upgrade.php mode change 100644 => 100755 htdocs/install/upgrade2.php diff --git a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql old mode 100644 new mode 100755 diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql old mode 100644 new mode 100755 diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql old mode 100644 new mode 100755 diff --git a/htdocs/install/upgrade.php b/htdocs/install/upgrade.php old mode 100644 new mode 100755 index d89596e25e6..396c9f96b01 --- a/htdocs/install/upgrade.php +++ b/htdocs/install/upgrade.php @@ -50,6 +50,7 @@ error_reporting(0); @set_time_limit(120); error_reporting($err); + $setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto'; $langs->setDefaultLang($setuplang); $versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]); @@ -74,6 +75,22 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial * View */ +if (! $versionfrom && ! $versionto) +{ + print 'Error: Parameter versionfrom or versionto missing.'."\n"; + print 'Upgrade must be ran from cmmand line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n"; + // Test if batch mode + $sapi_type = php_sapi_name(); + $script_file = basename(__FILE__); + $path=dirname(__FILE__).'/'; + if (substr($sapi_type, 0, 3) == 'cli') + { + print 'Syntax from command line: '.$script_file." x.y.z a.b.c\n"; + } + exit; +} + + pHeader('',"upgrade2",GETPOST('action'),'versionfrom='.$versionfrom.'&versionto='.$versionto); $actiondone=0; @@ -85,12 +102,6 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action'))) print '

'.$langs->trans("DatabaseMigration").'

'; - if (! $versionfrom && ! $versionto) - { - print '
Parameter versionfrom or versionto missing. Upgrade is launched from page install/index.php (like a first install) instead of install/upgrade.php
'; - exit; - } - print '
 '; $formorder->selectSupplierOrderStatus($search_status,1,'search_status'); print ''; - print ''; - print '
'; + print ''; + print "
'; $error=0; diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php old mode 100644 new mode 100755 index 0bf76c7d729..3a02a78f9e8 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -83,6 +83,21 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial * View */ +if (! $versionfrom && ! $versionto) +{ + print 'Error: Parameter versionfrom or versionto missing.'."\n"; + print 'Upgrade must be ran from cmmand line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n"; + // Test if batch mode + $sapi_type = php_sapi_name(); + $script_file = basename(__FILE__); + $path=dirname(__FILE__).'/'; + if (substr($sapi_type, 0, 3) == 'cli') + { + print 'Syntax from command line: '.$script_file." x.y.z a.b.c\n"; + } + exit; +} + pHeader('','etape5',GETPOST("action")?GETPOST("action"):'upgrade','versionfrom='.$versionfrom.'&versionto='.$versionto); From 9ec71e18fcfbacacd3bf5c89a7d2f1ba2e4fb760 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 6 Nov 2014 13:47:15 +0100 Subject: [PATCH 045/111] Try to track travis pb --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 548a8c53380..69f43183cfc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -92,8 +92,8 @@ script: - php upgrade2.php 3.4.0 3.5.0 > upgrade2.log - php upgrade.php 3.5.0 3.6.0 >> upgrade.log - php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log - - php upgrade.php 3.6.0 3.7.0 >> upgrade.log -# - cat upgrade.log + - php upgrade.php 3.6.0 3.7.0 >> upgrade360370.log + - cat upgrade360370.log - php upgrade2.php 3.6.0 3.7.0 >> upgrade2.log # - cat upgrade2.log - cd ../.. From e421741fc4eed0aff731a6e50ee5384e05daf5a0 Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Thu, 6 Nov 2014 17:33:05 +0100 Subject: [PATCH 046/111] Trad: More accurate trad of holidays. Update form transifex --- htdocs/langs/es_ES/admin.lang | 4 +- htdocs/langs/es_ES/holiday.lang | 136 ++++++++++++++++---------------- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 7973d578e24..79935d143ca 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -514,8 +514,8 @@ Module5000Name=Multi-empresa Module5000Desc=Permite gestionar varias empresas Module6000Name=Flujo de trabajo Module6000Desc=Gestión del flujo de trabajo -Module20000Name=Quitar gestión de vacaciones -Module20000Desc=Gestión de los días libres de los empleados +Module20000Name=Gestión de días libres retribuidos +Module20000Desc=Gestión de los días libres retribuidos de los empleados Module39000Name=Lotes de productos Module39000Desc=Gestión de lotes y fechas de caducidad y venta de los productos Module50000Name=PayBox diff --git a/htdocs/langs/es_ES/holiday.lang b/htdocs/langs/es_ES/holiday.lang index 78cd612783e..99c55188b5a 100644 --- a/htdocs/langs/es_ES/holiday.lang +++ b/htdocs/langs/es_ES/holiday.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - holiday HRM=RRHH -Holidays=Vacaciones -CPTitreMenu=Vacaciones +Holidays=Días libres +CPTitreMenu=Días libres MenuReportMonth=Estado mensual -MenuAddCP=Realizar una petición de vacaciones -NotActiveModCP=Debe activar el módulo Vacaciones para ver esta página -NotConfigModCP=Debe configurar el módulo Vacaciones para ver esta página. Para configurarlo, haga clic aquí. -NoCPforUser=No tiene peticiones de vacaciones. -AddCP=Realizar una petición de vacaciones +MenuAddCP=Realizar una petición de días libres +NotActiveModCP=Debe activar el módulo Días libres retribuidos para ver esta página +NotConfigModCP=Debe configurar el módulo Días libres retribuidos para ver esta página. Para configurarlo, haga clic aquí. +NoCPforUser=No tiene peticiones de días libres. +AddCP=Realizar una petición de días libres Employe=Empleado DateDebCP=Fecha inicio DateFinCP=Fecha fin @@ -18,24 +18,24 @@ ApprovedCP=Aprobada CancelCP=Anulada RefuseCP=Rechazada ValidatorCP=Validador -ListeCP=Listado de vacaciones +ListeCP=Listado de días libres ReviewedByCP=Será revisada por DescCP=Descripción -SendRequestCP=Enviar la petición de vacaciones -DelayToRequestCP=Las peticiones de vacaciones deben realizarse al menos %s días antes. -MenuConfCP=Definir las vacaciones -UpdateAllCP=Actualizar las vacaciones -SoldeCPUser=Su saldo de vacaciones es de %s días. +SendRequestCP=Enviar la petición de días libres +DelayToRequestCP=Las peticiones de días libres deben realizarse al menos %s días antes. +MenuConfCP=Definir los días libres +UpdateAllCP=Actualizar los días libres +SoldeCPUser=Su saldo de días libres es de %s días. ErrorEndDateCP=Debe indicar una fecha de fin superior a la fecha de inicio. ErrorSQLCreateCP=Se ha producido un error de SQL durante la creación : -ErrorIDFicheCP=Se produjo un error, esta solicitud de vacaciones no existe. +ErrorIDFicheCP=Se produjo un error, esta solicitud de días libres no existe. ReturnCP=Volver a la página anterior -ErrorUserViewCP=No está autorizado a leer esta petición de vacaciones. -InfosCP=Información de la petición de vacaciones +ErrorUserViewCP=No está autorizado a leer esta petición de días libres. +InfosCP=Información de la petición de días libres InfosWorkflowCP=Información del workflow RequestByCP=Pedido por -TitreRequestCP=Ficha vacaciones -NbUseDaysCP=Número de días de vacaciones consumidos +TitreRequestCP=Ficha días libres +NbUseDaysCP=Número de días libres consumidos EditCP=Modificar DeleteCP=Eliminar ActionValidCP=Validar @@ -43,26 +43,26 @@ ActionRefuseCP=Rechazar ActionCancelCP=Anular StatutCP=Estado SendToValidationCP=Enviar validación -TitleDeleteCP=Eliminar la petición de vacaciones -ConfirmDeleteCP=¿Está seguro de querer eliminar esta petición de vacaciones? -ErrorCantDeleteCP=Error, no tiene permisos para eliminar esta petición de vacaciones. -CantCreateCP=No tiene permisos para realizar peticiones de vacaciones. -InvalidValidatorCP=Debe indicar un validador para su petición de vacaciones. +TitleDeleteCP=Eliminar la petición de días libres +ConfirmDeleteCP=¿Está seguro de querer eliminar esta petición de días libres? +ErrorCantDeleteCP=Error, no tiene permisos para eliminar esta petición de días libres. +CantCreateCP=No tiene permisos para realizar peticiones de días libres. +InvalidValidatorCP=Debe indicar un validador para su petición de días libres. UpdateButtonCP=Actualizar -CantUpdate=No puede actualizar esta petición de vacaciones. +CantUpdate=No puede actualizar esta petición de días libres. NoDateDebut=Debe indicar una fecha de inicio. NoDateFin=Debe indicar una fecha de fin. -ErrorDureeCP=Su petición de vacaciones no contiene ningún día hábil. -TitleValidCP=Aprobar la petición de vacaciones -ConfirmValidCP=¿Está seguro de querer validar esta petición de vacaciones? +ErrorDureeCP=Su petición de días libres no contiene ningún día hábil. +TitleValidCP=Aprobar la petición de días libres +ConfirmValidCP=¿Está seguro de querer validar esta petición de días libres? DateValidCP=Fecha de validación -TitleToValidCP=Enviar la petición de vacaciones -ConfirmToValidCP=¿Está seguro de querer enviar la petición de vacaciones? -TitleRefuseCP=Rechazar la petición de vacaciones -ConfirmRefuseCP=¿Está seguro de querer rechazar la petición de vacaciones? +TitleToValidCP=Enviar la petición de días libres +ConfirmToValidCP=¿Está seguro de querer enviar la petición de días libres? +TitleRefuseCP=Rechazar la petición de días libres +ConfirmRefuseCP=¿Está seguro de querer rechazar la petición de días libres? NoMotifRefuseCP=Debe seleccionar un motivo para rechazar esta petición. -TitleCancelCP=Cancelar la petición de vacaciones -ConfirmCancelCP=¿Está seguro de querer anular la petición de vacaciones? +TitleCancelCP=Cancelar la petición de días libres +ConfirmCancelCP=¿Está seguro de querer anular la petición de días libres? DetailRefusCP=Motivo del rechazo DateRefusCP=Fecha del rechazo DateCancelCP=Fecha de la anulación @@ -72,42 +72,42 @@ MotifCP=Motivo UserCP=Usuario ErrorAddEventToUserCP=Se ha producido un error en la asignación del permiso excepcional. AddEventToUserOkCP=Se ha añadido el permiso excepcional. -MenuLogCP=Ver los logs de vacaciones -LogCP=Logs de actualizaciones de vacaciones +MenuLogCP=Ver el historial de días libres +LogCP=Historial de actualizaciones de días libres ActionByCP=Realizado por UserUpdateCP=Para el usuario PrevSoldeCP=Saldo anterior NewSoldeCP=Nuevo saldo -alreadyCPexist=Ya se ha efectuado una petición de vacaciones para este periodo. +alreadyCPexist=Ya se ha efectuado una petición de días libres para este periodo. UserName=Nombre Apellidos Employee=Empleado FirstDayOfHoliday=Primer día libre LastDayOfHoliday=Último día libre HolidaysMonthlyUpdate=Actualización mensual ManualUpdate=Actualización manual -HolidaysCancelation=Anulación vacaciones +HolidaysCancelation=Anulación días libres ## Configuration du Module ## -ConfCP=Configuración del módulo de vacaciones +ConfCP=Configuración del módulo de días libres retribuidos DescOptionCP=Descripción de la opción ValueOptionCP=Valor -GroupToValidateCP=Grupo con posibilidad de aprobar las vacaciones +GroupToValidateCP=Grupo con posibilidad de aprobar los días libres ConfirmConfigCP=Validar la configuración -LastUpdateCP=Última actualización automática de vacaciones +LastUpdateCP=Última actualización automática de días libres UpdateConfCPOK=Actualización efectuada correctamente. ErrorUpdateConfCP=Se ha producido un error durante la actualización, vuélvalo a intentar. -AddCPforUsers=Añada los saldos de vacaciones de los usuarios haciendo clic aquí. -DelayForSubmitCP=Fecha límite para realizar peticiones de vacaciones +AddCPforUsers=Añada los saldos de días libres de los usuarios haciendo clic aquí. +DelayForSubmitCP=Fecha límite para realizar peticiones de días libres AlertapprobatortorDelayCP=Advertir al validador si la petición no corresponde a la fecha límite AlertValidatorDelayCP=Advertir al usuario validador si la petición no respeta el límite previsto -AlertValidorSoldeCP=Advertir al usuario validador si el usuario pide vacaciones superiores a su saldo -nbUserCP=Número de usuarios tomados en cuenta en el módulo vacaciones -nbHolidayDeductedCP=Número de días retribuídos a deducir por día de vacaciones -nbHolidayEveryMonthCP=Número de vacaciones añadidas por mes -Module27130Name= Gestion de las vacaciones +AlertValidorSoldeCP=Advertir al usuario validador si el usuario pide días libres superiores a su saldo +nbUserCP=Número de usuarios tomados en cuenta en el módulo días libres retribuidos +nbHolidayDeductedCP=Número de días retribuídos a deducir por día líbre +nbHolidayEveryMonthCP=Número de días libres añadidos por mes +Module27130Name= Gestión de los días libres Module27130Desc= Gestión de días libres -TitleOptionMainCP=Ajustes principales de vacaciones -TitleOptionEventCP=Ajustes de vacaciones enlazados a eventos +TitleOptionMainCP=Ajustes principales de días libres +TitleOptionEventCP=Ajustes de días libres enlazados a eventos ValidEventCP=Validar UpdateEventCP=Actualizar los eventos CreateEventCP=Crear @@ -125,25 +125,25 @@ TitleUpdateEventCP=Modificar o eliminar un permiso excepcional DeleteEventOptionCP=Eliminar UpdateEventOptionCP=Actualizar ErrorMailNotSend=Se ha producido un error en el envío del e-mail : -NoCPforMonth=Sin vacaciones este mes. +NoCPforMonth=Sin días libres este mes. nbJours=Número de días -TitleAdminCP=Configuración de las vacaciones +TitleAdminCP=Configuración de los días libres retribuidos #Messages Hello=Hola -HolidaysToValidate=Días retribuidos a validar -HolidaysToValidateBody=A continuación encontrará una solicitud de días retribuidos para validar -HolidaysToValidateDelay=Esta solicitud de días retribuidos tendrá lugar en un plazo de menos de %s días. -HolidaysToValidateAlertSolde=El usuario que ha realizado la solicitud de días retribuidos no dispone de suficientes días disponibles. -HolidaysValidated=Días retribuidos validados -HolidaysValidatedBody=Su solicitud de días retribuidos desde el %s al %s ha sido validada. -HolidaysRefused=Días retribuidos denegados -HolidaysRefusedBody=Su solicitud de días retribuidos desde el %s al %s ha sido denegada por el siguiente motivo : -HolidaysCanceled=Días retribuidos cancelados -HolidaysCanceledBody=Su solicitud de días retribuidos desde el %s al %s ha sido cancelada. -Permission20000=Leer sus propios días retribuidos -Permission20001=Crear/modificar sus días retribuidos -Permission20002=Crear/modificar días retribuidos para todos -Permission20003=Eliminar peticiones de días retribuidos -Permission20004=Configurar días retribuidos de usuarios -Permission20005=Consultar el historial de modificaciones de permisos retribuídos -Permission20006=Leer informe mensual de días retribuidos +HolidaysToValidate=Días libres retribuidos a validar +HolidaysToValidateBody=A continuación encontrará una solicitud de días libres retribuidos para validar +HolidaysToValidateDelay=Esta solicitud de días libres retribuidos tendrá lugar en un plazo de menos de %s días. +HolidaysToValidateAlertSolde=El usuario que ha realizado la solicitud de días libres retribuidos no dispone de suficientes días disponibles. +HolidaysValidated=Días libres retribuidos validados +HolidaysValidatedBody=Su solicitud de días libres retribuidos desde el %s al %s ha sido validada. +HolidaysRefused=Días libres retribuidos denegados +HolidaysRefusedBody=Su solicitud de días libres retribuidos desde el %s al %s ha sido denegada por el siguiente motivo : +HolidaysCanceled=Días libres retribuidos cancelados +HolidaysCanceledBody=Su solicitud de días libres retribuidos desde el %s al %s ha sido cancelada. +Permission20000=Leer sus propios días libres retribuidos +Permission20001=Crear/modificar sus días libres retribuidos +Permission20002=Crear/modificar días libres retribuidos para todos +Permission20003=Eliminar peticiones de días libres retribuidos +Permission20004=Configurar días libres retribuidos de usuarios +Permission20005=Consultar el historial de modificaciones de días libres retribuídos +Permission20006=Leer informe mensual de días libres retribuidos From a8b3153f5413de7a0e4b1d32c9ef4f1edd245584 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 6 Nov 2014 19:47:27 +0100 Subject: [PATCH 047/111] Improve search in list --- htdocs/comm/action/listactions.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index c330540cb03..53243d0c165 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.php @@ -99,6 +99,13 @@ if (! $user->rights->agenda->allactions->read || $filter=='mine') // If no permi $filterd=$user->id; } +// Purge search criteria +if (GETPOST("button_removefilter")) +{ + $datestart=''; + $dateend=''; +} + // Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('agendalist')); @@ -278,8 +285,7 @@ if ($resql) //print ''; print ''; print ''; print "\n"; From acbbe823e8fe8e947f41a4818f810e94c7a2f87c Mon Sep 17 00:00:00 2001 From: aspangaro Date: Thu, 6 Nov 2014 20:04:51 +0100 Subject: [PATCH 048/111] Typo --- htdocs/comm/propal/list.php | 7 +++---- htdocs/contact/list.php | 1 - htdocs/fourn/commande/list.php | 1 - htdocs/product/list.php | 4 ++-- htdocs/product/stock/mouvement.php | 1 - 5 files changed, 5 insertions(+), 9 deletions(-) diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index 2b8e478d37d..96d633bd834 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -323,10 +323,9 @@ if ($result) $formpropal->selectProposalStatus($viewstatut,1); print ''; print ''; + print ''; + print ''; + print ''; print "\n"; $var=true; diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index a311c87cffc..2e28328085a 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -357,7 +357,6 @@ if ($result) print ''; print ''; print ''; diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 97b8900bd4b..ab0fd08d3f0 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -45,7 +45,6 @@ $search_ttc=GETPOST('search_ttc'); $sall=GETPOST('search_all'); $search_status=GETPOST('search_status','int'); - $page = GETPOST('page','int'); $socid = GETPOST('socid','int'); $sortorder = GETPOST('sortorder','alpha'); diff --git a/htdocs/product/list.php b/htdocs/product/list.php index 55b9beb259c..ebf8b77f722 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -510,7 +510,7 @@ else $product_static->status_buy = $objp->tobuy; $product_static->status = $objp->tosell; // Status (to sell) - print ''; // Status (to buy) - print ''; print ''; print "\n"; From 2f30e769f6616cd528284062c81d5fbcc04465bd Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Thu, 6 Nov 2014 22:16:27 +0100 Subject: [PATCH 049/111] Fix: [ bug #1535 ] Supplier invoice Extrafields are not shown --- ChangeLog | 1 + htdocs/core/tpl/extrafields_view.tpl.php | 10 +++++++--- .../fourn/class/fournisseur.facture.class.php | 10 ++++++++++ htdocs/fourn/facture/card.php | 19 ++++++++++++++++++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5182a84cd33..9f1ae0857a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -99,6 +99,7 @@ For users: - Fix: [ bug #1506, #1507 ] ECM trigger error problem - Fix: [ bug #1469 ] Triggers CONTACT_MODIFY and CONTACT_DELETE duplicates error message - Fix: [ bug #1537 ] Difference between societe.nom and adherent.societe. +- Fix: [ bug #1535 ] Supplier invoice Extrafields are not shown For users, new experimental module (need to set feature level of instance to experimental to see them): - New: Module Accounting Expert to manage accountancy diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index d344ef5eb82..ee2a8695f3a 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -1,5 +1,6 @@ + * Copyright (C) 2014 Juanjo Menent * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -48,7 +49,9 @@ if (empty($reshook) && ! empty($extrafields->attribute_label)) print '
'; - //print '  '; - //print ''; + print ''; print '
'; - print ''; - print ' '; - print ''; - print '
'; print ''; - print ' '; print ''; print '
'; + print ''; if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer) { print ajax_object_onoff($product_static, 'status', 'tosell', 'ProductStatusOnSell', 'ProductStatusNotOnSell'); } else { @@ -519,7 +519,7 @@ else print ''; + print ''; if (! empty($conf->use_javascript_ajax) && $user->rights->produit->creer) { print ajax_object_onoff($product_static, 'status_buy', 'tobuy', 'ProductStatusOnBuy', 'ProductStatusNotOnBuy'); } else { diff --git a/htdocs/product/stock/mouvement.php b/htdocs/product/stock/mouvement.php index 50b46c7003f..06e089c5209 100644 --- a/htdocs/product/stock/mouvement.php +++ b/htdocs/product/stock/mouvement.php @@ -461,7 +461,6 @@ if ($resql) print ''; print ''; - print '  '; print ''; print '
attribute_required [$key])) print ' class="fieldrequired"'; print '>' . $label . ''; - if (($object->statut == 0 || $extrafields->attribute_alwayseditable[$key]) && $user->rights->{$object->element}->creer && ($action != 'edit_extras' || GETPOST('attribute') != $key)) + + //TODO Improve element and rights detection + if (($object->statut == 0 || $extrafields->attribute_alwayseditable[$key]) && ($object->element=='order_supplier'?$user->rights->fournisseur>commande:($object->element=='invoice_supplier'?$user->rights->fournisseur>facture:$user->rights->{$object->element}->creer)) && ($action != 'edit_extras' || GETPOST('attribute') != $key)) print ''; print '
' . img_edit().'
'; @@ -58,8 +61,9 @@ if (empty($reshook) && ! empty($extrafields->attribute_label)) if (in_array($extrafields->attribute_type [$key], array('date','datetime'))) { $value = isset($_POST ["options_" . $key]) ? dol_mktime($_POST ["options_" . $key . "hour"], $_POST ["options_" . $key . "min"], 0, $_POST ["options_" . $key . "month"], $_POST ["options_" . $key . "day"], $_POST ["options_" . $key . "year"]) : $db->jdate($object->array_options ['options_' . $key]); } - - if ($action == 'edit_extras' && $user->rights->{$object->element}->creer && GETPOST('attribute') == $key) + + //TODO Improve element and rights detection + if ($action == 'edit_extras' && ($object->element=='order_supplier'?$user->rights->fournisseur>commande:($object->element=='invoice_supplier'?$user->rights->fournisseur>facture:$user->rights->{$object->element}->creer)) && GETPOST('attribute') == $key) { print ''; print ''; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index bd786cfdf4c..ec74b836e1c 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -255,6 +255,16 @@ class FactureFournisseur extends CommonInvoice $result=$this->update_price(); if ($result > 0) { + + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + { + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } + } + // Call trigger $result=$this->call_trigger('BILL_SUPPLIER_CREATE',$user); if ($result < 0) $error++; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index b88fd582400..4f1583f6b61 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -300,10 +300,16 @@ elseif ($action == 'add' && $user->rights->fournisseur->facture->creer) $_GET['socid']=$_POST['socid']; $error++; } - + + // Fill array 'array_options' with data from add form + if (! $error) { $db->begin(); + + $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); + $ret = $extrafields->setOptionalsFromPost($extralabels, $object); + if ($ret < 0) $error ++; $tmpproject = GETPOST('projectid', 'int'); @@ -1179,6 +1185,9 @@ llxHeader('','',''); // Mode creation if ($action == 'create') { + $facturestatic = new FactureFournisseur($db); + $extralabels = $extrafields->fetch_name_optionals_label($facturestatic->table_element); + print_fiche_titre($langs->trans('NewBill')); dol_htmloutput_events(); @@ -1419,6 +1428,11 @@ if ($action == 'create') print ''; // print ''; print ''; + + if (empty($reshook) && ! empty($extrafields->attribute_label)) + { + print $object->showOptionals($extrafields, 'edit'); + } if (is_object($objectsrc)) { @@ -1530,6 +1544,9 @@ else $societe = new Fournisseur($db); $result=$societe->fetch($object->socid); if ($result < 0) dol_print_error($db); + + // fetch optionals attributes and labels + $extralabels = $extrafields->fetch_name_optionals_label($object->table_element); /* * View card From 38800139400f00ac574f8d43d31c8f1500e794ad Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Thu, 6 Nov 2014 23:10:21 +0100 Subject: [PATCH 050/111] Fix hooks from supplierorder to supplierinvoice --- .../fourn/class/fournisseur.facture.class.php | 19 +++++++++++++------ htdocs/fourn/facture/card.php | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index ec74b836e1c..0d6bebada72 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -255,16 +255,23 @@ class FactureFournisseur extends CommonInvoice $result=$this->update_price(); if ($result > 0) { - - if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used + // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! + $hookmanager->initHooks(array('supplierinvoicedao')); + $parameters=array('socid'=>$this->id); + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if (empty($reshook)) { - $result=$this->insertExtraFields(); - if ($result < 0) + if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used { - $error++; + $result=$this->insertExtraFields(); + if ($result < 0) + { + $error++; + } } } - + else if ($reshook < 0) $error++; // Call trigger $result=$this->call_trigger('BILL_SUPPLIER_CREATE',$user); if ($result < 0) $error++; diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 4f1583f6b61..38a0f79a6ea 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1083,7 +1083,7 @@ elseif ($action == 'update_extras') { // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! - $hookmanager->initHooks(array('supplierorderdao')); + $hookmanager->initHooks(array('supplierinvoicedao')); $parameters=array('id'=>$object->id); $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks From 24439eb1a31208118f7fb6150876f8d8a6c1149f Mon Sep 17 00:00:00 2001 From: Drosis Nikos Date: Fri, 7 Nov 2014 15:31:06 +0200 Subject: [PATCH 051/111] Fix : tva not coming from multiprice --- htdocs/compta/facture.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 02356e94b52..25330ba548b 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1152,6 +1152,8 @@ else if ($action == 'addline' && $user->rights->facture->creer) $pu_ttc = $prod->multiprices_ttc[$object->client->price_level]; $price_min = $prod->multiprices_min[$object->client->price_level]; $price_base_type = $prod->multiprices_base_type[$object->client->price_level]; + if (isset($prod->multiprices_tva_tx[$object->client->price_level])) $tva_tx=$prod->multiprices_tva_tx[$object->client->price_level]; + if (isset($prod->multiprices_recuperableonly[$object->client->price_level])) $tva_npr=$prod->multiprices_recuperableonly[$object->client->price_level]; } elseif (! empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { From 0559e29c92f5f455441b906814f75d39d8e40e27 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 21:52:50 +0100 Subject: [PATCH 052/111] Prepare freeze --- build/makepack-dolibarr.pl | 1 + htdocs/theme/.gitignore | 1 + htdocs/theme/eldy/.gitignore | 1 + 3 files changed, 3 insertions(+) create mode 100644 htdocs/theme/eldy/.gitignore diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 2a4af64f5fe..370c04591a9 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -446,6 +446,7 @@ if ($nboftargetok) { $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`; $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/oblyon*`; + $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/eldy/*.new`; $ret=`rm -fr $BUILDROOT/$PROJECT/test`; $ret=`rm -fr $BUILDROOT/$PROJECT/Thumbs.db $BUILDROOT/$PROJECT/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/Thumbs.db $BUILDROOT/$PROJECT/*/*/*/*/Thumbs.db`; $ret=`rm -f $BUILDROOT/$PROJECT/.cvsignore $BUILDROOT/$PROJECT/*/.cvsignore $BUILDROOT/$PROJECT/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/.cvsignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.cvsignore`; diff --git a/htdocs/theme/.gitignore b/htdocs/theme/.gitignore index fab0672d598..bad6db7e4d2 100644 --- a/htdocs/theme/.gitignore +++ b/htdocs/theme/.gitignore @@ -1 +1,2 @@ /bootstrap +/oblyon diff --git a/htdocs/theme/eldy/.gitignore b/htdocs/theme/eldy/.gitignore new file mode 100644 index 00000000000..134509791a9 --- /dev/null +++ b/htdocs/theme/eldy/.gitignore @@ -0,0 +1 @@ +/*.new From 0b70d262751cd40971fefe14067a07739d49eb82 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 22:06:51 +0100 Subject: [PATCH 053/111] Keep commented code to keep a chance for old php version to work. --- htdocs/core/lib/functions.lib.php | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index a94a77f1454..09c38435c0a 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -44,14 +44,31 @@ include_once DOL_DOCUMENT_ROOT .'/core/lib/json.lib.php'; * @param string $class Class name * @param string $member Name of property * @return mixed Return value of static property - * @deprecated PHP 5.3 is now the minimum requirement, this is no longer necessary */ function getStaticMember($class, $member) { - if (isset($class::$member)) { - return $class::$member; - } + // This part is deprecated. Uncomment if for php 5.2.*, and comment next isset class::member + /*if (version_compare(phpversion(), '5.3.0', '<')) + { + if (is_object($class)) $class = get_class($class); + $classObj = new ReflectionClass($class); + $result = null; + $found=0; + foreach($classObj->getStaticProperties() as $prop => $value) + { + if ($prop == $member) + { + $result = $value; + $found++; + break; + } + } + + if ($found) return $result; + }*/ + + if (isset($class::$member)) return $class::$member; dol_print_error('','Try to get a static member "'.$member.'" in class "'.$class.'" that does not exists or is not static.'); return null; } @@ -2862,7 +2879,7 @@ function price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerou $listofcurrenciesbefore=array('USD'); if (in_array($currency_code,$listofcurrenciesbefore)) $cursymbolbefore.=$outlangs->getCurrencySymbol($currency_code); - else + else { $tmpcur=$outlangs->getCurrencySymbol($currency_code); $cursymbolafter.=($tmpcur == $currency_code ? ' '.$tmpcur : $tmpcur); From 3d5a45e274d5e1ea3aace82b7eec5f28e3ce6fd9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 22:19:31 +0100 Subject: [PATCH 054/111] Fix: textarea too small --- htdocs/core/tpl/admin_extrafields_add.tpl.php | 4 ++-- htdocs/core/tpl/admin_extrafields_edit.tpl.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/tpl/admin_extrafields_add.tpl.php b/htdocs/core/tpl/admin_extrafields_add.tpl.php index bdced511867..56cca5af04f 100644 --- a/htdocs/core/tpl/admin_extrafields_add.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_add.tpl.php @@ -87,8 +87,8 @@ -
- +
+ textwithpicto('', $langs->trans("ExtrafieldParamHelpselect"),1,0)?> textwithpicto('', $langs->trans("ExtrafieldParamHelpsellist"),1,0)?>
diff --git a/htdocs/core/tpl/admin_extrafields_edit.tpl.php b/htdocs/core/tpl/admin_extrafields_edit.tpl.php index dcf1af56ed1..493634c84a5 100644 --- a/htdocs/core/tpl/admin_extrafields_edit.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_edit.tpl.php @@ -98,8 +98,8 @@ if(($type == 'select') || ($type == 'sellist') || ($type == 'checkbox') ||(($typ -
- +
+ textwithpicto('', $langs->trans("ExtrafieldParamHelp".$type),1,0)?>
From 83d441f8ffd0b4b77aefeaee86652a8c3b1c82f8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 22:24:52 +0100 Subject: [PATCH 055/111] Show field alwayseditable --- htdocs/fichinter/admin/fichinter_extrafields.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/fichinter/admin/fichinter_extrafields.php b/htdocs/fichinter/admin/fichinter_extrafields.php index cab0886f5ff..8cb95a30f63 100644 --- a/htdocs/fichinter/admin/fichinter_extrafields.php +++ b/htdocs/fichinter/admin/fichinter_extrafields.php @@ -92,6 +92,7 @@ print ''.$langs->trans("Type").''; print ''.$langs->trans("Size").''; print ''.$langs->trans("Unique").''; print ''.$langs->trans("Required").''; +print ''.$langs->trans("AlwaysEditable").''; print ' '; print "\n"; @@ -107,6 +108,7 @@ foreach($extrafields->attribute_type as $key => $value) print ''.$extrafields->attribute_size[$key]."\n"; print ''.yn($extrafields->attribute_unique[$key])."\n"; print ''.yn($extrafields->attribute_required[$key])."\n"; + print ''.yn($extrafields->attribute_alwayseditable[$key])."\n"; // TODO This must be generalised into all page to admin extrafield. Mutualize code here is easy and will save a lot of code print ''.img_edit().''; print "  ".img_delete()."\n"; print ""; From 8a89997c791171ba17541cb719f90d7e93588a28 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 22:40:13 +0100 Subject: [PATCH 056/111] Fix: bug into edition of extrafields --- htdocs/core/tpl/extrafields_view.tpl.php | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/htdocs/core/tpl/extrafields_view.tpl.php b/htdocs/core/tpl/extrafields_view.tpl.php index ee2a8695f3a..ad2fa068757 100644 --- a/htdocs/core/tpl/extrafields_view.tpl.php +++ b/htdocs/core/tpl/extrafields_view.tpl.php @@ -14,7 +14,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * + * * Need to have following variables defined: * $object (invoice, order, ...) * $conf @@ -49,21 +49,30 @@ if (empty($reshook) && ! empty($extrafields->attribute_label)) print 'attribute_required [$key])) print ' class="fieldrequired"'; print '>' . $label . ''; - + //TODO Improve element and rights detection - if (($object->statut == 0 || $extrafields->attribute_alwayseditable[$key]) && ($object->element=='order_supplier'?$user->rights->fournisseur>commande:($object->element=='invoice_supplier'?$user->rights->fournisseur>facture:$user->rights->{$object->element}->creer)) && ($action != 'edit_extras' || GETPOST('attribute') != $key)) + //var_dump($user->rights); + $permok=false; + $keyforperm=$object->element; + if ($object->element == 'fichinter') $keyforperm='ficheinter'; + if (isset($user->rights->$keyforperm)) $permok=$user->rights->$keyforperm->creer||$user->rights->$keyforperm->create||$user->rights->$keyforperm->write; + if ($object->element=='order_supplier') $permok=$user->rights->fournisseur->commande->creer; + if ($object->element=='invoice_supplier') $permok=$user->rights->fournisseur->facture->creer; + + if (($object->statut == 0 || $extrafields->attribute_alwayseditable[$key]) + && $permok && ($action != 'edit_extras' || GETPOST('attribute') != $key)) print ''; - + print '
' . img_edit().'
'; print ''; - + // Convert date into timestamp format if (in_array($extrafields->attribute_type [$key], array('date','datetime'))) { $value = isset($_POST ["options_" . $key]) ? dol_mktime($_POST ["options_" . $key . "hour"], $_POST ["options_" . $key . "min"], 0, $_POST ["options_" . $key . "month"], $_POST ["options_" . $key . "day"], $_POST ["options_" . $key . "year"]) : $db->jdate($object->array_options ['options_' . $key]); } - + //TODO Improve element and rights detection - if ($action == 'edit_extras' && ($object->element=='order_supplier'?$user->rights->fournisseur>commande:($object->element=='invoice_supplier'?$user->rights->fournisseur>facture:$user->rights->{$object->element}->creer)) && GETPOST('attribute') == $key) + if ($action == 'edit_extras' && $permok && GETPOST('attribute') == $key) { print ''; print ''; From e3f4db85afea9a4048a1fb3fceb61e66d89e9346 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 23:07:15 +0100 Subject: [PATCH 057/111] Fix divers --- htdocs/comm/action/document.php | 22 +++++++++++-------- .../fourn/class/fournisseur.facture.class.php | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/htdocs/comm/action/document.php b/htdocs/comm/action/document.php index 9bb3af6dcbd..82d88089684 100644 --- a/htdocs/comm/action/document.php +++ b/htdocs/comm/action/document.php @@ -277,20 +277,14 @@ if ($object->id > 0) print ''.$langs->trans("NbOfAttachedFiles").''.count($filearray).''; print ''.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").''; - print ''; + print ''; - print ''; + dol_fiche_end(); - $modulepart = 'actions'; - $permission = $user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create; - $param = '&id=' . $object->id; - include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; if ($action != 'edit') { - print "
"; - // Link to agenda views print '
'; print ''; @@ -330,13 +324,23 @@ if ($object->id > 0) print img_picto($langs->trans("ViewCal"),'object_calendarperuser','class="hideonsmartphone"').' '; print ''."\n"; print '
'; + + print '
'; + print "

"; } + + + $modulepart = 'actions'; + $permission = $user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create; + $param = '&id=' . $object->id; + include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; } else { print $langs->trans("ErrorUnknown"); } -$db->close(); llxFooter(); + +$db->close(); diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 0d6bebada72..db4212308de 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -146,7 +146,7 @@ class FactureFournisseur extends CommonInvoice */ function create($user) { - global $langs,$conf; + global $langs,$conf,$hookmanager; $error=0; $now=dol_now(); From 4c1b1408ed2f11f70ee2c46ca29fa5ea62f23d72 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 23:15:02 +0100 Subject: [PATCH 058/111] Fix: Removed duplicate menu entry --- htdocs/core/menus/standard/eldy.lib.php | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index 71b6d29ea42..db8f216fd60 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -770,15 +770,18 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu if (! empty($conf->facture->enabled)) $newmenu->add("/commande/list.php?leftmenu=orders&viewstatut=-3", $langs->trans("MenuOrdersToBill2"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders'); // if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire); } - + // Supplier Orders if (! empty($conf->fournisseur->enabled)) { - $langs->load("supplier"); - $newmenu->add("/fourn/commande/list.php?leftmenu=orders&search_status=5", $langs->trans("MenuOrdersSupplierToBill"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders'); - // if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire); + if (! empty($conf->global->SUPPLIER_MENU_ORDER_RECEIVED_INTO_INVOICE)) + { + $langs->load("supplier"); + $newmenu->add("/fourn/commande/list.php?leftmenu=orders&search_status=5", $langs->trans("MenuOrdersSupplierToBill"), 0, $user->rights->commande->lire, '', $mainmenu, 'orders'); + // if (empty($leftmenu) || $leftmenu=="orders") $newmenu->add("/commande/", $langs->trans("StatusOrderToBill"), 1, $user->rights->commande->lire); + } } - + // Donations if (! empty($conf->don->enabled)) From 6762b98c0080b05ced567a9290f1e8e14e692e45 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 23:25:39 +0100 Subject: [PATCH 059/111] Minor look enhancement during debug --- htdocs/compta/resultat/index.php | 10 +++++----- htdocs/compta/stats/index.php | 30 +++++++++++++++--------------- htdocs/theme/eldy/style.css.php | 8 ++++++-- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index 1fecc0e1c28..b586241c11e 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -560,7 +560,7 @@ print ' '; for ($annee = $year_start ; $annee <= $year_end ; $annee++) { - print ''; + print ''; print ''; print $annee; if ($conf->global->SOCIETE_FISCAL_MONTH_START > 1) print '-'.($annee+1); @@ -571,7 +571,7 @@ print ''.$langs->trans("Month"). for ($annee = $year_start ; $annee <= $year_end ; $annee++) { print ''.$langs->trans("Outcome").''; - print ''.$langs->trans("Income").''; + print ''.$langs->trans("Income").''; } print ''; @@ -601,7 +601,7 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) } print ""; - print ' '; + print ' '; //if (isset($encaiss_ttc[$case]) && $encaiss_ttc[$case] != 0) if (isset($encaiss_ttc[$case])) { @@ -623,7 +623,7 @@ for ($annee = $year_start ; $annee <= $year_end ; $annee++) { $nbcols+=2; print ''.(isset($totsorties[$annee])?price(price2num($totsorties[$annee],'MT')):' ').''; - print ''.(isset($totentrees[$annee])?price(price2num($totentrees[$annee],'MT')):' ').''; + print ''.(isset($totentrees[$annee])?price(price2num($totentrees[$annee],'MT')):' ').''; } print "\n"; @@ -637,7 +637,7 @@ $var=!$var; print ''.$langs->trans("Profit").''; for ($annee = $year_start ; $annee <= $year_end ; $annee++) { - print ' '; + print ' '; if (isset($totentrees[$annee]) || isset($totsorties[$annee])) { $in=(isset($totentrees[$annee])?price2num($totentrees[$annee], 'MT'):0); diff --git a/htdocs/compta/stats/index.php b/htdocs/compta/stats/index.php index 69fdeff849c..b3fb130e185 100644 --- a/htdocs/compta/stats/index.php +++ b/htdocs/compta/stats/index.php @@ -184,7 +184,7 @@ print ' '; for ($annee = $year_start ; $annee <= $year_end ; $annee++) { if ($modecompta == 'CREANCES-DETTES') print ''; - else print ''; + else print ''; print ''; print $annee; if ($conf->global->SOCIETE_FISCAL_MONTH_START > 1) print '-'.($annee+1); @@ -198,7 +198,7 @@ for ($annee = $year_start ; $annee <= $year_end ; $annee++) { if ($modecompta == 'CREANCES-DETTES') print ''.$langs->trans("AmountHT").''; print ''.$langs->trans("AmountTTC").''; - print ''.$langs->trans("Delta").''; + print ''.$langs->trans("Delta").''; if ($annee != $year_end) print ' '; } print ''; @@ -244,7 +244,7 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) } print ""; } - + // Valeur CA du mois print ''; if ($cum[$case]) @@ -266,29 +266,29 @@ for ($mois = 1+$nb_mois_decalage ; $mois <= 12+$nb_mois_decalage ; $mois++) { $percent=(round(($cum[$case]-$cum[$caseprev])/$cum[$caseprev],4)*100); //print "X $cum[$case] - $cum[$caseprev] - $cum[$caseprev] - $percent X"; - print ''.($percent>=0?"+$percent":"$percent").'%'; + print ''.($percent>=0?"+$percent":"$percent").'%'; } if ($cum[$caseprev] && ! $cum[$case]) { - print '-100%'; + print '-100%'; } if (! $cum[$caseprev] && $cum[$case]) { //print '+Inf%'; - print '-'; + print '-'; } if (isset($cum[$caseprev]) && ! $cum[$caseprev] && ! $cum[$case]) { - print '+0%'; + print '+0%'; } if (! isset($cum[$caseprev]) && ! $cum[$case]) { - print '-'; + print '-'; } } else { - print ''; + print ''; if ($minyearmonth <= $case && $case <= $maxyearmonth) { print '-'; } else { print ' '; } print ''; @@ -382,7 +382,7 @@ for ($annee = $year_start ; $annee <= $year_end ; $annee++) print ' '; } } - + // Montant total if ($total[$annee] || ($annee >= $minyear && $annee <= max($nowyear,$maxyear))) { @@ -398,24 +398,24 @@ for ($annee = $year_start ; $annee <= $year_end ; $annee++) { if ($total[$annee-1] && $total[$annee]) { $percent=(round(($total[$annee]-$total[$annee-1])/$total[$annee-1],4)*100); - print ''.($percent>=0?"+$percent":"$percent").'%'; + print ''.($percent>=0?"+$percent":"$percent").'%'; } if ($total[$annee-1] && ! $total[$annee]) { - print '-100%'; + print '-100%'; } if (! $total[$annee-1] && $total[$annee]) { - print '+Inf%'; + print '+Inf%'; } if (! $total[$annee-1] && ! $total[$annee]) { - print '+0%'; + print '+0%'; } } else { - print ''; + print ''; if ($total[$annee] || ($minyear <= $annee && $annee <= max($nowyear,$maxyear))) { print '-'; } else { print ' '; } print ''; diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 0f5644dc406..3eb64ad5c2e 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -424,6 +424,10 @@ th .button { border-radius: 10px; } +.borderrightlight +{ + border-right: 1px solid #DDD; +} /* ============================================================================== */ /* Styles to hide objects */ @@ -862,7 +866,7 @@ form#login { max-width: 540px; background-color: #FFFFFF; - + -moz-box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(60,60,60,0.15); -webkit-box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(60,60,60,0.15); box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(60,60,60,0.15); @@ -872,7 +876,7 @@ form#login { border-radius: 8px; border:solid 1px rgba(80,80,80,.4); - + border-top:solid 1px f8f8f8; /* background-color: #f8f8f8; From 429cae5d2ec0d037b8eed11fcaa38c3fe9e6c02a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 7 Nov 2014 23:58:30 +0100 Subject: [PATCH 060/111] Recherche bug travis --- .travis.yml | 2 ++ htdocs/core/js/lib_head.js | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 69f43183cfc..4082152e8be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -53,6 +53,8 @@ before_script: - sh -c "if [ '$PHPV' = '5.3' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - sh -c "if [ '$PHPV' = '5.4' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi" - cat ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini + - echo Mysql version + - mysql --version - echo Init database - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS myapp_test;' -U postgres; fi" - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi" diff --git a/htdocs/core/js/lib_head.js b/htdocs/core/js/lib_head.js index 40b1473698e..962e4c39f47 100644 --- a/htdocs/core/js/lib_head.js +++ b/htdocs/core/js/lib_head.js @@ -631,7 +631,7 @@ function hideMessage(fieldId,message) { /* - * TODO Used by admin page only ? + * Used by button to set on/off */ function setConstant(url, code, input, entity, strict) { $.get( url, { @@ -689,7 +689,7 @@ function setConstant(url, code, input, entity, strict) { } /* - * TODO Used by admin page only ? + * Used by button to set on/off */ function delConstant(url, code, input, entity, strict) { $.get( url, { @@ -743,7 +743,7 @@ function delConstant(url, code, input, entity, strict) { } /* - * TODO Used by admin page only ? + * Used by button to set on/off */ function confirmConstantAction(action, url, code, input, box, entity, yesButton, noButton, strict) { var boxConfirm = box; From 7ca2e275dff1d76bbbdb953b0665a5e4cd347bf2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Nov 2014 00:10:05 +0100 Subject: [PATCH 061/111] Track travis bug --- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 5e1119ed4b4..810d3c8bd3b 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -56,7 +56,7 @@ ALTER TABLE llx_user ADD COLUMN fk_user_creat integer AFTER tms; ALTER TABLE llx_user ADD COLUMN fk_user_modif integer AFTER fk_user_creat; -- Add module accounting Expert -ALTER TABLE llx_bookkeeping RENAME TO llx_accounting_bookkeeping; -- To update old user of module Accounting Expert +--ALTER TABLE llx_bookkeeping RENAME TO llx_accounting_bookkeeping; -- To update old user of module Accounting Expert -> Line should be added into file sql/x.y.z-a.b.c.sql of module. CREATE TABLE llx_accounting_bookkeeping From da345a09d8092a665d338d66f704919f74f4ce15 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Nov 2014 00:27:37 +0100 Subject: [PATCH 062/111] Reduce nb of request to try to solve mysql travis bug --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4082152e8be..6860cf334be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -60,7 +60,7 @@ before_script: - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi" - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'DROP DATABASE IF EXISTS myapp_test;'; fi" - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi" - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.4.0.sql; fi" + - sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.5.0.sql; fi" - echo Create config file htdocs/conf/conf.php - echo ' htdocs/conf/conf.php - sh -c "if [ '$DB' = 'pgsql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> htdocs/conf/conf.php; fi" @@ -90,8 +90,8 @@ before_script: script: - cd htdocs/install - date - - php upgrade.php 3.4.0 3.5.0 > upgrade.log - - php upgrade2.php 3.4.0 3.5.0 > upgrade2.log +# - php upgrade.php 3.4.0 3.5.0 > upgrade.log +# - php upgrade2.php 3.4.0 3.5.0 > upgrade2.log - php upgrade.php 3.5.0 3.6.0 >> upgrade.log - php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log - php upgrade.php 3.6.0 3.7.0 >> upgrade360370.log From 9ae03f533d8212232c31658d136352e976772861 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Nov 2014 00:35:28 +0100 Subject: [PATCH 063/111] Test --- .travis.yml | 4 ++-- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6860cf334be..1b43da18be2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,8 +16,8 @@ language: php php: # - "5.2" is not supported because pyrus to install PHP_Codesniffer is not available - "5.3" - - "5.4" - - "5.5" +# - "5.4" +# - "5.5" env: - DB=mysql diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 810d3c8bd3b..0cbede46864 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -182,7 +182,7 @@ ALTER TABLE llx_product MODIFY COLUMN fk_barcode_type INTEGER NULL DEFAULT NULL; UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type = 0; ALTER TABLE llx_product ADD INDEX idx_product_fk_barcode_type (fk_barcode_type); UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type NOT IN (SELECT rowid from llx_c_barcode_type); -ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_barcode_type) REFERENCES llx_c_barcode_type (rowid); +--ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_barcode_type) REFERENCES llx_c_barcode_type (rowid); -- Added missing relations of llx_product_price From 1dcca6e553f5d73570eb21afa2793b782325765f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Nov 2014 00:49:52 +0100 Subject: [PATCH 064/111] Avoid error --- htdocs/core/class/commonobject.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index df6d7988560..e85d3dbed71 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1825,7 +1825,7 @@ abstract class CommonObject if (empty($sourceid) && empty($targetid)) { - dol_print_error('','Bad usage of function. No parameter defined and no id defined'); + dol_syslog('Bad usage of function. No source nor target id defined (nor as parameter nor as object id)', LOG_ERROR); return -1; } From fb0ec34ad09aca211e6b7cf67f3b9ceed1cfcd2c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Nov 2014 00:53:58 +0100 Subject: [PATCH 065/111] Restore travis full test --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1b43da18be2..6860cf334be 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,8 +16,8 @@ language: php php: # - "5.2" is not supported because pyrus to install PHP_Codesniffer is not available - "5.3" -# - "5.4" -# - "5.5" + - "5.4" + - "5.5" env: - DB=mysql From dd824f2972f3ae7996141365d4b16b588663a4b7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Nov 2014 00:55:55 +0100 Subject: [PATCH 066/111] Restore travis full test --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6860cf334be..57781d47e44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -94,8 +94,8 @@ script: # - php upgrade2.php 3.4.0 3.5.0 > upgrade2.log - php upgrade.php 3.5.0 3.6.0 >> upgrade.log - php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log - - php upgrade.php 3.6.0 3.7.0 >> upgrade360370.log - - cat upgrade360370.log + - php upgrade.php 3.6.0 3.7.0 >> upgrade.log +# - cat upgrade360370.log - php upgrade2.php 3.6.0 3.7.0 >> upgrade2.log # - cat upgrade2.log - cd ../.. From 92cdef71e814ef21bd1b31ed3ad06af7e6387dab Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Nov 2014 14:58:43 +0100 Subject: [PATCH 067/111] Fix: Graph report rubbish information. Better to have them as option. --- htdocs/product/index.php | 2 +- htdocs/societe/index.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/product/index.php b/htdocs/product/index.php index 33025dd1551..a8502498e41 100644 --- a/htdocs/product/index.php +++ b/htdocs/product/index.php @@ -167,7 +167,7 @@ print $total; print ''; print ''; -if (! empty($conf->categorie->enabled)) +if (! empty($conf->categorie->enabled) && ! empty($conf->global->CATEGORY_GRAPHSTATS_ON_PRODUCTS)) { require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; print '
'; diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index 3cf38a58b90..84fc4326fe4 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -159,7 +159,7 @@ print $total; print ''; print ''; -if (! empty($conf->categorie->enabled)) +if (! empty($conf->categorie->enabled) && ! empty($conf->global->CATEGORY_GRAPHSTATS_ON_THIRDPARTIES)) { require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $elementtype = 'societe'; From 6fd89c4b4162121f7fd1128ddc533a40279e97e7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 8 Nov 2014 20:05:56 +0100 Subject: [PATCH 068/111] Fix: Missing translation --- htdocs/compta/facture/fiche-rec.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/compta/facture/fiche-rec.php b/htdocs/compta/facture/fiche-rec.php index 55ef0a5ef80..1fd4d2c80fc 100644 --- a/htdocs/compta/facture/fiche-rec.php +++ b/htdocs/compta/facture/fiche-rec.php @@ -31,6 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $langs->load('bills'); +$langs->load('compta'); // Security check $id=(GETPOST('facid','int')?GETPOST('facid','int'):GETPOST('id','int')); From 29298c73b9fec7374b53d79c902af8442d1e7fc7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 9 Nov 2014 19:16:22 +0100 Subject: [PATCH 069/111] Fix: Must show limit into list --- htdocs/compta/paiement/cheque/index.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/paiement/cheque/index.php b/htdocs/compta/paiement/cheque/index.php index 27f2cf3e2e7..27782259333 100644 --- a/htdocs/compta/paiement/cheque/index.php +++ b/htdocs/compta/paiement/cheque/index.php @@ -90,6 +90,7 @@ else //print ''; print '
'; +$max=10; $sql = "SELECT bc.rowid, bc.date_bordereau as db, bc.amount, bc.number as ref"; $sql.= ", bc.statut, bc.nbcheque"; @@ -98,8 +99,8 @@ $sql.= " FROM ".MAIN_DB_PREFIX."bordereau_cheque as bc"; $sql.= ", ".MAIN_DB_PREFIX."bank_account as ba"; $sql.= " WHERE ba.rowid = bc.fk_bank_account"; $sql.= " AND bc.entity = ".$conf->entity; -$sql.= " ORDER BY bc.rowid"; -$sql.= " DESC LIMIT 10"; +$sql.= " ORDER BY bc.date_bordereau DESC, rowid DESC"; +$sql.= $db->plimit($max); $resql = $db->query($sql); @@ -107,7 +108,7 @@ if ($resql) { print ''; print ''; - print ''; + print ''; print '"; print ''; print ''; From 50f690787b9d5428b20feec92a5deb83f55ea3a6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 9 Nov 2014 19:16:41 +0100 Subject: [PATCH 070/111] Sync transifex --- htdocs/langs/ar_SA/install.lang | 12 +- htdocs/langs/ar_SA/projects.lang | 14 +- htdocs/langs/en_US/compta.lang | 1 + htdocs/langs/fr_FR/admin.lang | 34 +- htdocs/langs/fr_FR/agenda.lang | 7 +- htdocs/langs/fr_FR/bills.lang | 26 +- htdocs/langs/fr_FR/commercial.lang | 10 +- htdocs/langs/fr_FR/companies.lang | 2 +- htdocs/langs/fr_FR/donations.lang | 2 +- htdocs/langs/fr_FR/errors.lang | 3 +- htdocs/langs/fr_FR/holiday.lang | 18 +- htdocs/langs/fr_FR/interventions.lang | 1 + htdocs/langs/fr_FR/mails.lang | 4 +- htdocs/langs/fr_FR/main.lang | 8 +- htdocs/langs/fr_FR/margins.lang | 15 +- htdocs/langs/fr_FR/members.lang | 4 +- htdocs/langs/fr_FR/other.lang | 12 +- htdocs/langs/fr_FR/products.lang | 16 +- htdocs/langs/fr_FR/propal.lang | 4 +- htdocs/langs/fr_FR/suppliers.lang | 2 +- htdocs/langs/fr_FR/users.lang | 1 + htdocs/langs/id_ID/link.lang | 16 +- htdocs/langs/id_ID/salaries.lang | 18 +- htdocs/langs/sv_SE/accountancy.lang | 238 ++++++------- htdocs/langs/sv_SE/admin.lang | 484 +++++++++++++------------- htdocs/langs/sv_SE/agenda.lang | 46 +-- htdocs/langs/sv_SE/banks.lang | 28 +- htdocs/langs/sv_SE/bills.lang | 96 ++--- htdocs/langs/sv_SE/boxes.lang | 63 ++-- htdocs/langs/sv_SE/cashdesk.lang | 6 +- htdocs/langs/sv_SE/categories.lang | 2 +- htdocs/langs/sv_SE/commercial.lang | 14 +- htdocs/langs/sv_SE/companies.lang | 26 +- htdocs/langs/sv_SE/contracts.lang | 6 +- htdocs/langs/sv_SE/cron.lang | 102 +++--- htdocs/langs/sv_SE/deliveries.lang | 2 + htdocs/langs/sv_SE/dict.lang | 60 ++-- htdocs/langs/sv_SE/donations.lang | 14 +- htdocs/langs/sv_SE/ecm.lang | 12 +- htdocs/langs/sv_SE/errors.lang | 93 ++--- htdocs/langs/sv_SE/externalsite.lang | 2 +- htdocs/langs/sv_SE/ftp.lang | 2 +- htdocs/langs/sv_SE/help.lang | 4 +- htdocs/langs/sv_SE/holiday.lang | 238 ++++++------- htdocs/langs/sv_SE/languages.lang | 6 +- htdocs/langs/sv_SE/link.lang | 16 +- htdocs/langs/sv_SE/mailmanspip.lang | 52 +-- htdocs/langs/sv_SE/main.lang | 43 +-- htdocs/langs/sv_SE/members.lang | 4 +- htdocs/langs/sv_SE/opensurvey.lang | 128 +++---- htdocs/langs/sv_SE/orders.lang | 47 ++- htdocs/langs/sv_SE/other.lang | 74 ++-- htdocs/langs/sv_SE/paypal.lang | 16 +- htdocs/langs/sv_SE/propal.lang | 4 +- htdocs/langs/sv_SE/salaries.lang | 18 +- htdocs/langs/sv_SE/sendings.lang | 20 +- htdocs/langs/sv_SE/stocks.lang | 8 +- htdocs/langs/sv_SE/users.lang | 8 +- htdocs/langs/tr_TR/accountancy.lang | 80 ++--- htdocs/langs/tr_TR/admin.lang | 78 +++-- htdocs/langs/tr_TR/agenda.lang | 12 +- htdocs/langs/tr_TR/banks.lang | 16 +- htdocs/langs/tr_TR/bills.lang | 70 ++-- htdocs/langs/tr_TR/boxes.lang | 21 +- htdocs/langs/tr_TR/categories.lang | 4 +- htdocs/langs/tr_TR/commercial.lang | 16 +- htdocs/langs/tr_TR/companies.lang | 28 +- htdocs/langs/tr_TR/compta.lang | 62 ++-- htdocs/langs/tr_TR/contracts.lang | 2 +- htdocs/langs/tr_TR/cron.lang | 4 +- htdocs/langs/tr_TR/dict.lang | 2 +- htdocs/langs/tr_TR/donations.lang | 4 +- htdocs/langs/tr_TR/errors.lang | 7 +- htdocs/langs/tr_TR/exports.lang | 4 +- htdocs/langs/tr_TR/help.lang | 2 +- htdocs/langs/tr_TR/holiday.lang | 144 ++++---- htdocs/langs/tr_TR/mails.lang | 10 +- htdocs/langs/tr_TR/main.lang | 14 +- htdocs/langs/tr_TR/margins.lang | 4 +- htdocs/langs/tr_TR/orders.lang | 4 +- htdocs/langs/tr_TR/products.lang | 24 +- htdocs/langs/tr_TR/projects.lang | 16 +- htdocs/langs/tr_TR/sendings.lang | 4 +- htdocs/langs/tr_TR/stocks.lang | 4 +- htdocs/langs/tr_TR/suppliers.lang | 6 +- htdocs/langs/tr_TR/users.lang | 3 +- 86 files changed, 1447 insertions(+), 1410 deletions(-) diff --git a/htdocs/langs/ar_SA/install.lang b/htdocs/langs/ar_SA/install.lang index 66d8331e72f..b1a63938f44 100644 --- a/htdocs/langs/ar_SA/install.lang +++ b/htdocs/langs/ar_SA/install.lang @@ -25,14 +25,14 @@ ErrorGoBackAndCorrectParameters=العودة إلى الوراء وتصحيح ا ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق. ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق. ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق. -ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. +ErrorDatabaseVersionTooLow=إصدار قاعدة البيانات (s%) قديمة جدا. مطلوب نسخة s% أو أعلى ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب. WarningPHPVersionTooLow=PHP نسخة قديمة جدا. ومن المتوقع %s نسخة أو أكثر. وينبغي أن تسمح هذه النسخة تثبيت ولكن لم يتم اعتماد. ErrorConnectedButDatabaseNotFound=خادم الصدد الى قاعدة البيانات ولكن النجاح في '٪ ق' لم يتم العثور عليه. ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل. IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كان لا وجود قاعدة بيانات ، والتأكد من العودة الخيار "إنشاء قاعدة بيانات". IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار. -WarningBrowserTooOld=Too old version of browser. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommanded. +WarningBrowserTooOld=نسخة قديمة جدا من المتصفح. ننصحك جيدا بترقية متصفحك إلى نسخة حديثة عن فايرفوكس، كروم أو أوبرا PHPVersion=PHP الإصدار YouCanContinue=يمكنك الاستمرار... PleaseBePatient=يرجى التحلي بالصبر... @@ -154,7 +154,7 @@ MigrationShippingDelivery2=ترقية تخزين الشحن 2 MigrationFinished=الانتهاء من الهجرة LastStepDesc=الخطوة الأخيرة : تعريف المستخدم وكلمة السر هنا كنت تخطط لاستخدامها للاتصال البرمجيات. لا تفقد هذا كما هو حساب لإدارة جميع الآخرين. ActivateModule=تفعيل وحدة %s -ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) +ShowEditTechnicalParameters=انقر هنا لعرض/تحرير المعلمات المتقدمة (وضع الخبراء) ######### # upgrade @@ -205,7 +205,7 @@ MigrationProjectUserResp=بيانات fk_user_resp مجال الهجرة من ll MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان MigrationActioncommElement=تحديث البيانات على الإجراءات MigrationPaymentMode=بيانات الهجرة لطريقة الدفع -MigrationCategorieAssociation=Migration of categories +MigrationCategorieAssociation=تحديث الفئات -ShowNotAvailableOptions=Show not available options -HideNotAvailableOptions=Hide not available options +ShowNotAvailableOptions=عرض خيارات غير متوفرة +HideNotAvailableOptions=إخفاء خيارات غير متوفرة diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index 954c1f371f6..34c6bea737f 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -14,7 +14,7 @@ TasksDesc=هذا الرأي يعرض جميع المشاريع والمهام ( Myprojects=بلدي المشاريع ProjectsArea=مشاريع المنطقة NewProject=مشروع جديد -AddProject=يضيف المشروع +AddProject=إنشاء مشروع DeleteAProject=حذف مشروع DeleteATask=حذف مهمة ConfirmDeleteAProject=هل أنت متأكد من أنك تريد حذف هذا المشروع؟ @@ -45,7 +45,7 @@ TaskDateStart=Task start date TaskDateEnd=Task end date TaskDescription=Task description NewTask=مهمة جديدة -AddTask=إضافة مهمة +AddTask=خلق مهمة AddDuration=تضاف المدة Activity=النشاط Activities=المهام والأنشطة @@ -85,18 +85,18 @@ ActionsOnProject=الإجراءات على المشروع YouAreNotContactOfProject=كنت لا اتصال لهذا المشروع الخاص DeleteATimeSpent=قضى الوقت حذف ConfirmDeleteATimeSpent=هل أنت متأكد أنك تريد حذف هذا الوقت الذي يقضيه؟ -DoNotShowMyTasksOnly=See also tasks not assigned to me -ShowMyTasksOnly=View only tasks assigned to me +DoNotShowMyTasksOnly=انظر أيضا المهام الغير موكلة الي +ShowMyTasksOnly=عرض فقط المهام الموكلة الي TaskRessourceLinks=ملتقيات ProjectsDedicatedToThisThirdParty=مشاريع مخصصة لهذا الطرف الثالث NoTasks=أية مهام لهذا المشروع LinkedToAnotherCompany=ربط طرف ثالث آخر -TaskIsNotAffectedToYou=Task not assigned to you +TaskIsNotAffectedToYou=مهمة غيرموكلة اليك ErrorTimeSpentIsEmpty=الوقت الذي يقضيه فارغة ThisWillAlsoRemoveTasks=وهذا العمل أيضا حذف كافة مهام المشروع (%s المهام في الوقت الحاضر) وجميع المدخلات من الوقت الذي تستغرقه. IfNeedToUseOhterObjectKeepEmpty=إذا كانت بعض الكائنات (فاتورة، والنظام، ...)، الذين ينتمون إلى طرف ثالث آخر، يجب أن تكون مرتبطة بمشروع لإنشاء، والحفاظ على هذا فارغة لديها مشروع كونها متعددة الأطراف الثالثة. -CloneProject=Clone project -CloneTasks=Clone tasks +CloneProject=استنساخ المشروع +CloneTasks=استنساخ المهام CloneContacts=Clone contacts CloneNotes=Clone notes CloneProjectFiles=Clone project joined files diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index 152274fc4ec..770cb6d25bf 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -108,6 +108,7 @@ ErrorWrongAccountancyCodeForCompany=Bad customer accountancy code for %s SuppliersProductsSellSalesTurnover=The generated turnover by the sales of supplier's products. CheckReceipt=Check deposit CheckReceiptShort=Check deposit +LastCheckReceiptShort=Last %s check receipts NewCheckReceipt=New discount NewCheckDeposit=New check deposit NewCheckDepositOn=Create receipt for deposit on account: %s diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index bae681d6981..c3bf53a2f16 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -327,12 +327,6 @@ ModuleDisabled=Module désactivé ModuleDisabledSoNoEvent=Module désactivé donc événement jamais créé ConfirmPurge=Êtes-vous sûr de vouloir réaliser cette purge ?
Ceci effacera définitivement tous vos fichiers (espace GED, pièces jointes, etc...). MinLength=Longueur minimale -NbMajMin=Nombre de majuscule minimum -NbNumMin=Nombre de chiffre minimum -NbSpeMin=Nombre de caractère speciaux minimum -NbIteConsecutive=Nombre maximum d'iterations consecutive du même caractère -NoAmbiCaracAutoGeneration=Ne pas utiliser les caractère ambigus pour la generation automatique ("1","I","l","|","0","O") -SetupPerso=Configuration personalisable LanguageFilesCachedIntoShmopSharedMemory=Fichiers .lang en mémoire partagée ExamplesWithCurrentSetup=Exemples avec le paramétrage actif courant ListOfDirectories=Liste des répertoires des modèles OpenDocument @@ -490,7 +484,7 @@ Module500Desc=Gestion des dépenses spéciales comme les taxes, charges sociales Module510Name=Salaires Module510Desc=Gestion des paiements des salaires des employés Module600Name=Notifications -Module600Desc=Envoi de notifications (par email) aux contacts de tiers sur certains événements métiers +Module600Desc=Envoi de notifications Email sur certains événements métiers Dolibarr, aux contacts de tiers (configuration réalisé sur chaque tiers) Module700Name=Dons Module700Desc=Gestion des dons Module1200Name=Mantis @@ -520,7 +514,7 @@ Module5000Name=Multi-société Module5000Desc=Permet de gérer plusieurs sociétés Module6000Name=Workflow Module6000Desc=Gérer le Workflow -Module20000Name=Congés +Module20000Name=Gestion de la demande de congès Module20000Desc=Déclaration et suivi des congès des employés Module39000Name=Lot Module39000Desc=Gestion de numéro de lot ou date de péremption pour les produits @@ -528,8 +522,8 @@ Module50000Name=PayBox Module50000Desc=Module permettant d'offrir en ligne une page de paiement par carte de crédit avec PayBox Module50100Name=Point de vente Module50100Desc=Caisse enregistreuse de point de vente -Module50200Name= Paypal -Module50200Desc= Module permettant d'offrir en ligne une page de paiement par carte de crédit avec Paypal +Module50200Name=Paypal +Module50200Desc=Module permettant d'offrir en ligne une page de paiement par carte de crédit avec Paypal Module50400Name=Comptabilité (avancée) Module50400Desc=Gestion de la comptabilité (doubles parties) Module54000Name=PrintIPP @@ -617,10 +611,11 @@ Permission162=Créer/modifier les contrats de services Permission163=Activer les services d'un contrat Permission164=Désactiver les services d'un contrat Permission165=Supprimer les contrats -Permission171=Consulter les déplacements -Permission172=Créer/modifier les déplacements -Permission173=Supprimer les déplacements -Permission178=Exporter les déplacements +Permission171=Lire les notes de frais (Les vôtres et les utilisateurs autorisés) +Permission172=Créer/modifier les notes de frais / déplacements +Permission173=Supprimer les notes de frais / déplacements +Permission174=Lire toutes les notes de frais +Permission178=Exporter les notes de frais / déplacements Permission180=Consulter les fournisseurs Permission181=Consulter les commandes fournisseurs Permission182=Créer/modifier les commandes fournisseurs @@ -1063,8 +1058,6 @@ EmptyNumRefModelDesc=Code libre sans vérification. Peut être modifié à tout ##### Module password generation PasswordGenerationStandard=Renvoie un mot de passe généré selon l'algorithme interne de Dolibarr : 8 caractères, chiffres et caractères en minuscules mélangés. PasswordGenerationNone=Ne propose pas de mots de passe générés. Le mot de passe est à saisir manuellement. -PasswordGenerationPerso=Renvoie un mot de passe généré selon votre configuration. -PasswordPatternDesc=Pattern utilisé pour la génération de password personalisé ##### Users setup ##### UserGroupSetup=Configuration module utilisateurs et groupes GeneratePassword=Proposer un mot de passe généré @@ -1082,7 +1075,7 @@ ModuleCompanyCodeAquarium=Renvoie un code comptable composé de :
%s suivi du ModuleCompanyCodePanicum=Renvoie un code comptable vide. ModuleCompanyCodeDigitaria=Renvoie un code comptable composé suivant le code tiers. Le code est composé du caractère 'C' en première position suivi des 5 premiers caractères du code tiers. UseNotifications=Utiliser les notifications -NotificationsDesc=La fonction des notifications par emails permet d'envoyer automatiquement un email, pour certains événements Dolibarr, aux tiers (sociétés clients, prospects ou fournisseurs) configurés pour. Le choix des notifications et contacts destinataires se fait tiers par tiers. +NotificationsDesc=La fonction des notifications par emails permet d'envoyer automatiquement un email, lors de certains événements Dolibarr. La cible des notifications peut être défini:
* par contacts de tiers (clients, prospects ou fournisseurs), tiers par tiers.
* ou en positionnant un email en paramètre global sur la page de configuration du module notification. ModelModules=Modèle de documents DocumentModelOdt=Génération depuis des modèles OpenDocument (Fichier .ODT ou .ODS OpenOffice, KOffice, TextEdit…) WatermarkOnDraft=Filigrane sur les documents brouillons @@ -1154,6 +1147,7 @@ HideTreadedOrders=Cacher les commandes traitées ou annulées de la liste ValidOrderAfterPropalClosed=Valider la commande après la clôture de la proposition commerciale, permet de ne pas passer par la commande provisoire FreeLegalTextOnOrders=Mention complémentaire sur les commandes WatermarkOnDraftOrders=Filigrane sur les brouillons de commandes (aucun si vide) +ShippableOrderIconInList=Ajouter un icône dans la liste des commandes qui indique si la commande est expédiable. ##### Clicktodial ##### ClickToDialSetup=Configuration du module Click To Dial ClickToDialUrlDesc=URL appelée lors d'un clic sur le pictogramme téléphone. Dans l'URL, vous pouvez utiliser les balises
__PHONETO__ qui sera remplacée par le téléphone de l'appelé
__PHONEFROM__ qui sera remplacée par le téléphone de l'appelant (le votre, défini sur votre fiche utilisateur)
__LOGIN__ qui sera remplacée par votre identifiant clicktodial (défini sur votre fiche utilisateur)
__PASS__ qui sera remplacée par votre mot de passe clicktodial (défini sur votre fiche utilisateur). @@ -1390,9 +1384,10 @@ MailingSetup=Configuration du module Emailing MailingEMailFrom=Email émetteur (From) des emails envoyés par Emailing MailingEMailError=Email retour (Errors-to) pour les réponses lors des envois par Emailing en erreur ##### Notification ##### -NotificationSetup=Configuration du module Notification +NotificationSetup=Configuration du module Notification EMail NotificationEMailFrom=Email émetteur (From) des mails envoyés lors des notifications -ListOfAvailableNotifications=Liste des notifications disponibles (cette liste dépend des modules actifs) +ListOfAvailableNotifications=Liste des événements sur lesquels vous pouvez configurer une notification, pour chaque tiers (aller dans la fiche tiers pour cela) ou en réglant un email fixe (Liste dépendant de modules activés) +FixedEmailTarget=EMail fixe cible destinataires ##### Sendings ##### SendingsSetup=Configuration du module Expédition/Livraison SendingsReceiptModel=Modèles de bordereau d'expédition @@ -1543,6 +1538,7 @@ DeleteFiscalYear=Effacer année fiscale ConfirmDeleteFiscalYear=Êtes-vous sûr de vouloir supprimer cette année fiscale ? Opened=Ouverte Closed=Clôturé +AlwaysEditable=Peut toujours être édité Format=Format TypePaymentDesc=0:Type de paiement client, 1:Type de paiement fournisseur, 2:Paiement de type client et fournisseur diff --git a/htdocs/langs/fr_FR/agenda.lang b/htdocs/langs/fr_FR/agenda.lang index 2e765e5e765..71ea27767b8 100644 --- a/htdocs/langs/fr_FR/agenda.lang +++ b/htdocs/langs/fr_FR/agenda.lang @@ -70,10 +70,9 @@ DateActionStart= Date de début DateActionEnd= Date de fin AgendaUrlOptions1=Vous pouvez aussi ajouter les paramètres suivants pour filtrer les réponses : AgendaUrlOptions2=login=%s pour limiter l'export aux actions créées, affectées ou réalisées par l'utilisateur %s. -AgendaUrlOptions3=logina=%s pour limiter l'export aux actions créées par l'utilisateur %s. +AgendaUrlOptions3=logina=%s pour limiter l'export aux actions dont l'utilisateur %s est propriétaire. AgendaUrlOptions4=logint=%s pour limiter l'export aux actions affectées à l'utilisateur %s. -AgendaUrlOptions5=logind=%s pour limiter l'export aux actions réalisées par l'utilisateur %s. -AgendaUrlOptionsProject=project=PROJECT_ID pour limiter l'export aux actions associées au projet dont l'identifiant est PROJECT_ID. +AgendaUrlOptionsProject=project=PROJECT_ID pour restreindre aux écévements associés au projet PROJECT_ID. AgendaShowBirthdayEvents=Afficher l'anniversaire des contacts AgendaHideBirthdayEvents=Cacher l'anniversaire des contacts Busy=Occupé @@ -90,5 +89,5 @@ ExtSiteUrlAgenda=URL d'accès au fichier ical ExtSiteNoLabel=Aucune description WorkingTimeRange=Plage d'heures travaillées WorkingDaysRange=Plage de jours travaillés -AddEvent=Créer événement +AddEvent=Créer un événement MyAvailability=Ma disponibilité diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index 44cc5cab656..d45a9a3b025 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -29,7 +29,7 @@ InvoiceAvoirAsk=Facture avoir pour correction de la facture InvoiceAvoirDesc=La facture d'avoir est une facture négative destinée à compenser un montant de facture qui diffère du montant réellement versé (suite à un trop versé par le client par erreur ou un manque non versé par le client suite à un retour produit par exemple). invoiceAvoirWithLines=Créer l'avoir avec les même lignes que la factures dont il est issu invoiceAvoirWithPaymentRestAmount=Créer l'avoir avec le montant restant à payer de la facture dont il est issu. -invoiceAvoirLineWithPaymentRestAmount=Avoir du montant du reste à payer des factures dues. +invoiceAvoirLineWithPaymentRestAmount=Avoir sur le reste à payer ReplaceInvoice=Remplace la facture %s ReplacementInvoice=Remplacement facture ReplacedByInvoice=Remplacée par la facture %s @@ -87,7 +87,7 @@ ClassifyCanceled=Classer 'Abandonnée' ClassifyClosed=Classer 'Fermée' ClassifyUnBilled=Classer 'Non facturée' CreateBill=Créer Facture -AddBill=Créer facture ou avoir +AddBill=Créer une facture ou un avoir AddToDraftInvoices=Ajouter à facture brouillon DeleteBill=Supprimer facture SearchACustomerInvoice=Rechercher une facture client @@ -156,7 +156,7 @@ ConfirmCancelBill=Êtes-vous sûr de vouloir annuler la facture %s ? ConfirmCancelBillQuestion=Pour quelle raison voulez-vous classer la facture abandonnée ? ConfirmClassifyPaidPartially=Êtes-vous sûr de vouloir classer la facture %s comme payée ? ConfirmClassifyPaidPartiallyQuestion=Cette facture n'a pas été payée à hauteur du montant initial. Pour quelle raison voulez-vous la classer malgré tout ? -ConfirmClassifyPaidPartiallyReasonAvoir=Le reste à payer (%s %s) est un trop facturé (car article retourné, oubli, escompte non défini...) régularisé par un avoir +ConfirmClassifyPaidPartiallyReasonAvoir=Le reste à payer (%s %s) est un trop facturé (car article retourné, oubli, escompte réalisé...), régularisé par un avoir ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Le reste à payer (%s %s) est un escompte accordé après facture. J'accepte de perdre la TVA sur cet escompte ConfirmClassifyPaidPartiallyReasonDiscountVat=Le reste à payer (%s %s) est un escompte ConfirmClassifyPaidPartiallyReasonBadCustomer=Mauvais payeur @@ -191,9 +191,9 @@ AlreadyPaid=Déjà réglé AlreadyPaidBack=Déjà remboursé AlreadyPaidNoCreditNotesNoDeposits=Déjà réglé (hors avoirs et acomptes) Abandoned=Abandonné -RemainderToPay=Reste à payer -RemainderToTake=Reste à encaisser -RemainderToPayBack=Reste à rembourser +RemainderToPay=Restant impayé +RemainderToTake=Montant restant à percevoir +RemainderToPayBack=Montant à rembourser Rest=Créance AmountExpected=Montant réclamé ExcessReceived=Trop perçu @@ -225,13 +225,13 @@ NonPercuRecuperable=Non perçue réc. SetConditions=Définir conditions de règlement SetMode=Définir mode de règlement Billed=Facturé -RepeatableInvoice=Facture prédéfinie -RepeatableInvoices=Factures prédéfinies -Repeatable=Prédéfinie -Repeatables=Prédéfinies -ChangeIntoRepeatableInvoice=Convertir en prédéfinie -CreateRepeatableInvoice=Créer facture prédéfinie -CreateFromRepeatableInvoice=Créer depuis facture prédéfinie +RepeatableInvoice=Facture modèle +RepeatableInvoices=Factures modèles +Repeatable=Modèle +Repeatables=Modèles +ChangeIntoRepeatableInvoice=Convertir en facture modèle +CreateRepeatableInvoice=Créer facture modèle +CreateFromRepeatableInvoice=Créer depuis facture modèle CustomersInvoicesAndInvoiceLines=Factures clients et lignes de factures CustomersInvoicesAndPayments=Factures clients et règlements ExportDataset_invoice_1=Factures clients et lignes de facture diff --git a/htdocs/langs/fr_FR/commercial.lang b/htdocs/langs/fr_FR/commercial.lang index 15851bcc37b..d3125a8edd6 100644 --- a/htdocs/langs/fr_FR/commercial.lang +++ b/htdocs/langs/fr_FR/commercial.lang @@ -9,8 +9,8 @@ Prospect=Prospect Prospects=Prospects DeleteAction=Effacer un événement/tâche NewAction=Nouvel événement -AddAction=Créer événement -AddAnAction=Créer un événement +AddAction=Créer un événement / une tâche +AddAnAction=Créer un événement / une tâche AddActionRendezVous=Créer un rendez-vous Rendez-Vous=Rendez-vous ConfirmDeleteAction=Êtes-vous sûr de vouloir effacer cet événement ? @@ -44,8 +44,8 @@ DoneActions=Liste des événements réalisés DoneActionsFor=Liste des événements réalisés pour %s ToDoActions=Liste des événements incomplets ToDoActionsFor=Liste des événements incomplets pour %s -SendPropalRef=Envoi proposition commerciale %s -SendOrderRef=Envoi commande %s +SendPropalRef=Envoi de la proposition commerciale %s +SendOrderRef=Envoi de la commande %s StatusNotApplicable=Non applicable StatusActionToDo=À faire StatusActionDone=Réalisé @@ -62,7 +62,7 @@ LastProspectContactDone=Prospects contactés DateActionPlanned=Date réalisation prévue DateActionDone=Date réalisation effective ActionAskedBy=Action enregistrée par -ActionAffectedTo=Action affectée à +ActionAffectedTo=Propriétaire de l'événement ActionDoneBy=Action faite par ActionUserAsk=Enregistré par ErrorStatusCantBeZeroIfStarted=Si le champ 'Date début réalisation réelle' est renseigné alors l'action est commencée voire finie, aussi le champ 'État' ne peut être 0%%. diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang index bcfe356e10a..af76117f213 100644 --- a/htdocs/langs/fr_FR/companies.lang +++ b/htdocs/langs/fr_FR/companies.lang @@ -379,7 +379,7 @@ DeliveryAddressLabel=Libellé de l'adresse DeleteDeliveryAddress=Supprimer une adresse de livraison ConfirmDeleteDeliveryAddress=Êtes-vous sûr de vouloir supprimer cette adresse de livraison ? NewDeliveryAddress=Nouvelle adresse de livraison -AddDeliveryAddress=Ajouter l'adresse +AddDeliveryAddress=Créer adresse AddAddress=Créer adresse NoOtherDeliveryAddress=Pas d'adresse alternative définie SupplierCategory=Catégorie du fournisseur diff --git a/htdocs/langs/fr_FR/donations.lang b/htdocs/langs/fr_FR/donations.lang index c1601b1bb27..e4348ab6ffa 100644 --- a/htdocs/langs/fr_FR/donations.lang +++ b/htdocs/langs/fr_FR/donations.lang @@ -4,7 +4,7 @@ Donations=Dons DonationRef=Réf. donation Donor=Donateur Donors=Donateurs -AddDonation=Ajouter don +AddDonation=Créer un don NewDonation=Nouveau don ShowDonation=Montrer don DonationPromise=Promesse de don diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index eaa79b0fc00..0ccafc3843c 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -37,7 +37,7 @@ ErrorSupplierCodeRequired=Code fournisseur obligatoire ErrorSupplierCodeAlreadyUsed=Code fournisseur déjà utilisé ErrorBadParameters=Paramètres incorrects ErrorBadValueForParameter=Valeur '%s' incorrecte pour le paramètre '%s' -ErrorBadImageFormat=L'image n'a pas un format reconnu +ErrorBadImageFormat=Cet image a un format non supporté (Votre PHP ne supporte pas les fonctions de conversion de ce format d'image). ErrorBadDateFormat=La valeur '%s' a un format de date non reconnu ErrorWrongDate=La date est incorrecte ErrorFailedToWriteInDir=Impossible d'écrire dans le répertoire %s @@ -114,6 +114,7 @@ ErrorLoginDoesNotExists=Le compte utilisateur de login %s n'a pu être tr ErrorLoginHasNoEmail=Cet utilisateur n'a pas d'email. Impossible de continuer. ErrorBadValueForCode=Mauvaise valeur saisie pour le code. Réessayez avec une nouvelle valeur... ErrorBothFieldCantBeNegative=Les champs %s et %s ne peuvent être tous deux négatifs +ErrorQtyForCustomerInvoiceCantBeNegative=La quantité d'une ligne ne peut pas être négative dans les factures clients ErrorWebServerUserHasNotPermission=Le compte d'exécution du serveur web %s n'a pas les permissions pour cela ErrorNoActivatedBarcode=Aucun type de code-barres activé ErrUnzipFails=Impossible de décompresser le fichier %s avec ZipArchive diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang index f391c3bffa0..43e43277b3e 100644 --- a/htdocs/langs/fr_FR/holiday.lang +++ b/htdocs/langs/fr_FR/holiday.lang @@ -53,15 +53,15 @@ CantUpdate=Vous ne pouvez pas mettre à jour cette demande de congés. NoDateDebut=Vous devez choisir une date de début. NoDateFin=Vous devez choisir une date de fin. ErrorDureeCP=Votre demande de congés payés ne contient aucun jour ouvré. -TitleValidCP=Valider la demande de Congés Payés +TitleValidCP=Approuver la demande de congès ConfirmValidCP=Êtes-vous sûr de vouloir approuver la demande de congés ? DateValidCP=Date d'approbation TitleToValidCP=Send leave request ConfirmToValidCP=Êtes-vous sûr de vouloir valider la demande de congés ? -TitleRefuseCP=Refuser la demande de Congés Payés +TitleRefuseCP=Refuser la demande de congès ConfirmRefuseCP=Êtes-vous sûr de vouloir valider la demande de congés ? NoMotifRefuseCP=Vous devez choisir un motif pour refuser cette demande. -TitleCancelCP=Annuler la demande de Congés Payés +TitleCancelCP=Annuler la demande de dongès ConfirmCancelCP=Êtes-vous sûr de vouloir annuler la demande de congés ? DetailRefusCP=Motif du refus DateRefusCP=Date du refus @@ -78,7 +78,7 @@ ActionByCP=Réalisée par UserUpdateCP=Pour l'utilisateur PrevSoldeCP=Précédent Solde NewSoldeCP=Nouveau Solde -alreadyCPexist=Une demande de congés à déjà été effectuée sur cette période. +alreadyCPexist=Une demande de congés a déjà été faite sur cette période. UserName=Nom Prénom Employee=Salarié FirstDayOfHoliday=Premier jour de congès @@ -88,25 +88,25 @@ ManualUpdate=Mise à jour manuelle HolidaysCancelation=Annulation de la demande de congès ## Configuration du Module ## -ConfCP=Configuration du module Congés +ConfCP=Configuration du module congès DescOptionCP=Description de l'option ValueOptionCP=Valeur GroupToValidateCP=Groupe ayant la possibilité d'approuver les congés ConfirmConfigCP=Valider la configuration -LastUpdateCP=Notification automatique +LastUpdateCP=Dernière mise à jour automatique de l'allocation des congès UpdateConfCPOK=Mise à jour effectuée avec succès. ErrorUpdateConfCP=Une erreur à eu lieu durant la mise à jour, merci de réessayer. AddCPforUsers=Veuillez ajouter le solde des congés des utilisateurs en cliquant ici. -DelayForSubmitCP=Délai pour faire une demande de congés avant ceux-ci +DelayForSubmitCP=Délai pour faire des demandes de congés AlertapprobatortorDelayCP=Prévenir le validateur si la demande de congés ne correspond pas à la date limite AlertValidatorDelayCP=Prévenir le valideur si la demande de congés ne respecte pas le délai prévu AlertValidorSoldeCP=Prévenir le valideur si l'utilisateur demande des congés dépassant son solde nbUserCP=Nombre d'utilisateur pris en charge dans le module congés nbHolidayDeductedCP=Nombre de congés payés à déduire par jour de congé pris -nbHolidayEveryMonthCP=Nombre de congés payés ajoutés chaque mois +nbHolidayEveryMonthCP=Nombre de congés ajoutés chaque mois Module27130Name= Gestion des demandes de congès Module27130Desc= Ce module permet de gérer les demandes, approbations de congès. -TitleOptionMainCP=Réglages principaux des demande de congès +TitleOptionMainCP=Réglages principaux des demandes de congès TitleOptionEventCP=Réglages des congés liés à des évènements ValidEventCP=Valider UpdateEventCP=Mettre à jour les évènements diff --git a/htdocs/langs/fr_FR/interventions.lang b/htdocs/langs/fr_FR/interventions.lang index d9a9b0f856e..aa0db5b2355 100644 --- a/htdocs/langs/fr_FR/interventions.lang +++ b/htdocs/langs/fr_FR/interventions.lang @@ -30,6 +30,7 @@ StatusInterInvoiced=Facturée RelatedInterventions=Interventions rattachées ShowIntervention=Afficher intervention SendInterventionRef=Envoi de la fiche intervention %s +SendInterventionByMail=Envoyer l'intervention par email ##### Types de contacts ##### TypeContact_fichinter_internal_INTERREPFOLL=Responsable suivi de l'intervention TypeContact_fichinter_internal_INTERVENING=Intervenant diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index 9bc53fc6293..425a4504a6e 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -133,6 +133,6 @@ Notifications=Notifications NoNotificationsWillBeSent=Aucune notification par email n'est prévue pour cet événement et société ANotificationsWillBeSent=1 notification va être envoyée par email SomeNotificationsWillBeSent=%s notifications vont être envoyées par email -AddNewNotification=Activer une nouvelle demande de notification email -ListOfActiveNotifications=Liste des demandes de notifications emails actives +AddNewNotification=Activer une nouvelle cible de notification email +ListOfActiveNotifications=Liste des cibles de notifications emails actives ListOfNotificationsDone=Liste des notifications emails envoyées diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index 4bfd1addf7e..c665de8ffec 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -58,12 +58,12 @@ ErrorCantLoadUserFromDolibarrDatabase=Impossible de trouver l'utilisateur %s< ErrorNoVATRateDefinedForSellerCountry=Erreur, aucun taux tva défini pour le pays '%s'. ErrorNoSocialContributionForSellerCountry=Erreur, aucun type de charges défini pour le pays '%s'. ErrorFailedToSaveFile=Erreur, l'enregistrement du fichier a échoué. -ErrorOnlyPngJpgSupported=Erreur, seuls les formats images .jpg et .png sont supportés. -ErrorImageFormatNotSupported=Votre PHP ne supporte pas les fonctions de conversion de ce format d'image. SetDate=Définir date SelectDate=Sélectionnez une date SeeAlso=Voir aussi %s BackgroundColorByDefault=Couleur de fond +FileNotUploaded=Le fichier n'a pas été téléchargé +FileUploaded=Le fichier a été transféré avec succès FileWasNotUploaded=Un fichier a été sélectionné pour attachement mais n'a pas encore été uploadé. Cliquez sur "Joindre ce fichier" pour cela. NbOfEntries=Nb d'entrées GoToWikiHelpPage=Consulter l'aide (nécessite un accès internet) @@ -266,6 +266,7 @@ Afternoon=Après-midi Quadri=Trimestre MonthOfDay=Mois du jour HourShort=H +MinuteShort=mn Rate=Taux UseLocalTax=Inclure taxe Bytes=Octets @@ -340,6 +341,7 @@ FullList=Liste complète Statistics=Statistiques OtherStatistics=Autres statistiques Status=État +Favorite=Favori ShortInfo=Infos Ref=Réf. RefSupplier=Réf. fournisseur @@ -679,7 +681,7 @@ ViewPrivateNote=Voir les notes XMoreLines=%s ligne(s) cachées PublicUrl=URL publique AddBox=Ajouter boite - +SelectElementAndClickRefresh=Sélectionnez un élément et cliquez sur Rafraichir # Week day Monday=Lundi Tuesday=Mardi diff --git a/htdocs/langs/fr_FR/margins.lang b/htdocs/langs/fr_FR/margins.lang index 42951e5979e..6244b0b14ae 100644 --- a/htdocs/langs/fr_FR/margins.lang +++ b/htdocs/langs/fr_FR/margins.lang @@ -10,24 +10,18 @@ MarkRate=Taux de marque DisplayMarginRates=Afficher les taux de marge DisplayMarkRates=Afficher les taux de marque InputPrice=Saisir un prix - margin=Gestion des marges margesSetup=Paramétrage de la gestion des marges - MarginDetails=Détails des marges réalisées - ProductMargins=Marges par produit CustomerMargins=Marges par client SalesRepresentativeMargins=Marges commerciaux - ProductService=Produit ou Service AllProducts=Tous les produits et services ChooseProduct/Service=Choisissez le produit ou le service - StartDate=Date de début EndDate=Date de fin Launch=Démarrer - ForceBuyingPriceIfNull=Forcer le prix d'achat si non renseigné ForceBuyingPriceIfNullDetails=Si "ON", la ligne sera prise en compte avec une marge nulle (on forcera le prix d'achat avec le prix de vente) , sinon ("OFF") la marge sera égale au prix de vente pour cette ligne (prix d'achat à zéro). MARGIN_METHODE_FOR_DISCOUNT=Méthode de gestion des remises globales @@ -35,18 +29,15 @@ UseDiscountAsProduct=Comme un produit UseDiscountAsService=Comme un service UseDiscountOnTotal=Sur le total MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Définit si une remise globale est prise en compte comme un produit, comme un service ou uniquement sur le total lors du calcul des marges. - MARGIN_TYPE=Type de marge gérée MargeBrute=Marge brute MargeNette=Marge nette MARGIN_TYPE_DETAILS=Marge brute : Prix de vente HT - Prix d'achat HT
Marge nette : Prix de vente HT - Coût de revient - CostPrice=Prix de revient BuyingCost=Coût de revient UnitCharges=Charge unitaire Charges=Charges - AgentContactType=Type de contact agent commercial -AgentContactTypeDetails=Permet de définir le type de contact associé aux factures qui sera utilisé pour le rapport de marges par agent commercial - -ShowMarginInfos=Afficher les infos liées aux marges \ No newline at end of file +AgentContactTypeDetails=Définissez quel type de contact (lié aux factures) sera utiliser pour le reporting des marges par commercial +rateMustBeNumeric=Le taux doit être une valeure numérique +markRateShouldBeLesserThan100=Le taux de marque doit être inférieur à 100 diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index 608af130b48..3404ee5d3cb 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -85,7 +85,7 @@ SubscriptionLateShort=En retard SubscriptionNotReceivedShort=Non reçue ListOfSubscriptions=Liste des cotisations SendCardByMail=Envoyer fiche par mail -AddMember=Ajouter adhérent +AddMember=Créer adhérent NoTypeDefinedGoToSetup=Aucun type d'adhérent défini. Allez dans le menu "Types d'adhérents" NewMemberType=Nouveau type de membre WelcomeEMail=Email d'accueil @@ -125,7 +125,7 @@ Date=Date DateAndTime=Date et heure PublicMemberCard=Fiche adhérent publique MemberNotOrNoMoreExpectedToSubscribe=Non soumis ou plus soumis à cotisation -AddSubscription=Ajouter adhésion/cotisation +AddSubscription=Créer cotisation ShowSubscription=Afficher adhésion MemberModifiedInDolibarr=Adhérent modifié dans Dolibarr SendAnEMailToMember=Envoyer email d'information à l'adhérent diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index f5a83e574a6..2156b451102 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - other SecurityCode=Code de sécurité Calendar=Calendrier -AddTrip=Créer note de frais Tools=Outils ToolsDesc=Cet espace est dédié au regroupement d'outils divers non disponibles dans les autres entrées du menu.

La liste de ces outils est accessible par le menu sur le côté. Birthday=Anniversaire @@ -48,6 +47,7 @@ Notify_PROJECT_CREATE=Création de projet Notify_TASK_CREATE=Tâche créée Notify_TASK_MODIFY=Tâche modifiée Notify_TASK_DELETE=Tâche supprimée +SeeModuleSetup=Voir la configuration du module NbOfAttachedFiles=Nombre de fichiers/documents liés TotalSizeOfAttachedFiles=Taille totale fichiers/documents liés MaxSize=Taille maximum @@ -80,6 +80,16 @@ ModifiedBy=Modifié par %s ValidatedBy=Validé par %s CanceledBy=Annulé par %s ClosedBy=Clôturé par %s +CreatedById=Id utilisateur créateur +ModifiedById=Id utilisateur du dernier changement +ValidatedById=ID utilisateur qui a validé +CanceledById=Id utilisateur qui a annulé +ClosedById=Id utilisateur qui a fermé +CreatedByLogin=Login utilisateur créateur +ModifiedByLogin=Login utilisateur du dernier changement +ValidatedByLogin=Login utilisateur qui a validé +CanceledByLogin=Login utilisateur qui a annulé +ClosedByLogin=Login utilisateur qui a fermé FileWasRemoved=Le fichier %s a été supprimé DirWasRemoved=Le répertoire %s a été supprimé FeatureNotYetAvailableShort=Disponible dans une prochaine version diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index df04e0b689a..58dcbb0844e 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -117,12 +117,12 @@ ServiceLimitedDuration=Si produit de type service à durée limitée : MultiPricesAbility=Plusieurs niveaux de prix par produit/service MultiPricesNumPrices=Nombre de prix MultiPriceLevelsName=Catégorie de prix -AssociatedProductsAbility=Prise en charge des produits virtuels -AssociatedProducts=Produit virtuel -AssociatedProductsNumber=Nbre de sous-produits constituant ce produit virtuel -ParentProductsNumber=Nbre de produits virtuels parent -IfZeroItIsNotAVirtualProduct=Si 0, ce produit n'est pas un produit virtuel -IfZeroItIsNotUsedByVirtualProduct=Si 0, ce produit n'est pas utilisé par un produit virtuel +AssociatedProductsAbility=Prise en charge des produits virtuels/packs +AssociatedProducts=Produit virtual/package +AssociatedProductsNumber=Nbre de sous-produits constituant ce produit virtuel/package +ParentProductsNumber=Nbre de produits virtuels/packages parent +IfZeroItIsNotAVirtualProduct=Si 0, ce produit n'est pas un produit virtuel/package +IfZeroItIsNotUsedByVirtualProduct=Si 0, ce produit n'est pas utilisé par un produit virtuel/package EditAssociate=Composer comme produit virtuel Translation=Traduction KeywordFilter=Filtre par mot-clé @@ -132,7 +132,7 @@ AddDel=Ajouter/Retirer Quantity=Quantité NoMatchFound=Aucun résultat n'a été trouvé ProductAssociationList=Liste des produits/services composant ce produit virtuel: Le nombre entre parenthèse est la quantité affectée dans cette composition. -ProductParentList=Liste des produits/services virtuels avec ce produit comme composante +ProductParentList=Liste des produits/services virtuels/packages avec ce produit comme composante ErrorAssociationIsFatherOfThis=L'un des produits sélectionnés est parent du produit en cours DeleteProduct=Supprimer un produit/service ConfirmDeleteProduct=Êtes-vous sûr de vouloir supprimer ce produit/service ? @@ -179,7 +179,7 @@ CloneProduct=Cloner produit/service ConfirmCloneProduct=Êtes-vous sûr de vouloir cloner le produit ou service %s ? CloneContentProduct=Cloner les informations générales du produit/service ClonePricesProduct=Cloner les informations générales et les prix -CloneCompositionProduct=Cloner les produits/services virtuels +CloneCompositionProduct=Cloner les produits/services composant ce produit ProductIsUsed=Ce produit est utilisé NewRefForClone=Réf. du nouveau produit/service CustomerPrices=Prix clients diff --git a/htdocs/langs/fr_FR/propal.lang b/htdocs/langs/fr_FR/propal.lang index 598a7a8fcfc..e8a47528202 100644 --- a/htdocs/langs/fr_FR/propal.lang +++ b/htdocs/langs/fr_FR/propal.lang @@ -16,7 +16,7 @@ Prospect=Prospect ProspectList=Liste des prospects DeleteProp=Supprimer proposition ValidateProp=Valider proposition -AddProp=Créer proposition +AddProp=Créer une proposition ConfirmDeleteProp=Êtes-vous sûr de vouloir effacer cette proposition commerciale ? ConfirmValidateProp=Êtes-vous sûr de vouloir valider cette proposition commerciale sous la référence %s ? LastPropals=Les %s dernières propales @@ -55,8 +55,6 @@ NoOpenedPropals=Pas de proposition ouverte NoOtherOpenedPropals=Pas d'autre proposition brouillon RefProposal=Réf. proposition commerciale SendPropalByMail=Envoyer proposition commerciale par email -FileNotUploaded=Le fichier n'a pas été envoyé -FileUploaded=Le fichier a été envoyé correctement AssociatedDocuments=Documents associés à la proposition : ErrorCantOpenDir=Impossible d'ouvrir le répertoire DatePropal=Date de proposition diff --git a/htdocs/langs/fr_FR/suppliers.lang b/htdocs/langs/fr_FR/suppliers.lang index 8f7304b676a..dab237aeb2d 100644 --- a/htdocs/langs/fr_FR/suppliers.lang +++ b/htdocs/langs/fr_FR/suppliers.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Fournisseurs Supplier=Fournisseur -AddSupplier=Ajouter un fournisseur +AddSupplier=Créer un fournisseur SupplierRemoved=Fournisseur supprimé SuppliersInvoice=Facture fournisseur NewSupplier=Nouveau fournisseur diff --git a/htdocs/langs/fr_FR/users.lang b/htdocs/langs/fr_FR/users.lang index 447f5b661f8..a41a33da48d 100644 --- a/htdocs/langs/fr_FR/users.lang +++ b/htdocs/langs/fr_FR/users.lang @@ -120,3 +120,4 @@ UseTypeFieldToChange=Modifier le champ Type pour changer OpenIDURL=URL OpenID LoginUsingOpenID=Se connecter par OpenID WeeklyHours=Heures de travail hebdomadaires +ColorUser=Couleur de l'utilisateur diff --git a/htdocs/langs/id_ID/link.lang b/htdocs/langs/id_ID/link.lang index 8b1efb75ef3..c3ac00b7f99 100644 --- a/htdocs/langs/id_ID/link.lang +++ b/htdocs/langs/id_ID/link.lang @@ -1,8 +1,8 @@ -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 '%s' -ErrorFailedToUpdateLink= Failed to update link '%s' +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 '%s' +ErrorFailedToUpdateLink= Gagal untuk memperbaharui tautan '%s' diff --git a/htdocs/langs/id_ID/salaries.lang b/htdocs/langs/id_ID/salaries.lang index edca71a1829..666632bf28e 100644 --- a/htdocs/langs/id_ID/salaries.lang +++ b/htdocs/langs/id_ID/salaries.lang @@ -1,8 +1,12 @@ # Dolibarr language file - Source file is en_US - users -Salary=Salary -Salaries=Salaries -Employee=Employee -NewSalaryPayment=New salary payment -SalaryPayment=Salary payment -SalariesPayments=Salaries payments -ShowSalaryPayment=Show salary payment +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Kode Akuntansi untuk pembayaran gaji +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=kode akuntansi untuk pembiayaan keuangan +Salary=Gaji +Salaries=Gaji +Employee=karyawan +NewSalaryPayment=Pembayaran Gaji Baru +SalaryPayment=Pembayaran Gaji +SalariesPayments=Pembayaran Gaji +ShowSalaryPayment=Menampilkan Pembayaran Gaji +THM=rata - rata per jam +TJM=rata - rata per hari diff --git a/htdocs/langs/sv_SE/accountancy.lang b/htdocs/langs/sv_SE/accountancy.lang index 8cab9d2b651..83602dd0bab 100644 --- a/htdocs/langs/sv_SE/accountancy.lang +++ b/htdocs/langs/sv_SE/accountancy.lang @@ -1,158 +1,158 @@ # Dolibarr language file - en_US - Accounting Expert CHARSET=UTF-8 -Accounting=Accounting -Globalparameters=Global parameters -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years -Menuaccount=Accounting accounts -Menuthirdpartyaccount=Thirdparty accounts -MenuTools=Tools +Accounting=Redovisning +Globalparameters=Globala parametrar +Chartofaccounts=Kontoplan +Fiscalyear=Räkenskapsår +Menuaccount=Redovisnings konton +Menuthirdpartyaccount=Tredjeparts konton +MenuTools=Verktyg -ConfigAccountingExpert=Configuration of the module accounting expert -Journaux=Journals -JournalFinancial=Financial journals -Exports=Exports -Modelcsv=Model of export -Selectmodelcsv=Select a model of export -Modelcsv_normal=Classic export -Modelcsv_CEGID=Export towards CEGID Expert -BackToChartofaccounts=Return chart of accounts -Back=Return +ConfigAccountingExpert=Konfiguration av modulen redovisningsexpert +Journaux=Journaler +JournalFinancial=Finansiella journaler +Exports=Export +Modelcsv=Modell av export +Selectmodelcsv=Välj en modell av export +Modelcsv_normal=Klassisk export +Modelcsv_CEGID=Export mot CEGID Expert +BackToChartofaccounts=Avkastning kontoplan +Back=Avkastning -Definechartofaccounts=Define a chart of accounts -Selectchartofaccounts=Select a chart of accounts -Validate=Validate -Addanaccount=Add an accounting account -AccountAccounting=Accounting account +Definechartofaccounts=Definiera en kontoplan +Selectchartofaccounts=Välj en kontoplan +Validate=Validera +Addanaccount=Lägg till ett redovisningskonto +AccountAccounting=Redovisningskonto Ventilation=Ventilation -ToDispatch=To dispatch -Dispatched=Dispatched +ToDispatch=Avsändandet +Dispatched=Levereras -CustomersVentilation=Ventilation customers -SuppliersVentilation=Ventilation suppliers -TradeMargin=Trade margin -Reports=Reports -ByCustomerInvoice=By invoices customers -ByMonth=By Month -NewAccount=New accounting account -Update=Update -List=List -Create=Create -UpdateAccount=Modification of an accounting account -UpdateMvts=Modification of a movement -WriteBookKeeping=Record accounts in general ledger -Bookkeeping=General ledger -AccountBalanceByMonth=Account balance by month +CustomersVentilation=Ventilationskunder +SuppliersVentilation=Ventilations leverantörer +TradeMargin=Handelsmarginal +Reports=Rapporter +ByCustomerInvoice=Enligt faktura kunder +ByMonth=Enligt månad +NewAccount=Nytt redovisningskonto +Update=Uppdatera +List=Lista +Create=Skapa +UpdateAccount=Ändring av ett redovisningskonto +UpdateMvts=Ändring av en rörelse +WriteBookKeeping=Record konton i huvudboken +Bookkeeping=Huvudbok +AccountBalanceByMonth=Saldo per månad -AccountingVentilation=Accounting ventilation -AccountingVentilationSupplier=Accounting ventilation supplier -AccountingVentilationCustomer=Accounting ventilation customer -Line=Line +AccountingVentilation=Redovisning ventilation +AccountingVentilationSupplier=Redovisning ventilations leverantör +AccountingVentilationCustomer=Redovisning ventilations kund +Line=Linje -CAHTF=Total purchase supplier HT -InvoiceLines=Lines of invoice to be ventilated -InvoiceLinesDone=Ventilated lines of invoice -IntoAccount=In the accounting account +CAHTF=Totala köpesleverantörs HT +InvoiceLines=Linjer av faktura som ska ventileras +InvoiceLinesDone=Ventilerade linjer faktura +IntoAccount=I bokföringskonto -Ventilate=Ventilate -VentilationAuto=Automatic ventilation +Ventilate=Ventilera +VentilationAuto=Automatisk ventilation -Processing=Processing -EndProcessing=The end of processing -AnyLineVentilate=Any lines to ventilate -SelectedLines=Selected lines -Lineofinvoice=Line of invoice -VentilatedinAccount=Ventilated successfully in the accounting account -NotVentilatedinAccount=Not ventilated in the accounting account +Processing=Bearbetning +EndProcessing=I slutet av behandlingen +AnyLineVentilate=Några rader för att ventilera +SelectedLines=Valda linjer +Lineofinvoice=Line of faktura +VentilatedinAccount=Ventilerade framgångsrikt i redovisningskonto +NotVentilatedinAccount=Inte ventilerad i redovisningskonto ACCOUNTING_SEPARATORCSV=Separator CSV -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be ventilated shown by page (maximum recommended : 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the pages of ventilation "Has to ventilate" by the most recent elements -ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the pages of ventilation "Ventilated" by the most recent elements +ACCOUNTING_LIMIT_LIST_VENTILATION=Antal element som skall ventil visas av sidan (max rekommenderad: 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Börja sorteringen av sidorna i ventilations "Måste ventilera" av de senaste delarna +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Börja sorteringen av sidorna i ventilation "Ventilerade" av de senaste delarna -AccountLength=Length of the accounting accounts shown in Dolibarr -AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. -ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts -ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts +AccountLength=Längd på redovisningen redovisning i Dolibarr +AccountLengthDesc=Funktion som gör det möjligt att låtsas en längd av bokföringskonto genom att ersätta mellanslag med noll siffra. Den här funktionen berör endast displayen, det ändrar inte redovisningskonton registrerade i Dolibarr. För export, är nödvändigt denna funktion för att vara kompatibel med viss programvara. +ACCOUNTING_LENGTH_GACCOUNT=Längd på de allmänna räkenskaperna +ACCOUNTING_LENGTH_AACCOUNT=Längd av tredjepartskonton -ACCOUNTING_SELL_JOURNAL=Sell journal -ACCOUNTING_PURCHASE_JOURNAL=Purchase journal -ACCOUNTING_BANK_JOURNAL=Bank journal +ACCOUNTING_SELL_JOURNAL=Sell ​​tidskrift +ACCOUNTING_PURCHASE_JOURNAL=Bara tidskrift +ACCOUNTING_BANK_JOURNAL=Bank tidskrift ACCOUNTING_CASH_JOURNAL=Cash journal -ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal -ACCOUNTING_SOCIAL_JOURNAL=Social journal +ACCOUNTING_MISCELLANEOUS_JOURNAL=Diverse tidskrift +ACCOUNTING_SOCIAL_JOURNAL=Social tidskrift -ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer -ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Redogörelse för överföring +ACCOUNTING_ACCOUNT_SUSPENSE=Redogörelse för vänta -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Redovisning kontot som standard för köpta produkter (om den inte anges i produktbladet) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Redovisning kontot som standard för de sålda produkterna (om den inte anges i produktbladet) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Redovisning konto som standard för de köpte tjänster (om den inte anges i servicebladet) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Redovisning kontot som standard för sålda tjänster (om den inte anges i servicebladet) -Doctype=Type of document -Docdate=Date -Docref=Reference -Numerocompte=Account -Code_tiers=Thirdparty -Labelcompte=Label account +Doctype=Typ av dokument +Docdate=Datum +Docref=Referens +Numerocompte=Konto +Code_tiers=Tredjeparts +Labelcompte=Etikett konto Debit=Debit -Credit=Credit -Amount=Amount +Credit=Kredit +Amount=Belopp Sens=Sens Codejournal=Journal -DelBookKeeping=Delete the records of the general ledger +DelBookKeeping=Ta bort posterna i huvudboken -SellsJournal=Sells journal -PurchasesJournal=Purchases journal -DescSellsJournal=Sells journal -DescPurchasesJournal=Purchases journal -BankJournal=Bank journal -DescBankJournal=Bank journal including all the types of payments other than cash +SellsJournal=Försäljnings journal +PurchasesJournal=Inköp tidskrift +DescSellsJournal=Sells tidskrift +DescPurchasesJournal=Inköp tidskrift +BankJournal=Bank tidskrift +DescBankJournal=Bank journal inklusive alla typer av annat än pengar betalningar CashJournal=Cash journal -DescCashJournal=Cash journal including the type of payment cash +DescCashJournal=Cash journal inklusive typ av betalning kontant -CashPayment=Cash Payment +CashPayment=Kontantbetalning -SupplierInvoicePayment=Payment of invoice supplier -CustomerInvoicePayment=Payment of invoice customer +SupplierInvoicePayment=Betalning av leverantörsfaktura +CustomerInvoicePayment=Betalning av faktura kund -ThirdPartyAccount=Thirdparty account +ThirdPartyAccount=Tredjeparts konto -NewAccountingMvt=New movement -NumMvts=Number of movement -ListeMvts=List of the movement -ErrorDebitCredit=Debit and Credit cannot have a value at the same time +NewAccountingMvt=Ny rörelse +NumMvts=Antal rörelse +ListeMvts=Lista över rörelsen +ErrorDebitCredit=Debit och kredit kan inte ha ett värde på samma gång -ReportThirdParty=List thirdparty account -DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts +ReportThirdParty=Listan tredjeparts konto +DescThirdPartyReport=Konsul här listan över de tredjeparts kunder och leverantörer och deras bokföringskonton -ListAccounts=List of the accounting accounts +ListAccounts=Förteckning över redovisningskonton -Pcgversion=Version of the plan -Pcgtype=Class of account -Pcgsubtype=Under class of account -Accountparent=Root of the account -Active=Statement +Pcgversion=Version av planen +Pcgtype=Klass konto +Pcgsubtype=Under klass konto +Accountparent=Roten till kontot +Active=Uttalande -NewFiscalYear=New fiscal year +NewFiscalYear=Nytt räkenskapsår -DescVentilCustomer=Consult here the annual accounting ventilation of your invoices customers -TotalVente=Total turnover HT -TotalMarge=Total sales margin -DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account -DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account -ChangeAccount=Change the accounting account for lines selected by the account: +DescVentilCustomer=Rådgör här den årliga redovisningen ventilation av dina fakturor kunder +TotalVente=Total omsättning HT +TotalMarge=Total försäljning marginal +DescVentilDoneCustomer=Konsul här listan med linjerna av fakturor kunder och deras bokföringskonto +DescVentilTodoCustomer=Ventilera dina rader av kundfaktura med en redovisningskonto +ChangeAccount=Ändra bokföringskonto för linjer som valts ut av kontot: Vide=- -DescVentilSupplier=Consult here the annual accounting ventilation of your invoices suppliers -DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account -DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account +DescVentilSupplier=Rådgör här den årliga redovisningen ventilation av dina fakturor leverantörer +DescVentilTodoSupplier=Ventilera dina rader av leverantörsfaktura med en redovisningskonto +DescVentilDoneSupplier=Konsul här listan med linjerna av fakturor leverantör och deras bokföringskonto -ValidateHistory=Validate Automatically +ValidateHistory=Validera Automatiskt -ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used +ErrorAccountancyCodeIsAlreadyUse=Fel, du kan inte ta bort denna redovisningskonto eftersom den används -FicheVentilation=Ventilation card +FicheVentilation=Ventilation kort diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index bab67d2c1ad..b67c53cc77e 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -43,19 +43,19 @@ SecuritySetup=Säkerhet setup ErrorModuleRequirePHPVersion=Fel, kräver denna modul PHP version %s eller högre ErrorModuleRequireDolibarrVersion=Fel, kräver denna modul Dolibarr version %s eller högre ErrorDecimalLargerThanAreForbidden=Fel, en precision högre än %s stöds inte. -DictionarySetup=Dictionary setup -Dictionary=Dictionaries -Chartofaccounts=Chart of accounts -Fiscalyear=Fiscal years +DictionarySetup=Lexikon inställnings +Dictionary=Ordböcker +Chartofaccounts=Kontoplan +Fiscalyear=Räkenskapsår ErrorReservedTypeSystemSystemAuto=Värdena "system" och "systemauto" för typ är reserverade. Du kan använda "user" som värde för att lägga till en egen post. ErrorCodeCantContainZero=Kod får inte innehålla värdet 0 -DisableJavascript=Disable JavaScript and Ajax functions (Recommended for blind person or text browsers) +DisableJavascript=Inaktivera JavaScript och Ajax-funktioner (rekommenderas för blinda personer eller textbaserade webbläsare) ConfirmAjax=Använd Ajax bekräftelse popups -UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectCompany=Use autocompletion fields to choose third parties instead of using a list box. +UseSearchToSelectCompanyTooltip=Även om du har ett stort antal tredje parter (> 100 000), kan du öka hastigheten genom att sätta konstant COMPANY_DONOTSEARCH_ANYWHERE till 1 i Setup-> Övrigt. Sökningen kommer då att begränsas till start av strängen. +UseSearchToSelectCompany=Använd automatisk komplettering fält för att välja tredje man istället för att använda en listruta. ActivityStateToSelectCompany= Lägg till ett filter alternativ för att visa / dölja thirdparties som för närvarande är i aktivitet eller har upphört att -UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box). +UseSearchToSelectContactTooltip=Även om du har ett stort antal tredje parter (> 100 000), kan du öka hastigheten genom att sätta konstant CONTACT_DONOTSEARCH_ANYWHERE till 1 i Setup-> Övrigt. Sökningen kommer då att begränsas till start av strängen. +UseSearchToSelectContact=Använd automatisk komplettering fält för att välja kontakt (istället för att använda en listruta). SearchFilter=Sök filter alternativ NumberOfKeyToSearch=NBR tecken för att utlösa Sök: %s ViewFullDateActions=Visa fullständig datum åtgärder i tredje blad @@ -67,8 +67,8 @@ ShowPreview=Visa förhandsgranskning PreviewNotAvailable=Förhandsgranska inte tillgänglig ThemeCurrentlyActive=Tema för tillfället CurrentTimeZone=PHP server tidszon -MySQLTimeZone=TimeZone MySql (database) -TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +MySQLTimeZone=Timezone MySql (databas) +TZHasNoEffect=Datum lagras och returneras av databasserver som om de hålls som LAGTS sträng. Den tidszon har effekt endast vid användning UNIX_TIMESTAMP funktion (som inte bör användas av Dolibarr, så databas TZ ska ha någon effekt, även om det ändras efter uppgifterna angavs). Space=Space Table=Tabell Fields=Fält @@ -77,8 +77,8 @@ Mask=Mask NextValue=Nästa värde NextValueForInvoices=Nästa värde (fakturor) NextValueForCreditNotes=Nästa värde (kreditnotor) -NextValueForDeposit=Next value (deposit) -NextValueForReplacements=Next value (replacements) +NextValueForDeposit=Nästa värde (deposition) +NextValueForReplacements=Nästa värde (ersättare) MustBeLowerThanPHPLimit=Obs: Din PHP gränser varje filuppladdning storlek till %s %s, oavsett denna parameter värde är NoMaxSizeByPHPLimit=Obs: Ingen gräns som anges i din PHP konfiguration MaxSizeForUploadedFiles=Maximala storleken för uppladdade filer (0 att förkasta varje uppladdning) @@ -107,8 +107,8 @@ OtherSetup=Andra setup CurrentValueSeparatorDecimal=Decimaltecken CurrentValueSeparatorThousand=Tusentalsavgränsare Destination=Destination -IdModule=Module ID -IdPermissions=Permissions ID +IdModule=Modul ID +IdPermissions=Behörighet ID Modules=Moduler ModulesCommon=Huvudmoduler ModulesOther=Andra moduler @@ -120,7 +120,7 @@ LanguageBrowserParameter=Parameter %s LocalisationDolibarrParameters=Lokalisering parametrar ClientTZ=Kund tidzon (användare) ClientHour=Kund tid (användare) -OSTZ=Server OS Time Zone +OSTZ=Server OS tidszon PHPTZ=Tidszon PHP server PHPServerOffsetWithGreenwich=PHP server offset bredd Greenwich (sekunder) ClientOffsetWithGreenwich=Klient / Browser offset bredd Greenwich (sekunder) @@ -129,7 +129,7 @@ CurrentHour=PHP server timme CompanyTZ=Tidszon företag (huvudföretag) CompanyHour=Hour företag (huvudföretag) CurrentSessionTimeOut=Aktuell session timeout -YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a file .htacces with a line like this "SetEnv TZ Europe/Paris" +YouCanEditPHPTZ=För att ställa in en annan PHP tidszon (inget krav), kan du försöka lägga till en fil .htacces med en rad som denna "setenv TZ Europe / Paris" OSEnv=OS Miljö Box=Låda Boxes=Lådor @@ -219,7 +219,7 @@ AutomaticIfJavascriptDisabled=Automatisk om Javascript är avstängt AvailableOnlyIfJavascriptNotDisabled=Endast tillgängligt om JavaScript är inte oduglig AvailableOnlyIfJavascriptAndAjaxNotDisabled=Endast tillgängligt om JavaScript är inte oduglig Required=Obligatorisk -UsedOnlyWithTypeOption=Used by some agenda option only +UsedOnlyWithTypeOption=Används av en viss agenda alternativet Security=Säkerhet Passwords=Lösenord DoNotStoreClearPassword=Har ingen butik tydlig lösenord i databasen, men endast lagra krypterade värde (Aktiverad rekommenderas) @@ -238,7 +238,7 @@ OfficialWebSiteFr=Officiella franska hemsida OfficialWiki=Dolibarr Wiki OfficialDemo=Dolibarr online demo OfficialMarketPlace=Officiella marknadsplats för externa moduler / addons -OfficialWebHostingService=Referenced web hosting services (Cloud hosting) +OfficialWebHostingService=Refererade webbhotell (Cloud hosting) ReferencedPreferredPartners=Preferred Partners OtherResources=Autres ressources ForDocumentationSeeWiki=För användarens eller utvecklarens dokumentation (Doc, FAQs ...),
ta en titt på Dolibarr Wiki:
%s @@ -260,9 +260,9 @@ MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP / SMTPs Host (Ej definierad i MAIN_MAIL_EMAIL_FROM=Avsändare e-post för automatisk e-post (som standard i php.ini: %s) MAIN_MAIL_ERRORS_TO=Avsändarens e-postadress används för fel returer e-post skickas MAIN_MAIL_AUTOCOPY_TO= Skicka systematiskt en dold kol-kopia av alla skickade email till -MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Send systematically a hidden carbon-copy of proposals sent by email to -MAIN_MAIL_AUTOCOPY_ORDER_TO= Send systematically a hidden carbon-copy of orders sent by email to -MAIN_MAIL_AUTOCOPY_INVOICE_TO= Send systematically a hidden carbon-copy of invoice sent by emails to +MAIN_MAIL_AUTOCOPY_PROPOSAL_TO= Skicka systematiskt en dold kol-kopia av förslag skickas med e-post till +MAIN_MAIL_AUTOCOPY_ORDER_TO= Skicka systematiskt en dold kol-kopia av order skickas med e-post till +MAIN_MAIL_AUTOCOPY_INVOICE_TO= Skicka systematiskt en dold kol-kopia på faktura skickas med e-post till MAIN_DISABLE_ALL_MAILS=Inaktivera alla e-postmeddelanden sendings (på försök eller demos) MAIN_MAIL_SENDMODE=Metod för att skicka e-post MAIN_MAIL_SMTPS_ID=SMTP-ID om autentisering krävs @@ -296,13 +296,13 @@ UnpackPackageInDolibarrRoot=Packa upp paketet fil till Dolibarr s katalog %s< SetupIsReadyForUse=Installera är klar och Dolibarr är klar att användas med den nya komponenten. NotExistsDirect=Den alternativa rotkatalogen är inte definierad.
InfDirAlt=Sedab version 3 är det möjligt att definiera en alternativ rotkatalog. Detta medger en gemensam plats att lagra plugin och anpassade mallar.
Skapa en katalog i Dolibarrs rot (t.ex. custom).
-InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='http://myserver/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
*These lines are commented with "#", to uncomment only remove the character. +InfDirExample=
Sedan förklara den i filen conf.php
$ Dolibarr_main_url_root_alt = 'http: // myserver / anpassad "
$ Dolibarr_main_document_root_alt = '/ sökväg / till / Dolibarr / htdocs / anpassad "
* Dessa linjer kommen med "#", för att kommentera bort bara ta bort tecknet. YouCanSubmitFile=Välj modul: CurrentVersion=Dolibarr nuvarande version CallUpdatePage=Gå till sidan som uppdaterar databasen struktur och data: %s. LastStableVersion=Senaste stabila version GenericMaskCodes=Du kan ange någon numrering mask. I denna mask skulle följande taggar användas:
(000000) motsvarar ett antal som kommer att ökas på varje %s. Ange så många nollor som den önskade längden på disken. Räknaren kommer att fyllas ut med nollor från vänster för att få så många nollor som masken.
(000000 000) samma som tidigare men en kompensation som motsvarar det antal till höger om tecknet + tillämpas med början den första %s.
(000000 @ x) samma som tidigare, men räknaren återställs till noll när månaden x uppnås (x mellan 1 och 12). Om detta alternativ används och x är 2 eller högre, då sekvensen (yy) (mm) eller (ÅÅÅÅ) (mm) krävs också.
(Dd) dag (01 till 31).
(Mm) månad (01 till 12).
(Yy), (ÅÅÅÅ) eller (y) år under 2, 4 eller ett nummer.
-GenericMaskCodes2={cccc} the client code on n characters
{cccc000} the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter.
{tttt} The code of thirdparty type on n characters (see dictionary-thirdparty types).
+GenericMaskCodes2={Cccc} klientkoden på n tecken
{Cccc000} klientkoden på n tecken följs av en räknare dedikerad för kunden. Denna räknare tillägnad kund återställs vid samma tidpunkt än den globala räknare.
{Tttt} Koden för tredjeparts typ på n tecken (se ordlistan-tredjeparts typer).
GenericMaskCodes3=Alla andra tecken i masken förblir intakt.
Blanksteg är inte tillåtna.
GenericMaskCodes4a=Exempel på 99. %s den tredje part TheCompany gjort 2007/01/31:
GenericMaskCodes4b=Exempel på tredje part som har skapats på 2007/03/01:
@@ -314,7 +314,7 @@ ServerNotAvailableOnIPOrPort=Servern är inte tillgänglig på adress %s DoTestServerAvailability=Test serveranslutning DoTestSend=Testa att skicka DoTestSendHTML=Testa att skicka HTML -ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. +ErrorCantUseRazIfNoYearInMask=Fel, kan inte använda alternativet @ för att återställa räknaren varje år om sekvens {åå} eller {yyyy} inte är i mask. ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Fel, kan inte använda alternativet @ om sekvensen (yy) (mm) eller (ÅÅÅÅ) (mm) inte är i mask. UMask=Umask parameter för nya filer på Unix / Linux / BSD-filsystemet. UMaskExplanation=Denna parameter gör att du kan definiera behörigheter som standard på filer skapade av Dolibarr på servern (under upp till exempel).
Det måste vara det oktala värdet (till exempel 0666 innebär läsa och skriva för alla).
Denna parameter är meningslöst på en Windows server. @@ -362,7 +362,7 @@ GetSecuredUrl=Få beräknat URL ButtonHideUnauthorized=Visa ej knappar för åtgärder för vilka behörighet saknas istället för att visa knapparna inaktiverade OldVATRates=Gammal momssats NewVATRates=Ny momssats -PriceBaseTypeToChange=Modify on prices with base reference value defined on +PriceBaseTypeToChange=Ändra om priser med bas referensvärde som definieras på MassConvert=Starta masskonvertering String=String TextLong=Lång text @@ -379,29 +379,29 @@ ExtrafieldSelectList = Välj från tabell ExtrafieldSeparator=Avskiljare ExtrafieldCheckBox=Kryssruta ExtrafieldRadio=Radioknapp -ExtrafieldParamHelpselect=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
...

In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key -ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpradio=Parameters list have to be like key,value

for example :
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpsellist=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpselect=Parametrar listan måste vara som nyckel, värde

till exempel:
1, value1
2, värde2
3, value3
...

För att få en lista beroende på en annan:
1, value1 | parent_list_code: parent_key
2, värde2 | parent_list_code: parent_key +ExtrafieldParamHelpcheckbox=Parametrar listan måste vara som nyckel, värde

till exempel:
1, value1
2, värde2
3, value3
... +ExtrafieldParamHelpradio=Parametrar listan måste vara som nyckel, värde

till exempel:
1, value1
2, värde2
3, value3
... +ExtrafieldParamHelpsellist=Parametrar lista kommer från en tabell
Syntax: tabellnamn: label_field: id_field :: filtrering
Exempel: c_typent: libelle: id :: filter

Filtret kan vara ett enkelt test (t.ex. aktiv = 1) för att visa endast aktiv värde
Om du vill filtrera på extrafields använder syntaxt extra.fieldcode = ... (där fältkoden är koden för Mig &)

För att få en lista beroende på en annan:
c_typent: libelle: id: parent_list_code | parent_column: filter LibraryToBuildPDF=Katalog som används för att skapa PDF -WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' -LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) +WarningUsingFPDF=Varning: Din conf.php innehåller direktiv dolibarr_pdf_force_fpdf = 1. Detta innebär att du använder fpdf bibliotek för att generera PDF-filer. Detta bibliotek är gammalt och inte stöder en mängd funktioner (Unicode, bild öppenhet, kyrilliska, arabiska och asiatiska språk, ...), så att du kan uppleva fel under PDF generation.
För att lösa detta och ha ett fullt stöd för PDF-generering, ladda ner TCPDF bibliotek , sedan kommentera eller ta bort linjen $ dolibarr_pdf_force_fpdf = 1, och lägg istället $ dolibarr_lib_TCPDF_PATH = 'path_to_TCPDF_dir' +LocalTaxDesc=Vissa länder tillämpar 2 eller 3 skatter på varje fakturarad. Om så är fallet, välj typ för andra och tredje skatte- och dess hastighet. Möjlig typ är:
1: lokal skatt tillämpas på produkter och tjänster utan moms (moms inte tillämpas på lokal skatt)
2: lokal skatt tillämpas på produkter och tjänster innan moms (moms beräknas på beloppet + localtax)
3: lokal skatt tillämpas på produkter utan moms (moms inte tillämpas på lokal skatt)
4: lokal skatt tillämpas på produkter innan moms (moms beräknas på beloppet + localtax)
5: lokal skatt tillämpas på tjänster utan moms (moms inte tillämpas på lokal skatt)
6: lokal skatt tillämpas på tjänster innan moms (moms beräknas på beloppet + localtax) SMS=SMS LinkToTestClickToDial=Skriv in ett telefonnummer att ringa upp för att visa en länk för att prova ClickToDial url för användare %s RefreshPhoneLink=Uppdatera länk LinkToTest=Väljbar länk genererad för användare %s (klicka på tfn-nummer för att prova) KeepEmptyToUseDefault=Lämna tom för standardvärde DefaultLink=Standardlänk -ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module - Installed into directory %s -BarcodeInitForThirdparties=Mass barcode init for thirdparties -BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services -CurrentlyNWithoutBarCode=Currently, you have %s records on %s %s without barcode defined. -InitEmptyBarCode=Init value for next %s empty records +ValueOverwrittenByUserSetup=Varning, kan detta värde skrivas över av användarspecifik installation (varje användare kan ställa in sin egen clicktodial url) +ExternalModule=Extern modul - Installerad i katalogen %s +BarcodeInitForThirdparties=Mäss streckkod init för thirdparties +BarcodeInitForProductsOrServices=Mass streckkod init eller återställning efter produkter eller tjänster +CurrentlyNWithoutBarCode=För närvarande har du% s skivor på% s% s utan streckkod definieras. +InitEmptyBarCode=Init värde för nästa% s tomma poster EraseAllCurrentBarCode=Radera alla nuvarande streckkoder ConfirmEraseAllCurrentBarCode=Vill du radera alla nuvarande streckkoder? AllBarcodeReset=Alla värden för streckkod har raderats -NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup. +NoBarcodeNumberingTemplateDefined=Ingen numrering streckkod mall aktiverat i streckkodsmodul setup. NoRecordWithoutBarcodeDefined=Ingen post utan angivet värde för streckkod. # Modules @@ -480,11 +480,11 @@ Module400Desc=Projektets ledning innanför andra moduler Module410Name=WebCalendar Module410Desc=WebCalendar integration Module500Name=Speciella utgifter (skatt, sociala avgifter, utdelningar) -Module500Desc=Management of special expenses like taxes, social contribution, dividends and salaries +Module500Desc=Förvaltning av särskilda kostnader som skatter, sociala avgifter, utdelningar och löner Module510Name=Löner -Module510Desc=Management of employees salaries and payments +Module510Desc=Förvaltning av de anställdas löner och betalningar Module600Name=Anmälningar -Module600Desc=Skicka meddelanden via e-post på några Dolibarr affärshändelser till annans kontakter +Module600Desc=Skicka e-postmeddelanden på vissa Dolibarr affärshändelser till kontakter tredjeparts (inställnings definieras på varje tredjeparts) Module700Name=Donationer Module700Desc=Donation ledning Module1200Name=Mantis @@ -505,37 +505,37 @@ Module2600Name=WebServices Module2600Desc=Aktivera Dolibarr webbtjänster server Module2700Name=Gravatar Module2700Desc=Använder online Gravatar tjänst (www.gravatar.com) för att visa foto av användare / medlemmar (hittade med sin e-post). Behöver en internet -Module2800Desc=FTP Client +Module2800Desc=FTP-klient Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP Maxmind omvandlingar kapacitet Module3100Name=Skype -Module3100Desc=Add a Skype button into card of adherents / third parties / contacts +Module3100Desc=Lägga till en Skype-knapp i kort anhängare / tredje man / kontakter Module5000Name=Multi-bolag Module5000Desc=Gör att du kan hantera flera företag Module6000Name=Workflow Module6000Desc=Workflow management -Module20000Name=Ledighet -Module20000Desc=Deklarera och följ anställdas ledighet -Module39000Name=Product batch -Module39000Desc=Batch number, eat-by and sell-by date management on products +Module20000Name=Lämna Framställningar förvaltning +Module20000Desc=Deklarera och följ de anställda lämnar förfrågningar +Module39000Name=Produktsats +Module39000Desc=Batchnummer, äter-by och bäst före-datum hantering av produkter Module50000Name=Paybox Module50000Desc=Modul för att erbjuda en online-betalning sidan genom kreditkort med Paybox Module50100Name=Point of sales Module50100Desc=Point of sales modul -Module50200Name= Paypal -Module50200Desc= Modul för att erbjuda en online-betalning sidan med kreditkort med Paypal -Module50400Name=Accounting (advanced) -Module50400Desc=Accounting management (double parties) +Module50200Name=Paypal +Module50200Desc=Modul för att erbjuda en online-betalning sidan med kreditkort med Paypal +Module50400Name=Redovisning (avancerad) +Module50400Desc=Bokföring och redovisning (dubbla parter) Module54000Name=PrintIPP -Module54000Desc=Print via Cups IPP Printer. -Module55000Name=Open Poll -Module55000Desc=Module to make online polls (like Doodle, Studs, Rdvz, ...) -Module59000Name=Margins -Module59000Desc=Module to manage margins -Module60000Name=Commissions -Module60000Desc=Module to manage commissions -Module150010Name=Batch number, eat-by date and sell-by date -Module150010Desc=batch number, eat-by date and sell-by date management for product +Module54000Desc=Skriv ut via Cups IPP-skrivare. +Module55000Name=Öppen Poll +Module55000Desc=Modul för att göra online omröstningar (som Doodle, öar Rdvz, ...) +Module59000Name=Marginaler +Module59000Desc=Modul för att hantera marginaler +Module60000Name=Provision +Module60000Desc=Modul för att hantera uppdrag +Module150010Name=Batchnummer, äter före-datum och bäst före-datum +Module150010Desc=batchnummer, äter före-datum och bäst före-datum hantering för produkt Permission11=Läs fakturor Permission12=Skapa / ändra fakturor Permission13=Unvalidate fakturor @@ -584,7 +584,7 @@ Permission95=Läs rapporter Permission101=Läs sendings Permission102=Skapa / ändra sendings Permission104=Validate sendings -Permission106=Export sendings +Permission106=Exportsend Permission109=Ta bort sendings Permission111=Läs finansiella räkenskaper Permission112=Skapa / ändra / radera och jämför transaktioner @@ -611,10 +611,11 @@ Permission162=Skapa / ändra avtal Permission163=Aktivera en tjänst av ett kontrakt Permission164=Inaktivera en tjänst av ett kontrakt Permission165=Radera kontrakt -Permission171=Läs resor -Permission172=Skapa / modifiera resor -Permission173=Ta bort resor -Permission178=Export resor +Permission171=Läs resor och utgifter (eget och hans underordnade) +Permission172=Skapa / ändra resor och kostnader +Permission173=Ta bort resor och kostnader +Permission174=Läsa alla resor och kostnader +Permission178=Export resor och kostnader Permission180=Läs leverantörer Permission181=Läs leverantör order Permission182=Skapa / ändra leverantör order @@ -641,9 +642,9 @@ Permission221=Läs emailings Permission222=Skapa / ändra emailings (ämne, mottagare ...) Permission223=Validera emailings (medger sändning) Permission229=Ta bort emailings -Permission237=View recipients and info -Permission238=Manually send mailings -Permission239=Delete mailings after validation or sent +Permission237=Visa mottagare och info +Permission238=Skicka försändelserna manuellt +Permission239=Radera utskick efter validering eller skickas Permission241=Läs kategorier Permission242=Skapa / ändra kategorier Permission243=Ta bort kategorier @@ -688,10 +689,10 @@ Permission401=Läs rabatter Permission402=Skapa / ändra rabatter Permission403=Validate rabatter Permission404=Ta bort rabatter -Permission510=Read Salaries -Permission512=Create/modify salaries -Permission514=Delete salaries -Permission517=Export salaries +Permission510=Läs Löner +Permission512=Skapa / ändra löner +Permission514=Radera löner +Permission517=Export löner Permission531=Läs tjänster Permission532=Skapa / modifiera tjänster Permission534=Ta bort tjänster @@ -725,7 +726,7 @@ Permission1233=Validate leverantörsfakturor Permission1234=Ta bort leverantörsfakturor Permission1235=Skicka leverantörsfakturor via e-post Permission1236=Export leverantörsfakturor, attribut och betalningar -Permission1237=Export supplier orders and their details +Permission1237=Export leverantörsorder och tillhörande information Permission1251=Kör massiv import av externa data till databasen (data last) Permission1321=Export kundfakturor, attribut och betalningar Permission1421=Export kundorder och attribut @@ -743,44 +744,44 @@ Permission2501=Läsa dokument Permission2502=Skicka eller ta bort dokument Permission2503=Lämna eller ta bort dokument Permission2515=Setup dokument kataloger -Permission2801=Use FTP client in read mode (browse and download only) -Permission2802=Use FTP client in write mode (delete or upload files) -Permission50101=Use Point of sales +Permission2801=Använd FTP-klient i läsläge (bläddra och ladda endast) +Permission2802=Använd FTP-klient i skrivläge (radera eller ladda upp filer) +Permission50101=Användning Försäljningsställen Permission50201=Läs transaktioner Permission50202=Importera transaktioner Permission54001=Print -Permission55001=Read polls -Permission55002=Create/modify polls -Permission59001=Read commercial margins -Permission59002=Define commercial margins -DictionaryCompanyType=Thirdparties type -DictionaryCompanyJuridicalType=Juridical kinds of thirdparties -DictionaryProspectLevel=Prospect potential level -DictionaryCanton=State/Cantons -DictionaryRegion=Regions -DictionaryCountry=Countries -DictionaryCurrency=Currencies -DictionaryCivility=Civility title -DictionaryActions=Type of agenda events -DictionarySocialContributions=Social contributions types -DictionaryVAT=VAT Rates or Sales Tax Rates -DictionaryRevenueStamp=Amount of revenue stamps -DictionaryPaymentConditions=Payment terms -DictionaryPaymentModes=Payment modes -DictionaryTypeContact=Contact/Address types -DictionaryEcotaxe=Ecotax (WEEE) -DictionaryPaperFormat=Paper formats -DictionaryFees=Type of fees -DictionarySendingMethods=Shipping methods -DictionaryStaff=Staff -DictionaryAvailability=Delivery delay -DictionaryOrderMethods=Ordering methods +Permission55001=Läs omröstningar +Permission55002=Skapa / ändra omröstningar +Permission59001=Läs kommersiella marginaler +Permission59002=Definiera kommersiella marginaler +DictionaryCompanyType=Thirdparties typ +DictionaryCompanyJuridicalType=Juridiska sorters thirdparties +DictionaryProspectLevel=Prospect potentiella nivå +DictionaryCanton=Statliga / kantoner +DictionaryRegion=Regioner +DictionaryCountry=Länder +DictionaryCurrency=Valutor +DictionaryCivility=Civility titel +DictionaryActions=Typ av dagordningen händelser +DictionarySocialContributions=Sociala avgifter typer +DictionaryVAT=Moms Priser och Sales Tax Rates +DictionaryRevenueStamp=Mängd skattestämpel +DictionaryPaymentConditions=Betalningsvillkor +DictionaryPaymentModes=Betalningssätten +DictionaryTypeContact=Kontakt / adresstyper +DictionaryEcotaxe=Miljöskatt (WEEE) +DictionaryPaperFormat=Pappersformat +DictionaryFees=Typ av avgifter +DictionarySendingMethods=Fraktmetoder +DictionaryStaff=Personal +DictionaryAvailability=Leveransförsening +DictionaryOrderMethods=Beställningsmetoder DictionarySource=Ursprung av affärsförslag / beställning -DictionaryAccountancyplan=Chart of accounts -DictionaryAccountancysystem=Models for chart of accounts +DictionaryAccountancyplan=Kontoplan +DictionaryAccountancysystem=Modeller för kontoplan SetupSaved=Setup sparas BackToModuleList=Tillbaka till moduler lista -BackToDictionaryList=Back to dictionaries list +BackToDictionaryList=Tillbaka till ordböcker listan VATReceivedOnly=Särskilda räntesats inte VATManagement=Moms Management VATIsUsedDesc=Den momssats som standard när du skapar framtidsutsikter, fakturor, order etc följa aktiva standard regeln:
Om säljaren är föremål för mervärdesskatt, då moms som standard = 0. Slut på regeln.
Om (den som säljer land = köparlandet), sedan den mervärdesskatt som standard = mervärdesskatt av produkten vid försäljning landet. Slut på regeln.
Om säljaren och köparen i Europeiska gemenskapen och varor transporttjänster (bil, fartyg, flygplan), standard moms = 0 (Den mervärdesskatt som skall betalas av köparen vid customoffice av sitt land och inte på säljaren). Slut på regeln.
Om säljaren och köparen i Europeiska gemenskapen och köparen är inte ett företag, sedan den mervärdesskatt som standard = moms på produkt som säljs. Slut på regeln.
Om säljaren och köparen i Europeiska gemenskapen och köparen är ett företag, då moms som standard = 0. Slut på regeln.
Else föreslagna standard moms = 0. Slut på regeln. @@ -788,19 +789,19 @@ VATIsNotUsedDesc=Som standard föreslås moms 0 som kan användas för de fall s VATIsUsedExampleFR=I Frankrike betyder det företag eller organisationer som har en verklig skattesystemet (förenklad verkliga eller normal verklig). Ett system där mervärdesskatt ska deklareras. VATIsNotUsedExampleFR=I Frankrike betyder det föreningar som inte är moms deklarerats eller företag, organisationer eller fria yrken som har valt mikroföretag skattesystemet (mervärdesskatt i franchise) och betalade en franchise moms utan momsdeklaration. Detta val kommer att visa referens "Ej tillämpligt mervärdesskatt - konst-293B av CGI" på fakturorna. ##### Local Taxes ##### -LTRate=Rate -LocalTax1IsUsed=Use second tax -LocalTax1IsNotUsed=Do not use second tax -LocalTax1IsUsedDesc=Use a second type of tax (other than VAT) -LocalTax1IsNotUsedDesc=Do not use other type of tax (other than VAT) -LocalTax1Management=Second type of tax +LTRate=Betyg +LocalTax1IsUsed=Använda andra skatte +LocalTax1IsNotUsed=Använd inte andra skatte +LocalTax1IsUsedDesc=Använd en annan typ av skatt (exklusive moms) +LocalTax1IsNotUsedDesc=Använd inte andra typer av skatt (exklusive moms) +LocalTax1Management=Andra typen av skatt LocalTax1IsUsedExample= LocalTax1IsNotUsedExample= -LocalTax2IsUsed=Use third tax -LocalTax2IsNotUsed=Do not use third tax -LocalTax2IsUsedDesc=Use a third type of tax (other than VAT) -LocalTax2IsNotUsedDesc=Do not use other type of tax (other than VAT) -LocalTax2Management=Third type of tax +LocalTax2IsUsed=Använd tredje skatt +LocalTax2IsNotUsed=Använd inte tredje skatt +LocalTax2IsUsedDesc=Använd en tredje typ av skatt (exklusive moms) +LocalTax2IsNotUsedDesc=Använd inte andra typer av skatt (exklusive moms) +LocalTax2Management=Tredje typen av skatt LocalTax2IsUsedExample= LocalTax2IsNotUsedExample= LocalTax1ManagementES= RE Förvaltning @@ -813,13 +814,13 @@ LocalTax2IsUsedDescES= RE räntesats som standard när du skapar framtidsutsikte LocalTax2IsNotUsedDescES= Som standard föreslås IRPF är 0. Slut på regeln. LocalTax2IsUsedExampleES= I Spanien, frilansare och oberoende yrkesutövare som tillhandahåller tjänster och företag som har valt skattesystemet i moduler. LocalTax2IsNotUsedExampleES= I Spanien de bussines inte omfattas av skattesystemet i moduler. -CalcLocaltax=Reports -CalcLocaltax1ES=Sales - Purchases -CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases -CalcLocaltax2ES=Purchases -CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases -CalcLocaltax3ES=Sales -CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +CalcLocaltax=Rapporter +CalcLocaltax1ES=Försäljning - Inköp +CalcLocaltax1Desc=Lokala skatter rapporter beräknas med skillnaden mellan localtaxes försäljning och localtaxes inköp +CalcLocaltax2ES=Inköp +CalcLocaltax2Desc=Lokala skatter rapporter är summan av localtaxes inköp +CalcLocaltax3ES=Försäljning +CalcLocaltax3Desc=Lokala skatter rapporter är summan av localtaxes försäljning LabelUsedByDefault=Etikett som används som standard om ingen översättning kan hittas för kod LabelOnDocuments=Etikett på dokument NbOfDays=Nb dagar @@ -844,7 +845,7 @@ PhpConf=Conf PhpWebLink=Webb-php länk Pear=Päron PearPackages=Päron paket -Browser=Browser +Browser=Webbläsare Server=Server Database=Databas DatabaseServer=Databas värd @@ -871,7 +872,7 @@ MenuCompanySetup=Företag / stiftelsen MenuNewUser=Ny användare MenuTopManager=Toppmenyn chef MenuLeftManager=Vänstermenyn chef -MenuManager=Menu manager +MenuManager=Menyhanteraren MenuSmartphoneManager=Smartphone menyhanteraren DefaultMenuTopManager=Toppmenyn chef DefaultMenuLeftManager=Vänstermenyn chef @@ -930,14 +931,14 @@ SetupDescription5=Andra menyalternativ hantera valfria parametrar. EventsSetup=Setup för händelser stockar LogEvents=Säkerhetsgranskning evenemang Audit=Revision -InfoDolibarr=Infos Dolibarr -InfoBrowser=Infos Browser -InfoOS=Infos OS -InfoWebServer=Infos web server -InfoDatabase=Infos database -InfoPHP=Infos PHP -InfoPerf=Infos performances -BrowserName=Browser name +InfoDolibarr=Information Dolibarr +InfoBrowser=Information Browser +InfoOS=Information om OS +InfoWebServer=Information om webbserver +InfoDatabase=Information om databasen +InfoPHP=Information om PHP +InfoPerf=Information om uppträdanden +BrowserName=Browser namn BrowserOS=Browser OS ListEvents=Revision evenemang ListOfSecurityEvents=Förteckning över Dolibarr säkerhetshändelser @@ -959,7 +960,7 @@ TriggerDisabledAsModuleDisabled=Triggers i denna fil är funktionshindrade modul TriggerAlwaysActive=Triggers i denna fil är alltid aktiva, oavsett är det aktiverade Dolibarr moduler. TriggerActiveAsModuleActive=Triggers i denna fil är verksamma som modul %s är aktiverat. GeneratedPasswordDesc=Ange här vilken regel du vill använda för att generera nytt lösenord om du begära att få automatiskt genererat lösenord -DictionaryDesc=Define here all reference datas. You can complete predefined value with yours. +DictionaryDesc=Här definierar du alla referens datas. Du kan komplettera fördefinierat värde med din. ConstDesc=Denna sida kan du redigera alla andra parametrar som inte fanns i tidigare sidor. De är reserverade parametrar för avancerade utvecklare eller troubleshouting. OnceSetupFinishedCreateUsers=Varning, du är en Dolibarr administratör. Administratör användare används för att ställa in Dolibarr. För en vanlig användning av Dolibarr, rekommenderas att använda en icke administratör skapas från Användare & Grupper menyn. MiscellaneousDesc=Ange här alla andra parametrar som rör säkerhet. @@ -981,7 +982,7 @@ BackupDesc2=* Spara innehållet i de dokument katalog (%s) som innehålle BackupDesc3=* Spara innehållet i din databas till en soptipp fil. för detta kan du använda följande assistent. BackupDescX=Arkiverade katalogen bör förvaras på ett säkert ställe. BackupDescY=Den genererade dumpfilen bör förvaras på ett säkert ställe. -BackupPHPWarning=Backup can't be guaranted with this method. Prefer previous one +BackupPHPWarning=Backup kan inte guaranted med denna metod. Föredrar tidigare ett RestoreDesc=Om du vill återställa en Dolibarr säkerhetskopia måste du: RestoreDesc2=* Återställ arkivfil (zip-fil till exempel) av handlingar katalog att extrahera träd av filer i dokument katalog med en ny Dolibarr anläggning eller i den här aktuella dokument directoy (%s). RestoreDesc3=* Återställ data från en säkerhetskopia dumpfil in i databasen av den nya Dolibarr installationen eller i databasen för den aktuella installationen. Varning när återställningen är klar måste du använda ett användarnamn / lösenord, som fanns när säkerhetskopian gjordes, att ansluta igen. Om du vill återställa en backup databas i den nuvarande installationen kan du följa denna assistent. @@ -995,9 +996,9 @@ YourPHPDoesNotHaveSSLSupport=SSL-funktioner inte är tillgängliga i din PHP DownloadMoreSkins=Mer skinn att ladda ner SimpleNumRefModelDesc=Returnera referensnummer format %syymm-nnnn där YY är år, mm månaden och nnnn är en sekvens utan hål och utan återställning ShowProfIdInAddress=Visa branschorganisationer id med adresser på dokument -ShowVATIntaInAddress=Hide VAT Intra num with addresses on documents +ShowVATIntaInAddress=Dölj moms Intra num med adresser på dokument TranslationUncomplete=Partiell översättning -SomeTranslationAreUncomplete=Some languages may be partially translated or may contains errors. If you detect some, you can fix language files registering to http://transifex.com/projects/p/dolibarr/. +SomeTranslationAreUncomplete=Vissa språk kan vara delvis översatt eller maj innehåller fel. Om du upptäcker några, kan du fixa språkfiler som registrerar till http://transifex.com/projects/p/dolibarr/ . MenuUseLayout=Gör vertikal meny hidable (tillval Javascript måste inte inaktiveras) MAIN_DISABLE_METEO=Inaktivera meteo vy TestLoginToAPI=Testa logga in API @@ -1010,18 +1011,18 @@ MAIN_PROXY_USER=Logga in för att använda proxyservern MAIN_PROXY_PASS=Lösenord för att använda proxyservern DefineHereComplementaryAttributes=Här definierar du alla atributes inte redan finns tillgänglig som standard, och att du vill bli stöd för %s. ExtraFields=Komplementära egenskaper -ExtraFieldsLines=Complementary attributes (lines) -ExtraFieldsThirdParties=Complementary attributes (thirdparty) -ExtraFieldsContacts=Complementary attributes (contact/address) -ExtraFieldsMember=Complementary attributes (member) -ExtraFieldsMemberType=Complementary attributes (member type) -ExtraFieldsCustomerOrders=Complementary attributes (orders) -ExtraFieldsCustomerInvoices=Complementary attributes (invoices) -ExtraFieldsSupplierOrders=Complementary attributes (orders) -ExtraFieldsSupplierInvoices=Complementary attributes (invoices) -ExtraFieldsProject=Complementary attributes (projects) -ExtraFieldsProjectTask=Complementary attributes (tasks) -ExtraFieldHasWrongValue=Attribute %s has a wrong value. +ExtraFieldsLines=Kompletterande attribut (rader) +ExtraFieldsThirdParties=Kompletterande attribut (tredjeparts) +ExtraFieldsContacts=Kompletterande attribut (kontaktperson / adress) +ExtraFieldsMember=Kompletterande attribut (medlem) +ExtraFieldsMemberType=Kompletterande attribut (ledamot typ) +ExtraFieldsCustomerOrders=Kompletterande attribut (beslut) +ExtraFieldsCustomerInvoices=Kompletterande attribut (fakturor) +ExtraFieldsSupplierOrders=Kompletterande attribut (beslut) +ExtraFieldsSupplierInvoices=Kompletterande attribut (fakturor) +ExtraFieldsProject=Kompletterande attribut (projekt) +ExtraFieldsProjectTask=Kompletterande attribut (arbetsuppgifter) +ExtraFieldHasWrongValue=Attribut% s har ett felaktigt värde. AlphaNumOnlyCharsAndNoSpace=endast alfanumeriska tecken utan mellanslag AlphaNumOnlyLowerCharsAndNoSpace=endast gemena alfanumeriska tecken utan mellanslag SendingMailSetup=Inställning av sändningarna via e-post @@ -1030,30 +1031,30 @@ PathToDocuments=Sökväg till handlingar PathDirectory=Directory SendmailOptionMayHurtBuggedMTA=Funktion för att skicka e-post med hjälp av metoden "PHP mail direkt" kommer att generera ett e-postmeddelande som kanske inte korrekt tolkas av vissa som får e-postservrar. Resultatet är att vissa post inte kan läsas av människor som tillhandahålls av thoose avlyssnat plattformar. Det är fallet för vissa Internetleverantörer (Ex: Orange i Frankrike). Detta är inte ett problem till Dolibarr heller i PHP, men på inkommande e-post server. Du kan dock lägga möjlighet MAIN_FIX_FOR_BUGGED_MTA till 1 i Setup - andra att ändra Dolibarr att undvika detta. Du kan dock uppleva problem med andra servrar som strikt respektera SMTP standard. Den andra lösningen (Rekomenderad) är att använda metoden "SMTP socket bibliotek" som inte har några nackdelar. TranslationSetup=Konfigurera översättning -TranslationDesc=Choice of language visible on screen can be modified:
* Globally from menu Home - Setup - Display
* For user only from tab User display of user card (click on login on top of screen). -TotalNumberOfActivatedModules=Total number of activated feature modules: %s +TranslationDesc=Val av språk visas på skärmen kan ändras:
* Globalt från menyn Hem - Inställningar - Display
* För användaren endast från fliken Användar visning av användarkort (klicka på inloggning på toppen av skärmen). +TotalNumberOfActivatedModules=Totalt antal aktiverade funktionsmoduler:% s YouMustEnableOneModule=Minst 1 modul måste aktiveras ClassNotFoundIntoPathWarning=Klass %s inte funnen i PHP-sökvägen YesInSummer=Ja, under sommaren -OnlyFollowingModulesAreOpenedToExternalUsers=Note, only following modules are opened to external users (whatever are permission of such users): -SuhosinSessionEncrypt=Session storage encrypted by Suhosin -ConditionIsCurrently=Condition is currently %s -TestNotPossibleWithCurrentBrowsers=Automatic detection not possible -YouUseBestDriver=You use driver %s that is best driver available currently. -YouDoNotUseBestDriver=You use drive %s but driver %s is recommended. -NbOfProductIsLowerThanNoPb=You have only %s products/services into database. This does not required any particular optimization. -SearchOptim=Search optimization -YouHaveXProductUseSearchOptim=You have %s product into database. You should add the constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 into Home-Setup-Other, you limit the search to the beginning of strings making possible for database to use index and you should get an immediate response. -BrowserIsOK=You are using the web browser %s. This browser is ok for security and performance. -BrowserIsKO=You are using the web browser %s. This browser is known to be a bad choice for security, performance and reliability. We recommand you to use Firefox, Chrome, Opera or Safari. -XDebugInstalled=XDebug is loaded. -XCacheInstalled=XCache is loaded. -AddRefInList=Display customer/supplier ref into list (select list or combobox) and most of hyperlink -FieldEdition=Edition of field %s -FixTZ=TimeZone fix -FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) -GetBarCode=Get barcode -EmptyNumRefModelDesc=The code is free. This code can be modified at any time. +OnlyFollowingModulesAreOpenedToExternalUsers=Obs, endast följande moduler öppnas för externa användare (oavsett är tillstånd från sådana användare): +SuhosinSessionEncrypt=Session lagring krypteras av Suhosin +ConditionIsCurrently=Condition är för närvarande% s +TestNotPossibleWithCurrentBrowsers=Automatisk identifiering inte är möjlig +YouUseBestDriver=Du använder drivrutinen %s som är bäst drivrutin tillgänglig för tillfället. +YouDoNotUseBestDriver=Du använder enhet %s men förar %s rekommenderas. +NbOfProductIsLowerThanNoPb=Du har bara %s produkter / tjänster i databasen. Detta innebär inte behövs någon särskild optimering. +SearchOptim=Sökoptimering +YouHaveXProductUseSearchOptim=Du har %s produkter i databasen. Du bör lägga den ständiga PRODUCT_DONOTSEARCH_ANYWHERE till 1 till Home-Setup-Övrigt begränsar du sökningen till början av strängar som gör möjligt för databasen att använda index och du bör få ett omedelbart svar. +BrowserIsOK=Du använder webbläsaren %s. Denna webbläsare är ok för säkerhet och prestanda. +BrowserIsKO=Du använder webbläsaren %s. Denna webbläsare är känt för att vara ett dåligt val för säkerhet, prestanda och tillförlitlighet. Vi rekommendera att du använder Firefox, Chrome, Opera eller Safari. +XDebugInstalled=Xdebug är laddad. +XCacheInstalled=Xcache är laddad. +AddRefInList=Display kund / leverantörs ref i listan (välj lista eller kombinationsrutan) och de flesta av hyperlänk +FieldEdition=Edition av fält %s +FixTZ=Timezone fix +FillThisOnlyIfRequired=Exempel: +2 (fyll endast om tidszon offset problem är erfarna) +GetBarCode=Få streckkod +EmptyNumRefModelDesc=Koden är fri. Koden kan ändras när som helst. ##### Module password generation PasswordGenerationStandard=Återgå ett lösenord som genererats enligt interna Dolibarr algoritm: 8 tecken som innehåller delade siffror och tecken med gemener. PasswordGenerationNone=Tyder inte på någon genererade lösenord. Lösenord måste skriva in manuellt. @@ -1074,11 +1075,11 @@ ModuleCompanyCodeAquarium=Avkastningen en bokföring kod byggd med %s följt av ModuleCompanyCodePanicum=Avkastningen en tom bokföring kod. ModuleCompanyCodeDigitaria=Bokföring kod beror på tredje part kod. Koden består av tecknet "C" i den första positionen och därefter det första fem bokstäver av tredje part koden. UseNotifications=Använd anmälningar -NotificationsDesc=E-post meddelanden funktionen kan du tyst skicka automatiska e-post, för vissa Dolibarr evenemang, till tredje man (kunder eller leverantörer) som är konfigurerade för. Val av aktiva anmälan och mål kontakter görs en tredje part i taget. +NotificationsDesc=E-post meddelanden funktionen kan du tyst skicka automatiska e-post, för vissa Dolibarr händelser. Mål av anmälningar kan definieras:
* Per tredje parter kontakter (kunder eller leverantörer), en tredje part vid tidpunkten.
* Eller genom att sätta ett globalt mål e-postadress på modulens inställningssida. ModelModules=Dokument mallar -DocumentModelOdt=Generate documents from OpenDocuments templates (.ODT or .ODS files for OpenOffice, KOffice, TextEdit,...) +DocumentModelOdt=Generera dokument från OpenDocuments mallar (.odt eller .ods filer för Openoffice, KOffice, Textedit, ...) WatermarkOnDraft=Vattenstämpel utkast -JSOnPaimentBill=Activate feature to autofill payment lines on payment form +JSOnPaimentBill=Aktivera funktionen för att fylla automatiskt betalningslinjer på inbetalningskort CompanyIdProfChecker=Professionell Id unik MustBeUnique=Måste vara unikt? MustBeMandatory=Obligatoriskt att skapa tredje part? @@ -1096,7 +1097,7 @@ WebCalServer=Server-hosting kalender databas WebCalDatabaseName=Databas namn WebCalUser=Användaren tillgång till databasen WebCalSetupSaved=WebCalendar setup sparats. -WebCalTestOk=Connection to server '%s' on database '%s' with user '%s' successful. +WebCalTestOk=Anslutning till servern "% s" på databasen "% s" med användare "% s framgångsrika. WebCalTestKo1=Anslutning till servern "%s" lyckas, men databas %s "kunde inte nås. WebCalTestKo2=Anslutning till servern "%s" med användare "%s" misslyckades. WebCalErrorConnectOkButWrongDatabase=Anslutning lyckats men databasen inte ser ut att vara en WebCalendar databas. @@ -1142,10 +1143,11 @@ WatermarkOnDraftProposal=Vattenstämpel på utkast till affärsförslag (ingen o OrdersSetup=Beställ ledning setup OrdersNumberingModules=Beställningar numrering moduler OrdersModelModule=Beställ dokument modeller -HideTreadedOrders=Hide the treated or cancelled orders in the list +HideTreadedOrders=Dölja de behandlade eller annullerade order i listan ValidOrderAfterPropalClosed=Att godkänna beställningen efter förslaget närmare, gör det möjligt att inte steg av den provisoriska ordning FreeLegalTextOnOrders=Fri text på order WatermarkOnDraftOrders=Vattenstämpel på utkast till beställningar (ingen om tom) +ShippableOrderIconInList=Lägg en ikon i Order lista som anger om beställningen är shippable ##### Clicktodial ##### ClickToDialSetup=Klicka för att Dial modul setup ClickToDialUrlDesc=Url anropas när ett klick på telefon picto görs. I URL kan du använda taggar
__PHONETO__ Som kommer att ersättas med telefonnumret för personen att ringa
__PHONEFROM__ Som ska ersättas med telefonnummer att ringa person (er)
__LOGIN__ Som ska ersättas med clicktodial inloggning (definierad på ditt användarnamn kort)
__PASS__ Som ska ersättas med ditt clicktodial lösenord (definierad på ditt användarnamn kort). @@ -1160,9 +1162,9 @@ WatermarkOnDraftInterventionCards=Vattenstämpel på åtgärdskort dokument (ing ##### Contracts ##### ContractsSetup=Kontrakt modul konfiguration ContractsNumberingModules=Kontrakt numrering moduler -TemplatePDFContracts=Contracts documents models -FreeLegalTextOnContracts=Free text on contracts -WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) +TemplatePDFContracts=Contract documents modeller +FreeLegalTextOnContracts=Fritext om avtal +WatermarkOnDraftContractCards=Vattenstämpel på kontraktsförslag (inget om de är tomma) ##### Members ##### MembersSetup=Medlemmar modul setup MemberMainOptions=Huvudalternativ @@ -1231,15 +1233,15 @@ LDAPTestSynchroContact=Test kontakts synkronisering LDAPTestSynchroUser=Test användarens synkronisering LDAPTestSynchroGroup=Test gruppens synkronisering LDAPTestSynchroMember=Test medlemmens synkronisering -LDAPTestSearch= Test a LDAP search +LDAPTestSearch= Testa en LDAP-sökning LDAPSynchroOK=Synkronisering test framgångsrika LDAPSynchroKO=Misslyckades synkronisering test LDAPSynchroKOMayBePermissions=Misslyckades synkronisering test. Kontrollera att connexion att servern är korrekt konfigurerad och tillåter LDAP udpates LDAPTCPConnectOK=TCP ansluta till LDAP-servern framgångsrika (Server = %s, Port = %s) LDAPTCPConnectKO=TCP ansluta till LDAP-servern misslyckades (Server = %s, Port = %s) -LDAPBindOK=Connect/Authentificate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindOK=Anslut / Authentificate till LDAP-servern framgångsrik (Server =%s, Port =%s, Admin =%s, Lösenord = %s) LDAPBindKO=Anslut / Authentificate till LDAP-servern misslyckades (Server = %s, Port = %s, Admin = %s, Lösenord = %s) -LDAPUnbindSuccessfull=Disconnect successful +LDAPUnbindSuccessfull=Koppla framgångsrik LDAPUnbindFailed=Koppla misslyckades LDAPConnectToDNSuccessfull=Anslutning au DN (%s) ri ¿½ ussie LDAPConnectToDNFailed=Anslutning au DN (%s) ï ¿½ chouï ¿½ e @@ -1295,8 +1297,8 @@ LDAPFieldSid=SID LDAPFieldSidExample=Exempel: objectsid LDAPFieldEndLastSubscription=Datum för teckning slut LDAPFieldTitle=Post / Funktion -LDAPFieldTitleExample=Example: title -LDAPParametersAreStillHardCoded=LDAP parameters are still hardcoded (in contact class) +LDAPFieldTitleExample=Exempel: titel +LDAPParametersAreStillHardCoded=LDAP parametrar fortfarande hårdkodad (i kontakt klass) LDAPSetupNotComplete=LDAP setup komplett inte (gå på andra flikar) LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Ingen administratör eller lösenord anges. LDAP tillgång kommer att bli anonym och i skrivskyddat läge. LDAPDescContact=På denna sida kan du ange LDAP-attribut namn i LDAP träd för varje data finns på Dolibarr kontakter. @@ -1305,24 +1307,24 @@ LDAPDescGroups=På denna sida kan du ange LDAP-attribut namn i LDAP träd för v LDAPDescMembers=På denna sida kan du ange LDAP-attribut namn i LDAP träd för varje data finns på Dolibarr medlemmar modul. LDAPDescValues=Exempel på värden är avsedda för OpenLDAP med följande laddade scheman: core.schema, cosine.schema, inetorgperson.schema). Om du använder thoose värderingar och OpenLDAP, ändra LDAP-fil slapd.conf config att ha alla thoose scheman laddad. ForANonAnonymousAccess=För en bestyrkt tillbehör (för en skrivåtkomst till exempel) -PerfDolibarr=Performance setup/optimizing report -YouMayFindPerfAdviceHere=You will find on this page some checks or advices related to performance. -NotInstalled=Not installed, so your server is not slow down by this. -ApplicativeCache=Applicative cache -MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.
More information here http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
Note that a lot of web hosting provider does not provide such cache server. -MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete. -MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. -OPCodeCache=OPCode cache -NoOPCodeCacheFound=No OPCode cache found. May be you use another OPCode cache than XCache or eAccelerator (good), may be you don't have OPCode cache (very bad). -HTTPCacheStaticResources=HTTP cache for static resources (css, img, javascript) -FilesOfTypeCached=Files of type %s are cached by HTTP server -FilesOfTypeNotCached=Files of type %s are not cached by HTTP server -FilesOfTypeCompressed=Files of type %s are compressed by HTTP server -FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server -CacheByServer=Cache by server -CacheByClient=Cache by browser -CompressionOfResources=Compression of HTTP responses -TestNotPossibleWithCurrentBrowsers=Automatic detection not possible +PerfDolibarr=Prestanda inställningar / optimering rapport +YouMayFindPerfAdviceHere=Du kommer att hitta på den här sidan vissa kontroller eller råd relaterade till prestanda. +NotInstalled=Inte installerat, så din server inte sakta ner av detta. +ApplicativeCache=Applikativ cache +MemcachedNotAvailable=Ingen applikativ cache hittades. Du kan förbättra prestanda genom att installera en cache-server Memcached och en modul kunna använda denna cache-server.
Mer information här http://wiki.dolibarr.org/index.php/Module_MemCached_EN .
Observera att en hel del webbhotell leverantör inte lämnar sådana cache-server. +MemcachedModuleAvailableButNotSetup=Modul memcached för applikativ cache hittades men installationen av modulen är inte fullständig. +MemcachedAvailableAndSetup=Modul memcached tillägnad använda memcached server är aktiverad. +OPCodeCache=OPCODE cache +NoOPCodeCacheFound=Ingen opkod cache hittades. Får du använda en annan opcode cache än xcache eller eAccelerator (bra), kanske du inte har opkod cache (mycket dåligt). +HTTPCacheStaticResources=HTTP-cache för statiska resurser (css, img, javascript) +FilesOfTypeCached=Filer av typen %s cachelagras av HTTP-server +FilesOfTypeNotCached=Filer av typen %s är inte cachas av HTTP-server +FilesOfTypeCompressed=Filer av typen %s komprimeras med HTTP-server +FilesOfTypeNotCompressed=Filer av typen %s är inte komprimerade av HTTP-server +CacheByServer=Cache med server +CacheByClient=Cache med browser +CompressionOfResources=Komprimering av HTTP-svar +TestNotPossibleWithCurrentBrowsers=Automatisk identifiering inte är möjlig ##### Products ##### ProductSetup=Produkter modul setup ServiceSetup=Tjänster modul konfiguration @@ -1332,13 +1334,13 @@ ConfirmDeleteProductLineAbility=Bekräftelse vid borttagning produktserier i for ModifyProductDescAbility=Anpassning av produktbeskrivning i former ViewProductDescInFormAbility=Visualisering av produktbeskrivning i formulären (i övrigt enligt popup tooltip) ViewProductDescInThirdpartyLanguageAbility=Visualisering av produktbeskrivningar på tredjeparts språket -UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectProduct=Use a search form to choose a product (rather than a drop-down list). +UseSearchToSelectProductTooltip=Även om du har ett stort antal produkter (> 100 000), kan du öka hastigheten genom att sätta konstant PRODUCT_DONOTSEARCH_ANYWHERE till 1 i Setup-> Övrigt. Sökningen kommer då att begränsas till start av strängen. +UseSearchToSelectProduct=Använd ett sökformuläret för att välja en produkt (i stället för en listruta). UseEcoTaxeAbility=Stöd Eco-Taxe (WEEE) SetDefaultBarcodeTypeProducts=Standard streckkod som ska användas för produkter SetDefaultBarcodeTypeThirdParties=Standard streckkod som ska användas för tredje part -ProductCodeChecker= Module for product code generation and checking (product or service) -ProductOtherConf= Product / Service configuration +ProductCodeChecker= Modul för produkt kodgenerering och kontroll (produkt eller tjänst) +ProductOtherConf= Produkt / tjänst konfiguration ##### Syslog ##### SyslogSetup=Syslog-modul setup SyslogOutput=Logga utgång @@ -1349,7 +1351,7 @@ SyslogSimpleFile=Arkiv SyslogFilename=Filnamn och sökväg YouCanUseDOL_DATA_ROOT=Du kan använda DOL_DATA_ROOT / dolibarr.log för en loggfil i Dolibarr "dokument" katalogen. Du kan ställa in en annan väg för att lagra den här filen. ErrorUnknownSyslogConstant=Konstant %s är inte en känd syslog konstant -OnlyWindowsLOG_USER=Windows only supports LOG_USER +OnlyWindowsLOG_USER=Endast Windows stöder LOG_USER ##### Donations ##### DonationsSetup=Donation modul setup DonationsReceiptModel=Mall för donation kvitto @@ -1368,23 +1370,24 @@ BarcodeDescISBN=Barcode av typ ISBN BarcodeDescC39=Streckkod av typen C39 BarcodeDescC128=Barcode av typ C128 GenbarcodeLocation=Bar kodgenerering kommandoradsverktyg (som används av phpbarcode motor för vissa typer streckkod) -BarcodeInternalEngine=Internal engine -BarCodeNumberManager=Manager to auto define barcode numbers +BarcodeInternalEngine=Intern motor +BarCodeNumberManager=Manager för att automatiskt definiera streckkodsnummer ##### Prelevements ##### WithdrawalsSetup=Återkallelse modul setup ##### ExternalRSS ##### ExternalRSSSetup=Externa RSS import setup NewRSS=Nytt RSS-flöde RSSUrl=RSS URL -RSSUrlExample=An interesting RSS feed +RSSUrlExample=En intressant RSS-flöde ##### Mailing ##### MailingSetup=E-post modul setup MailingEMailFrom=Avsändare Epost (från) för e-post skickas via e-post modul MailingEMailError=Retur-e (fel-till) för e-post med fel ##### Notification ##### -NotificationSetup=Anmälan bu e-modul setup +NotificationSetup=EMail modul anmälan inställnings NotificationEMailFrom=Avsändare Epost (från) för e-post som skickas till anmälningar -ListOfAvailableNotifications=Lista över tillgängliga anmälningar (Denna listan beror på aktiverade moduler) +ListOfAvailableNotifications=Förteckning över händelser som du kan ställa in en anmälan om, för varje tredjeparts (gå in tredjeparts kort att installera) eller genom att ange en fast e-post (Lista beror på aktiverade moduler) +FixedEmailTarget=Fast e målet ##### Sendings ##### SendingsSetup=Sända modul setup SendingsReceiptModel=Att skicka kvitto modell @@ -1404,8 +1407,8 @@ FCKeditorForCompany=WYSIWYG skapande / upplaga av Companie beskrivning och noter FCKeditorForProduct=WYSIWYG skapande / upplaga av produkter / tjänster: s beskrivning och anteckning FCKeditorForProductDetails=WYSIWYG skapande / utgåva av produkter detaljer linjer för alla enheter (förslag, order, fakturor, etc. ..). Varning: Använd detta alternativ för det här fallet är allvarligt inte rekommenderat eftersom det kan skapa problem med specialtecken och sida formationen för att bygga PDF filer. FCKeditorForMailing= WYSIWYG skapande / utgåva av försändelser -FCKeditorForUserSignature=WYSIWIG creation/edition of user signature -FCKeditorForMail=WYSIWIG creation/edition for all mail (except Outils->eMailing) +FCKeditorForUserSignature=WYSIWYG skapande / upplaga av signatur +FCKeditorForMail=WYSIWYG skapande / utgåva för alla mail (utom Outils-> mejla) ##### OSCommerce 1 ##### OSCommerceErrorConnectOkButWrongDatabase=Anslutning lyckats men databasen ser inte ut att vara en OSCommerce databas (Key %s som inte finns i tabellen %s). OSCommerceTestOk=Anslutning till servern "%s" på databas %s "med användare" %s framgångsrika. @@ -1448,11 +1451,11 @@ ConfirmDeleteLine=Är du säker på att du vill ta bort denna linje? ##### Tax ##### TaxSetup=Skatter, sociala avgifter och utdelningar modul setup OptionVatMode=Mervärdesskatt -OptionVATDefault=Cash basis -OptionVATDebitOption=Accrual basis +OptionVATDefault=Kontantmetoden +OptionVATDebitOption=Periodiseringsprincipen OptionVatDefaultDesc=Mervärdesskatt skall betalas:
- Om leverans / betalning för varor
- Bestämmelser om betalningar för tjänster OptionVatDebitOptionDesc=Mervärdesskatt skall betalas:
- Om leverans / betalning för varor
- På fakturan (debet) för tjänster -SummaryOfVatExigibilityUsedByDefault=Time of VAT exigibility by default according to chosen option: +SummaryOfVatExigibilityUsedByDefault=Tid för moms exigibility standard enligt vald alternativ: OnDelivery=Vid leverans OnPayment=Mot betalning OnInvoice=På faktura @@ -1463,16 +1466,16 @@ Sell=Sälj InvoiceDateUsed=Fakturadatum används YourCompanyDoesNotUseVAT=Ditt företag har definierats att inte använda moms (Hem - Setup - Företaget / Foundation), så det finns ingen mervärdesskatt alternativ för installationen. AccountancyCode=Bokföring kod -AccountancyCodeSell=Sale account. code -AccountancyCodeBuy=Purchase account. code +AccountancyCodeSell=Försäljning konto. kod +AccountancyCodeBuy=Köpa konto. kod ##### Agenda ##### AgendaSetup=Åtgärder och dagordning modul setup PasswordTogetVCalExport=Viktiga att tillåta export länk PastDelayVCalExport=Inte exporterar fall äldre än -AGENDA_USE_EVENT_TYPE=Use events types (managed into menu Setup -> Dictionary -> Type of agenda events) -AGENDA_DEFAULT_FILTER_TYPE=Set automatically this type of event into search filter of agenda view -AGENDA_DEFAULT_FILTER_STATUS=Set automatically this status for events into search filter of agenda view -AGENDA_DEFAULT_VIEW=Which tab do you want to open by default when selecting menu Agenda +AGENDA_USE_EVENT_TYPE=Använd händelser typer (hanteras i inställningsmenyn -> ordlista -> Typ av dagordningen händelser) +AGENDA_DEFAULT_FILTER_TYPE=Ställs in automatiskt denna typ av händelse till sökfilter av dagordning view +AGENDA_DEFAULT_FILTER_STATUS=Ställs in automatiskt denna status för evenemang till sökfilter av dagordning view +AGENDA_DEFAULT_VIEW=Vilken flik vill du öppna som standard vid val av meny Agenda ##### ClickToDial ##### ClickToDialDesc=Denna modul gör det möjligt att lägga till en ikon efter telefonnummer. Ett klick på denna ikon för att kalla en server med en viss webbadress du anger nedan. Detta kan användas för att ringa ett system call center från Dolibarr som kan ringa upp telefonnumret på en SIP-system till exempel. ##### Point Of Sales (CashDesk) ##### @@ -1506,10 +1509,10 @@ MultiCompanySetup=Multi-bolag modul setup SuppliersSetup=Leverantör modul setup SuppliersCommandModel=Fullständig mall av leverantör för (logo. ..) SuppliersInvoiceModel=Komplett mall leverantörsfaktura (logo. ..) -SuppliersInvoiceNumberingModel=Supplier invoices numbering models +SuppliersInvoiceNumberingModel=Leverantörsfakturor numrerings modeller ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind modul setup -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat +PathToGeoIPMaxmindCountryDataFile=Sökväg till fil innehåller MaxMind ip till land översättning.
Exempel:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat NoteOnPathLocation=Observera att ditt ip till land datafil måste vara inne i en katalog din PHP kan läsa (Kolla din PHP open_basedir inställningar och behörigheter filsystem). YouCanDownloadFreeDatFileTo=Du kan ladda ner en gratis demoversion av Maxmind GeoIP landet filen på %s. YouCanDownloadAdvancedDatFileTo=Du kan också ladda ner en mer komplett version, med uppdateringar av de Maxmind GeoIP landet filen på %s. @@ -1518,23 +1521,24 @@ TestGeoIPResult=Test av en omvandling IP -> land ProjectsNumberingModules=Projekt numrering modul ProjectsSetup=Projekt modul setup ProjectsModelModule=S rapport dokument modell -TasksNumberingModules=Tasks numbering module -TaskModelModule=Tasks reports document model +TasksNumberingModules=Uppgifter nummermodulen +TaskModelModule=Uppgifter rapporter dokumentmodell ##### ECM (GED) ##### ECMSetup = GED Setup -ECMAutoTree = Automatic tree folder and document +ECMAutoTree = Automatisk träd mapp och dokument ##### Fiscal Year ##### -FiscalYears=Fiscal years -FiscalYear=Fiscal year -FiscalYearCard=Fiscal year card -NewFiscalYear=New fiscal year -EditFiscalYear=Edit fiscal year -OpenFiscalYear=Open fiscal year -CloseFiscalYear=Close fiscal year -DeleteFiscalYear=Delete fiscal year -ConfirmDeleteFiscalYear=Are you sure to delete this fiscal year ? -Opened=Opened -Closed=Closed +FiscalYears=Räkenskapsår +FiscalYear=Räkenskapsåret +FiscalYearCard=Räkenskapsår kort +NewFiscalYear=Nytt räkenskapsår +EditFiscalYear=Redigera räkenskapsår +OpenFiscalYear=Öppet räkenskapsår +CloseFiscalYear=Close räkenskapsår +DeleteFiscalYear=Radera räkenskapsår +ConfirmDeleteFiscalYear=Är du säker på att du vill ta bort detta verksamhetsår? +Opened=Öppnad +Closed=Stängt +AlwaysEditable=Kan alltid redigeras Format=Format -TypePaymentDesc=0:Customer payment type, 1:Supplier payment type, 2:Both customers and suppliers payment type +TypePaymentDesc=0: Kundbetalning typ, 1: Leverantörsbetalnings typ, 2: Både kunder och leverantörer betalnings typ diff --git a/htdocs/langs/sv_SE/agenda.lang b/htdocs/langs/sv_SE/agenda.lang index 131080c5c8f..0051929cd9d 100644 --- a/htdocs/langs/sv_SE/agenda.lang +++ b/htdocs/langs/sv_SE/agenda.lang @@ -1,18 +1,18 @@ # Dolibarr language file - Source file is en_US - agenda -IdAgenda=ID event +IdAgenda=ID händelse Actions=Åtgärder ActionsArea=Åtgärder område (händelser och uppgifter) Agenda=Agenda Agendas=Dagordningar Calendar=Kalender Calendars=Kalendrar -LocalAgenda=Internal calendar -ActionsOwnedBy=Event owned by +LocalAgenda=Intern kalender +ActionsOwnedBy=Händelse som ägs av AffectedTo=Påverkas i DoneBy=Utfärdat av -Event=Event +Event=Händelse Events=Evenemang -EventsNb=Number of events +EventsNb=Antal händelser MyEvents=Mina aktiviteter OtherEvents=Övriga händelser ListOfActions=Lista över evenemang @@ -23,12 +23,12 @@ MenuToDoActions=Alla ofullständiga handlingar MenuDoneActions=Alla avslutade åtgärder MenuToDoMyActions=Min ofullständiga handlingar MenuDoneMyActions=Min avslutas åtgärder -ListOfEvents=List of events (internal calendar) +ListOfEvents=Förteckning över händelser (intern kalender) ActionsAskedBy=Åtgärder som registrerats av ActionsToDoBy=Åtgärder påverkas ActionsDoneBy=Åtgärder som utförs av -ActionsForUser=Events for user -ActionsForUsersGroup=Events for all users of group +ActionsForUser=Händelser för användaren +ActionsForUsersGroup=Händelser för alla användare av grupp AllMyActions= Alla mina handlingar och uppgifter AllActions= Alla åtgärder / uppgifter ViewList=Visa lista @@ -45,10 +45,10 @@ ActionsEvents= Händelser som Dolibarr kommer att skapa en talan i agenda automa PropalValidatedInDolibarr= Förslag %s validerade InvoiceValidatedInDolibarr= Faktura %s validerade InvoiceBackToDraftInDolibarr=Faktura %s gå tillbaka till förslaget status -InvoiceDeleteDolibarr=Invoice %s deleted +InvoiceDeleteDolibarr=Faktura %s raderas OrderValidatedInDolibarr= Beställ %s validerade OrderApprovedInDolibarr=Ordningens %s godkänd -OrderRefusedInDolibarr=Order %s refused +OrderRefusedInDolibarr=Order %s vägrade OrderBackToDraftInDolibarr=Beställ %s gå tillbaka till förslaget status OrderCanceledInDolibarr=Beställ %s avbryts InterventionValidatedInDolibarr=Intervention %s validerade @@ -58,9 +58,9 @@ InvoiceSentByEMail=Kundfaktura %s via e-post SupplierOrderSentByEMail=Leverantör beställa %s via e-post SupplierInvoiceSentByEMail=Leverantörsfaktura %s via e-post ShippingSentByEMail=Frakt %s via e-post -ShippingValidated= Shipping %s validated +ShippingValidated= Frakt %s validerade InterventionSentByEMail=Intervention %s via e-post -InterventionClassifiedBilled=Intervention %s classified as Billed +InterventionClassifiedBilled=Intervention %s sekretessbelagda som fakturerad NewCompanyToDolibarr= Tredje part har skapats DateActionPlannedStart= Planerat startdatum DateActionPlannedEnd= Planerat slutdatum @@ -70,24 +70,24 @@ DateActionStart= Startdatum DateActionEnd= Slutdatum AgendaUrlOptions1=Du kan också lägga till följande parametrar för att filtrera utgång: AgendaUrlOptions2=login = %s att begränsa produktionen till åtgärder inrättade av, påverkas eller göras av användaren %s. -AgendaUrlOptions3=logina = %s att begränsa produktionen till åtgärder som skapats av användaren %s. +AgendaUrlOptions3=Logina =%s ​​att begränsa produktionen till åtgärder som ägs av en användare%s. AgendaUrlOptions4=logint = %s att begränsa produktionen till handlande påverkade användarnas %s. -AgendaUrlOptions5=logind = %s att begränsa produktionen till åtgärder som utförts av användaren %s. +AgendaUrlOptionsProject=projekt = PROJECT_ID att begränsa produktionen till åtgärder i samband med projektet PROJECT_ID. AgendaShowBirthdayEvents=Visa födelsedag kontakter AgendaHideBirthdayEvents=Dölj födelsedag kontakter -Busy=Busy -ExportDataset_event1=List of agenda events -DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) -DefaultWorkingHours=Default working hours in day (Example: 9-18) +Busy=Upptagen +ExportDataset_event1=Lista över dagordningen händelser +DefaultWorkingDays=Standard arbetsdagar varierar i veckan (exempel: 1-5, 1-6) +DefaultWorkingHours=Standard arbetstiden i dag (exempel: 9-18) # External Sites ical ExportCal=Export kalender ExtSites=Importera externa kalendrar -ExtSitesEnableThisTool=Show external calendars (defined into global setup) into agenda. Does not affect external calendars defined by users. +ExtSitesEnableThisTool=Visa externa kalendrar (definierade i globala inställningar) i dagordningen. Påverkar inte externa kalendrar definierat av användare. ExtSitesNbOfAgenda=Antal kalendrar AgendaExtNb=Kalender nb %s ExtSiteUrlAgenda=URL att komma åt. Ical-fil ExtSiteNoLabel=Ingen beskrivning -WorkingTimeRange=Working time range -WorkingDaysRange=Working days range -AddEvent=Add event -MyAvailability=My availability +WorkingTimeRange=Arbetstid intervall +WorkingDaysRange=Arbetsdagar sträcker +AddEvent=Skapa event +MyAvailability=Min tillgänglighet diff --git a/htdocs/langs/sv_SE/banks.lang b/htdocs/langs/sv_SE/banks.lang index e738ac615a3..34167669685 100644 --- a/htdocs/langs/sv_SE/banks.lang +++ b/htdocs/langs/sv_SE/banks.lang @@ -19,8 +19,8 @@ SavingAccount=Sparkonto SavingAccounts=Sparkonton ErrorBankLabelAlreadyExists=Finansiell balans etikett finns redan BankBalance=Balans -BankBalanceBefore=Balance before -BankBalanceAfter=Balance after +BankBalanceBefore=Balans innan +BankBalanceAfter=Balans efter BalanceMinimalAllowed=Minsta tillåtna balans BalanceMinimalDesired=Lägsta önskvärd balans InitialBankBalance=Initial jämvikt @@ -28,7 +28,7 @@ EndBankBalance=Avsluta balans CurrentBalance=Aktuellt saldo FutureBalance=Framtida balans ShowAllTimeBalance=Visa balans från start -AllTime=From start +AllTime=Från början Reconciliation=Avstämning RIB=Bankkontonummer IBAN=IBAN-nummer @@ -105,7 +105,7 @@ ConciliatedBy=Förenas med DateConciliating=Reconcile datum BankLineConciliated=Transaktion förenas CustomerInvoicePayment=Kundbetalning -CustomerInvoicePaymentBack=Customer payment back +CustomerInvoicePaymentBack=Kund betalning tillbaka SupplierInvoicePayment=Leverantör betalning WithdrawalPayment=Tillbakadragande betalning SocialContributionPayment=Sociala avgifter betalas @@ -133,14 +133,14 @@ CashBudget=Cash budget PlannedTransactions=Planerade transaktioner Graph=Grafiken ExportDataset_banque_1=Bank transaktioner och kontoutdrag -ExportDataset_banque_2=Deposit slip +ExportDataset_banque_2=Insättningsblankett TransactionOnTheOtherAccount=Transaktionen på det andra kontot TransactionWithOtherAccount=Kontoöverföring PaymentNumberUpdateSucceeded=Betalning nummer uppdaterats PaymentNumberUpdateFailed=Betalningsnummer kunde inte uppdateras PaymentDateUpdateSucceeded=Betalningsdag uppdatera framgångsrikt PaymentDateUpdateFailed=Betalningsdagen kunde inte uppdateras -Transactions=Transactions +Transactions=Transaktioner BankTransactionLine=Bank transaktion AllAccounts=Alla bank / Likvida medel BackToAccount=Tillbaka till konto @@ -149,12 +149,12 @@ FutureTransaction=Transaktioner i Futur. Inget sätt att blidka. SelectChequeTransactionAndGenerate=Välj / Filtret kontrollerar att inkludera i kontrollen insättning kvittot och klicka på "Skapa". InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value (such as, YYYYMM) EventualyAddCategory=Eventually, specify a category in which to classify the records -ToConciliate=To conciliate? +ToConciliate=För att förena? ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click -BankDashboard=Bank accounts summary -DefaultRIB=Default BAN -AllRIB=All BAN -LabelRIB=BAN Label -NoBANRecord=No BAN record -DeleteARib=Delete BAN record -ConfirmDeleteRib=Are you sure you want to delete this BAN record ? +BankDashboard=Bankkonton sammandrag +DefaultRIB=Standard BAN +AllRIB=Alla BAN +LabelRIB=BAN etikett +NoBANRecord=Inget BAN rad +DeleteARib=Radera BAN rad +ConfirmDeleteRib=Är du säker på att du vill ta bort denna BAN rad? diff --git a/htdocs/langs/sv_SE/bills.lang b/htdocs/langs/sv_SE/bills.lang index 92d9bde0b02..b90a2d0faa2 100644 --- a/htdocs/langs/sv_SE/bills.lang +++ b/htdocs/langs/sv_SE/bills.lang @@ -23,13 +23,13 @@ InvoiceProFormaAsk=Proforma faktura InvoiceProFormaDesc=Proforma faktura är en bild av en sann faktura men har ingen bokföring värde. InvoiceReplacement=Ersättning faktura InvoiceReplacementAsk=Ersättning faktura för faktura -InvoiceReplacementDesc=Replacement invoice is used to cancel and replace completely an invoice with no payment already received.

Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'. +InvoiceReplacementDesc= Ersättning faktura används för att avbryta och byta helt en faktura utan betalningar.

Anmärkning: Endast fakturor utan betalningar kan bytas ut. Om fakturan du ersätter är ännu inte avslutat, kommer den automatiskt att stängas av "övergivna". InvoiceAvoir=Kreditnota InvoiceAvoirAsk=Kreditnota att korrigera fakturan InvoiceAvoirDesc=Den kreditnota är en negativ faktura används för att lösa det faktum att en faktura har ett värde som skiljer än beloppet verkligen betalat (eftersom kunden betalat för mycket av misstag, eller kommer inte betalas helt sedan han återvände vissa produkter till exempel). invoiceAvoirWithLines=Skapa kreditnota med innehållet i originalfakturan -invoiceAvoirWithPaymentRestAmount=Create Credit Note with the amount of origin invoice payment's lake -invoiceAvoirLineWithPaymentRestAmount=Credit Note amount of invoice payment's lake +invoiceAvoirWithPaymentRestAmount=Skapa kreditnota med återstående obetald faktura ursprung +invoiceAvoirLineWithPaymentRestAmount=Kredit notering för återstående obetalda beloppet ReplaceInvoice=Byt faktura %s ReplacementInvoice=Ersättning faktura ReplacedByInvoice=Ersatt av faktura %s @@ -73,21 +73,21 @@ PaymentsReports=Betalningar rapporter PaymentsAlreadyDone=Betalningar redan gjort PaymentsBackAlreadyDone=Återbetalningar är utförda tidigare PaymentRule=Betalningsregel -PaymentMode=Betalning typ +PaymentMode=Betalningssätt PaymentConditions=Betalningsvillkor PaymentConditionsShort=Betalningsvillkor PaymentAmount=Betalningsbelopp ValidatePayment=Bekräfta betalning PaymentHigherThanReminderToPay=Betalning högre än påminnelse att betala HelpPaymentHigherThanReminderToPay=Uppmärksamheten är för betalning är en eller flera räkningar högre än resten att betala.
Redigera din post, bekräfta något annat och tänka på att skapa en kreditnota det felaktigt erhållna beloppet för varje överskjutande fakturor. -HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the rest to pay.
Edit your entry, otherwise confirm. -ClassifyPaid=Klassificera "Betalda" -ClassifyPaidPartially=Klassificera "Betalda delvis" -ClassifyCanceled=Klassificera "svikna" -ClassifyClosed=Klassificera "sluten" -ClassifyUnBilled=Classify 'Unbilled' +HelpPaymentHigherThanReminderToPaySupplier=Obs, betalningsbeloppet av en eller flera räkningar är högre än återstående belopp att betala.
Redigera din post, annars bekräfta. +ClassifyPaid=Klassificera "betalda" +ClassifyPaidPartially=Klassificera "betalda delvis" +ClassifyCanceled=Klassificera "övergivna" +ClassifyClosed=Klassificera "avsluten" +ClassifyUnBilled=Klassificera 'ofakturerade' CreateBill=Skapa faktura -AddBill=Lägg till faktura eller kreditnota +AddBill=Skapa faktura eller en kredit nota AddToDraftInvoices=Lägg till faktura-utkast DeleteBill=Ta bort faktura SearchACustomerInvoice=Sök efter en kundfaktura @@ -99,7 +99,7 @@ DoPaymentBack=Gör betalning tillbaka ConvertToReduc=Konvertera till framtida rabatt EnterPaymentReceivedFromCustomer=Skriv in avgifter från kunderna EnterPaymentDueToCustomer=Gör betalning till kunden -DisabledBecauseRemainderToPayIsZero=Funktionshindrade eftersom resten att betala är noll +DisabledBecauseRemainderToPayIsZero=Inaktiverad pga återstående obetalt är noll Amount=Belopp PriceBase=Prisbasbelopp BillStatus=Faktura status @@ -156,9 +156,9 @@ ConfirmCancelBill=Är du säker på att du vill avbryta faktura %s? ConfirmCancelBillQuestion=Varför vill du att klassificera denna faktura "svikna"? ConfirmClassifyPaidPartially=Är du säker på att du vill ändra faktura %s till status betalas? ConfirmClassifyPaidPartiallyQuestion=Denna faktura inte har betalats helt. Vad finns skäl för dig att stänga denna faktura? -ConfirmClassifyPaidPartiallyReasonAvoir=Återstår att betala (%s %s) är en rabatt som beviljats på grund av betalningen gjordes före sikt. Jag reglera moms med en kreditnota. -ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Återstår att betala (%s %s) är en rabatt som beviljats på grund av betalningen gjordes före sikt. Jag accepterar att förlora mervärdesskatten på denna rabatt. -ConfirmClassifyPaidPartiallyReasonDiscountVat=Återstår att betala (%s %s) är en rabatt som beviljats på grund av betalningen gjordes före sikt. Jag återfå mervärdesskatten på denna rabatt utan en kreditnota. +ConfirmClassifyPaidPartiallyReasonAvoir=Återstående obetalt (%s %s) är en rabatt som beviljats ​​eftersom betalningen gjordes före villkoren. Jag reglerar momsen med en kreditnota. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Återstående obetalt (%s %s) är en rabatt som beviljats ​​eftersom betalningen gjordes före villkoren. Jag godkänner förlust av momsen på denna rabatt. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Återstående obetalt (%s %s) är en rabatt som beviljats ​​eftersom betalningen gjordes före villkoren. Jag återskapar momsen på denna rabatt med en kreditnota. ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad kund ConfirmClassifyPaidPartiallyReasonProductReturned=Produkter som returneras delvis ConfirmClassifyPaidPartiallyReasonOther=Belopp övergivna av annan orsak @@ -173,7 +173,7 @@ ConfirmClassifyAbandonReasonOtherDesc=Detta val kommer att användas i alla andr ConfirmCustomerPayment=Har du bekräfta denna betalning ingång för %s %s? ConfirmSupplierPayment=Bekräftar du denna betalning för %s %s? ConfirmValidatePayment=Är du säker på att du vill godkänna denna betalning? Inga ändringar kan göras efter det att betalning är godkänd. -ValidateBill=Validate faktura +ValidateBill=Validera faktura UnvalidateBill=Unvalidate faktura NumberOfBills=Nb av fakturor NumberOfBillsByMonth=Nb av fakturor per månad @@ -191,29 +191,29 @@ AlreadyPaid=Redan betalats ut AlreadyPaidBack=Redan återbetald AlreadyPaidNoCreditNotesNoDeposits=Redan betalats (utan kreditnotor och inlåning) Abandoned=Övergiven -RemainderToPay=Återstår att betala -RemainderToTake=Återstår att ta -RemainderToPayBack=Påminnelse om återbetalning +RemainderToPay=Återstående obetalt +RemainderToTake=Återstående belopp att ta +RemainderToPayBack=Återstående belopp att återbetala Rest=Avvaktande AmountExpected=Yrkade beloppet ExcessReceived=Överskott fått EscompteOffered=Rabatterna (betalning innan terminen) -SendBillRef=Submission of invoice %s -SendReminderBillRef=Submission of invoice %s (reminder) +SendBillRef=Inlämning av faktura %s +SendReminderBillRef=Inlämning av faktura %s (påminnelse) StandingOrders=Stående order StandingOrder=Stående order NoDraftBills=Inget förslag fakturor NoOtherDraftBills=Inga andra förslag fakturor NoDraftInvoices=Inget faktura-utkast RefBill=Faktura ref -ToBill=Till Bill +ToBill=Fakturamottagare RemainderToBill=Återstår att räkningen SendBillByMail=Skicka faktura via e-post SendReminderBillByMail=Skicka påminnelse via e-post RelatedCommercialProposals=Relaterade kommersiella förslag MenuToValid=Till giltiga DateMaxPayment=Betalning innan -DateEcheance=Förfallodagen gräns +DateEcheance=Förfallodag DateInvoice=Fakturadatum NoInvoice=Ingen faktura ClassifyBill=Klassificera faktura @@ -225,18 +225,18 @@ NonPercuRecuperable=Icke återvinningsbara SetConditions=Ställ betalningsvillkor SetMode=Ställ betalningssätt Billed=Fakturerade -RepeatableInvoice=Fördefinierade faktura -RepeatableInvoices=Fördefinierade fakturor -Repeatable=Fördefinierade -Repeatables=Fördefinierade -ChangeIntoRepeatableInvoice=Konvertera till fördefinierade -CreateRepeatableInvoice=Skapa fördefinierade faktura -CreateFromRepeatableInvoice=Skapa från fördefinierade faktura +RepeatableInvoice=Fakturamall +RepeatableInvoices=Fakturamallar +Repeatable=Mall +Repeatables=Mallar +ChangeIntoRepeatableInvoice=Konvertera till fakturamall +CreateRepeatableInvoice=Skapa fakturamall +CreateFromRepeatableInvoice=Skapa från fakturamall CustomersInvoicesAndInvoiceLines=Kundfakturor och fakturornas linjer CustomersInvoicesAndPayments=Kund fakturor och betalningar ExportDataset_invoice_1=Kundfakturor listan och fakturornas linjer ExportDataset_invoice_2=Kund fakturor och betalningar -ProformaBill=Proforma Bill: +ProformaBill=Proforma faktura: Reduction=Minskning ReductionShort=Minskningar. Reductions=Minskningar @@ -263,12 +263,12 @@ AbsoluteDiscountUse=Denna typ av krediter kan användas på fakturan innan valid CreditNoteDepositUse=Fakturan ska valideras för att använda denna kung av tillgodohavanden NewGlobalDiscount=Ny fix rabatt NewRelativeDiscount=Nya relativa rabatt -NoteReason=Not / Reason -ReasonDiscount=Reason +NoteReason=Not/orsak +ReasonDiscount=Orsak DiscountOfferedBy=Beviljats av DiscountStillRemaining=Rabatt återstår fortfarande DiscountAlreadyCounted=Rabatt räknas redan -BillAddress=Bill adress +BillAddress=Faktureringsadress HelpEscompte=Denna rabatt är en rabatt som kund eftersom betalningen gjordes före sikt. HelpAbandonBadCustomer=Detta belopp har övergivits (kund sägs vara en dålig kund) och anses som en exceptionell lös. HelpAbandonOther=Detta belopp har övergivits eftersom det var ett misstag (fel kund eller faktura ersättas av en annan till exempel) @@ -287,8 +287,8 @@ InvoiceNotChecked=Faktura vald CloneInvoice=Klon faktura ConfirmCloneInvoice=Är du säker på att du vill klona denna faktura %s? DisabledBecauseReplacedInvoice=Åtgärd funktionshindrade eftersom faktura har ersatts -DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payment during the fixed year are included here. -NbOfPayments=Nb av utbetalningar +DescTaxAndDividendsArea=Detta område ger en sammanfattning av alla betalningar för särskilda utgifter. Endast poster med betalning under fasta året ingår här. +NbOfPayments=Antal utbetalningar SplitDiscount=Split rabatt i två ConfirmSplitDiscount=Är du säker på att du vill dela denna rabatt %s %s i två lägre rabatter? TypeAmountOfEachNewDiscount=Ingång belopp för var och en av två delar: @@ -296,8 +296,8 @@ TotalOfTwoDiscountMustEqualsOriginal=Totalt för två nya rabatt måste vara lik ConfirmRemoveDiscount=Är du säker på att du vill ta bort denna rabatt? RelatedBill=Relaterade faktura RelatedBills=Relaterade fakturor -LatestRelatedBill=Latest related invoice -WarningBillExist=Warning, one or more invoice already exist +LatestRelatedBill=Senast relaterad faktura +WarningBillExist=Varning, en eller flera fakturor finns redan # PaymentConditions PaymentConditionShortRECEP=Omedelbar @@ -333,14 +333,14 @@ PaymentTypeTIP=TIPS PaymentTypeShortTIP=TIPS PaymentTypeVAD=På rad betalning PaymentTypeShortVAD=På rad betalning -PaymentTypeTRA=Bill betalning -PaymentTypeShortTRA=Bill +PaymentTypeTRA=Faktura betalning +PaymentTypeShortTRA=Faktura BankDetails=Bankuppgifter BankCode=Bankkod DeskCode=Reception kod BankAccountNumber=Kontonummer BankAccountNumberKey=Nyckel -Residence=Domiciliation +Residence=Säte IBANNumber=IBAN-nummer IBAN=IBAN BIC=BIC / SWIFT @@ -351,7 +351,7 @@ ChequeNumber=Kontrollera nr ChequeOrTransferNumber=Kontrollera / Transfer nr ChequeMaker=Kontrollera sändare ChequeBank=Bank av Check -NetToBePaid=Net som skall betalas +NetToBePaid=Netto som skall betalas PhoneNumber=Tel FullPhoneNumber=Telefon TeleFax=Fax @@ -384,7 +384,7 @@ UsBillingContactAsIncoiveRecipientIfExist=Använda kundens faktureringsadress ad ShowUnpaidAll=Visa alla obetalda fakturor ShowUnpaidLateOnly=Visa sent obetald faktura endast PaymentInvoiceRef=Betalning faktura %s -ValidateInvoice=Validate faktura +ValidateInvoice=Validera faktura Cash=Kontanter Reported=Försenad DisabledBecausePayments=Inte möjlig eftersom det inte finns några betalningar @@ -397,12 +397,12 @@ AllCompletelyPayedInvoiceWillBeClosed=Alla fakturor utan återstår att betala k ToMakePayment=Betala ToMakePaymentBack=Återbetala ListOfYourUnpaidInvoices=Lista över obetalda fakturor -NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. -RevenueStamp=Revenue stamp -YouMustCreateInvoiceFromThird=This option is only available when creating invoice from tab "customer" of thirdparty +NoteListOfYourUnpaidInvoices=OBS: Denna lista innehåller bara fakturor för tredje parti som du är kopplade till som en försäljning representant. +RevenueStamp=Intäkt stämpel +YouMustCreateInvoiceFromThird=Det här alternativet är endast tillgängligt när du skapar faktura från fliken "kund" hos tredje parts PDFCrabeDescription=Faktura modell Crabe. En fullständig faktura modell (Stöd moms alternativet, rabatter, betalningar villkor, logotyp, etc. ..) -TerreNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 -MarsNumRefModelDesc1=Return number with format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for credit notes and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequence with no break and no return to 0 +TerreNumRefModelDesc1=Återger nummer med formatet %syymm-nnnn för standardfakturor och %syymm-NNNN för kreditnotor där yy är året, mm månaden och nnnn är en sekvens med ingen paus och ingen återgång till 0 +MarsNumRefModelDesc1=Återger nummer med formatet %syymm-nnnn för standardfakturor, %syymm-nnnn för kreditnotor där åå är år, är mm %syymm-nnnn för ersättningsfakturor, %syymm-nnnn för kreditnotor och månad och nnnn är en sekvens utan sönder och ingen återgång till 0 TerreNumRefModelError=Ett lagförslag som börjar med $ syymm finns redan och är inte förenligt med denna modell för sekvens. Ta bort den eller byta namn på den för att aktivera denna modul. ##### Types de contacts ##### TypeContact_facture_internal_SALESREPFOLL=Representanten uppföljning kundfaktura diff --git a/htdocs/langs/sv_SE/boxes.lang b/htdocs/langs/sv_SE/boxes.lang index 6f03c265227..3c949332eb6 100644 --- a/htdocs/langs/sv_SE/boxes.lang +++ b/htdocs/langs/sv_SE/boxes.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - boxes BoxLastRssInfos=RSS-information BoxLastProducts=Senaste %s produkter / tjänster -# BoxProductsAlertStock=Products in stock alert +BoxProductsAlertStock=Produkter i lager alert BoxLastProductsInContract=Senaste %s avtalade produkter / tjänster BoxLastSupplierBills=Senaste leverantörens fakturor BoxLastCustomerBills=Senaste kundens fakturor @@ -12,13 +12,14 @@ BoxLastProspects=Senast uppdaterad framtidsutsikter BoxLastCustomers=Senast uppdaterad kunder BoxLastSuppliers=Senast uppdaterad leverantörer BoxLastCustomerOrders=Senaste kundorder +BoxLastValidatedCustomerOrders=Senast validerade kundorder BoxLastBooks=Senast böcker BoxLastActions=Senaste åtgärder BoxLastContracts=Senaste kontrakt BoxLastContacts=Senaste kontakter / adresser BoxLastMembers=Sista medlemmar -# BoxFicheInter=Last interventions -# BoxCurrentAccounts=Opened accounts balance +BoxFicheInter=Sista interventioner +BoxCurrentAccounts=Öppnade balans konton BoxSalesTurnover=Omsättningen BoxTotalUnpaidCustomerBills=Totalt obetalda kundens fakturor BoxTotalUnpaidSuppliersBills=Totalt obetalda leverantörs fakturor @@ -26,27 +27,30 @@ BoxTitleLastBooks=Senaste %s inspelade böcker BoxTitleNbOfCustomers=Nombre de klient BoxTitleLastRssInfos=Senaste %s nyheter från %s BoxTitleLastProducts=Senast %s modifierade produkter / tjänster -# BoxTitleProductsAlertStock=Products in stock alert -BoxTitleLastCustomerOrders=Senast %s uppdaterad kundorder +BoxTitleProductsAlertStock=Produkter i lager alert +BoxTitleLastCustomerOrders=Senaste %s kundorder +BoxTitleLastModifiedCustomerOrders=Senaste %s modifierade kundorder BoxTitleLastSuppliers=Senaste %s registreras leverantörer BoxTitleLastCustomers=Senaste %s registreras kunder BoxTitleLastModifiedSuppliers=Senast %s uppdaterad leverantörer BoxTitleLastModifiedCustomers=Senast %s uppdaterad kunder -BoxTitleLastCustomersOrProspects=Senast %s modifierade eller tilltänkta kunder -BoxTitleLastPropals=Senaste %s registreras förslag +BoxTitleLastCustomersOrProspects=Senaste %s kunder eller framtidsutsikter +BoxTitleLastPropals=Senaste %s förslag +BoxTitleLastModifiedPropals=Senaste %s ändrade förslag BoxTitleLastCustomerBills=Senaste %s kundens fakturor +BoxTitleLastModifiedCustomerBills=Senaste %s modifierade kundfakturor BoxTitleLastSupplierBills=Senaste %s leverantörens fakturor -BoxTitleLastProspects=Senaste %s registreras framtidsutsikter +BoxTitleLastModifiedSupplierBills=Senaste %s modifierade leverantörsfakturor BoxTitleLastModifiedProspects=Senast %s uppdaterad framtidsutsikter BoxTitleLastProductsInContract=Senaste %s produkter / tjänster i ett avtal -BoxTitleLastModifiedMembers=Sista %s modifierade medlemmar -# BoxTitleLastFicheInter=Last %s modified intervention -BoxTitleOldestUnpaidCustomerBills=Äldsta %s obetalda kundens fakturor -BoxTitleOldestUnpaidSupplierBills=Äldsta %s obetalda leverantörs fakturor -# BoxTitleCurrentAccounts=Opened account's balances +BoxTitleLastModifiedMembers=Senaste %s medlemmar +BoxTitleLastFicheInter=Senaste %s modifierade ingripande +BoxTitleOldestUnpaidCustomerBills=Äldsta %s obetalda kundfakturor +BoxTitleOldestUnpaidSupplierBills=Äldsta %s obetalda leverantörsfakturor +BoxTitleCurrentAccounts=Öppnade kontots saldon BoxTitleSalesTurnover=Omsättningen -BoxTitleTotalUnpaidCustomerBills=Obetalda kundens fakturor -BoxTitleTotalUnpaidSuppliersBills=Obetalda leverantörs fakturor +BoxTitleTotalUnpaidCustomerBills=Obetalda kundfakturor +BoxTitleTotalUnpaidSuppliersBills=Obetalda leverantörsfakturor BoxTitleLastModifiedContacts=Senaste %s modifierade kontakter / adresser BoxMyLastBookmarks=Min sista %s bokmärken BoxOldestExpiredServices=Äldsta aktiva passerat tjänster @@ -55,7 +59,7 @@ BoxTitleLastActionsToDo=Senaste %s åtgärder för att göra BoxTitleLastContracts=Senaste %s kontrakt BoxTitleLastModifiedDonations=Sista %s modifierad donationer BoxTitleLastModifiedExpenses=Sista %s modifierad kostnader -# BoxGlobalActivity=Global activity (invoices, proposals, orders) +BoxGlobalActivity=Global aktivitet (fakturor, förslag, order) FailedToRefreshDataInfoNotUpToDate=Misslyckades med att uppdatera RSS-flöde. Senaste framgångsrika uppdatera datum: %s LastRefreshDate=Senaste uppdateringen datum NoRecordedBookmarks=Inga bokmärken definieras. Klicka här för att lägga till bokmärken. @@ -74,18 +78,19 @@ NoRecordedProducts=Inga registrerade produkter / tjänster NoRecordedProspects=Inga registrerade framtidsutsikter NoContractedProducts=Inga produkter / tjänster avtalade NoRecordedContracts=Inga registrerade kontrakt -# NoRecordedInterventions=No recorded interventions -# BoxLatestSupplierOrders=Latest supplier orders -# BoxTitleLatestSupplierOrders=%s latest supplier orders -# NoSupplierOrder=No recorded supplier order -# BoxCustomersInvoicesPerMonth=Customer invoices per month -# BoxSuppliersInvoicesPerMonth=Supplier invoices per month -# BoxCustomersOrdersPerMonth=Customer orders per month -# BoxSuppliersOrdersPerMonth=Supplier orders per month -# BoxProposalsPerMonth=Proposals per month -# NoTooLowStockProducts=No product under the low stock limit -# BoxProductDistribution=Products/Services distribution -# BoxProductDistributionFor=Distribution of %s for %s +NoRecordedInterventions=Inga inspelade interventioner +BoxLatestSupplierOrders=Senaste leverantörs order +BoxTitleLatestSupplierOrders=Senaste %s leverantörsorder +BoxTitleLatestModifiedSupplierOrders=Senaste %s modifierade leverantörs order +NoSupplierOrder=Inga inspelade leverantör ordning +BoxCustomersInvoicesPerMonth=Kund fakturor per månad +BoxSuppliersInvoicesPerMonth=Leverantörs fakturor per månad +BoxCustomersOrdersPerMonth=Kundorder per månad +BoxSuppliersOrdersPerMonth=Leverantörs order per månad +BoxProposalsPerMonth=Förslag per månad +NoTooLowStockProducts=Ingen produkt under den låga aktiegränsen +BoxProductDistribution=Produkter / tjänster fördelning +BoxProductDistributionFor=Fördelning av %s för %s ForCustomersInvoices=Kundens fakturor -# ForCustomersOrders=Customers orders +ForCustomersOrders=Kund beställningar ForProposals=Förslag diff --git a/htdocs/langs/sv_SE/cashdesk.lang b/htdocs/langs/sv_SE/cashdesk.lang index 9dc083d5e44..b423702c634 100644 --- a/htdocs/langs/sv_SE/cashdesk.lang +++ b/htdocs/langs/sv_SE/cashdesk.lang @@ -12,7 +12,7 @@ CashDeskProducts=Produkter CashDeskStock=Lager CashDeskOn=på CashDeskThirdParty=Tredje part -# CashdeskDashboard=Point of sale access +CashdeskDashboard=Försäljningsställe ShoppingCart=Kundvagn NewSell=Nya säljer BackOffice=Back office @@ -36,5 +36,5 @@ BankToPay=KONTO ShowCompany=Visar företaget ShowStock=Visar lagret DeleteArticle=Klicka här för att ta bort den här artikeln -# FilterRefOrLabelOrBC=Search (Ref/Label) -# UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that use POS need to have permission to edit stock. +FilterRefOrLabelOrBC=Sök (Ref / etikett) +UserNeedPermissionToEditStockToUsePos=Du ber att minska lager på faktura skapelse, så användare som använder POS behöver ha behörighet att redigera lager. diff --git a/htdocs/langs/sv_SE/categories.lang b/htdocs/langs/sv_SE/categories.lang index 34f80e7f951..42ef6bd5d47 100644 --- a/htdocs/langs/sv_SE/categories.lang +++ b/htdocs/langs/sv_SE/categories.lang @@ -111,4 +111,4 @@ ExtraFieldsCategories=Extra attibut CategoriesSetup=Kategorier, inställningar CategorieRecursiv=Länka automatiskt med förälderkategori CategorieRecursivHelp=Om aktiverad kommer produkten även länkas till förälderkategori när den läggs i en underkategori -AddProductServiceIntoCategory=Add the following product/service +AddProductServiceIntoCategory=Lägg till följande produkt / tjänst diff --git a/htdocs/langs/sv_SE/commercial.lang b/htdocs/langs/sv_SE/commercial.lang index db67958f331..4e4fd7f51aa 100644 --- a/htdocs/langs/sv_SE/commercial.lang +++ b/htdocs/langs/sv_SE/commercial.lang @@ -9,9 +9,9 @@ Prospect=Prospect Prospects=Framtidsutsikter DeleteAction=Ta bort en handling / uppgift NewAction=Ny åtgärd / uppgift -AddAction=Lägg till åtgärd / uppgift -AddAnAction=Lägg till en handling / uppgift -AddActionRendezVous=Lägg till en Rendezvous uppgift +AddAction=Skapa händelse / uppgift +AddAnAction=Skapa en händelse / uppgift +AddActionRendezVous=Skapa en Rendez-vous händelse Rendez-Vous=Rendezvous ConfirmDeleteAction=Är du säker på att du vill ta bort denna uppgift? CardAction=Action-kort @@ -44,8 +44,8 @@ DoneActions=Genomförda åtgärder DoneActionsFor=Genomförda åtgärder för %s ToDoActions=Ofullständig åtgärder ToDoActionsFor=Ofullständiga åtgärder för %s -SendPropalRef=Skicka kommersiella förslag %s -SendOrderRef=Skicka beställningen %s +SendPropalRef=Inlämning av kommersiella förslag %s +SendOrderRef=Inlämning av ordning %s StatusNotApplicable=Ej tillämpligt StatusActionToDo=För att göra StatusActionDone=Komplett @@ -62,7 +62,7 @@ LastProspectContactDone=Kontakta gjort DateActionPlanned=Datum planerade åtgärder för DateActionDone=Datum insatser görs ActionAskedBy=Åtgärd bad -ActionAffectedTo=Åtgärd påverkas +ActionAffectedTo=Händelse som ägs av ActionDoneBy=Åtgärder som utförs av ActionUserAsk=Registrerats av ErrorStatusCantBeZeroIfStarted=Om fältet "Datum gjort" är fylld, är arbetet igång (eller färdiga), så fältet "Status" kan inte 0%%. @@ -71,7 +71,7 @@ ActionAC_FAX=Skicka fax ActionAC_PROP=Skicka förslag via e-post ActionAC_EMAIL=Skicka e-post ActionAC_RDV=Möten -ActionAC_INT=Intervention on site +ActionAC_INT=Intervention på plats ActionAC_FAC=Skicka kundfaktura med post ActionAC_REL=Skicka kundfaktura via post (påminnelse) ActionAC_CLO=Stäng diff --git a/htdocs/langs/sv_SE/companies.lang b/htdocs/langs/sv_SE/companies.lang index 54df1904f26..1e640e1b80e 100644 --- a/htdocs/langs/sv_SE/companies.lang +++ b/htdocs/langs/sv_SE/companies.lang @@ -91,9 +91,9 @@ LocalTax2IsUsedES= IRPF används LocalTax2IsNotUsedES= IRPF används inte LocalTax1ES=RE LocalTax2ES=IRPF -TypeLocaltax1ES=RE Type -TypeLocaltax2ES=IRPF Type -TypeES=Type +TypeLocaltax1ES=RE Typ +TypeLocaltax2ES=IRPF Typ +TypeES=Typ ThirdPartyEMail=%s WrongCustomerCode=Kundkod ogiltig WrongSupplierCode=Leverantörkod ogiltig @@ -259,8 +259,8 @@ AvailableGlobalDiscounts=Absoluta rabatter DiscountNone=Ingen Supplier=Leverantör CompanyList=Företagslista -AddContact=Lägg till kontakt -AddContactAddress=Lägg till kontakt / adress +AddContact=Skapa kontakt +AddContactAddress=Skapa kontakt / adress EditContact=Redigera kontakt / adress EditContactAddress=Redigera kontakt / adress Contact=Kontakt @@ -268,8 +268,8 @@ ContactsAddresses=Kontakt / Adresser NoContactDefinedForThirdParty=Ingen kontakt inlagd för denna tredje part NoContactDefined=Ingen kontakt inlagd DefaultContact=Standard kontakt / adress -AddCompany=Lägg till företag -AddThirdParty=Lägg till tredje part +AddCompany=Skapa företag +AddThirdParty=Skapa tredje part DeleteACompany=Ta bort ett företag PersonalInformations=Personuppgifter AccountancyCode=Bokföring kod @@ -379,8 +379,8 @@ DeliveryAddressLabel=Leverans adresskortet DeleteDeliveryAddress=Ta bort en leveransadress ConfirmDeleteDeliveryAddress=Är du säker på att du vill ta bort denna leveransadress? NewDeliveryAddress=Ny leveransadress -AddDeliveryAddress=Lägg till adress -AddAddress=Lägg till adress +AddDeliveryAddress=Skapa adress +AddAddress=Skapa adress NoOtherDeliveryAddress=Ingen alternativ leveransadress definierad SupplierCategory=Leverantör kategori JuridicalStatus200=Oberoende @@ -397,18 +397,18 @@ YouMustCreateContactFirst=Du måste först skapa e-postkontakter för tredje par ListSuppliersShort=Lista över leverantörer ListProspectsShort=Lista över möjliga kunder ListCustomersShort=Lista över kunder -ThirdPartiesArea=Third parties and contact area +ThirdPartiesArea=Tredje part och kontaktyta LastModifiedThirdParties=Senaste %s modifierade tredje part UniqueThirdParties=Totalt unika tredje part InActivity=Öppet ActivityCeased=Stängt ActivityStateFilter=Sysselsättningsstatus -ProductsIntoElements=List of products into %s +ProductsIntoElements=Lista produkter till %s CurrentOutstandingBill=Obetalda fakturor OutstandingBill=Max för obetald faktura OutstandingBillReached=Upnått tak för obetalda fakturor MonkeyNumRefModelDesc=Ger nummer med format %syymm-nnnn för kundnummer och %syymm-nnnn för leverantörnummer där YY är år, mm månad och nnnn är en sekvens utan avbrott och utan återgång till 0. LeopardNumRefModelDesc=Kund / leverantör-nummer är ledig. Denna kod kan ändras när som helst. ManagingDirectors=Företagledares namn (vd, direktör, ordförande ...) -SearchThirdparty=Search thirdparty -SearchContact=Search contact +SearchThirdparty=Sök tredjeparts +SearchContact=Sök kontakt diff --git a/htdocs/langs/sv_SE/contracts.lang b/htdocs/langs/sv_SE/contracts.lang index 98e98e079c6..9329c9a9701 100644 --- a/htdocs/langs/sv_SE/contracts.lang +++ b/htdocs/langs/sv_SE/contracts.lang @@ -27,7 +27,7 @@ MenuRunningServices=Löpande tjänster MenuExpiredServices=Utlöpta tjänster MenuClosedServices=Stängda tjänster NewContract=Nytt kontrakt -AddContract=Lägg till kontrakt +AddContract=Skapa kontrakt SearchAContract=Sök ett kontrakt DeleteAContract=Ta bort ett kontrakt CloseAContract=Stäng ett kontrakt @@ -89,8 +89,8 @@ ListOfServicesToExpireWithDuration=Förteckning över tjänster som löper ut in ListOfServicesToExpireWithDurationNeg=Förteckning över tjänster som löpt ut sedan mer än %s dagar ListOfServicesToExpire=Förteckning över tjänster som löper ut NoteListOfYourExpiredServices=Denna förteckning omfattar endast tjänster från avtal med tredje part i förhållande till vilka du är säljare. -StandardContractsTemplate=Standard contracts template -ContactNameAndSignature=For %s, name and signature: +StandardContractsTemplate=Standardkontrakt mall +ContactNameAndSignature=För %s, namn och underskrift: ##### Types de contacts ##### TypeContact_contrat_internal_SALESREPSIGN=Säljare som tecknar avtal diff --git a/htdocs/langs/sv_SE/cron.lang b/htdocs/langs/sv_SE/cron.lang index 518d8c5695f..0857c695597 100644 --- a/htdocs/langs/sv_SE/cron.lang +++ b/htdocs/langs/sv_SE/cron.lang @@ -1,42 +1,40 @@ # Dolibarr language file - Source file is en_US - cron -# # About page About = Om CronAbout = Om Cron -CronAboutPage = Cron about page - +CronAboutPage = Cron om sidan # Right -Permission23101 = Read Scheduled task -Permission23102 = Create/update Scheduled task -Permission23103 = Delete Scheduled task -Permission23104 = Execute Scheduled task +Permission23101 = Läs schedulerad uppgift +Permission23102 = Skapa / uppdatera Schemalagd aktivitet +Permission23103 = Ta bort schemalagd aktivitet +Permission23104 = Kör schemalagd aktivitet # Admin -CronSetup= Scheduled job management setup -URLToLaunchCronJobs=URL to check and launch cron jobs if required -OrToLaunchASpecificJob=Or to check and launch a specific job -KeyForCronAccess=Security key for URL to launch cron jobs +CronSetup= Planerad jobbhantering installation +URLToLaunchCronJobs=URL för att kontrollera och starta cron-jobb om det behövs +OrToLaunchASpecificJob=Eller för att kontrollera och starta ett specifikt arbete +KeyForCronAccess=Säkerhetsnyckel för URL för att lansera cron-jobb FileToLaunchCronJobs=Kommandorad för att starta cron jobb -CronExplainHowToRunUnix=On Unix environment you should use crontab to run Command line each minutes -CronExplainHowToRunWin=On Microsoft(tm) Windows environement you can use Scheduled task tools to run Command line each minutes +CronExplainHowToRunUnix=På Unix-miljö bör du använda crontab för att köra kommandoraden varje minuter +CronExplainHowToRunWin=På Microsoft (tm) Windows environement kan du använda schemalagd aktivitet verktyg för att köra kommandoraden varje minuter # Menu -CronJobs=Scheduled jobs -CronListActive= List of active jobs -CronListInactive= List of disabled jobs -CronListActive= List of active jobs +CronJobs=Schemalagda jobb +CronListActive= Lista över aktiva jobb +CronListInactive= Lista över handikappade jobb +CronListActive= Lista över aktiva jobb # Page list CronDateLastRun=Senaste körning -CronLastOutput=Last run output -CronLastResult=Last result code -CronListOfCronJobs=List of scheduled jobs +CronLastOutput=Sista loppet utgång +CronLastResult=Senaste resultat code +CronListOfCronJobs=Lista över schemalagda jobb CronCommand=Kommando -CronList=Jobs list -CronDelete= Delete cron jobs -CronConfirmDelete= Are you sure you want to delete this cron job ? -CronExecute=Launch job -CronConfirmExecute= Are you sure to execute this job now -CronInfo= Jobs allow to execute task that have been planned -CronWaitingJobs=Wainting jobs -CronTask=Job +CronList=Listan Jobb +CronDelete= Radera cron-jobb +CronConfirmDelete= Är du säker på att du vill ta bort denna cron-jobb? +CronExecute=Starta jobb +CronConfirmExecute= Är du säker på att utföra detta jobb nu +CronInfo= Jobb möjligt att utföra uppgiften som har planerats +CronWaitingJobs=Wainting jobb +CronTask=Jobb CronNone= Ingen CronDtStart=Startdatum CronDtEnd=Slutdatum @@ -46,44 +44,44 @@ CronFrequency=Frekvens CronClass=Klass CronMethod=Metod CronModule=Modul -CronAction=Action +CronAction=Åtgärd CronStatus=Status CronStatusActive=Aktiverat CronStatusInactive=Funktionshindrade -CronNoJobs=No jobs registered +CronNoJobs=Inga jobb registrerade CronPriority=Prioritet CronLabel=Beskrivning -CronNbRun=Nb. launch +CronNbRun=Nb. lanseringen CronEach=Varje -JobFinished=Job launched and finished +JobFinished=Job lanserad och klar #Page card -CronAdd= Add jobs -CronHourStart= Start Hour and date of task -CronEvery= And execute task each -CronObject= Instance/Object to create +CronAdd= Lägg till jobb +CronHourStart= Start Hour och datum för uppgiften +CronEvery= Och köra uppgiften varje +CronObject= Instans / Object för att skapa CronArgs=Parametrar -CronSaveSucess=Save succesfully +CronSaveSucess=Spara framgångsrikt CronNote=Kommentar -CronFieldMandatory=Fields %s is mandatory -CronErrEndDateStartDt=End date cannot be before start date +CronFieldMandatory=Fält %s är obligatoriskt +CronErrEndDateStartDt=Slutdatum kan inte vara före startdatum CronStatusActiveBtn=Aktivera CronStatusInactiveBtn=Inaktivera -CronTaskInactive=This job is disabled -CronDtLastResult=Last result date +CronTaskInactive=Det här jobbet är avaktiverat +CronDtLastResult=Senaste resultatet datum CronId=Id CronClassFile=Klasser (filename.class.php) -CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module).
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of module is product -CronClassFileHelp=The file name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is product.class.php -CronObjectHelp=The object name to load.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of class file name is Product -CronMethodHelp=The object method to launch.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of method is is fecth -CronArgsHelp=The method arguments.
For exemple to fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value of paramters can be 0, ProductRef -CronCommandHelp=The system command line to execute. +CronModuleHelp=Namn på Dolibarr modul katalog (även arbeta med extern Dolibarr modul).
För exemple att hämta metod för Dolibarr Produkt objektet / htdocs / produkt /class/product.class.php, värdet av modulen är produkten +CronClassFileHelp=Filnamnet för att ladda.
För exemple att hämta metod för Dolibarr Produkt objektet / htdocs / produkt / klass / product.class.php, är värdet av klass filnamn product.class.php +CronObjectHelp=Det objektnamn som ska läsas in.
För exemple att hämta metod för Dolibarr Produktobjekt /htdocs/product/class/product.class.php, är värdet av klass filnamn Produkt +CronMethodHelp=Objektet metod för att starta.
För exemple att hämta metod för Dolibarr Produktobjekt /htdocs/product/class/product.class.php, värdet av metoden är är fecth +CronArgsHelp=Metoden argument.
Till exemple att hämta förfarande för Dolibarr Produkt objekt /htdocs/product/class/product.class.php kan värdet av paramters vara 0, ProductRef +CronCommandHelp=Systemet kommandoraden som ska köras. # Info CronInfoPage=Information # Common -CronType=Task type -CronType_method=Call method of a Dolibarr Class -CronType_command=Shell command +CronType=Task typ +CronType_method=Call metod för en Dolibarr klass +CronType_command=Skalkommando CronMenu=Cron -CronCannotLoadClass=Cannot load class %s or object %s -UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Modules tools - Job list" to see and edit scheduled jobs. +CronCannotLoadClass=Det går inte att läsa in klassen% s eller objekt% s +UseMenuModuleToolsToAddCronJobs=Gå in på menyn "Home - Moduler verktyg - Job list" för att se och redigera schemalagda jobb. diff --git a/htdocs/langs/sv_SE/deliveries.lang b/htdocs/langs/sv_SE/deliveries.lang index 393ba2ebbcc..315f3668602 100644 --- a/htdocs/langs/sv_SE/deliveries.lang +++ b/htdocs/langs/sv_SE/deliveries.lang @@ -24,3 +24,5 @@ Deliverer=Utlämnad av: Sender=Avsändare Recipient=Mottagare ErrorStockIsNotEnough=Det finns inte tillräckligt i lager +Shippable=Sändbara +NonShippable=Inte sändbara diff --git a/htdocs/langs/sv_SE/dict.lang b/htdocs/langs/sv_SE/dict.lang index c69b273c44a..1c6f314ac0f 100644 --- a/htdocs/langs/sv_SE/dict.lang +++ b/htdocs/langs/sv_SE/dict.lang @@ -6,7 +6,7 @@ CountryES=Spanien CountryDE=Tyskland CountryCH=Schweiz CountryGB=STORBRITANNIEN -# CountryUK=United Kingdom +CountryUK=United Kingdom CountryIE=Irland CountryCN=Kina CountryTN=Tunisien @@ -252,8 +252,7 @@ CivilityMME=Mrs CivilityMR=Mr CivilityMLE=Ms CivilityMTRE=Master -# CivilityDR=Doctor - +CivilityDR=Doktor ##### Currencies ##### Currencyeuros=Euro CurrencyAUD=AU dollar @@ -290,10 +289,10 @@ CurrencyXOF=FCFA BCEAO CurrencySingXOF=CFA Franc BCEAO CurrencyXPF=Fiskeripolitiken franc CurrencySingXPF=CFP-franc - -# CurrencyCentSingEUR=cent -# CurrencyThousandthSingTND=thousandth - +CurrencyCentSingEUR=cent +CurrencyCentINR=paisa +CurrencyCentSingINR=paise +CurrencyThousandthSingTND=tusendel #### Input reasons ##### DemandReasonTypeSRC_INTE=Internet DemandReasonTypeSRC_CAMP_MAIL=Post kampanj @@ -302,28 +301,27 @@ DemandReasonTypeSRC_CAMP_PHO=Telefonen kampanj DemandReasonTypeSRC_CAMP_FAX=Fax kampanjen DemandReasonTypeSRC_COMM=Kommersiella kontakt DemandReasonTypeSRC_SHOP=Handla kontakt -# DemandReasonTypeSRC_WOM=Word of mouth -# DemandReasonTypeSRC_PARTNER=Partner -# DemandReasonTypeSRC_EMPLOYEE=Employee -# DemandReasonTypeSRC_SPONSORING=Sponsorship - +DemandReasonTypeSRC_WOM=Word of mouth +DemandReasonTypeSRC_PARTNER=Partner +DemandReasonTypeSRC_EMPLOYEE=Anställd +DemandReasonTypeSRC_SPONSORING=Sponsor #### Paper formats #### -# PaperFormatEU4A0=Format 4A0 -# PaperFormatEU2A0=Format 2A0 -# PaperFormatEUA0=Format A0 -# PaperFormatEUA1=Format A1 -# PaperFormatEUA2=Format A2 -# PaperFormatEUA3=Format A3 -# PaperFormatEUA4=Format A4 -# PaperFormatEUA5=Format A5 -# PaperFormatEUA6=Format A6 -# PaperFormatUSLETTER=Format Letter US -# PaperFormatUSLEGAL=Format Legal US -# PaperFormatUSEXECUTIVE=Format Executive US -# PaperFormatUSLEDGER=Format Ledger/Tabloid -# PaperFormatCAP1=Format P1 Canada -# PaperFormatCAP2=Format P2 Canada -# PaperFormatCAP3=Format P3 Canada -# PaperFormatCAP4=Format P4 Canada -# PaperFormatCAP5=Format P5 Canada -# PaperFormatCAP6=Format P6 Canada +PaperFormatEU4A0=Format 4A0 +PaperFormatEU2A0=Format 2A0 +PaperFormatEUA0=Format A0 +PaperFormatEUA1=Format A1 +PaperFormatEUA2=Format A2 +PaperFormatEUA3=Format A3 +PaperFormatEUA4=Format A4 +PaperFormatEUA5=Format A5 +PaperFormatEUA6=A6-format +PaperFormatUSLETTER=Format Letter US +PaperFormatUSLEGAL=Format Legal US +PaperFormatUSEXECUTIVE=Format Executive US +PaperFormatUSLEDGER=Formatet Ledger / Tabloid +PaperFormatCAP1=Format P1 Kanada +PaperFormatCAP2=Format P2 Kanada +PaperFormatCAP3=Format P3 Kanada +PaperFormatCAP4=Format P4 Kanada +PaperFormatCAP5=Format P5 Kanada +PaperFormatCAP6=Format P6 Kanada diff --git a/htdocs/langs/sv_SE/donations.lang b/htdocs/langs/sv_SE/donations.lang index dbce6c62402..de829e62d03 100644 --- a/htdocs/langs/sv_SE/donations.lang +++ b/htdocs/langs/sv_SE/donations.lang @@ -4,9 +4,9 @@ Donations=Donationer DonationRef=Donation ref. Donor=Givare Donors=Givare -AddDonation=Lägg till en donation +AddDonation=Skapa en donation NewDonation=Ny donation -ShowDonation=Show donation +ShowDonation=Visa donation DonationPromise=Gift löfte PromisesNotValid=Inte validerade löften PromisesValid=Validerad löften @@ -22,12 +22,12 @@ DonationStatusPromiseNotValidatedShort=Förslag DonationStatusPromiseValidatedShort=Validerad DonationStatusPaidShort=Mottagna ValidPromess=Validate löfte -DonationReceipt=Donation receipt +DonationReceipt=Donation kvitto BuildDonationReceipt=Bygg kvitto DonationsModels=Dokument modeller för donation kvitton LastModifiedDonations=Sista %s modifierad donationer SearchADonation=Sök en donation -DonationRecipient=Donation recipient -ThankYou=Thank You -IConfirmDonationReception=The recipient declare reception, as a donation, of the following amount -MinimumAmount=Minimum amount is %s +DonationRecipient=Donation mottagaren +ThankYou=Tack +IConfirmDonationReception=Mottagaren förklarar mottagning, som en donation, av följande belopp +MinimumAmount=Minsta belopp är% s diff --git a/htdocs/langs/sv_SE/ecm.lang b/htdocs/langs/sv_SE/ecm.lang index 5b61533edd0..7010cddbf8d 100644 --- a/htdocs/langs/sv_SE/ecm.lang +++ b/htdocs/langs/sv_SE/ecm.lang @@ -23,10 +23,10 @@ ECMNewDocument=Nytt dokument ECMCreationDate=Datum för skapande ECMNbOfFilesInDir=Antalet filer i katalogen ECMNbOfSubDir=Antal underkataloger -# ECMNbOfFilesInSubDir=Number of files in sub-directories +ECMNbOfFilesInSubDir=Antalet filer i underkataloger ECMCreationUser=Creator -# ECMArea=EDM area -# ECMAreaDesc=The EDM (Electronic Document Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. +ECMArea=EDM område +ECMAreaDesc=EDM (Electronic Document Management) området kan du spara, dela och snabbt söka alla typer av dokument i Dolibarr. ECMAreaDesc2=* Automatisk kataloger fylls automatiskt när man lägger till dokument från kort av ett element.
* Manuell kataloger kan användas för att spara dokument inte är knutna till ett visst element. ECMSectionWasRemoved=Nummer %s har tagits bort. ECMDocumentsSection=Dokument om katalogen @@ -35,14 +35,14 @@ ECMSearchByEntity=Sök på objektet ECMSectionOfDocuments=Register över handlingar ECMTypeManual=Manuell ECMTypeAuto=Automatisk -# ECMDocsBySocialContributions=Documents linked to social contributions +ECMDocsBySocialContributions=Handlingar som är kopplade till sociala avgifter ECMDocsByThirdParties=Dokument med koppling till tredje part ECMDocsByProposals=Dokument med koppling till förslagen ECMDocsByOrders=Dokument med koppling till kunderna order ECMDocsByContracts=Handlingar som är kopplade till kontrakt ECMDocsByInvoices=Dokument med koppling till kunderna fakturor ECMDocsByProducts=Dokument med koppling till produkter -# ECMDocsByProjects=Documents linked to projects +ECMDocsByProjects=Handlingar som är kopplade till projekt ECMNoDirectoryYet=Ingen katalog skapas ShowECMSection=Visa katalog DeleteSection=Ta bort katalog @@ -51,5 +51,5 @@ ECMDirectoryForFiles=Relativ katalog för filer CannotRemoveDirectoryContainsFiles=Flyttat inte möjligt eftersom det innehåller några filer ECMFileManager=Filhanteraren ECMSelectASection=Välj en katalog på vänster träd ... -# DirNotSynchronizedSyncFirst=This directory seems to be created or modified outside ECM module. You must click on "Refresh" button first to synchronize disk and database to get content of this directory. +DirNotSynchronizedSyncFirst=Denna katalog verkar skapas eller ändras utanför ECM-modulen. Du måste klicka på "Uppdatera" knappen först att synkronisera disk och databas för att få innehållet i den här katalogen. diff --git a/htdocs/langs/sv_SE/errors.lang b/htdocs/langs/sv_SE/errors.lang index bac137d98a1..230f6f74889 100644 --- a/htdocs/langs/sv_SE/errors.lang +++ b/htdocs/langs/sv_SE/errors.lang @@ -1,11 +1,11 @@ # Dolibarr language file - Source file is en_US - errors # No errors -NoErrorCommitIsDone=No error, we commit +NoErrorCommitIsDone=Inget fel # Errors Error=Fel Errors=Fel -ErrorButCommitIsDone=Errors found but we validate despite this +ErrorButCommitIsDone=Fel hittades men vi validera trots detta ErrorBadEMail=EMail %s är fel ErrorBadUrl=Url %s är fel ErrorLoginAlreadyExists=Logga %s finns redan. @@ -23,23 +23,23 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Denna kontakt redan har definierats s ErrorCashAccountAcceptsOnlyCashMoney=Detta bankkonto är en kontant-konto, så det tar emot betalningar av typ kontanter endast. ErrorFromToAccountsMustDiffers=Källa och mål bankkonton måste vara olika. ErrorBadThirdPartyName=Felaktigt värde för tredje part namn -ErrorProdIdIsMandatory=The %s is mandatory +ErrorProdIdIsMandatory=%s är obligatoriskt ErrorBadCustomerCodeSyntax=Dålig syntax för kundkod -ErrorBadBarCodeSyntax=Bad syntax for bar code +ErrorBadBarCodeSyntax=Dålig syntax för streckkod ErrorCustomerCodeRequired=Kunden som erfordras -ErrorBarCodeRequired=Bar code required +ErrorBarCodeRequired=Streckkod krävs ErrorCustomerCodeAlreadyUsed=Kund-kod som används redan -ErrorBarCodeAlreadyUsed=Bar code already used +ErrorBarCodeAlreadyUsed=Streckkod som redan används ErrorPrefixRequired=Prefix krävs ErrorUrlNotValid=Webbplatsen adressen är felaktig ErrorBadSupplierCodeSyntax=Bad syntax för leverantör kod ErrorSupplierCodeRequired=Leverantör som erfordras ErrorSupplierCodeAlreadyUsed=Leverantör kod som används redan -ErrorBadParameters=Bad parametrar +ErrorBadParameters=Dåliga parametrar ErrorBadValueForParameter=Fel värde "%s" för parameter oriktiga "%s kallad konventionen -ErrorBadImageFormat=Bildfil har inte ett format som stöds +ErrorBadImageFormat=Bildfilen har inte ett format som stöds (Din PHP stöder inte funktioner för att konvertera bilder av det här formatet) ErrorBadDateFormat=Värde "%s" har fel datumformat -ErrorWrongDate=Date is not correct! +ErrorWrongDate=Datum är inte korrekt! ErrorFailedToWriteInDir=Misslyckades med att skriva i katalogen %s ErrorFoundBadEmailInFile=Hittade felaktig e-syntax för %s rader i filen (t.ex. linje %s med email = %s) ErrorUserCannotBeDelete=Användaren kan inte tas bort. Får den hör samman på Dolibarr enheter. @@ -60,21 +60,21 @@ ErrorUploadBlockedByAddon=Ladda upp blockeras av en PHP / Apache plugin. ErrorFileSizeTooLarge=Filen är för stor. ErrorSizeTooLongForIntType=Storlek för lång för int typ (%s siffror max) ErrorSizeTooLongForVarcharType=Storlek för lång för sträng typ (%s tecken max) -ErrorNoValueForSelectType=Please fill value for select list -ErrorNoValueForCheckBoxType=Please fill value for checkbox list -ErrorNoValueForRadioType=Please fill value for radio list -ErrorBadFormatValueList=The list value cannot have more than one come : %s, but need at least one: llave,valores +ErrorNoValueForSelectType=Vänligen fyll i värde för utvald lista +ErrorNoValueForCheckBoxType=Vänligen fyll i värde för krysslista +ErrorNoValueForRadioType=Vänligen fyll i värde för radiolista +ErrorBadFormatValueList=Listans värd kan inte ha mer än ett komma: %s, men behöver åtminstone en: Llave, valores ErrorFieldCanNotContainSpecialCharacters=Fält %s inte innehåller specialtecken. -ErrorFieldCanNotContainSpecialNorUpperCharacters=Field %s must not contains special characters, nor upper case characters. +ErrorFieldCanNotContainSpecialNorUpperCharacters=Fältet %s får inte innehåller specialtecken eller versaler. ErrorNoAccountancyModuleLoaded=Ingen bokföring modul aktiverad -ErrorExportDuplicateProfil=This profile name already exists for this export set. +ErrorExportDuplicateProfil=Detta profilnamn finns redan för denna export. ErrorLDAPSetupNotComplete=Dolibarr-LDAP matchning inte är fullständig. ErrorLDAPMakeManualTest=A. LDIF filen har genererats i katalogen %s. Försök att läsa in den manuellt från kommandoraden för att få mer information om fel. ErrorCantSaveADoneUserWithZeroPercentage=Kan inte spara en åtgärd med "inte Statut startade" om fältet "görs av" är också fylld. ErrorRefAlreadyExists=Ref används för att skapa finns redan. ErrorPleaseTypeBankTransactionReportName=Skriv namn bank kvitto där transaktionen rapporteras (Format ÅÅÅÅMM eller ÅÅÅÅMMDD) ErrorRecordHasChildren=Misslyckades med att radera poster eftersom det har några barns. -ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into other object. +ErrorRecordIsUsedCantDelete=Kan inte ta bort posten. Den används redan eller ingå i annat föremål. ErrorModuleRequireJavascript=Javascript måste inte avaktiveras att ha denna funktion fungerar. Aktivera / inaktivera Javascript, gå till menyn Hem-> Inställningar-> Display. ErrorPasswordsMustMatch=Båda skrivit lösenord måste matcha varandra ErrorContactEMail=Ett tekniskt fel uppstod. Vänligen kontakta administratören att följa e-%s en ge %s felkod i ditt meddelande, eller ännu bättre genom att lägga till en skärm kopia av denna sida. @@ -114,32 +114,33 @@ ErrorLoginDoesNotExists=Användaren med inloggning %s kunde inte hittas. ErrorLoginHasNoEmail=Denna användare har inga e-postadress. Process avbruten. ErrorBadValueForCode=Dåligt värde typer för kod. Försök igen med ett nytt värde ... ErrorBothFieldCantBeNegative=Fält %s och %s kan inte vara både negativt +ErrorQtyForCustomerInvoiceCantBeNegative=Kvantitet för linje i kundfakturor kan inte vara negativt ErrorWebServerUserHasNotPermission=Användarkonto %s användas för att exekvera webbserver har ingen behörighet för den ErrorNoActivatedBarcode=Ingen streckkod typ aktiveras -ErrUnzipFails=Failed to unzip %s with ZipArchive -ErrNoZipEngine=No engine to unzip %s file in this PHP -ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package -ErrorFileRequired=It takes a package Dolibarr file -ErrorPhpCurlNotInstalled=The PHP CURL is not installed, this is essential to talk with Paypal -ErrorFailedToAddToMailmanList=Failed to add record %s to Mailman list %s or SPIP base -ErrorFailedToRemoveToMailmanList=Failed to remove record %s to Mailman list %s or SPIP base -ErrorNewValueCantMatchOldValue=New value can't be equal to old one -ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. -ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server is running (in most cases, you can launch it from command line with 'sudo /etc/init.d/mysql start'). -ErrorFailedToAddContact=Failed to add contact -ErrorDateMustBeBeforeToday=The date can not be greater than today -ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. -ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature. -ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s -ErrorWarehouseMustDiffers=Source and target warehouses must differs -ErrorBadFormat=Bad format! -ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, this member is not yet linked to any thirdparty. Link member to an existing third party or create a new thirdparty before creating subscription with invoice. -ErrorThereIsSomeDeliveries=Error, there is some deliveries linked to this shipment. Deletion refused. -ErrorCantDeletePaymentReconciliated=Can't delete a payment that had generated a bank transaction that was conciliated -ErrorCantDeletePaymentSharedWithPayedInvoice=Can't delete a payment shared by at least one invoice with status Payed +ErrUnzipFails=Det gick inte att packa upp %s med ZipArchive +ErrNoZipEngine=Ingen motor att packa upp %s fil i denna PHP +ErrorFileMustBeADolibarrPackage=Filen %s måste vara ett Dolibarr zip-paket +ErrorFileRequired=Det tar ett paket Dolibarr fil +ErrorPhpCurlNotInstalled=PHP CURL är inte installerat, detta är viktigt för att prata med Paypal +ErrorFailedToAddToMailmanList=Det gick inte att lägga till post %s till Mailman listan %s eller SPIP bas +ErrorFailedToRemoveToMailmanList=Det gick inte att ta bort posten %s till Mailman listan %s eller SPIP bas +ErrorNewValueCantMatchOldValue=Nytt värde kan inte vara lika med gamla +ErrorFailedToValidatePasswordReset=Det gick inte att REINIT lösenord. Kan vara reinit var redan gjort (den här länken kan bara användas en gång). Om inte, försök att starta om reinit processen. +ErrorToConnectToMysqlCheckInstance=Anslut till databasen misslyckas. Kolla Mysql servern är igång (i de flesta fall kan du starta det från kommandoraden med "sudo /etc/init.d/mysql start"). +ErrorFailedToAddContact=Det gick inte att lägga till kontakt +ErrorDateMustBeBeforeToday=Datumet kan inte vara större än i dag +ErrorPaymentModeDefinedToWithoutSetup=Ett betalningsläge var inställt för att skriva %s, men installationen av modulens faktura fördes inte att definiera informationen som ska visas för den här betalningsläget. +ErrorPHPNeedModule=Fel, din PHP måste ha modul %s installerad för att använda den här funktionen. +ErrorOpenIDSetupNotComplete=Du inställning för Dolibarr konfigurationsfil möjliggör OpenID autentisering, men webbadressen OpenID tjänsten definieras inte i ständig %s +ErrorWarehouseMustDiffers=Källa och mål lager måste skiljer +ErrorBadFormat=Dåligt format! +ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Fel, denna medlem ännu kopplad till någon tredjeparts. Länka medlem i en befintlig tredje part eller skapa en ny tredjeparts innan du skapar abonnemang med faktura. +ErrorThereIsSomeDeliveries=Fel, det finns några leveranser kopplade till denna sändning. Radering vägrade. +ErrorCantDeletePaymentReconciliated=Kan inte ta bort en betalning som hade genererat en banktransaktion som conciliated +ErrorCantDeletePaymentSharedWithPayedInvoice=Kan inte ta bort en betalning som delas av minst en faktura med status betalt # Warnings -WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined +WarningMandatorySetupNotComplete=Obligatoriska inställningsparametrarna har ännu inte definierat WarningSafeModeOnCheckExecDir=Varning, PHP alternativ safe_mode är på så kommando måste stoppas in i en katalog som deklarerats av php parameter safe_mode_exec_dir. WarningAllowUrlFopenMustBeOn=Parameter allow_url_fopenär måste vara aktiverat i filer php.ini för att ha den här modulen att fungera. Du måste ändra denna fil manuellt. WarningBuildScriptNotRunned=Script %s ännu inte sprang för att bygga grafik eller det inte finns några data att visa. @@ -148,12 +149,12 @@ WarningPassIsEmpty=Varning, är databasen lösenord tom. Detta är ett säkerhet WarningConfFileMustBeReadOnly=Varning, konfigurationsfilen (htdocs / conf / conf.php) kan din skrivas över av den webbserver. Detta är ett allvarligt säkerhetshål. Ändra behörigheter på fil för att vara i skrivskyddat läge för operativsystem som användare som används av webbservern. Om du använder Windows och FAT format för din disk, måste du veta att det här filsystemet inte är möjligt att lägga till behörigheter för filen, så kan inte vara helt säker. WarningsOnXLines=Varningar om %s källrader WarningNoDocumentModelActivated=Ingen modell för handling generation, har aktiverats. En modell kommer att valde som standard tills du kontrollera din modul konfiguration. -WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable install/migrate tools by adding a file install.lock into directory %s. Missing this file is a security hole. +WarningLockFileDoesNotExists=Varning, när installationen är klar måste du inaktivera installera / migrera verktyg genom att lägga till en fil install.lock i katalogen %s. Saknas denna fil så är det ett säkerhetshål. WarningUntilDirRemoved=Alla säkerhetsvarningar (synlig av admin-användare) förblir aktiv så länge sårbarheten är närvarande (eller att konstant MAIN_REMOVE_INSTALL_WARNING läggs i Start-> Other Setup). -WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. -WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. -WarningClickToDialUserSetupNotComplete=Setup of ClickToDial information for your user are not complete (see tab ClickToDial onto your user card). -WarningNotRelevant=Irrelevant operation for this dataset -WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers. -WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s. -WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters +WarningCloseAlways=Varning, är stängning göras även om beloppet varierar mellan källa och mål element. Aktivera den här funktionen med försiktighet. +WarningUsingThisBoxSlowDown=Varning, använder denna ruta bromsa allvarligt alla sidor som visar lådan. +WarningClickToDialUserSetupNotComplete=Inställning av ClickToDial informationen för ditt användarkonto är inte fullständiga (se fliken ClickToDial på din användarkortet). +WarningNotRelevant=Irrelevant operation för denna datamängd +WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature inaktiveras när display inställning är optimerad för blinda personer eller textbaserade webbläsare. +WarningPaymentDateLowerThanInvoiceDate=Betalningsdag (%s) är tidigare än fakturadatum (%s) för faktura %s. +WarningTooManyDataPleaseUseMoreFilters=För många uppgifter. Använd flera filter diff --git a/htdocs/langs/sv_SE/externalsite.lang b/htdocs/langs/sv_SE/externalsite.lang index 005efed6796..9c74706c846 100644 --- a/htdocs/langs/sv_SE/externalsite.lang +++ b/htdocs/langs/sv_SE/externalsite.lang @@ -1,4 +1,4 @@ # Dolibarr language file - Source file is en_US - externalsite ExternalSiteSetup=Setup länk till extern webbplats ExternalSiteURL=Extern webbplats URL -# ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. +ExternalSiteModuleNotComplete=Modul ExternalSite var inte korrekt konfigurerad. diff --git a/htdocs/langs/sv_SE/ftp.lang b/htdocs/langs/sv_SE/ftp.lang index 6699a7be8ef..17a8cfaf436 100644 --- a/htdocs/langs/sv_SE/ftp.lang +++ b/htdocs/langs/sv_SE/ftp.lang @@ -9,4 +9,4 @@ FailedToConnectToFTPServer=Misslyckades att ansluta till FTP-server (%s server p FailedToConnectToFTPServerWithCredentials=Det gick inte att logga in på FTP-servern med definierade login / lösenord FTPFailedToRemoveFile=Misslyckades med att ta bort fil %s. FTPFailedToRemoveDir=Misslyckades med att ta bort katalogen %s (Kontrollera behörigheter och att katalogen är tom). -# FTPPassiveMode=Passive mode +FTPPassiveMode=Passivt läge diff --git a/htdocs/langs/sv_SE/help.lang b/htdocs/langs/sv_SE/help.lang index 0c590f1337e..be926acaa14 100644 --- a/htdocs/langs/sv_SE/help.lang +++ b/htdocs/langs/sv_SE/help.lang @@ -24,5 +24,5 @@ BackToHelpCenter=Annars, här klickar du gå tillbaka för att hjä LinkToGoldMember=Du kan ringa en av de tränare förvalda genom Dolibarr för ditt språk (%s) genom att klicka på hans Widget (status och högsta pris uppdateras automatiskt): PossibleLanguages=Språk som stöds MakeADonation=Hjälp Dolibarr projekt, göra en donation -# SubscribeToFoundation=Help Dolibarr project, subscribe to the foundation -# SeeOfficalSupport=For official Dolibarr support in your language:
%s +SubscribeToFoundation=Hjälp Dolibarr projektet, prenumerera på stiftelsen +SeeOfficalSupport=För officiell Dolibarr support på ditt språk:
%s diff --git a/htdocs/langs/sv_SE/holiday.lang b/htdocs/langs/sv_SE/holiday.lang index fb2f003cfcb..b28cbbb5fbb 100644 --- a/htdocs/langs/sv_SE/holiday.lang +++ b/htdocs/langs/sv_SE/holiday.lang @@ -1,149 +1,149 @@ # Dolibarr language file - Source file is en_US - holiday HRM=HRM -Holidays=Leaves -CPTitreMenu=Leaves -MenuReportMonth=Monthly statement -MenuAddCP=Make a leave request -NotActiveModCP=You must enable the module Leaves to view this page. -NotConfigModCP=You must configure the module Leaves to view this page. To do this, click here . -NoCPforUser=You don't have any available day. -AddCP=Make a leave request -Employe=Employee +Holidays=Löv +CPTitreMenu=Löv +MenuReportMonth=Månatlig rapport +MenuAddCP=Gör en förfrågan ledighet +NotActiveModCP=Du måste aktivera modulen Löv att se denna sida. +NotConfigModCP=Du måste konfigurera modulen Lämnar för att se den här sidan. För att göra detta, klicka här . +NoCPforUser=Du har inte någon tillgänglig dag. +AddCP=Gör en förfrågan ledighet +Employe=Anställd DateDebCP=Startdatum DateFinCP=Slutdatum DateCreateCP=Datum för skapande DraftCP=Utkast -ToReviewCP=Awaiting approval +ToReviewCP=Väntar på godkännande ApprovedCP=Godkänd CancelCP=Annullerad RefuseCP=Refused ValidatorCP=Approbator -ListeCP=List of leaves -ReviewedByCP=Will be reviewed by +ListeCP=Lista över blad +ReviewedByCP=Kommer att granskas av DescCP=Beskrivning -SendRequestCP=Create leave request -DelayToRequestCP=Leave requests must be made at least %s day(s) before them. -MenuConfCP=Edit balance of leaves -UpdateAllCP=Update the leaves -SoldeCPUser=Leaves balance is %s days. -ErrorEndDateCP=You must select an end date greater than the start date. -ErrorSQLCreateCP=An SQL error occurred during the creation: -ErrorIDFicheCP=An error has occurred, the leave request does not exist. -ReturnCP=Return to previous page -ErrorUserViewCP=You are not authorized to read this leave request. -InfosCP=Information of the leave request +SendRequestCP=Skapa permission begäran +DelayToRequestCP=Lämna begäran måste göras minst %s dag (ar) före dem. +MenuConfCP=Redigera balans blad +UpdateAllCP=Uppdatera bladen +SoldeCPUser=Lämnar balans är %s dagar. +ErrorEndDateCP=Du måste välja ett slutdatum senare än startdatum. +ErrorSQLCreateCP=Ett SQL-fel uppstod under skapandet: +ErrorIDFicheCP=Ett fel har uppstått, inte existerar begäran ledighet. +ReturnCP=Tillbaka till föregående sida +ErrorUserViewCP=Du har inte behörighet att läsa denna ledighet begäran. +InfosCP=Information om begäran ledigheten InfosWorkflowCP=Information Workflow -RequestByCP=Requested by -TitreRequestCP=Leave request -NbUseDaysCP=Number of days of vacation consumed +RequestByCP=Begäran från +TitreRequestCP=Lämna begäran +NbUseDaysCP=Antal dagars semester konsumeras EditCP=Redigera DeleteCP=Ta bort ActionValidCP=Validate -ActionRefuseCP=Refuse +ActionRefuseCP=Vägra ActionCancelCP=Avbryt StatutCP=Status -SendToValidationCP=Send to validation -TitleDeleteCP=Delete the leave request -ConfirmDeleteCP=Confirm the deletion of this leave request? -ErrorCantDeleteCP=Error you don't have the right to delete this leave request. -CantCreateCP=You don't have the right to make leave requests. -InvalidValidatorCP=You must choose an approbator to your leave request. +SendToValidationCP=Skicka till validering +TitleDeleteCP=Radera begäran ledighet +ConfirmDeleteCP=Bekräfta raderingen av denna ledighet förfrågan? +ErrorCantDeleteCP=Fel att du inte har rätt att ta bort denna ledighet begäran. +CantCreateCP=Du har inte rätt att göra ledighet förfrågningar. +InvalidValidatorCP=Du måste välja en approbator till din ledighet förfrågan. UpdateButtonCP=Uppdatera -CantUpdate=You cannot update this leave request. -NoDateDebut=You must select a start date. -NoDateFin=You must select an end date. -ErrorDureeCP=Your request for holidays does not contain working day. -TitleValidCP=Approve the request holidays -ConfirmValidCP=Are you sure you want to approve the leave request? -DateValidCP=Date approved -TitleToValidCP=Send leave request -ConfirmToValidCP=Are you sure you want to send the leave request? -TitleRefuseCP=Refuse the request holidays -ConfirmRefuseCP=Are you sure you want to refuse the leave request? -NoMotifRefuseCP=You must choose a reason for refusing the request. -TitleCancelCP=Cancel the request holidays -ConfirmCancelCP=Are you sure you want to cancel the leave request? -DetailRefusCP=Reason for refusal -DateRefusCP=Date of refusal -DateCancelCP=Date of cancellation -DefineEventUserCP=Assign an exceptional leave for a user -addEventToUserCP=Assign leave +CantUpdate=Du kan inte uppdatera denna ledighet begäran. +NoDateDebut=Du måste välja ett startdatum. +NoDateFin=Du måste välja ett slutdatum. +ErrorDureeCP=Din ledighet framställningen inte innehåller arbetsdag. +TitleValidCP=Godkänna begäran ledighet +ConfirmValidCP=Är du säker på att du vill godkänna begäran ledighet? +DateValidCP=Datum godkänd +TitleToValidCP=Skicka permission begäran +ConfirmToValidCP=Är du säker på att du vill skicka en begäran ledighet? +TitleRefuseCP=Avslå begäran ledighet +ConfirmRefuseCP=Är du säker på att du vill avslå begäran ledighet? +NoMotifRefuseCP=Du måste välja ett skäl för att vägra begäran. +TitleCancelCP=Avbryta begäran ledighet +ConfirmCancelCP=Är du säker på att du vill avbryta din semester? +DetailRefusCP=Orsak till avslag +DateRefusCP=Datum för avslag +DateCancelCP=Datum för annullering +DefineEventUserCP=Tilldela en exceptionell ledighet för en användare +addEventToUserCP=Tilldela ledighet MotifCP=Reason UserCP=Användare -ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. -AddEventToUserOkCP=The addition of the exceptional leave has been completed. -MenuLogCP=View logs of leave requests -LogCP=Log of updates of available vacation days -ActionByCP=Performed by -UserUpdateCP=For the user -PrevSoldeCP=Previous Balance +ErrorAddEventToUserCP=Ett fel uppstod när den exceptionella ledighet. +AddEventToUserOkCP=Tillägget av den exceptionella ledigheten har slutförts. +MenuLogCP=Visa loggar för ledighet förfrågningar +LogCP=Log av uppdateringar av tillgängliga semesterdagar +ActionByCP=Framförd av +UserUpdateCP=För användaren +PrevSoldeCP=Föregående Balance NewSoldeCP=New Balance -alreadyCPexist=A request for holidays has already been done on this period. +alreadyCPexist=En begäran ledigheten har redan gjorts på denna period. UserName=Namn -Employee=Employee -FirstDayOfHoliday=First day of vacation -LastDayOfHoliday=Last day of vacation -HolidaysMonthlyUpdate=Monthly update -ManualUpdate=Manual update -HolidaysCancelation=Leave request cancelation +Employee=Anställd +FirstDayOfHoliday=Första dagen på semestern +LastDayOfHoliday=Sista dagen på semestern +HolidaysMonthlyUpdate=Månads uppdatering +ManualUpdate=Manuell uppdatering +HolidaysCancelation=Lämna begäran Spärr ## Configuration du Module ## -ConfCP=Configuration of holidays module -DescOptionCP=Description of the option +ConfCP=Konfiguration av ledighet begäran modul +DescOptionCP=Beskrivning av alternativ ValueOptionCP=Värde -GroupToValidateCP=Group with the ability to approve vacation -ConfirmConfigCP=Validate the configuration -LastUpdateCP=Last automatic update of vacation -UpdateConfCPOK=Updated successfully. -ErrorUpdateConfCP=An error occurred during the update, please try again. -AddCPforUsers=Please add the balance of holidays of users by clicking here. -DelayForSubmitCP=Deadline to apply for holidays -AlertapprobatortorDelayCP=Prevent the approbator if the holiday request does not match the deadline -AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay -AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance -nbUserCP=Number of users supported in the module Leaves -nbHolidayDeductedCP=Number of holidays to be deducted per day of vacation taken -nbHolidayEveryMonthCP=Number of vacation days added every month -Module27130Name= Management of leave requests -Module27130Desc= Management of leave requests -TitleOptionMainCP=Main settings of Leave request -TitleOptionEventCP=Settings of leave requets for events +GroupToValidateCP=Grupp med möjlighet att godkänna ledighet förfrågningar +ConfirmConfigCP=Bekräfta konfigurationen +LastUpdateCP=Senast automatisk uppdatering av löv fördelning +UpdateConfCPOK=Uppdaterats. +ErrorUpdateConfCP=Ett fel uppstod under uppdateringen, vänligen försök igen. +AddCPforUsers=Vänligen lägg till balansen i bladen fördelning av användare genom att klicka här . +DelayForSubmitCP=Sista dag för att göra en ledighet förfrågningar +AlertapprobatortorDelayCP=Förhindra approbator om begäran ledigheten inte matchar den tidsfrist +AlertValidatorDelayCP=Préevent den approbator om begäran ledigheten överskrider fördröjning +AlertValidorSoldeCP=Förhindra approbator om begäran ledigheten överstiga balansen +nbUserCP=Antal användare stöds i modul Löv +nbHolidayDeductedCP=Antal semesterdagar som skall dras av per dag semester tas +nbHolidayEveryMonthCP=Antal semesterdagar till varje månad +Module27130Name= Hantering av ledighet förfrågningar +Module27130Desc= Hantering av ledighet förfrågningar +TitleOptionMainCP=Huvudinställningar ledighet begäran +TitleOptionEventCP=Inställningar av ledighets begäran därom för evenemang ValidEventCP=Validate -UpdateEventCP=Update events +UpdateEventCP=Uppdateringshändelser CreateEventCP=Skapa -NameEventCP=Event name -OkCreateEventCP=The addition of the event went well. -ErrorCreateEventCP=Error creating the event. -UpdateEventOkCP=The update of the event went well. -ErrorUpdateEventCP=Error while updating the event. -DeleteEventCP=Delete Event -DeleteEventOkCP=The event has been deleted. -ErrorDeleteEventCP=Error while deleting the event. -TitleDeleteEventCP=Delete a exceptional leave -TitleCreateEventCP=Create a exceptional leave -TitleUpdateEventCP=Edit or delete a exceptional leave +NameEventCP=Händelsenamn +OkCreateEventCP=Tillsatsen av händelsen gick bra. +ErrorCreateEventCP=Fel skapa händelsen. +UpdateEventOkCP=Uppdateringen av händelsen gick bra. +ErrorUpdateEventCP=Fel vid uppdatering av händelsen. +DeleteEventCP=Radera Händelse +DeleteEventOkCP=Händelsen har tagits bort. +ErrorDeleteEventCP=Fel vid borttagning av händelsen. +TitleDeleteEventCP=Radera ett särskilt tillstånd +TitleCreateEventCP=Skapa ett särskilt tillstånd +TitleUpdateEventCP=Redigera eller ta bort ett särskilt tillstånd DeleteEventOptionCP=Ta bort UpdateEventOptionCP=Uppdatera -ErrorMailNotSend=An error occurred while sending email: -NoCPforMonth=No leave this month. -nbJours=Number days -TitleAdminCP=Configuration of Leaves +ErrorMailNotSend=Ett fel uppstod när du skickar e-post: +NoCPforMonth=Ingen lämnar denna månad. +nbJours=Antal dagar +TitleAdminCP=Konfiguration av Leaves #Messages -Hello=Hello -HolidaysToValidate=Validate leave requests -HolidaysToValidateBody=Below is a leave request to validate -HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. -HolidaysToValidateAlertSolde=The user who made this leave reques do not have enough available days. -HolidaysValidated=Validated leave requests -HolidaysValidatedBody=Your leave request for %s to %s has been validated. -HolidaysRefused=Request denied -HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : -HolidaysCanceled=Canceled leaved request -HolidaysCanceledBody=Your leave request for %s to %s has been canceled. -Permission20000=Read you own leave requests -Permission20001=Create/modify your leave requests -Permission20002=Create/modify leave requests for everybody -Permission20003=Delete leave requests -Permission20004=Setup users available vacation days -Permission20005=Review log of modified leave requests -Permission20006=Read leaves monthly report +Hello=Hallå +HolidaysToValidate=Validera ledighets förfrågningar +HolidaysToValidateBody=Nedan finns en ledighet begäran om att validera +HolidaysToValidateDelay=Denna ledighet begäran kommer att ske inom en period på mindre än %s dagar. +HolidaysToValidateAlertSolde=Användaren som gjort detta lämnar de krävs inte har tillräckligt med tillgängliga dagar. +HolidaysValidated=Validerade ledighets förfrågningar +HolidaysValidatedBody=Din ledighets begäran om %s till %s har validerats. +HolidaysRefused=Begäran nekades +HolidaysRefusedBody=Din ledighet begäran om %s till %s har nekats av följande skäl: +HolidaysCanceled=Annulleras leaved begäran +HolidaysCanceledBody=Din ledighet begäran om %s till %s har avbrutits. +Permission20000=Läs du äger ledighet förfrågningar +Permission20001=Skapa / ändra dina ledighet förfrågningar +Permission20002=Skapa / ändra ledighetsansökningar för alla +Permission20003=Radera ledighets förfrågningar +Permission20004=Setup användare tillgängliga semesterdagar +Permission20005=Omdöme logg över modifierade ledighets förfrågningar +Permission20006=Läs lämnar månadsrapport diff --git a/htdocs/langs/sv_SE/languages.lang b/htdocs/langs/sv_SE/languages.lang index 40613aa97b2..1c0bdd80aa2 100644 --- a/htdocs/langs/sv_SE/languages.lang +++ b/htdocs/langs/sv_SE/languages.lang @@ -10,7 +10,7 @@ Language_da_DA=Danska Language_da_DK=Danskt Language_de_DE=Tyska Language_de_AT=Tyska (Österrike) -Language_de_CH=German (Switzerland) +Language_de_CH=Tyska (Schweiz) Language_el_GR=Grekiska Language_en_AU=Engelska (Australien) Language_en_GB=Engelska (Storbritannien) @@ -20,7 +20,7 @@ Language_en_SA=Engelska (Saudiarabien) Language_en_US=Engelska (USA) Language_en_ZA=Engelska (Sydafrika) Language_es_ES=Spanska -Language_es_DO=Spanish (Dominican Republic) +Language_es_DO=Spanska (Dominikanska republiken) Language_es_AR=Spanska (Argentina) Language_es_CL=Spanska (Chile) Language_es_HN=Spanska (Honduras) @@ -40,7 +40,7 @@ Language_fr_NC=Franska (Nya Kaledonien) Language_he_IL=Hebreiska Language_hr_HR=Kroatiska Language_hu_HU=Ungerska -Language_id_ID=Indonesian +Language_id_ID=Indonesiska Language_is_IS=Isländska Language_it_IT=Italienska Language_ja_JP=Japanska diff --git a/htdocs/langs/sv_SE/link.lang b/htdocs/langs/sv_SE/link.lang index 8b1efb75ef3..8601aba8abf 100644 --- a/htdocs/langs/sv_SE/link.lang +++ b/htdocs/langs/sv_SE/link.lang @@ -1,8 +1,8 @@ -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 '%s' -ErrorFailedToUpdateLink= Failed to update link '%s' +LinkANewFile=Länka en ny fil / dokument +LinkedFiles=Länkade filer och dokument +NoLinkFound=Inga registrerade länkar +LinkComplete=Filen har kopplats framgångsrikt +ErrorFileNotLinked=Filen kunde inte kopplas +LinkRemoved=Länken %s har tagits bort +ErrorFailedToDeleteLink= Det gick inte att ta bort länk '%s' +ErrorFailedToUpdateLink= Det gick inte att uppdatera länken '%s' diff --git a/htdocs/langs/sv_SE/mailmanspip.lang b/htdocs/langs/sv_SE/mailmanspip.lang index 4df2bf08bde..1568d28175b 100644 --- a/htdocs/langs/sv_SE/mailmanspip.lang +++ b/htdocs/langs/sv_SE/mailmanspip.lang @@ -1,27 +1,27 @@ # Dolibarr language file - Source file is en_US - mailmanspip -# MailmanSpipSetup=Mailman and SPIP module Setup -# MailmanTitle=Mailman mailing list system -# TestSubscribe=To test subscription to Mailman lists -# TestUnSubscribe=To test unsubscribe from Mailman lists -# MailmanCreationSuccess=Subscription test was executed succesfully -# MailmanDeletionSuccess=Unsubscription test was executed succesfully -# SynchroMailManEnabled=A Mailman update will be performed -# SynchroSpipEnabled=A Spip update will be performed -# DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password -# DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions -# DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions -# DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) -# SPIPTitle=SPIP Content Management System -# DescADHERENT_SPIP_SERVEUR=SPIP Server -# DescADHERENT_SPIP_DB=SPIP database name -# DescADHERENT_SPIP_USER=SPIP database login -# DescADHERENT_SPIP_PASS=SPIP database password -# AddIntoSpip=Add into SPIP -# AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? -# AddIntoSpipError=Failed to add the user in SPIP -# DeleteIntoSpip=Remove from SPIP -# DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? -# DeleteIntoSpipError=Failed to suppress the user from SPIP -# SPIPConnectionFailed=Failed to connect to SPIP -# SuccessToAddToMailmanList=Add of %s to mailman list %s or SPIP database done -# SuccessToRemoveToMailmanList=Removal of %s from mailman list %s or SPIP database done +MailmanSpipSetup=Brevbärare och SPIP modul Setup +MailmanTitle=Mailman sändlista systemet +TestSubscribe=För att testa prenumeration på Mailman listor +TestUnSubscribe=För att testa unsubscribe från Mailman listor +MailmanCreationSuccess=Prenumerations testet utfördes framgångsrikt +MailmanDeletionSuccess=Avbeställning testet utfördes framgångsrikt +SynchroMailManEnabled=En Mailman uppdatering kommer att utföras +SynchroSpipEnabled=En SPIP uppdatering kommer att utföras +DescADHERENT_MAILMAN_ADMINPW=Mailman administratörslösenord +DescADHERENT_MAILMAN_URL=URL för Mailman prenumerationer +DescADHERENT_MAILMAN_UNSUB_URL=URL för Mailman unsubscriptions +DescADHERENT_MAILMAN_LISTS=List (ar) för automatisk inskription av nya medlemmar (separerade med ett kommatecken) +SPIPTitle=SPIP Content Management System +DescADHERENT_SPIP_SERVEUR=SPIP Server +DescADHERENT_SPIP_DB=SPIP databasnamn +DescADHERENT_SPIP_USER=SPIP databas inloggning +DescADHERENT_SPIP_PASS=SPIP databas lösenord +AddIntoSpip=Lägg till SPIP +AddIntoSpipConfirmation=Är du säker på att du vill lägga till denna medlem i SPIP? +AddIntoSpipError=Det gick inte att lägga till användaren i SPIP +DeleteIntoSpip=Ta bort från SPIP +DeleteIntoSpipConfirmation=Är du säker på att du vill ta bort den här medlemmen från SPIP? +DeleteIntoSpipError=Det gick inte att undertrycka användaren från SPIP +SPIPConnectionFailed=Det gick inte att ansluta till SPIP +SuccessToAddToMailmanList=Lägg till %s till mailman listan %s eller SPIP databas gjort +SuccessToRemoveToMailmanList=Borttagning av %s från mailman listan %s eller SPIP databas gjort diff --git a/htdocs/langs/sv_SE/main.lang b/htdocs/langs/sv_SE/main.lang index 15fde81699e..968cc1fc3d8 100644 --- a/htdocs/langs/sv_SE/main.lang +++ b/htdocs/langs/sv_SE/main.lang @@ -58,12 +58,12 @@ ErrorCantLoadUserFromDolibarrDatabase=Det gick inte att hitta användare %s%s +NoLogoutProcessWithAuthMode=Ingen applikativ koppling funktionen med autentisering läge %s Connection=Anslutning Setup=Setup Alert=Alert @@ -266,6 +266,7 @@ Afternoon=Eftermiddag Quadri=Quadri MonthOfDay=Dagens månad HourShort=H +MinuteShort=mn Rate=Sats UseLocalTax=Inkludera skatt Bytes=Bytes @@ -314,7 +315,7 @@ Total=Summa SubTotal=Delsumma TotalHTShort=Summa (netto) TotalTTCShort=Summa (inkl. moms) -TotalHT=Total (netto efter skatt) +TotalHT=Totalt (netto) TotalHTforthispage=Summa (exkl. skatt) för denna sida TotalTTC=Summa (inkl. moms) TotalTTCToYourCredit=Summa kredit (inkl. moms) @@ -340,6 +341,7 @@ FullList=Fullständig lista Statistics=Statistik OtherStatistics=Övrig statistik Status=Status +Favorite=Favorit ShortInfo=Info Ref=Ref. RefSupplier=Ref. leverantör @@ -356,7 +358,7 @@ ActionNotApplicable=Ej tillämpligt ActionRunningNotStarted=Inte påbörjats ActionRunningShort=Började ActionDoneShort=Färdiga -ActionUncomplete=Uncomplete +ActionUncomplete=Icke klar CompanyFoundation=Företag / stiftelse ContactsForCompany=Kontakter till denna tredje part ContactsAddressesForCompany=Kontakter / adresser för denna tredje part @@ -508,7 +510,7 @@ NbOfCustomers=Antal kunder NbOfLines=Antal rader NbOfObjects=Antal objekt NbOfReferers=Antal hänvisningsadresserna -Referers=Refering objects +Referers=Hänvisnings objekt TotalQuantity=Total kvantitet DateFromTo=Från %s till %s DateFrom=Från %s @@ -541,7 +543,7 @@ Undo=Ångra Redo=Gör om ExpandAll=Expandera alla UndoExpandAll=Ångra expandera -Reason=Reason +Reason=Orsak FeatureNotYetSupported=Funktionen inte stöds ännu CloseWindow=Stäng fönster Question=Fråga @@ -552,16 +554,16 @@ MailSentBy=E-post skickas med TextUsedInTheMessageBody=E-organ SendAcknowledgementByMail=Skicka Ack. via e-post NoEMail=Ingen e-post -NoMobilePhone=No mobile phone +NoMobilePhone=Ingen mobiltelefon Owner=Ägare -DetectedVersion=Upptäckta version +DetectedVersion=Upptäckt version FollowingConstantsWillBeSubstituted=Följande konstanter kommer att ersätta med motsvarande värde. Refresh=Uppdatera BackToList=Tillbaka till listan GoBack=Gå tillbaka CanBeModifiedIfOk=Kan ändras om det är giltigt CanBeModifiedIfKo=Kan ändras om inte giltigt -RecordModifiedSuccessfully=Record ändrades korrekt +RecordModifiedSuccessfully=Post ändrades korrekt RecordsModified=%s poster ändrade AutomaticCode=Automatisk kod NotManaged=Inte lyckats @@ -578,7 +580,7 @@ TotalWoman=Totalt TotalMan=Totalt NeverReceived=Aldrig fick Canceled=Annullerad -YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu setup - dictionary +YouCanChangeValuesForThisListFromDictionarySetup=Du kan ändra värden för denna lista från menyinställning - ordbok Color=Färg Documents=Länkade filer DocumentsNb=Länkade filer (%s) @@ -593,7 +595,7 @@ ThisLimitIsDefinedInSetup=Dolibarr gräns (meny hem-setup-säkerhet): %s Kb, PHP NoFileFound=Inga dokument har sparats i denhär katalogen CurrentUserLanguage=Nuvarande språk CurrentTheme=Nuvarande tema -CurrentMenuManager=Current menu manager +CurrentMenuManager=Nuvarande menyhanterare DisabledModules=Avaktiverade moduler For=För ForCustomer=För kund @@ -607,13 +609,13 @@ Notes=Anteckningar AddNewLine=Lägg till ny rad AddFile=Lägg till fil ListOfFiles=Förteckning över tillgängliga filer -FreeZone=Free entry -FreeLineOfType=Free entry of type +FreeZone=Fritt inlägg +FreeLineOfType=Fritt inlägg typ CloneMainAttributes=Klona objekt med dess viktigaste attribut PDFMerge=PDF-dokument Merge=Sammanfoga PrintContentArea=Visa sidan för att skriva ut huvudinnehållet -MenuManager=Menu manager +MenuManager=Menyhanteraren NoMenu=Ingen undermeny WarningYouAreInMaintenanceMode=Varning, du är i en underhållsmode, så bara login %s får använda tillämpningen för tillfället. CoreErrorTitle=Systemfel @@ -645,6 +647,7 @@ OptionalFieldsSetup=Extra attribut inställning URLPhoto=URL foto / logo SetLinkToThirdParty=Länk till en annan tredje part CreateDraft=Skapa utkast +SetToDraft=Tillbaka till utkast ClickToEdit=Klicka för att redigera ObjectDeleted=Objekt %s raderad ByCountry=Per land @@ -663,7 +666,7 @@ ModulesSystemTools=Modulverktyg Test=Test Element=Element NoPhotoYet=Inga bilder tillgängliga -HomeDashboard=Home summary +HomeDashboard=Hem översikt Deductible=Avdragsgill from=från toward=mot @@ -672,13 +675,13 @@ HelpCopyToClipboard=Använd Ctrl+C för att kopiera till klippbordet SaveUploadedFileWithMask=Spara filen på servern med namnet "%s" (annars "%s") OriginFileName=Ursprungligt filnamn SetDemandReason=Ställ in källa -SetBankAccount=Define Bank Account -AccountCurrency=Account Currency +SetBankAccount=Definiera bankkonto +AccountCurrency=Konto valuta ViewPrivateNote=Se noter XMoreLines=%s rader osynliga PublicUrl=Offentlig webbadress -AddBox=Add box - +AddBox=Lägg till låda +SelectElementAndClickRefresh=Välj ett element och klicka på uppdatera # Week day Monday=Måndag Tuesday=Tisdag diff --git a/htdocs/langs/sv_SE/members.lang b/htdocs/langs/sv_SE/members.lang index 63e23311d96..6110d5aa422 100644 --- a/htdocs/langs/sv_SE/members.lang +++ b/htdocs/langs/sv_SE/members.lang @@ -85,7 +85,7 @@ SubscriptionLateShort=Sent SubscriptionNotReceivedShort=Aldrig fått ListOfSubscriptions=Förteckning över abonnemang SendCardByMail=Sänd kort via e-post -AddMember=Lägg till medlem +AddMember=Skapa medlem NoTypeDefinedGoToSetup=Ingen medlem definierade typer. Gå till Setup - Medlemmar typer NewMemberType=Ny medlemstyp WelcomeEMail=Välkomst e-post @@ -125,7 +125,7 @@ Date=Datum DateAndTime=Datum och tid PublicMemberCard=Medlem offentlig kort MemberNotOrNoMoreExpectedToSubscribe=Medlem som inte eller inte mer förväntas prenumerera -AddSubscription=Lägg till prenumeration +AddSubscription=Skapa prenumeration ShowSubscription=Visa prenumeration MemberModifiedInDolibarr=Medlem ändrad i Dolibarr SendAnEMailToMember=Skicka informations-e-post till medlem diff --git a/htdocs/langs/sv_SE/opensurvey.lang b/htdocs/langs/sv_SE/opensurvey.lang index ea04e5fd922..c5403b5cff7 100644 --- a/htdocs/langs/sv_SE/opensurvey.lang +++ b/htdocs/langs/sv_SE/opensurvey.lang @@ -1,66 +1,66 @@ # Dolibarr language file - Source file is en_US - opensurvey -# Survey=Poll -# Surveys=Polls -# OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select type of poll... -# NewSurvey=New poll -# NoSurveysInDatabase=%s poll(s) into database. -# OpenSurveyArea=Polls area -# AddACommentForPoll=You can add a comment into poll... -# AddComment=Add comment -# CreatePoll=Create poll -# PollTitle=Poll title -# ToReceiveEMailForEachVote=Receive an email for each vote -# TypeDate=Type date -# TypeClassic=Type standard -# OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it -# RemoveAllDays=Remove all days -# CopyHoursOfFirstDay=Copy hours of first day -# RemoveAllHours=Remove all hours -# SelectedDays=Selected days -# TheBestChoice=The best choice currently is -# TheBestChoices=The best choices currently are -# with=with -# OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. -# CommentsOfVoters=Comments of voters -# ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) -# RemovePoll=Remove poll -# UrlForSurvey=URL to communicate to get a direct access to poll -# PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: -# CreateSurveyDate=Create a date poll -# CreateSurveyStandard=Create a standard poll -# CheckBox=Simple checkbox -# YesNoList=List (empty/yes/no) -# PourContreList=List (empty/for/against) -# AddNewColumn=Add new column -# TitleChoice=Choice label -# ExportSpreadsheet=Export result spreadsheet +Survey=Enkät +Surveys=Enkäter +OrganizeYourMeetingEasily=Organisera dina möten och enkäter lätt. Först välj typ av enkät ... +NewSurvey=Ny enkät +NoSurveysInDatabase=%s enkät (er) i databasen. +OpenSurveyArea=Enkät område +AddACommentForPoll=You can add a comment into poll... +AddComment=Lägg till kommentar +CreatePoll=Skapa enkät +PollTitle=Enkät titel +ToReceiveEMailForEachVote=Receive an email for each vote +TypeDate=Typ Datum +TypeClassic=Typ standard +OpenSurveyStep2=Select your dates amoung the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it +RemoveAllDays=Ta bort alla dagar +CopyHoursOfFirstDay=Kopiera timmar av första dagen +RemoveAllHours=Remove all hours +SelectedDays=Selected days +TheBestChoice=The best choice currently is +TheBestChoices=The best choices currently are +with=med +OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. +CommentsOfVoters=Comments of voters +ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) +RemovePoll=Radera enkäten +UrlForSurvey=URL to communicate to get a direct access to poll +PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: +CreateSurveyDate=Skapa en datum enkät +CreateSurveyStandard=Skapa en vanlig enkät +CheckBox=Enkel checkbox +YesNoList=List (tom/ja/nej) +PourContreList=Lista (tom/för/emot) +AddNewColumn=Lägg till ny kolumn +TitleChoice=Val av etikett +ExportSpreadsheet=Export result spreadsheet ExpireDate=Begränsa datum -# NbOfSurveys=Number of polls -# NbOfVoters=Nb of voters -# SurveyResults=Results -# PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. -# 5MoreChoices=5 more choices -# Abstention=Abstention -# Against=Against -# YouAreInivitedToVote=You are invited to vote for this poll -# VoteNameAlreadyExists=This name was already used for this poll -# ErrorPollDoesNotExists=Error, poll %s does not exists. -# OpenSurveyNothingToSetup=There is no specific setup to do. -# PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. -# AddADate=Add a date -# AddStartHour=Add start hour -# AddEndHour=Add end hour -# votes=vote(s) -# NoCommentYet=No comments have been posted for this poll yet -# CanEditVotes=Can change vote of others -# CanComment=Voters can comment in the poll -# CanSeeOthersVote=Voters can see other people's vote -# SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. -# BackToCurrentMonth=Back to current month -# ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation -# ErrorOpenSurveyOneChoice=Enter at least one choice -# ErrorOpenSurveyDateFormat=Date must have the format YYYY-MM-DD -# ErrorInsertingComment=There was an error while inserting your comment -# MoreChoices=Enter more choices for the voters -# SurveyExpiredInfo=The voting time of this poll has expired. -# EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s +NbOfSurveys=Antal enkäter +NbOfVoters=Antal av väljarna +SurveyResults=Resultat +PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. +5MoreChoices=5 more choices +Abstention=Abstention +Against=Mot +YouAreInivitedToVote=You are invited to vote for this poll +VoteNameAlreadyExists=This name was already used for this poll +ErrorPollDoesNotExists=Error, poll %s does not exists. +OpenSurveyNothingToSetup=Det finns ingen specifik inställning att göra. +PollWillExpire=Your poll will expire automatically %s days after the last date of your poll. +AddADate=Lägg till ett datum +AddStartHour=Lägg till start tid +AddEndHour=Lägg till slut tid +votes=röst (er) +NoCommentYet=No comments have been posted for this poll yet +CanEditVotes=Can change vote of others +CanComment=Voters can comment in the poll +CanSeeOthersVote=Voters can see other people's vote +SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format :
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. +BackToCurrentMonth=Back to current month +ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation +ErrorOpenSurveyOneChoice=Ange minst ett val +ErrorOpenSurveyDateFormat=Datum måste ha formatet ÅÅÅÅ-MM-DD +ErrorInsertingComment=Det uppstod ett fel när du skapa din kommentar +MoreChoices=Enter more choices for the voters +SurveyExpiredInfo=The voting time of this poll has expired. +EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s diff --git a/htdocs/langs/sv_SE/orders.lang b/htdocs/langs/sv_SE/orders.lang index 6ea791fb212..892578e5a6c 100644 --- a/htdocs/langs/sv_SE/orders.lang +++ b/htdocs/langs/sv_SE/orders.lang @@ -2,7 +2,7 @@ OrdersArea=Kunder order område SuppliersOrdersArea=Leverantörer order område OrderCard=Beställ kort -# OrderId=Order Id +OrderId=Order Id Order=Beställ Orders=Beställningar OrderLine=Orderrad @@ -28,7 +28,7 @@ StatusOrderCanceledShort=Annullerad StatusOrderDraftShort=Förslag StatusOrderValidatedShort=Validerad StatusOrderSentShort=I processen -# StatusOrderSent=Shipment in process +StatusOrderSent=Sändning pågår StatusOrderOnProcessShort=Den process StatusOrderProcessedShort=Bearbetade StatusOrderToBillShort=Till Bill @@ -53,9 +53,9 @@ ShippingExist=En sändning föreligger DraftOrWaitingApproved=Förslag eller godkänts ännu ej beställas DraftOrWaitingShipped=Förslag eller godkännas ännu inte sändas MenuOrdersToBill=Order till faktura -# MenuOrdersToBill2=Orders to bill +MenuOrdersToBill2=Order till faktura SearchOrder=Sök ordning -# SearchACustomerOrder=Search a customer order +SearchACustomerOrder=Sök en kundorder ShipProduct=Ship produkt Discount=Rabatt CreateOrder=Skapa ordning @@ -65,14 +65,14 @@ ValidateOrder=Verifiera att UnvalidateOrder=Unvalidate För DeleteOrder=Radera ordning CancelOrder=Avbryt för -AddOrder=Lägg ordning +AddOrder=Skapa order AddToMyOrders=Lägg till i mitt order AddToOtherOrders=Lägg till övriga beställningar -# AddToDraftOrders=Add to draft order +AddToDraftOrders=Lägg till förlags order ShowOrder=Visa att NoOpenedOrders=Ingen öppnade order NoOtherOpenedOrders=Ingen annan öppnas order -# NoDraftOrders=No draft orders +NoDraftOrders=Inga förslag till beslut OtherOrders=Övriga beställningar LastOrders=Senaste %s order LastModifiedOrders=Senast %s uppdaterad order @@ -82,7 +82,7 @@ NbOfOrders=Antal order OrdersStatistics=Beställ statistik OrdersStatisticsSuppliers=Leverantören för statistik NumberOfOrdersByMonth=Antal beställningar per månad -# AmountOfOrdersByMonthHT=Amount of orders by month (net of tax) +AmountOfOrdersByMonthHT=Mängd order per månad (netto efter skatt) ListOfOrders=Lista över beställningar CloseOrder=Stäng ordning ConfirmCloseOrder=Är du säker på att du vill stänga denna beställning? När en order är stängd, kan den bara faktureras. @@ -93,7 +93,7 @@ ConfirmUnvalidateOrder=Är du säker på att du vill återställa ordningen % ConfirmCancelOrder=Är du säker på att du vill avbryta denna order? ConfirmMakeOrder=Är du säker på att du vill bekräfta att du gjort detta beställning på %s? GenerateBill=Skapa faktura -# ClassifyShipped=Classify delivered +ClassifyShipped=Klassificera levereras ClassifyBilled=Klassificera "Fakturerade" ComptaCard=Bokföring kort DraftOrders=Förslag till beslut @@ -101,7 +101,6 @@ RelatedOrders=Relaterade order OnProcessOrders=I processen order RefOrder=Ref. För RefCustomerOrder=Ref. kundorder -CustomerOrder=Kundorder RefCustomerOrderShort=Ref. cust. För SendOrderByMail=Skicka beställningen per post ActionsOnOrder=Åtgärder för att @@ -131,9 +130,7 @@ Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Konstant COMMANDE_SUPPLIER_ADDON inte d Error_COMMANDE_ADDON_NotDefined=Konstant COMMANDE_ADDON inte definierat Error_FailedToLoad_COMMANDE_SUPPLIER_ADDON_File=Kunde inte ladda modulen fil %s Error_FailedToLoad_COMMANDE_ADDON_File=Kunde inte ladda modulen fil %s -# Error_OrderNotChecked=No orders to invoice selected - - +Error_OrderNotChecked=Inga order att fakturera valda # Sources OrderSource0=Kommersiella förslag OrderSource1=Internet @@ -144,25 +141,23 @@ OrderSource5=Kommersiella OrderSource6=Store QtyOrdered=Antal beställda AddDeliveryCostLine=Lägg till en line-kostnad som visar vikten av beslutet - # Documents models PDFEinsteinDescription=En fullständig för-modellen (logo. ..) PDFEdisonDescription=En enkel ordning modell -# PDFProformaDescription=A complete proforma invoice (logo…) +PDFProformaDescription=En fullständig proforma faktura (logo ...) # Orders modes OrderByMail=Post OrderByFax=Faxa OrderByEMail=EMail OrderByWWW=Nätet OrderByPhone=Telefonen - -# CreateInvoiceForThisCustomer=Bill orders -# NoOrdersToInvoice=No orders billable -# CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders. -# MenuOrdersToBill2=Orders to bill -# OrderCreation=Order creation -# Ordered=Ordered -# OrderCreated=Your orders have been created -# OrderFail=An error happened during your orders creation -# CreateOrders=Create orders -# ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s". +CreateInvoiceForThisCustomer=Faktura order +NoOrdersToInvoice=Inga order fakturerbar +CloseProcessedOrdersAutomatically=Klassificera "bearbetade" alla valda order. +MenuOrdersToBill2=Order till faktura +OrderCreation=Order skapning +Ordered=Beställt +OrderCreated=Din order har skapats +OrderFail=Ett fel inträffade under din order skapande +CreateOrders=Skapa order +ToBillSeveralOrderSelectCustomer=För att skapa en faktura för flera ordrar, klicka först på kunden och välj sedan "%s". diff --git a/htdocs/langs/sv_SE/other.lang b/htdocs/langs/sv_SE/other.lang index fe9d174153f..5b39504e935 100644 --- a/htdocs/langs/sv_SE/other.lang +++ b/htdocs/langs/sv_SE/other.lang @@ -1,7 +1,6 @@ # Dolibarr language file - Source file is en_US - other SecurityCode=Säkerhetskod Calendar=Kalender -AddTrip=Lägg resa Tools=Verktyg ToolsDesc=Detta område är avsedd för gruppen diverse verktyg som inte finns i andra menyposter.

Dessa verktyg kan nås från menyn på sidan. Birthday=Födelsedag @@ -10,21 +9,21 @@ DateToBirth=Datum för födelse BirthdayAlertOn= födelsedag alert aktiva BirthdayAlertOff= födelsedag alert inaktiv Notify_FICHINTER_VALIDATE=Intervention validerade -Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail +Notify_FICHINTER_SENTBYMAIL=Ingripande skickas per post Notify_BILL_VALIDATE=Kundfaktura validerade -Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_BILL_UNVALIDATE=Kundfakturan Fraktpris saknas Notify_ORDER_SUPPLIER_APPROVE=Leverantör för godkänd Notify_ORDER_SUPPLIER_REFUSE=Leverantör för vägrat Notify_ORDER_VALIDATE=Kundorder validerade Notify_PROPAL_VALIDATE=Kunden förslag validerade -Notify_PROPAL_CLOSE_SIGNED=Customer propal closed signed -Notify_PROPAL_CLOSE_REFUSED=Customer propal closed refused +Notify_PROPAL_CLOSE_SIGNED=Kunden propal stängd tecknat +Notify_PROPAL_CLOSE_REFUSED=Kunden propal stängd vägrade Notify_WITHDRAW_TRANSMIT=Överföring tillbakadragande Notify_WITHDRAW_CREDIT=Credit tillbakadragande Notify_WITHDRAW_EMIT=Isue tillbakadragande Notify_ORDER_SENTBYMAIL=Kundorder skickas per post Notify_COMPANY_CREATE=Tredje part som skapats -Notify_COMPANY_SENTBYMAIL=Mails sent from third party card +Notify_COMPANY_SENTBYMAIL=Post som skickas från tredjepartskort Notify_PROPAL_SENTBYMAIL=Kommersiell förslag skickas per post Notify_BILL_PAYED=Kundfaktura betalade Notify_BILL_CANCEL=Kundfaktura avbryts @@ -34,20 +33,21 @@ Notify_ORDER_SUPPLIER_SENTBYMAIL=Leverantör beställning skickas per post Notify_BILL_SUPPLIER_VALIDATE=Leverantörsfaktura validerade Notify_BILL_SUPPLIER_PAYED=Leverantörsfaktura betalas Notify_BILL_SUPPLIER_SENTBYMAIL=Leverantör faktura skickas per post -Notify_BILL_SUPPLIER_CANCELED=Supplier invoice cancelled +Notify_BILL_SUPPLIER_CANCELED=Leverantör faktura annulleras Notify_CONTRACT_VALIDATE=Kontrakt validerade Notify_FICHEINTER_VALIDATE=Intervention validerade Notify_SHIPPING_VALIDATE=Frakt validerade Notify_SHIPPING_SENTBYMAIL=Leverans skickas per post Notify_MEMBER_VALIDATE=Medlem validerade -Notify_MEMBER_MODIFY=Member modified +Notify_MEMBER_MODIFY=Medlem modifierad Notify_MEMBER_SUBSCRIPTION=Medlem tecknat Notify_MEMBER_RESILIATE=Medlem resiliated Notify_MEMBER_DELETE=Elementet bort -Notify_PROJECT_CREATE=Project creation -Notify_TASK_CREATE=Task created -Notify_TASK_MODIFY=Task modified -Notify_TASK_DELETE=Task deleted +Notify_PROJECT_CREATE=Projekt skapande +Notify_TASK_CREATE=Task skapade +Notify_TASK_MODIFY=Task modifierad +Notify_TASK_DELETE=Uppgift utgår +SeeModuleSetup=Se modul inställnings NbOfAttachedFiles=Antal bifogade filer / dokument TotalSizeOfAttachedFiles=Total storlek på bifogade filer / dokument MaxSize=Maximal storlek @@ -57,15 +57,15 @@ Miscellaneous=Diverse NbOfActiveNotifications=Antal anmälningar PredefinedMailTest=Detta är en test post. \\ NDet två linjerna är åtskilda av en vagnretur. PredefinedMailTestHtml=Detta är en test post (ordet Provningen skall i fetstil).
De två linjerna är åtskilda av en vagnretur. -PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__ -PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__ +PredefinedMailContentSendInvoice=__CONTACTCIVNAME__ Här hittar du fakturan __FACREF__ __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__ Vi vill varna er att fakturan __FACREF__ tycks inte betalt. Så detta är fakturan i bilagan igen, som en påminnelse. __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentSendProposal=__CONTACTCIVNAME__ Här hittar du det kommersiella förslaget __PROPREF__ __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentSendOrder=__CONTACTCIVNAME__ Här hittar ordern __ORDERREF__ __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__ Här hittar du vår ordning __ORDERREF__ __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__ Här hittar du fakturan __FACREF__ __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentSendShipping=__CONTACTCIVNAME__ Här hittar sjöfarten __SHIPPINGREF__ __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentSendFichInter=__CONTACTCIVNAME__ Här hittar interventionen __FICHINTERREF__ __PERSONALIZED__Sincerely __SIGNATURE__ +PredefinedMailContentThirdparty=__CONTACTCIVNAME__ __PERSONALIZED__ __SIGNATURE__ DemoDesc=Dolibarr är en kompakt ERP / CRM består av flera funktionella moduler. En demo som inkluderar alla moduler inte betyder något som detta inträffar aldrig. Så, flera demo profiler finns tillgängliga. ChooseYourDemoProfil=Välj demo profil som matchar din aktivitet ... DemoFundation=Hantera medlemmar av en stiftelse @@ -80,6 +80,16 @@ ModifiedBy=Uppdaterad av %s ValidatedBy=Bekräftad av %s CanceledBy=Annullerats av %s ClosedBy=Stängt av %s +CreatedById=Användarkod som skapade +ModifiedById=Användarkod som gjorde förra förändring +ValidatedById=Användarkod som validerats +CanceledById=Användar-ID som annulleras +ClosedById=Användar-ID som stängd +CreatedByLogin=Användarinloggning som skapade +ModifiedByLogin=Användarinloggning som gjorde förra förändring +ValidatedByLogin=Användarinloggning som validerats +CanceledByLogin=Användarinloggning som annullerats +ClosedByLogin=Användarinloggning som stängde FileWasRemoved=Arkiv %s togs bort DirWasRemoved=Nummer %s togs bort FeatureNotYetAvailableShort=Finns i en kommande version @@ -133,7 +143,7 @@ SizeUnitcm=cm SizeUnitmm=mm SizeUnitinch=tum SizeUnitfoot=fot -SizeUnitpoint=point +SizeUnitpoint=poäng BugTracker=Bug tracker SendNewPasswordDesc=Denna blankett kan du begära ett nytt lösenord. Det kommer att skickas till din e-postadress.
Förändring kommer att ha verkan först efter att klicka på bekräftelse länk inne i den här e-postmeddelandet.
Kontrollera dina program e läsare. BackToLoginPage=Tillbaka till inloggningssidan @@ -147,12 +157,12 @@ StatsByNumberOfEntities=Statistik på antalet nationella enheter NumberOfProposals=Antal förslag om senaste 12 månaderna NumberOfCustomerOrders=Antal kundorder på senaste 12 månaderna NumberOfCustomerInvoices=Antal kundfakturor den senaste 12 månaderna -NumberOfSupplierOrders=Number of supplier orders on last 12 month +NumberOfSupplierOrders=Antal leverantörsorder på senaste 12 månaderna NumberOfSupplierInvoices=Antal leverantörsfakturor på senaste 12 månaderna NumberOfUnitsProposals=Antal enheter på förslag om senaste 12 månaderna NumberOfUnitsCustomerOrders=Antal enheter på kundens order på senaste 12 månaderna NumberOfUnitsCustomerInvoices=Antal enheter på kundernas fakturor senaste 12 månaderna -NumberOfUnitsSupplierOrders=Number of units on supplier orders on last 12 month +NumberOfUnitsSupplierOrders=Antal enheter på leverantörsorder på senaste 12 månaderna NumberOfUnitsSupplierInvoices=Antal enheter på leverantörsfakturor på senaste 12 månaderna EMailTextInterventionValidated=Interventionen %s har validerats. EMailTextInvoiceValidated=Fakturan %s har validerats. @@ -162,7 +172,7 @@ EMailTextOrderApproved=Ordern %s har godkänts. EMailTextOrderApprovedBy=Ordern %s har godkänts av %s. EMailTextOrderRefused=Ordern %s har avslagits. EMailTextOrderRefusedBy=Ordern %s har avslagits %s. -EMailTextExpeditionValidated=The shipping %s has been validated. +EMailTextExpeditionValidated=Leveransen %s har validerats. ImportedWithSet=Import dataunderlaget DolibarrNotification=Automatisk anmälan ResizeDesc=Ange nya bredd eller ny höjd. Förhållandet kommer att hållas under storleksändring ... @@ -184,12 +194,12 @@ StartUpload=Starta upp CancelUpload=Avbryt upp FileIsTooBig=Filer är för stor PleaseBePatient=Ha tålamod ... -RequestToResetPasswordReceived=A request to change your Dolibarr password has been received -NewKeyIs=This is your new keys to login -NewKeyWillBe=Your new key to login to software will be -ClickHereToGoTo=Click here to go to %s -YouMustClickToChange=You must however first click on the following link to validate this password change -ForgetIfNothing=If you didn't request this change, just forget this email. Your credentials are kept safe. +RequestToResetPasswordReceived=En begäran om att ändra Dolibarr lösenord har mottagits +NewKeyIs=Det här är din nya nycklar för att logga in +NewKeyWillBe=Din nya knappen för att logga in på programvaran kommer att vara +ClickHereToGoTo=Klicka här för att gå till %s +YouMustClickToChange=Du måste dock först klicka på följande länk för att bekräfta detta lösenord förändring +ForgetIfNothing=Om du inte har begärt denna förändring, bara glömma detta mail. Dina referenser förvaras säkert. ##### Calendar common ##### AddCalendarEntry=Lägg till post i kalendern %s @@ -211,7 +221,7 @@ MemberResiliatedInDolibarr=Medlem %s resiliated i Dolibarr MemberDeletedInDolibarr=Medlem %s bort från Dolibarr MemberSubscriptionAddedInDolibarr=Teckning av medlem %s till i Dolibarr ShipmentValidatedInDolibarr=Transport %s validerats i Dolibarr -ShipmentDeletedInDolibarr=Shipment %s deleted from Dolibarr +ShipmentDeletedInDolibarr=Leverans %s har raderats från Dolibarr ##### Export ##### Export=Exportera ExportsArea=Export område diff --git a/htdocs/langs/sv_SE/paypal.lang b/htdocs/langs/sv_SE/paypal.lang index a4d576e7f5a..d9b9f5962b7 100644 --- a/htdocs/langs/sv_SE/paypal.lang +++ b/htdocs/langs/sv_SE/paypal.lang @@ -10,16 +10,16 @@ PAYPAL_API_PASSWORD=API-lösenord PAYPAL_API_SIGNATURE=API signatur PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Erbjuder betalning "integrerad" (Kreditkort + Paypal) eller "Paypal" endast PaypalModeIntegral=Integral -PaypalModeOnlyPaypal=PayPal only +PaypalModeOnlyPaypal=PayPal endast PAYPAL_CSS_URL=Optionnal Url av CSS-formatmall om betalning sidan ThisIsTransactionId=Detta är id transaktion: %s PAYPAL_ADD_PAYMENT_URL=Lägg till URL Paypal betalning när du skickar ett dokument per post PAYPAL_IPN_MAIL_ADDRESS=E-postadress att omedelbart anmälan av betalning (IPN) -PredefinedMailContentLink=You can click on the secure link below to make your payment (PayPal) if it is not already done.\n\n%s\n\n +PredefinedMailContentLink=Du kan klicka på den säkra länken nedan för att göra din betalning (PayPal), om det inte redan är gjort.\n\n %s\n\n YouAreCurrentlyInSandboxMode=Du är för närvarande i "sandlåda"-läget -NewPaypalPaymentReceived=New Paypal payment received -NewPaypalPaymentFailed=New Paypal payment tried but failed -PAYPAL_PAYONLINE_SENDEMAIL=EMail to warn after a payment (success or not) -ReturnURLAfterPayment=Return URL after payment -ValidationOfPaypalPaymentFailed=Validation of Paypal payment failed -PaypalConfirmPaymentPageWasCalledButFailed=Payment confirmation page for Paypal was called by Paypal but confirmation failed +NewPaypalPaymentReceived=Nya Paypal mottagen betalning +NewPaypalPaymentFailed=Nya Paypal betalning försökt men misslyckats +PAYPAL_PAYONLINE_SENDEMAIL=EMail att varna efter en betalning (framgång eller ej) +ReturnURLAfterPayment=Återgå URL efter betalning +ValidationOfPaypalPaymentFailed=Validering av Paypal betalning misslyckades +PaypalConfirmPaymentPageWasCalledButFailed=Betalning bekräftelsesidan för Paypal kallades av Paypal utan bekräftelse misslyckades diff --git a/htdocs/langs/sv_SE/propal.lang b/htdocs/langs/sv_SE/propal.lang index 1dcf8a037fd..c4a0da04ecb 100644 --- a/htdocs/langs/sv_SE/propal.lang +++ b/htdocs/langs/sv_SE/propal.lang @@ -16,7 +16,7 @@ Prospect=Prospect ProspectList=Prospect lista DeleteProp=Ta bort kommersiella förslag ValidateProp=Validate kommersiella förslag -AddProp=Lägg till förslaget +AddProp=Skapa förslag ConfirmDeleteProp=Är du säker på att du vill ta bort denna kommersiella förslag? ConfirmValidateProp=Är du säker på att du vill validera denna kommersiella förslag? LastPropals=Senaste %s förslag @@ -55,8 +55,6 @@ NoOpenedPropals=Ingen öppnade kommersiella förslag NoOtherOpenedPropals=Ingen annan öppnas kommersiella förslag RefProposal=Kommersiella förslag ref SendPropalByMail=Skicka kommersiella förslag per post -FileNotUploaded=Filen var inte upp -FileUploaded=Filen har lagts upp AssociatedDocuments=Handlingar i samband med förslaget: ErrorCantOpenDir=Kan inte öppna katalog DatePropal=Datum för förslag diff --git a/htdocs/langs/sv_SE/salaries.lang b/htdocs/langs/sv_SE/salaries.lang index edca71a1829..f2fc8c20068 100644 --- a/htdocs/langs/sv_SE/salaries.lang +++ b/htdocs/langs/sv_SE/salaries.lang @@ -1,8 +1,12 @@ # Dolibarr language file - Source file is en_US - users -Salary=Salary -Salaries=Salaries -Employee=Employee -NewSalaryPayment=New salary payment -SalaryPayment=Salary payment -SalariesPayments=Salaries payments -ShowSalaryPayment=Show salary payment +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Bokförings kod för löne utbetalningar +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Bokförings kod för finansiell kostnad +Salary=Lön +Salaries=Löner +Employee=Anställd +NewSalaryPayment=Ny löneutbetalning +SalaryPayment=Lönebetalning +SalariesPayments=Löneutbetalningar +ShowSalaryPayment=Visa löneutbetalning +THM=Genomsnitt timpris +TJM=Genomsnittlig dagligt pris diff --git a/htdocs/langs/sv_SE/sendings.lang b/htdocs/langs/sv_SE/sendings.lang index 5c81077a14e..fdb12324479 100644 --- a/htdocs/langs/sv_SE/sendings.lang +++ b/htdocs/langs/sv_SE/sendings.lang @@ -13,7 +13,7 @@ LastSendings=Senaste %s transporter SearchASending=Sök efter transport StatisticsOfSendings=Statistik för transporter NbOfSendings=Antal transporter -NumberOfShipmentsByMonth=Number of shipments by month +NumberOfShipmentsByMonth=Antal leveranser per månad SendingCard=Frakt-kort NewSending=Ny leverans CreateASending=Skapa en sändning @@ -50,17 +50,17 @@ Enlevement=Fått av kunden DocumentModelSimple=Enkel förlagan DocumentModelMerou=Merou A5-modellen WarningNoQtyLeftToSend=Varning, att inga produkter väntar sändas. -StatsOnShipmentsOnlyValidated=Statistics conducted on shipments only validated. Date used is date of validation of shipment (planed delivery date is not always known). +StatsOnShipmentsOnlyValidated=Statistik utförda på försändelser endast valideras. Datum som används är datum för godkännandet av leveransen (planerat leveransdatum är inte alltid känt). DateDeliveryPlanned=Hyvlat leveransdatum DateReceived=Datum leverans fick SendShippingByEMail=Skicka leverans via e-post -SendShippingRef=Submission of shipment %s +SendShippingRef=Inlämning av leveransen %s ActionsOnShipping=Evenemang på leverans LinkToTrackYourPackage=Länk till spåra ditt paket ShipmentCreationIsDoneFromOrder=För närvarande är skapandet av en ny leverans sker från ordern kortet. -RelatedShippings=Related shippings -ShipmentLine=Shipment line -CarrierList=List of transporters +RelatedShippings=Relaterade sändningar +ShipmentLine=Transport linje +CarrierList=Lista över transportörer # Sending methods SendingMethodCATCH=Fångst av kunden @@ -70,9 +70,9 @@ SendingMethodCOLSUI=Colissimo DocumentModelSirocco=Enkel handling modell för leverans kvitton DocumentModelTyphon=Mer komplett dokument modell för leverans intäkter (logo. ..) Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstant EXPEDITION_ADDON_NUMBER definieras inte -SumOfProductVolumes=Sum of product volumes -SumOfProductWeights=Sum of product weights +SumOfProductVolumes=Summan av produktvolymer +SumOfProductWeights=Summan av produktvikter # warehouse details -DetailWarehouseNumber= Warehouse details -DetailWarehouseFormat= W:%s (Qty : %d) +DetailWarehouseNumber= Lagerinformation +DetailWarehouseFormat= W:%s (Antal : %d) diff --git a/htdocs/langs/sv_SE/stocks.lang b/htdocs/langs/sv_SE/stocks.lang index 481efd59b1b..92b0bda1f1b 100644 --- a/htdocs/langs/sv_SE/stocks.lang +++ b/htdocs/langs/sv_SE/stocks.lang @@ -62,8 +62,8 @@ OrderStatusNotReadyToDispatch=Beställningen har ännu inte / inte längre statu StockDiffPhysicTeoric=Orsak till skillnad mellan verklig och beräknad lagerställning NoPredefinedProductToDispatch=Inga fördefinierade produkter för det här objektet. Så ingen sändning till lager krävs. DispatchVerb=Sändning -StockLimitShort=Limit for alert -StockLimit=Stock limit for alert +StockLimitShort=Gräns ​​för varning +StockLimit=Stock gräns för larm PhysicalStock=Fysisk lager RealStock=Real Stock VirtualStock=Virtuellt lager @@ -99,7 +99,7 @@ UseVirtualStockByDefault=Use virtual stock by default, instead of physical stock UseVirtualStock=Använd virtuellt lager UsePhysicalStock=Use physical stock CurentSelectionMode=Curent selection mode -CurentlyUsingVirtualStock=Virtual stock +CurentlyUsingVirtualStock=Virtuell lager CurentlyUsingPhysicalStock=Physical stock RuleForStockReplenishment=Regel för påfyllning av lager SelectProductWithNotNullQty=Välj minst en produkt med antal skilt från noll samt leverantör @@ -112,7 +112,7 @@ ReplenishmentOrdersDesc=Detta är en lista över alla öppna leverantörsorder Replenishments=Påfyllningar NbOfProductBeforePeriod=Antal av produkt %s i lager före vald period (< %s) NbOfProductAfterPeriod=Antal av produkt %s i lager efter vald period (> %s) -MassMovement=Mass movement +MassMovement=Massrörelse MassStockMovement=Mass stock movement SelectProductInAndOutWareHouse=Välj produkt, antal, ursprungslager och mållager och klicka "%s". När det är gjort för alla lageröverföringar klicka på "%s". RecordMovement=Spela in överföring diff --git a/htdocs/langs/sv_SE/users.lang b/htdocs/langs/sv_SE/users.lang index da62d760f12..bab31f48921 100644 --- a/htdocs/langs/sv_SE/users.lang +++ b/htdocs/langs/sv_SE/users.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - users -HRMArea=HRM area +HRMArea=HRM område UserCard=Användarkort ContactCard=Kontaktkort GroupCard=Grupp kort @@ -87,7 +87,7 @@ MyInformations=Mina uppgifter ExportDataset_user_1=Dolibarr-användarnas behov och egenskaper DomainUser=Domän användare %s Reactivate=Återaktivera -CreateInternalUserDesc=This form allows you to create an user internal to your company/foundation. To create an external user (customer, supplier, ...), use the button 'Create Dolibarr user' from third party's contact card. +CreateInternalUserDesc=Detta formulär tillåter dig att skapa en användare internt på ditt företag / stiftelse. För att skapa en extern användare (kund, leverantör, ...) använder du knappen "Skapa Dolibarr användare" från tredje parts kontaktkort. InternalExternalDesc=En intern användare är en användare som är en del av ert företag / stiftelse.
En extern användare är en kund, leverantör eller annan.

I båda fallen definierar behörigheter rättigheter Dolibarr, även externa användare kan ha en annan meny manager än interna användare (Se startsida - Setup - Display) PermissionInheritedFromAGroup=Tillstånd beviljas, eftersom ärvt från en av en användares grupp. Inherited=Ärvda @@ -114,8 +114,10 @@ YourRole=Din roller YourQuotaOfUsersIsReached=Din kvot på aktiva användare är nådd! NbOfUsers=Nb av användare DontDowngradeSuperAdmin=Endast en SuperAdmin kan nedgradera en SuperAdmin -HierarchicalResponsible=Hierarkiskt ansvarig +HierarchicalResponsible=Handledare HierarchicView=Hierarkisk vy UseTypeFieldToChange=Använd fält Typ för att ändra OpenIDURL=OpenID URL LoginUsingOpenID=Logga in med OpenID +WeeklyHours=Vecko timmar +ColorUser=Färg på användaren diff --git a/htdocs/langs/tr_TR/accountancy.lang b/htdocs/langs/tr_TR/accountancy.lang index fbbd8502a48..c6d4a634560 100644 --- a/htdocs/langs/tr_TR/accountancy.lang +++ b/htdocs/langs/tr_TR/accountancy.lang @@ -25,12 +25,12 @@ Selectchartofaccounts=Hesap planı seç Validate=Doğrula Addanaccount=Muhasebe hesabı ekle AccountAccounting=Muhasebe hesabı -Ventilation=Ventilation +Ventilation=Analiz ToDispatch=Gönderilecek Dispatched=Gönderilmiş -CustomersVentilation=Ventilation customers -SuppliersVentilation=Ventilation suppliers +CustomersVentilation=Müşteri analizi +SuppliersVentilation=Tedarikçi analizi TradeMargin=Ticaret marjı Reports=Raporlar ByCustomerInvoice=Müşteri faturalarına göre @@ -45,52 +45,52 @@ WriteBookKeeping=Büyük defter hesap kayıtları Bookkeeping=Büyük Defter AccountBalanceByMonth=Aylık hesap bakiyesi -AccountingVentilation=Accounting ventilation -AccountingVentilationSupplier=Accounting ventilation supplier -AccountingVentilationCustomer=Accounting ventilation customer +AccountingVentilation=Analiz muhasebesi +AccountingVentilationSupplier=Teadrikçi hesabı analizi +AccountingVentilationCustomer=Müşteri hesabı analizi Line=Satır -CAHTF=Total purchase supplier HT -InvoiceLines=Lines of invoice to be ventilated -InvoiceLinesDone=Ventilated lines of invoice +CAHTF=Tedarikçi HT toplam sipariş +InvoiceLines=Analiz edilecek fatura kalemleri +InvoiceLinesDone=Analiz edilen fatura kalemleri IntoAccount=Muhasebe hesabında -Ventilate=Ventilate -VentilationAuto=Automatic ventilation +Ventilate=Analiz +VentilationAuto=Otomatik analiz Processing=İşleme EndProcessing=İşleme sonu -AnyLineVentilate=Any lines to ventilate +AnyLineVentilate=Analiz edilecek herhangi bir kalem SelectedLines=Seçilen satırlar Lineofinvoice=Fatura satırı -VentilatedinAccount=Ventilated successfully in the accounting account -NotVentilatedinAccount=Not ventilated in the accounting account +VentilatedinAccount=Muhasebe hesabında başarıyla analiz edildi +NotVentilatedinAccount=Muhasebe hesabında analiz edilmedi. -ACCOUNTING_SEPARATORCSV=Separator CSV +ACCOUNTING_SEPARATORCSV=CSV Ayırıcı -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be ventilated shown by page (maximum recommended : 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the pages of ventilation "Has to ventilate" by the most recent elements -ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the pages of ventilation "Ventilated" by the most recent elements +ACCOUNTING_LIMIT_LIST_VENTILATION=Bir sayfada gösterilecek analiz edilen öğe sayısı (önerilen ençok:50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO="Analizlenecek" analiz sayfalarının sıralamasını son öğelerden başlat +ACCOUNTING_LIST_SORT_VENTILATION_DONE="Analizlenen" analiz sayfalarının sıralamasını son öğelerden başlat AccountLength=Dolibarr'da gösterilen muhasebe hesapları uzunluğu -AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. -ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts -ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts +AccountLengthDesc=Boşlukların sıfır figürü ile değiştirilmesiyle muhasebe hesap uzunluğunun uydurulmasını sağlayan işlevdir. Bu işlev yalnızca görüntüyü değiştirir, Dolibarr'da kayıtlı muhasebe hesaplarını değiştirmez. Dışaaktarma için bu fonksiyonun belirli yazılımla uyumlu olması gerekir. +ACCOUNTING_LENGTH_GACCOUNT=Genel hesapların uzunluğu +ACCOUNTING_LENGTH_AACCOUNT=Üçüncü parti hesaplarının uzunluğu -ACCOUNTING_SELL_JOURNAL=Sell journal -ACCOUNTING_PURCHASE_JOURNAL=Purchase journal -ACCOUNTING_BANK_JOURNAL=Bank journal -ACCOUNTING_CASH_JOURNAL=Cash journal -ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal -ACCOUNTING_SOCIAL_JOURNAL=Social journal +ACCOUNTING_SELL_JOURNAL=Satış günlüğü +ACCOUNTING_PURCHASE_JOURNAL=Satınalma günlüğü +ACCOUNTING_BANK_JOURNAL=Banka günlüğü +ACCOUNTING_CASH_JOURNAL=Kasa günlüğü +ACCOUNTING_MISCELLANEOUS_JOURNAL=Çeşitli günlük +ACCOUNTING_SOCIAL_JOURNAL=Sosyal günlük -ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer -ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Transfer hesabı +ACCOUNTING_ACCOUNT_SUSPENSE=Bekleme hesabı -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Satınalınan ürünler için varsayılan muhasebe hesabı (ürün kartlarında tanımlanmışsa) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Satılan ürünler için varsayılan muhasebe hesabı (ürün kartlarında tanımlanmışsa) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Satınalınan hizmetler için varsayılan muhasebe hesabı (ürün kartlarında tanımlanmışsa) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Satılan hizmetler için varsayılan muhasebe kodu (hizmet sayfasında tanımlanmamışsa) Doctype=Belge türü Docdate=Tarih @@ -128,7 +128,7 @@ ListeMvts=Hareket listesi ErrorDebitCredit=Borç ve Alacak aynı anda bir değere sahip olamaz ReportThirdParty=Üçüncü parti hesabını listele -DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts +DescThirdPartyReport=Burada üçüncü parti müşterileri ve tedarikçileri ile onların muhasebe hesaplarının listesine bakın ListAccounts=Muhasebe hesapları listesi @@ -140,15 +140,15 @@ Active=Hesap özeti NewFiscalYear=Yeni mali yıl -DescVentilCustomer=Consult here the annual accounting ventilation of your invoices customers +DescVentilCustomer=Burada müşteri faturalarınızın yıllık hesap analizine bakın TotalVente=Toplam ciro HT TotalMarge=Toplam satışlar oranı -DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account -DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account -ChangeAccount=Change the accounting account for lines selected by the account: +DescVentilDoneCustomer=Burada müşteri faturaları satırlarına ve onların muhasebe hesaplarının listesine bakın. +DescVentilTodoCustomer=Bir muhasebe hesabıyla müşteri faturanızın kalemlerini analiz edin +ChangeAccount=Muhasebe hesabını, hesap tarafından seçilen satırlar için değiştirin: Vide=- -DescVentilSupplier=Consult here the annual accounting ventilation of your invoices suppliers -DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account +DescVentilSupplier=Burada tedarikçi faturalarınızın yıllık hesap analizine bakın +DescVentilTodoSupplier=Bir muhasebe hesabıyla tedarikçi faturanızın kalemlerini analiz edin DescVentilDoneSupplier=Burada tedarikçi faturaları ve muhasebe hesapları satırları listesine başvurun ValidateHistory=Otomatikman doğrula diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index 1cb78579d33..d1ee8c4ac6e 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -3,13 +3,13 @@ Foundation=Dernek Version=Sürüm VersionProgram=Program sürümü VersionLastInstall=İlk kurulan sürüm -VersionLastUpgrade=Yükseltilen son sürüm +VersionLastUpgrade=Son yükseltilen sürüm VersionExperimental=Deneysel VersionDevelopment=Geliştirme VersionUnknown=Bilinmeyen VersionRecommanded=Önerilen -SessionId=Oturum ID -SessionSaveHandler=Oturum kayıt işlemcisi +SessionId=Oturum Kimliği +SessionSaveHandler=Oturum kayıt yürütücüsü SessionSavePath=Oturum kayıt konumu PurgeSessions=Oturum Temizleme ConfirmPurgeSessions=Gerçekten tüm oturumları temizlemek istiyor musunuz? Bu (kendiniz hariç), tüm kullanıcıların bağlantılarını kesecektir. @@ -51,10 +51,10 @@ ErrorReservedTypeSystemSystemAuto='system' ve 'systemauto' değerleri tür için ErrorCodeCantContainZero=Kod 0 değeri içeremez DisableJavascript=Javascript ve Ajax fonksiyonlarını engelle (Görme engelli kişiler ve metin tarayıcılar için önerilir) ConfirmAjax=Açılır Ajax onay pencereleri kullanın -UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectCompanyTooltip=Ayrıca çok fazla sayıda üçüncü partiniz varsa (>100 000), Kurulum->Diğer den COMPANY_DONOTSEARCH_ANYWHERE değişmezini 1 e ayarlayarak hızı arttırabilirsiniz. Sonra arama dizenin başlamasıyla sınırlı olacaktır. UseSearchToSelectCompany=Üçüncü parti seçimi için liste kutusu kullanmak yerine oto tamamlamalı alan kullanın ActivityStateToSelectCompany= Halen faaliyette olan olan ya da durdurulmuş olan üçüncü partilerin görünmesi/gizlenmesi için bir süzgeç seçeneği ekleyin -UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectContactTooltip=Ayrıca çok fazla sayıda üçüncü partiniz varsa (>100 000), Kurulum->Diğer den CONTACT_DONOTSEARCH_ANYWHERE değişmezini 1 e ayarlayarak hızı arttırabilirsiniz. Sonra arama dizenin başlamasıyla sınırlı olacaktır. UseSearchToSelectContact=Kişi seçimi için oto tamamlamalı alan kullanın (liste kutusu kullanmak yerine). SearchFilter=Arama süzgeçi seçenekleri NumberOfKeyToSearch=Aramayı başlatacak karakter sayısı: %s @@ -68,7 +68,7 @@ PreviewNotAvailable=Önizleme yok ThemeCurrentlyActive=Geçerli etkin tema CurrentTimeZone=PHP Saat Dilimi (sunucu) MySQLTimeZone=ZamanDilimi MySql (veritabanı) -TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submited string. The timezone has effect only when using UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +TZHasNoEffect=Tarihler, sanki gönderilen dizeler olarak tutulmuş gibi veritabanı sunucusu tarafından saklanır ve çağrılır. Zaman dilimi yalnızca UNIX_TIMESTAMP işlevi kullanılırken etkilenir (bu Dolibarr tarafından kullanılmamalıdır, böylece ZD veritabanının hiçbir etkisi olmaz, veri girildikten sonra değiştirilse bile) Space=Boşluk Table=Tablo Fields=Alanlar @@ -76,7 +76,7 @@ Index=Dizin Mask=Maske NextValue=Sonraki değer NextValueForInvoices=Sonraki değer (faturalar) -NextValueForCreditNotes=Sonraki değer (alacak dekontları) +NextValueForCreditNotes=Sonraki değer (iade faturaları) NextValueForDeposit=Sonraki değer (yatırılan) NextValueForReplacements=Sonraki değer (yenileme) MustBeLowerThanPHPLimit=Not: PHP niz yüklenen her dosyanın boyutunu, parametrelerin değeri ne olursa olsun %s %s ile sınırlandırır @@ -92,8 +92,8 @@ ComptaSetup=Muhasebe modülü ayarları UserSetup=Kullanıcı yönetimi ayarları MenuSetup=Menü yönetimi ayarları MenuLimits=Sınırlar ve doğruluk -MenuIdParent=Ana menü ID -DetailMenuIdParent=Ana menü ID (bir üst menü için boş) +MenuIdParent=Ana menü Kimliği +DetailMenuIdParent=Ana menü Kimliği (bir üst menü için boş) DetailPosition=Menü konumunu tanımlamak için sıra numarası PersonalizedMenusNotSupported=Kişiselleştirilmiş menüler desteklenmiyor AllMenus=Tümü @@ -107,8 +107,8 @@ OtherSetup=Diğer ayarlar CurrentValueSeparatorDecimal=Ondalık ayırıcı CurrentValueSeparatorThousand=Binlik ayırıcı Destination=Hedef -IdModule=Modül ID -IdPermissions=İzin ID +IdModule=Modül Kimliği +IdPermissions=İzin Kimliği Modules=Modüller ModulesCommon=Ana modüller ModulesOther=Diğer modüller @@ -219,7 +219,7 @@ AutomaticIfJavascriptDisabled=JavaScript devre dışı ise otomatiktir AvailableOnlyIfJavascriptNotDisabled=Yalnızca JavaScript devre dışı değilse vardır AvailableOnlyIfJavascriptAndAjaxNotDisabled=Yalnızca JavaScript ve Ajax devre dışı değilse vardır Required=Gerekli -UsedOnlyWithTypeOption=Used by some agenda option only +UsedOnlyWithTypeOption=Bazı gündem seçeneği tarafından kullanılan Security=Güvenlik Passwords=Parolalar DoNotStoreClearPassword=Parolaları veritabanında saklamayın silin, yalnızca şifreli değerleri saklayın (Etkinleştirme önerilir) @@ -382,7 +382,7 @@ ExtrafieldRadio=Onay düğmesi ExtrafieldParamHelpselect=Parametre listesi anahtar.değer gibi olmalı, örneğin

:
1,değer1
2,değer2
3,değer3
...

Başka bir listeye bağlı bir liste elde etmek için :
1,değer1|parent_list_code:parent_key
2,değer2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=Parametre listesi anahtar.değer gibi olmalı, örneğin

:
1,değer1
2,değer2
3,değer3
... ExtrafieldParamHelpradio=Parametre listesi anahtar.değer gibi olmalı, örneğin

:
1,değer1
2,değer2
3,değer3
... -ExtrafieldParamHelpsellist=Parameters list comes from a table
Syntax : table_name:label_field:id_field::filter
Example : c_typent:libelle:id::filter

filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpsellist=Parametre listesi bir tablodan gelir
Sözdizimi : table_name:label_field:id_field::filter
Örnek: c_typent:libelle:id::filter

Süzgeç yalnızca etkin değeri (eg active=1) basit bir test olabilir
daha çok alanda süzecekseniz bu söz dizimini kullanın extra.fieldcode=... (burada kod ek alanın kodudur)

Başkasına dayalı listeyi almak için :
c_typent:libelle:id:parent_list_code|parent_column:filter LibraryToBuildPDF=PDF oluşturmada kullanılan kütüphane WarningUsingFPDF=Warning: Your conf.php contains directive dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download TCPDF library, then comment or remove the line $dolibarr_pdf_force_fpdf=1, and add instead $dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir' LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax) @@ -422,7 +422,7 @@ Module23Desc= Enerji tüketimlerinin izlenmesi Module25Name=Müşteri Siparişleri Module25Desc=Müşteri siparişleri yönetimi Module30Name=Faturalar -Module30Desc=Müşteri faturaları ve alacak dekontları yönetimi. Tedarikçi fatura yönetimi +Module30Desc=Müşteri faturaları ve iade faturaları yönetimi. Tedarikçi fatura yönetimi Module40Name=Tedarikçiler Module40Desc=Tedarikçi yönetimi ve satın alma (siparişler ve faturalar) Module42Name=Kütükler @@ -484,7 +484,7 @@ Module500Desc=Vergiler, sosyal katkı payları, temettüler ve maaşlar gibi öz Module510Name=Ücretler Module510Desc=Çalışanların maaş ve ödeme yönetimi Module600Name=Duyurlar -Module600Desc=Dolibarr iş etkinleri için üçüncü partilerin ilgililerine eposta ile duyurular gönderin +Module600Desc=Üçüncü parti kişilerine bazı Dolibarr iş etkinlikleriyle ilgili Eposta bildirimleri gönderin (her üçüncü parti için ayarlar tanımlanmıştır) Module700Name=Bağışlar Module700Desc=Bağış yönetimi Module1200Name=Mantis @@ -514,16 +514,16 @@ Module5000Name=Çoklu-firma Module5000Desc=Birden çok firmayı yönetmenizi sağlar Module6000Name=İş akışı Module6000Desc=İş akışı yönetimi -Module20000Name=Tatiller -Module20000Desc=Çalışanların tatillerini bildir ve izle +Module20000Name=İzin İstekleri yönetimi +Module20000Desc=Çalışanların izin isteklerini bildirin ve izleyin Module39000Name=Ürün kümesi Module39000Desc=Parti numarası, ürünlerin yenme ve satış tarihi yönetiminde Module50000Name=PayBox Module50000Desc=PayBox modülü ile kredi kartı ile çevrimiçi ödeme sayfası sunmak için Module50100Name=Satış Noktaları Module50100Desc=Satış Noktası modülü -Module50200Name= Paypal -Module50200Desc= Kredi kartı ya da Paypal ile ödeme sağlayan çevrimiçi ödeme sayfası modülü +Module50200Name=Paypal +Module50200Desc=Kredi kartı ya da Paypal ile ödeme sağlayan çevrimiçi ödeme sayfası modülü Module50400Name=Muhasebe (gelişmiş) Module50400Desc=Muhasebe yönetimi (çift taraf) Module54000Name=IPP Yazdır @@ -597,9 +597,9 @@ Permission121=Kullanıcıya bağlı üçüncü partileri oku Permission122=Kullanıcıya bağlı üçüncü parti oluştur/değiştir Permission125=Kullanıcıya bağlı üçüncü partileri sil Permission126=Üçüncü partileri dışaaktar -Permission141=Proje oku (benim ilişkide olmadığım Özel olanları da) +Permission141=Proje oku (benim ilişkide olmadığım özel olanları da) Permission142=Proje oluştur/değiştir (benim ilişkide olmadığım Özel olanları da) -Permission144=Proje sil (benim ilişkide olmadığım Özel olanları da) +Permission144=Proje sil (benim ilişkide olmadığım özel olanları da) Permission146=Sağlayıcıları oku Permission147=İstatistikleri oku Permission151=Ödeme talimatlarını oku @@ -611,10 +611,11 @@ Permission162=Sözleşme oluştur/değiştir Permission163=Bir sözleşme hizmetini etkinleştir Permission164=Bir sözleşme hizmetini engelle Permission165=Sözleşme sil -Permission171=Gezi oluştur/değiştir -Permission172=Gezi sil -Permission173=Gezi sil -Permission178=Gezi dışaaktar +Permission171=Seyahat ve giderleri okuyun (kendi ve astlarının) +Permission172=Gezi ve gider oluştur/değiştir +Permission173=Gezi ve gider sil +Permission174=Bütün gezi ve giderleri oku +Permission178=Gezi ve gider dışaaktar Permission180=Tedarikçi oku Permission181=Tedarikçi siparişi oku Permission182=Tedarikçi siparişi oluştur/değiştir @@ -1074,7 +1075,7 @@ ModuleCompanyCodeAquarium=%s tarafından oluşturulan bir muhasebe kodunu getir: ModuleCompanyCodePanicum=Boş bir muhasebe kodu girin. ModuleCompanyCodeDigitaria=Muhasebe kodu üçüncü parti koduna bağlıdır. Kod üçüncü parti kodunun ilk 5 karakterini izleyen birinci konumda "C" karakterinden oluşmaktadır. UseNotifications=Bildirimleri kullanın -NotificationsDesc=E-posta bildirimleri özelliği, sessiz şekilde otomatik posta göndermenizi sağlar, bazı Dolibarr olayları için üçüncü şahıslara yapılandırılmıştır (müşteriler ya da tedarikçiler). Etkin bildirim ve hedef kişileri seçimi aynı anda bir üçüncü parti için yapılır. +NotificationsDesc=Eposta bildirimleri özelliği bazı Dolibarr etkinlikleri ile ilgili sessizce otomatik posta göndermenizi sağlar. Bildirim hedefleri bu şekilde tanımlanır:
* üçüncü parti kişileri başına (müşteri ya da tedarikçi), her seferinde bir üçüncü parti.
* ModelModules=Belge şablonları DocumentModelOdt=OpenDocuments şablonlarından belgeler oluşturun (OpenOffice, KOffice, TextEdit .ODT veya .ODS dosyaları) WatermarkOnDraft=Taslak belge üzerinde filigran @@ -1111,12 +1112,12 @@ WebCalCheckWebcalSetup=Webcal modülü kurulumu doğru olmayabilir. ##### Invoices ##### BillsSetup=Faturalar modülünün kurulumu BillsDate=Fatura tarihi -BillsNumberingModule=Fatura ve alacak dekontları numaralandırma modülü +BillsNumberingModule=Fatura ve iade faturaları numaralandırma modülü BillsPDFModules=Fatura belgesi modelleri -CreditNoteSetup=Alacak dekontları modülü kurulumu -CreditNotePDFModules=Alacak dekontları belge modelleri -CreditNote=Alacak dekontu -CreditNotes=Alacak dekontları +CreditNoteSetup=İade faturaları modülü kurulumu +CreditNotePDFModules=İade faturaları belge modelleri +CreditNote=İade faturası +CreditNotes=İade faturaları ForceInvoiceDate=Fatura tarihini fatura doğrulama tarihine zorla DisableRepeatable=Tekrarlanabilir faturaları engelle SuggestedPaymentModesIfNotDefinedInInvoice=Varsayılan olarak faturada tanımlanmamışsa önerilen ödeme biçimi @@ -1146,6 +1147,7 @@ HideTreadedOrders=İşlem görmüş ya da iptal edilmiş siprişleri listede giz ValidOrderAfterPropalClosed=Teklifin kapatılmasından sonra siparişi doğrulamak için geçici teklifin izlenmemesini sağlar FreeLegalTextOnOrders=Siparişte serbest metin WatermarkOnDraftOrders=Taslak siparişlerde filigran (boşsa yoktur) +ShippableOrderIconInList=Sipariş listesine sevk edilebilir olup olmadığını belirten bir simge koyun ##### Clicktodial ##### ClickToDialSetup=TıklaAra modülü kurulumu ClickToDialUrlDesc=Telefon resmi üzerine tıklandığında Url aranır. URL’de aranan kişinin telefon numarası ile değişecek
__PHONETO__ etiketini kullanabilirsiniz @@ -1310,8 +1312,8 @@ YouMayFindPerfAdviceHere=Bu sayfada bazı denetimler veya performans ile ilgili NotInstalled=Yüklü değil, yani sunucu bundan dolayı yavaş değil. ApplicativeCache=\t\nUygulamalı önbellek MemcachedNotAvailable=Uygulanabilir önbellek bulunamadı. Performansı Memcached önbellek sunucusu ve bu önbellek sunucusunu kullanabilecek bir modül kurarak arttırabilirsiniz.
Daha fazla bilgiyi buradan http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
bulabilirsiniz. Bu tür önbellek sunucusunu çok fazla web barındırıcısının sağlamadığını unutmayın. -MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete. -MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. +MemcachedModuleAvailableButNotSetup=Uygulamalı önbellek için memcached modülü bulundu ama modülün kurulumu tamamlanmamış. +MemcachedAvailableAndSetup=Memcached modülü etkinleştirilmiş memcached sunucusunu kullanmak içindir. OPCodeCache=OPCode önbelleği NoOPCodeCacheFound=OPCode önbelleği bulunamadı. Belki XCache den başka bir OPCode önbelleği kullanabilirsiniz veya eAccelerator (iyi), belki de OPCode önbelleğiniz yoktur (çok kötü). HTTPCacheStaticResources=Statik kaynaklar (css, img, javascript) için HTTP önbelleği @@ -1332,7 +1334,7 @@ ConfirmDeleteProductLineAbility=Formlardan ürün satırı silerken onaylama ModifyProductDescAbility=Formlarda ürün tanımlamalarının kişiselleştirilmesi ViewProductDescInFormAbility=Formlarda ürün tanımlarının görselleştirilmesi (aksi durumda açılır araç ipucu olarak) ViewProductDescInThirdpartyLanguageAbility=Ürün açıklamalarının üçüncü partilerin dilinde gösterilmesi -UseSearchToSelectProductTooltip=Also if you have a large number of product (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectProductTooltip=Ayrıca çok fazla sayıda ürününüz varsa (>100 000), Kurulum->Diğer den PRODUCT_DONOTSEARCH_ANYWHERE değişmezini 1 e ayarlayarak hızı arttırabilirsiniz. Sonra arama dizenin başlamasıyla sınırlı olacaktır. UseSearchToSelectProduct=Bir ürün seçmek için arama formu kullanın (liste kutusu yerine). UseEcoTaxeAbility=Eko-Vergi Desteği (WEEE) SetDefaultBarcodeTypeProducts=Ürünler için kullanılacak varsayılan barkod türü @@ -1382,9 +1384,10 @@ MailingSetup=E-postalama modülü kurulumu MailingEMailFrom=EPostalama modülü tarafından gönderilen e-postalar için gönderici e-posta (gönderen) MailingEMailError=Hatalı e-postalar için iade e-postası (Hatalar-kime) ##### Notification ##### -NotificationSetup=Bildiri e-posta modülü kurulumu +NotificationSetup=Eposta bildirimi modülü ayarları NotificationEMailFrom=Bildirimler için gönderilen e-postalar için gönderici e-posta (gönderen) -ListOfAvailableNotifications=Mevcut bildirimlerin listesi (Bu liste etkin modüllere bağlıdır) +ListOfAvailableNotifications=Her üçüncü parti için (ayarlar için üçüncü parti kartına git) bildirim ayarlayacağınız etkinlikler listesi veya sabit bir eposta ayarlama yoluyla (liste etkin modüllere bağlıdır) +FixedEmailTarget=Sabit eposta hedefi ##### Sendings ##### SendingsSetup=Gönderme modülü kurulumu SendingsReceiptModel=Makbuz gönderme modeli @@ -1425,7 +1428,7 @@ Menu=Menü seçimi MenuHandler=Menü işleyicisi MenuModule=Kaynak modül HideUnauthorizedMenu= Yetkisiz menüleri gizle (gri) -DetailId=ID menüsü +DetailId=Kimlik menüsü DetailMenuHandler=Yeni menü göstermek için menü işleyicisi DetailMenuModule=Eğer menü girişi bir modülden geliyorsa modül adı DetailType=Menü türü (üst ya da sol) @@ -1535,6 +1538,7 @@ DeleteFiscalYear=Mali yıl sil ConfirmDeleteFiscalYear=Bu mali yılın silmek istediğinizden emin misiniz? Opened=Açık Closed=Kapalı +AlwaysEditable=Her zaman düzenlenebilir Format=Biçim TypePaymentDesc=0:Müşteri ödeme türü, 1:Tedarikçi ödeme türü, 2:Hem müşteri hem de tedarikçi ödeme türü diff --git a/htdocs/langs/tr_TR/agenda.lang b/htdocs/langs/tr_TR/agenda.lang index 324560637a7..93514fcc242 100644 --- a/htdocs/langs/tr_TR/agenda.lang +++ b/htdocs/langs/tr_TR/agenda.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - agenda -IdAgenda=Kimlik etkinliği +IdAgenda=Etkinlik kimliği Actions=Eylemler ActionsArea=Eylem alanı (Olaylar ve görevler) Agenda=Gündem @@ -7,7 +7,7 @@ Agendas=Gündemler Calendar=Takvim Calendars=Takvimler LocalAgenda=İç takvim -ActionsOwnedBy=Event owned by +ActionsOwnedBy=Etkinlik sahibi AffectedTo=Etkilenen DoneBy=Yapan Event=Etkinlik @@ -70,9 +70,9 @@ DateActionStart= Başlama tarihi DateActionEnd= Bitiş tarihi AgendaUrlOptions1=Süzgeç çıktısına ayrıca aşağıdaki parametreleri ekleyebilirsiniz: AgendaUrlOptions2=Eylem çıktılarını eylem, oluşturan, eylemden etkilenen ya da eylemi yapan kullanıcı login=%s sınırlayacak kullanıcı %s. -AgendaUrlOptions3=Çıktıyı kullanıcı %s tarafından oluşturulan etkinliklerle sınırlamak içinlogina=%s. +AgendaUrlOptions3=kullanıcı=%s, bir %s kullanıcısına ait eylemlerin çıkışlarını sınırlamak içindir. AgendaUrlOptions4=Çıktıyı kullanıcı %s tarafından etkilenen etkinliklerle sınırlamak içinlogint=%s. -AgendaUrlOptions5=Çıktıyı kullanıcı%s tarafından yapılan etkinliklerle sınırlamak içinlogind=%s. +AgendaUrlOptionsProject=proje=PROJECT_ID, bu PROJECT_ID projesi ile ilişkilendirilmiş eylemlerin çıkışını çıkışını sınırlamak içindir. AgendaShowBirthdayEvents=Kişilerin doğum günlerini göster AgendaHideBirthdayEvents=Kişilerin doğum günlerini gizle Busy=Meşgul @@ -89,5 +89,5 @@ ExtSiteUrlAgenda=.ical dosyasına erişmek için URL ExtSiteNoLabel=Tanımlama yok WorkingTimeRange=Çalışma saati aralığı WorkingDaysRange=Çalışma günleri aralığı -AddEvent=Add event -MyAvailability=My availability +AddEvent=Etkinlik oluştur +MyAvailability=Uygunluğum diff --git a/htdocs/langs/tr_TR/banks.lang b/htdocs/langs/tr_TR/banks.lang index f9fd9894a2d..03f1d2e99b7 100644 --- a/htdocs/langs/tr_TR/banks.lang +++ b/htdocs/langs/tr_TR/banks.lang @@ -9,15 +9,15 @@ FinancialAccounts=Hesaplar BankAccount=Banka hesabı BankAccounts=Banka hesapları AccountRef=Ticari hesap ref -AccountLabel=Ticari hesap etiketi +AccountLabel=Ticari hesap adı CashAccount=Kasa hesabı CashAccounts=Kasa hesapları MainAccount=Ana hesap CurrentAccount=Cari hesap CurrentAccounts=Cari hesaplar -SavingAccount=Tasarruf hesabı -SavingAccounts=Tasarruf hesapları -ErrorBankLabelAlreadyExists=Ticari hesap etiketi zaten var +SavingAccount=Mevduat hesabı +SavingAccounts=Mevduat hesapları +ErrorBankLabelAlreadyExists=Ticari hesap adı zaten var BankBalance=Bakiye BankBalanceBefore=Önceki bakiye BankBalanceAfter=Sonraki bakiye @@ -54,15 +54,15 @@ NewBankAccount=Yeni banka hesabı NewFinancialAccount=Yeni ticari hesap MenuNewFinancialAccount=Yeni ticari hesap NewCurrentAccount=Yeni cari hesap -NewSavingAccount=Yeni tasarruf hesabı +NewSavingAccount=Yeni mevduat hesabı NewCashAccount=Yeni kasa hesabı EditFinancialAccount=Hesap düzenle AccountSetup=Ticari hesap ayarları SearchBankMovement=Banka hareketi ara Debts=Borçlar -LabelBankCashAccount=Banka veya kasa etiketi +LabelBankCashAccount=Banka veya kasa adı AccountType=Hesap türü -BankType0=Tasarruf hesabı +BankType0=Mevduat hesabı BankType1=Cari ya da kredi kartı hesabı BankType2=Kasa hesabı IfBankAccount=Banka hesabıysa @@ -131,7 +131,7 @@ ThisWillAlsoDeleteBankRecord=Bu oluşturulan banka işlemlerini de silecektir. BankMovements=Hareketler CashBudget=Nakit bütçesi PlannedTransactions=Planlanan işlemler -Graph=Grafik +Graph=Grafikler ExportDataset_banque_1=Banka işlemleri ve hesap özeti ExportDataset_banque_2=Banka cüzdanı TransactionOnTheOtherAccount=Diğer hesaptaki işlemler diff --git a/htdocs/langs/tr_TR/bills.lang b/htdocs/langs/tr_TR/bills.lang index 27493dd1327..47682da9ab2 100644 --- a/htdocs/langs/tr_TR/bills.lang +++ b/htdocs/langs/tr_TR/bills.lang @@ -24,12 +24,12 @@ InvoiceProFormaDesc=Proforma fatura gerçek faturanın bir görüntüsüd InvoiceReplacement=Fatura değiştirme InvoiceReplacementAsk=Fatura değiştirme yapılacak fatura InvoiceReplacementDesc=Fatura değiştirme henüz tahsilat yapılmamış bir faturanın iptal edilmesi ve tamamen değiştirilmesi için kullanılır.

Not: Yalnızca ödeme yapılmamış faturalar değiştirilebilir. Değiştirdiğiniz fatura eğer henüz kapataılmamışsa, kullanılmamak üzere otomatik olarak kapatılacaktır. -InvoiceAvoir=Alacak dekontu -InvoiceAvoirAsk=Fatura düzeltmek için alacak dekontu -InvoiceAvoirDesc=Alacak Dekontubir eksi fatura olup fatura tutarının gerçekte ödenen tutardan farklı olması durumunda kullanılır (çünkü müşteri yanlışlıkla fazla ödeme yapmıştır, ya da tamamını ödemeyecektir, örneğin bazı malları iade ettiğinden). -invoiceAvoirWithLines=İlk faturadan alınan kalemlerle Alacak Dekontu oluştur -invoiceAvoirWithPaymentRestAmount=Orijinal faturaya alınan ödeme tutarı ile Alacak Dekontu oluştur -invoiceAvoirLineWithPaymentRestAmount=Faturaya alınan ödeme tutarında Alacak Dekontu +InvoiceAvoir=İade faturası +InvoiceAvoirAsk=İade faturası fatura düzeltmek için kullanılır +InvoiceAvoirDesc=İade Faturasıbir eksi fatura olup fatura tutarının gerçekte ödenen tutardan farklı olması durumunda kullanılır (çünkü müşteri yanlışlıkla fazla ödeme yapmıştır, ya da tamamını ödemeyecektir, örneğin bazı malları iade ettiğinden). +invoiceAvoirWithLines=İlk faturadan alınan kalemlerle İade Faturası oluştur +invoiceAvoirWithPaymentRestAmount=İlk faturanın ödenmemiş bakiyeli İade Faturası +invoiceAvoirLineWithPaymentRestAmount=Ödenmemiş kalan tutar için İade Faturası ReplaceInvoice=%s Faturasını değiştir ReplacementInvoice=Fatura değiştirme ReplacedByInvoice=Değiştirilen fatura %s @@ -62,7 +62,7 @@ PaidBack=Geri ödenen DatePayment=Ödeme tarihi DeletePayment=Ödeme sil ConfirmDeletePayment=Bu ödemeyi silmek istediğinizden emin misiniz? -ConfirmConvertToReduc=Bu alacak dekontunu ya da nakit avans faturasını mutlak bir indirime dönüştürmek istiyor musunuz?
Bu tutar diğer indirimlerin arasına kaydedilecek olup bu müşteri için mevcut ya da ileride kesilecek faturada indirim olarak kullanılabilecektir. +ConfirmConvertToReduc=Bu iade faturasını ya da nakit avans faturasını mutlak bir indirime dönüştürmek istiyor musunuz?
Bu tutar diğer indirimlerin arasına kaydedilecek olup bu müşteri için mevcut ya da ileride kesilecek faturada indirim olarak kullanılabilecektir. SupplierPayments=Tedarikçi ödemeleri ReceivedPayments=Alınan ödemeler ReceivedCustomersPayments=Müşterilerden alınan ödemeler @@ -81,13 +81,13 @@ ValidatePayment=Ödeme doğrula PaymentHigherThanReminderToPay=Ödeme hatırlatmasından daha yüksek ödeme HelpPaymentHigherThanReminderToPay=Dikkat, bir ya da daha çok faturanın ödeme tutarı ödenecek bakiyeden yüksektir.
Girişinizi düzeltin, aksi durumda her fazla ödenen fatura için bir iade faturası oluşturmayı onaylayın ve düşünün. HelpPaymentHigherThanReminderToPaySupplier=Dikkat, bir ya da daha çok faturanın ödeme tutarı ödenecek bakiyeden yüksektir.
Girişinizi düzeltin, aksi durumda onaylayın. -ClassifyPaid=‘Ödendi’ olarak sınıflandır -ClassifyPaidPartially=‘Kısmen ödendi’ olarak sınıflandır +ClassifyPaid=Sınıflandırma ‘Ödendi’ +ClassifyPaidPartially=Sınıflandırma ‘Kısmen ödendi’ ClassifyCanceled=’Terkedildi’ olarak sınıflandır ClassifyClosed=‘Kapalı’ olarak sınıflandır ClassifyUnBilled=Sınıflandırma 'Faturalanmadı' CreateBill=Fatura oluştur -AddBill=Fatura ya da alacak dekontu ekle +AddBill=Fatura ya da iade faturası oluştur AddToDraftInvoices=Taslak fatura ekle DeleteBill=Fatura sil SearchACustomerInvoice=Müşteri faturası ara @@ -99,13 +99,13 @@ DoPaymentBack=Geri ödeme yap ConvertToReduc=Gelecekteki indirime dönüştür EnterPaymentReceivedFromCustomer=Müşteriden alınan ödeme girin EnterPaymentDueToCustomer=Müşteri nedeniyle ödeme yap -DisabledBecauseRemainderToPayIsZero=Engelli Çünkü geri kalan ödeme sıfırdır +DisabledBecauseRemainderToPayIsZero=Ödenmemiş kalan sıfır olduğundan devre dışı Amount=Tutar PriceBase=Temel fiyat BillStatus=Fatura durumu BillStatusDraft=Taslak (doğrulanma gerektirir) -BillStatusPaid=Ödenmiş -BillStatusPaidBackOrConverted=Ödenmiş ya da indirime dönüştürülen +BillStatusPaid=Ödendi +BillStatusPaidBackOrConverted=Ödenmiş ya da indirime dönüştürülmüş BillStatusConverted=Ödenmiş (son fatura için hazır) BillStatusCanceled=Terkedilmiş BillStatusValidated=Doğrulanmış (ödenmesi gerekir) @@ -156,9 +156,9 @@ ConfirmCancelBill=%s Faturasını iptal etmek istediğinizden emin misini ConfirmCancelBillQuestion=Neden bu faturayı ‘terkedilmiş’ olarak sınıflandırmak istiyorsunuz? ConfirmClassifyPaidPartially=%s Faturasının durumunu ödenmiş olarak değiştirmek istediğinizden emin misiniz? ConfirmClassifyPaidPartiallyQuestion=Bu fatura tamamen ödenmemiş. Bu faturayı kapatmak için nedenler nelerdir? -ConfirmClassifyPaidPartiallyReasonAvoir=Ödeme vadesinden önce yapıldığı için kalan bakiye (%s %s) indirim olarak verildi. Bir iade faturası ile KDV’yi ayarladım. -ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Ödeme vadesinden önce yapıldığı için kalan bakiye (%s %s) indirim olarak verildi. Bu indirimle KDV’yi kaybetmeyi kabul ettim. -ConfirmClassifyPaidPartiallyReasonDiscountVat=Ödeme vadesinden önce yapıldığı için kalan bakiye (%s %s) indirim olarak verildi. Bu indirimdeki KDV’yi bir iade faturası olmadan kurtardım. +ConfirmClassifyPaidPartiallyReasonAvoir=Kalan bakiye (%s %s) ödeme vadesinden önce yapıldığından dolayı verilmiş bir indirimdr. KDV bir iade faturasıyla ayarIanır. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Kalan ödenmemiş tutar (%s %s) ödeme vadesinden önce ödendiğinden bir indirim olarak verilmiştir. Burada KDV sini kaybetmeyi kabul ediyorum. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Kalan bakiye (%s %s) ödeme vadesinden önce yapıldığından dolayı verilmiş bir indirimdr. KDV bir iade faturasıyla düzeltilir. ConfirmClassifyPaidPartiallyReasonBadCustomer=Kötü müşteri ConfirmClassifyPaidPartiallyReasonProductReturned=Ürünler kısmen iade edildi ConfirmClassifyPaidPartiallyReasonOther=Diğer bir nedenle terkedilen tutar @@ -183,17 +183,17 @@ ShowSocialContribution=Sosyal katkı payını göster ShowBill=Fatura göster ShowInvoice=Fatura göster ShowInvoiceReplace=Değiştirilen faturayı göster -ShowInvoiceAvoir=Alacak dekontu göster +ShowInvoiceAvoir=İade faturası göster ShowInvoiceDeposit=Nakit avans faturası göster ShowPayment=Ödeme göster File=Dosya AlreadyPaid=Zaten ödenmiş AlreadyPaidBack=Zaten geri ödenmiş -AlreadyPaidNoCreditNotesNoDeposits=Zaten ödenmiş (alacak dekontu ve nakit avans faturası olmadan) +AlreadyPaidNoCreditNotesNoDeposits=Zaten ödenmiş (iade faturası ve nakit avans faturası olmadan) Abandoned=Terkedilen -RemainderToPay=Kalan ödeme -RemainderToTake=Kalan alacak -RemainderToPayBack=Kalan geri ödeme +RemainderToPay=Ödenmemiş kalan +RemainderToTake=Alınacak kalan tutar +RemainderToPayBack=Geri ödenecek kalan tutar Rest=Bekleyen AmountExpected=İstenen tutar ExcessReceived=Fazla alınan @@ -225,13 +225,13 @@ NonPercuRecuperable=Kurtarılamaz SetConditions=Ödeme koşullarını ayarla SetMode=Ödeme biçimini ayarla Billed=Faturalanmış -RepeatableInvoice=Ön tanımlı fatura -RepeatableInvoices=Ön tanımlı faturalar -Repeatable=Ön tanımlı -Repeatables=Ön tanımlı -ChangeIntoRepeatableInvoice=Ön tanımlıya dönüştür -CreateRepeatableInvoice=Ön tanımlı fatura oluştur -CreateFromRepeatableInvoice=Ön tanımlı faturadan oluştur +RepeatableInvoice=Fatura şablonu +RepeatableInvoices=Fatura şablonları +Repeatable=Şablon +Repeatables=Şablonlar +ChangeIntoRepeatableInvoice=Fatura şablonuna dönüştür +CreateRepeatableInvoice=Fatura şablonu oluştur +CreateFromRepeatableInvoice=Fatura şablonundan oluştur CustomersInvoicesAndInvoiceLines=Müşteri faturaları ve fatura satırları CustomersInvoicesAndPayments=Müşteri faturaları ve ödemeleri ExportDataset_invoice_1=Müşteri faturaları listesi ve fatura satırları @@ -248,13 +248,13 @@ AddRelativeDiscount=Göreceli indirim oluştur EditRelativeDiscount=Göreceli indirim düzenle AddGlobalDiscount=Mutlak indirim ekle EditGlobalDiscounts=Mutlak indirim düzenle -AddCreditNote=Alacak Dekontu oluştur +AddCreditNote=İade faturası oluştur ShowDiscount=İndirim göster ShowReduc=Kesinti göster RelativeDiscount=Göreceli indirim GlobalDiscount=Genel indirim -CreditNote=Alacak dekontu -CreditNotes=Alacak dekontları +CreditNote=İade faturası +CreditNotes=İade faturaları Deposit=Nakit avans Deposits=Nakit avanslar DiscountFromCreditNote=İade faturası %s ten indirim @@ -379,7 +379,7 @@ ChequesReceipts=Çek makbuzları ChequesArea=Çek hesabı alanı ChequeDeposits=Çek hesapları Cheques=Çekler -CreditNoteConvertedIntoDiscount=Bu alacak dekontu ya da nakit avans faturası %s durumuna dönüştürüldü +CreditNoteConvertedIntoDiscount=Bu iade faturası ya da nakit avans faturası %s durumuna dönüştürüldü UsBillingContactAsIncoiveRecipientIfExist=Fatura alıcısı olarak üçüncü parti adresi yerine müşteri faturası kişi adresini kullan ShowUnpaidAll=Tüm ödenmemiş faturaları göster ShowUnpaidLateOnly=Ödenmemiş bütün faturaları göster @@ -392,7 +392,7 @@ CantRemovePaymentWithOneInvoicePaid=En az bir fatura ödenmiş olarak sınıflan ExpectedToPay=Beklenen ödeme PayedByThisPayment=Bu ödeme ile ödenmiş ClosePaidInvoicesAutomatically=Tamamı ödenmiş bütün standart ve değiştirilmiş faturaları "Ödendi" olarak sınıflandır. -ClosePaidCreditNotesAutomatically=Tamamı ödenmiş alacak dekontlarını "Ödendi" olarak sınıflandır. +ClosePaidCreditNotesAutomatically=Tamamı ödenmiş iade faturalarını "Ödendi" olarak sınıflandır. AllCompletelyPayedInvoiceWillBeClosed=Bakiyesi kalmayan bütün faturalar otomatikmen kapatılarak "Ödendi" durumuna getirilecektir. ToMakePayment=Öde ToMakePaymentBack=Geri öde @@ -401,8 +401,8 @@ NoteListOfYourUnpaidInvoices=Not: Bu liste, satış temsilcisi olarak bağlı ol RevenueStamp=Bandrol YouMustCreateInvoiceFromThird=Bu seçenek, yalnızca fatura oluştururken, üçüncü parti *müşteri* sekmesinde belirir PDFCrabeDescription=Fatura PDF şablonu Crabe. Tam fatura şablonu (Önerilen şablon) -TerreNumRefModelDesc1=Standart faturalar için numarayı %syymm-nnnn biçiminde ve alacak dekontları için %syymm-nnnn biçiminde göster, yy yıl, mm ay ve nnnn boşluksuz ve 0 olmayan bir dizidir. -MarsNumRefModelDesc1=Belge numarasını, standart faturalar için %syymm-nnnn, değiştirilen faturalar için %syymm-nnnn, alacak dekontları için %syymm-nnnn ve nakit avans faturaları için %syymm-nnnn biçiminde verir. Burada yy yıl, mm ay ve nnnn boşluksuz ve 0 olmayan bir dizidir +TerreNumRefModelDesc1=Standart faturalar için numarayı %syymm-nnnn biçiminde ve iade faturaları için %syymm-nnnn biçiminde göster, yy yıl, mm ay ve nnnn boşluksuz ve 0 olmayan bir dizidir. +MarsNumRefModelDesc1=Belge numarasını, standart faturalar için %syymm-nnnn, değiştirilen faturalar için %syymm-nnnn, iade faturaları için %syymm-nnnn ve nakit avans faturaları için %syymm-nnnn biçiminde verir. Burada yy yıl, mm ay ve nnnn boşluksuz ve 0 olmayan bir dizidir TerreNumRefModelError=$syymm ile başlayan bir fatura hali hazırda vardır ve bu sıra dizisi için uygun değildir. Bu modülü etkinleştirmek için onu kaldırın ya da adını değiştirin. ##### Types de contacts ##### TypeContact_facture_internal_SALESREPFOLL=Müşteri fatura izleme temsilci diff --git a/htdocs/langs/tr_TR/boxes.lang b/htdocs/langs/tr_TR/boxes.lang index 7a402a41cb9..5d88bf29ebc 100644 --- a/htdocs/langs/tr_TR/boxes.lang +++ b/htdocs/langs/tr_TR/boxes.lang @@ -8,10 +8,11 @@ BoxLastCustomerBills=Son müşteri faturaları BoxOldestUnpaidCustomerBills=En eski ödenmemiş müşteri faturaları BoxOldestUnpaidSupplierBills=En eski ödenmemiş tedarikçi faturaları BoxLastProposals=Son teklifler -BoxLastProspects=Son adaylar +BoxLastProspects=Son değiştirilen adaylar BoxLastCustomers=Son değiştirilen müşteriler BoxLastSuppliers=Son değiştirilen tedarikçiler BoxLastCustomerOrders=Son müşteri siparişleri +BoxLastValidatedCustomerOrders=Doğrulanan son müşteri siparişleri BoxLastBooks=Son kayıtlar BoxLastActions=Son eylemler BoxLastContracts=Son sözleşmeler @@ -27,19 +28,22 @@ BoxTitleNbOfCustomers=Müşteri sayısı BoxTitleLastRssInfos=%s ten en son %s haberler BoxTitleLastProducts=Son değiştirilen % s ürün/hizmet BoxTitleProductsAlertStock=Stok uyarısındaki ürünler -BoxTitleLastCustomerOrders=Son değiştirilen %s müşteri siparişi +BoxTitleLastCustomerOrders=Son %s müşteri siparişi +BoxTitleLastModifiedCustomerOrders=Değiştirilen son %s müşteri faturası BoxTitleLastSuppliers=Son kaydedilen %s tedarikçi BoxTitleLastCustomers=Son kaydedilen %s müşteri BoxTitleLastModifiedSuppliers=Son değiştirilen %s tedarikçi BoxTitleLastModifiedCustomers=Son değiştirilen %s müşteri -BoxTitleLastCustomersOrProspects=Son değiştirilen %s müşteri veya aday -BoxTitleLastPropals=Son kaydedilen %s teklif +BoxTitleLastCustomersOrProspects=Son %s müşteri veya aday +BoxTitleLastPropals=Son %s teklif +BoxTitleLastModifiedPropals=Değiştirilen son %s teklif BoxTitleLastCustomerBills=Son %s müşteri faturası +BoxTitleLastModifiedCustomerBills=Değiştirilen son %s müşteri faturası BoxTitleLastSupplierBills=Son kaydedilen %s tedarikçi faturası -BoxTitleLastProspects=Son kaydedilen %s aday +BoxTitleLastModifiedSupplierBills=Değiştirilen son %s tedarikçi faturası BoxTitleLastModifiedProspects=Son değiştirilen %s aday BoxTitleLastProductsInContract=Bir sözleşmedeki son %s ürün/hizmet -BoxTitleLastModifiedMembers=Son değiştirilen %s üye +BoxTitleLastModifiedMembers=Son %s üye BoxTitleLastFicheInter=Değiştirilen son %s müdahale BoxTitleOldestUnpaidCustomerBills=En eski ödenmemiş %s müşteri faturası BoxTitleOldestUnpaidSupplierBills=En eski ödenmemiş %s tedarikçi faturası @@ -50,7 +54,7 @@ BoxTitleTotalUnpaidSuppliersBills=Ödenmemiş tedarikçi faturaları BoxTitleLastModifiedContacts=Son değiştirilen %s kişi/adres BoxMyLastBookmarks=En son %s yerimim BoxOldestExpiredServices=Süresi dolmuş en eski etkin hizmetler -BoxLastExpiredServices=Etkinlik hizmet süresi dolmuş enson %s eski kişi +BoxLastExpiredServices=Etkinlik hizmet süresi dolmuş son %s en eski kişi BoxTitleLastActionsToDo=Son yapılan %s eylem BoxTitleLastContracts=Son %s sözleşme BoxTitleLastModifiedDonations=Son değiştirilen %s bağış @@ -77,8 +81,9 @@ NoRecordedContracts=Kayıtlı sözleşme yok NoRecordedInterventions=Kayıtlı müdahale yok BoxLatestSupplierOrders=Son tedarikçi siparişleri BoxTitleLatestSupplierOrders=Son %s tedarikçi siparişi +BoxTitleLatestModifiedSupplierOrders=Değiştirilen son %s tedarikçi siparişi NoSupplierOrder=Kayıtlı tedarikçi siparişi yok -BoxCustomersInvoicesPerMonth=Aylık müşteri siparişleri +BoxCustomersInvoicesPerMonth=Aylık müşteri faturaları BoxSuppliersInvoicesPerMonth=Aylık tedarikçi faturaları BoxCustomersOrdersPerMonth=Aylık müşteri siparişleri BoxSuppliersOrdersPerMonth=Aylık tedarikçi siparişleri diff --git a/htdocs/langs/tr_TR/categories.lang b/htdocs/langs/tr_TR/categories.lang index d005baae3ab..1a4a2cce4e5 100644 --- a/htdocs/langs/tr_TR/categories.lang +++ b/htdocs/langs/tr_TR/categories.lang @@ -93,7 +93,7 @@ InternalCategory=İç kategori CategoryContents=Kategori içeriği CategId=Kategori kimliği CatSupList=Tedarikçi kategorileri listesi -CatCusList=Müşteri/aday kategorileri listesi +CatCusList=Müşteri/beklenti kategorileri listesi CatProdList=Ürün kategorileri Listesi CatMemberList=Üye kategorileri Listesi CatContactList=Kişi kategorileri ve kişi listesi @@ -111,4 +111,4 @@ ExtraFieldsCategories=Tamamlayıcı öznitelikler CategoriesSetup=Kategori ayarları CategorieRecursiv=Ana kategoriyle otomatik bağlantılı CategorieRecursivHelp=Etkinse, ürün bir alt kategoriye eklenirken aynı zamanda ana kategoriye de eklenecektir -AddProductServiceIntoCategory=Add the following product/service +AddProductServiceIntoCategory=Aşağıdaki ürünü/hizmeti ekle diff --git a/htdocs/langs/tr_TR/commercial.lang b/htdocs/langs/tr_TR/commercial.lang index d17d38c2055..dc040a6d77c 100644 --- a/htdocs/langs/tr_TR/commercial.lang +++ b/htdocs/langs/tr_TR/commercial.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - commercial -Commercial=Ticari -CommercialArea=Ticari alan -CommercialCard=Ticari kart +Commercial=Ticaret +CommercialArea=Ticaret alanı +CommercialCard=Ticaret kartı CustomerArea=Müşteriler alanı Customer=Müşteri Customers=Müşteriler @@ -9,9 +9,9 @@ Prospect=Aday Prospects=Adaylar DeleteAction=Bir etkinlik/görev sil NewAction=Yeni etkinlik/görev -AddAction=Etkinlik/görev ekle -AddAnAction=Bir etkinlik/görev ekle -AddActionRendezVous=Bir randevu etkinliği ekle +AddAction=Etkinlik/görev oluştur +AddAnAction=Bir etkinlik/görev oluştur +AddActionRendezVous=Randevu etkinliği oluştur Rendez-Vous=Rendevu ConfirmDeleteAction=Bu etkinliği/görevi silmek istediğinizden emin misiniz? CardAction=Etkinlik kartı @@ -37,7 +37,7 @@ ListOfProspects=Aday listesi ListOfCustomers=Müşteri listesi LastDoneTasks=Tamamlanan son %s görev LastRecordedTasks=Son kaydedilen görevler -LastActionsToDo=Tamamlanan son %s en eski işlem +LastActionsToDo=Tamamlanmamış son %s en eski işlem DoneAndToDoActionsFor=%s için tamamlanan ve yapılacak etkinlikler DoneAndToDoActions=Tamamlanan ve yapılacak görevler DoneActions=Tamamlanan etkinlikler @@ -93,4 +93,4 @@ NoData=Veri yok StatusProsp=Aday durumu DraftPropals=Taslak teklifler SearchPropal=Bir teklif ara -CommercialDashboard=Ticari özet +CommercialDashboard=Ticaret özeti diff --git a/htdocs/langs/tr_TR/companies.lang b/htdocs/langs/tr_TR/companies.lang index 122d6dae41b..7fffe687d62 100644 --- a/htdocs/langs/tr_TR/companies.lang +++ b/htdocs/langs/tr_TR/companies.lang @@ -76,7 +76,7 @@ PhoneMobile=Mobil No_Email=Toplu e-posta gönderme Fax=Faks Zip=Posta Kodu -Town=ilçesi +Town=İlçesi Web=Web Poste= Durumu DefaultLang=Varsayılan dili @@ -140,7 +140,7 @@ ProfId4BR=CPF ProfId1CH=-- ProfId2CH=-- ProfId3CH=Prof No 1 (Federal no) -ProfId4CH=Prof No 2 (Ticari kayıt numarası) +ProfId4CH=Prof No 2 (Ticaret Kayıt numarası) ProfId5CH=- ProfId6CH=- ProfId1CL=Prof Id 1 (RUT) @@ -211,7 +211,7 @@ ProfId5NL=- ProfId6NL=- ProfId1PT=Prof No 1 (NIPC) ProfId2PT=Prof No 2 (Sosyal güvenlik numarası) -ProfId3PT=Prof No 3 (Ticari kayıt numarası) +ProfId3PT=Prof No 3 (Ticaret Kayıt numarası) ProfId4PT=Prof No 4 (Conservatory) ProfId5PT=- ProfId6PT=- @@ -250,7 +250,7 @@ CustomerAbsoluteDiscountShort=Mutlak indirim CompanyHasRelativeDiscount=Bu müşterinin varsayılan bir %s%% indirimi var CompanyHasNoRelativeDiscount=Bu müşterinin varsayılan hiçbir göreceli indirimi yok CompanyHasAbsoluteDiscount=Bu müşterinin %s %s için halen indirim alacağı ya da birikimi var -CompanyHasCreditNote=Bu müşterinin hala %s %s için alacak dekontu var +CompanyHasCreditNote=Bu müşterinin hala %s %s için iade faturaları var CompanyHasNoAbsoluteDiscount=Bu müşterinin hiçbir indirim alacağı yoktur CustomerAbsoluteDiscountAllUsers=Mutlak indirimler (tüm kullanıcılar tarafından verilen) CustomerAbsoluteDiscountMy=Mutlak indirimler (kendiniz tarafından verilen) @@ -259,8 +259,8 @@ AvailableGlobalDiscounts=Varolan mutlak indirimler DiscountNone=Hiçbiri Supplier=Tedarikçi CompanyList=Firmaların listesi -AddContact=Kişi ekle -AddContactAddress=Kişi/adres ekle +AddContact=Kişi oluştur +AddContactAddress=Kişi/adres oluştur EditContact=Kişi düzenle EditContactAddress=Kişi/adres düzenle Contact=Kişi @@ -268,8 +268,8 @@ ContactsAddresses=Kişiler/adresler NoContactDefinedForThirdParty=Bu üçüncü parti için tanımlı kişi yok NoContactDefined=Bu üçüncü parti için kişi tanımlanmamış DefaultContact=Varsayılan kişi -AddCompany=Firma ekle -AddThirdParty=Üçüncü parti ekle +AddCompany=Firma oluştur +AddThirdParty=Üçüncü parti oluştur DeleteACompany=Firma sil PersonalInformations=Kişisel bilgiler AccountancyCode=Muhasebe kodu @@ -288,7 +288,7 @@ ProspectToContact=İletişime geçilecek aday CompanyDeleted="%s" Firması veritabanından silindi. ListOfContacts=Kişi/adres listesi ListOfContactsAddresses=Kişiler/adresler listesi -ListOfProspectsContacts=Aday yetkilileri listesi +ListOfProspectsContacts=Aday ilgilileri listesi ListOfCustomersContacts=Müşteri yetkilileri listesi ListOfSuppliersContacts=Tedarikçi yetkilileri listesi ListOfCompanies=Firmalar listesi @@ -379,8 +379,8 @@ DeliveryAddressLabel=Teslimat adresi etiketi DeleteDeliveryAddress=Bir teslimat adresi sil ConfirmDeleteDeliveryAddress=Bu teslimat adresini silmek istediğinizden emin misiniz? NewDeliveryAddress=Yeni teslimat adresi -AddDeliveryAddress=Adres ekle -AddAddress=Adres ekle +AddDeliveryAddress=Adres oluştur +AddAddress=Adres oluştur NoOtherDeliveryAddress=Alternatif teslimat adresi tanımlanmamış SupplierCategory=Tedarikçi kategorisi JuridicalStatus200=Bağımsız @@ -397,7 +397,7 @@ YouMustCreateContactFirst=Eposta bildirimleri ekleyebilmek için üçüncü part ListSuppliersShort=Tedarikçi listesi ListProspectsShort=Aday Listesi ListCustomersShort=Müşteri listesi -ThirdPartiesArea=Third parties and contact area +ThirdPartiesArea=Üçüncü partiler kişi alanı LastModifiedThirdParties=Değiştirilen son %s üçüncü parti UniqueThirdParties=Toplam eşsiz üçüncü parti InActivity=Açık @@ -410,5 +410,5 @@ OutstandingBillReached=En yüksek ödenmemiş fatura tutarına ulaşıldı MonkeyNumRefModelDesc=Sayı biçimini müşteri için %syymm-nnn, tedarikçi için %syymm-nnn gösterir, yy yıl, mm ay ve nnnn ise 0 olmayan bir dizidir LeopardNumRefModelDesc=Müşteri/tedarikçi kodu serbesttir. Bu kod herhangi bir zamanda değiştirilebilir. ManagingDirectors=Yönetici(lerin) adı (CEO, müdür, başkan...) -SearchThirdparty=Search thirdparty -SearchContact=Search contact +SearchThirdparty=Üçüncü parti ara +SearchContact=Kişi ara diff --git a/htdocs/langs/tr_TR/compta.lang b/htdocs/langs/tr_TR/compta.lang index 73b7714bd7d..7101f169e35 100644 --- a/htdocs/langs/tr_TR/compta.lang +++ b/htdocs/langs/tr_TR/compta.lang @@ -42,15 +42,15 @@ VATReceived=KDV alınan VATToCollect=KDV satınalımlar VATSummary=KDV bakiyesi LT2SummaryES=IRPF bakiyesi -LT1SummaryES=RE Balance +LT1SummaryES=RE Bakiye VATPaid=KDV ödenmiş SalaryPaid=Ödenen ücret LT2PaidES=IRPF ödenmiş -LT1PaidES=RE Paid +LT1PaidES=RE Ödenen LT2CustomerES=IRPF satışlar LT2SupplierES=IRPF satınalımlar -LT1CustomerES=RE sales -LT1SupplierES=RE purchases +LT1CustomerES=RE satışlar +LT1SupplierES=RE satınalmalar VATCollected=KDV alınan ToPay=Ödenecek ToGet=Geri alınacak @@ -83,11 +83,11 @@ DateStartPeriod=Başlangıç dönemi tarihi DateEndPeriod=Bitiş dönemi tarihi NewVATPayment=Yeni KDV ödemesi newLT2PaymentES=Yeni IRPF ödemesi -newLT1PaymentES=New RE payment +newLT1PaymentES=Yeni RE ödemesi LT2PaymentES=IRPF Ödemesi LT2PaymentsES=IRPF Ödemeleri -LT1PaymentES=RE Payment -LT1PaymentsES=RE Payments +LT1PaymentES=RE Ödeme +LT1PaymentsES=RE Ödemesi VATPayment=KDV Ödemesi VATPayments=KDV Ödemeleri SocialContributionsPayments=Sosyal katkı payı ödemeleri @@ -121,14 +121,14 @@ ConfirmDeleteSocialContribution=Bu sosyal katkı payını silmek istediğinizden ExportDataset_tax_1=Sosyal katkı payları ve ödemeleri CalcModeVATDebt=Mod %sKDV, taahhüt hesabı%s için. CalcModeVATEngagement=Mod %sKDV, gelirler-giderler%s için. -CalcModeDebt=Mod %sAlacaklar-Borçlar, taahhüt hesabı%s için. -CalcModeEngagement=Mod %sAlacaklar-Borçlar, kasa hesabı%s için. +CalcModeDebt=Mod %sAlacaklar-Borçlar%s, Taahhüt hesabı içindir. +CalcModeEngagement=Mod %sAlacaklar-Borçlar%s, kasa hesabı içindir. CalcModeLT1= Müşteri faturaları için mod %sRE tedrikçi faturaları için mod %s -CalcModeLT1Debt=Mode %sRE on customer invoices%s -CalcModeLT1Rec= Mode %sRE on suppliers invoices%s -CalcModeLT2= Mode %sIRPF on customer invoices - suppliers invoices%s -CalcModeLT2Debt=Mode %sIRPF on customer invoices%s -CalcModeLT2Rec= Mode %sIRPF on suppliers invoices%s +CalcModeLT1Debt=Biçim durumu%sRE, bu müşteri faturası için%s +CalcModeLT1Rec= Biçim durumu%sRE, bu tedarikçi faturası için%s +CalcModeLT2= Biçim durumu%sIRPF, bu müşteri faturası - tedarikçi faturası için%s +CalcModeLT2Debt=Biçim durumu%sIRPF, bu müşteri faturası için%s +CalcModeLT2Rec= Biçim durumu%sIRPF, bu tedarikçi faturası için%s AnnualSummaryDueDebtMode=Gelir ve gider bilançosu, yıllık özet AnnualSummaryInputOutputMode=Gelir ve gider bilançosu, yıllık özet AnnualByCompaniesDueDebtMode=Gelir ve gider bilançosu, üçüncü şahıslara göre ayrıntılı, %sAlacaklar-Borçlar%s söz konusu Taahhüt hesabı modu. @@ -143,15 +143,15 @@ RulesCAIn=- Müşterilerden alınan tüm geçerli fatura ödemelerini içerir.%sKDV kapsamı%s raporuna bak SeeVATReportInDueDebtMode=Akış seçenekli bir hesaplama için %sKDV akışı%s raporuna bak RulesVATInServices=- Hizmetler için, rapor ödeme tarihine dayalı olarak gerçekte alınan ya da verilen KDV düzenlemelerini içerir. @@ -187,7 +187,7 @@ AccountancyDashboard=Muhasebe özeti ByProductsAndServices=Ürün ve hizmete göre RefExt=Dış ref ToCreateAPredefinedInvoice=Ön tanımlı bir fatura oluşturmak için, standart bir fatura oluşturun, sonra onu doğrulamadan "Ön tanımlı faturaya dönüştür" düğmesine tıklayın. -LinkedOrder=Link to order +LinkedOrder=Siparişe bağlantıla ReCalculate=Yeniden hesapla Mode1=Yöntem 1 Mode2=Yöntem 2 @@ -196,14 +196,14 @@ CalculationRuleDescSupplier=tedarikçiye göre, aynı hesaplama kuralını kulla TurnoverPerProductInCommitmentAccountingNotRelevant=Ürüne göre ciro raporu, nakit muhasebesimodu için uygun değildir. Bu rapor yalnızca, tahakkuk muhasebesi modu için uygundur (muhasebe modülü ayarlarına bakın). CalculationMode=Hesaplama modu AccountancyJournal=Muhasebe kodu günlüğü -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Default accountancy code to buy products -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Default accountancy code to sell products -ACCOUNTING_SERVICE_BUY_ACCOUNT=Default accountancy code to buy services -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Default accountancy code to sell services -ACCOUNTING_VAT_ACCOUNT=Default accountancy code for collecting VAT -ACCOUNTING_VAT_BUY_ACCOUNT=Default accountancy code for paying VAT -ACCOUNTING_ACCOUNT_CUSTOMER=Accountancy code by default for customer thirdparties -ACCOUNTING_ACCOUNT_SUPPLIER=Accountancy code by default for supplier thirdparties -CloneTax=Clone a social contribution -ConfirmCloneTax=Confirm the clone of a social contribution -CloneTaxForNextMonth=Clone it for next month +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Ürün alımı için varsayılan muhasebe kodu +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Ürün satışı için varsayılan muhasebe kodu +ACCOUNTING_SERVICE_BUY_ACCOUNT=Hizmet alımı için varsayılan muhasebe kodu +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Hizmet satışı için varsayılan muhasebe kodu +ACCOUNTING_VAT_ACCOUNT=Alınan KDV için varsayılan muhasebe kodu +ACCOUNTING_VAT_BUY_ACCOUNT=Ödenen KDV için varsayılan muhasebe kodu +ACCOUNTING_ACCOUNT_CUSTOMER=Müşteri üçüncü partiler için varsayılan muhasebe kodu +ACCOUNTING_ACCOUNT_SUPPLIER=Tedarikçi üçüncü partiler için varsayılan muhasebe kodu +CloneTax=Bir sosyal katkı payı kopyala +ConfirmCloneTax=Bir sosyal katkı payı kopyalanmasını onayla +CloneTaxForNextMonth=Sonraki aya kopyala diff --git a/htdocs/langs/tr_TR/contracts.lang b/htdocs/langs/tr_TR/contracts.lang index 068824b8b54..fcc10813061 100644 --- a/htdocs/langs/tr_TR/contracts.lang +++ b/htdocs/langs/tr_TR/contracts.lang @@ -27,7 +27,7 @@ MenuRunningServices=Yürürlükte olan hizmetler MenuExpiredServices=Süresi dolmuş hizmetler MenuClosedServices=Kapalı hizmetler NewContract=Yeni sözleşme -AddContract=Sözleşme ekle +AddContract=Sözleşme oluştur SearchAContract=Bir sözleşme ara DeleteAContract=Bir sözleşme sil CloseAContract=Bir sözleşme kapat diff --git a/htdocs/langs/tr_TR/cron.lang b/htdocs/langs/tr_TR/cron.lang index 34400a5094a..0a6fe0bcc53 100644 --- a/htdocs/langs/tr_TR/cron.lang +++ b/htdocs/langs/tr_TR/cron.lang @@ -1,10 +1,8 @@ # Dolibarr language file - Source file is en_US - cron -# # About page About = Hakkında CronAbout = Cron hakkında CronAboutPage = Cron hakkında sayfası - # Right Permission23101 = Planlı görev oku Permission23102 = Planlı görev oluştur/güncelle @@ -70,7 +68,7 @@ CronStatusActiveBtn=Etkin CronStatusInactiveBtn=Engelle CronTaskInactive=Bu iş devre dışı CronDtLastResult=Son sonuç tarihi -CronId=Id +CronId=Kimlik CronClassFile=Sınıflar (dosyaadı.sınıf.php) CronModuleHelp=Dolibarr modül dizini adı (aynı zamanda dış Dolibarr modülü ile de çalışır).
Örneğin; Dolibarr Ürün nesnesi alım yöntemi /htdocs/product/class/product.class.php, modül değeri product CronClassFileHelp=Yüklenecek dosya adı.
Örneğin; Dolibarr Ürün nesnesi alım yöntemi /htdocs/product/class/product.class.php, sınıf dosya adı değeri product.class.php diff --git a/htdocs/langs/tr_TR/dict.lang b/htdocs/langs/tr_TR/dict.lang index 5ed9a0a2d67..f88670ba0b9 100644 --- a/htdocs/langs/tr_TR/dict.lang +++ b/htdocs/langs/tr_TR/dict.lang @@ -318,7 +318,7 @@ PaperFormatEUA6=Biçim A6 PaperFormatUSLETTER=Mektup Biçimi US PaperFormatUSLEGAL=Yasal Biçim US PaperFormatUSEXECUTIVE=İş Biçimi US -PaperFormatUSLEDGER=Defter/Tablet +PaperFormatUSLEDGER=Defter/Tablet Biçimi PaperFormatCAP1=Biçim P1 Kanada PaperFormatCAP2=Biçim P2 Kanada PaperFormatCAP3=Biçim P3 Kanada diff --git a/htdocs/langs/tr_TR/donations.lang b/htdocs/langs/tr_TR/donations.lang index 4af09da18a3..0740b8dcd07 100644 --- a/htdocs/langs/tr_TR/donations.lang +++ b/htdocs/langs/tr_TR/donations.lang @@ -4,7 +4,7 @@ Donations=Bağışlar DonationRef=Bağış ref. Donor=Bağışçı Donors=Bağışçılar -AddDonation=Bir bağış ekle +AddDonation=Bir bağış oluştur NewDonation=Yeni bağış ShowDonation=Bağış göster DonationPromise=Hibe sözü @@ -30,4 +30,4 @@ SearchADonation=Bağış ara DonationRecipient=Bağış alıcısı ThankYou=Teşekkürler IConfirmDonationReception=Alıcı, bağış olarak aşağıdaki tutarı aldığını belirtir -MinimumAmount=Minimum amount is %s +MinimumAmount=Enaz miktar %s diff --git a/htdocs/langs/tr_TR/errors.lang b/htdocs/langs/tr_TR/errors.lang index 871e366a1b0..0111fb8633e 100644 --- a/htdocs/langs/tr_TR/errors.lang +++ b/htdocs/langs/tr_TR/errors.lang @@ -37,7 +37,7 @@ ErrorSupplierCodeRequired=Tedarikçi kodu gereklidir ErrorSupplierCodeAlreadyUsed=Tedarikçi kodu zaten kullanılmaktadır ErrorBadParameters=Hatalı parametreler ErrorBadValueForParameter=Hatalı '%s' parametresi için yanlış '%s' değeri -ErrorBadImageFormat=Görüntü dosyası desteklenen bir biçimde değil. +ErrorBadImageFormat=Resim dosyası desteklenen biçimde değil (PHP niz bu biçimdeki resimlerin dönüştürülme işlevini desteklemez) ErrorBadDateFormat=%s değeri yanlış tarih biçiminde ErrorWrongDate=Tarih doğru değil! ErrorFailedToWriteInDir=%s dizinine yazılamadı @@ -114,6 +114,7 @@ ErrorLoginDoesNotExists=%s girişli kullanıcı bulunamadı. ErrorLoginHasNoEmail=Bu kullanıcının e-posta adresi yoktur. İşlem iptal edildi. ErrorBadValueForCode=Güvenlik kodu için hatalı değer. Yeni değer ile tekrar deneyin... ErrorBothFieldCantBeNegative=%s ve %s alanlarının ikisi birden eksi olamaz +ErrorQtyForCustomerInvoiceCantBeNegative=Müşteri faturasındaki kalem miktarı eksi olamaz ErrorWebServerUserHasNotPermission=Web sunucusunu çalıştırmak için kullanılan %s kullanıcı hesabnın bunun için izni yok ErrorNoActivatedBarcode=Etkinleştirilmiş barkod türü yok ErrUnzipFails=% ZipArchive ile sıkıştırılamıyor @@ -155,5 +156,5 @@ WarningUsingThisBoxSlowDown=Uyarı, bu kutuyu kullanmak kutuyu gösteren tüm sa WarningClickToDialUserSetupNotComplete=Kullanıcınızın ClickToDial bilgileri ayarı tamamlanmamış (kullanıcı kartınızdaki ClickToDial tabına bakın) WarningNotRelevant=Bu veri kümesi için alakasız işlem WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Bu özellik, ekran görme engelliler için ya da metin tarayıcılar için ayarlandığında devre dışı kalır. -WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s. -WarningTooManyDataPleaseUseMoreFilters=Too many data. Please use more filters +WarningPaymentDateLowerThanInvoiceDate=Ödeme tarihi (%s) fatura tarihinden (%s) daha önce, bu fatura için %s. +WarningTooManyDataPleaseUseMoreFilters=Çok fazla veri. Lütfen daha çok süzgeç kullanın diff --git a/htdocs/langs/tr_TR/exports.lang b/htdocs/langs/tr_TR/exports.lang index e6c8d770ad0..c4baa85d1b9 100644 --- a/htdocs/langs/tr_TR/exports.lang +++ b/htdocs/langs/tr_TR/exports.lang @@ -47,7 +47,7 @@ Sheet=Sayfa NoImportableData=İçeaktarılacak veri yok (veri içeaktarmaya izin veren tanımlara sahip bir modül yok) FileSuccessfullyBuilt=Dışaaktarma dosyası oluşturuldu SQLUsedForExport=Dışaaktarılacakı dosyayı oluşturmak için kullanılan SQL sorgusu -LineId=Satır No +LineId=Satır no LineDescription=Satır açıklaması LineUnitPrice=Satırın birim fiyat LineVATRate=Satırın KDV oranı @@ -109,7 +109,7 @@ DataCodeIDSourceIsInsertedInto=Koddan bulunan üst satır kodu , şu alana eklen SourceRequired=Veri değeri zorunludur SourceExample=Olası veri değeri örneği ExampleAnyRefFoundIntoElement=%s bileşeni için bulunan ilgi -ExampleAnyCodeOrIdFoundIntoDictionary=%s sözlüğünde bulunan herhangi bir kod (veya id) +ExampleAnyCodeOrIdFoundIntoDictionary=%s sözlüğünde bulunan herhangi bir kod (veya kimlik) CSVFormatDesc=Virgülle Ayrılmış Değer dosya biçimi (.csv).
Alanların birbirinden ayıraç ile ayrıldığı bir metin dosyası biçimi [ %s ]. Bir alan içeriğinde ayıraç bulunursa, yuvarlatma karakteri ile alan yuvarlanır [ %s ]. Yuvarlatma karakterinden çıkmak için Escape karakteri kullanılır [%s]. Excel95FormatDesc=Excel dosya biçimi (.xls)
Doğal Excel 95 biçimi (BIFF5). Excel2007FormatDesc=Excel dosya biçimi (.xlsx)
Doğal Excel 2007 biçimi (ÇalışmasayfasıML). diff --git a/htdocs/langs/tr_TR/help.lang b/htdocs/langs/tr_TR/help.lang index 63ddb6a853c..abce4eafbfb 100644 --- a/htdocs/langs/tr_TR/help.lang +++ b/htdocs/langs/tr_TR/help.lang @@ -10,7 +10,7 @@ DolibarrHelpCenter=Dolibarr yardım ve destek merkezi ToGoBackToDolibarr=Aksi takdirde Dolibarr’ı kullanmak içinburayı tıklayın TypeOfSupport=Destek Kaynağı TypeSupportCommunauty=Genel (ücretsiz) -TypeSupportCommercial=Ticari +TypeSupportCommercial=Ticaret TypeOfHelp=Tür NeedHelpCenter=Yardım veya desteğe mi gereksiniminiz var? Efficiency=Verim diff --git a/htdocs/langs/tr_TR/holiday.lang b/htdocs/langs/tr_TR/holiday.lang index dd4331c8e6c..0d918690ab6 100644 --- a/htdocs/langs/tr_TR/holiday.lang +++ b/htdocs/langs/tr_TR/holiday.lang @@ -1,13 +1,13 @@ # Dolibarr language file - Source file is en_US - holiday HRM=IK -Holidays=Leaves -CPTitreMenu=Leaves +Holidays=İzinler +CPTitreMenu=İzinler MenuReportMonth=Aylık özet -MenuAddCP=Make a leave request -NotActiveModCP=You must enable the module Leaves to view this page. -NotConfigModCP=You must configure the module Leaves to view this page. To do this, click here . -NoCPforUser=You don't have any available day. -AddCP=Make a leave request +MenuAddCP=Bir izin isteği yap +NotActiveModCP=Bu sayfayı görmek için İzinler modülünü etkinleştirmelisiniz +NotConfigModCP=Bu sayfayı görmeniz için İzinler modülünü yapılandırmalısınız. Bunu yapmak için bağlantısına tıklayın . +NoCPforUser=Hiç uygun gününüz yok. +AddCP=Bir izin isteği yap Employe=Çalışan DateDebCP=Başlama tarihi DateFinCP=Bitiş tarihi @@ -18,24 +18,24 @@ ApprovedCP=Onaylandı CancelCP=İptal edildi RefuseCP=Reddedildi ValidatorCP=Onaylayan -ListeCP=List of leaves +ListeCP=İzinler listesi ReviewedByCP=İnceleyen DescCP=Açıklama -SendRequestCP=Create leave request -DelayToRequestCP=Leave requests must be made at least %s day(s) before them. -MenuConfCP=Edit balance of leaves -UpdateAllCP=Update the leaves -SoldeCPUser=Leaves balance is %s days. +SendRequestCP=İzin isteği oluştur +DelayToRequestCP=İzin istekleri enaz %s gün önce yapolmalıdır. +MenuConfCP=İzin bakiyelerini düzenle +UpdateAllCP=İzinleri güncelle +SoldeCPUser=İzin bakiyesi %s gündür. ErrorEndDateCP=Başlama tarihinden büyük bir bitiş tarihi seçmelisiniz. ErrorSQLCreateCP=Oluşturma sırasında bir SQL hatası oluştu: -ErrorIDFicheCP=An error has occurred, the leave request does not exist. +ErrorIDFicheCP=Bir hata oluştu, izin isteği yok. ReturnCP=Önceki sayfaya dön -ErrorUserViewCP=You are not authorized to read this leave request. -InfosCP=Information of the leave request +ErrorUserViewCP=İzin isteklerini okumak için yetkiniz yok. +InfosCP=İzin isteği bilgisi InfosWorkflowCP=Bilgi işakışı RequestByCP=İsteyen -TitreRequestCP=Leave request -NbUseDaysCP=Number of days of vacation consumed +TitreRequestCP=İzin isteği +NbUseDaysCP=Tüketilen tatil gün sayısı EditCP=Düzenle DeleteCP=Sil ActionValidCP=Doğrula @@ -43,26 +43,26 @@ ActionRefuseCP=Reddet ActionCancelCP=İptal StatutCP=Durumu SendToValidationCP=Doğrulamaya gönder -TitleDeleteCP=Delete the leave request -ConfirmDeleteCP=Confirm the deletion of this leave request? -ErrorCantDeleteCP=Error you don't have the right to delete this leave request. -CantCreateCP=You don't have the right to make leave requests. -InvalidValidatorCP=You must choose an approbator to your leave request. +TitleDeleteCP=İzin isteği sil +ConfirmDeleteCP=Bu izin isteğinin silinmesini onaylıyor musunuz? +ErrorCantDeleteCP=Hata, bu izin isteğini silmek için yetkiniz yok. +CantCreateCP=İzin isteği yapmak için yetkiniz yok. +InvalidValidatorCP=İzin isteğiniz için bir onaylayıcı seçmelisiniz. UpdateButtonCP=Güncelle -CantUpdate=You cannot update this leave request. +CantUpdate=Bu izin isteğini güncelleyemezsiniz. NoDateDebut=Bir başlama tarihi seçmelisiniz. NoDateFin=Bir bitiş tarihi seçmelisiniz. -ErrorDureeCP=Tatil isteğiniz çalışma günlerini kapsamıyor. -TitleValidCP=Tatil isteğini onayla -ConfirmValidCP=Are you sure you want to approve the leave request? +ErrorDureeCP=İzin isteğiniz çalışma günü içermiyor. +TitleValidCP=Izin isteğini onayla +ConfirmValidCP=Izin isteğini onaylamak istediğinizden emin misiniz? DateValidCP=Tarih onaylandı -TitleToValidCP=Send leave request -ConfirmToValidCP=Are you sure you want to send the leave request? -TitleRefuseCP=Tatil isteğini reddet -ConfirmRefuseCP=Are you sure you want to refuse the leave request? +TitleToValidCP=İzin isteği gönder +ConfirmToValidCP=Izin isteğini göndermek istediğinizden emin misiniz? +TitleRefuseCP=İzin isteğini reddet +ConfirmRefuseCP=Izin isteğini reddetmek istediğinizden emin misiniz? NoMotifRefuseCP=İsteği reddetmek için bir neden seçmelisiniz. -TitleCancelCP=Tatil isteğini iptal et -ConfirmCancelCP=Are you sure you want to cancel the leave request? +TitleCancelCP=İzin isteğini iptal et +ConfirmCancelCP=Izin isteğini iptal etmek istediğinizden emin misiniz? DetailRefusCP=Ret nedeni DateRefusCP=Ret tarihi DateCancelCP=İptal tarihi @@ -72,42 +72,42 @@ MotifCP=Neden UserCP=Kullanıcı ErrorAddEventToUserCP=Özel izin eklenirken hata oluştu. AddEventToUserOkCP=Özel izin eklenmesi tamamlanmıştır. -MenuLogCP=View logs of leave requests -LogCP=Log of updates of available vacation days +MenuLogCP=İzin isteği kayıtlarına bak +LogCP=Uygun tatil günlerinin güncellenme kayıtı ActionByCP=Uygulayan UserUpdateCP=Kullanıcı için PrevSoldeCP=Önceki Bakiye NewSoldeCP=Yeni Bakiye -alreadyCPexist=Bu dönem için bir tatil isteği zaten yapılmış. +alreadyCPexist=Bu dönem için bir izin isteği zaten yapılmış. UserName=Adı Employee=Çalışan -FirstDayOfHoliday=First day of vacation -LastDayOfHoliday=Last day of vacation +FirstDayOfHoliday=Tatilin birinci günü +LastDayOfHoliday=Tatilin son günü HolidaysMonthlyUpdate=Aylık güncelleme ManualUpdate=Elle güncelleme -HolidaysCancelation=Leave request cancelation +HolidaysCancelation=İzin isteği iptali ## Configuration du Module ## -ConfCP=Tatil modülünün yapılandırılması +ConfCP=İzin isteği modülünün yapılandırılması DescOptionCP=Seçeneğin tanımı ValueOptionCP=Değer -GroupToValidateCP=Group with the ability to approve vacation +GroupToValidateCP=İzin isteklerini olabilirliğine göre gruplandır ConfirmConfigCP=Yapılandırmayı onayla -LastUpdateCP=Last automatic update of vacation +LastUpdateCP=İzin tahsislerini otomatik güncelle UpdateConfCPOK=Güncelleme başarılı ErrorUpdateConfCP=Güncelleme sırasında bir hata oluştu, lütfen yeniden deneyin. -AddCPforUsers=Kullanıcıların tatil bakiyelerini eklemek için lütfen buraya tıklayın. -DelayForSubmitCP=Tatil için son başvuru tarihi -AlertapprobatortorDelayCP=Eğer tatil istekleri son tarihle eşleşmezse onaylayanı uyar -AlertValidatorDelayCP=Préevent the approbator if the leave request exceed delay -AlertValidorSoldeCP=Prevent the approbator if the leave request exceed the balance -nbUserCP=Number of users supported in the module Leaves -nbHolidayDeductedCP=Number of holidays to be deducted per day of vacation taken -nbHolidayEveryMonthCP=Number of vacation days added every month -Module27130Name= Management of leave requests -Module27130Desc= Management of leave requests -TitleOptionMainCP=Main settings of Leave request -TitleOptionEventCP=Settings of leave requets for events +AddCPforUsers=Kullanıcıların izin tahsisleri bakiyelerini yoluyla eklemek için buraya tıklayın. +DelayForSubmitCP=İzin isteği yapmak için son tarih +AlertapprobatortorDelayCP=İzin isteği son tarihe uymuyorsa onaylamayı engelle +AlertValidatorDelayCP=İzin isteği süreyi geçiyorsa onaylamayı engelle +AlertValidorSoldeCP=İzin isteği izin bakiyesini aşıyorsa onaylamayı engelle +nbUserCP=İzinler modülünün desteklediği kullanıcı sayısı +nbHolidayDeductedCP=Alınan izinden düşülecek izin günü sayısı +nbHolidayEveryMonthCP=Her ay eklenen izin günü sayısı +Module27130Name= İzin istekleri yönetimi +Module27130Desc= İzin istekleri yönetimi +TitleOptionMainCP=İzin istekleri ana ayarları +TitleOptionEventCP=Etkiinlikler için izin istekleri ayarları ValidEventCP=Doğrula UpdateEventCP=Etkinlikleri güncelle CreateEventCP=Oluştur @@ -127,23 +127,23 @@ UpdateEventOptionCP=Güncelle ErrorMailNotSend=Eposta gönderilirken bir hata oluştu: NoCPforMonth=Bu ay hiç izin yok. nbJours=Gün sayısı -TitleAdminCP=Configuration of Leaves +TitleAdminCP=İzinlerin Yapılandırılması #Messages Hello=Merhaba -HolidaysToValidate=Validate leave requests -HolidaysToValidateBody=Below is a leave request to validate -HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. -HolidaysToValidateAlertSolde=The user who made this leave reques do not have enough available days. -HolidaysValidated=Validated leave requests -HolidaysValidatedBody=Your leave request for %s to %s has been validated. -HolidaysRefused=Request denied -HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason : -HolidaysCanceled=Canceled leaved request -HolidaysCanceledBody=Your leave request for %s to %s has been canceled. -Permission20000=Read you own leave requests -Permission20001=Create/modify your leave requests -Permission20002=Create/modify leave requests for everybody -Permission20003=Delete leave requests -Permission20004=Setup users available vacation days -Permission20005=Review log of modified leave requests -Permission20006=Read leaves monthly report +HolidaysToValidate=İzin isteği doğrula +HolidaysToValidateBody=Doğrulanacak izin isteği aşağıdadır +HolidaysToValidateDelay=Bu izin isteği %s günden kısa bir sürede gerçekleşecektir. +HolidaysToValidateAlertSolde=Bu izin isteğini yapan kullanıcının yeterli uygun günü yok. +HolidaysValidated=Doğrulanmış izin istekleri +HolidaysValidatedBody=İzin isteğiniz %s - %s arası doğrulanmıştır. +HolidaysRefused=İstek reddedildi +HolidaysRefusedBody=%s - %s arası izin isteğiniz aşağıdaki nedenden dolayı reddedilmiştir: +HolidaysCanceled=İptal edilen izin istekleri +HolidaysCanceledBody=%s - %s arası izin isteğiniz iptal edilmiştir. +Permission20000=Kendi izin isteklerini oku +Permission20001=İzin isteklerinizi oluşturun/düzenleyin +Permission20002=Herkes için izin isteği oluştur/düzenle +Permission20003=İzin isteği sil +Permission20004=Kullanıcıların uygun tatil günlerini ayarla +Permission20005=Değiştirilmiş izin izin istekleri kayıtlarını incele +Permission20006=Aylık izin raporu oku diff --git a/htdocs/langs/tr_TR/mails.lang b/htdocs/langs/tr_TR/mails.lang index 9e71844c4a4..a6086f765c2 100644 --- a/htdocs/langs/tr_TR/mails.lang +++ b/htdocs/langs/tr_TR/mails.lang @@ -32,7 +32,7 @@ CreateMailing=Eposta oluştur MailingDesc=Bu sayfa bir gruBa Eposta göndermenizi sağlar. MailingResult=Eposta sonuçlarını gönderiyor TestMailing=Eposta testi -ValidMailing=Geçerli Eposta +ValidMailing=Geçerli eposta ApproveMailing=Eposta onayla MailingStatusDraft=Taslak MailingStatusValidated=Doğrulanmış @@ -49,7 +49,7 @@ Unsuscribe=Aboneliği kaldır MailingStatusNotContact=Bir daha görüşme ErrorMailRecipientIsEmpty=Eposta alıcısı boş WarningNoEMailsAdded=Alıcının listesine ekli yeni Eposta yok. -ConfirmValidMailing=Bu Epostayı doğrulamak istediğinizden emin misiniz? +ConfirmValidMailing=Bu epostayı doğrulamak istediğinizden emin misiniz? ConfirmResetMailing=Uyarı, Bu %s Epostasını yeniden başlatarak, bu Epostanın toplu gönderiminin başka bir zaman yapılmasını sağlarsınız. Bunu yapmak istediğinizden emin misiniz? ConfirmDeleteMailing=Bu Epostayı silmek istediğinizden emin misiniz? NbOfRecipients=Alıcı sayısı @@ -107,7 +107,7 @@ MailingArea=Eposta alanı LastMailings=Son %s eposta TargetsStatistics=Hedef istatistikleri NbOfCompaniesContacts=Şirketlerin eşsiz kişileri -MailNoChangePossible=Doğrulanmış Epostaların alıcıları değiştirilemez +MailNoChangePossible=Doğrulanmış epostaların alıcıları değiştirilemez SearchAMailing=Eposta ara SendMailing=E-posta gönder SendMail=E-posta gönder @@ -133,6 +133,6 @@ Notifications=Bildirimler NoNotificationsWillBeSent=Bu eylem ve firma için hiçbir Eposta bildirimi planlanmamış ANotificationsWillBeSent=Eposta ile 1 bildirim gönderilecektir SomeNotificationsWillBeSent=Epostayala %s bildirim gönderilecektir -AddNewNotification=Yeni bir e-posta bildirimi isteği etkinleştir -ListOfActiveNotifications=Tüm etkin Eposta bildirimi istekleri +AddNewNotification=Yeni bir eposta bildirim hedefi etkinleştir +ListOfActiveNotifications=Bütün etkin eposta bildirim hedeflerini listele ListOfNotificationsDone=Gönderilen tüm e-posta bildirimleri listesi diff --git a/htdocs/langs/tr_TR/main.lang b/htdocs/langs/tr_TR/main.lang index 622075d57f9..87b19cf7d91 100644 --- a/htdocs/langs/tr_TR/main.lang +++ b/htdocs/langs/tr_TR/main.lang @@ -7,7 +7,7 @@ DIRECTION=ltr FONTFORPDF=DejaVuSans FONTSIZEFORPDF=8 SeparatorDecimal=, -SeparatorThousand=None +SeparatorThousand=, FormatDateShort=%d/%m/%Y FormatDateShortInput=%d/%m/%Y FormatDateShortJava=dd/MM/yyyy @@ -58,12 +58,12 @@ ErrorCantLoadUserFromDolibarrDatabase=Dolibarr veritabanında kullanıcı %s< ErrorNoVATRateDefinedForSellerCountry=Hata, ülke '%s' için herhangi bir KDV oranı tanımlanmamış. ErrorNoSocialContributionForSellerCountry=Hata, ülke %s için herhangi bir sosyal güvenlik primi türü tanımlanmış. ErrorFailedToSaveFile=Hata, dosya kaydedilemedi. -ErrorOnlyPngJpgSupported=Hata yalnızca .Png ve .jpg görüntü dosya formatları desteklenmektedir. -ErrorImageFormatNotSupported=PHP bu biçimdeki görüntüleri dönüştürecek işlevleri desteklemez. SetDate=Ayar tarihi SelectDate=Bir tarih seç SeeAlso=See also %s BackgroundColorByDefault=Varsayılan arkaplan rengi +FileNotUploaded=Dosya yüklenmemiş +FileUploaded=Dosya yüklemesi başarılı FileWasNotUploaded=Bu ekleme için bir dosya seçildi ama henüz gönderilmedi. Bunun için “Dosya ekle” ye tıklayın. NbOfEntries=Kayıt sayısı GoToWikiHelpPage=Çevrimiçi yardım oku (Internet erişimi gerekir) @@ -266,6 +266,7 @@ Afternoon=Öğleden sonra Quadri=Çeyrek MonthOfDay=Ayın günü HourShort=H +MinuteShort=ay Rate=Oran UseLocalTax=Vergi dahil Bytes=Bayt @@ -340,6 +341,7 @@ FullList=Tüm liste Statistics=İstatistikler OtherStatistics=Diğer istatistikler Status=Durum +Favorite=Sık kullanılan ShortInfo=Bilgi. Ref=Ref. RefSupplier=Ref. tedarikçi @@ -490,7 +492,7 @@ ReportDescription=Açıklama Report=Rapor Keyword=Anahtar kelime Legend=Gösterge -FillTownFromZip=İli Posta Kodundan (zip) al +FillTownFromZip=İli Posta Kodundan çıkart Fill=Doldur Reset=Sıfırla ShowLog=Günlüğü göster @@ -676,10 +678,10 @@ SetDemandReason=Kaynağı ayarlayın SetBankAccount=Banka Hesabı Tanımla AccountCurrency=Hesap Para Birimi ViewPrivateNote=Notları izle -XMoreLines=%s gizli satır(lar) +XMoreLines=%s gizli satır PublicUrl=Genel URL AddBox=Kutu ekle - +SelectElementAndClickRefresh=Bir öğe seçin ve Yenile'ye tıkla # Week day Monday=Pazartesi Tuesday=Salı diff --git a/htdocs/langs/tr_TR/margins.lang b/htdocs/langs/tr_TR/margins.lang index 05b423db433..f8b7865faf4 100644 --- a/htdocs/langs/tr_TR/margins.lang +++ b/htdocs/langs/tr_TR/margins.lang @@ -38,4 +38,6 @@ BuyingCost=Maliyet fiyatı UnitCharges=Birim masrafları Charges=Masraflar AgentContactType=Ticari temsilci ilgili tipi -AgentContactTypeDetails=Ticari temsilciler tarafından oran raporları ile ilişkilendirilecek kişi türünü (faturalarla bağlantılı) tanımlayın +AgentContactTypeDetails=Satış temsilcisine göre oran raporu için kullanılacak kişi türünü (faturala bağlantılı) tanımla +rateMustBeNumeric=Oran sayısal bir değer olmalı +markRateShouldBeLesserThan100=İşaretli oran 100 den daha düşük olmalı diff --git a/htdocs/langs/tr_TR/orders.lang b/htdocs/langs/tr_TR/orders.lang index 2085c26d3d1..5e2770ce8e7 100644 --- a/htdocs/langs/tr_TR/orders.lang +++ b/htdocs/langs/tr_TR/orders.lang @@ -65,7 +65,7 @@ ValidateOrder=Doğrulamak amacıyla UnvalidateOrder=Siparişten doğrulamayı kaldır DeleteOrder=Sipariş sil CancelOrder=Siparişi iptal et -AddOrder=Sipariş ekle +AddOrder=Sipariş oluştur AddToMyOrders=Siparişlerime ekle AddToOtherOrders=Diğer siparişlere ekle AddToDraftOrders=Taslak siparişe ekle @@ -137,7 +137,7 @@ OrderSource1=Internet OrderSource2=Posta kampanyası OrderSource3=Telefon kampanyası OrderSource4=Faks kampanyası -OrderSource5=Ticari +OrderSource5=Ticaret OrderSource6=Mağaza QtyOrdered=Sipariş miktarı AddDeliveryCostLine=Siparişin ağırlığını belirten bir teslimat satırı ekleyin diff --git a/htdocs/langs/tr_TR/products.lang b/htdocs/langs/tr_TR/products.lang index a16fca7fd9e..23c2de284d3 100644 --- a/htdocs/langs/tr_TR/products.lang +++ b/htdocs/langs/tr_TR/products.lang @@ -14,9 +14,9 @@ NewService=Yeni hizmet ProductCode=Ürün kodu ServiceCode=Hizmet kodu ProductVatMassChange=Toplu KDV değiştir -ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database. +ProductVatMassChangeDesc=Bu sayfa, ürünler ve hizmetler için tanımlanmış KDV oranının bir değerden başka bir değere değiştirilmesi için kullanılır. Uyarı, bu değişiklik tüm veritabanına uygulanır. MassBarcodeInit=Toplu barkod başlatma -MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. +MassBarcodeInitDesc=Bu sayfa, barkod tanımlanmamış nesneler üzerinde barkod başlatmak için kullanılabilir. Önce barkod modülü kurulumunun tamamlandığını denetleyin. ProductAccountancyBuyCode=Muhasebe kodu (alış) ProductAccountancySellCode=Muhasebe kodu (satış) ProductOrService=Ürün veya Hizmet @@ -102,7 +102,7 @@ AddPhoto=Fotoğraf ekle ListOfStockMovements=Stok hareketleri listesi BuyingPrice=Alış Fiyat SupplierCard=Tedarikçi kartı -CommercialCard=Ticari Kart +CommercialCard=Ticaret Kartı AllWays=Stokta ürün bulmak için yol NoCat=Ürününüz herhangi bir kategoride değil PrimaryWay=Birincil yol @@ -117,12 +117,12 @@ ServiceLimitedDuration=Eğer ürün sınırlı süreli bir hizmetse: MultiPricesAbility=Ürünler/hizmetler için çok seviyeli fiyat MultiPricesNumPrices=Fiyat sayısı MultiPriceLevelsName=Fiyat kategorileri -AssociatedProductsAbility=Yan ürünleri etkinleştir -AssociatedProducts=Yan ürünler -AssociatedProductsNumber=Bu ürünü oluşturan ürün sayısı -ParentProductsNumber=Ana ürün numarası -IfZeroItIsNotAVirtualProduct=0 ise, bu ürün bir sanal ürün değildir -IfZeroItIsNotUsedByVirtualProduct=0 ise, bu ürün hiçbir sanal ürün tarafından kullanılmıyor +AssociatedProductsAbility=Sanal paket özelliğini etkinleştir +AssociatedProducts=Paket ürün +AssociatedProductsNumber=Bu sanal paket ürünü oluşturan ürün sayısı +ParentProductsNumber=Ana paket ürünü sayısı +IfZeroItIsNotAVirtualProduct=Eğer 0 ise, bu ürün bir sanal paket ürünü değildir +IfZeroItIsNotUsedByVirtualProduct=Eğer 0 ise, bu ürün her hangi bir sanal paket ürünü tarafından kullanılmaz EditAssociate=Ilişkilendir Translation=Çeviri KeywordFilter=Anahtar kelime süzgeçi @@ -132,7 +132,7 @@ AddDel=Ekle/Sil Quantity=Miktar NoMatchFound=Eşleşme bulunamadı ProductAssociationList=İlgili ürün/hizmet listesi: ürün/hizmet adı (miktar etkilenir) -ProductParentList=Bu ürünün bir bileşen olan ürünle/hizmetle ilgili liste +ProductParentList=Bu ürünü bir bileşen olarak kullanan ürünlerin/hizmetlerin listesi ErrorAssociationIsFatherOfThis=Seçilen üründen biri güncel ürünün üstü konumundadır DeleteProduct=Bir ürün/hizmet sil ConfirmDeleteProduct=Bu ürünü/hizmeti silmek istediğinizden emin misiniz? @@ -179,7 +179,7 @@ CloneProduct=Ürün veya hizmet klonla ConfirmCloneProduct=Ürün veya hizmet klonlamak istediğinizden emin misiniz %s ? CloneContentProduct=Ürünün/hizmet bütün temel bilgilerini klonla ClonePricesProduct=Ana bilgileri ve fiyatları klonla -CloneCompositionProduct=Sanal ürün/hizmet kopyala +CloneCompositionProduct=Paket ürünü/hizmeti kopyala ProductIsUsed=Bu ürün kullanılır. NewRefForClone=Yeni ürün/hizmet ref. CustomerPrices=Müşteri fiyatları @@ -233,7 +233,7 @@ DefinitionOfBarCodeForProductNotComplete=Barkod türü tanımı ve değeri %s ü DefinitionOfBarCodeForThirdpartyNotComplete=Barkod türü tanımı ve değeri %s ürünü için tamamlanmamıştır. BarCodeDataForProduct=%s Ürünü için barkod bilgisi : BarCodeDataForThirdparty=%s Üçüncü parti için barkod bilgisi : -ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values) +ResetBarcodeForAllRecords=Bütün kayıtlar için barkod değeri tanımla (bu işlem halihazırda yeni değerler tanımlanmış barkod değerlerini sıfırlayacaktır) PriceByCustomer=Müşteri fiyatı PriceCatalogue=Ürün/Servis için birim fiyat PricingRule=Fiyatlandırma yetkileri diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index c945635a36a..09343d28968 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - projects RefProject=Referans Proje -ProjectId=Proje Id +ProjectId=Proje Kimliği Project=Proje Projects=Projeler SharedProject=Herkes @@ -14,7 +14,7 @@ TasksDesc=Bu görünüm tüm projeleri ve görevleri içerir (size verilen kulla Myprojects=Projelerim ProjectsArea=Projeler alanı NewProject=Yeni proje -AddProject=Proje ekle +AddProject=Proje oluştur DeleteAProject=Bir proje sil DeleteATask=Bir görev sil ConfirmDeleteAProject=Bu projeyi silmek istediğinizden emin misiniz? @@ -45,7 +45,7 @@ TaskDateStart=Görev başlama tarihi TaskDateEnd=Görev bitiş tarihi TaskDescription=Görev açıklaması NewTask=Yeni görev -AddTask=Görev ekle +AddTask=Görev oluştur AddDuration=Süre ekle Activity=Etkinlik Activities=Görevler/etkinlikler @@ -85,13 +85,13 @@ ActionsOnProject=Proje etkinlikleri YouAreNotContactOfProject=Bu özel projenin bir ilgilisi değilsiniz DeleteATimeSpent=Harcana süre sil ConfirmDeleteATimeSpent=Bu harcanan süreyi silmek istediğinizden emin misiniz? -DoNotShowMyTasksOnly=See also tasks not assigned to me -ShowMyTasksOnly=View only tasks assigned to me +DoNotShowMyTasksOnly=Bana atanmamış görevleri de göster +ShowMyTasksOnly=Yalnızca bana atanmış görevleri göster TaskRessourceLinks=Kaynaklar ProjectsDedicatedToThisThirdParty=Bu üçüncü parti atanmış projeler NoTasks=Bu proje için hiçbir görev yok LinkedToAnotherCompany=Diğer üçüncü partiye bağlantılı -TaskIsNotAffectedToYou=Task not assigned to you +TaskIsNotAffectedToYou=Sana atanmamış görevler ErrorTimeSpentIsEmpty=Harcanan süre boş ThisWillAlsoRemoveTasks=Bu eylem aynı zamanda projenin tüm görevlerini (şu andaki %s görevleri) ve tüm harcanan süre girişlernii siler . IfNeedToUseOhterObjectKeepEmpty=Eğer bazı nesneler başka bir üçüncü partiye aitse (fatura, sipariş, ...), oluşturulması için bu projeye bağlanmalıdır, projenin birden çok üçüncü partiye bağlı olması için bunu boş bırakın. @@ -120,7 +120,7 @@ TypeContact_project_task_internal_TASKCONTRIBUTOR=Katılımcı TypeContact_project_task_external_TASKCONTRIBUTOR=Katılımcı SelectElement=Öğe seç AddElement=Öğeye bağlan -UnlinkElement=Unlink element +UnlinkElement=Öğenin bağlantısını kaldır # Documents models DocumentModelBaleine=Eksiksiz bir proje rapor modeli (logo. ..) PlannedWorkload = Planlı işyükü @@ -129,4 +129,4 @@ ProjectReferers=Yönlendirme nesneleri SearchAProject=Bir proje ara ProjectMustBeValidatedFirst=Projeler önce doğrulanmalıdır ProjectDraft=Taslak projeler -FirstAddRessourceToAllocateTime=Associate a ressource to allocate time +FirstAddRessourceToAllocateTime=Zaman ayırmak için bir kaynak ilişkilendirin diff --git a/htdocs/langs/tr_TR/sendings.lang b/htdocs/langs/tr_TR/sendings.lang index 3d84e62205f..3419729b7c3 100644 --- a/htdocs/langs/tr_TR/sendings.lang +++ b/htdocs/langs/tr_TR/sendings.lang @@ -74,5 +74,5 @@ SumOfProductVolumes=Ürün hacimleri toplamı SumOfProductWeights=Ürün ağırlıkları toplamı # warehouse details -DetailWarehouseNumber= Warehouse details -DetailWarehouseFormat= W:%s (Qty : %d) +DetailWarehouseNumber= Depo ayrıntıları +DetailWarehouseFormat= Ağ:%s (Mik : %d) diff --git a/htdocs/langs/tr_TR/stocks.lang b/htdocs/langs/tr_TR/stocks.lang index 74cba2a10c6..967a8a811fb 100644 --- a/htdocs/langs/tr_TR/stocks.lang +++ b/htdocs/langs/tr_TR/stocks.lang @@ -51,10 +51,10 @@ QtyDispatched=Sevkedilen miktar OrderDispatch=Stok sevkiyatı RuleForStockManagementDecrease=Stok azaltma yönetimi kuralı RuleForStockManagementIncrease=Stok arttırma yönetimi kuralı -DeStockOnBill=Müşteri faturalarının/alacak dekontlarının doğrulanması üzerine gerçek stokları azalt +DeStockOnBill=Müşteri faturalarının/iade faturalarının doğrulanması üzerine gerçek stokları azalt DeStockOnValidateOrder=Müşteri siparişlerinin doğrulanması üzerine gerçek stokları azalt DeStockOnShipment=Sevkiyat doğrulaması üzerine gerçek stokları azalt -ReStockOnBill=Müşteri faturalarının/alacak dekontlarının doğrulanması üzerine gerçek stokları arttır +ReStockOnBill=Müşteri faturalarının/iade faturalarının doğrulanması üzerine gerçek stokları arttır ReStockOnValidateOrder=Tedarikçi siparişlerinin onanması üzerine gerçek stokları arttır ReStockOnDispatchOrder=Tedarikçi siparişi aldıktan sonra, elle yapılan sevk üzerine gerçek stokları artırın ReStockOnDeleteInvoice=Fatura silinirse gerçek stokları arttır diff --git a/htdocs/langs/tr_TR/suppliers.lang b/htdocs/langs/tr_TR/suppliers.lang index 56480109c70..0b89e0a28d6 100644 --- a/htdocs/langs/tr_TR/suppliers.lang +++ b/htdocs/langs/tr_TR/suppliers.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - suppliers Suppliers=Tedarikçiler Supplier=Tedarikçi -AddSupplier=Bir tedarikçi ekle +AddSupplier=Bir tedarikçi oluştur SupplierRemoved=Tedarikçi kaldırıldı SuppliersInvoice=Tedarikçi faturası NewSupplier=Yeni tedarikçi @@ -40,5 +40,5 @@ AddSupplierInvoice=Tedarikçi faturası oluştur ListOfSupplierProductForSupplier=Tedarikçi %s için ürün ve fiyat listesi NoneOrBatchFileNeverRan=Hiçbiri veya toplu %s yürütülmedi SentToSuppliers=Tedarikçilere gönderilen -ListOfSupplierOrders=List of supplier orders -MenuOrdersSupplierToBill=Supplier orders to invoice +ListOfSupplierOrders=Tedarikçi siparişleri listesi +MenuOrdersSupplierToBill=Faturalanacak tedarikçi siparişleri diff --git a/htdocs/langs/tr_TR/users.lang b/htdocs/langs/tr_TR/users.lang index 50ee7de07b3..84c9b09f57a 100644 --- a/htdocs/langs/tr_TR/users.lang +++ b/htdocs/langs/tr_TR/users.lang @@ -93,7 +93,7 @@ PermissionInheritedFromAGroup=İzin hak tanındı çünkü bir kullanıcının g Inherited=İntikal eden UserWillBeInternalUser=Oluşturulacak kullanıcı bir iç kullanıcı olacaktır (çünkü belirli bir üçüncü parti ile bağlantılı değildir) UserWillBeExternalUser=Oluşturulacak kullanıcı bir dış kullanıcı olacaktır (çünkü belirli bir üçüncü parti ile bağlantılıdır) -IdPhoneCaller=Kimlik telefonu arayıcı +IdPhoneCaller=Telefon açanın kimliği UserLogged=Kullanıcı %s bağlı UserLogoff=Kullanıcı %s çıkış yaptı NewUserCreated=Kullanıcı %s oluşturuldu @@ -120,3 +120,4 @@ UseTypeFieldToChange=Değiştirmek için Alan türünü kullan OpenIDURL=OpenID URL LoginUsingOpenID=Giriş için OpenID kullan WeeklyHours=Haftalık saatler +ColorUser=Kullanıcı rengi From 7da4edda015adf2aba65850c41eedcabc9f9c887 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 10 Nov 2014 09:48:26 +0100 Subject: [PATCH 071/111] Incresae value for warning --- dev/codesniffer/ruleset.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev/codesniffer/ruleset.xml b/dev/codesniffer/ruleset.xml index 72590c15741..7e3057a6675 100755 --- a/dev/codesniffer/ruleset.xml +++ b/dev/codesniffer/ruleset.xml @@ -108,7 +108,7 @@ - + From 8fc5faf4a843d801e3517399b70ea4e7b17cd125 Mon Sep 17 00:00:00 2001 From: BadPixxel Date: Mon, 10 Nov 2014 16:29:05 +0100 Subject: [PATCH 072/111] Minor BugFix : Missing delete Category Multilangual fields Delete of Multilangual fields was missing, impossible to delete category. Fixed Error : Cannot delete or update a parent row: a foreign key constraint fails (`Dol-3.6`.`llx_categorie_lang`, CONSTRAINT `fk_category_lang_fk_category` FOREIGN KEY (`fk_category`) REFERENCES `llx_categorie` (`rowid`)) --- htdocs/categories/class/categorie.class.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index af16ca2d28e..a504b71b42e 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -408,7 +408,18 @@ class Categorie extends CommonObject $error++; } } - + if (! $error) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."categorie_lang"; + $sql .= " WHERE fk_category = ".$this->id; + if (!$this->db->query($sql)) + { + $this->error=$this->db->lasterror(); + dol_syslog("Error sql=".$sql." ".$this->error, LOG_ERR); + $error++; + } + } + // Delete category if (! $error) { From c268b1fb64213d39fb593312a0537ba25144162d Mon Sep 17 00:00:00 2001 From: aspangaro Date: Tue, 11 Nov 2014 14:49:26 +0100 Subject: [PATCH 073/111] Update accounting language Problem with transifex in french, the file is in french language on the website but in github, still in english... --- htdocs/langs/en_US/accountancy.lang | 26 +++--- htdocs/langs/fr_FR/accountancy.lang | 124 ++++++++++++++-------------- 2 files changed, 75 insertions(+), 75 deletions(-) diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index cfcdec83c2f..e1713acd57c 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -25,12 +25,12 @@ Selectchartofaccounts=Select a chart of accounts Validate=Validate Addanaccount=Add an accounting account AccountAccounting=Accounting account -Ventilation=Ventilation +Ventilation=Breakdown ToDispatch=To dispatch Dispatched=Dispatched -CustomersVentilation=Ventilation customers -SuppliersVentilation=Ventilation suppliers +CustomersVentilation=Breakdown customers +SuppliersVentilation=Breakdown suppliers TradeMargin=Trade margin Reports=Reports ByCustomerInvoice=By invoices customers @@ -45,9 +45,9 @@ WriteBookKeeping=Record accounts in general ledger Bookkeeping=General ledger AccountBalanceByMonth=Account balance by month -AccountingVentilation=Accounting ventilation -AccountingVentilationSupplier=Accounting ventilation supplier -AccountingVentilationCustomer=Accounting ventilation customer +AccountingVentilation=Breakdown accounting +AccountingVentilationSupplier=Breakdown accounting supplier +AccountingVentilationCustomer=Breakdown accounting customer Line=Line CAHTF=Total purchase supplier HT @@ -56,7 +56,7 @@ InvoiceLinesDone=Ventilated lines of invoice IntoAccount=In the accounting account Ventilate=Ventilate -VentilationAuto=Automatic ventilation +VentilationAuto=Automatic breakdown Processing=Processing EndProcessing=The end of processing @@ -68,9 +68,9 @@ NotVentilatedinAccount=Not ventilated in the accounting account ACCOUNTING_SEPARATORCSV=Separator CSV -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be ventilated shown by page (maximum recommended : 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the pages of ventilation "Has to ventilate" by the most recent elements -ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the pages of ventilation "Ventilated" by the most recent elements +ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the breakdown pages "Breakdown" by the most recent elements AccountLength=Length of the accounting accounts shown in Dolibarr AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. @@ -140,14 +140,14 @@ Active=Statement NewFiscalYear=New fiscal year -DescVentilCustomer=Consult here the annual accounting ventilation of your invoices customers +DescVentilCustomer=Consult here the annual breakdown accounting of your invoices customers TotalVente=Total turnover HT TotalMarge=Total sales margin DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account ChangeAccount=Change the accounting account for lines selected by the account: Vide=- -DescVentilSupplier=Consult here the annual accounting ventilation of your invoices suppliers +DescVentilSupplier=Consult here the annual breakdown accounting of your invoices suppliers DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account @@ -155,4 +155,4 @@ ValidateHistory=Validate Automatically ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used -FicheVentilation=Ventilation card \ No newline at end of file +FicheVentilation=Breakdown card \ No newline at end of file diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index f538e713b81..b5c74a10700 100644 --- a/htdocs/langs/fr_FR/accountancy.lang +++ b/htdocs/langs/fr_FR/accountancy.lang @@ -41,8 +41,8 @@ List=Liste Create=Créer UpdateAccount=Modification de compte comptable UpdateMvts=Modification de mouvements -WriteBookKeeping=Record accounts in general ledger -Bookkeeping=General ledger +WriteBookKeeping=Comptabiliser les écritures dans le grand livre +Bookkeeping=Grand livre AccountBalanceByMonth=Solde par mois AccountingVentilation=Ventilation comptable @@ -53,106 +53,106 @@ Line=Ligne CAHTF=Total achats fournisseur HT InvoiceLines=Lignes de factures à ventiler InvoiceLinesDone=Lignes de factures ventilées -IntoAccount=In the accounting account +IntoAccount=Dans le compte comptable -Ventilate=Ventilate -VentilationAuto=Automatic ventilation +Ventilate=Ventilation +VentilationAuto=Ventilation automatique -Processing=Processing -EndProcessing=The end of processing -AnyLineVentilate=Any lines to ventilate +Processing=Traitement en cours +EndProcessing=Fin de traitement +AnyLineVentilate=Aucune ligne à ventiler SelectedLines=Lignes sélectionnées -Lineofinvoice=Line of invoice -VentilatedinAccount=Ventilated successfully in the accounting account -NotVentilatedinAccount=Not ventilated in the accounting account +Lineofinvoice=Ligne de facture +VentilatedinAccount=Ventilée avec succès dans le compte comptable +NotVentilatedinAccount=Non ventilée dans le compte comptable -ACCOUNTING_SEPARATORCSV=Separator CSV +ACCOUNTING_SEPARATORCSV=Separateur CSV -ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be ventilated shown by page (maximum recommended : 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the pages of ventilation "Has to ventilate" by the most recent elements -ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the pages of ventilation "Ventilated" by the most recent elements +ACCOUNTING_LIMIT_LIST_VENTILATION=Nombre d'éléments à ventiler affichés par page (maximum conseillé : 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Commencer le tri des pages de ventilation "A ventiler" par les éléments les plus récents +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Commencer le tri des pages de ventilation "Ventilées" par les éléments les plus récents -AccountLength=Length of the accounting accounts shown in Dolibarr -AccountLengthDesc=Function allowing to feign a length of accounting account by replacing spaces by the zero figure. This function touches only the display, it does not modify the accounting accounts registered in Dolibarr. For the export, this function is necessary to be compatible with certain software. -ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounts -ACCOUNTING_LENGTH_AACCOUNT=Length of the third party accounts +AccountLength=Longueur des comptes comptables affichés dans Dolibarr +AccountLengthDesc=Fonction permettant de simuler une longueur de compte comptable en remplaçant les espaces par le chiffre zéro. Cette fonction touche uniquement à l'affichage, elle ne modifie pas les comptes comptables enregistrés dans Dolibarr. Pour l'export, cette fonction est nécessaire pour être compatible avec certains logiciels. +ACCOUNTING_LENGTH_GACCOUNT=Longueur des comptes généraux +ACCOUNTING_LENGTH_AACCOUNT=Longueur des comptes tiers -ACCOUNTING_SELL_JOURNAL=Sell journal -ACCOUNTING_PURCHASE_JOURNAL=Purchase journal -ACCOUNTING_BANK_JOURNAL=Bank journal -ACCOUNTING_CASH_JOURNAL=Cash journal -ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal -ACCOUNTING_SOCIAL_JOURNAL=Social journal +ACCOUNTING_SELL_JOURNAL=Journal des ventes +ACCOUNTING_PURCHASE_JOURNAL=Journal des achats +ACCOUNTING_BANK_JOURNAL=Journal de banque +ACCOUNTING_CASH_JOURNAL=Journal de caisse +ACCOUNTING_MISCELLANEOUS_JOURNAL=Journal des opérations diverses +ACCOUNTING_SOCIAL_JOURNAL=Journal social -ACCOUNTING_ACCOUNT_TRANSFER_CASH=Account of transfer -ACCOUNTING_ACCOUNT_SUSPENSE=Account of wait +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Compte de transfert espèce +ACCOUNTING_ACCOUNT_SUSPENSE=Compte d'attente -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for bought products (if not defined in the product sheet) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (if not defined in the product sheet) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (if not defined in the service sheet) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (if not defined in the service sheet) +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte comptable par défaut pour les produits achetés (si non défini dans la fiche produit) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Compte comptable par défaut pour les produits vendus (si non défini dans la fiche produit) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Compte comptable par défaut pour les services achetés (si non défini dans la fiche service) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Compte comptable par défaut pour les services vendus (si non défini dans la fiche service) Doctype=Type de documents Docdate=Date -Docref=Reference +Docref=Référence Numerocompte=Compte Code_tiers=Tiers -Labelcompte=Label account +Labelcompte=Libellé compte Debit=Débit Credit=Crédit Amount=Montant Sens=Sens Codejournal=Journal -DelBookKeeping=Delete the records of the general ledger +DelBookKeeping=Supprimer les écritures du grand livre SellsJournal=Journal des ventes PurchasesJournal=Journal des achats DescSellsJournal=Journal des ventes DescPurchasesJournal=Journal des achats -BankJournal=Bank journal -DescBankJournal=Bank journal including all the types of payments other than cash -CashJournal=Cash journal -DescCashJournal=Cash journal including the type of payment cash +BankJournal=Journal de banque +DescBankJournal=Journal de banque comprenant tous les types de règlements autres que espèce +CashJournal=Journal de caisse +DescCashJournal=Journal de caisse comprenant le type de règlement "espèce" -CashPayment=Cash Payment +CashPayment=Règlement espèce -SupplierInvoicePayment=Payment of invoice supplier -CustomerInvoicePayment=Payment of invoice customer +SupplierInvoicePayment=Règlement de facture fournisseur +CustomerInvoicePayment=Règlement de facture client -ThirdPartyAccount=Thirdparty account +ThirdPartyAccount=Compte tiers -NewAccountingMvt=New movement -NumMvts=Number of movement +NewAccountingMvt=Nouveau mouvement +NumMvts=Numéro du mouvement ListeMvts=Liste des mouvements -ErrorDebitCredit=Debit and Credit cannot have a value at the same time +ErrorDebitCredit=Debit et Credit ne peuvent avoir une valeur en même temps -ReportThirdParty=List thirdparty account -DescThirdPartyReport=Consult here the list of the thirdparty customers and the suppliers and their accounting accounts +ReportThirdParty=Liste compte tiers +DescThirdPartyReport=Consultez ici la liste des tiers clients et fournisseurs et leurs codes comptables -ListAccounts=List of the accounting accounts +ListAccounts=Liste des comptes comptables Pcgversion=Version du plan Pcgtype=Classe de compte -Pcgsubtype=Under class of account +Pcgsubtype=Sous classe de compte Accountparent=Racine des comptes -Active=Relevé +Active=État NewFiscalYear=Nouvelle année fiscale -DescVentilCustomer=Consult here the annual accounting ventilation of your invoices customers -TotalVente=Total turnover HT -TotalMarge=Total sales margin -DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their accounting account -DescVentilTodoCustomer=Ventilate your lines of customer invoice with an accounting account -ChangeAccount=Change the accounting account for lines selected by the account: +DescVentilCustomer=Consultez ici la ventilation comptable annuelle de vos factures clients +TotalVente=Total chiffre affaires HT +TotalMarge=Total marge commerciale +DescVentilDoneCustomer=Consultez ici la liste des lignes de factures clients et leur compte comptable +DescVentilTodoCustomer=Ventilez vos lignes de facture client avec un compte comptable +ChangeAccount=Changer le compte comptable pour les lignes sélectionnées par le compte: Vide=- -DescVentilSupplier=Consult here the annual accounting ventilation of your invoices suppliers -DescVentilTodoSupplier=Ventilate your lines of invoice supplier with an accounting account -DescVentilDoneSupplier=Consult here the list of the lines of invoices supplier and their accounting account +DescVentilSupplier=Consultez ici la ventilation comptable annuelle de vos factures fournisseurs +DescVentilTodoSupplier=Ventilez vos lignes de facture fournisseur avec un compte comptable +DescVentilDoneSupplier=Consultez ici la liste des lignes de factures fournisseur et leur compte comptable -ValidateHistory=Validate Automatically +ValidateHistory=Valider Automatiquement -ErrorAccountancyCodeIsAlreadyUse=Erreur, vous ne pouvez pas détruire de compte comptable car il est utilisé +ErrorAccountancyCodeIsAlreadyUse=Erreur, vous ne pouvez pas supprimer ce compte comptable car il est utilisé -FicheVentilation=Ventilation card +FicheVentilation=Fiche ventilation From 7177c04378105cdcde91beb3dfac42b36ff54c46 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Nov 2014 20:45:30 +0100 Subject: [PATCH 074/111] Minor css enhancement --- htdocs/core/tpl/login.tpl.php | 14 +++++++++++--- htdocs/core/tpl/passwordforgotten.tpl.php | 10 ++++++++-- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 4 +++- htdocs/theme/eldy/style.css.php | 7 +++++++ 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/htdocs/core/tpl/login.tpl.php b/htdocs/core/tpl/login.tpl.php index c4f9ff2b206..23d8dd4f326 100644 --- a/htdocs/core/tpl/login.tpl.php +++ b/htdocs/core/tpl/login.tpl.php @@ -83,13 +83,17 @@ $(document).ready(function () {
resArray['options'])) { @@ -111,7 +115,11 @@ if (! empty($hookmanager->resArray['options'])) { @@ -91,7 +93,11 @@ if (! empty($hookmanager->resArray['options'])) { '; } else From 425a853e078487363b07c2fbf9859795ba95796d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 14 Nov 2014 11:56:05 +0100 Subject: [PATCH 090/111] - New: Match other auth system: Login can be done entering login or user email (this open the road for SSO). --- ChangeLog | 2 ++ htdocs/core/login/functions_dolibarr.php | 16 +++++++++------- htdocs/main.inc.php | 1 + 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9f1ae0857a2..22b1631390f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ English Dolibarr ChangeLog ***** ChangeLog for 3.7 compared to 3.6.* ***** For users: +- New: Match other auth system: Login can be done entering login or user + email (this open the road for SSO). - New: Agenda export by project #1967. - New: Increase length of thirdparty to 128 chars. - New: "Is Order shippable" icon #1975. diff --git a/htdocs/core/login/functions_dolibarr.php b/htdocs/core/login/functions_dolibarr.php index d1555678313..8e5a8b13ea9 100644 --- a/htdocs/core/login/functions_dolibarr.php +++ b/htdocs/core/login/functions_dolibarr.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2007-2014 Laurent Destailleur * Copyright (C) 2007-2009 Regis Houssin * Copyright (C) 2010-2011 Juanjo Menent * @@ -20,7 +20,7 @@ /** * \file htdocs/core/login/functions_dolibarr.php * \ingroup core - * \brief Authentication functions for Dolibarr mode + * \brief Authentication functions for Dolibarr mode (check user on login or email and check pass) */ @@ -50,13 +50,15 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= { // If test username/password asked, we define $test=false and $login var if ok, set $_SESSION["dol_loginmesg"] if ko $table = MAIN_DB_PREFIX."user"; - $usernamecol = 'login'; + $usernamecol1 = 'login'; + $usernamecol2 = 'email'; $entitycol = 'entity'; - $sql ='SELECT rowid, entity, pass, pass_crypted'; + $sql ='SELECT rowid, login, entity, pass, pass_crypted'; $sql.=' FROM '.$table; - $sql.=' WHERE '.$usernamecol." = '".$db->escape($usertotest)."'"; - $sql.=' AND '.$entitycol." IN (0," . ($entity ? $entity : 1) . ")"; + $sql.=' WHERE ('.$usernamecol1." = '".$db->escape($usertotest)."'"; + if (preg_match('/@/',$usertotest)) $sql.=' OR '.$usernamecol2." = '".$db->escape($usertotest)."'"; + $sql.=') AND '.$entitycol." IN (0," . ($entity ? $entity : 1) . ")"; dol_syslog("functions_dolibarr::check_user_password_dolibarr", LOG_DEBUG); $resql=$db->query($sql); @@ -106,7 +108,7 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= // Password ok ? if ($passok) { - $login=$usertotest; + $login=$obj->login; } else { diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 6698866869e..51fa2cdf162 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1414,6 +1414,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a $loginhtmltext.=''.$langs->trans("User").''; $loginhtmltext.='
'.$langs->trans("Name").': '.$user->getFullName($langs); $loginhtmltext.='
'.$langs->trans("Login").': '.$user->login; + $loginhtmltext.='
'.$langs->trans("EMail").': '.$user->email; $loginhtmltext.='
'.$langs->trans("Administrator").': '.yn($user->admin); $type=($user->societe_id?$langs->trans("External").$company:$langs->trans("Internal")); $loginhtmltext.='
'.$langs->trans("Type").': '.$type; From 00c6033e11b35d5f004fddacd82f3f3464d1ea9e Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 14 Nov 2014 13:28:49 +0100 Subject: [PATCH 091/111] Fix display user signature when WYSIWYG is enabled --- htdocs/user/fiche.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php index a0523bcbc28..9b1845d6bff 100644 --- a/htdocs/user/fiche.php +++ b/htdocs/user/fiche.php @@ -1208,7 +1208,11 @@ else // Signature print '
\n"; // Hierarchy From a3ab22e27d09f439385d2c838df86705a5860d41 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 00:16:59 +0100 Subject: [PATCH 092/111] Fix: css --- htdocs/public/test/test_arrays.php | 10 ++++------ htdocs/theme/eldy/style.css.php | 28 ++++++++++++++-------------- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index b447be4574b..51341901e21 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -111,9 +111,8 @@ This page is a sample of page using tables. To make test with
use_javascript_ajax) && $object->statut == 0) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; + if (! empty($conf->use_javascript_ajax)) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; ?> -
line3
@@ -302,7 +301,7 @@ $('xxxth').replaceWith(
'.$langs->trans("CheckReceiptShort").''.$langs->trans("LastCheckReceiptShort",$max).''.$langs->trans("Date")."'.$langs->trans("Account").''.$langs->trans("NbOfCheques").'
- + + +
- + + +
- + diff --git a/htdocs/core/tpl/passwordforgotten.tpl.php b/htdocs/core/tpl/passwordforgotten.tpl.php index 61c0bbe6cfc..af27aff944b 100644 --- a/htdocs/core/tpl/passwordforgotten.tpl.php +++ b/htdocs/core/tpl/passwordforgotten.tpl.php @@ -69,7 +69,9 @@ $(document).ready(function () {
- id="username" name="username" class="flat" size="15" maxlength="40" value="" tabindex="1" /> + + id="username" name="username" class="flat input-icon-user" size="15" maxlength="40" value="" tabindex="1" /> +
- + diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 0cbede46864..e8c77100bf9 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -182,7 +182,9 @@ ALTER TABLE llx_product MODIFY COLUMN fk_barcode_type INTEGER NULL DEFAULT NULL; UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type = 0; ALTER TABLE llx_product ADD INDEX idx_product_fk_barcode_type (fk_barcode_type); UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type NOT IN (SELECT rowid from llx_c_barcode_type); ---ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_barcode_type) REFERENCES llx_c_barcode_type (rowid); + +-- This request make mysql drop (mysql bug): +ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_barcode_type) REFERENCES llx_c_barcode_type(rowid); -- Added missing relations of llx_product_price diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 3eb64ad5c2e..5a3696f338f 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -897,6 +897,13 @@ div#login_left, div#login_right { table.login_table tr td table.none tr td { padding: 2px; } +table.login_table_securitycode { + border-spacing: 0px; +} +table.login_table_securitycode tr td { + padding-left: 0px; + padding-right: 4px; +} #securitycode { min-width: 60px; } From d9b27fc2804149ad8a0aa1c7e7c93ef16259d81b Mon Sep 17 00:00:00 2001 From: Juanjo Menent Date: Tue, 11 Nov 2014 21:43:56 +0100 Subject: [PATCH 075/111] Qual: Skeleton class updated by using table_element instead "mytable" and __METHOD__ for syslog --- dev/skeletons/skeleton_class.class.php | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index 781bbc1f77c..f623debc581 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -1,5 +1,6 @@ + * Copyright (C) 2014 Juanjo Menent * Copyright (C) ---Put here your own copyright and developer email--- * * This program is free software; you can redistribute it and/or modify @@ -79,7 +80,7 @@ class Skeleton_Class extends CommonObject // Put here code to add control on parameters values // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."mytable("; + $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."("; $sql.= " field1,"; $sql.= " field2"; //... @@ -91,13 +92,13 @@ class Skeleton_Class extends CommonObject $this->db->begin(); - dol_syslog(get_class($this)."::create", LOG_DEBUG); + dol_syslog(__METHOD__, LOG_DEBUG); $resql=$this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } if (! $error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."mytable"); + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element); if (! $notrigger) { @@ -116,7 +117,7 @@ class Skeleton_Class extends CommonObject { foreach($this->errors as $errmsg) { - dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR); + dol_syslog(__METHOD__." ".$errmsg, LOG_ERR); $this->error.=($this->error?', '.$errmsg:$errmsg); } $this->db->rollback(); @@ -145,7 +146,7 @@ class Skeleton_Class extends CommonObject $sql.= " t.field1,"; $sql.= " t.field2"; //... - $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; + $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as t"; if ($ref) $sql.= " WHERE t.ref = '".$ref."'"; else $sql.= " WHERE t.rowid = ".$id; @@ -195,7 +196,7 @@ class Skeleton_Class extends CommonObject // Put here code to add a control on parameters values // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."mytable SET"; + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET"; $sql.= " field1=".(isset($this->field1)?"'".$this->db->escape($this->field1)."'":"null").","; $sql.= " field2=".(isset($this->field2)?"'".$this->db->escape($this->field2)."'":"null").""; //... @@ -203,7 +204,7 @@ class Skeleton_Class extends CommonObject $this->db->begin(); - dol_syslog(get_class($this)."::update"); + dol_syslog(__METHOD__); $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } @@ -226,7 +227,7 @@ class Skeleton_Class extends CommonObject { foreach($this->errors as $errmsg) { - dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR); + dol_syslog(__METHOD__." ".$errmsg, LOG_ERR); $this->error.=($this->error?', '.$errmsg:$errmsg); } $this->db->rollback(); @@ -270,10 +271,10 @@ class Skeleton_Class extends CommonObject if (! $error) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."mytable"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element; $sql.= " WHERE rowid=".$this->id; - dol_syslog(get_class($this)."::delete"); + dol_syslog(__METHOD__); $resql = $this->db->query($sql); if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } } @@ -283,7 +284,7 @@ class Skeleton_Class extends CommonObject { foreach($this->errors as $errmsg) { - dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR); + dol_syslog(__METHOD__." ".$errmsg, LOG_ERR); $this->error.=($this->error?', '.$errmsg:$errmsg); } $this->db->rollback(); From 47ebe21f7b81d198d178c564bb292b2cfd639565 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Nov 2014 23:38:56 +0100 Subject: [PATCH 076/111] Fix: Removed unused property --- htdocs/core/class/translate.class.php | 1 - 1 file changed, 1 deletion(-) diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 6b24d5356df..563c749ae92 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -33,7 +33,6 @@ class Translate var $defaultlang; // Current language for current user var $direction = 'ltr'; // Left to right or Right to left - var $charset_inputfile=array(); // To store charset encoding used for language var $charset_output='UTF-8'; // Codage used by "trans" method outputs var $tab_translate=array(); // Array of all translations key=>value From 6eabad65b74112d4fdf3bf09c4df91af9c6b911a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 11 Nov 2014 23:56:03 +0100 Subject: [PATCH 077/111] Fix: Removed warning --- htdocs/comm/action/peruser.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index da34983779a..0985e9df471 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -1008,8 +1008,9 @@ function show_day_events2($username, $day, $month, $year, $monthshown, $style, & if ($output[0]['color']) $color2 = $output[0]['color']; } else if (count($cases2[$h]) > 1) $color2='222222'; - $ids1=join(',',array_keys($cases1[$h])); - $ids2=join(',',array_keys($cases2[$h])); + $ids1='';$ids2=''; + if (array_keys($cases1[$h])) $ids1=join(',',array_keys($cases1[$h])); + if (array_keys($cases2[$h])) $ids2=join(',',array_keys($cases2[$h])); //var_dump($cases1[$h]); print ''; print ''; @@ -199,7 +200,7 @@ foreach ($syslogModules as $moduleName) { foreach ($setuparray as $option) { - if (isset($_POST[$option['constant']])) $value=$_POST[$option['constant']]; + if (isset($_POST[$option['constant']])) $value=$_POST[$option['constant']]; else if (defined($option['constant'])) $value = constant($option['constant']); else $value = (isset($option['default']) ? $option['default'] : ''); @@ -220,7 +221,7 @@ foreach ($syslogModules as $moduleName) print "
'; From 137b3f898d2366e884358f0b71d537b66b5afd74 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Nov 2014 00:02:30 +0100 Subject: [PATCH 078/111] Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop --- htdocs/comm/action/peruser.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 0985e9df471..b6c3054f3a8 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -1009,8 +1009,8 @@ function show_day_events2($username, $day, $month, $year, $monthshown, $style, & } else if (count($cases2[$h]) > 1) $color2='222222'; $ids1='';$ids2=''; - if (array_keys($cases1[$h])) $ids1=join(',',array_keys($cases1[$h])); - if (array_keys($cases2[$h])) $ids2=join(',',array_keys($cases2[$h])); + if (count($cases1[$h]) && array_keys($cases1[$h])) $ids1=join(',',array_keys($cases1[$h])); + if (count($cases2[$h]) && array_keys($cases2[$h])) $ids2=join(',',array_keys($cases2[$h])); //var_dump($cases1[$h]); print ''; print '
'; From da258cd4b095c0c272e8e1d732ae38794a54bc3d Mon Sep 17 00:00:00 2001 From: aspangaro Date: Wed, 12 Nov 2014 07:29:57 +0100 Subject: [PATCH 079/111] Typo & presentation --- htdocs/admin/menus.php | 1 - htdocs/admin/menus/index.php | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/menus.php b/htdocs/admin/menus.php index 2e050a4bbe8..6dfefd14feb 100644 --- a/htdocs/admin/menus.php +++ b/htdocs/admin/menus.php @@ -26,7 +26,6 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; $action=GETPOST('action'); diff --git a/htdocs/admin/menus/index.php b/htdocs/admin/menus/index.php index 215f2eae069..d7fce1c937d 100644 --- a/htdocs/admin/menus/index.php +++ b/htdocs/admin/menus/index.php @@ -326,6 +326,7 @@ if ($conf->use_javascript_ajax) ''.img_edit('default',0,'class="menuEdit" id="edit'.$menu['rowid'].'"').' '. ''.img_edit_add('default').' '. ''.img_delete('default').' '. + '     '. ''.img_picto("Monter","1uparrow").''.img_picto("Descendre","1downarrow").''. '
' ); From 81f0d953e330cf91868044bf4151f0bf99b8781e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Nov 2014 10:05:40 +0100 Subject: [PATCH 080/111] Fix: Bad test --- htdocs/admin/syslog.php | 9 +++++---- htdocs/contact/class/contact.class.php | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/htdocs/admin/syslog.php b/htdocs/admin/syslog.php index b69e8a4cacf..18de8bf6bfc 100644 --- a/htdocs/admin/syslog.php +++ b/htdocs/admin/syslog.php @@ -183,8 +183,9 @@ foreach ($syslogModules as $moduleName) { $module = new $moduleName; - $moduleactive=$module->isActive(); - if ($moduleactive == -1 && empty($conf->global->MAIN_FEATURES_LEVEL)) continue; // Some modules are hidden if not activable and not into debug mode (end user must not see them) + $moduleactive=(int) $module->isActive(); + //print $moduleName." = ".$moduleactive." - ".$module->getName()." ".($moduleactive == -1)."
\n"; + if (($moduleactive == -1) && empty($conf->global->MAIN_FEATURES_LEVEL)) continue; // Some modules are hidden if not activable and not into debug mode (end user must not see them) $var=!$var; print '
\n"; print "\n"; -print '
'; +print '
'."\n\n"; print_titre($langs->trans("SyslogLevel")); diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 3f81608c415..a17c0ee1b44 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -910,7 +910,7 @@ class Contact extends CommonObject global $langs; $langs->load("dict"); - $code=(! empty($this->civility_id)?$this->civility_id:(! empty($this->civility_id)?$this->civility_id:'')); + $code=(! empty($this->civility_id)?$this->civility_id:(! empty($this->civilite_id)?$this->civilite_id:'')); if (empty($code)) return ''; return $langs->getLabelFromKey($this->db, "Civility".$code, "c_civility", "code", "label", $code); } From 608fa5eaed72e7941d51f45eeca86efb0197b4e5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Nov 2014 10:25:56 +0100 Subject: [PATCH 081/111] Fix: Avoid to load language when we can not. --- htdocs/core/class/translate.class.php | 6 ++++++ htdocs/societe/class/societe.class.php | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 563c749ae92..7347b065a79 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -197,6 +197,12 @@ class Translate if ($alt < 1 && isset($langarray[1]) && strtolower($langarray[0]) == strtolower($langarray[1])) $alt=1; if ($alt < 2 && strtolower($langofdir) == 'en_us') $alt=2; + if (empty($langofdir)) // This may occurs when load is called without setting the language and without providing a value for forcelangdir + { + dol_syslog("Error: ".get_class($this)."::Load was called but language was not set yet with langs->setDefaultLang(). Nothing will be loaded.", LOG_WARNING); + return -1; + } + foreach($this->dir as $keydir => $searchdir) { // Directory of translation files diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index e95ec86066c..df7eafe3d9d 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -2811,7 +2811,7 @@ class Societe extends CommonObject } else // For backward compatibility { - dol_syslog("Your country setup use an old syntax. Reedit it using setup area.", LOG_WARNING); + dol_syslog("Your country setup use an old syntax. Reedit it using setup area.", LOG_ERR); include_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; $country_code=getCountry($country_id,2,$this->db); // This need a SQL request, but it's the old feature that should not be used anymore $country_label=getCountry($country_id,0,$this->db); // This need a SQL request, but it's the old feature that should not be used anymore From d164b2d0e1ddb614dc0bc15849d4e90947c39599 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 12 Nov 2014 10:37:39 +0100 Subject: [PATCH 082/111] Fix: Showing capital --- htdocs/core/lib/pdf.lib.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/pdf.lib.php b/htdocs/core/lib/pdf.lib.php index 5000e00b345..3223412dc5f 100644 --- a/htdocs/core/lib/pdf.lib.php +++ b/htdocs/core/lib/pdf.lib.php @@ -758,7 +758,9 @@ function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_bass // Capital if ($fromcompany->capital) { - $line3.=($line3?" - ":"").$outputlangs->transnoentities("CapitalOf",price($fromcompany->capital, 0, $outputlangs, 0, 0, 0, $conf->currency)); + $tmpamounttoshow = price2num($fromcompany->capital); // This field is a free string + if (is_numeric($tmpamounttoshow) && $tmpamounttoshow > 0) $line3.=($line3?" - ":"").$outputlangs->transnoentities("CapitalOf",price($tmpamounttoshow, 0, $outputlangs, 0, 0, 0, $conf->currency)); + else $line3.=($line3?" - ":"").$outputlangs->transnoentities("CapitalOf",$tmpamounttoshow,$outputlangs); } // Prof Id 1 if ($fromcompany->idprof1 && ($fromcompany->country_code != 'FR' || ! $fromcompany->idprof2)) From c0a3606a595fa21a015ef262ce98fd0e32453412 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 12 Nov 2014 22:53:23 +0100 Subject: [PATCH 083/111] Fix problem on task creation with chrome for french browser. --- htdocs/core/lib/functions.lib.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index e238b1e5834..d679882161f 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1053,7 +1053,11 @@ function dol_mktime($hour,$minute,$second,$month,$day,$year,$gm=false,$check=1) $default_timezone=@date_default_timezone_get(); } } - else $localtz = new DateTimeZone('UTC'); + + if (empty($localtz)) { + $localtz = new DateTimeZone('UTC'); + } + $dt = new DateTime(null,$localtz); $dt->setDate($year,$month,$day); $dt->setTime((int) $hour, (int) $minute, (int) $second); From 0131acd9309e08f16b3fdd111e8170dde3d2d782 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Thu, 13 Nov 2014 11:06:21 +0100 Subject: [PATCH 084/111] Update llx_commande_fournisseur.sql increase size of ref supplier (some supplier are very long ref...) --- htdocs/install/mysql/tables/llx_commande_fournisseur.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql index 2ecf9e10442..556300dfb7b 100644 --- a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql +++ b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql @@ -27,7 +27,7 @@ create table llx_commande_fournisseur entity integer DEFAULT 1 NOT NULL, -- multi company id ref_ext varchar(30), -- reference into an external system (not used by dolibarr) - ref_supplier varchar(30), + ref_supplier varchar(64), fk_soc integer NOT NULL, fk_projet integer DEFAULT 0, -- project id From 0a1f5eff41651b9cbabad69038691784cb6dfcf2 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Thu, 13 Nov 2014 11:15:24 +0100 Subject: [PATCH 085/111] Update llx_commande_fournisseur.sql extend ref fields size (like for customer commande) --- htdocs/install/mysql/tables/llx_commande_fournisseur.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql index 556300dfb7b..ff87110c72a 100644 --- a/htdocs/install/mysql/tables/llx_commande_fournisseur.sql +++ b/htdocs/install/mysql/tables/llx_commande_fournisseur.sql @@ -23,11 +23,11 @@ create table llx_commande_fournisseur ( rowid integer AUTO_INCREMENT PRIMARY KEY, - ref varchar(30) NOT NULL, -- order number + ref varchar(255) NOT NULL, -- order number entity integer DEFAULT 1 NOT NULL, -- multi company id - ref_ext varchar(30), -- reference into an external system (not used by dolibarr) - ref_supplier varchar(64), + ref_ext varchar(64), -- reference into an external system (not used by dolibarr) + ref_supplier varchar(255), fk_soc integer NOT NULL, fk_projet integer DEFAULT 0, -- project id From 38c2dc8747de03e51aebed361a9e5b6252bea7d3 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Thu, 13 Nov 2014 11:16:40 +0100 Subject: [PATCH 086/111] Update llx_facture_fourn.sql increase ref fields size (like customers facture) --- htdocs/install/mysql/tables/llx_facture_fourn.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_facture_fourn.sql b/htdocs/install/mysql/tables/llx_facture_fourn.sql index 3a71c2455aa..33773b7a9cb 100644 --- a/htdocs/install/mysql/tables/llx_facture_fourn.sql +++ b/htdocs/install/mysql/tables/llx_facture_fourn.sql @@ -22,11 +22,11 @@ create table llx_facture_fourn ( rowid integer AUTO_INCREMENT PRIMARY KEY, - ref varchar(30), - ref_supplier varchar(50) NOT NULL, + ref varchar(255), + ref_supplier varchar(255) NOT NULL, entity integer DEFAULT 1 NOT NULL, -- multi company id - ref_ext varchar(30), -- reference into an external system (not used by dolibarr) + ref_ext varchar(255), -- reference into an external system (not used by dolibarr) type smallint DEFAULT 0 NOT NULL, fk_soc integer NOT NULL, From 6cee8e129492d3d48f128b6163deb47806b3ce95 Mon Sep 17 00:00:00 2001 From: BENKE Charles Date: Thu, 13 Nov 2014 11:24:45 +0100 Subject: [PATCH 087/111] Update 3.6.0-3.7.0.sql increase fieds size of ref supplier (order and bill) --- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index e8c77100bf9..0e77022abef 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -1121,3 +1121,12 @@ ALTER TABLE llx_extrafields ADD alwayseditable INTEGER DEFAULT 0 AFTER pos; -- add supplier webservice fields ALTER TABLE llx_societe ADD webservices_url varchar(255) DEFAULT NULL; ALTER TABLE llx_societe ADD webservices_key varchar(128) DEFAULT NULL; + +-- changes size of ref in commande_fourn and facture_fourn +ALTER TABLE llx_commande_fournisseur MODIFY COLUMN ref VARCHAR(255); +ALTER TABLE llx_commande_fournisseur MODIFY COLUMN ref_ext VARCHAR(255); +ALTER TABLE llx_commande_fournisseur MODIFY COLUMN ref_supplier VARCHAR(255); + +ALTER TABLE llx_facture_fourn MODIFY COLUMN ref VARCHAR(255); +ALTER TABLE llx_facture_fourn MODIFY COLUMN ref_ext VARCHAR(255); +ALTER TABLE llx_facture_fourn MODIFY COLUMN ref_supplier VARCHAR(255); From 6bac74470951d78d33b035b2164d941bab2ede0f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 13 Nov 2014 16:46:40 +0100 Subject: [PATCH 088/111] Fix: Missing event management into select when combo not selected --- htdocs/comm/action/card.php | 4 +- htdocs/core/class/html.form.class.php | 65 ++++++++++++++++++-- htdocs/core/class/html.formcompany.class.php | 2 +- htdocs/core/lib/ajax.lib.php | 4 +- 4 files changed, 66 insertions(+), 9 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 96db3133cf9..e67111fad6c 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -710,9 +710,9 @@ if ($action == 'create') $events[]=array('method' => 'getContacts', 'url' => dol_buildpath('/core/ajax/contacts.php',1), 'htmlname' => 'contactid', 'params' => array('add-customer-contact' => 'disabled')); //For external user force the company to user company if (!empty($user->societe_id)) { - print $form->select_company($user->societe_id,'socid','',1,1,0,$events); + print $form->select_thirdparty_list($user->societe_id,'socid','',1,1,0,$events); } else { - print $form->select_company('','socid','',1,1,0,$events); + print $form->select_thirdparty_list('','socid','',1,1,0,$events); } } diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 03defa19129..eb2f13c8ac3 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -746,7 +746,7 @@ class Form * @param int $showempty Add an empty field * @param int $showtype Show third party type in combolist (customer, prospect or supplier) * @param int $forcecombo Force to use combo box - * @param array $events Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) + * @param array $events Event options to run on change. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) * @param int $limit Maximum number of elements * @return string HTML string with * @deprecated Use select_thirdparty instead @@ -816,10 +816,67 @@ class Form $resql=$this->db->query($sql); if ($resql) { - if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT) && ! $forcecombo) + if (! empty($conf->use_javascript_ajax)) { - include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; - $out.= ajax_combobox($htmlname, $events, $conf->global->COMPANY_USE_SEARCH_TO_SELECT); + if (! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT) && ! $forcecombo) + { + include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; + $out.= ajax_combobox($htmlname, $events, $conf->global->COMPANY_USE_SEARCH_TO_SELECT); + } + else + { + if (count($events)) // Add management of event + { + print ''; + } + } } // Construct $out and $outarray diff --git a/htdocs/core/class/html.formcompany.class.php b/htdocs/core/class/html.formcompany.class.php index d32c0def5ab..e45fffff759 100644 --- a/htdocs/core/class/html.formcompany.class.php +++ b/htdocs/core/class/html.formcompany.class.php @@ -547,7 +547,7 @@ class FormCompany $resql = $this->db->query($sql); if ($resql) { - if ($conf->use_javascript_ajax && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT)) + if (! empty($conf->use_javascript_ajax) && ! empty($conf->global->COMPANY_USE_SEARCH_TO_SELECT)) { // Use Ajax search $minLength = (is_numeric($conf->global->COMPANY_USE_SEARCH_TO_SELECT)?$conf->global->COMPANY_USE_SEARCH_TO_SELECT:2); diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index f21d7d2ff02..3966b29f874 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -345,13 +345,13 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0) var obj = '.json_encode($events).'; $.each(obj, function(key,values) { if (values.method.length) { - runJsCodeForEvent(values); + runJsCodeForEvent'.$htmlname.'(values); } }); } }); - function runJsCodeForEvent(obj) { + function runJsCodeForEvent'.$htmlname.'(obj) { var id = $("#'.$htmlname.'").val(); var method = obj.method; var url = obj.url; From 8dba0f9c8552be9ad6917dd529ffa093b645a1b7 Mon Sep 17 00:00:00 2001 From: damien clochard Date: Fri, 14 Nov 2014 00:21:39 +0100 Subject: [PATCH 089/111] Check PRODUIT_DESC_IN_FORM before printing the products desc --- htdocs/contrat/card.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 836070f970b..3502736fca6 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -1290,7 +1290,8 @@ else $productstatic->ref=$objp->label; print $productstatic->getNomUrl(0,'',16); } - if ($objp->description) print '
'.dol_nl2br($objp->description); + if (! empty($conf->global->PRODUIT_DESC_IN_FORM) and $objp->description) + print '
'.dol_nl2br($objp->description); print '
'.$langs->trans('Signature').''; - print dol_htmlentitiesbr($object->signature); + if (empty($conf->global->FCKEDITOR_ENABLE_USERSIGN)) { + print dol_htmlentitiesbr($object->signature); + } else { + print $object->signature; + } print "
- +



Example 3 : Standard table => Use this if you need the drag and drop for lines
@@ -310,11 +309,10 @@ $('xxxth').replaceWith( use_javascript_ajax) && $object->statut == 0) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; + if (! empty($conf->use_javascript_ajax)) include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; ?> - - +
title1title2
title1title2
a1b1
a2b2
diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index 5a3696f338f..9f4e6abe24c 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -1850,13 +1850,13 @@ table.liste td { .impair, .nohover .impair:hover, tr.impair td.nohover { - background: linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; - background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; - background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; - background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; - background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%); - background: #eaeaea !important; + background: #eaeaea; font-family: ; border: 0px; @@ -1867,22 +1867,22 @@ table.liste td { td.nohover, .pair:hover { - background: rgb() !important; + background: rgb(); - background: #fafafa !important; + background: #fafafa; border: 0px; } .pair, .nohover .pair:hover, tr.pair td.nohover { - background: linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; - background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; - background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; - background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; - background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%) !important; + background: linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -o-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -moz-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -webkit-linear-gradient(bottom, rgb() 85%, rgb() 100%); + background: -ms-linear-gradient(bottom, rgb() 85%, rgb() 100%); - background: #ffffff !important; + background: #ffffff; font-family: ; border: 0px; From a46a6cccaf8b8652a979f4ec6e91217718adb830 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 00:57:31 +0100 Subject: [PATCH 093/111] Fix: Screen page tests. Page tests are now ok with 3.7. --- htdocs/core/class/html.form.class.php | 9 ++-- htdocs/public/test/test_arrays.php | 35 ++++++++-------- htdocs/public/test/test_forms.php | 59 +++++++++++---------------- 3 files changed, 48 insertions(+), 55 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index eb2f13c8ac3..99a0985f914 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4168,7 +4168,7 @@ class Form // Add code for jquery to use multiselect // Note: Plugin "multiselect" is no more provided by Dolibarr. You must include it and load it into your module to use it. if ((! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && ($conf->global->MAIN_USE_JQUERY_MULTISELECT == 'multiselect')) - || (defined('REQUIRE_JQUERY_MULTISELECT') && constant('REQUIRE_JQUERY_MULTISELECT'))) + || (defined('REQUIRE_JQUERY_MULTISELECT') && constant('REQUIRE_JQUERY_MULTISELECT') == 'multiselect')) { print ' '; } diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index 51341901e21..6725c776cd4 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -4,10 +4,9 @@ define("NOCSRFCHECK",1); // We accept to go on this page from external web site. require '../../main.inc.php'; - -if (!empty($conf->global->MAIN_FEATURES_LEVEL)) +if ($_SERVER['HTTP_HOST'] != 'localhost') { - print "Page available onto dev environment only"; + print "Page available only with url http://localhost/..."; exit; } $usedolheader=0; // 1 = Test inside a dolibarr page, 0 = Use hard coded header @@ -30,16 +29,21 @@ if (empty($usedolheader)) + - + +" /> - + +-- + - + +
- -
-This page is a sample of page using tables. To make test with
-- css (edit page to change)
-- jmobile (edit page to enable/disable)
+

+This page is a sample of page using tables. It is designed to make test with
+- css (edit page to change to test another css)
+- jmobile (add parameter dol_use_jmobile=1 to enable view with jmobile)
- dataTables
- tablednd
- +




Example 0a : Table with div+div+div containg a select that should be overflowed and truncated => Use this to align text or form
-
+
-
+
@@ -84,7 +87,7 @@ This page is a sample of page using tables. To make test with
-
+
@@ -97,7 +100,7 @@ This page is a sample of page using tables. To make test with
- + diff --git a/htdocs/public/test/test_forms.php b/htdocs/public/test/test_forms.php index 126c9723fa7..d8841e4f7cd 100644 --- a/htdocs/public/test/test_forms.php +++ b/htdocs/public/test/test_forms.php @@ -1,48 +1,31 @@ global->MAIN_FEATURES_LEVEL)) +if ($_SERVER['HTTP_HOST'] != 'localhost') { - print "Page available onto dev environment only"; + print "Page available only with url http://localhost/..."; exit; } + + +llxHeader(); + ?> - - - - - - - -Test page - - - - - - - - - - - - - - - - -
-
-This page is a sample of page using html methods.
+

+This page is a sample of page using html methods. It is designed to make test with
+- css (edit page to change to test another css)
+- jmobile (add parameter dol_use_jmobile=1 to enable view with jmobile)

+

-select_date using tzuser date @@ -64,8 +47,14 @@ print '

'."\n"; print "Test 3: We must have here 1970-01-01 00:00:00 selected (fields are mandatory)
\n"; $form->select_date(dol_get_first_day(1970,1,false), 'test3', 1, 1, 0); -?> +print '

'."\n"; -
- - \ No newline at end of file +// Test4: a multiselect +print "Test 4: a multiselect
\n"; +$array=array(1=>'Value 1',2=>'Value 2',3=>'Value 3'); +$arrayselected=array(1,3); +print $form->multiselectarray('testmulti', $array, $arrayselected, '', 0, '', 0, 250); + + +llxFooter(); +$db->close(); From 7faedf0c69c27916dce308290771367e485d3bac Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 11:59:02 +0100 Subject: [PATCH 094/111] Uniformize code for search --- htdocs/product/composition/card.php | 20 ++++++++++++-------- htdocs/product/list.php | 14 +++++--------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/htdocs/product/composition/card.php b/htdocs/product/composition/card.php index 8c71f29581b..ec616b2f222 100644 --- a/htdocs/product/composition/card.php +++ b/htdocs/product/composition/card.php @@ -130,24 +130,28 @@ if ($action == 'search') { $current_lang = $langs->getDefaultLang(); - $sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.price, p.fk_product_type as type'; + $sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,'; + $sql.= ' p.fk_product_type, p.tms as datem'; if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= ', pl.label as labelm, pl.description as descriptionm'; $sql.= ' FROM '.MAIN_DB_PREFIX.'product as p'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_product as cp ON p.rowid = cp.fk_product'; if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_lang as pl ON pl.fk_product = p.rowid AND lang='".($current_lang)."'"; - $sql.= ' WHERE p.entity IN ('.getEntity("product", 1).')'; + $sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')'; if ($key != "") { + // For natural search + $params = array('p.ref', 'p.label', 'p.description', 'p.note'); + // multilang if (! empty($conf->global->MAIN_MULTILANGS)) { - $sql.= " AND (p.ref LIKE '%".$key."%'"; - $sql.= " OR pl.label LIKE '%".$key."%')"; + $params[] = 'pl.label'; + $params[] = 'pl.description'; + $params[] = 'pl.note'; } - else - { - $sql.= " AND (p.ref LIKE '%".$key."%'"; - $sql.= " OR p.label LIKE '%".$key."%')"; + if (! empty($conf->barcode->enabled)) { + $params[] = 'p.barcode'; } + $sql .= natural_search($params, $key); } if (! empty($conf->categorie->enabled) && ! empty($parent) && $parent != -1) { diff --git a/htdocs/product/list.php b/htdocs/product/list.php index ebf8b77f722..c199344647e 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -130,25 +130,22 @@ else $sql = 'SELECT DISTINCT p.rowid, p.ref, p.label, p.barcode, p.price, p.price_ttc, p.price_base_type,'; $sql.= ' p.fk_product_type, p.tms as datem,'; - $sql.= ' p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte,'; + $sql.= ' p.duration, p.tosell, p.tobuy, p.seuil_stock_alerte, p.desiredstock,'; $sql.= ' MIN(pfp.unitprice) as minsellprice'; - $sql .= ', p.desiredstock'; $sql.= ' FROM '.MAIN_DB_PREFIX.'product as p'; if (! empty($search_categ) || ! empty($catid)) $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_product as cp ON p.rowid = cp.fk_product"; // We'll need this table joined to the select in order to filter by categ $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; // multilang - if ($conf->global->MAIN_MULTILANGS) // si l'option est active - { - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product_lang as pl ON pl.fk_product = p.rowid AND pl.lang = '".$langs->getDefaultLang() ."'"; - } + if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_lang as pl ON pl.fk_product = p.rowid AND pl.lang = '".$langs->getDefaultLang() ."'"; $sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')'; if ($sall) { // For natural search $params = array('p.ref', 'p.label', 'p.description', 'p.note'); // multilang - if ($conf->global->MAIN_MULTILANGS) // si l'option est active + if (! empty($conf->global->MAIN_MULTILANGS)) { + $params[] = 'pl.label'; $params[] = 'pl.description'; $params[] = 'pl.note'; } @@ -169,7 +166,7 @@ else { $params = array('p.label'); // multilang - if ($conf->global->MAIN_MULTILANGS) // si l'option est active + if (! empty($conf->global->MAIN_MULTILANGS)) { $params[] = 'pl.label'; } @@ -199,7 +196,6 @@ else $sql.= $db->order($sortfield,$sortorder); $sql.= $db->plimit($limit + 1, $offset); - dol_syslog("product:list.php:", LOG_DEBUG); $resql = $db->query($sql); if ($resql) { From 11eb7de596564d9def27e7aa91f3774017070f4a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 14:14:52 +0100 Subject: [PATCH 095/111] Try to clean sql to avoid mysql bug --- htdocs/install/mysql/migration/3.6.0-3.7.0.sql | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql index 0e77022abef..e4fbcfbec9a 100755 --- a/htdocs/install/mysql/migration/3.6.0-3.7.0.sql +++ b/htdocs/install/mysql/migration/3.6.0-3.7.0.sql @@ -183,9 +183,6 @@ UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type = 0; ALTER TABLE llx_product ADD INDEX idx_product_fk_barcode_type (fk_barcode_type); UPDATE llx_product SET fk_barcode_type = NULL WHERE fk_barcode_type NOT IN (SELECT rowid from llx_c_barcode_type); --- This request make mysql drop (mysql bug): -ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_barcode_type) REFERENCES llx_c_barcode_type(rowid); - -- Added missing relations of llx_product_price -- fk_user_author @@ -1130,3 +1127,8 @@ ALTER TABLE llx_commande_fournisseur MODIFY COLUMN ref_supplier VARCHAR(255); ALTER TABLE llx_facture_fourn MODIFY COLUMN ref VARCHAR(255); ALTER TABLE llx_facture_fourn MODIFY COLUMN ref_ext VARCHAR(255); ALTER TABLE llx_facture_fourn MODIFY COLUMN ref_supplier VARCHAR(255); + + +-- This request make mysql drop (mysql bug, so we add it at end): +--ALTER TABLE llx_product ADD CONSTRAINT fk_product_barcode_type FOREIGN KEY (fk_barcode_type) REFERENCES llx_c_barcode_type(rowid); + From d0fb732cce79beee89c93abd52280a76d0eb310b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 14:24:10 +0100 Subject: [PATCH 096/111] Fix: Bad value for ThousandSeparator. --- htdocs/langs/tr_TR/admin.lang | 38 +++++++++++++++++----------------- htdocs/langs/tr_TR/agenda.lang | 20 +++++++++--------- htdocs/langs/tr_TR/main.lang | 2 +- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index d1ee8c4ac6e..60121a579e1 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -35,14 +35,14 @@ ExternalUsers=Dış kullanıcılar GlobalSetup=Genel Ayarlar GUISetup=Görünüm SetupArea=Ayarlar alanı -FormToTestFileUploadForm=Dosya yükleme deneme formu (kuruluma göre) -IfModuleEnabled=Not: evet yalnızca %s modülü etkinse etkilidir. +FormToTestFileUploadForm=Dosya yükleme deneme formu (ayarlara göre) +IfModuleEnabled=Not: yalnızca %s modülü etkinse evet etkilidir. RemoveLock=%s dosyasını, güncelleme aracının kullanımına izin vermek için belirmişse kaldırın. RestoreLock=%s dosyasını, güncelleme aracının her hangi bir kullanımını engellemek için, yalnızca okuma izniyle değiştirin. SecuritySetup=Güvenlik ayarları ErrorModuleRequirePHPVersion=Hata, bu modül %s veya daha yüksek PHP sürümü gerektirir. ErrorModuleRequireDolibarrVersion=Hata, bu modül %s veya daha yüksek Dolibarr sürümü gerektirir. -ErrorDecimalLargerThanAreForbidden=Hata, %s den daha yüksek hassasiyet desteklenmez. +ErrorDecimalLargerThanAreForbidden=Hata, %s den daha yüksek doğruluk desteklenmez. DictionarySetup=Sözlük ayarları Dictionary=Sözlükler Chartofaccounts=Hesap planı @@ -120,17 +120,17 @@ LanguageBrowserParameter=Parametre %s LocalisationDolibarrParameters=Yerelleştirme parametreleri ClientTZ=İstemci Zaman Dilimi (kullanıcı) ClientHour=İstemci zamanı (kullanıcı) -OSTZ=Sunucu OS Zaman Dilimi +OSTZ=Sunucu İşletim Siztemi Zaman Dilimi PHPTZ=PHP Saat Dilimi (sunucu) PHPServerOffsetWithGreenwich=PHP sunucusu Greenwich genişlik sapması (saniye) ClientOffsetWithGreenwich=İstemci/Tarayıcı Greenwich genişlik sapması (saniye) -DaylingSavingTime=Yaz saati +DaylingSavingTime=Yaz saati uygulaması CurrentHour=PHP saati (sunucu) CompanyTZ=Firma Saat Dilimi (ana firma) CompanyHour=Firma saati (ana firma) CurrentSessionTimeOut=Geçerli oturumun zaman aşımı YouCanEditPHPTZ=Farklı bir PHP saat dilimi (gerekli değildir) ayarlamak için "SetEnv TZ Europe/Paris" gibi bir satır içeren .htacces dosyası eklemeyi deneyin -OSEnv=OS Ortamı +OSEnv=İşletim Sistemi Ortamı Box=Kutu Boxes=Kutular MaxNbOfLinesForBoxes=Kutulardaki ençok satır sayısı @@ -159,35 +159,35 @@ NewBackup=Yeni yedekleme GenerateBackup=Yedekleme oluştur Backup=Yedekleme Restore=Geri yükleme -RunCommandSummary=Yedekleme aşağıdaki komutla başlatılacaktır +RunCommandSummary=Yedekleme aşağıdaki komut ile başlatılmıştır RunCommandSummaryToLaunch=Yedekleme aşağıdaki komut ile başlatılabilir WebServerMustHavePermissionForCommand=Web sunucunuz bu gibi komutları çalıştırmak için gereken izne sahip olmalı BackupResult=Yedekleme sonucu BackupFileSuccessfullyCreated=Yedekleme dosyası başarıyla oluşturuldu -YouCanDownloadBackupFile=Oluşturulan dosyaları artık indirilebilir +YouCanDownloadBackupFile=Oluşturulan dosyalar artık indirilebilir NoBackupFileAvailable=Hiç yedekleme dosyası yok. ExportMethod=Dışaaktarma yöntemi ImportMethod=İçeaktarma yöntemi ToBuildBackupFileClickHere=Bir yedekleme dosyası oluşturmak için buraya ya tıklayın. -ImportMySqlDesc=Bir yedekleme dosyası almak için, komut satırında mysql komutu kullanmalısınız: -ImportPostgreSqlDesc=Bir yedekleme dosyası almak için, komut satırınd pg_restore komutu kullanmalısınız: +ImportMySqlDesc=Bir yedekleme dosyası içeaktarmak için, komut satırında mysql komutu kullanmalısınız: +ImportPostgreSqlDesc=Bir yedekleme dosyası içeaktarmak için, komut satırınd pg_restore komutu kullanmalısınız: ImportMySqlCommand=%s %s < mybackupfile.sql ImportPostgreSqlCommand=%s %s mybackupfile.sql FileNameToGenerate=Oluşturulacak dosya adı Compression=Sıkıştırma CommandsToDisableForeignKeysForImport=İçeaktarmada devre dışı bırakılacak yabancı komut tuşları -CommandsToDisableForeignKeysForImportWarning=SQL dökümünü daha sonra geri yükleyebilmeyi isterseniz zorunludur -ExportCompatibility=Oluşturulan verme dosyasının uyumluluğu -MySqlExportParameters=MySQL verme parametreleri -PostgreSqlExportParameters= PostgreSQL dışaaktarım parametreleri +CommandsToDisableForeignKeysForImportWarning=SQL dökümünü daha sonra geri yükleyebilmek isterseniz zorunludur +ExportCompatibility=Oluşturulan dışaaktarma dosyasının uyumluluğu +MySqlExportParameters=MySQL dışaaktarma parametreleri +PostgreSqlExportParameters= PostgreSQL dışaaktarma parametreleri UseTransactionnalMode=İşlem modunu kullanın -FullPathToMysqldumpCommand=mysqldump komutu için tam yol -FullPathToPostgreSQLdumpCommand=pg_dump komutunun tam yolu -ExportOptions=Verme seçenekleri +FullPathToMysqldumpCommand=mysqldump Komutunun için tam yol +FullPathToPostgreSQLdumpCommand=pg_dump Komutunun tam yolu +ExportOptions=Dışaaktarma seçenekleri AddDropDatabase=DROP VERİTABANI komutu ekle AddDropTable=DROP TABLOSU komutu ekle ExportStructure=Yapısı -Datas=Veriler +Datas=Veri NameColumn=Sütunları adlandır ExtendedInsert=Genişletilmiş ARAYAEKLE NoLockBeforeInsert=ARAYAEKLE yanında kilitle komutu olmaz @@ -197,7 +197,7 @@ IgnoreDuplicateRecords=Çifte kayıt hatalarını gözardı et (GÖZARDI ET EKLE Yes=Evet No=Hayır AutoDetectLang=Otoalgıla (tarayıcı dili) -FeatureDisabledInDemo=Demoda özellik devre dışıdır +FeatureDisabledInDemo=Özellik demoda devre dışıdır Rights=İzinler BoxesDesc=Kutular, bazı pencerelerde bilgi parçaları gösteren ekran alanlarıdır. Kutunun gösterilmesi ya da gösterilmemesi arasında seçim yapmak için hedef sayfayı seçerek ‘Etkinleştir’ e tıklayın veya çöpkutusuna tıklayarak devre dışı bırakın. OnlyActiveElementsAreShown=Yalnızca etkinleştirilmiş modüllerin öğeleri gösterilmiştir. diff --git a/htdocs/langs/tr_TR/agenda.lang b/htdocs/langs/tr_TR/agenda.lang index 93514fcc242..ca20ca270f0 100644 --- a/htdocs/langs/tr_TR/agenda.lang +++ b/htdocs/langs/tr_TR/agenda.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - agenda IdAgenda=Etkinlik kimliği -Actions=Eylemler -ActionsArea=Eylem alanı (Olaylar ve görevler) +Actions=Etkinlikler +ActionsArea=Etkinlik alanı (Olaylar ve görevler) Agenda=Gündem Agendas=Gündemler Calendar=Takvim @@ -24,12 +24,12 @@ MenuDoneActions=Tüm sonlanan eylemler MenuToDoMyActions=Sonlanmayan eylemlerim MenuDoneMyActions=Sonlanan eylemlerim ListOfEvents=Etkinlik listesi (iç takvim) -ActionsAskedBy=Eylemi bildiren -ActionsToDoBy=Eylemden etkilenen -ActionsDoneBy=Eylemi yapan -ActionsForUser=Kullanıcı eylemleri -ActionsForUsersGroup=Grupun tüm üyelerine ait eylemler -AllMyActions= Tüm eylemlerim/görevlerim +ActionsAskedBy=Etkinliği bildiren +ActionsToDoBy=Etkinlikten etkilenen +ActionsDoneBy=Etkinliği yapan +ActionsForUser=Kullanıcı etkinlikleri +ActionsForUsersGroup=Grupun tüm üyelerine ait etkinlikler +AllMyActions= Tüm etkinliklerim/görevlerim AllActions= Tüm eylemler/görevler ViewList=Liste görünümü ViewCal=Ay görünümü @@ -38,8 +38,8 @@ ViewWeek=Hafta görünümü ViewPerUser=Kullanıcı görünümü başına ViewWithPredefinedFilters= Öntanımlı süzgeçler ile görünüm AutoActions= Gündemin otomatik doldurulması -AgendaAutoActionDesc= Burada Dolibarr'ın otomatik olarak gündemde oluşturmasını istediğiniz olayları tanımlayın. İşaretli bir şey yoksa (varsayılan olarak) sadece el ile girilen eylemler gündeme dahil edilecektir. -AgendaSetupOtherDesc= Bu sayfa Dolibarr eylemlerinin dış bir takvime aktarılması için seçenekler sağlar. (thunderbird, google calendar, ...) +AgendaAutoActionDesc= Burada Dolibarr'ın otomatik olarak gündemde oluşturmasını istediğiniz etkinlikleri tanımlayın. İşaretli bir şey yoksa (varsayılan olarak) sadece el ile girilen etkinlikler gündeme dahil edilecektir. +AgendaSetupOtherDesc= Bu sayfa Dolibarr etkinliklerinin dış bir takvime aktarılması için seçenekler sağlar. (thunderbird, google calendar, ...) AgendaExtSitesDesc=Bu sayfa takvimlerin dış kaynaklarında Dolibarr gündemindeki etkinliklerinin görünmesini sağlar. ActionsEvents= Dolibarr'ın otomatik olarak gündemde bir etkinlik oluşturacağı eylemler PropalValidatedInDolibarr= %s Teklifi doğrulandı diff --git a/htdocs/langs/tr_TR/main.lang b/htdocs/langs/tr_TR/main.lang index 87b19cf7d91..a8cd3f0fd1b 100644 --- a/htdocs/langs/tr_TR/main.lang +++ b/htdocs/langs/tr_TR/main.lang @@ -7,7 +7,7 @@ DIRECTION=ltr FONTFORPDF=DejaVuSans FONTSIZEFORPDF=8 SeparatorDecimal=, -SeparatorThousand=, +SeparatorThousand=None FormatDateShort=%d/%m/%Y FormatDateShortInput=%d/%m/%Y FormatDateShortJava=dd/MM/yyyy From d98bfb1d8d05413e8ca8bed9c4c7cbab6ff15b02 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 15:19:37 +0100 Subject: [PATCH 097/111] Fix: Bugs reported by scrutinizer --- htdocs/accountancy/admin/export.php | 24 ++++---- .../comm/action/class/cactioncomm.class.php | 2 +- .../class/bonprelevement.class.php | 2 + .../salaries/class/paymentsalary.class.php | 13 ++-- .../sociales/class/chargesociales.class.php | 8 ++- htdocs/core/boxes/box_actions.php | 1 + htdocs/core/boxes/modules_boxes.php | 1 + htdocs/core/class/ccountry.class.php | 6 +- htdocs/core/class/html.formsms.class.php | 2 +- htdocs/core/class/ldap.class.php | 13 ++-- htdocs/core/db/Database.interface.php | 12 ++-- htdocs/core/db/DoliDB.class.php | 4 +- htdocs/core/lib/accounting.lib.php | 60 +++++++++---------- htdocs/core/lib/functions.lib.php | 8 +-- htdocs/core/lib/product.lib.php | 1 + htdocs/main.inc.php | 2 +- htdocs/product/class/product.class.php | 2 +- htdocs/resource/class/resource.class.php | 2 +- 18 files changed, 84 insertions(+), 79 deletions(-) diff --git a/htdocs/accountancy/admin/export.php b/htdocs/accountancy/admin/export.php index dc8f50241a1..d0eef1dc2f4 100644 --- a/htdocs/accountancy/admin/export.php +++ b/htdocs/accountancy/admin/export.php @@ -26,7 +26,7 @@ */ require '../../main.inc.php'; - + // Class require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; @@ -44,7 +44,7 @@ $action = GETPOST('action', 'alpha'); // Other parameters ACCOUNTING_* $list = array ( - 'ACCOUNTING_SEPARATORCSV' + 'ACCOUNTING_SEPARATORCSV' ); /* @@ -52,26 +52,26 @@ $list = array ( */ if ($action == 'update') { $error = 0; - + $modelcsv = GETPOST('modelcsv', 'int'); - + if (! empty($modelcsv)) { - + if (! dolibarr_set_const($db, 'ACCOUNTING_MODELCSV', $modelcsv, 'chaine', 0, '', $conf->entity)) { $error ++; } } else { $error ++; } - + foreach ( $list as $constname ) { $constvalue = GETPOST($constname, 'alpha'); - + if (! dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) { $error ++; } } - + if (! $error) { setEventMessage($langs->trans("SetupSaved")); } else { @@ -90,7 +90,7 @@ $form = new Form($db); $linkback=''.$langs->trans("BackToModuleList").''; print_fiche_titre($langs->trans('ConfigAccountingExpert'),$linkback,'setup'); -$head = admin_accounting_prepare_head(null); +$head = admin_accounting_prepare_head(); dol_fiche_head($head, 'export', $langs->trans("Configuration"), 0, 'cron'); @@ -142,13 +142,13 @@ if ($num) { foreach ( $list as $key ) { $var = ! $var; - + print ''; - + // Param $label = $langs->trans($key); print '' . $label . ''; - + // Value print ''; print ''; diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php index 065f01d2091..77dfea739e1 100644 --- a/htdocs/comm/action/class/cactioncomm.class.php +++ b/htdocs/comm/action/class/cactioncomm.class.php @@ -103,7 +103,7 @@ class CActionComm * @param string $idorcode 'id' or 'code' * @param string $excludetype Type to exclude * @param string $onlyautoornot Group list by auto events or not - * @return array Array of all event types if OK, <0 if KO + * @return mixed Array of all event types if OK, <0 if KO */ function liste_array($active='',$idorcode='id',$excludetype='',$onlyautoornot=0) { diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 66a1c81e8e9..47ac4d1a390 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -755,6 +755,8 @@ class BonPrelevement extends CommonObject $factures = array(); $factures_prev = array(); $factures_result = array(); + $factures_prev_id=array(); + $factures_errors=array(); if (! $error) { diff --git a/htdocs/compta/salaries/class/paymentsalary.class.php b/htdocs/compta/salaries/class/paymentsalary.class.php index 0644a5ae4fe..9aaa175f6f4 100644 --- a/htdocs/compta/salaries/class/paymentsalary.class.php +++ b/htdocs/compta/salaries/class/paymentsalary.class.php @@ -127,7 +127,7 @@ class PaymentSalary extends CommonObject { // Call trigger $result=$this->call_trigger('PAYMENT_SALARY_MODIFY',$user); - if ($result < 0) $error++; + if ($result < 0) $error++; // End call triggers //FIXME: Add rollback if trigger fail @@ -223,12 +223,12 @@ class PaymentSalary extends CommonObject global $conf, $langs; $error=0; - + // Call trigger $result=$this->call_trigger('PAYMENT_SALARY_DELETE',$user); if ($result < 0) return -1; // End call triggers - + $sql = "DELETE FROM ".MAIN_DB_PREFIX."payment_salary"; $sql.= " WHERE rowid=".$this->id; @@ -279,7 +279,7 @@ class PaymentSalary extends CommonObject function create($user) { global $conf,$langs; - + $error=0; // Clean parameters @@ -414,7 +414,6 @@ class PaymentSalary extends CommonObject $this->fk_user, DOL_URL_ROOT.'/user/card.php?id=', $langs->trans("SalaryPayment").' '.$fuser->getFullName($langs).' '.dol_print_date($this->datesp,'dayrfc').' '.dol_print_date($this->dateep,'dayrfc'), - '(User)', 'user' ); @@ -427,9 +426,9 @@ class PaymentSalary extends CommonObject // Call trigger $result=$this->call_trigger('PAYMENT_SALARY_CREATE',$user); - if ($result < 0) $error++; + if ($result < 0) $error++; // End call triggers - + } else $error++; diff --git a/htdocs/compta/sociales/class/chargesociales.class.php b/htdocs/compta/sociales/class/chargesociales.class.php index 44e62ad0f10..fb8bc162c83 100644 --- a/htdocs/compta/sociales/class/chargesociales.class.php +++ b/htdocs/compta/sociales/class/chargesociales.class.php @@ -62,17 +62,19 @@ class ChargeSociales extends CommonObject /** * Retrouve et charge une charge sociale * - * @param int $id 1 si trouve, 0 sinon + * @param int $id Id + * @param string $ref Ref * @return void */ - function fetch($id) + function fetch($id, $ref='') { $sql = "SELECT cs.rowid, cs.date_ech,"; $sql.= " cs.libelle as lib, cs.fk_type, cs.amount, cs.paye, cs.periode,"; $sql.= " c.libelle"; $sql.= " FROM ".MAIN_DB_PREFIX."chargesociales as cs, ".MAIN_DB_PREFIX."c_chargesociales as c"; $sql.= " WHERE cs.fk_type = c.id"; - $sql.= " AND cs.rowid = ".$id; + if ($ref) $sql.= " AND cs.rowid = ".$ref; + else $sql.= " AND cs.rowid = ".$id; dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql=$this->db->query($sql); diff --git a/htdocs/core/boxes/box_actions.php b/htdocs/core/boxes/box_actions.php index 738582ad931..89d05b92b79 100644 --- a/htdocs/core/boxes/box_actions.php +++ b/htdocs/core/boxes/box_actions.php @@ -159,6 +159,7 @@ class box_actions extends ModeleBoxes $actioncejour=false; $contents=$this->info_box_contents; $nblines=count($contents); + $bcx=array(); $bcx[0] = 'class="box_pair"'; $bcx[1] = 'class="box_impair"'; if ($contents[0][0]['text'] != $langs->trans("NoActionsToDo")) diff --git a/htdocs/core/boxes/modules_boxes.php b/htdocs/core/boxes/modules_boxes.php index 275154cd80e..c2918ddf1ee 100644 --- a/htdocs/core/boxes/modules_boxes.php +++ b/htdocs/core/boxes/modules_boxes.php @@ -181,6 +181,7 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty" global $langs,$conf; $MAXLENGTHBOX=60; // Mettre 0 pour pas de limite + $bcx=array(); $bcx[0] = 'class="box_pair"'; $bcx[1] = 'class="box_impair"'; $var = false; diff --git a/htdocs/core/class/ccountry.class.php b/htdocs/core/class/ccountry.class.php index 088dfaf327b..f2208a24d30 100644 --- a/htdocs/core/class/ccountry.class.php +++ b/htdocs/core/class/ccountry.class.php @@ -256,10 +256,10 @@ class Ccountry // extends CommonObject /** - * Delete object in database + * Delete object in database * - * @param User $user User that delete - * @param int $notrigger 0=launch triggers after, 1=disable triggers + * @param User $user User that delete + * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ function delete($user, $notrigger=0) diff --git a/htdocs/core/class/html.formsms.class.php b/htdocs/core/class/html.formsms.class.php index 2b70053cb28..941cef40be6 100644 --- a/htdocs/core/class/html.formsms.class.php +++ b/htdocs/core/class/html.formsms.class.php @@ -277,7 +277,7 @@ function limitChars(textarea, limit, infodiv) { $defaultmessage=$this->withbody; } - $defaultmessage=make_substitutions($defaultmessage,$this->substit,$langs); + $defaultmessage=make_substitutions($defaultmessage,$this->substit); if (isset($_POST["message"])) $defaultmessage=$_POST["message"]; $defaultmessage=str_replace('\n',"\n",$defaultmessage); diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 88abc140104..95436a51e29 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -847,6 +847,7 @@ class Ldap */ function getAttributeValues($filterrecord,$attribute) { + $attributes=array(); $attributes[0] = $attribute; // We need to search for this user in order to get their entry. @@ -1075,9 +1076,9 @@ class Ldap $subcount = hexdec(substr($hex_sid,2,2)); // Get count of sub-auth entries $auth = hexdec(substr($hex_sid,4,12)); // SECURITY_NT_AUTHORITY $result = "$rev-$auth"; - for ($x=0;$x < $subcount; $x++) { - $subauth[$x] = hexdec($this->littleEndian(substr($hex_sid,16+($x*8),8))); // get all SECURITY_NT_AUTHORITY - $result .= "-".$subauth[$x]; + for ($x=0;$x < $subcount; $x++) + { + $result .= "-".hexdec($this->littleEndian(substr($hex_sid,16+($x*8),8))); // get all SECURITY_NT_AUTHORITY } return $result; } @@ -1090,9 +1091,9 @@ class Ldap * car conflit majuscule-minuscule. A n'utiliser que pour les pages * 'Fiche LDAP' qui affiche champ lisibles par defaut. * - * @param string $checkDn DN de recherche (Ex: ou=users,cn=my-domain,cn=com) - * @param string $filter Filtre de recherche (ex: (sn=nom_personne) ) - * @return array Tableau des reponses (cle en minuscule-valeur) + * @param string $checkDn DN de recherche (Ex: ou=users,cn=my-domain,cn=com) + * @param string $filter Search filter (ex: (sn=nom_personne) ) + * @return array|int Array with answers (key lowercased - value) */ function search($checkDn, $filter) { diff --git a/htdocs/core/db/Database.interface.php b/htdocs/core/db/Database.interface.php index 8b5f2c86810..0fbf22b0745 100644 --- a/htdocs/core/db/Database.interface.php +++ b/htdocs/core/db/Database.interface.php @@ -121,9 +121,9 @@ interface Database /** * List tables into a database * - * @param string $database Name of database - * @param string $table Nmae of table filter ('xxx%') - * @return resource Resource + * @param string $database Name of database + * @param string $table Nmae of table filter ('xxx%') + * @return array List of tables in an array */ function DDLListTables($database, $table = ''); @@ -386,9 +386,9 @@ interface Database * 19700101020000 -> 3600 with TZ+1 and gmt=0 * 19700101020000 -> 7200 whaterver is TZ if gmt=1 * - * @param string $string Date in a string (YYYYMMDDHHMMSS, YYYYMMDD, YYYY-MM-DD HH:MM:SS) - * @param int $gm 1=Input informations are GMT values, otherwise local to server TZ - * @return date Date TMS + * @param string $string Date in a string (YYYYMMDDHHMMSS, YYYYMMDD, YYYY-MM-DD HH:MM:SS) + * @param int $gm 1=Input informations are GMT values, otherwise local to server TZ + * @return timestamp|string Date TMS */ function jdate($string, $gm=false); diff --git a/htdocs/core/db/DoliDB.class.php b/htdocs/core/db/DoliDB.class.php index 21f0001b7e7..baf38bd9a39 100644 --- a/htdocs/core/db/DoliDB.class.php +++ b/htdocs/core/db/DoliDB.class.php @@ -158,8 +158,8 @@ abstract class DoliDB implements Database /** * Annulation d'une transaction et retour aux anciennes valeurs * - * @param string $log Add more log to default log line - * @return int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur + * @param string $log Add more log to default log line + * @return resource|int 1 si annulation ok ou transaction non ouverte, 0 en cas d'erreur */ function rollback($log='') { diff --git a/htdocs/core/lib/accounting.lib.php b/htdocs/core/lib/accounting.lib.php index e7313c73aee..8c29e2d6a77 100644 --- a/htdocs/core/lib/accounting.lib.php +++ b/htdocs/core/lib/accounting.lib.php @@ -1,6 +1,6 @@ - * Copyright (C) 2013-2014 Alexandre Spangaro + * Copyright (C) 2013-2014 Alexandre Spangaro * Copyright (C) 2014 Florian Henry * * This program is free software; you can redistribute it and/or modify @@ -28,36 +28,36 @@ * * @return array Array of tabs to show */ -function admin_accounting_prepare_head() +function admin_accounting_prepare_head($object=null) { global $langs, $conf; - + $h = 0; $head = array (); - + $head[$h][0] = dol_buildpath('/accountancy/admin/index.php', 1); $head[$h][1] = $langs->trans("Configuration"); $head[$h][2] = 'general'; $h ++; - + // Show more tabs from modules // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'accounting_admin'); - + $head[$h][0] = dol_buildpath('/accountancy/admin/journaux.php', 1); $head[$h][1] = $langs->trans("Journaux"); $head[$h][2] = 'journal'; $h ++; - + $head[$h][0] = dol_buildpath('/accountancy/admin/export.php', 1); $head[$h][1] = $langs->trans("Export"); $head[$h][2] = 'export'; $h ++; - + complete_head_from_modules($conf, $langs, $object, $head, $h, 'accounting_admin', 'remove'); - + return $head; } @@ -70,23 +70,23 @@ function admin_accounting_prepare_head() function accounting_prepare_head($object) { global $langs, $conf; - + $h = 0; $head = array (); - + $head[$h][0] = dol_buildpath('/accountancy/admin/card.php', 1) . '?id=' . $object->id; $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'card'; $h ++; - + // Show more tabs from modules // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf, $langs, $object, $head, $h, 'accounting_account'); - + complete_head_from_modules($conf, $langs, $object, $head, $h, 'accounting_account', 'remove'); - + return $head; } @@ -94,25 +94,25 @@ function accounting_prepare_head($object) * Return general accounting account with defined length * * @param string $account General accounting account - * @return string String with defined length + * @return string String with defined length */ function length_accountg($account) { global $conf; - + $g = $conf->global->ACCOUNTING_LENGTH_GACCOUNT; - + if (! empty($g)) { // Clean parameters $i = strlen($account); - + if ($i >= 2) { while ( $i < $g ) { $account .= '0'; - + $i ++; } - + return $account; } else { return $account; @@ -126,25 +126,25 @@ function length_accountg($account) * Return auxiliary accounting account with defined length * * @param string $accounta Auxiliary accounting account - * @return string String with defined length + * @return string String with defined length */ function length_accounta($accounta) { global $conf, $langs; - + $a = $conf->global->ACCOUNTING_LENGTH_AACCOUNT; - + if (! empty($a)) { // Clean parameters $i = strlen($accounta); - + if ($i >= 2) { while ( $i < $a ) { $accounta .= '0'; - + $i ++; } - + return $accounta; } else { return $accounta; @@ -160,8 +160,8 @@ function length_accounta($accounta) * @param string $txt Accounting account * @param int $len Length * @param int $end Number of characters - * - * @return string Formated string + * + * @return string Formated string */ function length_exportsage($txt, $len, $end) { @@ -169,11 +169,11 @@ function length_exportsage($txt, $len, $end) // problem with this function, but we need to have the number of letter if (strlen($txt) == $len) { $res = $txt; - } + } elseif (strlen($txt) > $len) { $res = substr($txt, 0, $len); - } + } else { if ($end == 1) { diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 09c38435c0a..8c460f1d93a 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3837,13 +3837,14 @@ function dol_html_entity_decode($a,$b,$c='UTF-8') /** * Replace htmlentities functions to manage errors * http://php.net/manual/en/function.htmlentities.php + * TODO Remove this function to replace it with direct htmlentities. * * @param string $string The input string. * @param int $flags Flags(see PHP doc above) * @param string $encoding Encoding * @param bool $double_encode When double_encode is turned off PHP will not encode existing html entities * @return string $ret Encoded string - * @deprecated Since PHP4 support is no longer available, this function does not make sense + * @deprecated Since PHP4 support is no longer available, this function does not make sense. */ function dol_htmlentities($string, $flags=null, $encoding='UTF-8', $double_encode=false) { @@ -3998,10 +3999,7 @@ function dol_concatdesc($text1,$text2,$forxml=false) } /** - * Make substition into a string - * There is two type of substitions: - * - From $substitutionarray (oldval=>newval) - * - From special constants (__XXX__=>f(objet->xxx)) by substitutions modules + * Make substition into a string replacing key with vals from $substitutionarray (oldval=>newval) * * @param string $chaine Source string in which we must do substitution * @param array $substitutionarray Array with key->val to substitute diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index b126df7bdc3..33ded69b802 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -316,6 +316,7 @@ function measuring_units_string($unit,$measuring_style='') { global $langs; + $measuring_units=array(); if ($measuring_style == 'weight') { $measuring_units[3] = $langs->trans("WeightUnitton"); diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 51fa2cdf162..f5aef06ecf4 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -637,7 +637,7 @@ if (! defined('NOLOGIN')) { $db->rollback(); session_destroy(); - dol_print_error($db,'Error in some triggers on action USER_LOGIN',LOG_ERR); + dol_print_error($db,'Error in some triggers on action USER_LOGIN'); exit; } else diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 98b5d155ba7..4ec459fff85 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1396,7 +1396,7 @@ class Product extends CommonObject if (! $id && ! $ref && ! $ref_ext) { $this->error='ErrorWrongParameters'; - dol_print_error(get_class($this)."::fetch ".$this->error, LOG_ERR); + dol_print_error(get_class($this)."::fetch ".$this->error); return -1; } diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php index 19768f569e3..4beac635568 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/resource.class.php @@ -633,7 +633,7 @@ class Resource extends CommonObject if (! $this->table_element) { - dol_print_error('',get_class($this)."::load_previous_next_ref was called on objet with property table_element not defined", LOG_ERR); + dol_print_error('',get_class($this)."::load_previous_next_ref was called on objet with property table_element not defined"); return -1; } From ad661256c0022616d770cbff75d3fdb70e34afdd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 16:20:03 +0100 Subject: [PATCH 098/111] Fix: Bugs reported by scrutinizer --- htdocs/accountancy/admin/fiscalyear.php | 4 ++-- htdocs/adherents/card.php | 4 ++-- htdocs/admin/dons.php | 18 ++++++++++-------- htdocs/core/class/commonobject.class.php | 2 +- htdocs/core/class/extrafields.class.php | 2 +- htdocs/core/lib/accounting.lib.php | 1 + htdocs/product/card.php | 2 +- htdocs/product/list.php | 2 +- htdocs/product/reassort.php | 2 +- htdocs/societe/soc.php | 2 +- 10 files changed, 21 insertions(+), 18 deletions(-) diff --git a/htdocs/accountancy/admin/fiscalyear.php b/htdocs/accountancy/admin/fiscalyear.php index 5907c754644..4dd005fca85 100644 --- a/htdocs/accountancy/admin/fiscalyear.php +++ b/htdocs/accountancy/admin/fiscalyear.php @@ -59,10 +59,10 @@ $max=100; $form = new Form($db); -llxHeader('',$title); - $title = $langs->trans('FiscalYears'); +llxHeader('',$title,LOG_ERR); + print_fiche_titre($langs->trans('FiscalYears')); $sql = "SELECT f.rowid, f.label, f.date_start, f.date_end, f.statut, f.entity"; diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 102f45496c6..f8a36c4f71a 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -70,7 +70,7 @@ $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); // Get object canvas (By default, this is not defined, so standard usage of dolibarr) $object->getCanvas($rowid); $canvas = $object->canvas?$object->canvas:GETPOST("canvas"); -$objcanvas=''; +$objcanvas=null; if (! empty($canvas)) { require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php'; @@ -79,7 +79,7 @@ if (! empty($canvas)) } // Security check -$result=restrictedArea($user,'adherent',$rowid,'','','fk_soc', 'rowid', $objcanvas); +$result=restrictedArea($user, 'adherent', $rowid, '', '', 'fk_soc', 'rowid', $objcanvas); if ($rowid > 0) { diff --git a/htdocs/admin/dons.php b/htdocs/admin/dons.php index c81366bc5e9..ac0fe715c99 100644 --- a/htdocs/admin/dons.php +++ b/htdocs/admin/dons.php @@ -2,7 +2,7 @@ /* Copyright (C) 2005-2010 Laurent Destailleur * Copyright (C) 2012-2013 Juanjo Menent * Copyright (C) 2013 Philippe Grand - * Copyright (C) 2014 Alexandre Spangaro + * Copyright (C) 2014 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,6 +37,8 @@ $typeconst=array('yesno','texte','chaine'); $action = GETPOST('action','alpha'); +$type='donation'; + /* * Action @@ -135,7 +137,7 @@ else if ($action == 'setart200') { $res = dolibarr_set_const($db, "DONATION_ART200", $setart200, 'yesno', 0, '', $conf->entity); if (! $res > 0) $error ++; - + if (! $error) { setEventMessage($langs->trans("SetupSaved"), 'mesgs'); } else { @@ -147,7 +149,7 @@ else if ($action == 'setart238') { $res = dolibarr_set_const($db, "DONATION_ART238", $setart238, 'yesno', 0, '', $conf->entity); if (! $res > 0) $error ++; - + if (! $error) { setEventMessage($langs->trans("SetupSaved"), 'mesgs'); } else { @@ -159,7 +161,7 @@ else if ($action == 'setart885') { $res = dolibarr_set_const($db, "DONATION_ART885", $setart885, 'yesno', 0, '', $conf->entity); if (! $res > 0) $error ++; - + if (! $error) { setEventMessage($langs->trans("SetupSaved"), 'mesgs'); } else { @@ -183,7 +185,7 @@ print_fiche_titre($langs->trans("DonationsSetup"),$linkback,'setup'); * Params */ print_titre($langs->trans("Options")); - + print ''; print ''; print ''; @@ -207,11 +209,11 @@ print ''; /* * French params */ -if ($conf->global->MAIN_LANG_DEFAULT == "fr_FR") +if ($conf->global->MAIN_LANG_DEFAULT == "fr_FR") { print '
'; print_titre($langs->trans("FrenchOptions")); - + print '
'.$langs->trans("Parameter").'
'; print ''; print ''; @@ -377,7 +379,7 @@ if (is_resource($handle)) print ''; - + // Preview print ''; print ''; } - + // Ligne de la periode d'analyse du rapport print ''; print ''; From ec4b29c65d25a9117f991f3ac6a300c7dc90abc3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 18:37:36 +0100 Subject: [PATCH 102/111] Fix: quality controls --- .scrutinizer.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.scrutinizer.yml b/.scrutinizer.yml index 5c9e27d5420..28caa9bc50a 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -180,7 +180,7 @@ tools: - 'htdocs/includes/*' paths: { } - php_changetracking: + php_changetracking: enabled: false bug_patterns: - '\bfix(?:es|ed)?\b' @@ -197,21 +197,21 @@ tools: paths: { } # Coding-Style / Bug Detection - js_hint: - enabled: false - use_native_config: true - extensions: - - js - filter: - excluded_paths: - - 'build/*' - - 'dev/*' - - 'doc/*' - - 'test/*' - - 'htdocs/includes/*' - paths: { } - config: { } - path_configs: { } + js_hint: + enabled: false + use_native_config: true + extensions: + - js + filter: + excluded_paths: + - 'build/*' + - 'dev/*' + - 'doc/*' + - 'test/*' + - 'htdocs/includes/*' + paths: { } + config: { } + path_configs: { } checks: From c186f132181f519bb0ec30f66998e048ae982a84 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 19:04:21 +0100 Subject: [PATCH 103/111] Fix: Param $action was not defined. A better fix must be done later be removing useless hooks that are duplicate with triggers. --- htdocs/adherents/class/adherent.class.php | 5 ++- htdocs/categories/class/categorie.class.php | 8 +++-- htdocs/comm/action/class/actioncomm.class.php | 7 +++- htdocs/comm/propal/class/propal.class.php | 6 +++- htdocs/commande/class/commande.class.php | 6 +++- htdocs/compta/facture/class/facture.class.php | 2 ++ htdocs/contact/class/contact.class.php | 2 ++ .../class/fournisseur.commande.class.php | 2 ++ .../fourn/class/fournisseur.facture.class.php | 2 ++ htdocs/product/class/product.class.php | 2 ++ htdocs/societe/class/societe.class.php | 2 ++ htdocs/user/class/user.class.php | 3 ++ htdocs/user/class/usergroup.class.php | 35 +++++++++++-------- 13 files changed, 61 insertions(+), 21 deletions(-) diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index cdbfabf4576..714fd2af3ca 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -465,8 +465,11 @@ class Adherent extends CommonObject $nbrowsaffected+=$this->db->affected_rows($resql); + $action='update'; + // Actions on extra fields (by external module) - $hookmanager->initHooks(array('memberdao')); + // FIXME le hook fait double emploi avec le trigger !! + $hookmanager->initHooks(array('memberdao')); $parameters=array('id'=>$this->id); $action=''; $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 5af59689c18..de8d494f9fc 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -198,11 +198,13 @@ class Categorie extends CommonObject { $this->id = $id; + $action='create'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('HookModuleNamedao')); $parameters=array('socid'=>$this->id); - $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,'create'); // Note that $action and $object may have been modified by some hooks + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used @@ -289,12 +291,14 @@ class Categorie extends CommonObject dol_syslog(get_class($this)."::update", LOG_DEBUG); if ($this->db->query($sql)) { + $action='update'; // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('HookCategorydao')); $parameters=array(); - $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,'update'); // Note that $action and $object may have been modified by some hooks + $action='update'; + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index b4a5fdeed60..34e88dd893e 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -241,8 +241,11 @@ class ActionComm extends CommonObject if (! $error) { + $action='create'; + // Actions on extra fields (by external module or standard code) - $hookmanager->initHooks(array('actioncommdao')); + // FIXME le hook fait double emploi avec le trigger !! + $hookmanager->initHooks(array('actioncommdao')); $parameters=array('actcomm'=>$this->id); $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) @@ -560,8 +563,10 @@ class ActionComm extends CommonObject dol_syslog(get_class($this)."::update", LOG_DEBUG); if ($this->db->query($sql)) { + $action='update'; // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('actioncommdao')); $parameters=array('actcomm'=>$this->id); $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 3de6b5ad075..16d2edd0e96 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -846,6 +846,8 @@ class Propal extends CommonObject $resql=$this->update_price(1); if ($resql) { + $action='update'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('propaldao')); @@ -1264,6 +1266,8 @@ class Propal extends CommonObject */ function update_extrafields($user) { + $action='update'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('propaldao')); @@ -2879,7 +2883,7 @@ class PropaleLigne extends CommonObject $error=0; - dol_syslog("PropaleLigne::insert rang=".$this->rang); + dol_syslog(get_class($this)."::insert rang=".$this->rang); // Clean parameters if (empty($this->tva_tx)) $this->tva_tx=0; diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index ce3ec431180..f400925b059 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -801,6 +801,8 @@ class Commande extends CommonOrder if (! $error) { + $action='create'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('orderdao')); @@ -2928,6 +2930,8 @@ class Commande extends CommonOrder */ function update_extrafields($user) { + $action='create'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('orderdao')); @@ -3280,7 +3284,7 @@ class OrderLine extends CommonOrderLine $error=0; - dol_syslog("OrderLine::insert rang=".$this->rang); + dol_syslog(get_class($this)."::insert rang=".$this->rang); // Clean parameters if (empty($this->tva_tx)) $this->tva_tx=0; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index e410ab49de2..7c8dc7c6c59 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -464,6 +464,8 @@ class Facture extends CommonInvoice $result=$this->update_price(1); if ($result > 0) { + $action='create'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('invoicedao')); diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index cef881fca37..6a7776b27bd 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -283,6 +283,8 @@ class Contact extends CommonObject unset($this->state_code); unset($this->state); + $action='update'; + // Actions on extra fields (by external module or standard code) $hookmanager->initHooks(array('contactdao')); $parameters=array('socid'=>$this->id); diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index 853109fe195..b96e7f01c95 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -953,6 +953,8 @@ class CommandeFournisseur extends CommonOrder if (! $error) { + $action='create'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('supplierorderdao')); diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 2de2d73e8ac..69c235fd831 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -255,6 +255,8 @@ class FactureFournisseur extends CommonInvoice $result=$this->update_price(); if ($result > 0) { + $action='create'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('supplierinvoicedao')); diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 4ec459fff85..1bc30b2df5f 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -680,6 +680,8 @@ class Product extends CommonObject } } + $action='update'; + // Actions on extra fields (by external module or standard code) $hookmanager->initHooks(array('productdao')); $parameters=array('id'=>$this->id); diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index df7eafe3d9d..fbdf42d86f5 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -878,6 +878,8 @@ class Societe extends CommonObject } } + $action='update'; + // Actions on extra fields (by external module or standard code) // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('thirdpartydao')); diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php index b91356f7b88..15a5cf8b8ed 100644 --- a/htdocs/user/class/user.class.php +++ b/htdocs/user/class/user.class.php @@ -1265,7 +1265,10 @@ class User extends CommonObject } } + $action='update'; + // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('userdao')); $parameters=array('socid'=>$this->id); $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks diff --git a/htdocs/user/class/usergroup.class.php b/htdocs/user/class/usergroup.class.php index e096f8fc470..5ff1a928d1c 100644 --- a/htdocs/user/class/usergroup.class.php +++ b/htdocs/user/class/usergroup.class.php @@ -620,16 +620,10 @@ class UserGroup extends CommonObject if ($this->update(1) < 0) return -2; - if (! $notrigger) - { - // Call trigger - $result=$this->call_trigger('GROUP_CREATE',$user); - if ($result < 0) { $error++; $this->db->rollback(); return -1; } - // End call triggers - } - + $action='create'; // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('groupdao')); $parameters=array(); $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks @@ -646,6 +640,14 @@ class UserGroup extends CommonObject } else if ($reshook < 0) $error++; + if (! $error && ! $notrigger) + { + // Call trigger + $result=$this->call_trigger('GROUP_CREATE',$user); + if ($result < 0) { $error++; $this->db->rollback(); return -1; } + // End call triggers + } + if ($error > 0) { $error++; $this->db->rollback(); return -1; } else $this->db->commit(); @@ -689,15 +691,10 @@ class UserGroup extends CommonObject $resql = $this->db->query($sql); if ($resql) { - if (! $notrigger) - { - // Call trigger - $result=$this->call_trigger('GROUP_MODIFY',$user); - if ($result < 0) { $error++; } - // End call triggers - } + $action='update'; // Actions on extra fields (by external module or standard code) + // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('groupdao')); $parameters=array(); $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks @@ -714,6 +711,14 @@ class UserGroup extends CommonObject } else if ($reshook < 0) $error++; + if (! $error && ! $notrigger) + { + // Call trigger + $result=$this->call_trigger('GROUP_MODIFY',$user); + if ($result < 0) { $error++; } + // End call triggers + } + if (! $error) { $this->db->commit(); From 81e203eef13363307714a13b3b2757566cb9df5a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 20:48:39 +0100 Subject: [PATCH 104/111] Fix: Ref was not visible. --- htdocs/fourn/card.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index 93ea02b0759..1f7f7fc079d 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -1,7 +1,7 @@ * Copyright (C) 2003 Eric Seigne - * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004-2014 Laurent Destailleur * Copyright (C) 2005-2010 Regis Houssin * Copyright (C) 2010-2014 Juanjo Menent * Copyright (C) 2014 Jean Heimburger @@ -304,8 +304,8 @@ if ($object->fetch($id)) if ($user->rights->fournisseur->commande->lire) { - - + + // TODO move to DAO class // Check if there are supplier orders billable $sql2 = 'SELECT s.nom, s.rowid as socid, s.client, c.rowid, c.ref, c.total_ht, c.ref_supplier,'; @@ -325,7 +325,7 @@ if ($object->fetch($id)) } else { setEventMessage($db->lasterror(),'errors'); } - + // TODO move to DAO class $sql = "SELECT p.rowid,p.ref, p.date_commande as dc, p.fk_statut"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as p "; @@ -394,7 +394,7 @@ if ($object->fetch($id)) if ($user->rights->fournisseur->facture->lire) { // TODO move to DAO class - $sql = 'SELECT f.rowid,f.libelle,f.ref_supplier,f.fk_statut,f.datef as df,f.total_ttc as amount,f.paye,'; + $sql = 'SELECT f.rowid,f.libelle,f.ref,f.ref_supplier,f.fk_statut,f.datef as df,f.total_ttc as amount,f.paye,'; $sql.= ' SUM(pf.amount) as am'; $sql.= ' FROM '.MAIN_DB_PREFIX.'facture_fourn as f'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiementfourn_facturefourn as pf ON f.rowid=pf.fk_facturefourn'; @@ -425,7 +425,13 @@ if ($object->fetch($id)) print ''; print ''; + $facturestatic->id=$obj->rowid; + $facturestatic->ref=($obj->ref?$obj->ref:$obj->rowid).($obj->ref_supplier?' - '.$obj->ref_supplier:''); + //$facturestatic->ref_supplier=$obj->ref_supplier; + print $facturestatic->getNomUrl(1); + //print img_object($langs->trans('ShowBill'),'bill').' '.($obj->ref?$obj->ref:$obj->rowid).' - '.$obj->ref_supplier.''; + print ' '.dol_trunc($obj->libelle,14); + print ''; print ''; print ''; print '
' . $langs->trans('Parameters') . ''; print $form->textwithpicto('',$htmltooltip,-1,0); print ''; print ''.img_object($langs->trans("Preview"),'generic').''; diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index e85d3dbed71..9b7eb8ea755 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -34,7 +34,7 @@ */ abstract class CommonObject { - protected $db; + public $db; public $error; public $errors; public $canvas; // Contains canvas name if it is diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index 94898ec5452..5448df14010 100644 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -56,7 +56,7 @@ class ExtraFields var $error; var $errno; - static $type2label=array( + public static $type2label=array( 'varchar'=>'String', 'text'=>'TextLong', 'int'=>'Int', diff --git a/htdocs/core/lib/accounting.lib.php b/htdocs/core/lib/accounting.lib.php index 8c29e2d6a77..d4a2144285f 100644 --- a/htdocs/core/lib/accounting.lib.php +++ b/htdocs/core/lib/accounting.lib.php @@ -26,6 +26,7 @@ /** * Prepare array with list of admin tabs * + * @param $object Object instance we show card * @return array Array of tabs to show */ function admin_accounting_prepare_head($object=null) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 237fa97c0f0..5f9d42cdd44 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -74,7 +74,7 @@ if ($id > 0 || ! empty($ref)) // Get object canvas (By default, this is not defined, so standard usage of dolibarr) $canvas = !empty($object->canvas)?$object->canvas:GETPOST("canvas"); -$objcanvas=''; +$objcanvas=null; if (! empty($canvas)) { require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php'; diff --git a/htdocs/product/list.php b/htdocs/product/list.php index c199344647e..a6b09cea8a6 100644 --- a/htdocs/product/list.php +++ b/htdocs/product/list.php @@ -69,7 +69,7 @@ $limit = $conf->liste_limit; // Get object canvas (By default, this is not defined, so standard usage of dolibarr) $canvas=GETPOST("canvas"); -$objcanvas=''; +$objcanvas=null; if (! empty($canvas)) { require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php'; diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php index d9b3538eb72..c8480d6e65a 100644 --- a/htdocs/product/reassort.php +++ b/htdocs/product/reassort.php @@ -63,7 +63,7 @@ $search_categ = GETPOST("search_categ"); // Get object canvas (By default, this is not defined, so standard usage of dolibarr) $canvas=GETPOST("canvas"); -$objcanvas=''; +$objcanvas=null; if (! empty($canvas)) { require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php'; diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index 0a5a9303d90..62869daf366 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -65,7 +65,7 @@ $extralabels=$extrafields->fetch_name_optionals_label($object->table_element); // Get object canvas (By default, this is not defined, so standard usage of dolibarr) $object->getCanvas($socid); $canvas = $object->canvas?$object->canvas:GETPOST("canvas"); -$objcanvas=''; +$objcanvas=null; if (! empty($canvas)) { require_once DOL_DOCUMENT_ROOT.'/core/class/canvas.class.php'; From 741adc79b21f664917d963bdc313388b9dd57ec6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 17:05:43 +0100 Subject: [PATCH 099/111] Fix: Bugs reported by scrutinizer --- htdocs/core/lib/accounting.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/accounting.lib.php b/htdocs/core/lib/accounting.lib.php index d4a2144285f..ea098ba10bb 100644 --- a/htdocs/core/lib/accounting.lib.php +++ b/htdocs/core/lib/accounting.lib.php @@ -26,7 +26,7 @@ /** * Prepare array with list of admin tabs * - * @param $object Object instance we show card + * @param Object $object Object instance we show card * @return array Array of tabs to show */ function admin_accounting_prepare_head($object=null) From 445f696d28162e17dc503b5ff6a444179f23d404 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 18:24:38 +0100 Subject: [PATCH 100/111] Fix: Pb of object with wrong type. --- .scrutinizer.yml | 37 ++++++++++++++++++- dev/skeletons/skeleton_class.class.php | 2 +- htdocs/categories/class/categorie.class.php | 18 ++++----- htdocs/comm/propal/class/propal.class.php | 2 +- htdocs/compta/bank/class/account.class.php | 4 +- htdocs/compta/bank/class/bankcateg.class.php | 2 +- htdocs/compta/facture/class/facture.class.php | 2 +- .../facture/class/paymentterm.class.php | 2 +- .../compta/localtax/class/localtax.class.php | 2 +- .../salaries/class/paymentsalary.class.php | 4 +- .../class/paymentsocialcontribution.class.php | 2 +- htdocs/compta/tva/class/tva.class.php | 4 +- htdocs/contact/class/contact.class.php | 6 +-- htdocs/contrat/class/contrat.class.php | 2 +- htdocs/core/class/ccountry.class.php | 2 +- htdocs/core/class/ctypent.class.php | 2 +- htdocs/core/class/events.class.php | 4 +- htdocs/core/class/menubase.class.php | 6 +-- htdocs/cron/class/cronjob.class.php | 4 +- htdocs/ecm/class/ecmdirectory.class.php | 2 +- htdocs/expedition/class/expedition.class.php | 2 +- .../fourn/class/fournisseur.facture.class.php | 2 +- htdocs/holiday/class/holiday.class.php | 2 +- .../class/opensurveysondage.class.php | 2 +- htdocs/product/class/productbatch.class.php | 26 ++++++------- htdocs/projet/class/task.class.php | 4 +- htdocs/resource/class/resource.class.php | 4 +- htdocs/societe/class/address.class.php | 4 +- 28 files changed, 94 insertions(+), 61 deletions(-) diff --git a/.scrutinizer.yml b/.scrutinizer.yml index 73b43e95f4b..5c9e27d5420 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -180,10 +180,45 @@ tools: - 'htdocs/includes/*' paths: { } + php_changetracking: + enabled: false + bug_patterns: + - '\bfix(?:es|ed)?\b' + feature_patterns: + - '\badd(?:s|ed)?\b' + - '\bimplement(?:s|ed)?\b' + filter: + excluded_paths: + - 'build/*' + - 'dev/*' + - 'doc/*' + - 'test/*' + - 'htdocs/includes/*' + paths: { } + # Coding-Style / Bug Detection - js_hint: false + js_hint: + enabled: false + use_native_config: true + extensions: + - js + filter: + excluded_paths: + - 'build/*' + - 'dev/*' + - 'doc/*' + - 'test/*' + - 'htdocs/includes/*' + paths: { } + config: { } + path_configs: { } +checks: + php: + code_rating: true + duplication: true + before_commands: { } after_commands: { } artifacts: { } diff --git a/dev/skeletons/skeleton_class.class.php b/dev/skeletons/skeleton_class.class.php index f623debc581..4dddc5a8c80 100644 --- a/dev/skeletons/skeleton_class.class.php +++ b/dev/skeletons/skeleton_class.class.php @@ -182,7 +182,7 @@ class Skeleton_Class extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index 6a337766ff3..5af59689c18 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -107,7 +107,7 @@ class Categorie extends CommonObject $this->type = $res['type']; $this->entity = $res['entity']; - $this->fetch_optionals($this->id,$extralabels); + $this->fetch_optionals($this->id,null); $this->db->free($resql); @@ -202,7 +202,7 @@ class Categorie extends CommonObject // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('HookModuleNamedao')); $parameters=array('socid'=>$this->id); - $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,'create'); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used @@ -294,7 +294,7 @@ class Categorie extends CommonObject // FIXME le hook fait double emploi avec le trigger !! $hookmanager->initHooks(array('HookCategorydao')); $parameters=array(); - $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + $reshook=$hookmanager->executeHooks('insertExtraFields',$parameters,$this,'update'); // Note that $action and $object may have been modified by some hooks if (empty($reshook)) { if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used @@ -419,7 +419,7 @@ class Categorie extends CommonObject $error++; } } - + // Delete category if (! $error) { @@ -441,7 +441,7 @@ class Categorie extends CommonObject if ($result < 0) { $error++; - dol_syslog(get_class($this)."::delete erreur ".$errorflag." ".$this->error, LOG_ERR); + dol_syslog(get_class($this)."::delete erreur ".$this->error, LOG_ERR); } } } @@ -799,7 +799,7 @@ class Categorie extends CommonObject */ function get_full_arbo($type,$markafterid=0) { - global $langs; + global $conf, $langs; $this->cats = array(); @@ -809,11 +809,9 @@ class Categorie extends CommonObject // Init $this->cats array $sql = "SELECT DISTINCT c.rowid, c.label, c.description, c.fk_parent"; // Distinct reduce pb with old tables with duplicates - if (! empty($conf->global->MAIN_MULTILANGS)) - $sql.= ", t.label as label_trans, t.description as description_trans"; + if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= ", t.label as label_trans, t.description as description_trans"; $sql.= " FROM ".MAIN_DB_PREFIX."categorie as c"; - if (! empty($conf->global->MAIN_MULTILANGS)) - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_lang as t ON t.fk_category=c.rowid AND t.lang='".$current_lang."'"; + if (! empty($conf->global->MAIN_MULTILANGS)) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."categorie_lang as t ON t.fk_category=c.rowid AND t.lang='".$current_lang."'"; $sql.= " WHERE c.entity IN (".getEntity('category',1).")"; $sql.= " AND c.type = ".$type; diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index 15d85afec07..3de6b5ad075 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -2118,7 +2118,7 @@ class Propal extends CommonObject if (! $error) { - dol_syslog(get_class($this)."::delete $this->id by $user->id", LOG_DEBUG); + dol_syslog(get_class($this)."::delete ".$this->id." by ".$user->id, LOG_DEBUG); $this->db->commit(); return 1; } diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index e2a039cf2d8..26f9415e8a5 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -1145,7 +1145,7 @@ class AccountLine extends CommonObject * @param User $user User object that delete * @return int <0 if KO, >0 if OK */ - function delete($user=0) + function delete($user=null) { $nbko=0; @@ -1194,7 +1194,7 @@ class AccountLine extends CommonObject * @param User $user User object that delete * @return int <0 if KO, >0 if OK */ - function delete_urls($user=0) + function delete_urls($user=null) { $nbko=0; diff --git a/htdocs/compta/bank/class/bankcateg.class.php b/htdocs/compta/bank/class/bankcateg.class.php index a1bc0191175..8811ad7c878 100644 --- a/htdocs/compta/bank/class/bankcateg.class.php +++ b/htdocs/compta/bank/class/bankcateg.class.php @@ -172,7 +172,7 @@ class BankCateg // extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 605d4920669..e410ab49de2 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -1040,7 +1040,7 @@ class Facture extends CommonInvoice * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/compta/facture/class/paymentterm.class.php b/htdocs/compta/facture/class/paymentterm.class.php index cdc935cde01..b75bb056e03 100644 --- a/htdocs/compta/facture/class/paymentterm.class.php +++ b/htdocs/compta/facture/class/paymentterm.class.php @@ -261,7 +261,7 @@ class PaymentTerm // extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/compta/localtax/class/localtax.class.php b/htdocs/compta/localtax/class/localtax.class.php index 4174d693da3..e2c9c94595a 100644 --- a/htdocs/compta/localtax/class/localtax.class.php +++ b/htdocs/compta/localtax/class/localtax.class.php @@ -127,7 +127,7 @@ class Localtax extends CommonObject * @param int $notrigger 0=no, 1=yes (no update trigger) * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; diff --git a/htdocs/compta/salaries/class/paymentsalary.class.php b/htdocs/compta/salaries/class/paymentsalary.class.php index 9aaa175f6f4..5e60b76ee13 100644 --- a/htdocs/compta/salaries/class/paymentsalary.class.php +++ b/htdocs/compta/salaries/class/paymentsalary.class.php @@ -73,7 +73,7 @@ class PaymentSalary extends CommonObject * @param int $notrigger 0=no, 1=yes (no update trigger) * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; @@ -144,7 +144,7 @@ class PaymentSalary extends CommonObject * @param User $user User that load * @return int <0 if KO, >0 if OK */ - function fetch($id, $user=0) + function fetch($id, $user=null) { global $langs; $sql = "SELECT"; diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index fe2062e1ad7..395932de69f 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -220,7 +220,7 @@ class PaymentSocialContribution extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/compta/tva/class/tva.class.php b/htdocs/compta/tva/class/tva.class.php index 5d0762d3e35..a86af28cace 100644 --- a/htdocs/compta/tva/class/tva.class.php +++ b/htdocs/compta/tva/class/tva.class.php @@ -143,7 +143,7 @@ class Tva extends CommonObject * @param int $notrigger 0=no, 1=yes (no update trigger) * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; @@ -205,7 +205,7 @@ class Tva extends CommonObject * @param User $user User that load * @return int <0 if KO, >0 if OK */ - function fetch($id, $user=0) + function fetch($id, $user=null) { global $langs; $sql = "SELECT"; diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index a17c0ee1b44..cef881fca37 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -220,7 +220,7 @@ class Contact extends CommonObject * @param string $action Current action for hookmanager * @return int <0 if KO, >0 if OK */ - function update($id, $user=0, $notrigger=0, $action='update') + function update($id, $user=null, $notrigger=0, $action='update') { global $conf, $langs, $hookmanager; @@ -427,7 +427,7 @@ class Contact extends CommonObject * @param User $user User asking to change alert or birthday * @return int <0 if KO, >=0 if OK */ - function update_perso($id, $user=0) + function update_perso($id, $user=null) { $error=0; $result=false; @@ -492,7 +492,7 @@ class Contact extends CommonObject * @param User $user Utilisateur (abonnes aux alertes) qui veut les alertes de ce contact * @return int -1 if KO, 0 if OK but not found, 1 if OK */ - function fetch($id, $user=0) + function fetch($id, $user=null) { global $langs; diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index 5626719d96d..4abfb1f9c86 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -989,7 +989,7 @@ class Contrat extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/core/class/ccountry.class.php b/htdocs/core/class/ccountry.class.php index f2208a24d30..59980cea7a9 100644 --- a/htdocs/core/class/ccountry.class.php +++ b/htdocs/core/class/ccountry.class.php @@ -191,7 +191,7 @@ class Ccountry // extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/core/class/ctypent.class.php b/htdocs/core/class/ctypent.class.php index eea64ed10ac..027dda53dd3 100644 --- a/htdocs/core/class/ctypent.class.php +++ b/htdocs/core/class/ctypent.class.php @@ -198,7 +198,7 @@ class Ctypent // extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/core/class/events.class.php b/htdocs/core/class/events.class.php index e191773517b..299026a84bb 100644 --- a/htdocs/core/class/events.class.php +++ b/htdocs/core/class/events.class.php @@ -154,7 +154,7 @@ class Events // extends CommonObject * @param int $notrigger 0=no, 1=yes (no update trigger) * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; @@ -191,7 +191,7 @@ class Events // extends CommonObject * @param User $user User that load * @return int <0 if KO, >0 if OK */ - function fetch($id, $user=0) + function fetch($id, $user=null) { global $langs; diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php index c1c760a29e7..30f5960e0ce 100644 --- a/htdocs/core/class/menubase.class.php +++ b/htdocs/core/class/menubase.class.php @@ -74,7 +74,7 @@ class Menubase * @param User $user User that create * @return int <0 if KO, Id of record if OK */ - function create($user=0) + function create($user=null) { global $conf, $langs; @@ -185,7 +185,7 @@ class Menubase * @param int $notrigger 0=no, 1=yes (no update trigger) * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; @@ -250,7 +250,7 @@ class Menubase * @param User $user User that load * @return int <0 if KO, >0 if OK */ - function fetch($id, $user=0) + function fetch($id, $user=null) { global $langs; diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 23313d27f13..aaa69ec7f42 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -96,7 +96,7 @@ class Cronjob extends CommonObject $error=0; $now=dol_now(); - + // Clean parameters if (isset($this->label)) $this->label=trim($this->label); @@ -501,7 +501,7 @@ class Cronjob extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; diff --git a/htdocs/ecm/class/ecmdirectory.class.php b/htdocs/ecm/class/ecmdirectory.class.php index aae1e275d8f..6c0de13d15b 100644 --- a/htdocs/ecm/class/ecmdirectory.class.php +++ b/htdocs/ecm/class/ecmdirectory.class.php @@ -184,7 +184,7 @@ class EcmDirectory // extends CommonObject * @param int $notrigger 0=no, 1=yes (no update trigger) * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index bb34f480d97..2cc0667d58a 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -800,7 +800,7 @@ class Expedition extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index db4212308de..2de2d73e8ac 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -539,7 +539,7 @@ class FactureFournisseur extends CommonInvoice * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 5ff23b45ec0..5381c99df07 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -470,7 +470,7 @@ class Holiday extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/opensurvey/class/opensurveysondage.class.php b/htdocs/opensurvey/class/opensurveysondage.class.php index bcc1146c714..48119a7f16f 100644 --- a/htdocs/opensurvey/class/opensurveysondage.class.php +++ b/htdocs/opensurvey/class/opensurveysondage.class.php @@ -254,7 +254,7 @@ class Opensurveysondage extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php index c124f9648e3..a4df7a95829 100644 --- a/htdocs/product/class/productbatch.class.php +++ b/htdocs/product/class/productbatch.class.php @@ -34,7 +34,7 @@ class Productbatch extends CommonObject private static $_table_element='product_batch'; //!< Name of table without prefix where object is stored var $id; - + var $tms=''; var $fk_product_stock; var $sellby=''; @@ -43,7 +43,7 @@ class Productbatch extends CommonObject var $qty; var $import_key; - + /** @@ -92,7 +92,7 @@ class Productbatch extends CommonObject $sql.= " ".(! isset($this->qty)?'NULL':$this->qty).","; $sql.= " ".(! isset($this->import_key)?'NULL':"'".$this->db->escape($this->import_key)."'").""; - + $sql.= ")"; $this->db->begin(); @@ -148,7 +148,7 @@ class Productbatch extends CommonObject global $langs; $sql = "SELECT"; $sql.= " t.rowid,"; - + $sql.= " t.tms,"; $sql.= " t.fk_product_stock,"; $sql.= " t.sellby,"; @@ -157,7 +157,7 @@ class Productbatch extends CommonObject $sql.= " t.qty,"; $sql.= " t.import_key"; - + $sql.= " FROM ".MAIN_DB_PREFIX.self::$_table_element." as t"; $sql.= " WHERE t.rowid = ".$id; @@ -196,7 +196,7 @@ class Productbatch extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; @@ -376,7 +376,7 @@ class Productbatch extends CommonObject function initAsSpecimen() { $this->id=0; - + $this->tms=''; $this->fk_product_stock=''; $this->sellby=''; @@ -384,14 +384,14 @@ class Productbatch extends CommonObject $this->batch=''; $this->import_key=''; - + } /** * Clean fields (triming) * * @return void - */ + */ private function clean_param() { if (isset($this->fk_product_stock)) $this->fk_product_stock=(int) trim($this->fk_product_stock); if (isset($this->batch)) $this->batch=trim($this->batch); @@ -429,7 +429,7 @@ class Productbatch extends CommonObject if (! empty($batch_number)) $sql.= " AND batch = '".$this->db->escape($batch_number)."'"; if (! empty($where)) $sql.= " AND (".implode(" OR ",$where).")"; - + dol_syslog(get_class($this)."::fetch", LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) @@ -439,7 +439,7 @@ class Productbatch extends CommonObject $obj = $this->db->fetch_object($resql); $this->id = $obj->rowid; - + $this->tms = $this->db->jdate($obj->tms); $this->fk_product_stock = $obj->fk_product_stock; $this->sellby = $this->db->jdate($obj->sellby); @@ -480,10 +480,10 @@ class Productbatch extends CommonObject $sql.= " t.qty,"; $sql.= " t.import_key"; - + $sql.= " FROM ".MAIN_DB_PREFIX.self::$_table_element." as t"; $sql.= " WHERE fk_product_stock=".$fk_product_stock; - + if ($with_qty) $sql.= " AND qty<>0"; dol_syslog("productbatch::findAll", LOG_DEBUG); $resql=$db->query($sql); diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index e3e6373962b..3e6219afb40 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -261,7 +261,7 @@ class Task extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; @@ -801,7 +801,7 @@ class Task extends CommonObject $this->db->rollback(); $ret = -2; } - + $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task_time"; $sql.= " SET thm = (SELECT thm FROM ".MAIN_DB_PREFIX."user WHERE rowid = ".$this->timespent_fk_user.")"; $sql.= " WHERE rowid = ".$tasktime_id; diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php index 4beac635568..a7be5d0d25a 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/resource.class.php @@ -205,7 +205,7 @@ class Resource extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update($user=0, $notrigger=0) + function update($user=null, $notrigger=0) { global $conf, $langs; $error=0; @@ -695,7 +695,7 @@ class Resource extends CommonObject * @param int $notrigger 0=launch triggers after, 1=disable triggers * @return int <0 if KO, >0 if OK */ - function update_element_resource($user=0, $notrigger=0) + function update_element_resource($user=null, $notrigger=0) { global $conf, $langs; $error=0; diff --git a/htdocs/societe/class/address.class.php b/htdocs/societe/class/address.class.php index f08a4a2455c..7b36423cb61 100644 --- a/htdocs/societe/class/address.class.php +++ b/htdocs/societe/class/address.class.php @@ -232,7 +232,7 @@ class Address * @param User $user Objet de l'utilisateur * @return int >0 si ok, <0 si ko */ - function fetch_lines($socid, $user=0) + function fetch_lines($socid, $user=null) { global $langs, $conf; @@ -325,7 +325,7 @@ class Address * @param User $user Objet de l'utilisateur * @return int >0 si ok, <0 si ko */ - function fetch_address($id, $user=0) + function fetch_address($id, $user=null) { global $langs; global $conf; From 539a201d3e60a5b89af77529ccabaa2957a3d427 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 15 Nov 2014 18:30:37 +0100 Subject: [PATCH 101/111] Fix: doxygen --- htdocs/core/lib/report.lib.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/htdocs/core/lib/report.lib.php b/htdocs/core/lib/report.lib.php index 9c701441765..e6fbd7e59bc 100644 --- a/htdocs/core/lib/report.lib.php +++ b/htdocs/core/lib/report.lib.php @@ -26,15 +26,15 @@ /** * Show header of a VAT report * -* @param string $nom Name of report -* @param string $variante Link for alternate report -* @param string $period Period of report -* @param string $periodlink Link to switch period -* @param string $description Description -* @param date $builddate Date generation -* @param string $exportlink Link for export or '' -* @param array $moreparam Array with list of params to add into form -* @param string $calcmode Calculation mode +* @param string $nom Name of report +* @param string $variante Link for alternate report +* @param string $period Period of report +* @param string $periodlink Link to switch period +* @param string $description Description +* @param timestamp|integer $builddate Date generation +* @param string $exportlink Link for export or '' +* @param array $moreparam Array with list of params to add into form +* @param string $calcmode Calculation mode * @return void */ function report_header($nom,$variante,$period,$periodlink,$description,$builddate,$exportlink='',$moreparam=array(),$calcmode='') @@ -79,7 +79,7 @@ function report_header($nom,$variante,$period,$periodlink,$description,$builddat print '
'.$langs->trans("ReportPeriod").'
'; print ''; - print img_object($langs->trans('ShowBill'),'bill').' '.$obj->ref_supplier.' '.dol_trunc($obj->libelle,14).''.dol_print_date($db->jdate($obj->df),'day').''.price($obj->amount).''; @@ -455,11 +461,11 @@ if ($object->fetch($id)) $parameters = array(); $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been // modified by hook - if (empty($reshook)) + if (empty($reshook)) { print '
'; - + if ($user->rights->fournisseur->commande->creer) { $langs->load("orders"); @@ -471,7 +477,7 @@ if ($object->fetch($id)) $langs->load("bills"); print ''.$langs->trans("AddBill").''; } - + if ($user->rights->fournisseur->facture->creer) { if (! empty($orders2invoice) && $orders2invoice > 0) print ''; From d4ad7236e5749b75eb84c71ca59b9be87416a284 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 16 Nov 2014 00:46:27 +0100 Subject: [PATCH 105/111] Clean old code for multiselect (replaced with select2 plugin). --- COPYRIGHT | 2 +- htdocs/core/class/html.form.class.php | 64 +- .../jquery/plugins/multiple-select/LICENSE | 21 - .../jquery/plugins/multiple-select/README.md | 96 - .../multiple-select/jquery.multiple.select.js | 466 --- .../multiple-select/multiple-select.css | 183 - .../multiple-select.jquery.json | 28 - .../multiple-select/multiple-select.png | Bin 3342 -> 0 bytes .../jquery/plugins/select2/.gitignore | 2 + .../jquery/plugins/select2/CONTRIBUTING.md | 107 + .../includes/jquery/plugins/select2/LICENSE | 18 + .../includes/jquery/plugins/select2/README.md | 114 + .../jquery/plugins/select2/bower.json | 8 + .../jquery/plugins/select2/component.json | 66 + .../jquery/plugins/select2/composer.json | 29 + .../jquery/plugins/select2/package.json | 20 + .../jquery/plugins/select2/release.sh | 79 + .../plugins/select2/select2-bootstrap.css | 87 + .../plugins/select2/select2-spinner.gif | Bin 0 -> 1849 bytes .../jquery/plugins/select2/select2.css | 704 ++++ .../plugins/select2/select2.jquery.json | 36 + .../jquery/plugins/select2/select2.js | 3541 +++++++++++++++++ .../jquery/plugins/select2/select2.min.js | 23 + .../jquery/plugins/select2/select2.png | Bin 0 -> 613 bytes .../plugins/select2/select2_locale_ar.js | 19 + .../plugins/select2/select2_locale_az.js | 20 + .../plugins/select2/select2_locale_bg.js | 20 + .../plugins/select2/select2_locale_ca.js | 19 + .../plugins/select2/select2_locale_cs.js | 51 + .../plugins/select2/select2_locale_da.js | 19 + .../plugins/select2/select2_locale_de.js | 18 + .../plugins/select2/select2_locale_el.js | 19 + .../select2/select2_locale_en.js.template | 20 + .../plugins/select2/select2_locale_es.js | 19 + .../plugins/select2/select2_locale_et.js | 19 + .../plugins/select2/select2_locale_eu.js | 45 + .../plugins/select2/select2_locale_fa.js | 21 + .../plugins/select2/select2_locale_fi.js | 30 + .../plugins/select2/select2_locale_fr.js | 18 + .../plugins/select2/select2_locale_gl.js | 45 + .../plugins/select2/select2_locale_he.js | 19 + .../plugins/select2/select2_locale_hr.js | 24 + .../plugins/select2/select2_locale_hu.js | 17 + .../plugins/select2/select2_locale_id.js | 19 + .../plugins/select2/select2_locale_is.js | 17 + .../plugins/select2/select2_locale_it.js | 17 + .../plugins/select2/select2_locale_ja.js | 17 + .../plugins/select2/select2_locale_ka.js | 19 + .../plugins/select2/select2_locale_ko.js | 19 + .../plugins/select2/select2_locale_lt.js | 26 + .../plugins/select2/select2_locale_lv.js | 19 + .../plugins/select2/select2_locale_mk.js | 19 + .../plugins/select2/select2_locale_ms.js | 19 + .../plugins/select2/select2_locale_nb.js | 22 + .../plugins/select2/select2_locale_nl.js | 17 + .../plugins/select2/select2_locale_pl.js | 54 + .../plugins/select2/select2_locale_pt-BR.js | 18 + .../plugins/select2/select2_locale_pt-PT.js | 17 + .../plugins/select2/select2_locale_ro.js | 17 + .../plugins/select2/select2_locale_rs.js | 19 + .../plugins/select2/select2_locale_ru.js | 23 + .../plugins/select2/select2_locale_sk.js | 50 + .../plugins/select2/select2_locale_sv.js | 19 + .../plugins/select2/select2_locale_th.js | 19 + .../plugins/select2/select2_locale_tr.js | 19 + .../plugins/select2/select2_locale_ug-CN.js | 16 + .../plugins/select2/select2_locale_uk.js | 25 + .../plugins/select2/select2_locale_vi.js | 20 + .../plugins/select2/select2_locale_zh-CN.js | 16 + .../plugins/select2/select2_locale_zh-TW.js | 16 + .../jquery/plugins/select2/select2x2.png | Bin 0 -> 845 bytes htdocs/main.inc.php | 16 +- htdocs/public/test/test_forms.php | 10 +- 73 files changed, 5919 insertions(+), 841 deletions(-) delete mode 100644 htdocs/includes/jquery/plugins/multiple-select/LICENSE delete mode 100644 htdocs/includes/jquery/plugins/multiple-select/README.md delete mode 100644 htdocs/includes/jquery/plugins/multiple-select/jquery.multiple.select.js delete mode 100644 htdocs/includes/jquery/plugins/multiple-select/multiple-select.css delete mode 100644 htdocs/includes/jquery/plugins/multiple-select/multiple-select.jquery.json delete mode 100644 htdocs/includes/jquery/plugins/multiple-select/multiple-select.png create mode 100644 htdocs/includes/jquery/plugins/select2/.gitignore create mode 100644 htdocs/includes/jquery/plugins/select2/CONTRIBUTING.md create mode 100644 htdocs/includes/jquery/plugins/select2/LICENSE create mode 100644 htdocs/includes/jquery/plugins/select2/README.md create mode 100644 htdocs/includes/jquery/plugins/select2/bower.json create mode 100644 htdocs/includes/jquery/plugins/select2/component.json create mode 100644 htdocs/includes/jquery/plugins/select2/composer.json create mode 100644 htdocs/includes/jquery/plugins/select2/package.json create mode 100644 htdocs/includes/jquery/plugins/select2/release.sh create mode 100644 htdocs/includes/jquery/plugins/select2/select2-bootstrap.css create mode 100644 htdocs/includes/jquery/plugins/select2/select2-spinner.gif create mode 100644 htdocs/includes/jquery/plugins/select2/select2.css create mode 100644 htdocs/includes/jquery/plugins/select2/select2.jquery.json create mode 100644 htdocs/includes/jquery/plugins/select2/select2.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2.min.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2.png create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ar.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_az.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_bg.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ca.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_cs.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_da.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_de.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_el.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_en.js.template create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_es.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_et.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_eu.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_fa.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_fi.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_fr.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_gl.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_he.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_hr.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_hu.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_id.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_is.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_it.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ja.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ka.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ko.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_lt.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_lv.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_mk.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ms.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_nb.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_nl.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_pl.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_pt-BR.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_pt-PT.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ro.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_rs.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ru.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_sk.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_sv.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_th.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_tr.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_ug-CN.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_uk.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_vi.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_zh-CN.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2_locale_zh-TW.js create mode 100644 htdocs/includes/jquery/plugins/select2/select2x2.png diff --git a/COPYRIGHT b/COPYRIGHT index fd54e10f354..2e1c6e921b9 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -26,7 +26,7 @@ TCPDF 6.0.093 LGPL-3+ Yes JS libraries: jQuery 1.8.2 MIT License Yes JS library jQuery UI 1.9.1 GPL and MIT License Yes JS library plugin UI -jQuery multiple-select 1.1.0 MIT License Yes JS library plugin for sexier multiselect +jQuery select2 3.5.2 GPL and Apache License Yes JS library plugin for sexier multiselect jQuery blockUI 2.43 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups) jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors jQuery DataTables 1.9.4 BSD Yes JS library for tables output diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 99a0985f914..ba597dd4d57 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -4102,7 +4102,22 @@ class Form if ($value_as_key) $array=array_combine($array, $array); - $out=''; if ($show_empty) { @@ -4166,47 +4181,22 @@ class Form global $conf, $langs; // Add code for jquery to use multiselect - // Note: Plugin "multiselect" is no more provided by Dolibarr. You must include it and load it into your module to use it. - if ((! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && ($conf->global->MAIN_USE_JQUERY_MULTISELECT == 'multiselect')) - || (defined('REQUIRE_JQUERY_MULTISELECT') && constant('REQUIRE_JQUERY_MULTISELECT') == 'multiselect')) + if (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) { - print ' - '; - } - - // Add code for jquery to use multiple-select - if ((! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && ($conf->global->MAIN_USE_JQUERY_MULTISELECT == 'multiple-select')) - || (defined('REQUIRE_JQUERY_MULTISELECT') && constant('REQUIRE_JQUERY_MULTISELECT') == 'multiple-select')) - { - print ' - - '; + $tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT'):$conf->global->MAIN_USE_JQUERY_MULTISELECT; + print ' + '; } // Try also magic suggest - $out = ''."\n"; if (is_array($array) && ! empty($array)) { if ($value_as_key) $array=array_combine($array, $array); diff --git a/htdocs/includes/jquery/plugins/multiple-select/LICENSE b/htdocs/includes/jquery/plugins/multiple-select/LICENSE deleted file mode 100644 index c3ebd2b5248..00000000000 --- a/htdocs/includes/jquery/plugins/multiple-select/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -(The MIT License) - -Copyright (c) 2012-2014 Zhixin Wen - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/multiple-select/README.md b/htdocs/includes/jquery/plugins/multiple-select/README.md deleted file mode 100644 index 81b82ba74c0..00000000000 --- a/htdocs/includes/jquery/plugins/multiple-select/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Multiple Select - -Multiple select is a jQuery plugin to select multiple elements with checkboxes :). - -To get started checkout examples and documentation at http://wenzhixin.net.cn/p/multiple-select - -## Contributors - -Multiple select is due to the excellent work of the following contributors: - - - - -< - - - - - - - -
文翼GitHub/wenzhixin
Gaurav JassalGitHub/creativeaura
guliGitHub/guli
jwheadonGitHub/jwheadon
yxGitHub/qqfish
Tobias MaceyGitHub/blarghmatey
Jona GoldmanGitHub/jonagoldman
Alex JeffreyGitHub/ajeffrey
- -## Changelog - -### 1.1.0 - -* Fix #63: Add ```keepOpen``` option. -* Fix #62: Fix ```isOpen``` and ```filter``` options are both true bug. -* Fix #57: Fire onCheckAll event when literally select. -* Add data attributes for support. -* Fix #55: Add ```name``` option. - -### 1.0.9 - -* Fix #42: Add ```styler``` option to custom item style. -* Fix firefox click bug. -* Add ```allSelected```, ```minumimCountSelected``` and ```countSelected``` options. -* Fix #35: Add ```onFocus``` and ```onBlur``` events. -* Fix #25: Add ```focus``` and ```blur``` methods. -* Fix #31: Trigger the onCheckAll & onUncheckAll events when use filter to select all. - -### 1.0.8 - -* Update the license to The MIT License. -* Fix #47: Add ```No matches found``` message when there are no results found. -* Fix #43: Add ```position``` option. - -### 1.0.7 - -* Fix #44: The filters not working bugs. - -### 1.0.6 - -* Fix #21: Add ```single``` option. -* Add ```override``` option. -* Add ```container``` option. -* Fix #29: Update the optgroups select text. -* Fix #30: Image is not shown in Firefox 25.0.1. -* Fix #22: fix group filter problem. - -### 1.0.5 - -* Update the button text witdh. -* Add keyboard support. - -### 1.0.4 - -* Fix #12: Add ```width``` option. -* Fix #11: Add callback events. -* Add ```maxHeight``` option. - -### 1.0.3 - -* Fix #4: Add ```filter``` option. -* Support mobile devices. -* Fix #6: Add ```refresh``` method. - -### 1.0.2 - -* Fix #7: Add ```selected``` and ```disabled``` options. -* Fix #5: Add ```checkAll``` and ```uncheckAll``` methods. - -### 1.0.1 - -* Fix #3: Add optgroups support. -* Add ```placeholder``` option. -* Fix #2: use prop method instead of attr. - -### 1.0.0 - -* Initial release - -## LICENSE - -[The MIT License](https://github.com/wenzhixin/multiple-select/blob/master/LICENSE) \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/multiple-select/jquery.multiple.select.js b/htdocs/includes/jquery/plugins/multiple-select/jquery.multiple.select.js deleted file mode 100644 index 32e6635bbaa..00000000000 --- a/htdocs/includes/jquery/plugins/multiple-select/jquery.multiple.select.js +++ /dev/null @@ -1,466 +0,0 @@ -/** - * @author zhixin wen - * @version 1.1.0 - * - * http://wenzhixin.net.cn/p/multiple-select/ - */ - -(function($) { - - 'use strict'; - - function MultipleSelect($el, options) { - var that = this, - name = $el.attr('name') || options.name || '', - elWidth = $el.width(); - - this.$el = $el.hide(); - this.options = options; - - this.$parent = $('
'); - this.$choice = $(''); - this.$drop = $('
'); - this.$el.after(this.$parent); - this.$parent.append(this.$choice); - this.$parent.append(this.$drop); - - if (this.$el.prop('disabled')) { - this.$choice.addClass('disabled'); - } - this.$choice.css('width', elWidth + 'px'); - this.$drop.css({ - width: (options.width || elWidth) + 'px' - }); - - if (!this.options.keepOpen) { - $('body').click(function(e) { - if ($(e.target)[0] === that.$choice[0] || - $(e.target).parents('.ms-choice')[0] === that.$choice[0]) { - return; - } - if (($(e.target)[0] === that.$drop[0] || - $(e.target).parents('.ms-drop')[0] !== that.$drop[0]) && - that.options.isOpen) { - that.close(); - } - }); - } - - this.selectAllName = 'name="selectAll' + name + '"'; - this.selectGroupName = 'name="selectGroup' + name + '"'; - this.selectItemName = 'name="selectItem' + name + '"'; - } - - MultipleSelect.prototype = { - constructor : MultipleSelect, - - init: function() { - var that = this, - html = []; - if (this.options.filter) { - html.push( - '' - ); - } - html.push('
    '); - if (this.options.selectAll && !this.options.single) { - html.push( - '
  • ', - '', - '
  • ' - ); - } - $.each(this.$el.children(), function(i, elm) { - html.push(that.optionToHtml(i, elm)); - }); - html.push('
  • No matches found
  • '); - html.push('
'); - this.$drop.html(html.join('')); - this.$drop.find('ul').css('max-height', this.options.maxHeight + 'px'); - this.$drop.find('.multiple').css('width', this.options.multipleWidth + 'px'); - - this.$searchInput = this.$drop.find('.ms-search input'); - this.$selectAll = this.$drop.find('input[' + this.selectAllName + ']'); - this.$selectGroups = this.$drop.find('input[' + this.selectGroupName + ']'); - this.$selectItems = this.$drop.find('input[' + this.selectItemName + ']:enabled'); - this.$disableItems = this.$drop.find('input[' + this.selectItemName + ']:disabled'); - this.$noResults = this.$drop.find('.ms-no-results'); - this.events(); - this.update(); - - if (this.options.isOpen) { - this.open(); - } - }, - - optionToHtml: function(i, elm, group, groupDisabled) { - var that = this, - $elm = $(elm), - html = [], - multiple = this.options.multiple, - disabled, - type = this.options.single ? 'radio' : 'checkbox'; - - if ($elm.is('option')) { - var value = $elm.val(), - text = $elm.text(), - selected = $elm.prop('selected'), - style = this.options.styler(value) ? ' style="' + this.options.styler(value) + '"' : ''; - - disabled = groupDisabled || $elm.prop('disabled'); - html.push( - '', - '', - ' ', - text, - '', - '' - ); - } else if (!group && $elm.is('optgroup')) { - var _group = 'group_' + i, - label = $elm.attr('label'); - - disabled = $elm.prop('disabled'); - html.push( - '
  • ', - '', - '
  • '); - $.each($elm.children(), function(i, elm) { - html.push(that.optionToHtml(i, elm, _group, disabled)); - }); - } - return html.join(''); - }, - - events: function() { - var that = this; - this.$choice.off('click').on('click', function(e) { - e.preventDefault(); - that[that.options.isOpen ? 'close' : 'open'](); - }) - .off('focus').on('focus', this.options.onFocus) - .off('blur').on('blur', this.options.onBlur); - - this.$parent.off('keydown').on('keydown', function(e) { - switch (e.which) { - case 27: // esc key - that.close(); - that.$choice.focus(); - break; - } - }); - this.$searchInput.off('keyup').on('keyup', function() { - that.filter(); - }); - this.$selectAll.off('click').on('click', function() { - var checked = $(this).prop('checked'), - $items = that.$selectItems.filter(':visible'); - if ($items.length === that.$selectItems.length) { - that[checked ? 'checkAll' : 'uncheckAll'](); - } else { // when the filter option is true - that.$selectGroups.prop('checked', checked); - $items.prop('checked', checked); - that.options[checked ? 'onCheckAll' : 'onUncheckAll'](); - that.update(); - } - }); - this.$selectGroups.off('click').on('click', function() { - var group = $(this).parent().attr('data-group'), - $items = that.$selectItems.filter(':visible'), - $children = $items.filter('[data-group="' + group + '"]'), - checked = $children.length !== $children.filter(':checked').length; - $children.prop('checked', checked); - that.updateSelectAll(); - that.update(); - that.options.onOptgroupClick({ - label: $(this).parent().text(), - checked: checked, - children: $children.get() - }); - }); - this.$selectItems.off('click').on('click', function() { - that.updateSelectAll(); - that.update(); - that.updateOptGroupSelect(); - that.options.onClick({ - label: $(this).parent().text(), - value: $(this).val(), - checked: $(this).prop('checked') - }); - }); - }, - - open: function() { - if (this.$choice.hasClass('disabled')) { - return; - } - this.options.isOpen = true; - this.$choice.find('>div').addClass('open'); - this.$drop.show(); - if (this.options.container) { - var offset = this.$drop.offset(); - this.$drop.appendTo($(this.options.container)); - this.$drop.offset({ top: offset.top, left: offset.left }); - } - if (this.options.filter) { - this.$searchInput.val(''); - this.filter(); - } - this.options.onOpen(); - }, - - close: function() { - this.options.isOpen = false; - this.$choice.find('>div').removeClass('open'); - this.$drop.hide(); - if (this.options.container) { - this.$parent.append(this.$drop); - this.$drop.css({ - 'top': 'auto', - 'left': 'auto' - }) - } - this.options.onClose(); - }, - - update: function() { - var selects = this.getSelects('text'), - $span = this.$choice.find('>span'); - if (selects.length === this.$selectItems.length + this.$disableItems.length && this.options.allSelected) { - $span.removeClass('placeholder').html(this.options.allSelected); - } else if (selects.length > this.options.minumimCountSelected && this.options.countSelected) { - $span.removeClass('placeholder').html(this.options.countSelected - .replace('#', selects.length) - .replace('%', this.$selectItems.length + this.$disableItems.length)); - } else if (selects.length) { - $span.removeClass('placeholder').html(selects.join(', ')); - } else { - $span.addClass('placeholder').html(this.options.placeholder); - } - // set selects to select - this.$el.val(this.getSelects()); - }, - - updateSelectAll: function() { - var $items = this.$selectItems.filter(':visible'); - this.$selectAll.prop('checked', $items.length && - $items.length === $items.filter(':checked').length); - if (this.$selectAll.prop('checked')) { - this.options.onCheckAll(); - } - }, - - updateOptGroupSelect: function() { - var $items = this.$selectItems.filter(':visible'); - $.each(this.$selectGroups, function(i, val) { - var group = $(val).parent().attr('data-group'), - $children = $items.filter('[data-group="' + group + '"]'); - $(val).prop('checked', $children.length && - $children.length === $children.filter(':checked').length); - }); - }, - - //value or text, default: 'value' - getSelects: function(type) { - var that = this, - texts = [], - values = []; - this.$drop.find('input[' + this.selectItemName + ']:checked').each(function() { - texts.push($(this).parent().text()); - values.push($(this).val()); - }); - - if (type === 'text' && this.$selectGroups.length) { - texts = []; - this.$selectGroups.each(function() { - var html = [], - text = $.trim($(this).parent().text()), - group = $(this).parent().data('group'), - $children = that.$drop.find('[' + that.selectItemName + '][data-group="' + group + '"]'), - $selected = $children.filter(':checked'); - - if ($selected.length === 0) { - return; - } - - html.push('['); - html.push(text); - if ($children.length > $selected.length) { - var list = []; - $selected.each(function() { - list.push($(this).parent().text()); - }); - html.push(': ' + list.join(', ')); - } - html.push(']'); - texts.push(html.join('')); - }); - } - return type === 'text' ? texts : values; - }, - - setSelects: function(values) { - var that = this; - this.$selectItems.prop('checked', false); - $.each(values, function(i, value) { - that.$selectItems.filter('[value="' + value + '"]').prop('checked', true); - }); - this.$selectAll.prop('checked', this.$selectItems.length === - this.$selectItems.filter(':checked').length); - this.update(); - }, - - enable: function() { - this.$choice.removeClass('disabled'); - }, - - disable: function() { - this.$choice.addClass('disabled'); - }, - - checkAll: function() { - this.$selectItems.prop('checked', true); - this.$selectGroups.prop('checked', true); - this.$selectAll.prop('checked', true); - this.update(); - this.options.onCheckAll(); - }, - - uncheckAll: function() { - this.$selectItems.prop('checked', false); - this.$selectGroups.prop('checked', false); - this.$selectAll.prop('checked', false); - this.update(); - this.options.onUncheckAll(); - }, - - focus: function() { - this.$choice.focus(); - this.options.onFocus(); - }, - - blur: function() { - this.$choice.blur(); - this.options.onBlur(); - }, - - refresh: function() { - this.init(); - }, - - filter: function() { - var that = this, - text = $.trim(this.$searchInput.val()).toLowerCase(); - if (text.length === 0) { - this.$selectItems.parent().show(); - this.$disableItems.parent().show(); - this.$selectGroups.parent().show(); - } else { - this.$selectItems.each(function() { - var $parent = $(this).parent(); - $parent[$parent.text().toLowerCase().indexOf(text) < 0 ? 'hide' : 'show'](); - }); - this.$disableItems.parent().hide(); - this.$selectGroups.each(function() { - var $parent = $(this).parent(); - var group = $parent.attr('data-group'), - $items = that.$selectItems.filter(':visible'); - $parent[$items.filter('[data-group="' + group + '"]').length === 0 ? 'hide' : 'show'](); - }); - - //Check if no matches found - if (this.$selectItems.filter(':visible').length) { - this.$selectAll.parent().show(); - this.$noResults.hide(); - } else { - this.$selectAll.parent().hide(); - this.$noResults.show(); - } - } - this.updateOptGroupSelect(); - this.updateSelectAll(); - } - }; - - $.fn.multipleSelect = function() { - var option = arguments[0], - args = arguments, - - value, - allowedMethods = [ - 'getSelects', 'setSelects', - 'enable', 'disable', - 'checkAll', 'uncheckAll', - 'focus', 'blur', - 'refresh' - ]; - - this.each(function() { - var $this = $(this), - data = $this.data('multipleSelect'), - options = $.extend({}, $.fn.multipleSelect.defaults, - $this.data(), typeof option === 'object' && option); - - if (!data) { - data = new MultipleSelect($this, options); - $this.data('multipleSelect', data); - } - - if (typeof option === 'string') { - if ($.inArray(option, allowedMethods) < 0) { - throw "Unknown method: " + option; - } - value = data[option](args[1]); - } else { - data.init(); - } - }); - - return value ? value : this; - }; - - $.fn.multipleSelect.defaults = { - name: '', - isOpen: false, - placeholder: '', - selectAll: true, - selectAllText: 'Select all', - allSelected: 'All selected', - minumimCountSelected: 3, - countSelected: '# of % selected', - multiple: false, - multipleWidth: 80, - single: false, - filter: false, - width: undefined, - maxHeight: 250, - container: null, - position: 'bottom', - keepOpen: false, - - styler: function() {return false;}, - - onOpen: function() {return false;}, - onClose: function() {return false;}, - onCheckAll: function() {return false;}, - onUncheckAll: function() {return false;}, - onFocus: function() {return false;}, - onBlur: function() {return false;}, - onOptgroupClick: function() {return false;}, - onClick: function() {return false;} - }; -})(jQuery); diff --git a/htdocs/includes/jquery/plugins/multiple-select/multiple-select.css b/htdocs/includes/jquery/plugins/multiple-select/multiple-select.css deleted file mode 100644 index d824e0c7a2b..00000000000 --- a/htdocs/includes/jquery/plugins/multiple-select/multiple-select.css +++ /dev/null @@ -1,183 +0,0 @@ -/** - * @author zhixin wen - */ - -.ms-parent { - display: inline-block; - position: relative; - vertical-align: middle; -} - -.ms-choice { - display: block; - height: 26px; - padding: 0; - overflow: hidden; - cursor: pointer; - border: 1px solid #aaa; - text-align: left; - white-space: nowrap; - line-height: 26px; - color: #444; - text-decoration: none; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - background-color: #fff; -} - -.ms-choice.disabled { - background-color: #f4f4f4; - background-image: none; - border: 1px solid #ddd; - cursor: default; -} - -.ms-choice > span { - position: absolute; - top: 0; - left: 0; - right: 20px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - display: block; - padding-left: 8px; -} - -.ms-choice > span.placeholder { - color: #999; -} - -.ms-choice > div { - position: absolute; - top: 0; - right: 0; - width: 20px; - height: 25px; - background: url('multiple-select.png') right top no-repeat; -} - -.ms-choice > div.open { - background: url('multiple-select.png') left top no-repeat; -} - -.ms-drop { - overflow: hidden; - display: none; - margin-top: -1px; - padding: 0; - position: absolute; - z-index: 1000; - background: #fff; - color: #000; - border: 1px solid #aaa; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.ms-drop.bottom { - top: 100%; - -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); - -moz-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); - box-shadow: 0 4px 5px rgba(0, 0, 0, .15); -} - -.ms-drop.top { - bottom: 100%; - -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); - -moz-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); - box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); -} - -.ms-search { - display: inline-block; - margin: 0; - min-height: 26px; - padding: 4px; - position: relative; - white-space: nowrap; - width: 100%; - z-index: 10000; -} - -.ms-search input { - width: 100%; - height: auto !important; - min-height: 24px; - padding: 0 20px 0 5px; - margin: 0; - outline: 0; - font-family: sans-serif; - font-size: 1em; - border: 1px solid #aaa; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - background: #fff url('multiple-select.png') no-repeat 100% -22px; - background: url('multiple-select.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee)); - background: url('multiple-select.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%); - background: url('multiple-select.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%); - background: url('multiple-select.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%); - background: url('multiple-select.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%); - background: url('multiple-select.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%); -} - -.ms-search, .ms-search input { - -webkit-box-sizing: border-box; - -khtml-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.ms-drop ul { - overflow: auto; - margin: 0; - padding: 5px 8px; -} - -.ms-drop ul > li { - list-style: none; - display: list-item; - background-image: none; - position: static; -} - -.ms-drop ul > li .disabled { - opacity: .35; - filter: Alpha(Opacity=35); -} - -.ms-drop ul > li.multiple { - display: block; - float: left; -} - -.ms-drop ul > li.group { - clear: both; -} - -.ms-drop ul > li.multiple label { - width: 100%; - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.ms-drop ul > li label.optgroup { - font-weight: bold; -} - -.ms-drop input[type="checkbox"] { - vertical-align: middle; -} - -.ms-drop .ms-no-results { - display: none; -} \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/multiple-select/multiple-select.jquery.json b/htdocs/includes/jquery/plugins/multiple-select/multiple-select.jquery.json deleted file mode 100644 index dd636fda7e0..00000000000 --- a/htdocs/includes/jquery/plugins/multiple-select/multiple-select.jquery.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "multiple-select", - "version": "1.1.0", - "title": "Multiple Select", - "description": "Multiple select is a jQuery plugin to select multiple elements with checkboxes :).", - "author": { - "name": "zhixin wen", - "email": "wenzhixin2010@gmail.com", - "url": "http://wenzhixin.net.cn/" - }, - "licenses": [ - { - "type": "MIT License", - "url": "http://opensource.org/licenses/MIT" - } - ], - "dependencies": { - "jquery": ">=1.7" - }, - "keywords": ["multiple.select", "select.list", "multiple.choose", "checkbox"], - "homepage": "http://wenzhixin.net.cn/p/multiple-select/", - "demo": "http://wenzhixin.net.cn/p/multiple-select/#examples", - "bugs": { - "url": "https://github.com/wenzhixin/multiple-select/issues" - }, - "docs": "http://wenzhixin.net.cn/p/multiple-select/#documentation", - "download": "https://github.com/wenzhixin/multiple-select/archive/master.zip" -} \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/multiple-select/multiple-select.png b/htdocs/includes/jquery/plugins/multiple-select/multiple-select.png deleted file mode 100644 index 2a7ba608ea846d4873f84e00455ee2d1bbe4d13a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3342 zcmV+p4e|1cP)KLZ*U+5Lu!Sk^o_Z5E4Meg@_7P6crJiNL9pw)e1;Xm069{HJUZAPk55R%$-RIA z6-eL&AQ0xu!e<4=008gy@A0LT~suv4>S3ILP<0Bm`DLLvaF4FK%)Nj?Pt*r}7;7Xa9z9H|HZjR63e zC`Tj$K)V27Re@400>HumpsYY5E(E}?0f1SyGDiY{y#)Yvj#!WnKwtoXnL;eg03bL5 z07D)V%>y7z1E4U{zu>7~aD})?0RX_umCct+(lZpemCzb@^6=o|A>zVpu|i=NDG+7} zl4`aK{0#b-!z=TL9Wt0BGO&T{GJWpjryhdijfaIQ&2!o}p04JRKYg3k&Tf zVxhe-O!X z{f;To;xw^bEES6JSc$k$B2CA6xl)ltA<32E66t?3@gJ7`36pmX0IY^jz)rRYwaaY4 ze(nJRiw;=Qb^t(r^DT@T3y}a2XEZW-_W%Hszxj_qD**t_m!#tW0KDiJT&R>6OvVTR z07RgHDzHHZ48atvzz&?j9lXF70$~P3Knx_nJP<+#`N z#-MZ2bTkiLfR>_b(HgWKJ%F~Nr_oF3b#wrIijHG|(J>BYjM-sajE6;FiC7vY#};Gd zST$CUHDeuEH+B^pz@B062qXfFfD`NpUW5?BY=V%GM_5c)L#QR}BeW8_2v-S%gfYS= zB9o|3v?Y2H`NVi)In3rTB8+ej^> zQ=~r95NVuDChL%G$=>7$vVg20myx%S50Foi`^m%Pw-h?Xh~i8Mq9jtJloCocWk2Nv zrJpiFnV_ms&8eQ$2&#xWpIS+6pmtC%Q-`S&GF4Q#^mhymh7E(qNMa}%YZ-ePrx>>xFPTiH1=E+A$W$=bG8>s^ zm=Bn5Rah$aDtr}@$`X}2l~$F0mFKEdRdZE8)p@E5RI61Ft6o-prbbn>P~)iy)E2AN zsU20jsWz_8Qg>31P|s0cqrPALg8E|(vWA65poU1JRAaZs8I2(p#xiB`SVGovRs-uS zYnV-9TeA7=Om+qP8+I>yOjAR1s%ETak!GFdam@h^# z)@rS0t$wXH+Irf)+G6c;?H29p+V6F6oj{!|o%K3xI`?%6x;DB|x`n#ibhIR?(H}Q3Gzd138Ei2)WAMz7W9Vy`X}HnwgyEn!VS)>mv$8&{hQn>w4zwy3R}t;BYlZQm5)6pty=DfLrs+A-|>>;~;Q z_F?uV_HFjh9n2gO9o9Q^JA86v({H5aB!kjoO6 zc9$1ZZKsN-Zl8L~mE{`ly3)1N^`o1+o7}D0ZPeY&J;i;i`%NyJ8_8Y6J?}yE@b_5a zam?eLr<8@mESk|3$_SkmS{wQ>%qC18))9_|&j{ZT zes8AvOzF(F2#DZEY>2oYX&IRp`F#{ADl)1r>QS^)ba8a|EY_^#S^HO&t^Rgqwv=MZThqqEWH8 zxJo>d=ABlR_Bh=;eM9Tw|Ih34~oTE|= zX_mAr*D$vzw@+p(E0Yc6dFE}(8oqt`+R{gE3x4zjX+Sb3_cYE^= zgB=w+-tUy`ytONMS8KgRef4hA?t0j zufM;t32jm~jUGrkaOInTZ`zyfns>EuS}G30LFK_G-==(f<51|K&cocp&EJ`SxAh3? zNO>#LI=^+SEu(FqJ)ynt=!~PC9bO$rzPJB=?=j6w@a-(u02P7 zaQ)#(uUl{HW%tYNS3ItC^iAtK(eKlL`f9+{bJzISE?u8_z3;~C8@FyI-5j_jy7l;W z_U#vU3hqqYU3!mrul&B+{ptt$59)uk{;_4iZQ%G|z+lhASr6|H35TBkl>gI*;nGLU zN7W-nBaM%pA0HbH8olyl&XeJ%vZoWz%6?Y=dFykl=imL}`%BMQ{Mhgd`HRoLu6e2R za__6DuR6yg#~-}Tc|Gx_{H@O0eebyMy5GmWADJlpK>kqk(fVV@r_fLLKIeS?{4e)} z^ZO;zpECde03c&XQcVB=dL;k=fP(-4`Tqa_faw4Lbua(`>RI+y?e7jKeZ#YO-C z0y{}WK~#9!?3X)e6j2n0zq1=3V01+ht#msfAc%-)BQ`$3M$p2DVk2n`SooN;yTn4- znLC26k0PjzjfjYam81}?ZDM1QLXiY*OtV`=*er8w?n2Nty0V*DWDXo=?t^>3IhX&Q zGh${8vgH_X%K$UL3@`)ix0%^5-fIhjpb&=P=0EM*$%i^E7)8-&k|Y8oOS)G#8jV+R z9M`)AEEEd&MPwUrv?oVwX1nwG{L_3s|E%q~Tuz(KX0zK3s@3Wq5jiI!N2=B8;hq4N z%jLk#UMvA#Op@eGtycTq^#-|IO+>`M-yItpTh$Yhv|6o_nJsw02bD_YeYbE?6kQdO zgYCA6j1-GS*Au{riHVQEq?tA9_4;!_@CybTASs_%eXz$RdCnkwD^ESlL&hp}n@T$?7~EU-pIj&~Rv_0j#7nn>a} z9sxc8^T1hEopR0%1LHsh%&O{+)I{P{d>(k>yJmomz*gT*fZM8iEj2)|+Wo*KV3&t_ z2@C^Q{M0+DdO0<~WiId#DEa0+pd19j!ocKWRV@S8fkhwT0|QqqsOnANtv~v&Kac+y Y016sCsn^Dnga7~l07*qoM6N<$f>N= 1.7.1" + } +} diff --git a/htdocs/includes/jquery/plugins/select2/component.json b/htdocs/includes/jquery/plugins/select2/component.json new file mode 100644 index 00000000000..8bd3c020a29 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/component.json @@ -0,0 +1,66 @@ +{ + "name": "select2", + "repo": "ivaynberg/select2", + "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", + "version": "3.5.2", + "demo": "http://ivaynberg.github.io/select2/", + "keywords": [ + "jquery" + ], + "main": "select2.js", + "styles": [ + "select2.css", + "select2-bootstrap.css" + ], + "scripts": [ + "select2.js", + "select2_locale_ar.js", + "select2_locale_bg.js", + "select2_locale_ca.js", + "select2_locale_cs.js", + "select2_locale_da.js", + "select2_locale_de.js", + "select2_locale_el.js", + "select2_locale_es.js", + "select2_locale_et.js", + "select2_locale_eu.js", + "select2_locale_fa.js", + "select2_locale_fi.js", + "select2_locale_fr.js", + "select2_locale_gl.js", + "select2_locale_he.js", + "select2_locale_hr.js", + "select2_locale_hu.js", + "select2_locale_id.js", + "select2_locale_is.js", + "select2_locale_it.js", + "select2_locale_ja.js", + "select2_locale_ka.js", + "select2_locale_ko.js", + "select2_locale_lt.js", + "select2_locale_lv.js", + "select2_locale_mk.js", + "select2_locale_ms.js", + "select2_locale_nl.js", + "select2_locale_no.js", + "select2_locale_pl.js", + "select2_locale_pt-BR.js", + "select2_locale_pt-PT.js", + "select2_locale_ro.js", + "select2_locale_ru.js", + "select2_locale_sk.js", + "select2_locale_sv.js", + "select2_locale_th.js", + "select2_locale_tr.js", + "select2_locale_uk.js", + "select2_locale_vi.js", + "select2_locale_zh-CN.js", + "select2_locale_zh-TW.js" + ], + "images": [ + "select2-spinner.gif", + "select2.png", + "select2x2.png" + ], + "license": "MIT" +} diff --git a/htdocs/includes/jquery/plugins/select2/composer.json b/htdocs/includes/jquery/plugins/select2/composer.json new file mode 100644 index 00000000000..cd2d26a2a98 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/composer.json @@ -0,0 +1,29 @@ +{ + "name": + "ivaynberg/select2", + "description": "Select2 is a jQuery based replacement for select boxes.", + "version": "3.5.2", + "type": "component", + "homepage": "http://ivaynberg.github.io/select2/", + "license": "Apache-2.0", + "require": { + "robloach/component-installer": "*", + "components/jquery": ">=1.7.1" + }, + "extra": { + "component": { + "scripts": [ + "select2.js" + ], + "files": [ + "select2.js", + "select2_locale_*.js", + "select2.css", + "select2-bootstrap.css", + "select2-spinner.gif", + "select2.png", + "select2x2.png" + ] + } + } +} diff --git a/htdocs/includes/jquery/plugins/select2/package.json b/htdocs/includes/jquery/plugins/select2/package.json new file mode 100644 index 00000000000..709cb1c66b4 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/package.json @@ -0,0 +1,20 @@ +{ + "name" : "Select2", + "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", + "homepage": "http://ivaynberg.github.io/select2", + "author": "Igor Vaynberg", + "repository": {"type": "git", "url": "git://github.com/ivaynberg/select2.git"}, + "main": "select2.js", + "version": "3.5.2", + "jspm": { + "main": "select2", + "files": ["select2.js", "select2.png", "select2.css", "select2-spinner.gif"], + "shim": { + "select2": { + "imports": ["jquery", "./select2.css!"], + "exports": "$" + } + }, + "buildConfig": { "uglify": true } + } +} diff --git a/htdocs/includes/jquery/plugins/select2/release.sh b/htdocs/includes/jquery/plugins/select2/release.sh new file mode 100644 index 00000000000..3b63f96621e --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/release.sh @@ -0,0 +1,79 @@ +#!/bin/bash +set -e + +echo -n "Enter the version for this release: " + +read ver + +if [ ! $ver ]; then + echo "Invalid version." + exit +fi + +name="select2" +js="$name.js" +mini="$name.min.js" +css="$name.css" +release="$name-$ver" +tag="$ver" +branch="build-$ver" +curbranch=`git branch | grep "*" | sed "s/* //"` +timestamp=$(date) +tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g" +remote="origin" + +echo "Pulling from origin" + +git pull + +echo "Updating Version Identifiers" + +sed -E -e "s/\"version\": \"([0-9\.]+)\",/\"version\": \"$ver\",/g" -i -- bower.json select2.jquery.json component.json composer.json package.json + +git add bower.json +git add select2.jquery.json +git add component.json +git add composer.json +git add package.json + +git commit -m "modified version identifiers in descriptors for release $ver" +git push + +git branch "$branch" +git checkout "$branch" + +echo "Tokenizing..." + +find . -name "$js" | xargs -I{} sed -e "$tokens" -i -- {} +find . -name "$css" | xargs -I{} sed -e "$tokens" -i -- {} + +sed -e "s/latest/$ver/g" -i -- bower.json + +git add "$js" +git add "$css" + +echo "Minifying..." + +echo "/*" > "$mini" +cat LICENSE | sed "$tokens" >> "$mini" +echo "*/" >> "$mini" + +curl -s \ + --data-urlencode "js_code@$js" \ + http://marijnhaverbeke.nl/uglifyjs \ + >> "$mini" + +git add "$mini" + +git commit -m "release $ver" + +echo "Tagging..." +git tag -a "$tag" -m "tagged version $ver" +git push "$remote" --tags + +echo "Cleaning Up..." + +git checkout "$curbranch" +git branch -D "$branch" + +echo "Done" diff --git a/htdocs/includes/jquery/plugins/select2/select2-bootstrap.css b/htdocs/includes/jquery/plugins/select2/select2-bootstrap.css new file mode 100644 index 00000000000..3b83f0a2297 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2-bootstrap.css @@ -0,0 +1,87 @@ +.form-control .select2-choice { + border: 0; + border-radius: 2px; +} + +.form-control .select2-choice .select2-arrow { + border-radius: 0 2px 2px 0; +} + +.form-control.select2-container { + height: auto !important; + padding: 0; +} + +.form-control.select2-container.select2-dropdown-open { + border-color: #5897FB; + border-radius: 3px 3px 0 0; +} + +.form-control .select2-container.select2-dropdown-open .select2-choices { + border-radius: 3px 3px 0 0; +} + +.form-control.select2-container .select2-choices { + border: 0 !important; + border-radius: 3px; +} + +.control-group.warning .select2-container .select2-choice, +.control-group.warning .select2-container .select2-choices, +.control-group.warning .select2-container-active .select2-choice, +.control-group.warning .select2-container-active .select2-choices, +.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.warning .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #C09853 !important; +} + +.control-group.warning .select2-container .select2-choice div { + border-left: 1px solid #C09853 !important; + background: #FCF8E3 !important; +} + +.control-group.error .select2-container .select2-choice, +.control-group.error .select2-container .select2-choices, +.control-group.error .select2-container-active .select2-choice, +.control-group.error .select2-container-active .select2-choices, +.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.error .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #B94A48 !important; +} + +.control-group.error .select2-container .select2-choice div { + border-left: 1px solid #B94A48 !important; + background: #F2DEDE !important; +} + +.control-group.info .select2-container .select2-choice, +.control-group.info .select2-container .select2-choices, +.control-group.info .select2-container-active .select2-choice, +.control-group.info .select2-container-active .select2-choices, +.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.info .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #3A87AD !important; +} + +.control-group.info .select2-container .select2-choice div { + border-left: 1px solid #3A87AD !important; + background: #D9EDF7 !important; +} + +.control-group.success .select2-container .select2-choice, +.control-group.success .select2-container .select2-choices, +.control-group.success .select2-container-active .select2-choice, +.control-group.success .select2-container-active .select2-choices, +.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.success .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #468847 !important; +} + +.control-group.success .select2-container .select2-choice div { + border-left: 1px solid #468847 !important; + background: #DFF0D8 !important; +} diff --git a/htdocs/includes/jquery/plugins/select2/select2-spinner.gif b/htdocs/includes/jquery/plugins/select2/select2-spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b33f7e54f4e55b6b8774d86d96895db9af044b4 GIT binary patch literal 1849 zcma*odr(tX9tZI2z31lM+(&YVk%mZ}5P~KlG2s=WSbGzm0!x7^P##Mnh7t-jP!X0Q zk_SQ}Po-L1tlDK;6l?(>v)e5ZBQx4|Y-Q?nr@Px3?9h(3ZWr3^tj=`TP57gKr87N$ zp2wWee1GRRCwo_xahnw)5cxNPJbCg2L6DV|6`#+yw6v6!mDS$f9-JvFD^n;GQ&UrZ zzh5jCkByB101O60U0q#p_1BM>Cv-vP?&s4@g_((4_1L=L$(a91)0=J91Gas#R{McE znYG^9*0A5YZ>#;~+Wkn(W5B0^yELIYLP!K}mB~<)AM@1&nqekynuaEGqPrzoH|KodRXJy)%+w_fu3nE5>@Bd_b zqC$EQ;{c`T&?EsNO|igL9gC7Ygxv?aQUEXMq?~>wg{EyW;VcJ37CUF#HjrT=KQO_* zS>M9yydXk18D(+QDJ1>r);Lav_uYKp$T?4vr{Q$lTo&pKv^?(>L-)G2*lwH!Ah7k? z7oH<8h-(KTKt5V6$8gF)C7Io&P5=SjTh)=zV=E2EUhQZP##L8S{d%UK>>+y82>+FV+#^BzW7u3F)Bb>=lYQ%%j`F>ASe zo*cw@V#u6T`A2He;70mR(V&iV&-7{qP~=SRf&jm9-T{*ZeZ}$rd0#6c&fLG^xJcf5 z+p<`wJYgW+_s*V{uI$nMB;%8`S_3>PfGOj3Rq}@Cx^+j?rk92fANSFDBYnOqQ>Vdj z)(|$AhP4t&Lb=Gvo2#3Gl%9<=Gv`Mz?Po@P4iLF!x}GUWJICDlFk-hS^Whyh7x~VH z@0vD1>HYD4&e+~yzS*-sFR{9`{QEEZO1zg7>R&7cHts-6j!xHVdA8eI+ZlVzd%`es zJT@$#GX(gvCJ1oJN%yLBK}{V=V;seo;!w|Yte!W1%5qLNFWqvZW>h&IiH+oPT=b@E zPhGzv5=(Un*X>v`>%8h_nj^NdYcE6NHS_ifkCV$*D)Tqrbu`s;<=t<4 zAHNqNV?6(g<1PY-w@#I-WYFViz?9TrkMr)u0g`O`u|>T;k|2sV*YF^punvT;$SuTy{j3Gv)yqD!R_CF>yR)MzmmYS5v+~R zXAdD%ng9?df;wd8GxR#%3O+gz};Vo;)sK%Bj-q>Oq%R7JU-KD?vYu>#2UjaDo z&8$>5xW~?KPD_#XFToU1hIb*VOMidUr6iYiO0N|i-7s`T8!cFT`rN!^1Pt78J93i6 z5HI1wIM$94m{3SLDvISDe6$ZG1;eq_D9RTaaC>=cO{@Bs>$IlPCPJJ$h$)-3vzNUQ6OsN#_zWxey!_9%hxwH2_dEJi=yY|1c7nDm2_Lm!Cof8-R_+9UkS zcBE(o47yE)oMR(Q=dp1a2wTX5KvvGyLqlWTa7V&!A*|w|)ax~1_~aJ0=_Lilg*0iQk7#ZD EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/htdocs/includes/jquery/plugins/select2/select2.css b/htdocs/includes/jquery/plugins/select2/select2.css new file mode 100644 index 00000000000..2d07a0343b0 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2.css @@ -0,0 +1,704 @@ +/* +Version: 3.5.2 Timestamp: Sat Nov 1 14:43:36 EDT 2014 +*/ +.select2-container { + margin: 0; + position: relative; + display: inline-block; + /* inline-block for ie7 */ + zoom: 1; + *display: inline; + vertical-align: middle; +} + +.select2-container, +.select2-drop, +.select2-search, +.select2-search input { + /* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + More Info : http://www.quirksmode.org/css/box.html + */ + -webkit-box-sizing: border-box; /* webkit */ + -moz-box-sizing: border-box; /* firefox */ + box-sizing: border-box; /* css3 */ +} + +.select2-container .select2-choice { + display: block; + height: 26px; + padding: 0 0 0 8px; + overflow: hidden; + position: relative; + + border: 1px solid #aaa; + white-space: nowrap; + line-height: 26px; + color: #444; + text-decoration: none; + + border-radius: 4px; + + background-clip: padding-box; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-color: #fff; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff)); + background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%); + background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0); + background-image: linear-gradient(to top, #eee 0%, #fff 50%); +} + +html[dir="rtl"] .select2-container .select2-choice { + padding: 0 8px 0 0; +} + +.select2-container.select2-drop-above .select2-choice { + border-bottom-color: #aaa; + + border-radius: 0 0 4px 4px; + + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff)); + background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%); + background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); + background-image: linear-gradient(to bottom, #eee 0%, #fff 90%); +} + +.select2-container.select2-allowclear .select2-choice .select2-chosen { + margin-right: 42px; +} + +.select2-container .select2-choice > .select2-chosen { + margin-right: 26px; + display: block; + overflow: hidden; + + white-space: nowrap; + + text-overflow: ellipsis; + float: none; + width: auto; +} + +html[dir="rtl"] .select2-container .select2-choice > .select2-chosen { + margin-left: 26px; + margin-right: 0; +} + +.select2-container .select2-choice abbr { + display: none; + width: 12px; + height: 12px; + position: absolute; + right: 24px; + top: 8px; + + font-size: 1px; + text-decoration: none; + + border: 0; + background: url('select2.png') right top no-repeat; + cursor: pointer; + outline: 0; +} + +.select2-container.select2-allowclear .select2-choice abbr { + display: inline-block; +} + +.select2-container .select2-choice abbr:hover { + background-position: right -11px; + cursor: pointer; +} + +.select2-drop-mask { + border: 0; + margin: 0; + padding: 0; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 9998; + /* styles required for IE to work */ + background-color: #fff; + filter: alpha(opacity=0); +} + +.select2-drop { + width: 100%; + margin-top: -1px; + position: absolute; + z-index: 9999; + top: 100%; + + background: #fff; + color: #000; + border: 1px solid #aaa; + border-top: 0; + + border-radius: 0 0 4px 4px; + + -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); + box-shadow: 0 4px 5px rgba(0, 0, 0, .15); +} + +.select2-drop.select2-drop-above { + margin-top: 1px; + border-top: 1px solid #aaa; + border-bottom: 0; + + border-radius: 4px 4px 0 0; + + -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); + box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); +} + +.select2-drop-active { + border: 1px solid #5897fb; + border-top: none; +} + +.select2-drop.select2-drop-above.select2-drop-active { + border-top: 1px solid #5897fb; +} + +.select2-drop-auto-width { + border-top: 1px solid #aaa; + width: auto; +} + +.select2-drop-auto-width .select2-search { + padding-top: 4px; +} + +.select2-container .select2-choice .select2-arrow { + display: inline-block; + width: 18px; + height: 100%; + position: absolute; + right: 0; + top: 0; + + border-left: 1px solid #aaa; + border-radius: 0 4px 4px 0; + + background-clip: padding-box; + + background: #ccc; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee)); + background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%); + background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); + background-image: linear-gradient(to top, #ccc 0%, #eee 60%); +} + +html[dir="rtl"] .select2-container .select2-choice .select2-arrow { + left: 0; + right: auto; + + border-left: none; + border-right: 1px solid #aaa; + border-radius: 4px 0 0 4px; +} + +.select2-container .select2-choice .select2-arrow b { + display: block; + width: 100%; + height: 100%; + background: url('select2.png') no-repeat 0 1px; +} + +html[dir="rtl"] .select2-container .select2-choice .select2-arrow b { + background-position: 2px 1px; +} + +.select2-search { + display: inline-block; + width: 100%; + min-height: 26px; + margin: 0; + padding-left: 4px; + padding-right: 4px; + + position: relative; + z-index: 10000; + + white-space: nowrap; +} + +.select2-search input { + width: 100%; + height: auto !important; + min-height: 26px; + padding: 4px 20px 4px 5px; + margin: 0; + + outline: 0; + font-family: sans-serif; + font-size: 1em; + + border: 1px solid #aaa; + border-radius: 0; + + -webkit-box-shadow: none; + box-shadow: none; + + background: #fff url('select2.png') no-repeat 100% -22px; + background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; +} + +html[dir="rtl"] .select2-search input { + padding: 4px 5px 4px 20px; + + background: #fff url('select2.png') no-repeat -37px -22px; + background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; +} + +.select2-drop.select2-drop-above .select2-search input { + margin-top: 4px; +} + +.select2-search input.select2-active { + background: #fff url('select2-spinner.gif') no-repeat 100%; + background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; +} + +.select2-container-active .select2-choice, +.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); + box-shadow: 0 0 5px rgba(0, 0, 0, .3); +} + +.select2-dropdown-open .select2-choice { + border-bottom-color: transparent; + -webkit-box-shadow: 0 1px 0 #fff inset; + box-shadow: 0 1px 0 #fff inset; + + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + + background-color: #eee; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee)); + background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%); + background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(to top, #fff 0%, #eee 50%); +} + +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + border: 1px solid #5897fb; + border-top-color: transparent; + + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee)); + background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%); + background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(to bottom, #fff 0%, #eee 50%); +} + +.select2-dropdown-open .select2-choice .select2-arrow { + background: transparent; + border-left: none; + filter: none; +} +html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow { + border-right: none; +} + +.select2-dropdown-open .select2-choice .select2-arrow b { + background-position: -18px 1px; +} + +html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow b { + background-position: -16px 1px; +} + +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +/* results */ +.select2-results { + max-height: 200px; + padding: 0 0 0 4px; + margin: 4px 4px 4px 0; + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +html[dir="rtl"] .select2-results { + padding: 0 4px 0 0; + margin: 4px 0 4px 4px; +} + +.select2-results ul.select2-result-sub { + margin: 0; + padding-left: 0; +} + +.select2-results li { + list-style: none; + display: list-item; + background-image: none; +} + +.select2-results li.select2-result-with-children > .select2-result-label { + font-weight: bold; +} + +.select2-results .select2-result-label { + padding: 3px 7px 4px; + margin: 0; + cursor: pointer; + + min-height: 1em; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.select2-results-dept-1 .select2-result-label { padding-left: 20px } +.select2-results-dept-2 .select2-result-label { padding-left: 40px } +.select2-results-dept-3 .select2-result-label { padding-left: 60px } +.select2-results-dept-4 .select2-result-label { padding-left: 80px } +.select2-results-dept-5 .select2-result-label { padding-left: 100px } +.select2-results-dept-6 .select2-result-label { padding-left: 110px } +.select2-results-dept-7 .select2-result-label { padding-left: 120px } + +.select2-results .select2-highlighted { + background: #3875d7; + color: #fff; +} + +.select2-results li em { + background: #feffde; + font-style: normal; +} + +.select2-results .select2-highlighted em { + background: transparent; +} + +.select2-results .select2-highlighted ul { + background: #fff; + color: #000; +} + +.select2-results .select2-no-results, +.select2-results .select2-searching, +.select2-results .select2-ajax-error, +.select2-results .select2-selection-limit { + background: #f4f4f4; + display: list-item; + padding-left: 5px; +} + +/* +disabled look for disabled choices in the results dropdown +*/ +.select2-results .select2-disabled.select2-highlighted { + color: #666; + background: #f4f4f4; + display: list-item; + cursor: default; +} +.select2-results .select2-disabled { + background: #f4f4f4; + display: list-item; + cursor: default; +} + +.select2-results .select2-selected { + display: none; +} + +.select2-more-results.select2-active { + background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%; +} + +.select2-results .select2-ajax-error { + background: rgba(255, 50, 50, .2); +} + +.select2-more-results { + background: #f4f4f4; + display: list-item; +} + +/* disabled styles */ + +.select2-container.select2-container-disabled .select2-choice { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container.select2-container-disabled .select2-choice .select2-arrow { + background-color: #f4f4f4; + background-image: none; + border-left: 0; +} + +.select2-container.select2-container-disabled .select2-choice abbr { + display: none; +} + + +/* multiselect */ + +.select2-container-multi .select2-choices { + height: auto !important; + height: 1%; + margin: 0; + padding: 0 5px 0 0; + position: relative; + + border: 1px solid #aaa; + cursor: text; + overflow: hidden; + + background-color: #fff; + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff)); + background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%); + background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%); + background-image: linear-gradient(to bottom, #eee 1%, #fff 15%); +} + +html[dir="rtl"] .select2-container-multi .select2-choices { + padding: 0 0 0 5px; +} + +.select2-locked { + padding: 3px 5px 3px 5px !important; +} + +.select2-container-multi .select2-choices { + min-height: 26px; +} + +.select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); + box-shadow: 0 0 5px rgba(0, 0, 0, .3); +} +.select2-container-multi .select2-choices li { + float: left; + list-style: none; +} +html[dir="rtl"] .select2-container-multi .select2-choices li +{ + float: right; +} +.select2-container-multi .select2-choices .select2-search-field { + margin: 0; + padding: 0; + white-space: nowrap; +} + +.select2-container-multi .select2-choices .select2-search-field input { + padding: 5px; + margin: 1px 0; + + font-family: sans-serif; + font-size: 100%; + color: #666; + outline: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent !important; +} + +.select2-container-multi .select2-choices .select2-search-field input.select2-active { + background: #fff url('select2-spinner.gif') no-repeat 100% !important; +} + +.select2-default { + color: #999 !important; +} + +.select2-container-multi .select2-choices .select2-search-choice { + padding: 3px 5px 3px 18px; + margin: 3px 0 3px 5px; + position: relative; + + line-height: 13px; + color: #333; + cursor: default; + border: 1px solid #aaaaaa; + + border-radius: 3px; + + -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); + + background-clip: padding-box; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-color: #e4e4e4; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee)); + background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); + background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); + background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); +} +html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice +{ + margin: 3px 5px 3px 0; + padding: 3px 18px 3px 5px; +} +.select2-container-multi .select2-choices .select2-search-choice .select2-chosen { + cursor: default; +} +.select2-container-multi .select2-choices .select2-search-choice-focus { + background: #d4d4d4; +} + +.select2-search-choice-close { + display: block; + width: 12px; + height: 13px; + position: absolute; + right: 3px; + top: 4px; + + font-size: 1px; + outline: none; + background: url('select2.png') right top no-repeat; +} +html[dir="rtl"] .select2-search-choice-close { + right: auto; + left: 3px; +} + +.select2-container-multi .select2-search-choice-close { + left: 3px; +} + +html[dir="rtl"] .select2-container-multi .select2-search-choice-close { + left: auto; + right: 2px; +} + +.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { + background-position: right -11px; +} +.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { + background-position: right -11px; +} + +/* disabled styles */ +.select2-container-multi.select2-container-disabled .select2-choices { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { + padding: 3px 5px 3px 5px; + border: 1px solid #ddd; + background-image: none; + background-color: #f4f4f4; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none; + background: none; +} +/* end multiselect */ + + +.select2-result-selectable .select2-match, +.select2-result-unselectable .select2-match { + text-decoration: underline; +} + +.select2-offscreen, .select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0px !important; + top: 0px !important; +} + +.select2-display-none { + display: none; +} + +.select2-measure-scrollbar { + position: absolute; + top: -10000px; + left: -10000px; + width: 100px; + height: 100px; + overflow: scroll; +} + +/* Retina-ize icons */ + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice .select2-arrow b { + background-image: url('select2x2.png') !important; + background-repeat: no-repeat !important; + background-size: 60px 40px !important; + } + + .select2-search input { + background-position: 100% -21px !important; + } +} diff --git a/htdocs/includes/jquery/plugins/select2/select2.jquery.json b/htdocs/includes/jquery/plugins/select2/select2.jquery.json new file mode 100644 index 00000000000..b005d8a2017 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2.jquery.json @@ -0,0 +1,36 @@ +{ + "name": "select2", + "title": "Select2", + "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", + "keywords": [ + "select", + "autocomplete", + "typeahead", + "dropdown", + "multiselect", + "tag", + "tagging" + ], + "version": "3.5.2", + "author": { + "name": "Igor Vaynberg", + "url": "https://github.com/ivaynberg" + }, + "licenses": [ + { + "type": "Apache", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + }, + { + "type": "GPL v2", + "url": "http://www.gnu.org/licenses/gpl-2.0.html" + } + ], + "bugs": "https://github.com/ivaynberg/select2/issues", + "homepage": "http://ivaynberg.github.com/select2", + "docs": "http://ivaynberg.github.com/select2/", + "download": "https://github.com/ivaynberg/select2/tags", + "dependencies": { + "jquery": ">=1.7.1" + } +} diff --git a/htdocs/includes/jquery/plugins/select2/select2.js b/htdocs/includes/jquery/plugins/select2/select2.js new file mode 100644 index 00000000000..7590b822953 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2.js @@ -0,0 +1,3541 @@ +/* +Copyright 2012 Igor Vaynberg + +Version: 3.5.2 Timestamp: Sat Nov 1 14:43:36 EDT 2014 + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + + http://www.apache.org/licenses/LICENSE-2.0 + http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the +Apache License or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for +the specific language governing permissions and limitations under the Apache License and the GPL License. +*/ +(function ($) { + if(typeof $.fn.each2 == "undefined") { + $.extend($.fn, { + /* + * 4-10 times faster .each replacement + * use it carefully, as it overrides jQuery context of element on each iteration + */ + each2 : function (c) { + var j = $([0]), i = -1, l = this.length; + while ( + ++i < l + && (j.context = j[0] = this[i]) + && c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object + ); + return this; + } + }); + } +})(jQuery); + +(function ($, undefined) { + "use strict"; + /*global document, window, jQuery, console */ + + if (window.Select2 !== undefined) { + return; + } + + var AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer, + lastMousePosition={x:0,y:0}, $document, scrollBarDimensions, + + KEY = { + TAB: 9, + ENTER: 13, + ESC: 27, + SPACE: 32, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + SHIFT: 16, + CTRL: 17, + ALT: 18, + PAGE_UP: 33, + PAGE_DOWN: 34, + HOME: 36, + END: 35, + BACKSPACE: 8, + DELETE: 46, + isArrow: function (k) { + k = k.which ? k.which : k; + switch (k) { + case KEY.LEFT: + case KEY.RIGHT: + case KEY.UP: + case KEY.DOWN: + return true; + } + return false; + }, + isControl: function (e) { + var k = e.which; + switch (k) { + case KEY.SHIFT: + case KEY.CTRL: + case KEY.ALT: + return true; + } + + if (e.metaKey) return true; + + return false; + }, + isFunctionKey: function (k) { + k = k.which ? k.which : k; + return k >= 112 && k <= 123; + } + }, + MEASURE_SCROLLBAR_TEMPLATE = "
    ", + + DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z","\u0386":"\u0391","\u0388":"\u0395","\u0389":"\u0397","\u038A":"\u0399","\u03AA":"\u0399","\u038C":"\u039F","\u038E":"\u03A5","\u03AB":"\u03A5","\u038F":"\u03A9","\u03AC":"\u03B1","\u03AD":"\u03B5","\u03AE":"\u03B7","\u03AF":"\u03B9","\u03CA":"\u03B9","\u0390":"\u03B9","\u03CC":"\u03BF","\u03CD":"\u03C5","\u03CB":"\u03C5","\u03B0":"\u03C5","\u03C9":"\u03C9","\u03C2":"\u03C3"}; + + $document = $(document); + + nextUid=(function() { var counter=1; return function() { return counter++; }; }()); + + + function reinsertElement(element) { + var placeholder = $(document.createTextNode('')); + + element.before(placeholder); + placeholder.before(element); + placeholder.remove(); + } + + function stripDiacritics(str) { + // Used 'uni range + named function' from http://jsperf.com/diacritics/18 + function match(a) { + return DIACRITICS[a] || a; + } + + return str.replace(/[^\u0000-\u007E]/g, match); + } + + function indexOf(value, array) { + var i = 0, l = array.length; + for (; i < l; i = i + 1) { + if (equal(value, array[i])) return i; + } + return -1; + } + + function measureScrollbar () { + var $template = $( MEASURE_SCROLLBAR_TEMPLATE ); + $template.appendTo(document.body); + + var dim = { + width: $template.width() - $template[0].clientWidth, + height: $template.height() - $template[0].clientHeight + }; + $template.remove(); + + return dim; + } + + /** + * Compares equality of a and b + * @param a + * @param b + */ + function equal(a, b) { + if (a === b) return true; + if (a === undefined || b === undefined) return false; + if (a === null || b === null) return false; + // Check whether 'a' or 'b' is a string (primitive or object). + // The concatenation of an empty string (+'') converts its argument to a string's primitive. + if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object + if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object + return false; + } + + /** + * Splits the string into an array of values, transforming each value. An empty array is returned for nulls or empty + * strings + * @param string + * @param separator + */ + function splitVal(string, separator, transform) { + var val, i, l; + if (string === null || string.length < 1) return []; + val = string.split(separator); + for (i = 0, l = val.length; i < l; i = i + 1) val[i] = transform(val[i]); + return val; + } + + function getSideBorderPadding(element) { + return element.outerWidth(false) - element.width(); + } + + function installKeyUpChangeEvent(element) { + var key="keyup-change-value"; + element.on("keydown", function () { + if ($.data(element, key) === undefined) { + $.data(element, key, element.val()); + } + }); + element.on("keyup", function () { + var val= $.data(element, key); + if (val !== undefined && element.val() !== val) { + $.removeData(element, key); + element.trigger("keyup-change"); + } + }); + } + + + /** + * filters mouse events so an event is fired only if the mouse moved. + * + * filters out mouse events that occur when mouse is stationary but + * the elements under the pointer are scrolled. + */ + function installFilteredMouseMove(element) { + element.on("mousemove", function (e) { + var lastpos = lastMousePosition; + if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) { + $(e.target).trigger("mousemove-filtered", e); + } + }); + } + + /** + * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made + * within the last quietMillis milliseconds. + * + * @param quietMillis number of milliseconds to wait before invoking fn + * @param fn function to be debounced + * @param ctx object to be used as this reference within fn + * @return debounced version of fn + */ + function debounce(quietMillis, fn, ctx) { + ctx = ctx || undefined; + var timeout; + return function () { + var args = arguments; + window.clearTimeout(timeout); + timeout = window.setTimeout(function() { + fn.apply(ctx, args); + }, quietMillis); + }; + } + + function installDebouncedScroll(threshold, element) { + var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);}); + element.on("scroll", function (e) { + if (indexOf(e.target, element.get()) >= 0) notify(e); + }); + } + + function focus($el) { + if ($el[0] === document.activeElement) return; + + /* set the focus in a 0 timeout - that way the focus is set after the processing + of the current event has finished - which seems like the only reliable way + to set focus */ + window.setTimeout(function() { + var el=$el[0], pos=$el.val().length, range; + + $el.focus(); + + /* make sure el received focus so we do not error out when trying to manipulate the caret. + sometimes modals or others listeners may steal it after its set */ + var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0); + if (isVisible && el === document.activeElement) { + + /* after the focus is set move the caret to the end, necessary when we val() + just before setting focus */ + if(el.setSelectionRange) + { + el.setSelectionRange(pos, pos); + } + else if (el.createTextRange) { + range = el.createTextRange(); + range.collapse(false); + range.select(); + } + } + }, 0); + } + + function getCursorInfo(el) { + el = $(el)[0]; + var offset = 0; + var length = 0; + if ('selectionStart' in el) { + offset = el.selectionStart; + length = el.selectionEnd - offset; + } else if ('selection' in document) { + el.focus(); + var sel = document.selection.createRange(); + length = document.selection.createRange().text.length; + sel.moveStart('character', -el.value.length); + offset = sel.text.length - length; + } + return { offset: offset, length: length }; + } + + function killEvent(event) { + event.preventDefault(); + event.stopPropagation(); + } + function killEventImmediately(event) { + event.preventDefault(); + event.stopImmediatePropagation(); + } + + function measureTextWidth(e) { + if (!sizer){ + var style = e[0].currentStyle || window.getComputedStyle(e[0], null); + sizer = $(document.createElement("div")).css({ + position: "absolute", + left: "-10000px", + top: "-10000px", + display: "none", + fontSize: style.fontSize, + fontFamily: style.fontFamily, + fontStyle: style.fontStyle, + fontWeight: style.fontWeight, + letterSpacing: style.letterSpacing, + textTransform: style.textTransform, + whiteSpace: "nowrap" + }); + sizer.attr("class","select2-sizer"); + $(document.body).append(sizer); + } + sizer.text(e.val()); + return sizer.width(); + } + + function syncCssClasses(dest, src, adapter) { + var classes, replacements = [], adapted; + + classes = $.trim(dest.attr("class")); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each2(function() { + if (this.indexOf("select2-") === 0) { + replacements.push(this); + } + }); + } + + classes = $.trim(src.attr("class")); + + if (classes) { + classes = '' + classes; // for IE which returns object + + $(classes.split(/\s+/)).each2(function() { + if (this.indexOf("select2-") !== 0) { + adapted = adapter(this); + + if (adapted) { + replacements.push(adapted); + } + } + }); + } + + dest.attr("class", replacements.join(" ")); + } + + + function markMatch(text, term, markup, escapeMarkup) { + var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())), + tl=term.length; + + if (match<0) { + markup.push(escapeMarkup(text)); + return; + } + + markup.push(escapeMarkup(text.substring(0, match))); + markup.push(""); + markup.push(escapeMarkup(text.substring(match, match + tl))); + markup.push(""); + markup.push(escapeMarkup(text.substring(match + tl, text.length))); + } + + function defaultEscapeMarkup(markup) { + var replace_map = { + '\\': '\', + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + "/": '/' + }; + + return String(markup).replace(/[&<>"'\/\\]/g, function (match) { + return replace_map[match]; + }); + } + + /** + * Produces an ajax-based query function + * + * @param options object containing configuration parameters + * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax + * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax + * @param options.url url for the data + * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url. + * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified + * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often + * @param options.results a function(remoteData, pageNumber, query) that converts data returned form the remote request to the format expected by Select2. + * The expected format is an object containing the following keys: + * results array of objects that will be used as choices + * more (optional) boolean indicating whether there are more results available + * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true} + */ + function ajax(options) { + var timeout, // current scheduled but not yet executed request + handler = null, + quietMillis = options.quietMillis || 100, + ajaxUrl = options.url, + self = this; + + return function (query) { + window.clearTimeout(timeout); + timeout = window.setTimeout(function () { + var data = options.data, // ajax data function + url = ajaxUrl, // ajax url string or function + transport = options.transport || $.fn.select2.ajaxDefaults.transport, + // deprecated - to be removed in 4.0 - use params instead + deprecated = { + type: options.type || 'GET', // set type of request (GET or POST) + cache: options.cache || false, + jsonpCallback: options.jsonpCallback||undefined, + dataType: options.dataType||"json" + }, + params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated); + + data = data ? data.call(self, query.term, query.page, query.context) : null; + url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url; + + if (handler && typeof handler.abort === "function") { handler.abort(); } + + if (options.params) { + if ($.isFunction(options.params)) { + $.extend(params, options.params.call(self)); + } else { + $.extend(params, options.params); + } + } + + $.extend(params, { + url: url, + dataType: options.dataType, + data: data, + success: function (data) { + // TODO - replace query.page with query so users have access to term, page, etc. + // added query as third paramter to keep backwards compatibility + var results = options.results(data, query.page, query); + query.callback(results); + }, + error: function(jqXHR, textStatus, errorThrown){ + var results = { + hasError: true, + jqXHR: jqXHR, + textStatus: textStatus, + errorThrown: errorThrown + }; + + query.callback(results); + } + }); + handler = transport.call(self, params); + }, quietMillis); + }; + } + + /** + * Produces a query function that works with a local array + * + * @param options object containing configuration parameters. The options parameter can either be an array or an + * object. + * + * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys. + * + * If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain + * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text' + * key can either be a String in which case it is expected that each element in the 'data' array has a key with the + * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract + * the text. + */ + function local(options) { + var data = options, // data elements + dataText, + tmp, + text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search + + if ($.isArray(data)) { + tmp = data; + data = { results: tmp }; + } + + if ($.isFunction(data) === false) { + tmp = data; + data = function() { return tmp; }; + } + + var dataItem = data(); + if (dataItem.text) { + text = dataItem.text; + // if text is not a function we assume it to be a key name + if (!$.isFunction(text)) { + dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available + text = function (item) { return item[dataText]; }; + } + } + + return function (query) { + var t = query.term, filtered = { results: [] }, process; + if (t === "") { + query.callback(data()); + return; + } + + process = function(datum, collection) { + var group, attr; + datum = datum[0]; + if (datum.children) { + group = {}; + for (attr in datum) { + if (datum.hasOwnProperty(attr)) group[attr]=datum[attr]; + } + group.children=[]; + $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); }); + if (group.children.length || query.matcher(t, text(group), datum)) { + collection.push(group); + } + } else { + if (query.matcher(t, text(datum), datum)) { + collection.push(datum); + } + } + }; + + $(data().results).each2(function(i, datum) { process(datum, filtered.results); }); + query.callback(filtered); + }; + } + + // TODO javadoc + function tags(data) { + var isFunc = $.isFunction(data); + return function (query) { + var t = query.term, filtered = {results: []}; + var result = isFunc ? data(query) : data; + if ($.isArray(result)) { + $(result).each(function () { + var isObject = this.text !== undefined, + text = isObject ? this.text : this; + if (t === "" || query.matcher(t, text)) { + filtered.results.push(isObject ? this : {id: this, text: this}); + } + }); + query.callback(filtered); + } + }; + } + + /** + * Checks if the formatter function should be used. + * + * Throws an error if it is not a function. Returns true if it should be used, + * false if no formatting should be performed. + * + * @param formatter + */ + function checkFormatter(formatter, formatterName) { + if ($.isFunction(formatter)) return true; + if (!formatter) return false; + if (typeof(formatter) === 'string') return true; + throw new Error(formatterName +" must be a string, function, or falsy value"); + } + + /** + * Returns a given value + * If given a function, returns its output + * + * @param val string|function + * @param context value of "this" to be passed to function + * @returns {*} + */ + function evaluate(val, context) { + if ($.isFunction(val)) { + var args = Array.prototype.slice.call(arguments, 2); + return val.apply(context, args); + } + return val; + } + + function countResults(results) { + var count = 0; + $.each(results, function(i, item) { + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + }); + return count; + } + + /** + * Default tokenizer. This function uses breaks the input on substring match of any string from the + * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those + * two options have to be defined in order for the tokenizer to work. + * + * @param input text user has typed so far or pasted into the search field + * @param selection currently selected choices + * @param selectCallback function(choice) callback tho add the choice to selection + * @param opts select2's opts + * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value + */ + function defaultTokenizer(input, selection, selectCallback, opts) { + var original = input, // store the original so we can compare and know if we need to tell the search to update its text + dupe = false, // check for whether a token we extracted represents a duplicate selected choice + token, // token + index, // position at which the separator was found + i, l, // looping variables + separator; // the matched separator + + if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined; + + while (true) { + index = -1; + + for (i = 0, l = opts.tokenSeparators.length; i < l; i++) { + separator = opts.tokenSeparators[i]; + index = input.indexOf(separator); + if (index >= 0) break; + } + + if (index < 0) break; // did not find any token separator in the input string, bail + + token = input.substring(0, index); + input = input.substring(index + separator.length); + + if (token.length > 0) { + token = opts.createSearchChoice.call(this, token, selection); + if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) { + dupe = false; + for (i = 0, l = selection.length; i < l; i++) { + if (equal(opts.id(token), opts.id(selection[i]))) { + dupe = true; break; + } + } + + if (!dupe) selectCallback(token); + } + } + } + + if (original!==input) return input; + } + + function cleanupJQueryElements() { + var self = this; + + $.each(arguments, function (i, element) { + self[element].remove(); + self[element] = null; + }); + } + + /** + * Creates a new class + * + * @param superClass + * @param methods + */ + function clazz(SuperClass, methods) { + var constructor = function () {}; + constructor.prototype = new SuperClass; + constructor.prototype.constructor = constructor; + constructor.prototype.parent = SuperClass.prototype; + constructor.prototype = $.extend(constructor.prototype, methods); + return constructor; + } + + AbstractSelect2 = clazz(Object, { + + // abstract + bind: function (func) { + var self = this; + return function () { + func.apply(self, arguments); + }; + }, + + // abstract + init: function (opts) { + var results, search, resultsSelector = ".select2-results"; + + // prepare options + this.opts = opts = this.prepareOpts(opts); + + this.id=opts.id; + + // destroy if called on an existing component + if (opts.element.data("select2") !== undefined && + opts.element.data("select2") !== null) { + opts.element.data("select2").destroy(); + } + + this.container = this.createContainer(); + + this.liveRegion = $('.select2-hidden-accessible'); + if (this.liveRegion.length == 0) { + this.liveRegion = $("", { + role: "status", + "aria-live": "polite" + }) + .addClass("select2-hidden-accessible") + .appendTo(document.body); + } + + this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid()); + this.containerEventName= this.containerId + .replace(/([.])/g, '_') + .replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1'); + this.container.attr("id", this.containerId); + + this.container.attr("title", opts.element.attr("title")); + + this.body = $(document.body); + + syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass); + + this.container.attr("style", opts.element.attr("style")); + this.container.css(evaluate(opts.containerCss, this.opts.element)); + this.container.addClass(evaluate(opts.containerCssClass, this.opts.element)); + + this.elementTabIndex = this.opts.element.attr("tabindex"); + + // swap container for the element + this.opts.element + .data("select2", this) + .attr("tabindex", "-1") + .before(this.container) + .on("click.select2", killEvent); // do not leak click events + + this.container.data("select2", this); + + this.dropdown = this.container.find(".select2-drop"); + + syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass); + + this.dropdown.addClass(evaluate(opts.dropdownCssClass, this.opts.element)); + this.dropdown.data("select2", this); + this.dropdown.on("click", killEvent); + + this.results = results = this.container.find(resultsSelector); + this.search = search = this.container.find("input.select2-input"); + + this.queryCount = 0; + this.resultsPage = 0; + this.context = null; + + // initialize the container + this.initContainer(); + + this.container.on("click", killEvent); + + installFilteredMouseMove(this.results); + + this.dropdown.on("mousemove-filtered", resultsSelector, this.bind(this.highlightUnderEvent)); + this.dropdown.on("touchstart touchmove touchend", resultsSelector, this.bind(function (event) { + this._touchEvent = true; + this.highlightUnderEvent(event); + })); + this.dropdown.on("touchmove", resultsSelector, this.bind(this.touchMoved)); + this.dropdown.on("touchstart touchend", resultsSelector, this.bind(this.clearTouchMoved)); + + // Waiting for a click event on touch devices to select option and hide dropdown + // otherwise click will be triggered on an underlying element + this.dropdown.on('click', this.bind(function (event) { + if (this._touchEvent) { + this._touchEvent = false; + this.selectHighlighted(); + } + })); + + installDebouncedScroll(80, this.results); + this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded)); + + // do not propagate change event from the search field out of the component + $(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();}); + $(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();}); + + // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel + if ($.fn.mousewheel) { + results.mousewheel(function (e, delta, deltaX, deltaY) { + var top = results.scrollTop(); + if (deltaY > 0 && top - deltaY <= 0) { + results.scrollTop(0); + killEvent(e); + } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) { + results.scrollTop(results.get(0).scrollHeight - results.height()); + killEvent(e); + } + }); + } + + installKeyUpChangeEvent(search); + search.on("keyup-change input paste", this.bind(this.updateResults)); + search.on("focus", function () { search.addClass("select2-focused"); }); + search.on("blur", function () { search.removeClass("select2-focused");}); + + this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) { + if ($(e.target).closest(".select2-result-selectable").length > 0) { + this.highlightUnderEvent(e); + this.selectHighlighted(e); + } + })); + + // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening + // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's + // dom it will trigger the popup close, which is not what we want + // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal. + this.dropdown.on("click mouseup mousedown touchstart touchend focusin", function (e) { e.stopPropagation(); }); + + this.nextSearchTerm = undefined; + + if ($.isFunction(this.opts.initSelection)) { + // initialize selection based on the current value of the source element + this.initSelection(); + + // if the user has provided a function that can set selection based on the value of the source element + // we monitor the change event on the element and trigger it, allowing for two way synchronization + this.monitorSource(); + } + + if (opts.maximumInputLength !== null) { + this.search.attr("maxlength", opts.maximumInputLength); + } + + var disabled = opts.element.prop("disabled"); + if (disabled === undefined) disabled = false; + this.enable(!disabled); + + var readonly = opts.element.prop("readonly"); + if (readonly === undefined) readonly = false; + this.readonly(readonly); + + // Calculate size of scrollbar + scrollBarDimensions = scrollBarDimensions || measureScrollbar(); + + this.autofocus = opts.element.prop("autofocus"); + opts.element.prop("autofocus", false); + if (this.autofocus) this.focus(); + + this.search.attr("placeholder", opts.searchInputPlaceholder); + }, + + // abstract + destroy: function () { + var element=this.opts.element, select2 = element.data("select2"), self = this; + + this.close(); + + if (element.length && element[0].detachEvent && self._sync) { + element.each(function () { + if (self._sync) { + this.detachEvent("onpropertychange", self._sync); + } + }); + } + if (this.propertyObserver) { + this.propertyObserver.disconnect(); + this.propertyObserver = null; + } + this._sync = null; + + if (select2 !== undefined) { + select2.container.remove(); + select2.liveRegion.remove(); + select2.dropdown.remove(); + element + .show() + .removeData("select2") + .off(".select2") + .prop("autofocus", this.autofocus || false); + if (this.elementTabIndex) { + element.attr({tabindex: this.elementTabIndex}); + } else { + element.removeAttr("tabindex"); + } + element.show(); + } + + cleanupJQueryElements.call(this, + "container", + "liveRegion", + "dropdown", + "results", + "search" + ); + }, + + // abstract + optionToData: function(element) { + if (element.is("option")) { + return { + id:element.prop("value"), + text:element.text(), + element: element.get(), + css: element.attr("class"), + disabled: element.prop("disabled"), + locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true) + }; + } else if (element.is("optgroup")) { + return { + text:element.attr("label"), + children:[], + element: element.get(), + css: element.attr("class") + }; + } + }, + + // abstract + prepareOpts: function (opts) { + var element, select, idKey, ajaxUrl, self = this; + + element = opts.element; + + if (element.get(0).tagName.toLowerCase() === "select") { + this.select = select = opts.element; + } + + if (select) { + // these options are not allowed when attached to a select because they are picked up off the element itself + $.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () { + if (this in opts) { + throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a ", + "
    ", + " ", + "
      ", + "
    ", + "
    "].join("")); + return container; + }, + + // single + enableInterface: function() { + if (this.parent.enableInterface.apply(this, arguments)) { + this.focusser.prop("disabled", !this.isInterfaceEnabled()); + } + }, + + // single + opening: function () { + var el, range, len; + + if (this.opts.minimumResultsForSearch >= 0) { + this.showSearch(true); + } + + this.parent.opening.apply(this, arguments); + + if (this.showSearchInput !== false) { + // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range + // all other browsers handle this just fine + + this.search.val(this.focusser.val()); + } + if (this.opts.shouldFocusInput(this)) { + this.search.focus(); + // move the cursor to the end after focussing, otherwise it will be at the beginning and + // new text will appear *before* focusser.val() + el = this.search.get(0); + if (el.createTextRange) { + range = el.createTextRange(); + range.collapse(false); + range.select(); + } else if (el.setSelectionRange) { + len = this.search.val().length; + el.setSelectionRange(len, len); + } + } + + // initializes search's value with nextSearchTerm (if defined by user) + // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter + if(this.search.val() === "") { + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.search.select(); + } + } + + this.focusser.prop("disabled", true).val(""); + this.updateResults(true); + this.opts.element.trigger($.Event("select2-open")); + }, + + // single + close: function () { + if (!this.opened()) return; + this.parent.close.apply(this, arguments); + + this.focusser.prop("disabled", false); + + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + }, + + // single + focus: function () { + if (this.opened()) { + this.close(); + } else { + this.focusser.prop("disabled", false); + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + } + }, + + // single + isFocused: function () { + return this.container.hasClass("select2-container-active"); + }, + + // single + cancel: function () { + this.parent.cancel.apply(this, arguments); + this.focusser.prop("disabled", false); + + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + }, + + // single + destroy: function() { + $("label[for='" + this.focusser.attr('id') + "']") + .attr('for', this.opts.element.attr("id")); + this.parent.destroy.apply(this, arguments); + + cleanupJQueryElements.call(this, + "selection", + "focusser" + ); + }, + + // single + initContainer: function () { + + var selection, + container = this.container, + dropdown = this.dropdown, + idSuffix = nextUid(), + elementLabel; + + if (this.opts.minimumResultsForSearch < 0) { + this.showSearch(false); + } else { + this.showSearch(true); + } + + this.selection = selection = container.find(".select2-choice"); + + this.focusser = container.find(".select2-focusser"); + + // add aria associations + selection.find(".select2-chosen").attr("id", "select2-chosen-"+idSuffix); + this.focusser.attr("aria-labelledby", "select2-chosen-"+idSuffix); + this.results.attr("id", "select2-results-"+idSuffix); + this.search.attr("aria-owns", "select2-results-"+idSuffix); + + // rewrite labels from original element to focusser + this.focusser.attr("id", "s2id_autogen"+idSuffix); + + elementLabel = $("label[for='" + this.opts.element.attr("id") + "']"); + this.opts.element.focus(this.bind(function () { this.focus(); })); + + this.focusser.prev() + .text(elementLabel.text()) + .attr('for', this.focusser.attr('id')); + + // Ensure the original element retains an accessible name + var originalTitle = this.opts.element.attr("title"); + this.opts.element.attr("title", (originalTitle || elementLabel.text())); + + this.focusser.attr("tabindex", this.elementTabIndex); + + // write label for search field using the label from the focusser element + this.search.attr("id", this.focusser.attr('id') + '_search'); + + this.search.prev() + .text($("label[for='" + this.focusser.attr('id') + "']").text()) + .attr('for', this.search.attr('id')); + + this.search.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + // filter 229 keyCodes (input method editor is processing key input) + if (229 == e.keyCode) return; + + if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { + // prevent the page from scrolling + killEvent(e); + return; + } + + switch (e.which) { + case KEY.UP: + case KEY.DOWN: + this.moveHighlight((e.which === KEY.UP) ? -1 : 1); + killEvent(e); + return; + case KEY.ENTER: + this.selectHighlighted(); + killEvent(e); + return; + case KEY.TAB: + this.selectHighlighted({noFocus: true}); + return; + case KEY.ESC: + this.cancel(e); + killEvent(e); + return; + } + })); + + this.search.on("blur", this.bind(function(e) { + // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown. + // without this the search field loses focus which is annoying + if (document.activeElement === this.body.get(0)) { + window.setTimeout(this.bind(function() { + if (this.opened()) { + this.search.focus(); + } + }), 0); + } + })); + + this.focusser.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) { + return; + } + + if (this.opts.openOnEnter === false && e.which === KEY.ENTER) { + killEvent(e); + return; + } + + if (e.which == KEY.DOWN || e.which == KEY.UP + || (e.which == KEY.ENTER && this.opts.openOnEnter)) { + + if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return; + + this.open(); + killEvent(e); + return; + } + + if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) { + if (this.opts.allowClear) { + this.clear(); + } + killEvent(e); + return; + } + })); + + + installKeyUpChangeEvent(this.focusser); + this.focusser.on("keyup-change input", this.bind(function(e) { + if (this.opts.minimumResultsForSearch >= 0) { + e.stopPropagation(); + if (this.opened()) return; + this.open(); + } + })); + + selection.on("mousedown touchstart", "abbr", this.bind(function (e) { + if (!this.isInterfaceEnabled()) { + return; + } + + this.clear(); + killEventImmediately(e); + this.close(); + + if (this.selection) { + this.selection.focus(); + } + })); + + selection.on("mousedown touchstart", this.bind(function (e) { + // Prevent IE from generating a click event on the body + reinsertElement(selection); + + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + + if (this.opened()) { + this.close(); + } else if (this.isInterfaceEnabled()) { + this.open(); + } + + killEvent(e); + })); + + dropdown.on("mousedown touchstart", this.bind(function() { + if (this.opts.shouldFocusInput(this)) { + this.search.focus(); + } + })); + + selection.on("focus", this.bind(function(e) { + killEvent(e); + })); + + this.focusser.on("focus", this.bind(function(){ + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + })).on("blur", this.bind(function() { + if (!this.opened()) { + this.container.removeClass("select2-container-active"); + this.opts.element.trigger($.Event("select2-blur")); + } + })); + this.search.on("focus", this.bind(function(){ + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + })); + + this.initContainerWidth(); + this.opts.element.hide(); + this.setPlaceholder(); + + }, + + // single + clear: function(triggerChange) { + var data=this.selection.data("select2-data"); + if (data) { // guard against queued quick consecutive clicks + var evt = $.Event("select2-clearing"); + this.opts.element.trigger(evt); + if (evt.isDefaultPrevented()) { + return; + } + var placeholderOption = this.getPlaceholderOption(); + this.opts.element.val(placeholderOption ? placeholderOption.val() : ""); + this.selection.find(".select2-chosen").empty(); + this.selection.removeData("select2-data"); + this.setPlaceholder(); + + if (triggerChange !== false){ + this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); + this.triggerChange({removed:data}); + } + } + }, + + /** + * Sets selection based on source element's value + */ + // single + initSelection: function () { + var selected; + if (this.isPlaceholderOptionSelected()) { + this.updateSelection(null); + this.close(); + this.setPlaceholder(); + } else { + var self = this; + this.opts.initSelection.call(null, this.opts.element, function(selected){ + if (selected !== undefined && selected !== null) { + self.updateSelection(selected); + self.close(); + self.setPlaceholder(); + self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val()); + } + }); + } + }, + + isPlaceholderOptionSelected: function() { + var placeholderOption; + if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered + return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected")) + || (this.opts.element.val() === "") + || (this.opts.element.val() === undefined) + || (this.opts.element.val() === null); + }, + + // single + prepareOpts: function () { + var opts = this.parent.prepareOpts.apply(this, arguments), + self=this; + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + // install the selection initializer + opts.initSelection = function (element, callback) { + var selected = element.find("option").filter(function() { return this.selected && !this.disabled }); + // a single select box always has a value, no need to null check 'selected' + callback(self.optionToData(selected)); + }; + } else if ("data" in opts) { + // install default initSelection when applied to hidden input and data is local + opts.initSelection = opts.initSelection || function (element, callback) { + var id = element.val(); + //search in data by id, storing the actual matching item + var match = null; + opts.query({ + matcher: function(term, text, el){ + var is_match = equal(id, opts.id(el)); + if (is_match) { + match = el; + } + return is_match; + }, + callback: !$.isFunction(callback) ? $.noop : function() { + callback(match); + } + }); + }; + } + + return opts; + }, + + // single + getPlaceholder: function() { + // if a placeholder is specified on a single select without a valid placeholder option ignore it + if (this.select) { + if (this.getPlaceholderOption() === undefined) { + return undefined; + } + } + + return this.parent.getPlaceholder.apply(this, arguments); + }, + + // single + setPlaceholder: function () { + var placeholder = this.getPlaceholder(); + + if (this.isPlaceholderOptionSelected() && placeholder !== undefined) { + + // check for a placeholder option if attached to a select + if (this.select && this.getPlaceholderOption() === undefined) return; + + this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder)); + + this.selection.addClass("select2-default"); + + this.container.removeClass("select2-allowclear"); + } + }, + + // single + postprocessResults: function (data, initial, noHighlightUpdate) { + var selected = 0, self = this, showSearchInput = true; + + // find the selected element in the result list + + this.findHighlightableChoices().each2(function (i, elm) { + if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) { + selected = i; + return false; + } + }); + + // and highlight it + if (noHighlightUpdate !== false) { + if (initial === true && selected >= 0) { + this.highlight(selected); + } else { + this.highlight(0); + } + } + + // hide the search box if this is the first we got the results and there are enough of them for search + + if (initial === true) { + var min = this.opts.minimumResultsForSearch; + if (min >= 0) { + this.showSearch(countResults(data.results) >= min); + } + } + }, + + // single + showSearch: function(showSearchInput) { + if (this.showSearchInput === showSearchInput) return; + + this.showSearchInput = showSearchInput; + + this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput); + this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput); + //add "select2-with-searchbox" to the container if search box is shown + $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput); + }, + + // single + onSelect: function (data, options) { + + if (!this.triggerSelect(data)) { return; } + + var old = this.opts.element.val(), + oldData = this.data(); + + this.opts.element.val(this.id(data)); + this.updateSelection(data); + + this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data }); + + this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); + this.close(); + + if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + + if (!equal(old, this.id(data))) { + this.triggerChange({ added: data, removed: oldData }); + } + }, + + // single + updateSelection: function (data) { + + var container=this.selection.find(".select2-chosen"), formatted, cssClass; + + this.selection.data("select2-data", data); + + container.empty(); + if (data !== null) { + formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup); + } + if (formatted !== undefined) { + container.append(formatted); + } + cssClass=this.opts.formatSelectionCssClass(data, container); + if (cssClass !== undefined) { + container.addClass(cssClass); + } + + this.selection.removeClass("select2-default"); + + if (this.opts.allowClear && this.getPlaceholder() !== undefined) { + this.container.addClass("select2-allowclear"); + } + }, + + // single + val: function () { + var val, + triggerChange = false, + data = null, + self = this, + oldData = this.data(); + + if (arguments.length === 0) { + return this.opts.element.val(); + } + + val = arguments[0]; + + if (arguments.length > 1) { + triggerChange = arguments[1]; + } + + if (this.select) { + this.select + .val(val) + .find("option").filter(function() { return this.selected }).each2(function (i, elm) { + data = self.optionToData(elm); + return false; + }); + this.updateSelection(data); + this.setPlaceholder(); + if (triggerChange) { + this.triggerChange({added: data, removed:oldData}); + } + } else { + // val is an id. !val is true for [undefined,null,'',0] - 0 is legal + if (!val && val !== 0) { + this.clear(triggerChange); + return; + } + if (this.opts.initSelection === undefined) { + throw new Error("cannot call val() if initSelection() is not defined"); + } + this.opts.element.val(val); + this.opts.initSelection(this.opts.element, function(data){ + self.opts.element.val(!data ? "" : self.id(data)); + self.updateSelection(data); + self.setPlaceholder(); + if (triggerChange) { + self.triggerChange({added: data, removed:oldData}); + } + }); + } + }, + + // single + clearSearch: function () { + this.search.val(""); + this.focusser.val(""); + }, + + // single + data: function(value) { + var data, + triggerChange = false; + + if (arguments.length === 0) { + data = this.selection.data("select2-data"); + if (data == undefined) data = null; + return data; + } else { + if (arguments.length > 1) { + triggerChange = arguments[1]; + } + if (!value) { + this.clear(triggerChange); + } else { + data = this.data(); + this.opts.element.val(!value ? "" : this.id(value)); + this.updateSelection(value); + if (triggerChange) { + this.triggerChange({added: value, removed:data}); + } + } + } + } + }); + + MultiSelect2 = clazz(AbstractSelect2, { + + // multi + createContainer: function () { + var container = $(document.createElement("div")).attr({ + "class": "select2-container select2-container-multi" + }).html([ + "
      ", + "
    • ", + " ", + " ", + "
    • ", + "
    ", + "
    ", + "
      ", + "
    ", + "
    "].join("")); + return container; + }, + + // multi + prepareOpts: function () { + var opts = this.parent.prepareOpts.apply(this, arguments), + self=this; + + // TODO validate placeholder is a string if specified + if (opts.element.get(0).tagName.toLowerCase() === "select") { + // install the selection initializer + opts.initSelection = function (element, callback) { + + var data = []; + + element.find("option").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) { + data.push(self.optionToData(elm)); + }); + callback(data); + }; + } else if ("data" in opts) { + // install default initSelection when applied to hidden input and data is local + opts.initSelection = opts.initSelection || function (element, callback) { + var ids = splitVal(element.val(), opts.separator, opts.transformVal); + //search in data by array of ids, storing matching items in a list + var matches = []; + opts.query({ + matcher: function(term, text, el){ + var is_match = $.grep(ids, function(id) { + return equal(id, opts.id(el)); + }).length; + if (is_match) { + matches.push(el); + } + return is_match; + }, + callback: !$.isFunction(callback) ? $.noop : function() { + // reorder matches based on the order they appear in the ids array because right now + // they are in the order in which they appear in data array + var ordered = []; + for (var i = 0; i < ids.length; i++) { + var id = ids[i]; + for (var j = 0; j < matches.length; j++) { + var match = matches[j]; + if (equal(id, opts.id(match))) { + ordered.push(match); + matches.splice(j, 1); + break; + } + } + } + callback(ordered); + } + }); + }; + } + + return opts; + }, + + // multi + selectChoice: function (choice) { + + var selected = this.container.find(".select2-search-choice-focus"); + if (selected.length && choice && choice[0] == selected[0]) { + + } else { + if (selected.length) { + this.opts.element.trigger("choice-deselected", selected); + } + selected.removeClass("select2-search-choice-focus"); + if (choice && choice.length) { + this.close(); + choice.addClass("select2-search-choice-focus"); + this.opts.element.trigger("choice-selected", choice); + } + } + }, + + // multi + destroy: function() { + $("label[for='" + this.search.attr('id') + "']") + .attr('for', this.opts.element.attr("id")); + this.parent.destroy.apply(this, arguments); + + cleanupJQueryElements.call(this, + "searchContainer", + "selection" + ); + }, + + // multi + initContainer: function () { + + var selector = ".select2-choices", selection; + + this.searchContainer = this.container.find(".select2-search-field"); + this.selection = selection = this.container.find(selector); + + var _this = this; + this.selection.on("click", ".select2-container:not(.select2-container-disabled) .select2-search-choice:not(.select2-locked)", function (e) { + _this.search[0].focus(); + _this.selectChoice($(this)); + }); + + // rewrite labels from original element to focusser + this.search.attr("id", "s2id_autogen"+nextUid()); + + this.search.prev() + .text($("label[for='" + this.opts.element.attr("id") + "']").text()) + .attr('for', this.search.attr('id')); + this.opts.element.focus(this.bind(function () { this.focus(); })); + + this.search.on("input paste", this.bind(function() { + if (this.search.attr('placeholder') && this.search.val().length == 0) return; + if (!this.isInterfaceEnabled()) return; + if (!this.opened()) { + this.open(); + } + })); + + this.search.attr("tabindex", this.elementTabIndex); + + this.keydowns = 0; + this.search.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + ++this.keydowns; + var selected = selection.find(".select2-search-choice-focus"); + var prev = selected.prev(".select2-search-choice:not(.select2-locked)"); + var next = selected.next(".select2-search-choice:not(.select2-locked)"); + var pos = getCursorInfo(this.search); + + if (selected.length && + (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) { + var selectedChoice = selected; + if (e.which == KEY.LEFT && prev.length) { + selectedChoice = prev; + } + else if (e.which == KEY.RIGHT) { + selectedChoice = next.length ? next : null; + } + else if (e.which === KEY.BACKSPACE) { + if (this.unselect(selected.first())) { + this.search.width(10); + selectedChoice = prev.length ? prev : next; + } + } else if (e.which == KEY.DELETE) { + if (this.unselect(selected.first())) { + this.search.width(10); + selectedChoice = next.length ? next : null; + } + } else if (e.which == KEY.ENTER) { + selectedChoice = null; + } + + this.selectChoice(selectedChoice); + killEvent(e); + if (!selectedChoice || !selectedChoice.length) { + this.open(); + } + return; + } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1) + || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) { + + this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last()); + killEvent(e); + return; + } else { + this.selectChoice(null); + } + + if (this.opened()) { + switch (e.which) { + case KEY.UP: + case KEY.DOWN: + this.moveHighlight((e.which === KEY.UP) ? -1 : 1); + killEvent(e); + return; + case KEY.ENTER: + this.selectHighlighted(); + killEvent(e); + return; + case KEY.TAB: + this.selectHighlighted({noFocus:true}); + this.close(); + return; + case KEY.ESC: + this.cancel(e); + killEvent(e); + return; + } + } + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) + || e.which === KEY.BACKSPACE || e.which === KEY.ESC) { + return; + } + + if (e.which === KEY.ENTER) { + if (this.opts.openOnEnter === false) { + return; + } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) { + return; + } + } + + this.open(); + + if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { + // prevent the page from scrolling + killEvent(e); + } + + if (e.which === KEY.ENTER) { + // prevent form from being submitted + killEvent(e); + } + + })); + + this.search.on("keyup", this.bind(function (e) { + this.keydowns = 0; + this.resizeSearch(); + }) + ); + + this.search.on("blur", this.bind(function(e) { + this.container.removeClass("select2-container-active"); + this.search.removeClass("select2-focused"); + this.selectChoice(null); + if (!this.opened()) this.clearSearch(); + e.stopImmediatePropagation(); + this.opts.element.trigger($.Event("select2-blur")); + })); + + this.container.on("click", selector, this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + if ($(e.target).closest(".select2-search-choice").length > 0) { + // clicked inside a select2 search choice, do not open + return; + } + this.selectChoice(null); + this.clearPlaceholder(); + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.open(); + this.focusSearch(); + e.preventDefault(); + })); + + this.container.on("focus", selector, this.bind(function () { + if (!this.isInterfaceEnabled()) return; + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + this.clearPlaceholder(); + })); + + this.initContainerWidth(); + this.opts.element.hide(); + + // set the placeholder if necessary + this.clearSearch(); + }, + + // multi + enableInterface: function() { + if (this.parent.enableInterface.apply(this, arguments)) { + this.search.prop("disabled", !this.isInterfaceEnabled()); + } + }, + + // multi + initSelection: function () { + var data; + if (this.opts.element.val() === "" && this.opts.element.text() === "") { + this.updateSelection([]); + this.close(); + // set the placeholder if necessary + this.clearSearch(); + } + if (this.select || this.opts.element.val() !== "") { + var self = this; + this.opts.initSelection.call(null, this.opts.element, function(data){ + if (data !== undefined && data !== null) { + self.updateSelection(data); + self.close(); + // set the placeholder if necessary + self.clearSearch(); + } + }); + } + }, + + // multi + clearSearch: function () { + var placeholder = this.getPlaceholder(), + maxWidth = this.getMaxSearchWidth(); + + if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) { + this.search.val(placeholder).addClass("select2-default"); + // stretch the search box to full width of the container so as much of the placeholder is visible as possible + // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944 + this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width")); + } else { + this.search.val("").width(10); + } + }, + + // multi + clearPlaceholder: function () { + if (this.search.hasClass("select2-default")) { + this.search.val("").removeClass("select2-default"); + } + }, + + // multi + opening: function () { + this.clearPlaceholder(); // should be done before super so placeholder is not used to search + this.resizeSearch(); + + this.parent.opening.apply(this, arguments); + + this.focusSearch(); + + // initializes search's value with nextSearchTerm (if defined by user) + // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter + if(this.search.val() === "") { + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.search.select(); + } + } + + this.updateResults(true); + if (this.opts.shouldFocusInput(this)) { + this.search.focus(); + } + this.opts.element.trigger($.Event("select2-open")); + }, + + // multi + close: function () { + if (!this.opened()) return; + this.parent.close.apply(this, arguments); + }, + + // multi + focus: function () { + this.close(); + this.search.focus(); + }, + + // multi + isFocused: function () { + return this.search.hasClass("select2-focused"); + }, + + // multi + updateSelection: function (data) { + var ids = [], filtered = [], self = this; + + // filter out duplicates + $(data).each(function () { + if (indexOf(self.id(this), ids) < 0) { + ids.push(self.id(this)); + filtered.push(this); + } + }); + data = filtered; + + this.selection.find(".select2-search-choice").remove(); + $(data).each(function () { + self.addSelectedChoice(this); + }); + self.postprocessResults(); + }, + + // multi + tokenize: function() { + var input = this.search.val(); + input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts); + if (input != null && input != undefined) { + this.search.val(input); + if (input.length > 0) { + this.open(); + } + } + + }, + + // multi + onSelect: function (data, options) { + + if (!this.triggerSelect(data) || data.text === "") { return; } + + this.addSelectedChoice(data); + + this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data }); + + // keep track of the search's value before it gets cleared + this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); + + this.clearSearch(); + this.updateResults(); + + if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true); + + if (this.opts.closeOnSelect) { + this.close(); + this.search.width(10); + } else { + if (this.countSelectableResults()>0) { + this.search.width(10); + this.resizeSearch(); + if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) { + // if we reached max selection size repaint the results so choices + // are replaced with the max selection reached message + this.updateResults(true); + } else { + // initializes search's value with nextSearchTerm and update search result + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.updateResults(); + this.search.select(); + } + } + this.positionDropdown(); + } else { + // if nothing left to select close + this.close(); + this.search.width(10); + } + } + + // since its not possible to select an element that has already been + // added we do not need to check if this is a new element before firing change + this.triggerChange({ added: data }); + + if (!options || !options.noFocus) + this.focusSearch(); + }, + + // multi + cancel: function () { + this.close(); + this.focusSearch(); + }, + + addSelectedChoice: function (data) { + var enableChoice = !data.locked, + enabledItem = $( + "
  • " + + "
    " + + " " + + "
  • "), + disabledItem = $( + "
  • " + + "
    " + + "
  • "); + var choice = enableChoice ? enabledItem : disabledItem, + id = this.id(data), + val = this.getVal(), + formatted, + cssClass; + + formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup); + if (formatted != undefined) { + choice.find("div").replaceWith($("
    ").html(formatted)); + } + cssClass=this.opts.formatSelectionCssClass(data, choice.find("div")); + if (cssClass != undefined) { + choice.addClass(cssClass); + } + + if(enableChoice){ + choice.find(".select2-search-choice-close") + .on("mousedown", killEvent) + .on("click dblclick", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + this.unselect($(e.target)); + this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); + killEvent(e); + this.close(); + this.focusSearch(); + })).on("focus", this.bind(function () { + if (!this.isInterfaceEnabled()) return; + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + })); + } + + choice.data("select2-data", data); + choice.insertBefore(this.searchContainer); + + val.push(id); + this.setVal(val); + }, + + // multi + unselect: function (selected) { + var val = this.getVal(), + data, + index; + selected = selected.closest(".select2-search-choice"); + + if (selected.length === 0) { + throw "Invalid argument: " + selected + ". Must be .select2-search-choice"; + } + + data = selected.data("select2-data"); + + if (!data) { + // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued + // and invoked on an element already removed + return; + } + + var evt = $.Event("select2-removing"); + evt.val = this.id(data); + evt.choice = data; + this.opts.element.trigger(evt); + + if (evt.isDefaultPrevented()) { + return false; + } + + while((index = indexOf(this.id(data), val)) >= 0) { + val.splice(index, 1); + this.setVal(val); + if (this.select) this.postprocessResults(); + } + + selected.remove(); + + this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); + this.triggerChange({ removed: data }); + + return true; + }, + + // multi + postprocessResults: function (data, initial, noHighlightUpdate) { + var val = this.getVal(), + choices = this.results.find(".select2-result"), + compound = this.results.find(".select2-result-with-children"), + self = this; + + choices.each2(function (i, choice) { + var id = self.id(choice.data("select2-data")); + if (indexOf(id, val) >= 0) { + choice.addClass("select2-selected"); + // mark all children of the selected parent as selected + choice.find(".select2-result-selectable").addClass("select2-selected"); + } + }); + + compound.each2(function(i, choice) { + // hide an optgroup if it doesn't have any selectable children + if (!choice.is('.select2-result-selectable') + && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) { + choice.addClass("select2-selected"); + } + }); + + if (this.highlight() == -1 && noHighlightUpdate !== false && this.opts.closeOnSelect === true){ + self.highlight(0); + } + + //If all results are chosen render formatNoMatches + if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){ + if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) { + if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) { + this.results.append("
  • " + evaluate(self.opts.formatNoMatches, self.opts.element, self.search.val()) + "
  • "); + } + } + } + + }, + + // multi + getMaxSearchWidth: function() { + return this.selection.width() - getSideBorderPadding(this.search); + }, + + // multi + resizeSearch: function () { + var minimumWidth, left, maxWidth, containerLeft, searchWidth, + sideBorderPadding = getSideBorderPadding(this.search); + + minimumWidth = measureTextWidth(this.search) + 10; + + left = this.search.offset().left; + + maxWidth = this.selection.width(); + containerLeft = this.selection.offset().left; + + searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding; + + if (searchWidth < minimumWidth) { + searchWidth = maxWidth - sideBorderPadding; + } + + if (searchWidth < 40) { + searchWidth = maxWidth - sideBorderPadding; + } + + if (searchWidth <= 0) { + searchWidth = minimumWidth; + } + + this.search.width(Math.floor(searchWidth)); + }, + + // multi + getVal: function () { + var val; + if (this.select) { + val = this.select.val(); + return val === null ? [] : val; + } else { + val = this.opts.element.val(); + return splitVal(val, this.opts.separator, this.opts.transformVal); + } + }, + + // multi + setVal: function (val) { + var unique; + if (this.select) { + this.select.val(val); + } else { + unique = []; + // filter out duplicates + $(val).each(function () { + if (indexOf(this, unique) < 0) unique.push(this); + }); + this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator)); + } + }, + + // multi + buildChangeDetails: function (old, current) { + var current = current.slice(0), + old = old.slice(0); + + // remove intersection from each array + for (var i = 0; i < current.length; i++) { + for (var j = 0; j < old.length; j++) { + if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) { + current.splice(i, 1); + if(i>0){ + i--; + } + old.splice(j, 1); + j--; + } + } + } + + return {added: current, removed: old}; + }, + + + // multi + val: function (val, triggerChange) { + var oldData, self=this; + + if (arguments.length === 0) { + return this.getVal(); + } + + oldData=this.data(); + if (!oldData.length) oldData=[]; + + // val is an id. !val is true for [undefined,null,'',0] - 0 is legal + if (!val && val !== 0) { + this.opts.element.val(""); + this.updateSelection([]); + this.clearSearch(); + if (triggerChange) { + this.triggerChange({added: this.data(), removed: oldData}); + } + return; + } + + // val is a list of ids + this.setVal(val); + + if (this.select) { + this.opts.initSelection(this.select, this.bind(this.updateSelection)); + if (triggerChange) { + this.triggerChange(this.buildChangeDetails(oldData, this.data())); + } + } else { + if (this.opts.initSelection === undefined) { + throw new Error("val() cannot be called if initSelection() is not defined"); + } + + this.opts.initSelection(this.opts.element, function(data){ + var ids=$.map(data, self.id); + self.setVal(ids); + self.updateSelection(data); + self.clearSearch(); + if (triggerChange) { + self.triggerChange(self.buildChangeDetails(oldData, self.data())); + } + }); + } + this.clearSearch(); + }, + + // multi + onSortStart: function() { + if (this.select) { + throw new Error("Sorting of elements is not supported when attached to instead."); + } + + // collapse search field into 0 width so its container can be collapsed as well + this.search.width(0); + // hide the container + this.searchContainer.hide(); + }, + + // multi + onSortEnd:function() { + + var val=[], self=this; + + // show search and move it to the end of the list + this.searchContainer.show(); + // make sure the search container is the last item in the list + this.searchContainer.appendTo(this.searchContainer.parent()); + // since we collapsed the width in dragStarted, we resize it here + this.resizeSearch(); + + // update selection + this.selection.find(".select2-search-choice").each(function() { + val.push(self.opts.id($(this).data("select2-data"))); + }); + this.setVal(val); + this.triggerChange(); + }, + + // multi + data: function(values, triggerChange) { + var self=this, ids, old; + if (arguments.length === 0) { + return this.selection + .children(".select2-search-choice") + .map(function() { return $(this).data("select2-data"); }) + .get(); + } else { + old = this.data(); + if (!values) { values = []; } + ids = $.map(values, function(e) { return self.opts.id(e); }); + this.setVal(ids); + this.updateSelection(values); + this.clearSearch(); + if (triggerChange) { + this.triggerChange(this.buildChangeDetails(old, this.data())); + } + } + } + }); + + $.fn.select2 = function () { + + var args = Array.prototype.slice.call(arguments, 0), + opts, + select2, + method, value, multiple, + allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"], + valueMethods = ["opened", "isFocused", "container", "dropdown"], + propertyMethods = ["val", "data"], + methodsMap = { search: "externalSearch" }; + + this.each(function () { + if (args.length === 0 || typeof(args[0]) === "object") { + opts = args.length === 0 ? {} : $.extend({}, args[0]); + opts.element = $(this); + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + multiple = opts.element.prop("multiple"); + } else { + multiple = opts.multiple || false; + if ("tags" in opts) {opts.multiple = multiple = true;} + } + + select2 = multiple ? new window.Select2["class"].multi() : new window.Select2["class"].single(); + select2.init(opts); + } else if (typeof(args[0]) === "string") { + + if (indexOf(args[0], allowedMethods) < 0) { + throw "Unknown method: " + args[0]; + } + + value = undefined; + select2 = $(this).data("select2"); + if (select2 === undefined) return; + + method=args[0]; + + if (method === "container") { + value = select2.container; + } else if (method === "dropdown") { + value = select2.dropdown; + } else { + if (methodsMap[method]) method = methodsMap[method]; + + value = select2[method].apply(select2, args.slice(1)); + } + if (indexOf(args[0], valueMethods) >= 0 + || (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) { + return false; // abort the iteration, ready to return first matched value + } + } else { + throw "Invalid arguments to select2 plugin: " + args; + } + }); + return (value === undefined) ? this : value; + }; + + // plugin defaults, accessible to users + $.fn.select2.defaults = { + width: "copy", + loadMorePadding: 0, + closeOnSelect: true, + openOnEnter: true, + containerCss: {}, + dropdownCss: {}, + containerCssClass: "", + dropdownCssClass: "", + formatResult: function(result, container, query, escapeMarkup) { + var markup=[]; + markMatch(this.text(result), query.term, markup, escapeMarkup); + return markup.join(""); + }, + transformVal: function(val) { + return $.trim(val); + }, + formatSelection: function (data, container, escapeMarkup) { + return data ? escapeMarkup(this.text(data)) : undefined; + }, + sortResults: function (results, container, query) { + return results; + }, + formatResultCssClass: function(data) {return data.css;}, + formatSelectionCssClass: function(data, container) {return undefined;}, + minimumResultsForSearch: 0, + minimumInputLength: 0, + maximumInputLength: null, + maximumSelectionSize: 0, + id: function (e) { return e == undefined ? null : e.id; }, + text: function (e) { + if (e && this.data && this.data.text) { + if ($.isFunction(this.data.text)) { + return this.data.text(e); + } else { + return e[this.data.text]; + } + } else { + return e.text; + } + }, + matcher: function(term, text) { + return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0; + }, + separator: ",", + tokenSeparators: [], + tokenizer: defaultTokenizer, + escapeMarkup: defaultEscapeMarkup, + blurOnChange: false, + selectOnBlur: false, + adaptContainerCssClass: function(c) { return c; }, + adaptDropdownCssClass: function(c) { return null; }, + nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; }, + searchInputPlaceholder: '', + createSearchChoicePosition: 'top', + shouldFocusInput: function (instance) { + // Attempt to detect touch devices + var supportsTouchEvents = (('ontouchstart' in window) || + (navigator.msMaxTouchPoints > 0)); + + // Only devices which support touch events should be special cased + if (!supportsTouchEvents) { + return true; + } + + // Never focus the input if search is disabled + if (instance.opts.minimumResultsForSearch < 0) { + return false; + } + + return true; + } + }; + + $.fn.select2.locales = []; + + $.fn.select2.locales['en'] = { + formatMatches: function (matches) { if (matches === 1) { return "One result is available, press enter to select it."; } return matches + " results are available, use up and down arrow keys to navigate."; }, + formatNoMatches: function () { return "No matches found"; }, + formatAjaxError: function (jqXHR, textStatus, errorThrown) { return "Loading failed"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Loading more results…"; }, + formatSearching: function () { return "Searching…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['en']); + + $.fn.select2.ajaxDefaults = { + transport: $.ajax, + params: { + type: "GET", + cache: false, + dataType: "json" + } + }; + + // exports + window.Select2 = { + query: { + ajax: ajax, + local: local, + tags: tags + }, util: { + debounce: debounce, + markMatch: markMatch, + escapeMarkup: defaultEscapeMarkup, + stripDiacritics: stripDiacritics + }, "class": { + "abstract": AbstractSelect2, + "single": SingleSelect2, + "multi": MultiSelect2 + } + }; + +}(jQuery)); diff --git a/htdocs/includes/jquery/plugins/select2/select2.min.js b/htdocs/includes/jquery/plugins/select2/select2.min.js new file mode 100644 index 00000000000..b56419e2e79 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2.min.js @@ -0,0 +1,23 @@ +/* +Copyright 2014 Igor Vaynberg + +Version: 3.5.2 Timestamp: Sat Nov 1 14:43:36 EDT 2014 + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + +http://www.apache.org/licenses/LICENSE-2.0 +http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the Apache License +or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the Apache License and the GPL License for the specific language governing +permissions and limitations under the Apache License and the GPL License. +*/ +!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++dc;c+=1)if(r(a,b[c]))return c;return-1}function q(){var b=a(l);b.appendTo(document.body);var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function r(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function s(a,b,c){var d,e,f;if(null===a||a.length<1)return[];for(d=a.split(b),e=0,f=d.length;f>e;e+=1)d[e]=c(d[e]);return d}function t(a){return a.outerWidth(!1)-a.width()}function u(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function v(c){c.on("mousemove",function(c){var d=h;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function w(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function x(a,b){var c=w(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){p(a.target,b.get())>=0&&c(a)})}function y(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus();var e=b.offsetWidth>0||b.offsetHeight>0;e&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function z(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function A(a){a.preventDefault(),a.stopPropagation()}function B(a){a.preventDefault(),a.stopImmediatePropagation()}function C(b){if(!g){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);g=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),g.attr("class","select2-sizer"),a(document.body).append(g)}return g.text(b.val()),g.width()}function D(b,c,d){var e,g,f=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(g))})),b.attr("class",f.join(" "))}function E(a,b,c,d){var e=o(a.toUpperCase()).indexOf(o(b.toUpperCase())),f=b.length;return 0>e?(c.push(d(a)),void 0):(c.push(d(a.substring(0,e))),c.push(""),c.push(d(a.substring(e,e+f))),c.push(""),c.push(d(a.substring(e+f,a.length))),void 0)}function F(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function G(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&"function"==typeof e.abort&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page,i);i.callback(b)},error:function(a,b,c){var d={hasError:!0,jqXHR:a,textStatus:b,errorThrown:c};i.callback(d)}}),e=j.call(h,l)},f)}}function H(b){var d,e,c=b,f=function(a){return""+a.text};a.isArray(c)&&(e=c,c={results:e}),a.isFunction(c)===!1&&(e=c,c=function(){return e});var g=c();return g.text&&(f=g.text,a.isFunction(f)||(d=g.text,f=function(a){return a[d]})),function(b){var g,d=b.term,e={results:[]};return""===d?(b.callback(c()),void 0):(g=function(c,e){var h,i;if(c=c[0],c.children){h={};for(i in c)c.hasOwnProperty(i)&&(h[i]=c[i]);h.children=[],a(c.children).each2(function(a,b){g(b,h.children)}),(h.children.length||b.matcher(d,f(h),c))&&e.push(h)}else b.matcher(d,f(c),c)&&e.push(c)},a(c().results).each2(function(a,b){g(b,e.results)}),b.callback(e),void 0)}}function I(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]},h=d?c(e):c;a.isArray(h)&&(a(h).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g))}}function J(b,c){if(a.isFunction(b))return!0;if(!b)return!1;if("string"==typeof b)return!0;throw new Error(c+" must be a string, function, or falsy value")}function K(b,c){if(a.isFunction(b)){var d=Array.prototype.slice.call(arguments,2);return b.apply(c,d)}return b}function L(b){var c=0;return a.each(b,function(a,b){b.children?c+=L(b.children):c++}),c}function M(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(r(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:void 0}function N(){var b=this;a.each(arguments,function(a,c){b[c].remove(),b[c]=null})}function O(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,i,j,h={x:0,y:0},k={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case k.LEFT:case k.RIGHT:case k.UP:case k.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case k.SHIFT:case k.CTRL:case k.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="
    ",m={"\u24b6":"A","\uff21":"A","\xc0":"A","\xc1":"A","\xc2":"A","\u1ea6":"A","\u1ea4":"A","\u1eaa":"A","\u1ea8":"A","\xc3":"A","\u0100":"A","\u0102":"A","\u1eb0":"A","\u1eae":"A","\u1eb4":"A","\u1eb2":"A","\u0226":"A","\u01e0":"A","\xc4":"A","\u01de":"A","\u1ea2":"A","\xc5":"A","\u01fa":"A","\u01cd":"A","\u0200":"A","\u0202":"A","\u1ea0":"A","\u1eac":"A","\u1eb6":"A","\u1e00":"A","\u0104":"A","\u023a":"A","\u2c6f":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u24b7":"B","\uff22":"B","\u1e02":"B","\u1e04":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24b8":"C","\uff23":"C","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0187":"C","\u023b":"C","\ua73e":"C","\u24b9":"D","\uff24":"D","\u1e0a":"D","\u010e":"D","\u1e0c":"D","\u1e10":"D","\u1e12":"D","\u1e0e":"D","\u0110":"D","\u018b":"D","\u018a":"D","\u0189":"D","\ua779":"D","\u01f1":"DZ","\u01c4":"DZ","\u01f2":"Dz","\u01c5":"Dz","\u24ba":"E","\uff25":"E","\xc8":"E","\xc9":"E","\xca":"E","\u1ec0":"E","\u1ebe":"E","\u1ec4":"E","\u1ec2":"E","\u1ebc":"E","\u0112":"E","\u1e14":"E","\u1e16":"E","\u0114":"E","\u0116":"E","\xcb":"E","\u1eba":"E","\u011a":"E","\u0204":"E","\u0206":"E","\u1eb8":"E","\u1ec6":"E","\u0228":"E","\u1e1c":"E","\u0118":"E","\u1e18":"E","\u1e1a":"E","\u0190":"E","\u018e":"E","\u24bb":"F","\uff26":"F","\u1e1e":"F","\u0191":"F","\ua77b":"F","\u24bc":"G","\uff27":"G","\u01f4":"G","\u011c":"G","\u1e20":"G","\u011e":"G","\u0120":"G","\u01e6":"G","\u0122":"G","\u01e4":"G","\u0193":"G","\ua7a0":"G","\ua77d":"G","\ua77e":"G","\u24bd":"H","\uff28":"H","\u0124":"H","\u1e22":"H","\u1e26":"H","\u021e":"H","\u1e24":"H","\u1e28":"H","\u1e2a":"H","\u0126":"H","\u2c67":"H","\u2c75":"H","\ua78d":"H","\u24be":"I","\uff29":"I","\xcc":"I","\xcd":"I","\xce":"I","\u0128":"I","\u012a":"I","\u012c":"I","\u0130":"I","\xcf":"I","\u1e2e":"I","\u1ec8":"I","\u01cf":"I","\u0208":"I","\u020a":"I","\u1eca":"I","\u012e":"I","\u1e2c":"I","\u0197":"I","\u24bf":"J","\uff2a":"J","\u0134":"J","\u0248":"J","\u24c0":"K","\uff2b":"K","\u1e30":"K","\u01e8":"K","\u1e32":"K","\u0136":"K","\u1e34":"K","\u0198":"K","\u2c69":"K","\ua740":"K","\ua742":"K","\ua744":"K","\ua7a2":"K","\u24c1":"L","\uff2c":"L","\u013f":"L","\u0139":"L","\u013d":"L","\u1e36":"L","\u1e38":"L","\u013b":"L","\u1e3c":"L","\u1e3a":"L","\u0141":"L","\u023d":"L","\u2c62":"L","\u2c60":"L","\ua748":"L","\ua746":"L","\ua780":"L","\u01c7":"LJ","\u01c8":"Lj","\u24c2":"M","\uff2d":"M","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u019c":"M","\u24c3":"N","\uff2e":"N","\u01f8":"N","\u0143":"N","\xd1":"N","\u1e44":"N","\u0147":"N","\u1e46":"N","\u0145":"N","\u1e4a":"N","\u1e48":"N","\u0220":"N","\u019d":"N","\ua790":"N","\ua7a4":"N","\u01ca":"NJ","\u01cb":"Nj","\u24c4":"O","\uff2f":"O","\xd2":"O","\xd3":"O","\xd4":"O","\u1ed2":"O","\u1ed0":"O","\u1ed6":"O","\u1ed4":"O","\xd5":"O","\u1e4c":"O","\u022c":"O","\u1e4e":"O","\u014c":"O","\u1e50":"O","\u1e52":"O","\u014e":"O","\u022e":"O","\u0230":"O","\xd6":"O","\u022a":"O","\u1ece":"O","\u0150":"O","\u01d1":"O","\u020c":"O","\u020e":"O","\u01a0":"O","\u1edc":"O","\u1eda":"O","\u1ee0":"O","\u1ede":"O","\u1ee2":"O","\u1ecc":"O","\u1ed8":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\u0186":"O","\u019f":"O","\ua74a":"O","\ua74c":"O","\u01a2":"OI","\ua74e":"OO","\u0222":"OU","\u24c5":"P","\uff30":"P","\u1e54":"P","\u1e56":"P","\u01a4":"P","\u2c63":"P","\ua750":"P","\ua752":"P","\ua754":"P","\u24c6":"Q","\uff31":"Q","\ua756":"Q","\ua758":"Q","\u024a":"Q","\u24c7":"R","\uff32":"R","\u0154":"R","\u1e58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1e5a":"R","\u1e5c":"R","\u0156":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua75a":"R","\ua7a6":"R","\ua782":"R","\u24c8":"S","\uff33":"S","\u1e9e":"S","\u015a":"S","\u1e64":"S","\u015c":"S","\u1e60":"S","\u0160":"S","\u1e66":"S","\u1e62":"S","\u1e68":"S","\u0218":"S","\u015e":"S","\u2c7e":"S","\ua7a8":"S","\ua784":"S","\u24c9":"T","\uff34":"T","\u1e6a":"T","\u0164":"T","\u1e6c":"T","\u021a":"T","\u0162":"T","\u1e70":"T","\u1e6e":"T","\u0166":"T","\u01ac":"T","\u01ae":"T","\u023e":"T","\ua786":"T","\ua728":"TZ","\u24ca":"U","\uff35":"U","\xd9":"U","\xda":"U","\xdb":"U","\u0168":"U","\u1e78":"U","\u016a":"U","\u1e7a":"U","\u016c":"U","\xdc":"U","\u01db":"U","\u01d7":"U","\u01d5":"U","\u01d9":"U","\u1ee6":"U","\u016e":"U","\u0170":"U","\u01d3":"U","\u0214":"U","\u0216":"U","\u01af":"U","\u1eea":"U","\u1ee8":"U","\u1eee":"U","\u1eec":"U","\u1ef0":"U","\u1ee4":"U","\u1e72":"U","\u0172":"U","\u1e76":"U","\u1e74":"U","\u0244":"U","\u24cb":"V","\uff36":"V","\u1e7c":"V","\u1e7e":"V","\u01b2":"V","\ua75e":"V","\u0245":"V","\ua760":"VY","\u24cc":"W","\uff37":"W","\u1e80":"W","\u1e82":"W","\u0174":"W","\u1e86":"W","\u1e84":"W","\u1e88":"W","\u2c72":"W","\u24cd":"X","\uff38":"X","\u1e8a":"X","\u1e8c":"X","\u24ce":"Y","\uff39":"Y","\u1ef2":"Y","\xdd":"Y","\u0176":"Y","\u1ef8":"Y","\u0232":"Y","\u1e8e":"Y","\u0178":"Y","\u1ef6":"Y","\u1ef4":"Y","\u01b3":"Y","\u024e":"Y","\u1efe":"Y","\u24cf":"Z","\uff3a":"Z","\u0179":"Z","\u1e90":"Z","\u017b":"Z","\u017d":"Z","\u1e92":"Z","\u1e94":"Z","\u01b5":"Z","\u0224":"Z","\u2c7f":"Z","\u2c6b":"Z","\ua762":"Z","\u24d0":"a","\uff41":"a","\u1e9a":"a","\xe0":"a","\xe1":"a","\xe2":"a","\u1ea7":"a","\u1ea5":"a","\u1eab":"a","\u1ea9":"a","\xe3":"a","\u0101":"a","\u0103":"a","\u1eb1":"a","\u1eaf":"a","\u1eb5":"a","\u1eb3":"a","\u0227":"a","\u01e1":"a","\xe4":"a","\u01df":"a","\u1ea3":"a","\xe5":"a","\u01fb":"a","\u01ce":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1ead":"a","\u1eb7":"a","\u1e01":"a","\u0105":"a","\u2c65":"a","\u0250":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u24d1":"b","\uff42":"b","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24d2":"c","\uff43":"c","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0188":"c","\u023c":"c","\ua73f":"c","\u2184":"c","\u24d3":"d","\uff44":"d","\u1e0b":"d","\u010f":"d","\u1e0d":"d","\u1e11":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u018c":"d","\u0256":"d","\u0257":"d","\ua77a":"d","\u01f3":"dz","\u01c6":"dz","\u24d4":"e","\uff45":"e","\xe8":"e","\xe9":"e","\xea":"e","\u1ec1":"e","\u1ebf":"e","\u1ec5":"e","\u1ec3":"e","\u1ebd":"e","\u0113":"e","\u1e15":"e","\u1e17":"e","\u0115":"e","\u0117":"e","\xeb":"e","\u1ebb":"e","\u011b":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u1e19":"e","\u1e1b":"e","\u0247":"e","\u025b":"e","\u01dd":"e","\u24d5":"f","\uff46":"f","\u1e1f":"f","\u0192":"f","\ua77c":"f","\u24d6":"g","\uff47":"g","\u01f5":"g","\u011d":"g","\u1e21":"g","\u011f":"g","\u0121":"g","\u01e7":"g","\u0123":"g","\u01e5":"g","\u0260":"g","\ua7a1":"g","\u1d79":"g","\ua77f":"g","\u24d7":"h","\uff48":"h","\u0125":"h","\u1e23":"h","\u1e27":"h","\u021f":"h","\u1e25":"h","\u1e29":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\u2c68":"h","\u2c76":"h","\u0265":"h","\u0195":"hv","\u24d8":"i","\uff49":"i","\xec":"i","\xed":"i","\xee":"i","\u0129":"i","\u012b":"i","\u012d":"i","\xef":"i","\u1e2f":"i","\u1ec9":"i","\u01d0":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u012f":"i","\u1e2d":"i","\u0268":"i","\u0131":"i","\u24d9":"j","\uff4a":"j","\u0135":"j","\u01f0":"j","\u0249":"j","\u24da":"k","\uff4b":"k","\u1e31":"k","\u01e9":"k","\u1e33":"k","\u0137":"k","\u1e35":"k","\u0199":"k","\u2c6a":"k","\ua741":"k","\ua743":"k","\ua745":"k","\ua7a3":"k","\u24db":"l","\uff4c":"l","\u0140":"l","\u013a":"l","\u013e":"l","\u1e37":"l","\u1e39":"l","\u013c":"l","\u1e3d":"l","\u1e3b":"l","\u017f":"l","\u0142":"l","\u019a":"l","\u026b":"l","\u2c61":"l","\ua749":"l","\ua781":"l","\ua747":"l","\u01c9":"lj","\u24dc":"m","\uff4d":"m","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u026f":"m","\u24dd":"n","\uff4e":"n","\u01f9":"n","\u0144":"n","\xf1":"n","\u1e45":"n","\u0148":"n","\u1e47":"n","\u0146":"n","\u1e4b":"n","\u1e49":"n","\u019e":"n","\u0272":"n","\u0149":"n","\ua791":"n","\ua7a5":"n","\u01cc":"nj","\u24de":"o","\uff4f":"o","\xf2":"o","\xf3":"o","\xf4":"o","\u1ed3":"o","\u1ed1":"o","\u1ed7":"o","\u1ed5":"o","\xf5":"o","\u1e4d":"o","\u022d":"o","\u1e4f":"o","\u014d":"o","\u1e51":"o","\u1e53":"o","\u014f":"o","\u022f":"o","\u0231":"o","\xf6":"o","\u022b":"o","\u1ecf":"o","\u0151":"o","\u01d2":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edd":"o","\u1edb":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\u0254":"o","\ua74b":"o","\ua74d":"o","\u0275":"o","\u01a3":"oi","\u0223":"ou","\ua74f":"oo","\u24df":"p","\uff50":"p","\u1e55":"p","\u1e57":"p","\u01a5":"p","\u1d7d":"p","\ua751":"p","\ua753":"p","\ua755":"p","\u24e0":"q","\uff51":"q","\u024b":"q","\ua757":"q","\ua759":"q","\u24e1":"r","\uff52":"r","\u0155":"r","\u1e59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u0157":"r","\u1e5f":"r","\u024d":"r","\u027d":"r","\ua75b":"r","\ua7a7":"r","\ua783":"r","\u24e2":"s","\uff53":"s","\xdf":"s","\u015b":"s","\u1e65":"s","\u015d":"s","\u1e61":"s","\u0161":"s","\u1e67":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u015f":"s","\u023f":"s","\ua7a9":"s","\ua785":"s","\u1e9b":"s","\u24e3":"t","\uff54":"t","\u1e6b":"t","\u1e97":"t","\u0165":"t","\u1e6d":"t","\u021b":"t","\u0163":"t","\u1e71":"t","\u1e6f":"t","\u0167":"t","\u01ad":"t","\u0288":"t","\u2c66":"t","\ua787":"t","\ua729":"tz","\u24e4":"u","\uff55":"u","\xf9":"u","\xfa":"u","\xfb":"u","\u0169":"u","\u1e79":"u","\u016b":"u","\u1e7b":"u","\u016d":"u","\xfc":"u","\u01dc":"u","\u01d8":"u","\u01d6":"u","\u01da":"u","\u1ee7":"u","\u016f":"u","\u0171":"u","\u01d4":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1eeb":"u","\u1ee9":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u0173":"u","\u1e77":"u","\u1e75":"u","\u0289":"u","\u24e5":"v","\uff56":"v","\u1e7d":"v","\u1e7f":"v","\u028b":"v","\ua75f":"v","\u028c":"v","\ua761":"vy","\u24e6":"w","\uff57":"w","\u1e81":"w","\u1e83":"w","\u0175":"w","\u1e87":"w","\u1e85":"w","\u1e98":"w","\u1e89":"w","\u2c73":"w","\u24e7":"x","\uff58":"x","\u1e8b":"x","\u1e8d":"x","\u24e8":"y","\uff59":"y","\u1ef3":"y","\xfd":"y","\u0177":"y","\u1ef9":"y","\u0233":"y","\u1e8f":"y","\xff":"y","\u1ef7":"y","\u1e99":"y","\u1ef5":"y","\u01b4":"y","\u024f":"y","\u1eff":"y","\u24e9":"z","\uff5a":"z","\u017a":"z","\u1e91":"z","\u017c":"z","\u017e":"z","\u1e93":"z","\u1e95":"z","\u01b6":"z","\u0225":"z","\u0240":"z","\u2c6c":"z","\ua763":"z","\u0386":"\u0391","\u0388":"\u0395","\u0389":"\u0397","\u038a":"\u0399","\u03aa":"\u0399","\u038c":"\u039f","\u038e":"\u03a5","\u03ab":"\u03a5","\u038f":"\u03a9","\u03ac":"\u03b1","\u03ad":"\u03b5","\u03ae":"\u03b7","\u03af":"\u03b9","\u03ca":"\u03b9","\u0390":"\u03b9","\u03cc":"\u03bf","\u03cd":"\u03c5","\u03cb":"\u03c5","\u03b0":"\u03c5","\u03c9":"\u03c9","\u03c2":"\u03c3"};i=a(document),f=function(){var a=1;return function(){return a++}}(),c=O(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,g=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=a(".select2-hidden-accessible"),0==this.liveRegion.length&&(this.liveRegion=a("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body)),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+f()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",c.element.attr("title")),this.body=a(document.body),D(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(K(c.containerCss,this.opts.element)),this.container.addClass(K(c.containerCssClass,this.opts.element)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",A),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),D(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(K(c.dropdownCssClass,this.opts.element)),this.dropdown.data("select2",this),this.dropdown.on("click",A),this.results=d=this.container.find(g),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",A),v(this.results),this.dropdown.on("mousemove-filtered",g,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",g,this.bind(function(a){this._touchEvent=!0,this.highlightUnderEvent(a)})),this.dropdown.on("touchmove",g,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",g,this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind(function(){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())})),x(80,this.results),this.dropdown.on("scroll-debounced",g,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),A(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),A(a))}),u(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",g,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",function(a){a.stopPropagation()}),this.nextSearchTerm=b,a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),j=j||q(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",c.searchInputPlaceholder)},destroy:function(){var a=this.opts.element,c=a.data("select2"),d=this;this.close(),a.length&&a[0].detachEvent&&d._sync&&a.each(function(){d._sync&&this.detachEvent("onpropertychange",d._sync)}),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),this._sync=null,c!==b&&(c.container.remove(),c.liveRegion.remove(),c.dropdown.remove(),a.show().removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show()),N.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:r(a.attr("locked"),"locked")||r(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,g,h,i=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
    "," ","
      ","
    ","
    "].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e))),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),N.call(this,"selection","focusser")},initContainer:function(){var b,g,c=this.container,d=this.dropdown,e=f();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=b=c.find(".select2-choice"),this.focusser=c.find(".select2-focusser"),b.find(".select2-chosen").attr("id","select2-chosen-"+e),this.focusser.attr("aria-labelledby","select2-chosen-"+e),this.results.attr("id","select2-results-"+e),this.search.attr("aria-owns","select2-results-"+e),this.focusser.attr("id","s2id_autogen"+e),g=a("label[for='"+this.opts.element.attr("id")+"']"),this.opts.element.focus(this.bind(function(){this.focus()})),this.focusser.prev().text(g.text()).attr("for",this.focusser.attr("id"));var h=this.opts.element.attr("title");this.opts.element.attr("title",h||g.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(a("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&229!=a.keyCode){if(a.which===k.PAGE_UP||a.which===k.PAGE_DOWN)return A(a),void 0;switch(a.which){case k.UP:case k.DOWN:return this.moveHighlight(a.which===k.UP?-1:1),A(a),void 0;case k.ENTER:return this.selectHighlighted(),A(a),void 0;case k.TAB:return this.selectHighlighted({noFocus:!0}),void 0;case k.ESC:return this.cancel(a),A(a),void 0}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==k.TAB&&!k.isControl(a)&&!k.isFunctionKey(a)&&a.which!==k.ESC){if(this.opts.openOnEnter===!1&&a.which===k.ENTER)return A(a),void 0;if(a.which==k.DOWN||a.which==k.UP||a.which==k.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),A(a),void 0}return a.which==k.DELETE||a.which==k.BACKSPACE?(this.opts.allowClear&&this.clear(),A(a),void 0):void 0}})),u(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown touchstart","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),B(a),this.close(),this.selection&&this.selection.focus())})),b.on("mousedown touchstart",this.bind(function(c){n(b),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),A(c)})),d.on("mousedown touchstart",this.bind(function(){this.opts.shouldFocusInput(this)&&this.search.focus()})),b.on("focus",this.bind(function(a){A(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.hide(),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder(),c.nextSearchTerm=c.opts.nextSearchTerm(a,c.search.val()))})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()===b?!1:(a=this.getPlaceholderOption())!==b&&a.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val()},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find("option").filter(function(){return this.selected&&!this.disabled});b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=r(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return r(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&(b===!0&&d>=0?this.highlight(d):this.highlight(0)),b===!0){var g=this.opts.minimumResultsForSearch;g>=0&&this.showSearch(L(a.results)>=g)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),r(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),null!==a&&(d=this.opts.formatSelection(a,c,this.opts.escapeMarkup)),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find("option").filter(function(){return this.selected}).each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),void 0;if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d),void 0)}}),e=O(c,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["
      ","
    • "," "," ","
    • ","
    ","
    ","
      ","
    ","
    "].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=s(c.val(),b.separator,b.transformVal),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return r(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;c0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",b,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.hide(),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){p(e.id(this),c)<0&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,c){this.triggerSelect(a)&&""!==a.text&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.clearSearch(),this.updateResults(),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),c&&c.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("
  • "),f=a("
  • "),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith(a("
    ").html(j)),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",A).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),A(b),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(b){var d,e,c=this.getVal();if(b=b.closest(".select2-search-choice"),0===b.length)throw"Invalid argument: "+b+". Must be .select2-search-choice";if(d=b.data("select2-data")){var f=a.Event("select2-removing");if(f.val=this.id(d),f.choice=d,this.opts.element.trigger(f),f.isDefaultPrevented())return!1;for(;(e=p(this.id(d),c))>=0;)c.splice(e,1),this.setVal(c),this.select&&this.postprocessResults();return b.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(d),choice:d}),this.triggerChange({removed:d}),!0}},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));p(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&this.opts.closeOnSelect===!0&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&J(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
  • "+K(g.opts.formatNoMatches,g.opts.element,g.search.val())+"
  • ")},getMaxSearchWidth:function(){return this.selection.width()-t(this.search)},resizeSearch:function(){var a,b,c,d,e,f=t(this.search);a=C(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),s(a,this.opts.separator,this.opts.transformVal))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){p(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c0&&c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),d&&this.triggerChange({added:this.data(),removed:e}),void 0;if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(f.buildChangeDetails(e,f.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var e,f,d=this;return 0===arguments.length?this.selection.children(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(f=this.data(),b||(b=[]),e=a.map(b,function(a){return d.opts.id(a)}),this.setVal(e),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(f,this.data())),void 0)}}),a.fn.select2=function(){var d,e,f,g,h,c=Array.prototype.slice.call(arguments,0),i=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],j=["opened","isFocused","container","dropdown"],k=["val","data"],l={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?h=d.element.prop("multiple"):(h=d.multiple||!1,"tags"in d&&(d.multiple=h=!0)),e=h?new window.Select2["class"].multi:new window.Select2["class"].single,e.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(p(c[0],i)<0)throw"Unknown method: "+c[0];if(g=b,e=a(this).data("select2"),e===b)return;if(f=c[0],"container"===f?g=e.container:"dropdown"===f?g=e.dropdown:(l[f]&&(f=l[f]),g=e[f].apply(e,c.slice(1))),p(c[0],j)>=0||p(c[0],k)>=0&&1==c.length)return!1}}),g===b?this:g},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return E(this.text(a),c.term,e,d),e.join("")},transformVal:function(b){return a.trim(b)},formatSelection:function(a,c,d){return a?d(this.text(a)):b},sortResults:function(a){return a},formatResultCssClass:function(a){return a.css},formatSelectionCssClass:function(){return b},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a==b?null:a.id},text:function(b){return b&&this.data&&this.data.text?a.isFunction(this.data.text)?this.data.text(b):b[this.data.text]:b.text +},matcher:function(a,b){return o(""+b).toUpperCase().indexOf(o(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:M,escapeMarkup:F,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(a){var b="ontouchstart"in window||navigator.msMaxTouchPoints>0;return b?a.opts.minimumResultsForSearch<0?!1:!0:!0}},a.fn.select2.locales=[],a.fn.select2.locales.en={formatMatches:function(a){return 1===a?"One result is available, press enter to select it.":a+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatAjaxError:function(){return"Loading failed"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" or more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results\u2026"},formatSearching:function(){return"Searching\u2026"}},a.extend(a.fn.select2.defaults,a.fn.select2.locales.en),a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:G,local:H,tags:I},util:{debounce:w,markMatch:E,escapeMarkup:F,stripDiacritics:o},"class":{"abstract":c,single:d,multi:e}}}}(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/select2/select2.png b/htdocs/includes/jquery/plugins/select2/select2.png new file mode 100644 index 0000000000000000000000000000000000000000..1d804ffb99699b9e030f1010314de0970b5a000d GIT binary patch literal 613 zcmV-r0-F7aP)#WY!I$JQV$)A5aAS1BM||2XVJl=+L1^1S1H% zM-&lx?NZpUrHhn>fk<>POqf2sh40}xxGZfc+t+#Eb(qHy9_3*1(U%t9t)QDnI#YAL(|ACV(>)>6WD-t!8tutHkdb^#3`HzoJG3A2@T`% zA|K@o*b!`R#(7)PWrMFn2))Ca3MR4(zaT`Zr61*kZK5NPnZwQszxh$fyv3?&4c>$q z2m=+yc0dRXRAsPDxF6sD;@rK4JGdR_``1S~o6Xi@2&aR6hcSrEp9HVRzEqVDqBn<1%hR=D4e1f^ra^A|34Cjc=Gny{F(o#MrvPYgZuTJOz(n)-F<| zj()qR;C={)N<0RRvDZ^@6ND+W*}gh-Lip(MDt!(zMSO)!j2j+*hxgzC-e3$@(O2p* zu;+gddm(cZwXTCLx*Ky4THOa*^b^F`woveIeCK^0aR|TJ00000NkvXXu0mjfA#WC6 literal 0 HcmV?d00001 diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ar.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ar.js new file mode 100644 index 00000000000..e991b726cff --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ar.js @@ -0,0 +1,19 @@ +/** + * Select2 Arabic translation. + * + * Author: Adel KEDJOUR + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['ar'] = { + formatNoMatches: function () { return "لم يتم العثور على مطابقات"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return "الرجاء إدخال حرف واحد على الأكثر"; } return n == 2 ? "الرجاء إدخال حرفين على الأكثر" : "الرجاء إدخال " + n + " على الأكثر"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return "الرجاء إدخال حرف واحد على الأقل"; } return n == 2 ? "الرجاء إدخال حرفين على الأقل" : "الرجاء إدخال " + n + " على الأقل "; }, + formatSelectionTooBig: function (limit) { if (limit == 1){ return "يمكنك أن تختار إختيار واحد فقط"; } return limit == 2 ? "يمكنك أن تختار إختيارين فقط" : "يمكنك أن تختار " + limit + " إختيارات فقط"; }, + formatLoadMore: function (pageNumber) { return "تحميل المزيد من النتائج…"; }, + formatSearching: function () { return "البحث…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ar']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_az.js b/htdocs/includes/jquery/plugins/select2/select2_locale_az.js new file mode 100644 index 00000000000..19fd95b7a5f --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_az.js @@ -0,0 +1,20 @@ +/** + * Select2 Azerbaijani translation. + * + * Author: Farhad Safarov + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['az'] = { + formatMatches: function (matches) { return matches + " nəticə mövcuddur, hərəkət etdirmək üçün yuxarı və aşağı düymələrindən istifadə edin."; }, + formatNoMatches: function () { return "Nəticə tapılmadı"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return n + " simvol daxil edin"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return n + " simvol silin"; }, + formatSelectionTooBig: function (limit) { return "Sadəcə " + limit + " element seçə bilərsiniz"; }, + formatLoadMore: function (pageNumber) { return "Daha çox nəticə yüklənir…"; }, + formatSearching: function () { return "Axtarılır…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['az']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_bg.js b/htdocs/includes/jquery/plugins/select2/select2_locale_bg.js new file mode 100644 index 00000000000..3283d0ae5d2 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_bg.js @@ -0,0 +1,20 @@ +/** + * Select2 Bulgarian translation. + * + * @author Lubomir Vikev + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['bg'] = { + formatNoMatches: function () { return "Няма намерени съвпадения"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Моля въведете още " + n + " символ" + (n > 1 ? "а" : ""); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Моля въведете с " + n + " по-малко символ" + (n > 1 ? "а" : ""); }, + formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit > 1 ? " избора" : " избор"); }, + formatLoadMore: function (pageNumber) { return "Зареждат се още…"; }, + formatSearching: function () { return "Търсене…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['bg']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ca.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ca.js new file mode 100644 index 00000000000..dbea39e930b --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ca.js @@ -0,0 +1,19 @@ +/** + * Select2 Catalan translation. + * + * Author: David Planella + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['ca'] = { + formatNoMatches: function () { return "No s'ha trobat cap coincidència"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; }, + formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats…"; }, + formatSearching: function () { return "S'està cercant…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ca']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_cs.js b/htdocs/includes/jquery/plugins/select2/select2_locale_cs.js new file mode 100644 index 00000000000..ef121856485 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_cs.js @@ -0,0 +1,51 @@ +/** + * Select2 Czech translation. + * + * Author: Michal Marek + * Author - sklonovani: David Vallner + */ +(function ($) { + "use strict"; + // use text for the numbers 2 through 4 + var smallNumbers = { + 2: function(masc) { return (masc ? "dva" : "dvě"); }, + 3: function() { return "tři"; }, + 4: function() { return "čtyři"; } + } + $.fn.select2.locales['cs'] = { + formatNoMatches: function () { return "Nenalezeny žádné položky"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n == 1) { + return "Prosím zadejte ještě jeden znak"; + } else if (n <= 4) { + return "Prosím zadejte ještě další "+smallNumbers[n](true)+" znaky"; + } else { + return "Prosím zadejte ještě dalších "+n+" znaků"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n == 1) { + return "Prosím zadejte o jeden znak méně"; + } else if (n <= 4) { + return "Prosím zadejte o "+smallNumbers[n](true)+" znaky méně"; + } else { + return "Prosím zadejte o "+n+" znaků méně"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit == 1) { + return "Můžete zvolit jen jednu položku"; + } else if (limit <= 4) { + return "Můžete zvolit maximálně "+smallNumbers[limit](false)+" položky"; + } else { + return "Můžete zvolit maximálně "+limit+" položek"; + } + }, + formatLoadMore: function (pageNumber) { return "Načítají se další výsledky…"; }, + formatSearching: function () { return "Vyhledávání…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['cs']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_da.js b/htdocs/includes/jquery/plugins/select2/select2_locale_da.js new file mode 100644 index 00000000000..702238b9a09 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_da.js @@ -0,0 +1,19 @@ +/** + * Select2 Danish translation. + * + * Author: Anders Jenbo + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['da'] = { + formatNoMatches: function () { return "Ingen resultater fundet"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; }, + formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); }, + formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; }, + formatSearching: function () { return "Søger…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['da']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_de.js b/htdocs/includes/jquery/plugins/select2/select2_locale_de.js new file mode 100644 index 00000000000..e27541720c2 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_de.js @@ -0,0 +1,18 @@ +/** + * Select2 German translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['de'] = { + formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; }, + formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; }, + formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse…"; }, + formatSearching: function () { return "Suche…"; }, + formatMatches: function (matches) { return matches + " Ergebnis " + (matches > 1 ? "se" : "") + " verfügbar, zum Navigieren die Hoch-/Runter-Pfeiltasten verwenden."; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['de']); +})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_el.js b/htdocs/includes/jquery/plugins/select2/select2_locale_el.js new file mode 100644 index 00000000000..d17459e1df3 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_el.js @@ -0,0 +1,19 @@ +/** + * Select2 Greek translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['el'] = { + formatNoMatches: function () { return "Δεν βρέθηκαν αποτελέσματα"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Παρακαλούμε εισάγετε " + n + " περισσότερο" + (n > 1 ? "υς" : "") + " χαρακτήρ" + (n > 1 ? "ες" : "α"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Παρακαλούμε διαγράψτε " + n + " χαρακτήρ" + (n > 1 ? "ες" : "α"); }, + formatSelectionTooBig: function (limit) { return "Μπορείτε να επιλέξετε μόνο " + limit + " αντικείμεν" + (limit > 1 ? "α" : "ο"); }, + formatLoadMore: function (pageNumber) { return "Φόρτωση περισσότερων…"; }, + formatSearching: function () { return "Αναζήτηση…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['el']); +})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_en.js.template b/htdocs/includes/jquery/plugins/select2/select2_locale_en.js.template new file mode 100644 index 00000000000..f758b110079 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_en.js.template @@ -0,0 +1,20 @@ +/** + * Select2 translation. + * + * Author: Your Name + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['en'] = { + formatMatches: function (matches) { if (matches === 1) { return "One result is available, press enter to select it."; } return matches + " results are available, use up and down arrow keys to navigate."; }, + formatNoMatches: function () { return "No matches found"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Loading more results…"; }, + formatSearching: function () { return "Searching…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['en']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_es.js b/htdocs/includes/jquery/plugins/select2/select2_locale_es.js new file mode 100644 index 00000000000..92a19861e40 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_es.js @@ -0,0 +1,19 @@ +/** + * Select2 Spanish translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['es'] = { + formatMatches: function (matches) { if (matches === 1) { return "Un resultado disponible, presione enter para seleccionarlo."; } return matches + " resultados disponibles, use las teclas de dirección para navegar."; }, + formatNoMatches: function () { return "No se encontraron resultados"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "ácter" : "acteres"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "ácter" : "acteres"); }, + formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Cargando más resultados…"; }, + formatSearching: function () { return "Buscando…"; }, + formatAjaxError: function() { return "La carga falló"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['es']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_et.js b/htdocs/includes/jquery/plugins/select2/select2_locale_et.js new file mode 100644 index 00000000000..4d69f55e3fb --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_et.js @@ -0,0 +1,19 @@ +/** + * Select2 Estonian translation. + * + * Author: Kuldar Kalvik + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['et'] = { + formatNoMatches: function () { return "Tulemused puuduvad"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; }, + formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; }, + formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; }, + formatSearching: function () { return "Otsin.."; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['et']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_eu.js b/htdocs/includes/jquery/plugins/select2/select2_locale_eu.js new file mode 100644 index 00000000000..67ae8d05ae5 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_eu.js @@ -0,0 +1,45 @@ +/** + * Select2 Basque translation. + * + * Author: Julen Ruiz Aizpuru + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['eu'] = { + formatNoMatches: function () { + return "Ez da bat datorrenik aurkitu"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n === 1) { + return "Idatzi karaktere bat gehiago"; + } else { + return "Idatzi " + n + " karaktere gehiago"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n === 1) { + return "Idatzi karaktere bat gutxiago"; + } else { + return "Idatzi " + n + " karaktere gutxiago"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit === 1 ) { + return "Elementu bakarra hauta dezakezu"; + } else { + return limit + " elementu hauta ditzakezu soilik"; + } + }, + formatLoadMore: function (pageNumber) { + return "Emaitza gehiago kargatzen…"; + }, + formatSearching: function () { + return "Bilatzen…"; + } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['eu']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_fa.js b/htdocs/includes/jquery/plugins/select2/select2_locale_fa.js new file mode 100644 index 00000000000..b3ffd8b7da6 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_fa.js @@ -0,0 +1,21 @@ +/** + * Select2 Persian translation. + * + * Author: Ali Choopan + * Author: Ebrahim Byagowi + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['fa'] = { + formatMatches: function (matches) { return matches + " نتیجه موجود است، کلیدهای جهت بالا و پایین را برای گشتن استفاده کنید."; }, + formatNoMatches: function () { return "نتیجه‌ای یافت نشد."; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "لطفاً " + n + " نویسه بیشتر وارد نمایید"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "لطفاً " + n + " نویسه را حذف کنید."; }, + formatSelectionTooBig: function (limit) { return "شما فقط می‌توانید " + limit + " مورد را انتخاب کنید"; }, + formatLoadMore: function (pageNumber) { return "در حال بارگیری موارد بیشتر…"; }, + formatSearching: function () { return "در حال جستجو…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['fa']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_fi.js b/htdocs/includes/jquery/plugins/select2/select2_locale_fi.js new file mode 100644 index 00000000000..6487fbdad35 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_fi.js @@ -0,0 +1,30 @@ +/** + * Select2 Finnish translation + */ +(function ($) { + "use strict"; + $.fn.select2.locales['fi'] = { + formatNoMatches: function () { + return "Ei tuloksia"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + return "Ole hyvä ja anna " + n + " merkkiä lisää"; + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + return "Ole hyvä ja anna " + n + " merkkiä vähemmän"; + }, + formatSelectionTooBig: function (limit) { + return "Voit valita ainoastaan " + limit + " kpl"; + }, + formatLoadMore: function (pageNumber) { + return "Ladataan lisää tuloksia…"; + }, + formatSearching: function () { + return "Etsitään…"; + } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['fi']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_fr.js b/htdocs/includes/jquery/plugins/select2/select2_locale_fr.js new file mode 100644 index 00000000000..d5485d6be76 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_fr.js @@ -0,0 +1,18 @@ +/** + * Select2 French translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['fr'] = { + formatMatches: function (matches) { return matches + " résultats sont disponibles, utilisez les flèches haut et bas pour naviguer."; }, + formatNoMatches: function () { return "Aucun résultat trouvé"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Saisissez " + n + " caractère" + (n == 1? "" : "s") + " supplémentaire" + (n == 1? "" : "s") ; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Supprimez " + n + " caractère" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires…"; }, + formatSearching: function () { return "Recherche en cours…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['fr']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_gl.js b/htdocs/includes/jquery/plugins/select2/select2_locale_gl.js new file mode 100644 index 00000000000..9335167da96 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_gl.js @@ -0,0 +1,45 @@ +/** + * Select2 Galician translation + * + * Author: Leandro Regueiro + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['gl'] = { + formatNoMatches: function () { + return "Non se atoparon resultados"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n === 1) { + return "Engada un carácter"; + } else { + return "Engada " + n + " caracteres"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n === 1) { + return "Elimine un carácter"; + } else { + return "Elimine " + n + " caracteres"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit === 1 ) { + return "Só pode seleccionar un elemento"; + } else { + return "Só pode seleccionar " + limit + " elementos"; + } + }, + formatLoadMore: function (pageNumber) { + return "Cargando máis resultados…"; + }, + formatSearching: function () { + return "Buscando…"; + } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['gl']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_he.js b/htdocs/includes/jquery/plugins/select2/select2_locale_he.js new file mode 100644 index 00000000000..789dcdcaaf2 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_he.js @@ -0,0 +1,19 @@ +/** +* Select2 Hebrew translation. +* +* Author: Yakir Sitbon +*/ +(function ($) { + "use strict"; + + $.fn.select2.locales['he'] = { + formatNoMatches: function () { return "לא נמצאו התאמות"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "נא להזין עוד " + n + " תווים נוספים"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "נא להזין פחות " + n + " תווים"; }, + formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטים"; }, + formatLoadMore: function (pageNumber) { return "טוען תוצאות נוספות…"; }, + formatSearching: function () { return "מחפש…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['he']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_hr.js b/htdocs/includes/jquery/plugins/select2/select2_locale_hr.js new file mode 100644 index 00000000000..ce8051c788e --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_hr.js @@ -0,0 +1,24 @@ +/** + * Select2 Croatian translation. + * + * @author Edi Modrić + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['hr'] = { + formatNoMatches: function () { return "Nema rezultata"; }, + formatInputTooShort: function (input, min) { return "Unesite još" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "Unesite" + character(input.length - max) + " manje"; }, + formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; }, + formatLoadMore: function (pageNumber) { return "Učitavanje rezultata…"; }, + formatSearching: function () { return "Pretraga…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['hr']); + + function character (n) { + return " " + n + " znak" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "a" : "" : "ova"); + } +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_hu.js b/htdocs/includes/jquery/plugins/select2/select2_locale_hu.js new file mode 100644 index 00000000000..f431f246360 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_hu.js @@ -0,0 +1,17 @@ +/** + * Select2 Hungarian translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['hu'] = { + formatNoMatches: function () { return "Nincs találat."; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " karakterrel több, mint kellene."; }, + formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; }, + formatLoadMore: function (pageNumber) { return "Töltés…"; }, + formatSearching: function () { return "Keresés…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['hu']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_id.js b/htdocs/includes/jquery/plugins/select2/select2_locale_id.js new file mode 100644 index 00000000000..e9c1fd9b974 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_id.js @@ -0,0 +1,19 @@ +/** + * Select2 Indonesian translation. + * + * Author: Ibrahim Yusuf + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['id'] = { + formatNoMatches: function () { return "Tidak ada data yang sesuai"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Mengambil data…"; }, + formatSearching: function () { return "Mencari…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['id']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_is.js b/htdocs/includes/jquery/plugins/select2/select2_locale_is.js new file mode 100644 index 00000000000..273f33de8c0 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_is.js @@ -0,0 +1,17 @@ +/** + * Select2 Icelandic translation. + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['is'] = { + formatNoMatches: function () { return "Ekkert fannst"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n > 1 ? "i" : "") + " í viðbót"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n > 1 ? "i" : ""); }, + formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; }, + formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður…"; }, + formatSearching: function () { return "Leita…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['is']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_it.js b/htdocs/includes/jquery/plugins/select2/select2_locale_it.js new file mode 100644 index 00000000000..6e2b8e23709 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_it.js @@ -0,0 +1,17 @@ +/** + * Select2 Italian translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['it'] = { + formatNoMatches: function () { return "Nessuna corrispondenza trovata"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; }, + formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); }, + formatLoadMore: function (pageNumber) { return "Caricamento in corso…"; }, + formatSearching: function () { return "Ricerca…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['it']); +})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ja.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ja.js new file mode 100644 index 00000000000..7dbd8d7ee86 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ja.js @@ -0,0 +1,17 @@ +/** + * Select2 Japanese translation. + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['ja'] = { + formatNoMatches: function () { return "該当なし"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れてください"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列が" + n + "文字長すぎます"; }, + formatSelectionTooBig: function (limit) { return "最多で" + limit + "項目までしか選択できません"; }, + formatLoadMore: function (pageNumber) { return "読込中・・・"; }, + formatSearching: function () { return "検索中・・・"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ja']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ka.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ka.js new file mode 100644 index 00000000000..6cbe1d8f31e --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ka.js @@ -0,0 +1,19 @@ +/** + * Select2 Georgian (Kartuli) translation. + * + * Author: Dimitri Kurashvili dimakura@gmail.com + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['ka'] = { + formatNoMatches: function () { return "ვერ მოიძებნა"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "გთხოვთ შეიყვანოთ კიდევ " + n + " სიმბოლო"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "გთხოვთ წაშალოთ " + n + " სიმბოლო"; }, + formatSelectionTooBig: function (limit) { return "თქვენ შეგიძლიათ მხოლოდ " + limit + " ჩანაწერის მონიშვნა"; }, + formatLoadMore: function (pageNumber) { return "შედეგის ჩატვირთვა…"; }, + formatSearching: function () { return "ძებნა…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ka']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ko.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ko.js new file mode 100644 index 00000000000..bf036e09e6e --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ko.js @@ -0,0 +1,19 @@ +/** + * Select2 Korean translation. + * + * @author Swen Mun + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['ko'] = { + formatNoMatches: function () { return "결과 없음"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"글자 더 입력해주세요."; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 깁니다. "+n+"글자 지워주세요."; }, + formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 선택하실 수 있습니다."; }, + formatLoadMore: function (pageNumber) { return "불러오는 중…"; }, + formatSearching: function () { return "검색 중…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ko']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_lt.js b/htdocs/includes/jquery/plugins/select2/select2_locale_lt.js new file mode 100644 index 00000000000..7d7040f72f1 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_lt.js @@ -0,0 +1,26 @@ +/** + * Select2 Lithuanian translation. + * + * @author CRONUS Karmalakas + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['lt'] = { + formatNoMatches: function () { return "Atitikmenų nerasta"; }, + formatInputTooShort: function (input, min) { return "Įrašykite dar" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "Pašalinkite" + character(input.length - max); }, + formatSelectionTooBig: function (limit) { + return "Jūs galite pasirinkti tik " + limit + " element" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? "ų" : limit%10 > 1 ? "us" : "ą"); + }, + formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų…"; }, + formatSearching: function () { return "Ieškoma…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['lt']); + + function character (n) { + return " " + n + " simbol" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? "ių" : n%10 > 1 ? "ius" : "į"); + } +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_lv.js b/htdocs/includes/jquery/plugins/select2/select2_locale_lv.js new file mode 100644 index 00000000000..4afc5b41c80 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_lv.js @@ -0,0 +1,19 @@ +/** + * Select2 Latvian translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['lv'] = { + formatNoMatches: function () { return "Sakritību nav"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Lūdzu ievadiet vēl " + n + " simbol" + (n == 11 ? "us" : n%10 == 1 ? "u" : "us"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Lūdzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : n%10 == 1 ? "u" : "iem") + " mazāk"; }, + formatSelectionTooBig: function (limit) { return "Jūs varat izvēlēties ne vairāk kā " + limit + " element" + (limit == 11 ? "us" : limit%10 == 1 ? "u" : "us"); }, + formatLoadMore: function (pageNumber) { return "Datu ielāde…"; }, + formatSearching: function () { return "Meklēšana…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['lv']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_mk.js b/htdocs/includes/jquery/plugins/select2/select2_locale_mk.js new file mode 100644 index 00000000000..8a51a9e0b3c --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_mk.js @@ -0,0 +1,19 @@ +/** + * Select2 Macedonian translation. + * + * Author: Marko Aleksic + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['mk'] = { + formatNoMatches: function () { return "Нема пронајдено совпаѓања"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внесете уште " + n + " карактер" + (n == 1 ? "" : "и"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внесете " + n + " помалку карактер" + (n == 1? "" : "и"); }, + formatSelectionTooBig: function (limit) { return "Можете да изберете само " + limit + " ставк" + (limit == 1 ? "а" : "и"); }, + formatLoadMore: function (pageNumber) { return "Вчитување резултати…"; }, + formatSearching: function () { return "Пребарување…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['mk']); +})(jQuery); \ No newline at end of file diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ms.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ms.js new file mode 100644 index 00000000000..46588d6d72c --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ms.js @@ -0,0 +1,19 @@ +/** + * Select2 Malay translation. + * + * Author: Kepoweran + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['ms'] = { + formatNoMatches: function () { return "Tiada padanan yang ditemui"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; }, + formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; }, + formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan…"; }, + formatSearching: function () { return "Mencari…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ms']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_nb.js b/htdocs/includes/jquery/plugins/select2/select2_locale_nb.js new file mode 100644 index 00000000000..cb5dfaeef22 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_nb.js @@ -0,0 +1,22 @@ +/** + * Select2 Norwegian Bokmål translation. + * + * Author: Torgeir Veimo + * Author: Bjørn Johansen + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['nb'] = { + formatMatches: function (matches) { if (matches === 1) { return "Ett resultat er tilgjengelig, trykk enter for å velge det."; } return matches + " resultater er tilgjengelig. Bruk piltastene opp og ned for å navigere."; }, + formatNoMatches: function () { return "Ingen treff"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; }, + formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; }, + formatLoadMore: function (pageNumber) { return "Laster flere resultater …"; }, + formatSearching: function () { return "Søker …"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['no']); +})(jQuery); + diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_nl.js b/htdocs/includes/jquery/plugins/select2/select2_locale_nl.js new file mode 100644 index 00000000000..985741ec20f --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_nl.js @@ -0,0 +1,17 @@ +/** + * Select2 Dutch translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['nl'] = { + formatNoMatches: function () { return "Geen resultaten gevonden"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul nog " + n + " karakter" + (n == 1? "" : "s") + " in"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Haal " + n + " karakter" + (n == 1? "" : "s") + " weg"; }, + formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; }, + formatLoadMore: function (pageNumber) { return "Meer resultaten laden…"; }, + formatSearching: function () { return "Zoeken…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['nl']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_pl.js b/htdocs/includes/jquery/plugins/select2/select2_locale_pl.js new file mode 100644 index 00000000000..87c26194131 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_pl.js @@ -0,0 +1,54 @@ +/** + * Select2 Polish translation. + * + * @author Jan Kondratowicz + * @author Uriy Efremochkin + * @author Michał Połtyn + * @author Damian Zajkowski + */ +(function($) { + "use strict"; + + $.fn.select2.locales['pl'] = { + formatNoMatches: function() { + return "Brak wyników"; + }, + formatInputTooShort: function(input, min) { + return "Wpisz co najmniej" + character(min - input.length, "znak", "i"); + }, + formatInputTooLong: function(input, max) { + return "Wpisana fraza jest za długa o" + character(input.length - max, "znak", "i"); + }, + formatSelectionTooBig: function(limit) { + return "Możesz zaznaczyć najwyżej" + character(limit, "element", "y"); + }, + formatLoadMore: function(pageNumber) { + return "Ładowanie wyników…"; + }, + formatSearching: function() { + return "Szukanie…"; + } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['pl']); + + function character(n, word, pluralSuffix) { + //Liczba pojedyncza - brak suffiksu + //jeden znak + //jeden element + var suffix = ''; + if (n > 1 && n < 5) { + //Liczaba mnoga ilość od 2 do 4 - własny suffiks + //Dwa znaki, trzy znaki, cztery znaki. + //Dwa elementy, trzy elementy, cztery elementy + suffix = pluralSuffix; + } else if (n == 0 || n >= 5) { + //Ilość 0 suffiks ów + //Liczaba mnoga w ilości 5 i więcej - suffiks ów (nie poprawny dla wszystkich wyrazów, np. 100 wiadomości) + //Zero znaków, Pięć znaków, sześć znaków, siedem znaków, osiem znaków. + //Zero elementów Pięć elementów, sześć elementów, siedem elementów, osiem elementów. + suffix = 'ów'; + } + return " " + n + " " + word + suffix; + } +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_pt-BR.js b/htdocs/includes/jquery/plugins/select2/select2_locale_pt-BR.js new file mode 100644 index 00000000000..51b037de580 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_pt-BR.js @@ -0,0 +1,18 @@ +/** + * Select2 Brazilian Portuguese translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['pt-BR'] = { + formatNoMatches: function () { return "Nenhum resultado encontrado"; }, + formatAjaxError: function () { return "Erro na busca"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Digite " + (min == 1 ? "" : "mais") + " " + n + " caracter" + (n == 1? "" : "es"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caracter" + (n == 1? "" : "es"); }, + formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Carregando mais resultados…"; }, + formatSearching: function () { return "Buscando…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-BR']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_pt-PT.js b/htdocs/includes/jquery/plugins/select2/select2_locale_pt-PT.js new file mode 100644 index 00000000000..ae55a4fc4ef --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_pt-PT.js @@ -0,0 +1,17 @@ +/** + * Select2 Portuguese (Portugal) translation + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['pt-PT'] = { + formatNoMatches: function () { return "Nenhum resultado encontrado"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, + formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "A carregar mais resultados…"; }, + formatSearching: function () { return "A pesquisar…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['pt-PT']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ro.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ro.js new file mode 100644 index 00000000000..21b0cf18186 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ro.js @@ -0,0 +1,17 @@ +/** + * Select2 Romanian translation. + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['ro'] = { + formatNoMatches: function () { return "Nu a fost găsit nimic"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceți incă " + n + " caracter" + (n == 1 ? "" : "e"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceți mai puțin de " + n + " caracter" + (n == 1? "" : "e"); }, + formatSelectionTooBig: function (limit) { return "Aveți voie să selectați cel mult " + limit + " element" + (limit == 1 ? "" : "e"); }, + formatLoadMore: function (pageNumber) { return "Se încarcă…"; }, + formatSearching: function () { return "Căutare…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ro']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_rs.js b/htdocs/includes/jquery/plugins/select2/select2_locale_rs.js new file mode 100644 index 00000000000..72c16389c9e --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_rs.js @@ -0,0 +1,19 @@ +/** + * Select2 Serbian translation. + * + * @author Limon Monte + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['rs'] = { + formatNoMatches: function () { return "Ništa nije pronađeno"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Ukucajte bar još " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Obrišite " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, + formatSelectionTooBig: function (limit) { return "Možete izabrati samo " + limit + " stavk" + (limit % 10 == 1 && limit % 100 != 11 ? "u" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? "e" : "i")); }, + formatLoadMore: function (pageNumber) { return "Preuzimanje još rezultata…"; }, + formatSearching: function () { return "Pretraga…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['rs']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ru.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ru.js new file mode 100644 index 00000000000..2a6c7702c42 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ru.js @@ -0,0 +1,23 @@ +/** + * Select2 Russian translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['ru'] = { + formatNoMatches: function () { return "Совпадений не найдено"; }, + formatInputTooShort: function (input, min) { return "Пожалуйста, введите еще хотя бы" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "Пожалуйста, введите на" + character(input.length - max) + " меньше"; }, + formatSelectionTooBig: function (limit) { return "Вы можете выбрать не более " + limit + " элемент" + (limit%10 == 1 && limit%100 != 11 ? "а" : "ов"); }, + formatLoadMore: function (pageNumber) { return "Загрузка данных…"; }, + formatSearching: function () { return "Поиск…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ru']); + + function character (n) { + return " " + n + " символ" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? "a" : "" : "ов"); + } +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_sk.js b/htdocs/includes/jquery/plugins/select2/select2_locale_sk.js new file mode 100644 index 00000000000..027530c9388 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_sk.js @@ -0,0 +1,50 @@ +/** + * Select2 Slovak translation. + * + * Author: David Vallner + */ +(function ($) { + "use strict"; + // use text for the numbers 2 through 4 + var smallNumbers = { + 2: function(masc) { return (masc ? "dva" : "dve"); }, + 3: function() { return "tri"; }, + 4: function() { return "štyri"; } + }; + $.fn.select2.locales['sk'] = { + formatNoMatches: function () { return "Nenašli sa žiadne položky"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n == 1) { + return "Prosím, zadajte ešte jeden znak"; + } else if (n <= 4) { + return "Prosím, zadajte ešte ďalšie "+smallNumbers[n](true)+" znaky"; + } else { + return "Prosím, zadajte ešte ďalších "+n+" znakov"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n == 1) { + return "Prosím, zadajte o jeden znak menej"; + } else if (n >= 2 && n <= 4) { + return "Prosím, zadajte o "+smallNumbers[n](true)+" znaky menej"; + } else { + return "Prosím, zadajte o "+n+" znakov menej"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit == 1) { + return "Môžete zvoliť len jednu položku"; + } else if (limit >= 2 && limit <= 4) { + return "Môžete zvoliť najviac "+smallNumbers[limit](false)+" položky"; + } else { + return "Môžete zvoliť najviac "+limit+" položiek"; + } + }, + formatLoadMore: function (pageNumber) { return "Načítavajú sa ďalšie výsledky…"; }, + formatSearching: function () { return "Vyhľadávanie…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['sk']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_sv.js b/htdocs/includes/jquery/plugins/select2/select2_locale_sv.js new file mode 100644 index 00000000000..96f8c0a881d --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_sv.js @@ -0,0 +1,19 @@ +/** + * Select2 Swedish translation. + * + * Author: Jens Rantil + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['sv'] = { + formatNoMatches: function () { return "Inga träffar"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; }, + formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; }, + formatLoadMore: function (pageNumber) { return "Laddar fler resultat…"; }, + formatSearching: function () { return "Söker…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['sv']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_th.js b/htdocs/includes/jquery/plugins/select2/select2_locale_th.js new file mode 100644 index 00000000000..7f3e6ef8c39 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_th.js @@ -0,0 +1,19 @@ +/** + * Select2 Thai translation. + * + * Author: Atsawin Chaowanakritsanakul + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['th'] = { + formatNoMatches: function () { return "ไม่พบข้อมูล"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีก " + n + " ตัวอักษร"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออก " + n + " ตัวอักษร"; }, + formatSelectionTooBig: function (limit) { return "คุณสามารถเลือกได้ไม่เกิน " + limit + " รายการ"; }, + formatLoadMore: function (pageNumber) { return "กำลังค้นข้อมูลเพิ่ม…"; }, + formatSearching: function () { return "กำลังค้นข้อมูล…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['th']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_tr.js b/htdocs/includes/jquery/plugins/select2/select2_locale_tr.js new file mode 100644 index 00000000000..1dda95ca376 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_tr.js @@ -0,0 +1,19 @@ +/** + * Select2 Turkish translation. + * + * Author: Salim KAYABAŞI + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['tr'] = { + formatNoMatches: function () { return "Sonuç bulunamadı"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; }, + formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; }, + formatLoadMore: function (pageNumber) { return "Daha fazla…"; }, + formatSearching: function () { return "Aranıyor…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['tr']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_ug-CN.js b/htdocs/includes/jquery/plugins/select2/select2_locale_ug-CN.js new file mode 100644 index 00000000000..579588a7ac0 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_ug-CN.js @@ -0,0 +1,16 @@ +/** + * Select2 Uyghur translation + */ +(function ($) { + "use strict"; + $.fn.select2.locales['ug-CN'] = { + formatNoMatches: function () { return "ماس كېلىدىغان ئۇچۇر تېپىلمىدى"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "يەنە " + n + " ھەرپ كىرگۈزۈڭ";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "" + n + "ھەرپ ئۆچۈرۈڭ";}, + formatSelectionTooBig: function (limit) { return "ئەڭ كۆپ بولغاندا" + limit + " تال ئۇچۇر تاللىيالايسىز"; }, + formatLoadMore: function (pageNumber) { return "ئۇچۇرلار ئوقۇلىۋاتىدۇ…"; }, + formatSearching: function () { return "ئىزدەۋاتىدۇ…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['ug-CN']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_uk.js b/htdocs/includes/jquery/plugins/select2/select2_locale_uk.js new file mode 100644 index 00000000000..b5bd0e02d2c --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_uk.js @@ -0,0 +1,25 @@ +/** + * Select2 Ukrainian translation. + * + * @author bigmihail + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['uk'] = { + formatMatches: function (matches) { return character(matches, "результат") + " знайдено, використовуйте клавіші зі стрілками вверх та вниз для навігації."; }, + formatNoMatches: function () { return "Нічого не знайдено"; }, + formatInputTooShort: function (input, min) { return "Введіть буль ласка ще " + character(min - input.length, "символ"); }, + formatInputTooLong: function (input, max) { return "Введіть буль ласка на " + character(input.length - max, "символ") + " менше"; }, + formatSelectionTooBig: function (limit) { return "Ви можете вибрати лише " + character(limit, "елемент"); }, + formatLoadMore: function (pageNumber) { return "Завантаження даних…"; }, + formatSearching: function () { return "Пошук…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['uk']); + + function character (n, word) { + return n + " " + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "и" : "" : "ів"); + } +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_vi.js b/htdocs/includes/jquery/plugins/select2/select2_locale_vi.js new file mode 100644 index 00000000000..cc67065f972 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_vi.js @@ -0,0 +1,20 @@ +/** + * Select2 Vietnamese translation. + * + * Author: Long Nguyen + */ +(function ($) { + "use strict"; + + $.fn.select2.locales['vi'] = { + formatNoMatches: function () { return "Không tìm thấy kết quả"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiều hơn " + n + " ký tự" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hơn " + n + " ký tự" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Chỉ có thể chọn được " + limit + " tùy chọn" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Đang lấy thêm kết quả…"; }, + formatSearching: function () { return "Đang tìm…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['vi']); +})(jQuery); + diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_zh-CN.js b/htdocs/includes/jquery/plugins/select2/select2_locale_zh-CN.js new file mode 100644 index 00000000000..e988dac1a4c --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_zh-CN.js @@ -0,0 +1,16 @@ +/** + * Select2 Chinese translation + */ +(function ($) { + "use strict"; + $.fn.select2.locales['zh-CN'] = { + formatNoMatches: function () { return "没有找到匹配项"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "请再输入" + n + "个字符";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, + formatSelectionTooBig: function (limit) { return "你只能选择最多" + limit + "项"; }, + formatLoadMore: function (pageNumber) { return "加载结果中…"; }, + formatSearching: function () { return "搜索中…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-CN']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2_locale_zh-TW.js b/htdocs/includes/jquery/plugins/select2/select2_locale_zh-TW.js new file mode 100644 index 00000000000..85dbd5afc23 --- /dev/null +++ b/htdocs/includes/jquery/plugins/select2/select2_locale_zh-TW.js @@ -0,0 +1,16 @@ +/** + * Select2 Traditional Chinese translation + */ +(function ($) { + "use strict"; + $.fn.select2.locales['zh-TW'] = { + formatNoMatches: function () { return "沒有找到相符的項目"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "請再輸入" + n + "個字元";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";}, + formatSelectionTooBig: function (limit) { return "你只能選擇最多" + limit + "項"; }, + formatLoadMore: function (pageNumber) { return "載入中…"; }, + formatSearching: function () { return "搜尋中…"; } + }; + + $.extend($.fn.select2.defaults, $.fn.select2.locales['zh-TW']); +})(jQuery); diff --git a/htdocs/includes/jquery/plugins/select2/select2x2.png b/htdocs/includes/jquery/plugins/select2/select2x2.png new file mode 100644 index 0000000000000000000000000000000000000000..4bdd5c961d452c49dfa0789c2c7ffb82c238fc24 GIT binary patch literal 845 zcmV-T1G4;yP)upQ6WKflyv?C|ADVW!U!t`EpA+x zB)5#EjWk-_X77YJZtQo`E0SF)^1bZr%)B7Cd`*OK*r z5WG-7e-R9G9^69ksDt29&oyHqxPSt|-S>xi3%PTd+GjY+BGF|nWC(7D-sd(kxqd9~ zS@2YF5vB+>dP8+$l^{oO3-lEWiGA*QIU)Wds#9M6RZ9N zcQ4y4)xqQOxD=vwu%7cz1nY#$lT&y8HCmkWgpwQP#3dhnYj9|2aS_R}IUF_^6s#$= zTm%~>A#oM?KIg$kh=<`gJkeoHa2LrulVy$Yx+N_0R3$4I!R*0677f(FKqm`2_o4~W z0h}fQZ`lC^1A+m;fM7uI(R1`S0KtG@KrkQ}5DW+&@cTnDVIow56KciMk7a899t0bC zC1KI{TsMe5NAR%GD_5`B-@ad4k~K3SO%H z_M31|`HV?E6)u$E3c&*<*n20+V@mRCop>R5;DWuZCmjSo7p@R&OYl^@G'."\n"; print ''."\n"; } - if ((! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && $conf->global->MAIN_USE_JQUERY_MULTISELECT == 'multiselect') || (defined('REQUIRE_JQUERY_MULTISELECT') && constant('REQUIRE_JQUERY_MULTISELECT') == 'multiselect')) // jQuery multiselect + if (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) // jQuery plugin "mutiselect", "multiple-select", "select2"... { - print ''."\n"; - } - if ((! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) && $conf->global->MAIN_USE_JQUERY_MULTISELECT == 'multiple-select') || (defined('REQUIRE_JQUERY_MULTISELECT') && constant('REQUIRE_JQUERY_MULTISELECT') == 'multiple-select')) // jQuery multiple-select - { - print ''."\n"; + $tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT'):$conf->global->MAIN_USE_JQUERY_MULTISELECT; + print ''."\n"; } // jQuery Timepicker if (! empty($conf->global->MAIN_USE_JQUERY_TIMEPICKER) || defined('REQUIRE_JQUERY_TIMEPICKER')) @@ -1130,14 +1127,12 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs { if (constant('JS_JQUERY_FLOT')) { - print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; } else { - print ''."\n"; print ''."\n"; print ''."\n"; print ''."\n"; @@ -1188,6 +1183,11 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs print ''."\n"; print ''."\n"; } + if (! empty($conf->global->MAIN_USE_JQUERY_MULTISELECT) || defined('REQUIRE_JQUERY_MULTISELECT')) // jQuery plugin "mutiselect", "multiple-select", "select2"... + { + $tmpplugin=empty($conf->global->MAIN_USE_JQUERY_MULTISELECT)?constant('REQUIRE_JQUERY_MULTISELECT'):$conf->global->MAIN_USE_JQUERY_MULTISELECT; + print '