@jx3box/jx3box-ui 2.0.5 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/.storybook/preview.js +22 -13
  2. package/.storybook/storybookMocks.js +214 -0
  3. package/README.md +39 -43
  4. package/assets/css/bread/admin.less +20 -2
  5. package/assets/css/bread/breadcrumb.less +5 -2
  6. package/assets/css/comment/quick-reply.less +1 -1
  7. package/assets/css/common/left-sidebar.less +1 -1
  8. package/assets/css/interact/like2.less +5 -2
  9. package/assets/css/interact/qrcode.less +69 -0
  10. package/assets/css/single/author.less +15 -10
  11. package/assets/css/single/cms-single.less +1 -0
  12. package/assets/css/single/thx.less +34 -11
  13. package/assets/css/wiki/wiki-comments.less +176 -0
  14. package/assets/css/wiki/wiki-panel.less +177 -0
  15. package/assets/css/wiki/wiki-revisions.less +62 -0
  16. package/assets/data/nav.json +344 -10
  17. package/assets/img/comment/comment.svg +1 -1
  18. package/assets/img/comment/heart_1.svg +1 -1
  19. package/assets/img/comment/hide.svg +1 -1
  20. package/assets/img/leftsidebar/medal.svg +1 -1
  21. package/assets/img/leftsidebar/post.svg +27 -46
  22. package/i18n/messages/en-US.js +357 -22
  23. package/i18n/messages/vi.js +350 -22
  24. package/i18n/messages/zh-CN.js +469 -20
  25. package/i18n/messages/zh-TW.js +350 -22
  26. package/index.js +19 -7
  27. package/package.json +8 -5
  28. package/service/cms.js +22 -0
  29. package/service/commit-history.js +18 -0
  30. package/service/community.js +60 -0
  31. package/service/fav.js +5 -6
  32. package/src/App.vue +210 -80
  33. package/src/Breadcrumb.vue +24 -11
  34. package/src/CommonFooter.vue +2 -2
  35. package/src/Footer.vue +13 -5
  36. package/src/LeftSideToggle.vue +10 -3
  37. package/src/LeftSidebar.vue +19 -5
  38. package/src/Main.vue +9 -2
  39. package/src/RightSidebar.vue +12 -3
  40. package/src/SuspendCommon.vue +52 -38
  41. package/src/author/AuthorFans.vue +7 -5
  42. package/src/author/AuthorFollow.vue +14 -7
  43. package/src/author/AuthorGift.vue +25 -17
  44. package/src/author/AuthorInfo.vue +46 -19
  45. package/src/author/AuthorLink.vue +3 -1
  46. package/src/author/AuthorMedals.vue +5 -2
  47. package/src/author/AuthorPosts.vue +31 -13
  48. package/src/author/AuthorRss.vue +7 -3
  49. package/src/author/AuthorTeams.vue +3 -1
  50. package/src/author/UserPop.vue +29 -17
  51. package/src/bread/Admin.vue +55 -32
  52. package/src/bread/AdminDirectMessage.vue +15 -8
  53. package/src/bread/AdminDrop.vue +124 -45
  54. package/src/bread/CommunityAdmin.vue +527 -0
  55. package/src/bread/DesignTask.vue +30 -26
  56. package/src/bread/ListAdmin.vue +199 -0
  57. package/src/bread/MigrateCommunity.vue +192 -0
  58. package/src/bread/MoveToCommunityDialog.vue +234 -0
  59. package/src/comment/Avatar.vue +18 -24
  60. package/src/comment/CommentContent.vue +57 -37
  61. package/src/comment/CommentContentSimple.vue +61 -63
  62. package/src/comment/CommentInputForm.vue +45 -34
  63. package/src/comment/CommentWithReply.vue +9 -6
  64. package/src/comment/QuickReply.vue +5 -1
  65. package/src/comment/ReplyForReply.vue +6 -4
  66. package/src/comment/ReplyList.vue +28 -18
  67. package/src/comment/Upload.vue +24 -6
  68. package/src/filters/clientBy.vue +10 -8
  69. package/src/filters/markBy.vue +35 -31
  70. package/src/filters/menuBy.vue +20 -22
  71. package/src/filters/orderBy.vue +17 -11
  72. package/src/filters/tagBy.vue +4 -2
  73. package/src/filters/topicBy.vue +12 -10
  74. package/src/filters/versionBy.vue +5 -3
  75. package/src/filters/zlpBy.vue +29 -25
  76. package/src/footer/copyright.vue +5 -5
  77. package/src/footer/links.vue +2 -2
  78. package/src/footer/official.vue +1 -1
  79. package/src/footer/resource.vue +6 -6
  80. package/src/header/alternate.vue +35 -18
  81. package/src/header/asset.vue +9 -19
  82. package/src/header/box.vue +20 -8
  83. package/src/header/box2.vue +16 -9
  84. package/src/header/client.vue +7 -7
  85. package/src/header/lang.vue +41 -6
  86. package/src/header/logo.vue +2 -3
  87. package/src/header/manage.vue +2 -2
  88. package/src/header/message.vue +3 -3
  89. package/src/header/nav.vue +26 -23
  90. package/src/header/publish.vue +2 -2
  91. package/src/header/search.vue +2 -2
  92. package/src/header/shop.vue +2 -2
  93. package/src/header/user.vue +4 -4
  94. package/src/header/userInfo.vue +22 -24
  95. package/src/header/vip.vue +2 -2
  96. package/src/interact/BoxcoinAdmin.vue +30 -16
  97. package/src/interact/BoxcoinRecords.vue +28 -11
  98. package/src/interact/BoxcoinUser.vue +33 -17
  99. package/src/interact/Fav.vue +5 -1
  100. package/src/interact/Homework.vue +317 -0
  101. package/src/interact/Like.vue +4 -2
  102. package/src/interact/QRcode.vue +104 -0
  103. package/src/interact/Rss.vue +10 -4
  104. package/src/interact/Share.vue +18 -19
  105. package/src/interact/WatchLater.vue +5 -1
  106. package/src/main.js +1 -0
  107. package/src/single/Author.vue +5 -1
  108. package/src/single/CmsSingle.vue +29 -15
  109. package/src/single/Collection.vue +36 -26
  110. package/src/single/Comment.vue +19 -13
  111. package/src/single/Creators.vue +5 -3
  112. package/src/single/PostCollection.vue +158 -0
  113. package/src/single/PostDirectory.vue +0 -126
  114. package/src/single/PostGuide.vue +93 -0
  115. package/src/single/PostHeader.vue +39 -17
  116. package/src/single/PostTopic.vue +3 -3
  117. package/src/single/PostVersion.vue +219 -0
  118. package/src/single/RightAffix.vue +160 -0
  119. package/src/single/SimpleThx.vue +4 -2
  120. package/src/single/Thx.vue +14 -2
  121. package/src/single/VersionDialog.vue +238 -0
  122. package/src/stories/components/StoryPropsTable.vue +137 -0
  123. package/src/stories/filters/FilterGallery.stories.js +110 -0
  124. package/src/stories/filters/clientBy.stories.js +24 -0
  125. package/src/stories/filters/markBy.stories.js +6 -0
  126. package/src/stories/filters/menuBy.stories.js +6 -0
  127. package/src/stories/filters/orderBy.stories.js +6 -0
  128. package/src/stories/filters/tagBy.stories.js +6 -0
  129. package/src/stories/filters/topicBy.stories.js +6 -0
  130. package/src/stories/filters/versionBy.stories.js +6 -0
  131. package/src/stories/filters/zlpBy.stories.js +6 -0
  132. package/src/stories/interact/QRcode.stories.js +59 -0
  133. package/src/stories/layout/BaseShell.stories.js +38 -0
  134. package/src/stories/layout/Breadcrumb.stories.js +40 -0
  135. package/src/stories/layout/CommonFooter.stories.js +1 -1
  136. package/src/stories/layout/CommonHeader.stories.js +1 -1
  137. package/src/stories/layout/LeftSideToggle.stories.js +78 -0
  138. package/src/stories/layout/LeftSidebar.stories.js +40 -0
  139. package/src/stories/layout/Main.stories.js +41 -0
  140. package/src/stories/layout/RightSidebar.stories.js +36 -0
  141. package/src/stories/layout/StorybookShell.vue +271 -0
  142. package/src/stories/layout/SuspendCommon.stories.js +67 -0
  143. package/src/stories/layout/SuspendCommonStage.vue +143 -0
  144. package/src/stories/mockData.js +369 -0
  145. package/src/stories/other/UserPop.stories.js +51 -0
  146. package/src/stories/single/Author.stories.js +19 -0
  147. package/src/stories/single/AuthorStoryStage.vue +103 -0
  148. package/src/stories/single/CmsSingle.stories.js +19 -0
  149. package/src/stories/single/CmsSingleStoryStage.vue +118 -0
  150. package/src/stories/single/Collection.stories.js +34 -0
  151. package/src/stories/single/Comment.stories.js +36 -0
  152. package/src/stories/single/Creators.stories.js +34 -0
  153. package/src/stories/single/PostCollection.stories.js +34 -0
  154. package/src/stories/single/PostDirectory.stories.js +31 -0
  155. package/src/stories/single/PostGuide.stories.js +47 -0
  156. package/src/stories/single/PostHeader.stories.js +39 -0
  157. package/src/stories/single/PostVersion.stories.js +41 -0
  158. package/src/stories/single/RightAffix.stories.js +84 -0
  159. package/src/stories/single/SimpleThx.stories.js +39 -0
  160. package/src/stories/single/SingleGallery.stories.js +207 -0
  161. package/src/stories/single/Thx.stories.js +38 -0
  162. package/src/stories/wiki/GamePrice.stories.js +64 -0
  163. package/src/stories/wiki/WikiComments.stories.js +58 -0
  164. package/src/stories/wiki/WikiPanel.stories.js +69 -0
  165. package/src/stories/wiki/WikiRevisions.stories.js +47 -0
  166. package/src/wiki/GamePrice.vue +107 -0
  167. package/src/wiki/WikiComment.vue +153 -0
  168. package/src/wiki/WikiComments.vue +206 -0
  169. package/src/wiki/WikiPanel.vue +121 -0
  170. package/src/wiki/WikiRevisions.vue +125 -0
  171. package/vue.config.js +2 -12
  172. package/assets/css/common/bottom.less +0 -25
  173. package/assets/css/editor/article.less +0 -36
  174. package/assets/css/editor/combo.less +0 -362
  175. package/assets/css/editor/resource.less +0 -399
  176. package/assets/css/editor/tinymce.less +0 -100
  177. package/assets/css/editor/upload.less +0 -136
  178. package/assets/css/module/author.less +0 -231
  179. package/assets/css/module/buff.less +0 -88
  180. package/assets/css/module/directory.less +0 -165
  181. package/assets/css/module/icon.less +0 -25
  182. package/assets/css/module/item.less +0 -279
  183. package/assets/css/module/item_simple.less +0 -58
  184. package/assets/css/module/jx3_element.less +0 -5
  185. package/assets/css/module/macro.less +0 -89
  186. package/assets/css/module/npc.less +0 -265
  187. package/assets/css/module/resource.less +0 -93
  188. package/assets/css/module/skill.less +0 -74
  189. package/assets/css/module/talent.less +0 -495
  190. package/assets/js/a.js +0 -46
  191. package/assets/js/code.js +0 -13
  192. package/assets/js/combo.js +0 -40
  193. package/assets/js/directory.js +0 -114
  194. package/assets/js/filter2.js +0 -186
  195. package/assets/js/fold.js +0 -11
  196. package/assets/js/gallery.js +0 -14
  197. package/assets/js/hljs_languages.js +0 -177
  198. package/assets/js/iframe.js +0 -38
  199. package/assets/js/img.js +0 -23
  200. package/assets/js/item/attribute_percent.js +0 -88
  201. package/assets/js/item/bind.js +0 -18
  202. package/assets/js/item/border.js +0 -19
  203. package/assets/js/item/border_quest.js +0 -12
  204. package/assets/js/item/color.js +0 -25
  205. package/assets/js/item/hljs_languages.js +0 -177
  206. package/assets/js/item/icon_url.js +0 -15
  207. package/assets/js/item/second_format.js +0 -19
  208. package/assets/js/jx3_element.js +0 -73
  209. package/assets/js/katex.js +0 -181
  210. package/assets/js/macro.js +0 -16
  211. package/assets/js/nextpage.js +0 -4
  212. package/assets/js/pswp.js +0 -67
  213. package/assets/js/pswp_template.js +0 -66
  214. package/assets/js/pz_iframe.js +0 -30
  215. package/assets/js/qixue.js +0 -28
  216. package/assets/js/renderImgPreview.js +0 -18
  217. package/assets/js/script.js +0 -6
  218. package/assets/js/stat.js +0 -107
  219. package/assets/js/talent2.js +0 -21
  220. package/assets/js/tex-mml-chtml.js +0 -36310
  221. package/assets/js/voice.js +0 -238
  222. package/assets/js/xss.js +0 -130
  223. package/src/editor/Article.vue +0 -230
  224. package/src/editor/BoxResource.vue +0 -441
  225. package/src/editor/Resource.vue +0 -623
  226. package/src/editor/Tinymce.vue +0 -204
  227. package/src/editor/Upload.vue +0 -277
  228. package/src/editor/UploadAlum.vue +0 -176
  229. package/src/editor/UploadBanner.vue +0 -156
  230. package/src/editor/components/Author.vue +0 -322
  231. package/src/editor/components/Avatar.vue +0 -95
  232. package/src/editor/components/Buff.vue +0 -80
  233. package/src/editor/components/Combo.vue +0 -259
  234. package/src/editor/components/Equip.vue +0 -299
  235. package/src/editor/components/GameText.vue +0 -242
  236. package/src/editor/components/Item.vue +0 -325
  237. package/src/editor/components/ItemSimple.vue +0 -134
  238. package/src/editor/components/Medal.vue +0 -43
  239. package/src/editor/components/Npc.vue +0 -215
  240. package/src/editor/components/PostAuthor.vue +0 -102
  241. package/src/editor/components/Skill.vue +0 -71
