diff --git a/htdocs/admin/dons.php b/htdocs/admin/dons.php index 4d98682e2bc..e652168e362 100644 --- a/htdocs/admin/dons.php +++ b/htdocs/admin/dons.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2005-2006 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 @@ -25,8 +25,8 @@ \brief Page d'administration/configuration du module Dons \version $Revision$ */ - require("./pre.inc.php"); +require(DOL_DOCUMENT_ROOT."/don.class.php"); $langs->load("admin"); $langs->load("donations"); @@ -35,13 +35,81 @@ if (!$user->admin) accessforbidden(); - $typeconst=array('yesno','texte','chaine'); - -if ($_GET["action"] == 'setmodelbon') +/* + * Action + */ +if ($_GET["action"] == 'specimen') { - dolibarr_set_const($db, "DON_ADDON_MODEL",$_GET["value"])) + $modele=$_GET["module"]; + + $don = new Don($db); + $don->initAsSpecimen(); + + // Charge le modele + $dir = DOL_DOCUMENT_ROOT . "/includes/modules/dons/"; + $file = $modele.".modules.php"; + if (file_exists($dir.$file)) + { + $classname = $modele; + require_once($dir.$file); + + $obj = new $classname($db); + + if ($obj->write_file($don) > 0) + { + header("Location: ".DOL_URL_ROOT."/document.php?modulepart=don&file=SPECIMEN.html"); + return; + } + } +} + +if ($_GET["action"] == 'setdoc') +{ + $db->begin(); + + if (dolibarr_set_const($db, "DON_ADDON_MODEL",$_GET["value"])) + { + $conf->global->DON_ADDON_MODEL = $_GET["value"]; + } + + // On active le modele + $type='donation'; + $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; + $sql_del .= " WHERE nom = '".$_GET["value"]."' AND type = '".$type."'"; + $result1=$db->query($sql_del); + $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom,type) VALUES ('".$_GET["value"]."','".$type."')"; + $result2=$db->query($sql); + if ($result1 && $result2) + { + $db->commit(); + } + else + { + $db->rollback(); + } +} + +if ($_GET["action"] == 'set') +{ + $type='donation'; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type) VALUES ('".$_GET["value"]."','".$type."')"; + if ($db->query($sql)) + { + + } +} + +if ($_GET["action"] == 'del') +{ + $type='donation'; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; + $sql .= " WHERE nom = '".$_GET["value"]."' AND type = '".$type."'"; + if ($db->query($sql)) + { + + } } @@ -50,7 +118,7 @@ if ($_GET["action"] == 'setmodelbon') */ $dir = "../includes/modules/dons/"; - +$html=new Form($db); llxHeader('',$langs->trans("DonationsSetup"),'DonConfiguration'); @@ -63,12 +131,36 @@ print_fiche_titre($langs->trans("DonationsSetup"),'','setup'); print '
'; print_titre($langs->trans("DonationsModels")); +// Defini tableau def de modele +$type='donation'; +$def = array(); +$sql = "SELECT nom"; +$sql.= " FROM ".MAIN_DB_PREFIX."document_model"; +$sql.= " WHERE type = '".$type."'"; +$resql=$db->query($sql); +if ($resql) +{ + $i = 0; + $num_rows=$db->num_rows($resql); + while ($i < $num_rows) + { + $array = $db->fetch_array($resql); + array_push($def, $array[0]); + $i++; + } +} +else +{ + dolibarr_print_error($db); +} + print ''; print ''; print ''; print ''; print ''; -print ''; +print ''; +print ''; print "\n"; clearstatcache(); @@ -83,24 +175,67 @@ while (($file = readdir($handle))!==false) $var = !$var; $name = substr($file, 0, strlen($file) -12); $classname = substr($file, 0, strlen($file) -12); + + require_once($dir.'/'.$file); + $module=new $classname($db); print ''; + print ''; - if ($conf->global->DON_ADDON_MODEL == $name) - { - print img_tick(); - print '\n"; + // Activé + if (in_array($name, $def)) + { + print "'; + } + else + { + print ""; + } + + // Defaut + print "'; + + // Info + $htmltooltip = ''.$langs->trans("Name").': '.$module->name; + $htmltooltip.='
'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown")); + $htmltooltip.='
'.$langs->trans("Height").'/'.$langs->trans("Width").': '.$module->page_hauteur.'/'.$module->page_largeur; + $htmltooltip.='

