Platform  3.1
PHP API documentation
 All Data Structures Namespaces Files Functions Variables Pages
Fdl/popupcard.php
Go to the documentation of this file.
1 <?php
2 /*
3  * @author Anakeen
4  * @license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Anakeen - licence CC
5  * @package FDL
6 */
7 /**
8  * Generate contextual popup menu for doucments
9  *
10  * @author Anakeen 2000
11  * @version $Id: popupcard.php,v 1.62 2006/09/08 16:28:17 eric Exp $
12  * @license http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Anakeen - licence CC
13  * @package FDL
14  * @subpackage
15  */
16 /**
17  */
18 
19 include_once ("FDL/Class.Doc.php");
20 include_once ("FDL/popupfam.php");
21 // -----------------------------------
22 function popupcard(&$action)
23 {
24  // -----------------------------------
25  // ------------------------------
26  // define accessibility
27  $docid = GetHttpVars("id");
28  $abstract = (GetHttpVars("abstract", 'N') == "Y");
29  $headers = (GetHttpVars("props", 'N') == "Y"); // view doc properties
30  $specialmenu = GetHttpVars("specialmenu"); // view doc properties
31  $zone = GetHttpVars("zone"); // special zone
32  $dbaccess = $action->GetParam("FREEDOM_DB");
34  $kdiv = 1; // only one division
35  $fdoc = getTDoc($dbaccess, $doc->fromid);
36 
37  $action->lay->Set("id", $docid);
38  $action->lay->Set("ftitle", addjsslashes($fdoc["title"]));
39  $action->lay->Set("profid", $doc->profid);
40  $action->lay->Set("ddocid", $doc->ddocid); // default doc id for pre-inserted values
41  include_once ("FDL/popup_util.php");
42  // ------------------------------------------------------
43  // definition of popup menu
44  popupInit('popupcard', array(
45  'headers',
46  'latest',
47  'sview',
48  'sedit',
49  'editdoc',
50  'lockdoc',
51  'unlockdoc',
52  'revise',
53  'allocate',
54  'duplicate',
55  'histo',
56  'editprof',
57  'access',
58  'delete',
59  'toxml',
60  'reference',
61  'tobasket',
62  'addpostit',
63 
64  'chicon',
65  'chgtitle',
66  'param',
67  'defval',
68  'editattr',
69  'editcprof',
70  'editstate',
71  'editdfld',
72  'editwdoc',
73  'editcfld',
74  'properties',
75  'cancel'
76  ));
77 
78  $clf = ($doc->CanLockFile() == "");
79  $cuf = ($doc->CanUnLockFile() == "");
80  $cud = ($doc->canEdit() == "");
81 
82  popupInvisible('popupcard', $kdiv, 'toxml'); // don't display for the moment
83  popupCtrlActive('popupcard', $kdiv, 'reference');
84 
85  if (getParam("FREEDOM_IDBASKET") > 0) popupCtrlActive('popupcard', $kdiv, 'tobasket');
86  else popupInvisible('popupcard', $kdiv, 'tobasket');
87 
88  popupInvisible('popupcard', $kdiv, 'cancel');
89  if (($doc->doctype == "C") && ($cud)) {
90 
91  popupActive('popupcard', $kdiv, 'chicon');
92  } else {
93  popupInvisible('popupcard', $kdiv, 'chicon');
94  }
95 
96  popupSubMenu('popupcard', 'lockdoc', 'security');
97  popupSubMenu('popupcard', 'unlockdoc', 'security');
98  popupSubMenu('popupcard', 'editprof', 'security');
99  popupSubMenu('popupcard', 'access', 'security');
100  if ($doc->locked == $action->user->id) popupInvisible('popupcard', $kdiv, 'lockdoc');
101  else if (($doc->locked != $action->user->id) && $clf) popupCtrlActive('popupcard', $kdiv, 'lockdoc');
102  else popupInvisible('popupcard', $kdiv, 'lockdoc');
103 
104  if ($doc->isLocked()) {
105  if ($cuf) popupActive('popupcard', $kdiv, 'unlockdoc');
106  else popupInactive('popupcard', $kdiv, 'unlockdoc');
107  } else popupInvisible('popupcard', $kdiv, 'unlockdoc');
108 
109  popupCtrlActive('popupcard', $kdiv, 'allocate');
110  if (!$doc->isRevisable()) {
111  popupInvisible('popupcard', $kdiv, 'revise');
112  popupInvisible('popupcard', $kdiv, 'allocate');
113  } else if ((($doc->lmodify == 'Y') || ($doc->revision == 0)) && ($cud || $clf)) popupCtrlActive('popupcard', $kdiv, 'revise');
114  else popupCtrlInactive('popupcard', $kdiv, 'revise');
115 
116  if ($doc->IsControlled() && ($doc->profid > 0) && ($doc->Control("viewacl") == "")) {
117  popupCtrlActive('popupcard', $kdiv, 'access');
118  } else {
119  popupInvisible('popupcard', $kdiv, 'access');
120  }
121 
122  if ($doc->Control("modifyacl") == "") {
123  popupCtrlActive('popupcard', $kdiv, 'editprof');
124  popupActive('popupcard', $kdiv, 'editcprof');
125  } else {
126  popupCtrlInactive('popupcard', $kdiv, 'editprof');
127  popupInactive('popupcard', $kdiv, 'editcprof');
128  }
129  $action->lay->Set("dtitle", AddJsSlashes($doc->title));
130  if ($doc->PreDocDelete() == "") {
131  popupActive('popupcard', $kdiv, 'delete');
132  } else {
133  popupInactive('popupcard', $kdiv, 'delete');
134  }
135 
136  popupInvisible('popupcard', $kdiv, 'editstate');
137 
138  popupInvisible('popupcard', $kdiv, 'latest');
139 
140  if (($clf) || ($cud)) {
141  popupActive('popupcard', $kdiv, 'editattr');
142  popupActive('popupcard', $kdiv, 'chgtitle');
143  popupActive('popupcard', $kdiv, 'defval');
144  popupActive('popupcard', $kdiv, 'param');
145  popupActive('popupcard', $kdiv, 'editdoc');
146  popupActive('popupcard', $kdiv, 'editdfld');
147  popupActive('popupcard', $kdiv, 'editwdoc');
148  popupActive('popupcard', $kdiv, 'editcfld');
149  } else {
150  popupInactive('popupcard', $kdiv, 'editattr');
151  popupInactive('popupcard', $kdiv, 'editdfld');
152  popupInactive('popupcard', $kdiv, 'editwdoc');
153  popupInactive('popupcard', $kdiv, 'editcfld');
154  popupInactive('popupcard', $kdiv, 'chgtitle');
155  popupInactive('popupcard', $kdiv, 'defval');
156  popupInactive('popupcard', $kdiv, 'param');
157  popupCtrlInactive('popupcard', $kdiv, 'editprof');
158  popupInactive('popupcard', $kdiv, 'editdoc');
159  }
160  if ($doc->locked == - 1) { // fixed document
161  if ($doc->doctype != 'Z') popupActive('popupcard', $kdiv, 'latest');
162  popupInvisible('popupcard', $kdiv, 'editdoc');
163  popupInvisible('popupcard', $kdiv, 'delete');
164  popupInvisible('popupcard', $kdiv, 'editattr');
165  popupInvisible('popupcard', $kdiv, 'chgtitle');
166  popupInvisible('popupcard', $kdiv, 'defval');
167  popupInvisible('popupcard', $kdiv, 'param');
168  popupInvisible('popupcard', $kdiv, 'editprof');
169  popupInvisible('popupcard', $kdiv, 'revise');
170  popupInvisible('popupcard', $kdiv, 'allocate');
171  popupInvisible('popupcard', $kdiv, 'lockdoc');
172  popupInvisible('popupcard', $kdiv, 'chicon');
173  popupInvisible('popupcard', $kdiv, 'editwdoc');
174  popupInvisible('popupcard', $kdiv, 'editdfld');
175  popupInvisible('popupcard', $kdiv, 'editcfld');
176  }
177 
178  popupCtrlActive('popupcard', $kdiv, 'duplicate');
179 
180  if ($doc->locked != - 1) {
181  if ($doc->wid > 0) {
182  $wdoc = new_Doc($doc->dbaccess, $doc->wid);
183  if ($wdoc->isAlive()) {
184  $wdoc->Set($doc);
185  if (count($wdoc->GetFollowingStates()) > 0) popupActive('popupcard', $kdiv, 'editstate');
186  else popupInactive('popupcard', $kdiv, 'editstate');
187  }
188  }
189  }
190 
191  if (($doc->wid > 0) || ($doc->revision > 0)) popupActive('popupcard', $kdiv, 'histo');
192  else popupCtrlActive('popupcard', $kdiv, 'histo');
193 
194  if ($abstract) popupActive('popupcard', $kdiv, 'properties');
195  else popupInvisible('popupcard', $kdiv, 'properties');
196 
197  if (($doc->doctype != "C") || (!$action->HasPermission("FAMILY"))) {
198 
199  popupInvisible('popupcard', $kdiv, 'editcprof');
200  popupInvisible('popupcard', $kdiv, 'chgtitle');
201  popupInvisible('popupcard', $kdiv, 'defval');
202  popupInvisible('popupcard', $kdiv, 'param');
203  popupInvisible('popupcard', $kdiv, 'editattr');
204  popupInvisible('popupcard', $kdiv, 'editdfld');
205  popupInvisible('popupcard', $kdiv, 'editwdoc');
206  popupInvisible('popupcard', $kdiv, 'editcfld');
207  popupInvisible('popupcard', $kdiv, 'chicon');
208  }
209 
210  if ($doc->doctype == "C") {
211  popupInvisible('popupcard', $kdiv, 'toxml');
212  popupInvisible('popupcard', $kdiv, 'editdoc');
213  popupInvisible('popupcard', $kdiv, 'editstate');
214  popupInvisible('popupcard', $kdiv, 'delete');
215  popupInvisible('popupcard', $kdiv, 'duplicate');
216  if ($doc->dfldid == 0) popupInactive('popupcard', $kdiv, 'editcfld');
217  }
218  // if ($doc->doctype == "S") popupInvisible('popupcard',$kdiv,'editdoc');
219  if ($headers) popupInvisible('popupcard', $kdiv, 'headers');
220  else PopupCtrlactive('popupcard', $kdiv, 'headers');
221 
222  if ($doc->postitid > 0) popupInvisible('popupcard', $kdiv, 'addpostit');
223  else PopupCtrlactive('popupcard', $kdiv, 'addpostit');
224 
225  if (!$action->parent->Haspermission("FREEDOM", "FREEDOM")) {
226  // FREEDOM not available
227  // actions not available
228  popupInvisible('popupcard', $kdiv, 'editstate');
229  popupInvisible('popupcard', $kdiv, 'revise');
230  popupInvisible('popupcard', $kdiv, 'allocate');
231  popupInvisible('popupcard', $kdiv, 'editprof');
232  popupInvisible('popupcard', $kdiv, 'access');
233  popupInvisible('popupcard', $kdiv, 'tobasket');
234  }
235  if (!$action->parent->Haspermission("FREEDOM_READ", "FREEDOM")) {
236  popupInvisible('popupcard', $kdiv, 'histo');
237  }
238  // ------------
239  // add special views
240  popupInvisible('popupcard', $kdiv, 'sview');
241  popupInvisible('popupcard', $kdiv, 'sedit');
242 
243  if ($doc->cvid > 0) {
244 
245  $cvdoc = new_Doc($doc->dbaccess, $doc->cvid);
246  $cvdoc->set($doc);
247  $ti = $cvdoc->getTValue("CV_IDVIEW");
248  $tl = $cvdoc->getTValue("CV_LVIEW");
249  $tz = $cvdoc->getTValue("CV_ZVIEW");
250  $tk = $cvdoc->getTValue("CV_KVIEW");
251  $tm = $cvdoc->getTValue("CV_MSKID");
252  $td = $cvdoc->getTValue("CV_DISPLAYED");
253 
254  $tv = array(); // consult array views
255  $te = array(); // edit array views
256  if (count($tk) > 0) {
257  foreach ($tk as $k => $v) {
258  if ($td[$k] != "no") {
259  if ($tz[$k] != "") {
260  if ($ti[$k] == "") $cvk = "CV$k";
261  else $cvk = $ti[$k];
262  if ($v == "VEDIT") {
263  if (($clf) || ($cud)) {
264  if ($cvdoc->control($cvk) == "") {
265  $te[$cvk] = array(
266  "idview" => $cvk,
267  "zoneview" => $tz[$k],
268  "txtview" => $tl[$k]
269  );
270  }
271  }
272  } else {
273  if ($cvdoc->control($cvk) == "") {
274  $tv[$cvk] = array(
275  "idview" => $cvk,
276  "zoneview" => $tz[$k],
277  "txtview" => $tl[$k]
278  );
279  }
280  }
281  }
282  }
283  }
284  $action->lay->SetBlockData("SVIEW", $tv);
285  $action->lay->SetBlockData("SEDIT", $te);
286  }
287 
288  if (count($tv) > 0) {
289  popupInit('popupview', array_keys($tv));
290  foreach ($tv as $k => $v) popupActive('popupview', $kdiv, $k);
291  popupActive('popupcard', $kdiv, 'sview');
292  } else {
293  popupInit('popupview', array(
294  'z'
295  ));
296  }
297  if (count($te) > 0) {
298  popupInit('popupedit', array_keys($te));
299  foreach ($te as $k => $v) popupActive('popupedit', $kdiv, $k);
300  popupActive('popupcard', $kdiv, 'sedit');
301  } else {
302  popupInit('popupedit', array(
303  'z'
304  ));
305  }
306  }
307 
308  $tsubmenu["security"] = array(
309  "idmenu" => "security",
310  "labelmenu" => _("Security")
311  );
312  $noctrlkey = ($action->getParam("FDL_CTRLKEY", "yes") == "no");
313  if ($noctrlkey) {
314  popupNoCtrlKey();
315  $tsubmenu["ctrlkey"] = array(
316  "idmenu" => "ctrlkey",
317  "labelmenu" => _("others...")
318  );
319  }
320 
321  popupfam($action, $tsubmenu);
322  $addidmenu = array();
323  foreach ($tsubmenu as $v) {
324  $addidmenu[] = $v["idmenu"];
325  }
326  if (count($addidmenu) > 0) {
327  foreach ($addidmenu as $v) {
328  popupAddItem('popupcard', $v);
329  $ti = popupGetSubItems('popupcard', $v);
330  Popupinvisible('popupcard', $kdiv, $v);
331  //compute the access of submenu
332  // if all items are invisibles then sub menu is invisble
333  $mctrl = false;
334  foreach ($ti as $ki => $vi) {
335  $a = popupGetAccessItem('popupcard', $kdiv, $vi);
336  if (($a == POPUP_ACTIVE) || ($a == POPUP_INACTIVE)) {
337  PopupActive('popupcard', $kdiv, $v);
338  $mctrl = false;
339  break;
340  }
341  if (($a == POPUP_CTRLACTIVE) || ($a == POPUP_CTRLINACTIVE)) {
342  $mctrl = true;
343  }
344  }
345  if ($mctrl) PopupCtrlActive('popupcard', $kdiv, $v);
346  }
347  }
348  $action->lay->SetBlockData("SUBMENU", $tsubmenu);
349  $action->lay->SetBlockData("SUBDIVMENU", $tsubmenu);
350  $action->lay->Set("zone", $zone);
351  /*
352  if (($specialmenu!="") && (in_array($specialmenu,$doc->specialmenu))) {
353  if (method_exists($doc,$specialmenu)) {
354 
355  $tu=popupGetAccess("popupcard");
356  $doc->$specialmenu($tu);
357  popupSetAccess("popupcard",$tu);
358  }
359  }
360  */
361  popupGen();
362 }
363 ?>
← centre documentaire © anakeen - published under CC License - Dynacase