From d8f3add153359b2fd5cfd5f5bb20505db7b76971 Mon Sep 17 00:00:00 2001 From: Semenov Date: Mon, 13 Apr 2015 21:43:51 +0400 Subject: [PATCH] 1 --- controllers/AdminShopOrderController.php | 2 +- models/ShopOrder.php | 30 ++++++++++++++++++++++++++++++ views/admin-shop-order/index.php | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++------- widgets/orders/OrdersWidget.php | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 121 insertions(+), 8 deletions(-) create mode 100644 widgets/orders/OrdersWidget.php diff --git a/controllers/AdminShopOrderController.php b/controllers/AdminShopOrderController.php index c7772d1..4c50b34 100644 --- a/controllers/AdminShopOrderController.php +++ b/controllers/AdminShopOrderController.php @@ -21,7 +21,7 @@ class AdminShopOrderController extends AdminModelEditorSmartController public function init() { $this->_label = "Заказы"; - $this->_modelShowAttribute = "name"; + $this->_modelShowAttribute = "id"; $this->_modelClassName = ShopOrder::className(); $this->modelValidate = true; diff --git a/models/ShopOrder.php b/models/ShopOrder.php index c01aaa3..8de342b 100644 --- a/models/ShopOrder.php +++ b/models/ShopOrder.php @@ -9,6 +9,8 @@ namespace skeeks\modules\cms\shop\models; use skeeks\cms\models\behaviors\HasStatus; use skeeks\cms\models\behaviors\HasStatusBoolean; use skeeks\cms\models\Core; +use skeeks\modules\cms\money\Currency; +use skeeks\modules\cms\money\Money; use \Yii; use yii\helpers\ArrayHelper; @@ -186,4 +188,32 @@ class ShopOrder extends Core } + + + /** + * @return Money + */ + public function price() + { + if ($this->price) + { + return Money::fromString((string) $this->price, $this->currency()); + } + + return Money::fromString((string) 0, $this->currency()); + } + + /** + * @return Currency + */ + public function currency() + { + if ($currency = $this->getAttribute($this->currency)) + { + return Currency::getInstance($currency); + } + + return Currency::getInstance(\Yii::$app->money->currency); + } + } \ No newline at end of file diff --git a/views/admin-shop-order/index.php b/views/admin-shop-order/index.php index 0cd4a20..2099b7e 100644 --- a/views/admin-shop-order/index.php +++ b/views/admin-shop-order/index.php @@ -14,10 +14,7 @@ use skeeks\cms\modules\admin\widgets\GridView; /* @var $searchModel common\models\searchs\Game */ /* @var $dataProvider yii\data\ActiveDataProvider */ -$dataProvider->sort->defaultOrder = [ - 'active' => SORT_DESC, -]; - +$dataProvider->sort->defaultOrder = ['id' => SORT_DESC]; ?> sort->defaultOrder = [ 'class' => \skeeks\cms\modules\admin\grid\ActionColumn::className(), 'controller' => $controller ], - 'name', + + [ + 'class' => \skeeks\cms\grid\CreatedAtColumn::className(), + ], + + [ + 'class' => \yii\grid\DataColumn::className(), + 'value' => function(\skeeks\modules\cms\shop\models\ShopOrder $model) + { + return "№" . $model->id; + }, + 'label' => 'Номер заказа', + 'attribute' => 'id', + //'filter' => \yii\helpers\Html::input(), + ], + + + [ + 'class' => \yii\grid\DataColumn::className(), + 'value' => function(\skeeks\modules\cms\shop\models\ShopOrder $model) + { + $result = []; + foreach ($model->shopBaskets as $shopBasket) + { + $result[] = \yii\helpers\Html::a("[{$shopBasket->product->id}] " . $shopBasket->product->name . " ({$shopBasket->quantity} шт.)", $shopBasket->product->getPageUrl(), [ + 'data' => + [ + 'pjax' => '0' + ], + 'target' => '_blank', + 'title' => 'Смотреть товар на сайте (откроется в новой вкладке)' + ]); + } + + return implode('
', $result); + }, + 'label' => 'Позиции', + 'format' => 'raw', + ], + + + [ + 'class' => \skeeks\cms\grid\UserColumnData::className(), + 'attribute' => 'user_id', + 'label' => 'Покупатель' + ], + [ - 'class' => \skeeks\cms\grid\BooleanColumn::className(), - 'attribute' => 'active' + 'attribute' => 'price', + 'label' => 'Сумма', + 'class' => \yii\grid\DataColumn::className(), + 'value' => function(\skeeks\modules\cms\shop\models\ShopOrder $model) + { + return \Yii::$app->money->intlFormatter()->format($model->price()); + }, ], ], ]); ?> diff --git a/widgets/orders/OrdersWidget.php b/widgets/orders/OrdersWidget.php new file mode 100644 index 0000000..c24bfca --- /dev/null +++ b/widgets/orders/OrdersWidget.php @@ -0,0 +1,35 @@ + + * @link http://skeeks.com/ + * @copyright 2010 SkeekS (СкикС) + * @date 03.04.2015 + */ +namespace skeeks\modules\cms\shop\widgets\orders; + +use skeeks\cms\widgets\base\hasModelsSmart\WidgetHasModelsSmart; +use skeeks\cms\widgets\base\hasTemplate\WidgetHasTemplate; +use skeeks\modules\cms\shop\assets\ShopAsset; +use skeeks\modules\cms\shop\models\ShopOrder; +use yii\helpers\Json; + +/** + * Class OrdersWidget + * @package skeeks\modules\cms\shop\widgets + */ +class OrdersWidget extends WidgetHasModelsSmart +{ + public $modelClassName = '\skeeks\modules\cms\shop\models\ShopOrder'; + public $title = ''; + public function rules() + { + return ArrayHelper::merge(parent::rules(), [ + ]); + } + + public function attributeLabels() + { + return ArrayHelper::merge(parent::attributeLabels(), [ + ]); + } +} -- libgit2 0.26.0