diff --git a/htdocs/core/tpl/contacts.tpl.php b/htdocs/core/tpl/contacts.tpl.php index dc97d84e9b647ebf966e450fd2896f7edcfb559a..33b98d56f48a7f98e727cc3987770f80b3be554e 100644 --- a/htdocs/core/tpl/contacts.tpl.php +++ b/htdocs/core/tpl/contacts.tpl.php @@ -14,6 +14,9 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * This template needs: + * $object */ if (! class_exists('Contact')) { @@ -30,6 +33,7 @@ if ($module == 'propal') { $permission=$user->rights->propale->creer; } elseif ($module == 'fichinter') { $permission=$user->rights->ficheinter->creer; } elseif ($module == 'invoice_supplier') { $permission=$user->rights->fournisseur->facture->creer; } elseif ($module == 'order_supplier') { $permission=$user->rights->fournisseur->commande->creer; } +elseif ($module == 'project') { $permission=$user->rights->projet->creer; } elseif (! isset($permission)) { $permission=$user->rights->$module->creer; } // If already defined by caller page $formcompany= new FormCompany($db); diff --git a/htdocs/projet/contact.php b/htdocs/projet/contact.php index 2f253112cdff81ab3a31c495597cd62b79b045c2..0674bcaf24b45687c7d4634185174d5138db0a83 100644 --- a/htdocs/projet/contact.php +++ b/htdocs/projet/contact.php @@ -31,17 +31,20 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; $langs->load("projects"); $langs->load("companies"); -$id = GETPOST('id','int'); -$ref= GETPOST('ref','alpha'); +$id = GETPOST('id','int'); +$ref = GETPOST('ref','alpha'); +$lineid = GETPOST('lineid','int'); +$socid = GETPOST('socid','int'); +$action = GETPOST('action','alpha'); -$mine = $_REQUEST['mode']=='mine' ? 1 : 0; +$mine = GETPOST('mode')=='mine' ? 1 : 0; //if (! $user->rights->projet->all->lire) $mine=1; // Special for projects -$project = new Project($db); +$object = new Project($db); if ($ref) { - $project->fetch(0,$ref); - $id=$project->id; + $object->fetch(0,$ref); + $id=$object->id; } // Security check @@ -55,41 +58,42 @@ $result = restrictedArea($user, 'projet', $id); */ // Add new contact -if ($_POST["action"] == 'addcontact' && $user->rights->projet->creer) +if ($action == 'addcontact' && $user->rights->projet->creer) { $result = 0; - $result = $project->fetch($id); + $result = $object->fetch($id); if ($result > 0 && $id > 0) { - $result = $project->add_contact($_POST["contactid"], $_POST["type"], $_POST["source"]); + $contactid = (GETPOST('userid') ? GETPOST('userid','int') : GETPOST('contactid','int')); + $result = $object->add_contact($contactid, $_POST["type"], $_POST["source"]); } if ($result >= 0) { - header("Location: contact.php?id=".$project->id); + header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); exit; } else { - if ($project->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') + if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); $mesg = '<div class="error">'.$langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType").'</div>'; } else { - $mesg = '<div class="error">'.$project->error.'</div>'; + $mesg = '<div class="error">'.$object->error.'</div>'; } } } // bascule du statut d'un contact -if ($_GET["action"] == 'swapstatut' && $user->rights->projet->creer) +if ($action == 'swapstatut' && $user->rights->projet->creer) { - if ($project->fetch($id)) + if ($object->fetch($id)) { - $result=$project->swapContactStatus(GETPOST('ligne')); + $result=$object->swapContactStatus(GETPOST('ligne')); } else { @@ -98,14 +102,14 @@ if ($_GET["action"] == 'swapstatut' && $user->rights->projet->creer) } // Efface un contact -if ($_GET["action"] == 'deleteline' && $user->rights->projet->creer) +if (($action == 'deleteline' || $action == 'deletecontact') && $user->rights->projet->creer) { - $project->fetch($id); - $result = $project->delete_contact($_GET["lineid"]); + $object->fetch($id); + $result = $object->delete_contact($_GET["lineid"]); if ($result >= 0) { - header("Location: contact.php?id=".$project->id); + header("Location: contact.php?id=".$object->id); exit; } else @@ -137,18 +141,18 @@ dol_htmloutput_mesg($mesg); if ($id > 0 || ! empty($ref)) { - if ( $project->fetch($id,$ref) > 0) + if ( $object->fetch($id,$ref) > 0) { - if ($project->societe->id > 0) $result=$project->societe->fetch($project->societe->id); + if ($object->societe->id > 0) $result=$object->societe->fetch($object->societe->id); // To verify role of users - //$userAccess = $project->restrictedProjectArea($user,'read'); - $userWrite = $project->restrictedProjectArea($user,'write'); - //$userDelete = $project->restrictedProjectArea($user,'delete'); + //$userAccess = $object->restrictedProjectArea($user,'read'); + $userWrite = $object->restrictedProjectArea($user,'write'); + //$userDelete = $object->restrictedProjectArea($user,'delete'); //print "userAccess=".$userAccess." userWrite=".$userWrite." userDelete=".$userDelete; - $head = project_prepare_head($project); - dol_fiche_head($head, 'contact', $langs->trans("Project"), 0, ($project->public?'projectpub':'project')); + $head = project_prepare_head($object); + dol_fiche_head($head, 'contact', $langs->trans("Project"), 0, ($object->public?'projectpub':'project')); /* @@ -163,231 +167,42 @@ if ($id > 0 || ! empty($ref)) // Define a complementary filter for search of next/prev ref. if (! $user->rights->projet->all->lire) { - $projectsListId = $project->getProjectsAuthorizedForUser($user,$mine,0); - $project->next_prev_filter=" rowid in (".(count($projectsListId)?join(',',array_keys($projectsListId)):'0').")"; + $objectsListId = $object->getProjectsAuthorizedForUser($user,$mine,0); + $object->next_prev_filter=" rowid in (".(count($objectsListId)?join(',',array_keys($objectsListId)):'0').")"; } - print $form->showrefnav($project, 'ref', $linkback, 1, 'ref', 'ref', ''); + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); print '</td></tr>'; // Label - print '<tr><td>'.$langs->trans("Label").'</td><td>'.$project->title.'</td></tr>'; + print '<tr><td>'.$langs->trans("Label").'</td><td>'.$object->title.'</td></tr>'; // Customer print "<tr><td>".$langs->trans("Company")."</td>"; print '<td colspan="3">'; - if ($project->societe->id > 0) print $project->societe->getNomUrl(1); + if ($object->societe->id > 0) print $object->societe->getNomUrl(1); else print ' '; print '</td></tr>'; // Visibility print '<tr><td>'.$langs->trans("Visibility").'</td><td>'; - if ($project->public) print $langs->trans('SharedProject'); + if ($object->public) print $langs->trans('SharedProject'); else print $langs->trans('PrivateProject'); print '</td></tr>'; // Statut - print '<tr><td>'.$langs->trans("Status").'</td><td>'.$project->getLibStatut(4).'</td></tr>'; + print '<tr><td>'.$langs->trans("Status").'</td><td>'.$object->getLibStatut(4).'</td></tr>'; print "</table>"; print '</div>'; - /* - * Lignes de contacts - */ - print '<br><table class="noborder" width="100%">'; - - /* - * Ajouter une ligne de contact - * Non affiche en mode modification de ligne - */ - if ($_GET["action"] != 'editline') - { - print '<tr class="liste_titre">'; - print '<td>'.$langs->trans("Source").'</td>'; - print '<td>'.$langs->trans("Company").'</td>'; - print '<td>'.$langs->trans("Contacts").'</td>'; - print '<td>'.$langs->trans("ContactType").'</td>'; - print '<td colspan="3"> </td>'; - print "</tr>\n"; - - $var = false; - - print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'" method="POST">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="action" value="addcontact">'; - print '<input type="hidden" name="source" value="internal">'; - print '<input type="hidden" name="id" value="'.$project->id.'">'; - - // Ligne ajout pour contact interne - print "<tr ".$bc[$var].">"; - - print '<td class="nowrap">'; - print img_object('','user').' '.$langs->trans("Users"); - print '</td>'; - - print '<td colspan="1">'; - print $conf->global->MAIN_INFO_SOCIETE_NOM; - print '</td>'; - - print '<td colspan="1">'; - // On recupere les id des users deja selectionnes - $form->select_users($user->id,'contactid',0); - print '</td>'; - print '<td>'; - $formcompany->selectTypeContact($project, '', 'type','internal','rowid'); - print '</td>'; - print '<td align="right" colspan="3" >'; - if ($userWrite > 0 || $user->admin) - { - print '<input type="submit" class="button" value="'.$langs->trans("Add").'"'; - if (! ($userWrite > 0 || $user->admin)) print ' disabled="disabled"'; - print '>'; - } - print '</td>'; - print '</tr>'; - - print '</form>'; - - // Line to add external contact. Only if project is linked to a third party. - //if ($project->societe->id) - //{ - print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$id.'" method="POST">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="action" value="addcontact">'; - print '<input type="hidden" name="source" value="external">'; - print '<input type="hidden" name="id" value="'.$id.'">'; - - $var=!$var; - print "<tr ".$bc[$var].">"; - - print '<td class="nowrap">'; - print img_object('','contact').' '.$langs->trans("ThirdPartyContacts"); - print '</td>'; - - print '<td colspan="1">'; - $selectedCompany = isset($_GET["newcompany"])?$_GET["newcompany"]:$project->societe->id; - $selectedCompany = $formcompany->selectCompaniesForNewContact($project, 'id', $selectedCompany, 'newcompany', (empty($project->societe->id)?array():array($project->societe->id))); - print '</td>'; - - print '<td colspan="1">'; - $nbofcontacts=$form->select_contacts($selectedCompany, '', 'contactid'); - //if ($nbofcontacts == 0) print $langs->trans("NoContactDefined"); - print '</td>'; - print '<td>'; - $formcompany->selectTypeContact($project, '', 'type','external','rowid'); - print '</td>'; - - print '<td align="right" colspan="3" >'; - if ($userWrite > 0 || $user->admin) - { - print '<input type="submit" class="button" value="'.$langs->trans("Add").'"'; - if (! $nbofcontacts || ! ($userWrite > 0 || $user->admin)) print ' disabled="disabled"'; - print '>'; - } - print '</td>'; - print '</tr>'; - - print "</form>"; - //} - - print '<tr><td colspan="6"> </td></tr>'; - } - - // Liste des contacts lies - print '<tr class="liste_titre">'; - print '<td>'.$langs->trans("Source").'</td>'; - print '<td>'.$langs->trans("Company").'</td>'; - print '<td>'.$langs->trans("Contacts").'</td>'; - print '<td>'.$langs->trans("ContactType").'</td>'; - print '<td align="center">'.$langs->trans("Status").'</td>'; - print '<td colspan="2"> </td>'; - print "</tr>\n"; - - $companystatic = new Societe($db); - $var = true; - - foreach(array('internal','external') as $source) + // Contacts lines (modules that overwrite templates must declare this into descriptor) + $dirtpls=array_merge($conf->modules_parts['tpl'],array('/core/tpl')); + foreach($dirtpls as $reldir) { - $tab = $project->liste_contact(-1,$source); - $num=count($tab); - - $i = 0; - while ($i < $num) - { - $var = !$var; - - print '<tr '.$bc[$var].' valign="top">'; - - // Source - print '<td align="left">'; - if ($tab[$i]['source']=='internal') print $langs->trans("User"); - if ($tab[$i]['source']=='external') print $langs->trans("ThirdPartyContact"); - print '</td>'; - - // Societe - print '<td align="left">'; - if ($tab[$i]['socid'] > 0) - { - $companystatic->fetch($tab[$i]['socid']); - print $companystatic->getNomUrl(1); - } - if ($tab[$i]['socid'] < 0) - { - print $conf->global->MAIN_INFO_SOCIETE_NOM; - } - if (! $tab[$i]['socid']) - { - print ' '; - } - print '</td>'; - - // Contact - print '<td>'; - if ($tab[$i]['source']=='internal') - { - $userstatic->id=$tab[$i]['id']; - $userstatic->lastname=$tab[$i]['nom']; - $userstatic->firstname=$tab[$i]['firstname']; - print $userstatic->getNomUrl(1); - } - if ($tab[$i]['source']=='external') - { - $contactstatic->id=$tab[$i]['id']; - $contactstatic->lastname=$tab[$i]['nom']; - $contactstatic->firstname=$tab[$i]['firstname']; - print $contactstatic->getNomUrl(1); - } - print '</td>'; - - // Type de contact - print '<td>'.$tab[$i]['libelle'].'</td>'; - - // Statut - print '<td align="center">'; - // Activation desativation du contact - if ($project->statut >= 0 && $userWrite > 0) print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'&action=swapstatut&ligne='.$tab[$i]['rowid'].'">'; - print $contactstatic->LibStatut($tab[$i]['status'],3); - if ($project->statut >= 0 && $userWrite > 0) print '</a>'; - print '</td>'; - - // Icon update et delete - print '<td align="center" nowrap>'; - if ($user->rights->projet->creer && $userWrite > 0) - { - print ' '; - print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$project->id.'&action=deleteline&lineid='.$tab[$i]['rowid'].'">'; - print img_delete(); - print '</a>'; - } - print '</td>'; - - print "</tr>\n"; - - $i ++; - } - } - print "</table>"; + $res=@include dol_buildpath($reldir.'/contacts.tpl.php'); + if ($res) break; + } } else {