1<?php 2/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> 3 * Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net> 4 * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> 5 * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com> 6 * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr> 7 * Copyright (C) 2017 Ferran Marcet <fmarcet@2byte.es> 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 3 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program. If not, see <https://www.gnu.org/licenses/>. 21 */ 22 23/** 24 * \file htdocs/comm/propal/document.php 25 * \ingroup propal 26 * \brief Management page of documents attached to a business proposal 27 */ 28 29require '../../main.inc.php'; 30require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; 31require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; 32require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; 33require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; 34require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; 35if (!empty($conf->projet->enabled)) { 36 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; 37} 38 39// Load translation files required by the page 40$langs->loadLangs(array('propal', 'compta', 'other', 'companies')); 41 42$action = GETPOST('action', 'alpha'); 43$confirm = GETPOST('confirm', 'alpha'); 44$id = GETPOST('id', 'int'); 45$ref = GETPOST('ref', 'alpha'); 46 47// Security check 48$socid = ''; 49if (!empty($user->socid)) { 50 $socid = $user->socid; 51} 52$result = restrictedArea($user, 'propal', $id); 53 54// Get parameters 55$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; 56$sortfield = GETPOST("sortfield", 'alpha'); 57$sortorder = GETPOST("sortorder", 'alpha'); 58$page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); 59if (empty($page) || $page == -1) { 60 $page = 0; 61} // If $page is not defined, or '' or -1 62$offset = $limit * $page; 63$pageprev = $page - 1; 64$pagenext = $page + 1; 65 66if (!empty($conf->global->MAIN_DOC_SORT_FIELD)) { 67 $sortfield = $conf->global->MAIN_DOC_SORT_FIELD; 68} 69if (!empty($conf->global->MAIN_DOC_SORT_ORDER)) { 70 $sortorder = $conf->global->MAIN_DOC_SORT_ORDER; 71} 72 73if (!$sortorder) { 74 $sortorder = "ASC"; 75} 76if (!$sortfield) { 77 $sortfield = "name"; 78} 79 80$object = new Propal($db); 81$object->fetch($id, $ref); 82 83$permissiontoadd = $user->rights->propale->creer; 84 85// Security check 86if (!empty($user->socid)) { 87 $socid = $user->socid; 88 $object->id = $user->socid; 89} 90restrictedArea($user, 'propal', $object->id); 91 92 93/* 94 * Actions 95 */ 96 97if ($object->id > 0) { 98 $object->fetch_thirdparty(); 99 $upload_dir = $conf->propal->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); 100 include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; 101} 102 103 104/* 105 * View 106 */ 107$title = $langs->trans('Proposal')." - ".$langs->trans('Documents'); 108$help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'; 109llxHeader('', $title, $help_url); 110 111$form = new Form($db); 112 113if ($object->id > 0) { 114 $upload_dir = $conf->propal->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); 115 116 $head = propal_prepare_head($object); 117 print dol_get_fiche_head($head, 'document', $langs->trans('Proposal'), -1, 'propal'); 118 119 // Build file list 120 $filearray = dol_dir_list($upload_dir, "files", 0, '', '(\.meta|_preview.*\.png)$', $sortfield, (strtolower($sortorder) == 'desc' ?SORT_DESC:SORT_ASC), 1); 121 $totalsize = 0; 122 foreach ($filearray as $key => $file) { 123 $totalsize += $file['size']; 124 } 125 126 127 // Proposal card 128 129 $linkback = '<a href="'.DOL_URL_ROOT.'/comm/propal/list.php?restore_lastsearch_values=1'.(!empty($socid) ? '&socid='.$socid : '').'">'.$langs->trans("BackToList").'</a>'; 130 131 132 $morehtmlref = '<div class="refidno">'; 133 // Ref customer 134 $morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1); 135 $morehtmlref .= $form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1); 136 // Thirdparty 137 $morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1, 'customer'); 138 // Project 139 if (!empty($conf->projet->enabled)) { 140 $langs->load("projects"); 141 $morehtmlref .= '<br>'.$langs->trans('Project').' '; 142 if ($user->rights->propal->creer) { 143 if ($action != 'classify') { 144 //$morehtmlref.='<a class="editfielda" href="' . $_SERVER['PHP_SELF'] . '?action=classify&id=' . $object->id . '">' . img_edit($langs->transnoentitiesnoconv('SetProject')) . '</a>'; 145 $morehtmlref .= ' : '; 146 } 147 if ($action == 'classify') { 148 //$morehtmlref.=$form->form_project($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->socid, $object->fk_project, 'projectid', 0, 0, 1, 1); 149 $morehtmlref .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; 150 $morehtmlref .= '<input type="hidden" name="action" value="classin">'; 151 $morehtmlref .= '<input type="hidden" name="token" value="'.newToken().'">'; 152 $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); 153 $morehtmlref .= '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; 154 $morehtmlref .= '</form>'; 155 } else { 156 $morehtmlref .= $form->form_project($_SERVER['PHP_SELF'].'?id='.$object->id, $object->socid, $object->fk_project, 'none', 0, 0, 0, 1); 157 } 158 } else { 159 if (!empty($object->fk_project)) { 160 $proj = new Project($db); 161 $proj->fetch($object->fk_project); 162 $morehtmlref .= '<a href="'.DOL_URL_ROOT.'/projet/card.php?id='.$object->fk_project.'" title="'.$langs->trans('ShowProject').'">'; 163 $morehtmlref .= $proj->ref; 164 $morehtmlref .= '</a>'; 165 } else { 166 $morehtmlref .= ''; 167 } 168 } 169 } 170 $morehtmlref .= '</div>'; 171 172 dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref); 173 174 175 print '<div class="fichecenter">'; 176 print '<div class="underbanner clearboth"></div>'; 177 178 print '<table class="border tableforfield centpercent">'; 179 180 // Files infos 181 print '<tr><td class="titlefield">'.$langs->trans("NbOfAttachedFiles").'</td><td>'.count($filearray).'</td></tr>'; 182 print '<tr><td>'.$langs->trans("TotalSizeOfAttachedFiles").'</td><td>'.dol_print_size($totalsize, 1, 1).'</td></tr>'; 183 184 print "</table>\n"; 185 186 print '</div>'; 187 188 189 print dol_get_fiche_end(); 190 191 $modulepart = 'propal'; 192 $permissiontoadd = $user->rights->propal->creer; 193 $permtoedit = $user->rights->propal->creer; 194 $param = '&id='.$object->id; 195 include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; 196} else { 197 print $langs->trans("ErrorUnknown"); 198} 199 200// End of page 201llxFooter(); 202$db->close(); 203