19 include_once (
"FDL/Lib.Dir.php");
20 include_once (
"FDL/Class.Doc.php");
21 include_once (
"FDL/Class.DocAttr.php");
29 $action->parent->AddJsRef(
$action->GetParam(
"CORE_JSURL") .
"/geometry.js");
32 if (!
$doc->isAlive()) {
33 $action->exitError(sprintf(_(
"document %s not found") ,
$docid));
34 } elseif (
$doc->doctype !=
'C') {
35 $action->exitError(sprintf(_(
"document %s is not a family") ,
$doc->getTitle()));
40 $action->lay->Set(
"dirid", $dirid);
44 $action->lay->Set(
"TITLE", _(
"new document family"));
46 if (($classid == 0) && (
$docid != 0)) $classid =
$doc->fromid;
50 $selectclass = array();
52 while (list($k, $cdoc) = each($tclassdoc)) {
53 $selectclass[$k][
"idcdoc"] = $cdoc[
"id"];
54 $selectclass[$k][
"classname"] = $cdoc[
"title"];
55 $selectclass[$k][
"selected"] =
"";
58 $selectframe = array();
69 if (($classid > 0) || (
$doc->doctype =
'C')) {
71 while (list($k, $cdoc) = each($selectclass)) {
73 if ($classid == $selectclass[$k][
"idcdoc"]) {
75 $selectclass[$k][
"selected"] =
"selected";
82 $tattr =
$doc->GetFieldAttributes();
84 $selectframe = array();
85 $selectframe[0][
"framevalue"] =
"-";
86 $selectframe[0][
"frameid"] =
"";
87 $selectframe[0][
"frameclass"] =
"";
88 $selectframe[0][
"selected"] =
"";
89 $selecttab = $selectframe;
91 foreach ($tattr as $k => $attr) {
92 if ($attr->docid > 0 && $attr->usefor !=
'Q') {
93 $selectframe[$k][
"framevalue"] = $attr->getLabel();
94 $selectframe[$k][
"frameid"] = $attr->id;
95 $selectframe[$k][
"frameclass"] = strtok($attr->type,
'(');
96 $selectframe[$k][
"selected"] =
"";
97 if ($attr->type ==
"tab") $selecttab[$k] = $selectframe[$k];
100 foreach ($tattr as $k => $attr) {
101 if ($attr->docid > 0 && $attr->usefor !=
'Q') {
102 $newelem[$k][
"attrid"] = $attr->id;
103 $newelem[$k][
"attrname"] = $attr->getLabel();
104 $newelem[$k][
"neweltid"] = $k;
105 $newelem[$k][
"visibility"] = $attr->visibility;
106 $newelem[$k][
"options"] = $attr->options;
107 $newelem[$k][
"typevalue"] = $attr->type;
108 $newelem[$k][
"classvalue"] = strtok($attr->type,
'(') .
' F' . strtok($attr->fieldSet->type,
'(');
109 $newelem[$k][
"disabledid"] =
"disabled";
110 $newelem[$k][
"order"] =
"0";
111 $newelem[$k][
"displayorder"] = - 2;
114 $newelem[$k][
"SELECTFRAME"] =
"SELECTFRAME_$k";
116 if ($attr->type ==
"frame") {
117 foreach ($selecttab as $kopt => $opt) {
118 if ($opt[
"frameid"] == $attr->fieldSet->id) {
119 $selecttab[$kopt][
"selected"] =
"selected";
121 $selecttab[$kopt][
"selected"] =
"";
124 $action->lay->SetBlockData($newelem[$k][
"SELECTFRAME"], $selecttab);
126 if ($attr->docid ==
$docid) {
127 $newelem[$k][
"disabled"] =
"";
129 $newelem[$k][
"disabled"] =
"disabled";
132 $newelem[$k][
"link"] =
"";
133 $newelem[$k][
"phpfile"] =
"";
134 $newelem[$k][
"phpfunc"] =
"";
135 $newelem[$k][
"phpconstraint"] =
"";
136 $newelem[$k][
"elink"] =
"";
137 $newelem[$k][
"abscheck"] =
"";
138 $newelem[$k][
"neededcheck"] =
"";
139 $newelem[$k][
"titcheck"] =
"";
145 $tattr =
$doc->GetNormalAttributes();
147 uasort($tattr,
"tordered");
149 while (list($k, $attr) = each($tattr)) {
150 if ($attr->type ==
"array") {
151 $selectframe[$k][
"framevalue"] = $attr->getLabel();
152 $selectframe[$k][
"frameid"] = $attr->id;
153 $selectframe[$k][
"selected"] =
"";
155 $newelem[$k][
"attrid"] = $attr->id;
156 $newelem[$k][
"attrname"] = $attr->getLabel();
157 $newelem[$k][
"order"] = $attr->ordered;
158 $newelem[$k][
"displayorder"] = $attr->ordered;
161 $newelem[$k][
"visibility"] = $attr->visibility;
162 $newelem[$k][
"link"] = $attr->link;
163 $newelem[$k][
"phpfile"] = $attr->phpfile;
164 $newelem[$k][
"phpfunc"] = htmlspecialchars($attr->phpfunc);
165 $newelem[$k][
"options"] = $attr->options;
166 $newelem[$k][
"phpconstraint"] = $attr->phpconstraint;
167 $newelem[$k][
"elink"] = $attr->elink;
168 $newelem[$k][
"disabledid"] =
"disabled";
169 $newelem[$k][
"neweltid"] = $k;
170 if ($attr->isInAbstract) {
171 $newelem[$k][
"abscheck"] =
"checked";
173 $newelem[$k][
"abscheck"] =
"";
175 if ($attr->isInTitle) {
176 $newelem[$k][
"titcheck"] =
"checked";
178 $newelem[$k][
"titcheck"] =
"";
181 $newelem[$k][
"neededcheck"] = ($attr->needed) ?
"checked" :
"";
183 if (($attr->docid ==
$docid) && ($attr->usefor !=
"A")) {
184 $newelem[$k][
"disabled"] =
"";
186 $newelem[$k][
"disabled"] =
"disabled";
189 $newelem[$k][
"typevalue"] = $attr->type;
190 $newelem[$k][
"classvalue"] = strtok($attr->type,
'(') .
' F' . strtok($attr->fieldSet->type,
'(');
192 if ($attr->format !=
"") $newelem[$k][
"typevalue"].=
"(\"" . $attr->format .
"\")";
193 if ($attr->eformat !=
"") $newelem[$k][
"phpfunc"] =
"[" . $attr->eformat .
"]" . $newelem[$k][
"phpfunc"];
195 $selectedSet =
false;
197 foreach ($selectframe as $kopt => $opt) {
198 if ($opt[
"frameid"] == $attr->fieldSet->id) {
199 $selectframe[$kopt][
"selected"] =
"selected";
201 if ($newelem[$kopt][
"displayorder"] < 0) {
202 $newelem[$kopt][
"displayorder"] = $attr->ordered - 1;
203 if ($attr->fieldSet->fieldSet && $attr->fieldSet->fieldSet->id) {
204 if ($newelem[$attr->fieldSet->fieldSet->id][
"displayorder"] < 0) {
205 $newelem[$attr->fieldSet->fieldSet->id][
"displayorder"] = $newelem[$kopt][
"displayorder"] - 1;
210 $selectframe[$kopt][
"selected"] =
"";
214 if (!$attr->fieldSet) {
215 simpleQuery(
$dbaccess, sprintf(
"select frameid from docattr where id='%s'", $attr->id) , $kset,
true,
true);
217 $selectframe[$kset] = $selectframe[0];
218 $selectframe[$kset][
"selected"] =
"selected";
219 $selectframe[$kset][
"framevalue"] =
"INVALID $kset";
220 $selectframe[$kset][
"frameid"] =
"$kset";
221 $selectframe[$kset][
"frameclass"] =
"invalid";
222 $newelem[$k][
"classvalue"] =
"invalid";
224 $newelem[$k][
"SELECTFRAME"] =
"SELECTFRAME_$k";
225 $action->lay->SetBlockData($newelem[$k][
"SELECTFRAME"], $selectframe);
231 while (list($kopt, $opt) = each($selectframe)) $selectframe[$kopt][
"selected"] =
"";
233 $action->lay->SetBlockData(
"SELECTCLASS", $selectclass);
235 uasort($newelem,
'sortnewelem');
238 $tattr =
$doc->GetMenuAttributes(
true);
240 foreach ($tattr as $k => $attr) {
241 if ($attr->docid > 0) {
242 $newelem[$k][
"attrid"] = $attr->id;
243 $newelem[$k][
"attrname"] = $attr->getLabel();
244 $newelem[$k][
"neweltid"] = $k;
245 $newelem[$k][
"visibility"] = $attr->visibility;
246 $newelem[$k][
"typevalue"] = $attr->type;
247 $newelem[$k][
"classvalue"] = $attr->type;
248 $newelem[$k][
"order"] = $attr->ordered;
249 $newelem[$k][
"displayorder"] = $attr->ordered;
250 $newelem[$k][
"disabledid"] =
"disabled";
251 $newelem[$k][
"options"] = $attr->options;
252 $newelem[$k][
"SELECTFRAME"] =
"SELECTFRAME_$k";
253 if ($attr->docid ==
$docid) {
254 $newelem[$k][
"disabled"] =
"";
256 $newelem[$k][
"disabled"] =
"disabled";
259 $newelem[$k][
"link"] = $attr->link;
260 $newelem[$k][
"phpfunc"] = $attr->precond;;
262 $newelem[$k][
"phpfile"] =
"";
263 $newelem[$k][
"phpconstraint"] =
"";
264 $newelem[$k][
"elink"] =
"";
265 $newelem[$k][
"abscheck"] =
"";
266 $newelem[$k][
"titcheck"] =
"";
272 $tattr =
$doc->GetActionAttributes();
274 foreach ($tattr as $k => $attr) {
275 if ($attr->docid > 0) {
276 $newelem[$k][
"attrid"] = $attr->id;
277 $newelem[$k][
"attrname"] = $attr->getLabel();
278 $newelem[$k][
"neweltid"] = $k;
279 $newelem[$k][
"visibility"] = $attr->visibility;
280 $newelem[$k][
"typevalue"] = $attr->type;
281 $newelem[$k][
"classvalue"] = $attr->type;
282 $newelem[$k][
"order"] = $attr->ordered;
283 $newelem[$k][
"displayorder"] = $attr->ordered;
284 $newelem[$k][
"disabledid"] =
"disabled";
285 $newelem[$k][
"options"] = $attr->options;
286 $newelem[$k][
"SELECTFRAME"] =
"SELECTFRAME_$k";
287 if ($attr->docid ==
$docid) {
288 $newelem[$k][
"disabled"] =
"";
290 $newelem[$k][
"disabled"] =
"disabled";
293 $newelem[$k][
"link"] = $attr->link;
294 $newelem[$k][
"phpfile"] = $attr->wapplication;
295 $newelem[$k][
"phpfunc"] = $attr->waction;
297 $newelem[$k][
"phpconstraint"] =
"";
298 $newelem[$k][
"elink"] =
"";
299 $newelem[$k][
"abscheck"] =
"";
300 $newelem[$k][
"titcheck"] =
"";
305 for ($k = $ka; $k < 3 + $ka; $k++) {
306 $newelem[$k][
"neweltid"] = $k;
307 $newelem[$k][
"attrname"] =
"";
308 $newelem[$k][
"disabledid"] =
"";
309 $newelem[$k][
"typevalue"] =
"";
310 $newelem[$k][
"classvalue"] =
"";
311 $newelem[$k][
"visibility"] =
"W";
312 $newelem[$k][
"link"] =
"";
313 $newelem[$k][
"elink"] =
"";
314 $newelem[$k][
"phpfile"] =
"";
315 $newelem[$k][
"phpfunc"] =
"";
316 $newelem[$k][
"phpconstraint"] =
"";
317 $newelem[$k][
"order"] =
"";
318 $newelem[$k][
"displayorder"] =
"";
319 $newelem[$k][
"attrid"] =
"";
321 $newelem[$k][
"SELECTFRAME"] =
"SELECTFRAME_$k";
322 $action->lay->SetBlockData($newelem[$k][
"SELECTFRAME"], $selectframe);
323 $newelem[$k][
"disabled"] =
"";
325 unset($newelem[
"FIELD_HIDDENS"]);
327 foreach ($newelem as $ia => $va) {
328 foreach ($va as $ip => $vp) {
329 $newelem[$ia][$ip] = str_replace(
'"',
'"', $vp);
333 $action->lay->SetBlockData(
"NEWELEM", $newelem);
342 if (isset(
$a[
"displayorder"]) && isset($b[
"displayorder"])) {
343 if (
$a[
"displayorder"] == $b[
"displayorder"])
return 0;
344 if (
$a[
"displayorder"] > $b[
"displayorder"])
return 1;
347 if (isset(
$a[
"displayorder"]))
return 1;
348 if (isset($b[
"displayorder"]))
return -1;
355 if (!$oa->fieldSet)
return 0;
356 if ($oa->fieldSet->id ==
'FIELD_HIDDENS')
return 0;
366 if ($oa->fieldSet->type ==
'frame') {
367 return '<span class="frame">---</span>';
368 } elseif ($oa->fieldSet->type ==
'tab') {
369 return '<span class="tab">---</span>';
371 return '<span class="unknow">---</span>';
374 if ($oa->fieldSet->type ==
'array') {
375 return '<span class="frame">---</span><span class="array">---</span>';
376 } elseif ($oa->fieldSet->type ==
'frame') {
377 return '<span class="tab">---</span><span class="frame">---</span>';
379 return '<span class="unknow">---</span>';
382 return '<span class="tab">---</span><span class="frame">---</span><span class="array">---</span>';