dolibarr  16.0.1
comment.php
1 <?php
2 /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
3  * Copyright (C) 2006-2017 Laurent Destailleur <eldy@users.sourceforge.net>
4  * Copyright (C) 2010-2012 Regis Houssin <regis.houssin@inodbox.com>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see <https://www.gnu.org/licenses/>.
18  */
19 
26 require '../main.inc.php';
27 require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
28 require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
29 require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
30 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
31 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
32 require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
33 require_once DOL_DOCUMENT_ROOT.'/core/modules/project/modules_project.php';
34 require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
35 require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
36 
37 // Load translation files required by the page
38 $langs->loadLangs(array('projects', 'companies'));
39 
40 $id = GETPOST('id', 'int');
41 $idcomment = GETPOST('idcomment', 'int');
42 $ref = GETPOST("ref", 'alpha', 1); // task ref
43 $objectref = GETPOST("taskref", 'alpha'); // task ref
44 $action = GETPOST('action', 'aZ09');
45 $confirm = GETPOST('confirm', 'alpha');
46 $withproject = GETPOST('withproject', 'int');
47 
48 // Security check
49 $socid = 0;
50 //if ($user->socid > 0) $socid = $user->socid; // For external user, no check is done on company because readability is managed by public status of project and assignement.
51 if (!$user->rights->projet->lire) {
53 }
54 
55 // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
56 $hookmanager->initHooks(array('projectcard', 'globalcard'));
57 
58 $extrafields = new ExtraFields($db);
59 $object = new Project($db);
60 
61 // fetch optionals attributes and labels
62 $extrafields->fetch_name_optionals_label($object->table_element);
63 
64 // Load object
65 if ($id > 0 || !empty($ref)) {
66  $ret = $object->fetch($id, $ref); // If we create project, ref may be defined into POST but record does not yet exists into database
67  if ($ret > 0) {
68  $object->fetch_thirdparty();
69  if (!empty($conf->global->PROJECT_ALLOW_COMMENT_ON_PROJECT) && method_exists($object, 'fetchComments') && empty($object->comments)) {
70  $object->fetchComments();
71  }
72  $id = $object->id;
73  }
74 }
75 
76 // include comment actions
77 include DOL_DOCUMENT_ROOT.'/core/actions_comments.inc.php';
78 
79 /*
80  * View
81 */
82 
83 $title = $langs->trans('CommentPage');
84 
85 llxHeader('', $title, '');
86 
87 $form = new Form($db);
88 $formother = new FormOther($db);
89 $formfile = new FormFile($db);
90 
91 // Tabs for project
92 $tab = 'project_comment';
93 $head = project_prepare_head($object);
94 print dol_get_fiche_head($head, $tab, $langs->trans("Project"), - 1, ($object->public ? 'projectpub' : 'project'));
95 
96 $param = ($mode == 'mine' ? '&mode=mine' : '');
97 
98 // Project card
99 
100 $linkback = '<a href="'.DOL_URL_ROOT.'/projet/list.php?restore_lastsearch_values=1">'.$langs->trans("BackToList").'</a>';
101 
102 $morehtmlref = '<div class="refidno">';
103 // Title
104 $morehtmlref .= $object->title;
105 // Thirdparty
106 if (!empty($object->thirdparty->id) && $object->thirdparty->id > 0) {
107  $morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1, 'project');
108 }
109 $morehtmlref .= '</div>';
110 
111 // Define a complementary filter for search of next/prev ref.
112 if (empty($user->rights->projet->all->lire)) {
113  $objectsListId = $object->getProjectsAuthorizedForUser($user, 0, 0);
114  $object->next_prev_filter = " rowid IN (".$db->sanitize(count($objectsListId) ? join(',', array_keys($objectsListId)) : '0').")";
115 }
116 
117 dol_banner_tab($object, 'project_ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
118 
119 print '<div class="fichecenter">';
120 print '<div class="fichehalfleft">';
121 print '<div class="underbanner clearboth"></div>';
122 
123 print '<table class="border centpercent">';
124 
125 // Visibility
126 print '<tr><td class="titlefield">'.$langs->trans("Visibility").'</td><td>';
127 if ($object->public) {
128  print img_picto($langs->trans('SharedProject'), 'world', 'class="paddingrightonly"');
129  print $langs->trans('SharedProject');
130 } else {
131  print img_picto($langs->trans('PrivateProject'), 'private', 'class="paddingrightonly"');
132  print $langs->trans('PrivateProject');
133 }
134 print '</td></tr>';
135 
136 // Date start - end
137 print '<tr><td>'.$langs->trans("DateStart").' - '.$langs->trans("DateEnd").'</td><td>';
138 print dol_print_date($object->date_start, 'day');
139 $end = dol_print_date($object->date_end, 'day');
140 if ($end) {
141  print ' - '.$end;
142 }
143 print '</td></tr>';
144 
145 // Budget
146 print '<tr><td>'.$langs->trans("Budget").'</td><td>';
147 if (strcmp($object->budget_amount, '')) {
148  print price($object->budget_amount, '', $langs, 1, 0, 0, $conf->currency);
149 }
150 print '</td></tr>';
151 
152 // Other attributes
153 $cols = 2;
154 // include DOL_DOCUMENT_ROOT . '/core/tpl/extrafields_view.tpl.php';
155 
156 print '</table>';
157 
158 print '</div>';
159 print '<div class="fichehalfright">';
160 print '<div class="underbanner clearboth"></div>';
161 
162 print '<table class="border centpercent">';
163 
164 // Description
165 print '<td class="titlefield tdtop">'.$langs->trans("Description").'</td><td>';
166 print nl2br($object->description);
167 print '</td></tr>';
168 
169 // Categories
170 if (isModEnabled('categorie')) {
171  print '<tr><td class="valignmiddle">'.$langs->trans("Categories").'</td><td>';
172  print $form->showCategories($object->id, Categorie::TYPE_PROJECT, 1);
173  print "</td></tr>";
174 }
175 
176 // Nb comments
177 print '<td class="titlefield">'.$langs->trans("NbComments").'</td><td>';
178 print $object->getNbComments();
179 print '</td></tr>';
180 
181 print '</table>';
182 
183 print '</div>';
184 print '</div>';
185 
186 print '<div class="clearboth"></div>';
187 
188 print dol_get_fiche_end();
189 
190 print '<br>';
191 
192 // Include comment tpl view
193 include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_comment.tpl.php';
194 
195 // End of page
196 llxFooter();
197 $db->close();
project_prepare_head(Project $project, $moreparam= '')
Prepare array with list of tabs.
Definition: project.lib.php:38
GETPOST($paramname, $check= 'alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
if($cancel &&!$id) if($action== 'add'&&!$cancel) if($action== 'delete') if($id) $form
Actions.
Definition: card.php:142
if(!defined('NOREQUIRESOC')) if(!defined('NOREQUIRETRAN')) if(!defined('NOCSRFCHECK')) if(!defined('NOTOKENRENEWAL')) if(!defined('NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined('NOREQUIREAJAX')) llxHeader()
Empty header.
Definition: wrapper.php:59
price($amount, $form=0, $outlangs= '', $trunc=1, $rounding=-1, $forcerounding=-1, $currency_code= '')
Function to format a value into an amount for visual output Function used into PDF and HTML pages...
Class to manage standard extra fields.
Class to manage generation of HTML components Only common components must be here.
Class to manage projects.
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it&#39;s its name (generic function)
Classe permettant la generation de composants html autre Only common components are here...
accessforbidden($message= '', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program Calling this function terminate execution ...
Class to offer components to list and upload files.
dol_get_fiche_head($links=array(), $active= '', $title= '', $notab=0, $picto= '', $pictoisfullpath=0, $morehtmlright= '', $morecss= '', $limittoshow=0, $moretabssuffix= '')
Show tabs of a record.
dol_print_date($time, $format= '', $tzoutput= 'auto', $outputlangs= '', $encodetooutput=false)
Output date in a string format according to outputlangs (or langs if not defined).
dol_get_fiche_end($notab=0)
Return tab footer of a card.
isModEnabled($module)
Is Dolibarr module enabled.
dol_banner_tab($object, $paramid, $morehtml= '', $shownav=1, $fieldid= 'rowid', $fieldref= 'ref', $morehtmlref= '', $moreparam= '', $nodbprefix=0, $morehtmlleft= '', $morehtmlstatus= '', $onlybanner=0, $morehtmlright= '')
Show tab footer of a card.
llxFooter()
Empty footer.
Definition: wrapper.php:73