@@ -2,27 +2,59 @@
2
2
  <div class="c-admin-drop">
3
3
  <el-dropdown trigger="click" @command="handleCommand">
4
4
  <el-button type="primary" class="c-admin-button c-admin-drop__button" :size="buttonSize" icon="Setting">
5
- 管理 <el-icon style="margin-left: 5px"><ArrowDown></ArrowDown></el-icon>
5
+ {{ $jx3boxT("jx3boxUi.adminDrop.manage", "管理") }}
6
+ <el-icon style="margin-left: 5px"><ArrowDown></ArrowDown></el-icon>
6
7
  </el-button>
7
8
  <template #dropdown>
8
9
  <el-dropdown-menu>
9
- <el-dropdown-item v-if="isEditor" command="toggleAdminPanel" icon="Setting">
10
- <span>设置</span>
10
+ <el-dropdown-item
11
+ v-if="!isCommunity && hasPermission('update_post')"
12
+ command="toggleAdminPanel"
13
+ icon="Setting"
14
+ >
15
+ <span>{{ $jx3boxT("jx3boxUi.adminDrop.setting", "设置") }}</span>
11
16
  </el-dropdown-item>
12
- <el-dropdown-item v-if="isEditor" command="directMessage" icon="Message">
13
- <span>私信</span>
17
+ <el-dropdown-item v-else-if="isCommunity" command="toggleCommunityAdminPanel" icon="Setting">
18
+ <span>{{ $jx3boxT("jx3boxUi.adminDrop.setting", "设置") }}</span>
19
+ </el-dropdown-item>
20
+ <el-dropdown-item
21
+ v-if="hasPermission('update_post') && !isCommunity"
22
+ command="editPost"
23
+ icon="Edit"
24
+ >
25
+ <span>{{ $jx3boxT("jx3boxUi.adminDrop.edit", "编辑") }}</span>
26
+ </el-dropdown-item>
27
+ <el-dropdown-item
28
+ v-if="hasPermission('create_system_message')"
29
+ command="directMessage"
30
+ icon="Message"
31
+ >
32
+ <span>{{ $jx3boxT("jx3boxUi.adminDrop.message", "私信") }}</span>
33
+ </el-dropdown-item>
34
+ <el-dropdown-item
35
+ v-if="hasPermission('manage_post_move') && showMove"
36
+ command="onMoveToCommunity"
37
+ icon="Refresh"
38
+ >
39
+ <span>转移</span>
40
+ </el-dropdown-item>
41
+ <el-dropdown-item command="migrate" v-if="isCommunity" icon="Refresh">
42
+ <span>迁移</span>
14
43
  </el-dropdown-item>
