Библиотека для cis, online, cms1

This commit is contained in:
Фёдор Подлеснов 2016-06-29 18:51:32 +03:00
commit 3c2e614d87
269 changed files with 39854 additions and 0 deletions

180
core/form/form.php Normal file
View file

@ -0,0 +1,180 @@
<?php
/**
* Ýëåìåíò ôîðìû
* @package core
*/
class TField
{
public $name;
public $label; // Ìåòêà ïîëÿ
public $value; // Çíà÷åíèå ïîëÿ
public $type; // Êàæäîìó òèïó ýëåìåíòà ñîîòâåòñòâóåò ìàêðîñ TAL
public $error_msg = null;
public $error = false;
public $require = false;
public function __construct ($input)
{
$this->deafult = null;
if (isset($input['validate'])) {
$this->require = strpos($input['validate'], 'require') !== false;
}
// Èíèöèàëèçàöèÿ ñâîéñò îáüåòêà
foreach (array('label', 'name', 'type') as $name) {
$this->$name = $input[$name];
}
}
function setValue($value)
{
$this->value = $value;
}
}
/**
* Ïîëå ââîäà Input
* @package core
*/
class TInput extends TField {
}
/**
* Âûáîð èç îäíîãî ýëåìåíòà
*/
class TSelect1 extends TField
{
public $options = array ();
public function __construct ($input) {
parent::__construct($input);
$this->options = $input['options'];
}
function setValue($value)
{
// Óñòàíîâèòü selected ó options
$this->value = $value;
}
}
/**
* Ïîëå ñ äàòîé
* @package core
*/
class TDate extends TField
{
}
/* *
* Òåêñòîâîå ïîëå
* @package core
*/
class TTextArea extends TField
{
}
/**
* Ïîëå äëÿ ââîäà ïàðîëÿ
* @package core
*/
class TSecret extends TField
{
}
class TUpload extends TField
{
}
/**
* Ôîðìà äëÿ ââîäà
* @package core
*/
class TForm
{
public $field = array ();
public $action = "";
public $method = 'post';
protected $replace;
protected $before;
public function __construct ()
{
$this->constructor = array (
'input' => 'TInput',
'date' => 'TDate',
'textarea' => 'TTextArea',
'select' => 'TSelect',
'select1' => 'TSelect1',
'secret' => 'TSecret',
'upload' => 'TUpload'
);
}
/**
* Äîáàâëÿåò îäíî ïîëå ââîäà íà ôîðìó
*/
public function addField (array $init)
{
assert (isset($init['type']));
assert (isset($init['name']));
$constructor = $this->constructor[$init['type']];
$el = new $constructor ($init);
$el->type = $init['type'];
$this->field [$init['name']] = $el;
return $el;
}
/**
* Äîáàâëÿåò ñïñîê ïîëåé äëÿ ôîðìû
* @param array $list
*/
public function addFieldList (array $list)
{
foreach ($list as $init) {
$this->addField ($init);
}
}
/**
* Óñòàíàâëèâàåò îøèáêè ïîñëå ïðîâåðêè
*/
function setError (Validator $validator)
{
foreach ($validator->getErrorMsg() as $name => $error)
{
$this->field[$name]->error = true;
$this->field[$name]->error_msg = $error;
}
}
/**
* Óñòàíàâëèâàåò çíà÷åíèÿ èç ìàñèâà
*/
function setValues (Collection $request) {
foreach ($this->field as $key => $el) {
$value = $request->getRawData ($this->method, $key);
$this->field[$key]->setValue($value);
}
}
/**
* Çàïîëíÿåò ôîðìó äàííûìè èç îáüåêòà
* @param object $data
* @param array $schema Ñâÿçü ìåæäó ýëåìåíòàìè ôîðìû è ñâîéñòâàìè îáüåêòà
*/
public function fill ($data, array $schema)
{
foreach ($schema as $key => $value) {
$this->field [$value]->setValue($data->$value->getString ());
}
}
public function set($name, $value)
{
$this->field[$name]->setValue($value);
}
}
?>

43
core/form/viewstate.php Normal file
View file

@ -0,0 +1,43 @@
<?php
/**
* http://www.alternateinterior.com/2006/09/a-viewstate-for-php.html
* Óïðàâëåíèå ñîñòîÿíèåì ìåæäó ñòðàíèöàìè
*/
class ViewState // extends Collection
{
private $values = array();
function set($name, $value)
{
$this->values[$name] = $value;
}
function get()
{
$args = func_get_args();
$result = $this->values;
foreach ($args as $name) {
if (!isset($result[$name])) {
return null;
}
$result = $result[$name];
}
return $result;
}
function saveState()
{
return base64_encode(serialize($this->values));
}
function restoreState($value)
{
$this->values = unserialize(base64_decode($value));
}
function export()
{
return $this->values;
}
}