Widget.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace app\common\modules\widget;
  3. class Widget
  4. {
  5. /**
  6. * @var self
  7. */
  8. static $current;
  9. private $items;
  10. /**
  11. * Income constructor.
  12. */
  13. public function __construct()
  14. {
  15. self::$current = $this;
  16. }
  17. static public function current()
  18. {
  19. if (!isset(self::$current)) {
  20. return new static();
  21. }
  22. return self::$current;
  23. }
  24. private function _getItems()
  25. {
  26. $result = [
  27. 'vue-goods' => [
  28. 'base' => [
  29. 'title' => '基础信息',
  30. 'class' => \app\backend\modules\goods\widget\GoodsWidget::class,
  31. ],
  32. 'param' => [
  33. 'title' => '属性',
  34. 'class' => \app\backend\modules\goods\widget\ParamWidget::class,
  35. ],
  36. 'describe' => [
  37. 'title' => '商品描述',
  38. 'class' => \app\backend\modules\goods\widget\DescribeWidget::class,
  39. ],
  40. 'option' => [
  41. 'title' => '商品规格',
  42. 'class' => \app\backend\modules\goods\widget\OptionWidget::class,
  43. ],
  44. 'dispatch' => [
  45. 'title' => '配送',
  46. 'class' => \app\backend\modules\goods\widget\DispatchWidget::class,
  47. ],
  48. 'discount' => [
  49. 'title' => '折扣',
  50. 'class' => \app\backend\modules\goods\widget\DiscountWidget::class,
  51. ],
  52. 'sale' => [
  53. 'title' => '营销',
  54. 'class' =>\app\backend\modules\goods\widget\SaleWidget::class,
  55. ],
  56. 'notice' => [
  57. 'title' => '消息通知',
  58. 'class' =>\app\backend\modules\goods\widget\NoticeWidget::class,
  59. ],
  60. 'filtering' => [
  61. 'title' => '商品标签',
  62. 'class' =>\app\backend\modules\goods\widget\FilteringWidget::class,
  63. ],
  64. 'service' => [
  65. 'title' => '服务提供',
  66. 'class' =>\app\backend\modules\goods\widget\ServiceWidget::class,
  67. ],
  68. 'div_from' => [
  69. 'title' => '表单',
  70. 'class' =>\app\backend\modules\goods\widget\DivFromWidget::class,
  71. ],
  72. 'share' => [
  73. 'title' => '分享关注',
  74. 'class' => \app\backend\modules\goods\widget\ShareWidget::class,
  75. ],
  76. 'privilege' => [
  77. 'title' => '权限',
  78. 'class' => \app\backend\modules\goods\widget\PrivilegeWidget::class,
  79. ],
  80. 'coupon' => [
  81. 'title' => '优惠券',
  82. 'class' => \app\backend\modules\goods\widget\CouponWidget::class,
  83. ],
  84. 'limitbuy' => [
  85. 'title' => '限时购',
  86. 'class' => \app\backend\modules\goods\widget\LimitBuyWidget::class,
  87. ],
  88. 'invite_page' => [
  89. 'title' => '邀请页面',
  90. 'class' => \app\backend\modules\goods\widget\InvitePageWidget::class,
  91. ],
  92. 'advertising' => [
  93. 'title' => '广告宣传语',
  94. 'class' => \app\backend\modules\goods\widget\AdvertisingWidget::class,
  95. ],
  96. 'spec_info' => [
  97. 'title' => '规格信息',
  98. 'class' => \app\backend\modules\goods\widget\SpecInfoWidget::class,
  99. ],
  100. 'trade_set' => [
  101. 'title' => '交易设置',
  102. 'class' => \app\backend\modules\goods\widget\TradeSetWidget::class,
  103. ],
  104. ],
  105. 'withdraw' => [
  106. 'income' => [
  107. 'title' => '收入提现基础设置',
  108. 'class' => 'app\backend\widgets\finance\IncomeWidget',
  109. ],
  110. 'notice' => [
  111. 'title' => '收入提现通知',
  112. 'class' => 'app\backend\widgets\finance\WithdrawNoticeWidget',
  113. ]
  114. ],
  115. 'member' => [
  116. ],
  117. //vue统一订单详情页显示挂件
  118. 'order_detail' => [
  119. 'order_tax_fees' => [
  120. 'title' => '含税',
  121. 'class' => 'app\backend\widgets\order\detail\TaxFeesWidget',
  122. ],
  123. ],
  124. ];
  125. $plugins = app('plugins')->getEnabledPlugins('*');
  126. foreach ($plugins as $plugin) {
  127. foreach ($plugin->app()->getWidgetItems() as $key => $item) {
  128. array_set($result, $key, $item);
  129. }
  130. }
  131. return $result;
  132. }
  133. public function getItems()
  134. {
  135. if (!isset($this->items)) {
  136. $this->items = $this->_getItems();
  137. }
  138. return $this->items;
  139. }
  140. public function getItem($key)
  141. {
  142. return array_get($this->getItems(), $key);
  143. }
  144. public function clearItems()
  145. {
  146. $this->items = null;
  147. }
  148. }