15
44
  <el-dropdown-item icon="UploadFilled" command="designTask" v-if="hasPermission('push_banner')">
16
- <span>推送</span>
45
+ <span>{{ $jx3boxT("jx3boxUi.adminDrop.push", "推送") }}</span>
17
46
  </el-dropdown-item>
18
47
  <el-dropdown-item v-if="showRobotPic" icon="Refresh" command="pictureTask">
19
- <span>刷图</span>
48
+ <span>{{ $jx3boxT("jx3boxUi.adminDrop.pictureTask", "刷图") }}</span>
20
49
  </el-dropdown-item>
21
50
  </el-dropdown-menu>
22
51
  </template>
23
52
  </el-dropdown>
24
53
 
25
54
  <design-task v-model="showDesignTask" :post="post"></design-task>
55
+ <CommunityAdmin v-model="communityAdminVisible" :postId="post && post.id" />
56
+ <MoveToCommunityDialog v-model="moveVisible" :post="post" />
57
+ <MigrateCommunity v-model="showMigrate" :communityId="sourceId" />
26
58
  </div>
27
59
  </template>
28
60
 
@@ -30,14 +62,30 @@
30
62
  import Bus from "../../utils/bus";
31
63
  import User from "@jx3box/jx3box-common/js/user";
32
64
  import DesignTask from "./DesignTask.vue";