'.$langs->trans("FeaturesSupported").':'; + $htmltooltip.='
'.$langs->trans("Logo").': '.yn($module->option_logo); + $htmltooltip.='
'.$langs->trans("MultiLanguage").': '.yn($module->option_multilang); + print ''; + print ''; + + print "\n"; } } diff --git a/htdocs/don.class.php b/htdocs/don.class.php index 0a08d1dacc1..05a900e52c9 100644 --- a/htdocs/don.class.php +++ b/htdocs/don.class.php @@ -135,6 +135,52 @@ class Don } + /** + * \brief Initialise le don avec valeurs fictives aléatoire + * Sert à générer une recu de don pour l'aperu des modèles ou demo + */ + function initAsSpecimen() + { + global $user,$langs; + + // Charge tableau des id de société socids + $socids = array(); + $sql = "SELECT idp FROM ".MAIN_DB_PREFIX."societe WHERE client=1 LIMIT 10"; + $resql = $this->db->query($sql); + if ($resql) + { + $num_socs = $this->db->num_rows($resql); + $i = 0; + while ($i < $num_socs) + { + $i++; + + $row = $this->db->fetch_row($resql); + $socids[$i] = $row[0]; + } + } + + // Initialise paramètres + $this->id=0; + $this->ref = 'SPECIMEN'; + $this->specimen=1; + $this->nom = 'Doe'; + $this->prenom = 'John'; + $this->socidp = $socids[$socid]; + $this->date = time(); + $this->amount = 100; + $this->public = 1; + $this->societe = 'The Company'; + $this->adresse = 'Twist road'; + $this->cp = '99999'; + $this->ville = 'Town'; + $this->note_public='SPECIMEN'; + $this->email='email@email.com'; + $this->commentaire=''; + $this->statut=1; + } + + /* * */ @@ -356,6 +402,7 @@ class Don $obj = $this->db->fetch_object(); $this->id = $obj->rowid; + $this->ref = $obj->rowid; $this->datec = $obj->datec; $this->date = $obj->datedon; $this->prenom = stripslashes($obj->prenom); diff --git a/htdocs/includes/modules/dons/html_cerfafr.modules.php b/htdocs/includes/modules/dons/html_cerfafr.modules.php index 50f00d78b80..a345adbce7c 100644 --- a/htdocs/includes/modules/dons/html_cerfafr.modules.php +++ b/htdocs/includes/modules/dons/html_cerfafr.modules.php @@ -26,6 +26,7 @@ \brief Formulaire de don \version $Revision$ */ +require_once(DOL_DOCUMENT_ROOT."/includes/modules/dons/modules_don.php"); require_once(DOL_DOCUMENT_ROOT."/projetdon.class.php"); require_once(DOL_DOCUMENT_ROOT."/don.class.php"); @@ -48,6 +49,9 @@ class html_cerfafr extends ModeleDon $this->db = $db; $this->name = "cerfafr"; $this->description = "Modèle de reçu de dons"; + + // Dimension page pour format A4 + $this->type = 'html'; } @@ -66,54 +70,90 @@ class html_cerfafr extends ModeleDon \param id Id du recu à générer \return int >0 si ok, <0 si ko */ - function write_file($id) + function write_file($don) { global $conf,$langs,$user,$mysoc; $langs->load("main"); - $don = new Don($this->db); - $don->fetch($id); - - $filename = sanitize_string($don->id); - $dir = $conf->don->dir_output . "/" . get_exdir("${filename}"); - $file = $dir . "/" . $filename . ".html"; - - if (! is_dir($dir)) + if ($conf->don->dir_output) { - if (create_exdir($dir) < 0) + // Définition de l'objet $don (pour compatibilite ascendante) + if (! is_object($don)) + { + $id = $don; + $don = new Don($this->db); + $ret=$don->fetch($id); + } + + // Définition de $dir et $file + if ($don->specimen) + { + $dir = $conf->don->dir_output; + $file = $dir . "/SPECIMEN.html"; + } + else + { + $donref = sanitize_string($don->ref); + $dir = $conf->don->dir_output . "/" . get_exdir($donref); + $file = $dir . "/" . $donref . ".html"; + } + + if (! file_exists($dir)) + { + if (create_exdir($dir) < 0) + { + $this->error=$langs->trans("ErrorCanNotCreateDir",$dir); + return -1; + } + } + + if (file_exists($dir)) { - $this->error=$langs->trans("ErrorCanNotCreateDir",$dir); - return -1; + // Defini contenu + $donmodel=DOL_DOCUMENT_ROOT ."/includes/modules/dons/html_cerfafr.html"; + $html = implode('', file($donmodel)); + $html = eregi_replace('__REF__',$id,$html); + $html = eregi_replace('__DATE__',dolibarr_print_date($don->date),$html); + $html = eregi_replace('__IP__',$user->ip,$html); + $html = eregi_replace('__AMOUNT__',$don->amount,$html); + $html = eregi_replace('__CURRENCY__',$langs->trans("Currency".$conf->monnaie),$html); + $html = eregi_replace('__CURRENCYCODE__',$conf->monnaie,$html); + $html = eregi_replace('__MAIN_INFO_SOCIETE_NOM__',$mysoc->nom,$html); + $html = eregi_replace('__MAIN_INFO_SOCIETE_ADRESSE__',$mysoc->adresse,$html); + $html = eregi_replace('__MAIN_INFO_SOCIETE_CP__',$mysoc->cp,$html); + $html = eregi_replace('__MAIN_INFO_SOCIETE_VILLE__',$mysoc->ville,$html); + $html = eregi_replace('__DONATOR_NAME__',$don->nom,$html); + $html = eregi_replace('__DONATOR_ADDRESS__',$don->adresse,$html); + $html = eregi_replace('__DONATOR_ZIP__',$don->cp,$html); + $html = eregi_replace('__DONATOR_TOWN__',$don->ville,$html); + $html = eregi_replace('__PAYMENTMODE_LIB__ ',$don->modepaiement,$html); + $html = eregi_replace('__NOW__',dolibarr_print_date(time()),$html); + + // Sauve fichier sur disque + dolibarr_syslog("html_cerfafr::write_file $file"); + $handle=fopen($file,"w"); + fwrite($handle,$html); + fclose($handle); + + return 1; } - } - - // Defini contenu - $donmodel=DOL_DOCUMENT_ROOT ."/includes/modules/dons/html_cerfafr.html"; - $html = implode('', file($donmodel)); - $html = eregi_replace('__REF__',$id,$html); - $html = eregi_replace('__DATE__',dolibarr_print_date($don->date),$html); - $html = eregi_replace('__IP__',$user->ip,$html); - $html = eregi_replace('__AMOUNT__',$don->amount,$html); - $html = eregi_replace('__CURRENCY__',$langs->trans("Currency".$conf->monnaie),$html); - $html = eregi_replace('__CURRENCYCODE__',$conf->monnaie,$html); - $html = eregi_replace('__MAIN_INFO_SOCIETE_NOM__',$mysoc->nom,$html); - $html = eregi_replace('__MAIN_INFO_SOCIETE_ADRESSE__',$mysoc->adresse,$html); - $html = eregi_replace('__MAIN_INFO_SOCIETE_CP__',$mysoc->cp,$html); - $html = eregi_replace('__MAIN_INFO_SOCIETE_VILLE__',$mysoc->ville,$html); - $html = eregi_replace('__DONATOR_NAME__',$don->nom,$html); - $html = eregi_replace('__DONATOR_ADDRESS__',$don->adresse,$html); - $html = eregi_replace('__DONATOR_ZIP__',$don->cp,$html); - $html = eregi_replace('__DONATOR_TOWN__',$don->ville,$html); - $html = eregi_replace('__PAYMENTMODE_LIB__ ',$don->modepaiement,$html); - $html = eregi_replace('__NOW__',dolibarr_print_date(time()),$html); - - // Sauve fichier sur disque - dolibarr_syslog("html_cerfafr::write_file $file"); - $handle=fopen($file,"w"); - fwrite($handle,$html); - fclose($handle); - - return 1; + else + { + $this->error=$outputlangs->trans("ErrorCanNotCreateDir",$dir); + $langs->setPhpLang(); // On restaure langue session + return 0; + } + } + else + { + $this->error=$outputlangs->trans("ErrorConstantNotDefined","DON_OUTPUTDIR"); + $langs->setPhpLang(); // On restaure langue session + return 0; + } + $this->error=$outputlangs->trans("ErrorUnknown"); + $langs->setPhpLang(); // On restaure langue session + return 0; // Erreur par defaut + } } diff --git a/htdocs/langs/en_US/donations.lang b/htdocs/langs/en_US/donations.lang index 5e04bbcee9c..caef330c6f9 100644 --- a/htdocs/langs/en_US/donations.lang +++ b/htdocs/langs/en_US/donations.lang @@ -21,3 +21,4 @@ DonationStatusPromiseValidatedShort=Validated DonationStatusPayedShort=Received ValidPromise=Validate promise BuildDonationReceipt=Build receipt +DonationsModels=Documents models for donation receipts diff --git a/htdocs/langs/fr_FR/donations.lang b/htdocs/langs/fr_FR/donations.lang index 919a08317b9..f1e46cac936 100644 --- a/htdocs/langs/fr_FR/donations.lang +++ b/htdocs/langs/fr_FR/donations.lang @@ -20,4 +20,5 @@ DonationStatusPromiseNotValidatedShort=Non valid DonationStatusPromiseValidatedShort=Validée DonationStatusPayedShort=Payé ValidPromess=Valider promesse -BuildDonationReceipt=Créer reçu \ No newline at end of file +BuildDonationReceipt=Créer reçu +DonationsModels=Modèle de document de bon de réception de don \ No newline at end of file
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Activated").' '.$langs->trans("Default").''.$langs->trans("Info").'
'; - echo "$file"; - print ' '; + echo $module->name; + print ''; + print $module->description; + print ''; - print ' '; - } - else - { - print ' '; - print ''; - print ''.$langs->trans("Activate").''; - } - print "
\n"; + if ($conf->global->DON_ADDON_MODEL == $name) + { + print img_tick($langs->trans("Enabled")); + } + else + { + print ' '; + print ''; + print ''.$langs->trans("Activate").''; + } + print '\n"; + print ''.$langs->trans("Activate").''; + print ""; + if ($conf->global->DON_ADDON_MODEL == "$name") + { + print img_tick($langs->trans("Default")); + } + else + { + print ''.$langs->trans("Default").''; + } + print ''; + $html->textwithhelp('',$htmltooltip,1,0); + print ''; + print ''.img_object($langs->trans("Preview"),'generic').''; + print '