This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "quickfw".
The branch, master has been updated
via f194b28a3e20242addcc86b22dec7a1b59d37cef (commit)
via 3782a361fc6af24eb965b1263b527972e3359877 (commit)
via 50f365c06a2be1b59f981dbab77f5a32a18a1186 (commit)
via 313250545da8f002a09a5f8aee1205db8330bc69 (commit)
via 2b456bdbb8f65c41e5771950fbf3f64df901edd6 (commit)
via 84d76c3d87657809326de4a8ecc867294557c8ab (commit)
from b4f8c135aa485ee9aaf59a9514b8eafd04ff3e48 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f194b28a3e20242addcc86b22dec7a1b59d37cef
Author: Ivan Borzenkov <iva...@li...>
Date: Wed Dec 8 16:14:02 2010 +0300
Нотайсы в скафолде
diff --git a/lib/Modules/Scaffold/Fields.php b/lib/Modules/Scaffold/Fields.php
index 677d2ba..e7bdae3 100644
--- a/lib/Modules/Scaffold/Fields.php
+++ b/lib/Modules/Scaffold/Fields.php
@@ -520,6 +520,8 @@ class Scaffold_File extends Scaffold_Field
return '';
//генерим новое имя
$info = pathinfo($this->postField($id, 'name'));
+ if (empty($info['extension']))
+ return '';
if ($id == -1)
$id = time();
$new_name = $this->genFunc ? call_user_func($this->genFunc, $this->name, $id, '.'.$info['extension']) : $this->name.'_'.$id.'.'.$info['extension'];
@@ -545,8 +547,8 @@ class Scaffold_File extends Scaffold_Field
*/
protected function postField($id, $field)
{
- return $_FILES['fdata'][$field][$id][$this->name];
- //return 'data['.$id.']['.$this->name.']';
+ return isset($_FILES['fdata'][$field][$id][$this->name]) ?
+ $_FILES['fdata'][$field][$id][$this->name] : '';
}
}
commit 3782a361fc6af24eb965b1263b527972e3359877
Author: Ivan Borzenkov <iva...@li...>
Date: Wed Dec 8 13:19:36 2010 +0300
Установка display в любой момент - так как ничего не мешает
diff --git a/lib/Modules/Scaffold/ScaffoldController.php b/lib/Modules/Scaffold/ScaffoldController.php
index 96b3f18..5803041 100644
--- a/lib/Modules/Scaffold/ScaffoldController.php
+++ b/lib/Modules/Scaffold/ScaffoldController.php
@@ -650,6 +650,23 @@ abstract class ScaffoldController extends Controller
}
/**
+ * Устанавливает отображение для столбцев
+ *
+ * @param string|array $colum Колонка<br>
+ * Или массив ключи - колонки => значения
+ * @param string $value значение
+ * @return ScaffoldController
+ */
+ protected function setDisp($colum, $value='')
+ {
+ if (!is_array($colum))
+ $colum = array($colum => $value);
+ foreach ($colum as $col=>$val)
+ $this->getInfoClass($col)->disp = $val;
+ return $this;
+ }
+
+ /**
* Скрывает при выводе и редактировании указанные колонки
*
* <br><br> Вызывается только в конструкторе
commit 50f365c06a2be1b59f981dbab77f5a32a18a1186
Author: Ivan Borzenkov <iva...@li...>
Date: Wed Dec 8 13:19:03 2010 +0300
Скафолд - для файлов accept
diff --git a/lib/Modules/Scaffold/Fields.php b/lib/Modules/Scaffold/Fields.php
index d0e971f..677d2ba 100644
--- a/lib/Modules/Scaffold/Fields.php
+++ b/lib/Modules/Scaffold/Fields.php
@@ -456,6 +456,8 @@ class Scaffold_File extends Scaffold_Field
protected $download;
/** @var function Генерит имя файла */
protected $genFunc;
+ /** @var string параметр accept */
+ protected $accept;
/**
* Проверяет параметры для файлового поля
@@ -471,6 +473,7 @@ class Scaffold_File extends Scaffold_Field
throw new Exception('Неверная директория для файлов '.$info->typeParams['path'], 1);
if (!is_writable($info->typeParams['path']))
throw new Exception('Нельзя писать в директорию файлов '.$info->typeParams['path'], 1);
+ $this->accept = !empty($info->typeParams['accept']) ? 'accept="'.$info->typeParams['accept'].'"' : '';
$this->path = $info->typeParams['path'];
$this->genFunc = !empty($info->typeParams['genFunc']) ? $info->typeParams['genFunc'] : false;
$this->prim = $info->primaryKey;
@@ -482,7 +485,7 @@ class Scaffold_File extends Scaffold_Field
public function editor($id, $value)
{
- return '<input type="file" name="f'.$this->editName($id).'" />
+ return '<input type="file" name="f'.$this->editName($id).'" '.$this->accept.' />
<input type="hidden" name="'.$this->editName($id).'" value="0" />
<input type="checkbox" name="'.$this->editName($id).'" value="1" label="Удалить" />'.
'<div>'.$this->display($id, $value).'</div>';
@@ -550,6 +553,12 @@ class Scaffold_File extends Scaffold_Field
class Scaffold_Image extends Scaffold_File
{
+ public function __construct($info)
+ {
+ if (empty($info->typeParams['accept']))
+ $info->typeParams['accept'] = 'image/*';
+ parent::__construct($info);
+ }
public function display($id, $value)
{
commit 313250545da8f002a09a5f8aee1205db8330bc69
Author: Ivan Borzenkov <iva...@li...>
Date: Tue Dec 7 18:28:35 2010 +0300
Скафолдинг - класс для инфы об отображении
diff --git a/lib/Modules/Scaffold/Display.php b/lib/Modules/Scaffold/Display.php
new file mode 100644
index 0000000..a98826d
--- /dev/null
+++ b/lib/Modules/Scaffold/Display.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Группа значений, от которых зависит показ поля
+ *
+ * @author ivan
+ */
+class Scaffold_Display
+{
+ public $list;
+ public $edit;
+ public $new;
+ public $multiedit;
+ public $multidel;
+
+ public function __construct()
+ {
+ $this->edit = $this->list = $this->multiedit = $this->multidel = $this->new = true;
+ }
+
+ public function show()
+ {
+
+ }
+ public function hide()
+ {
+
+ }
+
+}
+
diff --git a/lib/Modules/Scaffold/Fields.php b/lib/Modules/Scaffold/Fields.php
index 7d0ebae..d0e971f 100644
--- a/lib/Modules/Scaffold/Fields.php
+++ b/lib/Modules/Scaffold/Fields.php
@@ -1,6 +1,7 @@
<?php
require_once LIBPATH.'/utils.php';
+require_once dirname(__FILE__).'/Display.php';
/**
* Класс, на основе которого создаются остальные<br>
@@ -11,6 +12,8 @@ class Scaffold_Field_Info
{
/** @var boolean скрытое поле */
public $hide = null;
+ /** @var Scaffold_Display условие показа */
+ public $disp = false;
/** @var string класс поля */
public $type = false;
/** @var string параметры класса */
@@ -67,6 +70,16 @@ class Scaffold_Field extends Scaffold_Field_Info
$this->default = $info->fiendInfo['Default'];
if (!$this->title)
$this->title = $this->name;
+ //для совместимости
+ if ($this->disp === false)
+ {
+ $this->disp = new Scaffold_Display();
+ $this->disp->list =
+ $this->disp->edit =
+ $this->disp->new =
+ $this->disp->multiedit =
+ $this->disp->multidel = !$this->hide;
+ }
}
/**
diff --git a/lib/Modules/Scaffold/ScaffoldController.php b/lib/Modules/Scaffold/ScaffoldController.php
index e1e45b6..96b3f18 100644
--- a/lib/Modules/Scaffold/ScaffoldController.php
+++ b/lib/Modules/Scaffold/ScaffoldController.php
@@ -636,6 +636,20 @@ abstract class ScaffoldController extends Controller
////////////////////////////////////////////////////////////
/**
+ * Условия отображения колонки
+ *
+ * <br><br> Вызывается только в конструкторе
+ *
+ * @param string|array $colum Колонка или массив колонок, которые нужно скрыть
+ * @param boolean $disp Scaffold_Display
+ * @return ScaffoldController
+ */
+ protected function disp($colum, $disp)
+ {
+ return $this->setColumOpt('disp', $colum, $disp);
+ }
+
+ /**
* Скрывает при выводе и редактировании указанные колонки
*
* <br><br> Вызывается только в конструкторе
diff --git a/lib/Modules/Scaffold/scaffold/edit.php b/lib/Modules/Scaffold/scaffold/edit.php
index 732b7a0..cd4e9d4 100644
--- a/lib/Modules/Scaffold/scaffold/edit.php
+++ b/lib/Modules/Scaffold/scaffold/edit.php
@@ -8,7 +8,9 @@
<?php echo $this->block(Url::C('preEditField'.ucfirst($k)), $id); ?>
<?php
$i = $fields[$k];
- if ($i->hide)
+ if ($id == -1 && !$i->disp->new)
+ continue;
+ if (!$i->disp->edit)
continue;
//по умолчанию первичный ключ не редактируем, но если принудительно установим показ
if (!$i->primaryKey && !($i->hide === false))
diff --git a/lib/Modules/Scaffold/scaffold/index.php b/lib/Modules/Scaffold/scaffold/index.php
index 547a41d..98bfb19 100644
--- a/lib/Modules/Scaffold/scaffold/index.php
+++ b/lib/Modules/Scaffold/scaffold/index.php
@@ -7,17 +7,28 @@
<?php echo $pager; ?>
-<?php if (count($data)>0) { $cols = 3 + (empty($actions) ? 0 : 1); // с чекбоксами, редактирование+удаление, действия ?>
+<?php if (count($data)>0) { $cols = 3 + (empty($actions) ? 0 : 1); // с чекбоксами, редактирование+удаление, действия
+//считаем колонки
+foreach(current($data) as $key=>$v)
+ $cols += $fields[$key]->disp->list ? 1 : 0;
+?>
<form action="" method="post" enctype="multipart/form-data">
<table id="table_<?php echo $table ?>" class="scaffoldTable">
<thead>
<tr>
+ <td colspan="<?php echo $cols ?>">
+ <input type="button" class="button" value="Добавить" onclick="window.location.href='<?php echo Url::C('edit/-1') ?>'" />
+ <input type="submit" name="edit" value="Редактировать выбранных" />
+ <input type="submit" name="delete" value="Удалить выбранных" />
+ <?php echo $this->block(Url::C('multiPost')); ?>
+ </td>
+</tr>
+<tr>
<th><input type="checkbox" class="multiSelect" /></th>
<?php foreach(current($data) as $key=>$v) {
$i = $fields[$key];
- if ($i->hide)
+ if (!$i->disp->list)
continue;
- $cols++;
?>
<th><a href="<?php echo Url::C('sort/'.$key) ?>"><?php echo $i->title ?></a>
<?php if (isset($order) && $order['field'] == $key) { ?><span class="scaffoldSort">
@@ -40,7 +51,7 @@
<td><input type="checkbox" name="id[]" value="<?php echo $id ?>" /></td>
<?php foreach($row as $key=>$v) {
$i = $fields[$key];
- if ($i->hide)
+ if (!$i->disp->list)
continue;
?>
<td<?php if ($i->class) {?> class="<?php echo $i->class===true ? 'col_'.$key : $i->class ?>"<?php } ?>><?php //отображение обычного не связанного поля
@@ -61,6 +72,7 @@
</tbody>
<tfoot>
<tr><td colspan="<?php echo $cols ?>">
+ <input type="button" class="button" value="Добавить" onclick="window.location.href='<?php echo Url::C('edit/-1') ?>'" />
<input type="submit" name="edit" value="Редактировать выбранных" />
<input type="submit" name="delete" value="Удалить выбранных" />
<?php echo $this->block(Url::C('multiPost')); ?>
commit 2b456bdbb8f65c41e5771950fbf3f64df901edd6
Author: Ivan Borzenkov <iva...@li...>
Date: Thu Dec 2 14:20:28 2010 +0300
Исправлена ошибка в хелперах
diff --git a/application/helper/controllers/NavController.php b/application/helper/controllers/NavController.php
index a631ede..7673245 100644
--- a/application/helper/controllers/NavController.php
+++ b/application/helper/controllers/NavController.php
@@ -48,6 +48,8 @@ class NavController
return '';
if ($cur == false)
$cur = QFW::$router->RequestUri;
+ if ($cur instanceof Url)
+ $cur = $cur->intern();
$result = '<ul'.($id?' id="'.$id.'"':'').'>';
$result.=$this->menuTreeNodes($items, $cur);
$result.= '</ul>';
@@ -96,6 +98,8 @@ class NavController
return '';
if ($cur == false)
$cur = QFW::$router->RequestUri;
+ if ($cur instanceof Url)
+ $cur = $cur->intern();
$result = '<ul'.($id?' id="'.$id.'"':'').'>';
foreach ($items as $k=>$v)
{
commit 84d76c3d87657809326de4a8ecc867294557c8ab
Author: Ivan Borzenkov <iva...@li...>
Date: Thu Dec 2 12:59:42 2010 +0300
Пустой int
diff --git a/lib/Modules/Scaffold/Fields.php b/lib/Modules/Scaffold/Fields.php
index e3e3169..7d0ebae 100644
--- a/lib/Modules/Scaffold/Fields.php
+++ b/lib/Modules/Scaffold/Fields.php
@@ -106,7 +106,6 @@ class Scaffold_Field extends Scaffold_Field_Info
*/
public function validator($id, $value)
{
- var_dump($this->required);
if ($this->required && empty($value))
return false;
return true;
@@ -323,6 +322,11 @@ class Scaffold_Int extends Scaffold_Field
{
public function validator($id, $value)
{
+ $res = parent::validator($id, $value);
+ if ($res !== true)
+ return $res;
+ if (!$this->required && empty($value))
+ return true;
return is_numeric($value);
}
}
diff --git a/lib/Modules/Scaffold/ScaffoldController.php b/lib/Modules/Scaffold/ScaffoldController.php
index 68d54a2..e1e45b6 100644
--- a/lib/Modules/Scaffold/ScaffoldController.php
+++ b/lib/Modules/Scaffold/ScaffoldController.php
@@ -345,6 +345,7 @@ abstract class ScaffoldController extends Controller
$state = new TemplaterState(QFW::$view);
QFW::$view->setScriptPath(dirname(__FILE__));
+ $this->assignMainInfo();
return QFW::$view->assign(array(
'id' => $id,
'data' => $data,
diff --git a/lib/Modules/Scaffold/scaffold/info.php b/lib/Modules/Scaffold/scaffold/info.php
index 4582d5c..67bbcae 100644
--- a/lib/Modules/Scaffold/scaffold/info.php
+++ b/lib/Modules/Scaffold/scaffold/info.php
@@ -6,4 +6,4 @@
<?php
//вывели сообщения, очищаем
$session['messages']=array();
-?>
\ No newline at end of file
+?>
-----------------------------------------------------------------------
Summary of changes:
application/helper/controllers/NavController.php | 4 ++
lib/Modules/Scaffold/Display.php | 30 ++++++++++++++++++
lib/Modules/Scaffold/Fields.php | 36 +++++++++++++++++++--
lib/Modules/Scaffold/ScaffoldController.php | 32 +++++++++++++++++++
lib/Modules/Scaffold/scaffold/edit.php | 4 ++-
lib/Modules/Scaffold/scaffold/index.php | 20 ++++++++++--
lib/Modules/Scaffold/scaffold/info.php | 2 +-
7 files changed, 118 insertions(+), 10 deletions(-)
create mode 100644 lib/Modules/Scaffold/Display.php
hooks/post-receive
--
quickfw
|