65
+ import MoveToCommunityDialog from "./MoveToCommunityDialog.vue";
66
+ import MigrateCommunity from "./MigrateCommunity.vue";
67
+ import CommunityAdmin from "./CommunityAdmin.vue";
33
68
  import { sendMessage } from "../../service/admin";
34
69
  import { refreshQQBotImage } from "../../service/cms";
70
+ import i18nMixin from "../../i18n/mixin";
35
71
  export default {
36
72
  name: "AdminDrop",
73
+ mixins: [i18nMixin],
37
74
  components: {
38
75
  DesignTask,
76
+ MoveToCommunityDialog,
77
+ MigrateCommunity,
78
+ CommunityAdmin,
39
79
  },
40
80
  props: {
81
+ isCommunity: {
82
+ type: Boolean,
83
+ default: false,
84
+ },
85
+ showMove: {
86
+ type: Boolean,
87
+ default: false,
88
+ },
41
89
  buttonSize: {
42
90
  type: String,
43
91
  default: "default",
@@ -57,7 +105,10 @@ export default {
57
105
  },
58
106
  data() {
59
107
  return {
108
+ moveVisible: false,
109
+ communityAdminVisible: false,
60
110
  showDesignTask: false,
111
+ showMigrate: false,
61
112
  };
62
113
  },
63
114
  computed: {
@@ -65,48 +116,71 @@ export default {
65
116
  return User.isEditor();
66
117
  },
67
118
  sourceId() {
68
- return this.post?.ID;
119
+ if (this.isCommunity) {
120
+ return this.post?.id;
121
+ } else {
122
+ return this.post?.ID;
123
+ }
69
124
  },
70
125
  sourceType() {
71
- return this.post?.post_type;
126
+ if (this.isCommunity) {
127
+ return "community";
128
+ } else {
129
+ return this.post?.post_type;
130
+ }
131
+ },
132
+ edit_link: function () {
133
+ return editLink(this.post?.post_type, this.post?.ID);
72
134
  },
73
135
  },
74
136
  methods: {
75
137
  handleCommand(command) {
76
138
  this[command]();
77
139
  },
140
+ toggleCommunityAdminPanel() {
141
+ this.communityAdminVisible = true;
142
+ },
78
143
  toggleAdminPanel() {
79
144
  Bus.emit("toggleAdminPanel");
80
145
  },
146
+ onMoveToCommunity() {
147
+ this.moveVisible = true;
148
+ },
81
149
  directMessage() {
82
- this.$prompt("请输入私信内容", "管理私信", {
83
- confirmButtonText: "确定",
84
- cancelButtonText: "取消",
85
- inputPlaceholder: "请输入私信内容",
86
- inputValidator: (value) => {
87
- if (!value) {
88
- return "请输入私信内容";
89
- }
90
- },
91
- beforeClose: (action, instance, done) => {
92
- if (action === "confirm") {
93
- const data = {
94
- source_id: String(this.sourceId),
95
- source_type: this.sourceType,
96
- user_id: this.userId,
97
- content: "运营通知:" + instance.inputValue,
98
- type: "system",
99
- subtype: "admin_message",
100
- };
101
- sendMessage(data).then(() => {
102
- this.$message.success("私信成功");
150
+ this.$prompt(
151
+ this.$jx3boxT("jx3boxUi.adminDrop.messageInput", "请输入私信内容"),
152
+ this.$jx3boxT("jx3boxUi.adminDrop.messageTitle", "管理私信"),
153
+ {
154
+ confirmButtonText: this.$jx3boxT("jx3boxUi.common.confirm", "确定"),
155
+ cancelButtonText: this.$jx3boxT("jx3boxUi.common.cancel", "取消"),
156
+ inputPlaceholder: this.$jx3boxT("jx3boxUi.adminDrop.messageInput", "请输入私信内容"),
157
+ inputValidator: (value) => {
158
+ if (!value) {
159
+ return this.$jx3boxT("jx3boxUi.adminDrop.messageInput", "请输入私信内容");
160
+ }
161
+ },
162
+ beforeClose: (action, instance, done) => {
163
+ if (action === "confirm") {
164
+ const data = {
165
+ source_id: String(this.sourceId),
166
+ source_type: this.sourceType,
167
+ user_id: this.userId,
168
+ content:
169
+ this.$jx3boxT("jx3boxUi.adminDrop.noticePrefix", "运营通知:") +
170
+ instance.inputValue,
171
+ type: "system",
172
+ subtype: "admin_message",
173
+ };
174
+ sendMessage(data).then(() => {
175
+ this.$message.success(this.$jx3boxT("jx3boxUi.adminDrop.messageSuccess", "私信成功"));
176
+ done();
177
+ });
178
+ } else {
103
179
  done();
104
- });
105
- } else {
106
- done();
107
- }
108
- },
109
- }).catch(() => {});
180
+ }
181
+ },
182
+ }
183
+ ).catch(() => {});
110
184
  },
111
185
  designTask() {
112
186
  this.showDesignTask = true;
@@ -128,28 +202,33 @@ export default {
128
202
  task_target_id,
129
203
  }).then((res) => {
130
204
  if (!res.data.code) {
131
- this.$message.success("QQ机器人图片生成提交成功");
205
+ this.$message.success(
206
+ this.$jx3boxT("jx3boxUi.adminDrop.pictureSuccess", "QQ机器人图片生成提交成功")
207
+ );
132
208
  }
133
209
  });
134
210
  } else {
135
- this.$message.error("参数不正确");
211
+ this.$message.error(this.$jx3boxT("jx3boxUi.adminDrop.invalidParams", "参数不正确"));
136
212
  }
137
213
  },
214
+ editPost() {
215
+ location.href = this.edit_link + "?from=admin";
216
+ },
138
217
  hasPermission(permission) {
139
218
  return User.hasPermission(permission);
140
219
  },
220
+ migrate() {
221
+ this.showMigrate = true;
222
+ },
141
223
  },
142
224
  };
143
225
  </script>
144
226
 
145
227
  <style lang="less">
146
228
  .c-admin-drop {
147
- float: right;
148
- margin-top: -2px;
149
- margin-right: 10px;
150
- }
151
- .c-admin-drop__button {
152
- padding: 8px 18px !important;
153
- align-items: center;
229
+ .c-admin-drop__button {
230
+ // padding: 8px 12px !important;
231
+ // align-items: center;
232
+ }
154
233
  }
155
234
  </style>