- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
<?
require_once('ittable.class.php');
class ITForm extends ITTable
{
public function __construct($tbl)
{
parent::__construct($tbl);
//путь с скрипту который удаляет файлы по tblname record_id filename
$this->path2deletephp='/itcms4/ckeditor/delete.php';
}
public function generateFormData($i, $action, $head, $submitvalue='', $captcha=0)
{
global $itcmscfg;
$form->submitvalue=htmlentities($submitvalue?$submitvalue:$head, ENT_NOQUOTES, 'UTF-8');
$form->tbl = $this->tbl;
if($this->files) $enctype='enctype="multipart/form-data"';
$form->head = htmlentities($head, ENT_NOQUOTES, 'UTF-8');
$form->begin = "<form name='$this->tbl$i->id' id='$this->tbl$i->id' action='$action' method='post' $enctype>";
$form->inputhidden .= "<input type='hidden' name='id' value='$i->id'><input type='hidden' name='referer' value='" . ($_SERVER['HTTP_REFERER']?$_SERVER['HTTP_REFERER']:'./') . "'>\n";
if($action=='delete.php') {$form->disabled = 'disabled'; $OPERATION = UPDATABLE;}
elseif($action=='insert.php') $OPERATION = INSERTABLE;
elseif($action=='update.php') $OPERATION = UPDATABLE;
else $OPERATION = UPDATABLE;
foreach($this->columns as $field=>$ftype)
{
$itforms = " $form->disabled name='$field' id='input-$field'" . $this->getITFormsAttr($field);
$value = isset($i->$field) ? $i->$field : ($_GET[$field] ? $_GET[$field]: $ftype->Default);
if(!$ftype->htmlcode) $value = htmlentities($value, ENT_QUOTES, 'UTF-8');
$itcmscfg->cfgfile = intval($itcmscfg->cfgfile);
if($ftype->Key=='UNI') $itforms .= " data-async='false' data-unique='{cfgfile:$itcmscfg->cfgfile, tblname:\"$this->tbl\", record_id:\"$i->id\"}'";
if($ftype->visibility & HIDDEN){$form->inputhidden .= "<input type='hidden' $itforms value='$value'>"; continue;}
//если поле не RADONLY, то проверить задан ли regexp и разрешена ли операция
if( !($ftype->visibility & READONLY) )
if(!$ftype->pattern || !($ftype->visibility & $OPERATION))
continue;
$form->inputs[$field]->name = "<label for='input-$field' id='label-$field'>$ftype->outputname</label>";
//выводим элементы
if($ftype->options)
{
$form->inputs[$field]->input = $ftype->options->html($field, " $form->disabled " . $this->getITFormsAttr($field), $value);
if($ftype->options->type==OT_BINARY_CHECKBOX)
$form->js .= "itform.setCheckboxProperty('$field', 'sum', '$ftype->minselected', '$ftype->maxselected');\n";
}
elseif($ftype->inputtype=='wysiwyg')
$form->inputs[$field]->input = "<script src=/include/ckeditor/ckeditor.js></script>
<textarea class='ckeditor' name='$field'>$value</textarea>";
elseif($ftype->Type=='text')
$form->inputs[$field]->input = "<textarea rows='10' cols='80' $itforms " . ($form->disabled?' readonly':'') . ">$value</textarea>";
elseif($ftype->inputtype)
$form->inputs[$field]->input = "<input type='$ftype->inputtype' value='$value' $itforms>";
else
$form->inputs[$field]->input = "<input type='text' value='$value' $itforms>";
$f1 = $ftype->func;
if(isset($f1))
$form->inputs[$field]->input .= (' ' . $f1($value));
}//foreach
if($this->files)
{
foreach($this->files as $k=>$o)
{
$itforms = "";
//это только для action==insert.php можно, при редактирвоании не обязательно файл заливать
$itforms .= ($o->required && $action=='insert.php') ? " data-min-length='1'" : '';
$itforms .= $o->validExtentions ? " data-regexp='$o->validExtentions'" : '';
if($o->help) $itforms .= " data-help='$o->help'";
if($o->multiple)
{
$itforms .= ' multiple';
$multiple = '[]';
}
else
$multiple='';
$outputname = htmlentities($o->outputname, ENT_NOQUOTES, 'UTF-8');
$form->inputs[$k]->name = "<label for='input-$k'>$outputname</label>";
$form->inputs[$k]->input = "<input type='file' name='$k$multiple' id='input-$k' $itforms>";
}//foreach
if(intval($i->id))
$form->files = $itcmscfg->fs->getFiles4TblRecord($this->tbl, $i->id);
}//if
return $form;
}//fun
А меня удивляет, когда постят 200 строк, и надеются, что кто-то это будет читать. Интересно, есть хоть один человек, который эти 2 кода хотя бы по диагонали прочёл?
Когда ньюфаги научатся выделять важные и интересные куски, а не постить эти ничем не примечательные унылые портянки...
[/старческоеБурчание]
>> Продолжение: http://govnokod.ru/17479
> Продолжение: http://govnokod.ru/17480
Продолжение: http://govnokod.ru/17479
Ты вогнал меня в рекурсию, содомит!
Типичная проблема - нельзя запилить 2 иммутабельных объекта, ссылающихся друг на друга.
P.S. Да, я понимаю, что можно догадаться, какой индекс будет у соседнего треда, но это же чит, и вообще ненадёжно.
Да. И вообще нельзя запилить циклические ссылки, только дерево.
Но зато это сильно упрощает работу GC.
Это как записать адрес с инкрементом. Оно-то может и сработает, но в многопоточной среде (другой юзер делает пост) ломается.
Учту критику на будущее(: