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 47b65efefa33e3583f8f0ebc5108e1609d7899bb (commit)
via 49b3e21f044db8a18a7440b79f1cf5e0725d6527 (commit)
via f5a1e0b4400cb90b475ec42263ada9a103329cf6 (commit)
via 4493ed8fe482cee8cc63d5a9436b7310a2716419 (commit)
via fe1841a18049e1e6c375377ce623e3c131f436a4 (commit)
via 8391e26846472c822f2266fd73d0df0d4a98f6fb (commit)
from 54cfd404f5688c34973cf724da716560d570418b (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 47b65efefa33e3583f8f0ebc5108e1609d7899bb
Author: Ivan Borzenkov <iva...@li...>
Date: Thu Dec 16 15:12:42 2010 +0300
Функция get в урле - если по какой-то причине __toString не работает
diff --git a/QFW/QuickFW/Url.php b/QFW/QuickFW/Url.php
index aef159c..a346f19 100644
--- a/QFW/QuickFW/Url.php
+++ b/QFW/QuickFW/Url.php
@@ -138,12 +138,21 @@ class Url
*/
public function __toString()
{
+ return $this->get();
+ }
+
+ /**
+ * урл для вывода, с подстановками
+ *
+ * @return string урл
+ */
+ public function get()
+ {
return QFW::$router->backrewriteUrl(
self::$config['base'].QFW::$router->backrewrite($this->u).
($this->u!=='' ? self::$config['ext'] : '').
($this->get ? '?' . $this->get : '').
($this->anchor ? '#' . $this->anchor : ''));
-
}
/**
@@ -156,7 +165,7 @@ class Url
{
return $this->u;
}
-
+
}
?>
commit 49b3e21f044db8a18a7440b79f1cf5e0725d6527
Author: Ivan Borzenkov <iva...@li...>
Date: Thu Dec 16 12:57:03 2010 +0300
Инициализация запроса от jQuery
diff --git a/QFW/Init.php b/QFW/Init.php
index 9da621f..941431e 100644
--- a/QFW/Init.php
+++ b/QFW/Init.php
@@ -23,7 +23,7 @@ class QFW
/** @var mixed|false Данные о пользователе */
static public $userdata = false;
- /** @var JsHttpRequest|false JsHttpRequest, если был выполнени Ajax запрос */
+ /** @var JsHttpRequest|jQuery|false JsHttpRequest или jQuery, если был выполнени Ajax запрос */
static public $ajax = false;
private function __construct() {}
@@ -107,20 +107,14 @@ class QFW
if (isset($_REQUEST['JsHttpRequest']))
{
require_once LIBPATH.'/JsHttpRequest.php';
- //QFW::$libs['JsHttpRequest'] для совместимости со старым вариантом
- self::$ajax = QFW::$libs['JsHttpRequest'] = new
- JsHttpRequest(self::$config['host']['encoding']);
+ self::$ajax = new JsHttpRequest(self::$config['host']['encoding']);
//устанавливаем пустой главный шаблон
self::$view->mainTemplate = '';
}
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
{
- //TODO: нужен класс для возврата данных в json
- //сейчас не отличаются вызовы html и json
- //возможно -
- // ["HTTP_ACCEPT"]=> string(3) "*/*" для json
- // ["HTTP_ACCEPT"]=> string(3) "text/html, */*; q=0.01" для html
- self::$ajax = 'jquery';
+ require_once LIBPATH.'/jquery.php';
+ self::$ajax = new jQuery();
//устанавливаем пустой главный шаблон
self::$view->mainTemplate = '';
}
diff --git a/lib/jquery.php b/lib/jquery.php
new file mode 100644
index 0000000..f25625c
--- /dev/null
+++ b/lib/jquery.php
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Бэкенд для удобного использования JQ
+ *
+ * @author ivan
+ */
+class jQuery
+{
+ /**
+ * Устанавливает заголовок и кодирует данные
+ *
+ * @param mixed $data данные для возврата браузеру
+ * @return string json
+ */
+ public function json($data)
+ {
+ header('Content-type: application/json');
+ return json_encode($data);
+ }
+}
+
commit f5a1e0b4400cb90b475ec42263ada9a103329cf6
Author: Ivan Borzenkov <iva...@li...>
Date: Wed Dec 15 15:33:45 2010 +0300
Определение jquery - для аякса
diff --git a/QFW/Init.php b/QFW/Init.php
index e5e6c82..9da621f 100644
--- a/QFW/Init.php
+++ b/QFW/Init.php
@@ -113,6 +113,17 @@ class QFW
//устанавливаем пустой главный шаблон
self::$view->mainTemplate = '';
}
+ if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')
+ {
+ //TODO: нужен класс для возврата данных в json
+ //сейчас не отличаются вызовы html и json
+ //возможно -
+ // ["HTTP_ACCEPT"]=> string(3) "*/*" для json
+ // ["HTTP_ACCEPT"]=> string(3) "text/html, */*; q=0.01" для html
+ self::$ajax = 'jquery';
+ //устанавливаем пустой главный шаблон
+ self::$view->mainTemplate = '';
+ }
}
/**
commit 4493ed8fe482cee8cc63d5a9436b7310a2716419
Author: Ivan Borzenkov <iva...@li...>
Date: Tue Dec 14 13:44:52 2010 +0300
Мелкоправки скафолда
diff --git a/lib/Modules/Scaffold/scaffold/index.php b/lib/Modules/Scaffold/scaffold/index.php
index 98bfb19..184be51 100644
--- a/lib/Modules/Scaffold/scaffold/index.php
+++ b/lib/Modules/Scaffold/scaffold/index.php
@@ -54,18 +54,18 @@ foreach(current($data) as $key=>$v)
if (!$i->disp->list)
continue;
?>
- <td<?php if ($i->class) {?> class="<?php echo $i->class===true ? 'col_'.$key : $i->class ?>"<?php } ?>><?php //отображение обычного не связанного поля
+ <td<?php if ($i->class) {?> class="<?php echo $i->class===true ? 'col_'.$key : $i->class ?>"<?php } ?>><?php
if (isset($methods['display_'.ucfirst($key)]))
echo call_user_func($class.'::display_'.ucfirst($key), $id, $v);
else
echo $i->display($id, $v);
?></td>
<?php } ?>
- <td><a href="<?php echo Url::C('edit/'.$row[$primaryKey]) ?>">ред.</a></td>
+ <td><a href="<?php echo Url::C('edit/'.$id) ?>">ред.</a></td>
<td><a onclick="return confirm('Удалить?')" href="<?php echo
Url::C('delete/'.$row[$primaryKey]) ?>">уд.</a></td>
<?php if (count($actions)) {?><td><?php foreach ($actions as $tit => $uri) { ?>
- <a href="<?php echo Url::C($uri.'/'.$row[$primaryKey]) ?>"><?php echo $tit ?></a>
+ <a href="<?php echo Url::C($uri.'/'.$id) ?>"><?php echo $tit ?></a>
<?php } ?></td><?php } ?>
</tr>
<?php } ?>
@@ -95,4 +95,4 @@ foreach(current($data) as $key=>$v)
<?php echo $this->block(Url::C('new')) ?>
<p> </p>
</div>
-<?php } ?>
\ No newline at end of file
+<?php } ?>
commit fe1841a18049e1e6c375377ce623e3c131f436a4
Author: Ivan Borzenkov <iva...@li...>
Date: Tue Dec 14 13:14:22 2010 +0300
Вместо класса таблицы передаем ссылку на объект
diff --git a/lib/Modules/Scaffold/Fields.php b/lib/Modules/Scaffold/Fields.php
index 09fb737..0b6cee3 100644
--- a/lib/Modules/Scaffold/Fields.php
+++ b/lib/Modules/Scaffold/Fields.php
@@ -30,8 +30,8 @@ class Scaffold_Field_Info
public $table;
/** @var string Имя первичного ключа */
public $primaryKey;
- /** @var string Класс таблицы */
- public $tableClass;
+ /** @var ScaffoldController Объект таблицы */
+ public $tableObject;
/** @var string Имя поля */
public $name = '';
diff --git a/lib/Modules/Scaffold/ScaffoldController.php b/lib/Modules/Scaffold/ScaffoldController.php
index 5803041..2676e53 100644
--- a/lib/Modules/Scaffold/ScaffoldController.php
+++ b/lib/Modules/Scaffold/ScaffoldController.php
@@ -978,7 +978,7 @@ abstract class ScaffoldController extends Controller
{
$infoClass->fiendInfo = $fieldInfo;
$infoClass->table = $this->table;
- $infoClass->tableClass = get_class($this);
+ $infoClass->tableObject = &$this;
$infoClass->primaryKey = $this->primaryKey;
if ($infoClass->type)
commit 8391e26846472c822f2266fd73d0df0d4a98f6fb
Author: Ivan Borzenkov <iva...@li...>
Date: Tue Dec 14 13:00:22 2010 +0300
Хелперы для работы с текстом
diff --git a/lib/Text.php b/lib/Text.php
new file mode 100644
index 0000000..7567de8
--- /dev/null
+++ b/lib/Text.php
@@ -0,0 +1,193 @@
+<?php
+
+define('_TS_MINUTE', 60);
+define('_TS_HOUR', _TS_MINUTE * 60);
+define('_TS_DAY', _TS_HOUR * 24);
+define('_TS_WEEK', _TS_DAY * 7);
+define('_TS_MONTH', _TS_DAY * 30);
+define('_TS_YEAR', _TS_DAY * 365);
+
+/**
+ * Хелперы для работы с текстовым выводом
+ */
+class Text
+{
+
+ /**
+ * Вывод окончаний русских слов с учетом числительных (например сообщение сообщения сообщений)
+ *
+ * @param intereg $n число
+ * @param string $form1 единственное
+ * @param string $form2 форма для 2-4
+ * @param string $form5 форма для 5 и более
+ * @return string нужная форма
+ */
+ static public function pluralForm($n, $form1, $form2, $form5)
+ {
+ $n = abs($n) % 100;
+ $n1 = $n % 10;
+ if ($n > 10 && $n < 20) return $form5;
+ if ($n1 > 1 && $n1 < 5) return $form2;
+ if ($n1 == 1) return $form1;
+ return $form5;
+ }
+
+ static public function my_trim($str, $size, $word=false)
+ {
+ if (mb_strlen($str)<=$size)
+ return $str;
+ if (!$word)
+ return mb_substr($str, 0, $size-3).'...';
+ $str = str_replace("\r", "", $str);
+ $str_space = str_replace("\n", " ", $str);
+ $words = explode(' ', mb_substr($str_space, 0, $size-3));
+ $len = mb_strlen(implode(' ', count($words) > 1 ? array_slice($words, 0, count($words)-1) : $words));
+ $str = mb_substr($str, 0, $len).'...';
+ return $str;
+ }
+
+ /**
+ * Формирование даты по-русски
+ * <br>так как при выстановке локали неправильно склоняет
+ *
+ * @see date
+ * @param string $format формат аналогичен date
+ * @param integer $time время
+ * @return string дата
+ */
+ static public function russian_date($format, $time=false)
+ {
+ static $translation = array(
+ "January" => "Января",
+ "February" => "Февраля",
+ "March" => "Марта",
+ "April" => "Апреля",
+ "May" => "Мая",
+ "June" => "Июня",
+ "July" => "Июля",
+ "August" => "Августа",
+ "September" => "Сентября",
+ "October" => "Октября",
+ "November" => "Ноября",
+ "December" => "Декабря",
+ "Monday" => "Понедельник",
+ "Tuesday" => "Вторник",
+ "Wednesday" => "Среда",
+ "Thursday" => "Четверг",
+ "Friday" => "Пятница",
+ "Saturday" => "Суббота",
+ "Sunday" => "Воскресенье",
+ );
+ return strtr(date($format, $time!==false ? $time : time()), $translation);
+ }
+
+ static public function date_ago($ts)
+ {
+ $dif = time() - $ts;
+
+ $prefix = '';
+ $special = false;
+
+ if($dif < _TS_MINUTE) {
+ $n = ($dif > 0 ? $dif : 1);
+
+ if($n >= 25 and $n <= 35) {
+ $word = 'полминуты';
+ $special = true;
+ }
+ else {
+ $word = self::pluralForm($n, 'секунду', 'секунды', 'секунд');
+ }
+ }
+ elseif($dif < _TS_HOUR) {
+ $n = (int) ($dif / _TS_MINUTE);
+
+ if($n >= 25 and $n <= 35) {
+ $word = 'полчаса';
+ $special = true;
+ }
+ else {
+ $word = self::pluralForm($n, 'минуту', 'минуты', 'минут');
+ }
+ }
+ elseif($dif < _TS_DAY) {
+ $n = (int) ($dif / _TS_HOUR);
+
+ $n2 = (int) (($dif % _TS_HOUR) / _TS_MINUTE);
+
+ if($n2 >= 20) {
+ $prefix = 'более ';
+ $word = self::pluralForm($n, 'часа', 'часов', 'часов');
+ }
+ else {
+ $word = self::pluralForm($n, 'час', 'часа', 'часов');
+ }
+ }
+ elseif($dif < _TS_WEEK) {
+ $n = (int) ($dif / _TS_DAY);
+
+ $n2 = (int) (($dif % _TS_DAY) / _TS_HOUR);
+
+ if($n2 >= 6) {
+ $prefix = 'более ';
+ $word = self::pluralForm($n, 'дня', 'дней', 'дней');
+ }
+ else {
+ $word = self::pluralForm($n, 'день', 'дня', 'дней');
+ }
+ }
+ elseif($dif < _TS_MONTH) {
+ $n = (int) ($dif / _TS_WEEK);
+
+ $n2 = (int) (($dif % _TS_WEEK) / _TS_DAY);
+
+ if($n2 >= 2) {
+ $prefix = 'более ';
+ $word = self::pluralForm($n, 'недели', 'недель', 'недель');
+ }
+ else {
+ $word = self::pluralForm($n, 'неделю', 'недели', 'недель');
+ }
+ }
+ elseif($dif < _TS_YEAR) {
+ $n = (int) ($dif / _TS_MONTH);
+
+ $n2 = (int) (($dif % _TS_MONTH) / _TS_WEEK);
+
+ if($n2 >= 1) {
+ $prefix = 'более ';
+ $word = self::pluralForm($n, 'месяца', 'месяцев', 'месяцев');
+ }
+ else {
+ $word = self::pluralForm($n, 'месяц', 'месяца', 'месяцев');
+ }
+ }
+ else {
+ $n = (int) ($dif / _TS_YEAR);
+
+ $n2 = (int) (($dif % _TS_YEAR) / _TS_MONTH);
+
+ if($n2 >= 1) {
+ $prefix = 'более ';
+ $word = self::pluralForm($n, 'года', 'лет', 'лет');
+ }
+ else {
+ $word = self::pluralForm($n, 'год', 'года', 'лет');
+ }
+ }
+
+ if($special) {
+ $ret = $word;
+ }
+ elseif($n == 1) {
+ $ret = "$prefix$word";
+ }
+ else {
+ $ret = "$prefix$n $word";
+ }
+
+ return $ret;
+ }
+
+
+}
\ No newline at end of file
-----------------------------------------------------------------------
Summary of changes:
QFW/Init.php | 13 ++-
QFW/QuickFW/Url.php | 13 ++-
lib/Modules/Scaffold/Fields.php | 4 +-
lib/Modules/Scaffold/ScaffoldController.php | 2 +-
lib/Modules/Scaffold/scaffold/index.php | 8 +-
lib/Text.php | 193 +++++++++++++++++++++++++++
lib/jquery.php | 21 +++
7 files changed, 241 insertions(+), 13 deletions(-)
create mode 100644 lib/Text.php
create mode 100644 lib/jquery.php
hooks/post-receive
--
quickfw
|