Skip to content

Commit

Permalink
feat: 支持发布视图
Browse files Browse the repository at this point in the history
  • Loading branch information
terwer committed Aug 16, 2023
1 parent b041ca9 commit c286a64
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 43 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,12 @@ Names not listed in order
- [X] **Platform switch**: All platforms support enabling and disabling, the blog garden is enabled by default, and can be
disabled at any time
- [X] **Dynamic Newly Added**: Support custom adding platform
- [ ] **Smart Classification**: Support smart tags, smart slug aliases, smart summaries, and continue to improve
- [X] **Smart Classification**: Support smart tags, smart slug aliases, smart summaries, and continue to improve
- [X] **Article Binding**: Support linking existing platform articles to siyuan-note to facilitate follow-up management,
support Siyuan->platform one-way synchronization
- [X] **Adapt to Theme**: Automatically adapt to dark mode and light mode
- [X] **Language support**: multi-language support, support Chinese version and English version
- [ ] **Release view**: Support multiple release views, simple mode, detailed mode and source code mode
- [X] **Release view**: Support multiple release views, simple mode, detailed mode and source code mode
- [X] **Multiple deployments**: support Siyuan notes plugin<sup>Highly recommended</sup>, Chrome browser extension, self-deployment

This plugin promises that the basic functions will be free forever, and the follow-up related to intelligent AI may be charged, and the closed beta stage is completely free. If you want to support developers, please [feel free to support](https://github.com/terwer/siyuan-plugin-publisher/blob/main/README_zh_CN.md#Donate) here.
Expand Down
4 changes: 2 additions & 2 deletions README_zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,11 @@
- [X] **支持扩展**:基于统一的博客 API 规范,内置 metaweblogAPI 、 WordPress 、Wechatsync 和 Github 支持,并提供了统一的适配器,理论上可支持扩展到任何平台
- [X] **平台开关**:所有平台均支持启用禁用,默认开启博客园,可随时禁用
- [X] **动态新增**:支持自定义添加平台
- [ ] **智能分类**:支持智能标签、智能 slug 别名、智能摘要,并持续完善中
- [X] **智能分类**:支持智能标签、智能 slug 别名、智能摘要,并持续完善中
- [X] **文章绑定**:支持关联已有的平台文章到思源笔记,方便后续管理,支持思源-> 平台单向同步
- [X] **适应主题**:自动适配暗黑模式与浅色模式
- [X] **语言支持**:多语言支持,支持中文版和英文版
- [ ] **发布视图**:支持多种发布视图,简单模式、详细模式和源码模式
- [X] **发布视图**:支持多种发布视图,简单模式、详细模式和源码模式
- [X] **多种部署**:支持思源笔记插件<sup>强烈推荐</sup>、Chrome 浏览器扩展、自部署

本插件承诺,基础功能永久免费,智能AI相关的后续可能会收费,内测阶段完全免费。如果您想支持开发者,请在这里 [随意打赏](https://github.com/terwer/siyuan-plugin-publisher/blob/main/README_zh_CN.md#捐赠)
Expand Down
8 changes: 5 additions & 3 deletions src/components/publish/BatchPublishIndex.vue
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import { createAppLogger } from "~/src/utils/appLogger.ts"
import PublishTips from "~/src/components/publish/form/PublishTips.vue"
import PublishPlatform from "~/src/components/publish/form/PublishPlatform.vue"
import { markRaw, onMounted, reactive } from "vue"
import { markRaw, onMounted, reactive, toRaw } from "vue"
import { usePublish } from "~/src/composables/usePublish.ts"
import { useSiyuanApi } from "~/src/composables/useSiyuanApi.ts"
import { useVueI18n } from "~/src/composables/useVueI18n.ts"
Expand Down Expand Up @@ -91,7 +91,7 @@ const formData = reactive({
dynList: <string[]>[],
// 页面模式
editType: isDev ? PageEditMode.EditMode_complex : PageEditMode.EditMode_simple,
editType: PageEditMode.EditMode_simple,
// =========================
// sync attrs end
// =========================
Expand Down Expand Up @@ -242,6 +242,8 @@ onMounted(async () => {
// 思源笔记原始文章数据
const siyuanPost = await blogApi.getPost(id)
formData.siyuanPost = siyuanPost
formData.editType = isDev ? PageEditMode.EditMode_complex : PageEditMode.EditMode_simple
logger.debug("batch inited siyuanPost =>", toRaw(formData.siyuanPost))
})
</script>

Expand Down Expand Up @@ -282,7 +284,7 @@ onMounted(async () => {
<div class="publish-form">
<el-form label-width="100px">
<!-- 编辑模式选择 -->
<edit-mode-select @emitSyncEditMode="syncEditMode" />
<edit-mode-select v-model:edit-type="formData.editType" @emitSyncEditMode="syncEditMode" />

<!--
--------------------------------------
Expand Down
27 changes: 8 additions & 19 deletions src/components/publish/SinglePublishDoPublish.vue
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ const formData = reactive({
useAi: isDev,
// 页面模式
editType: isDev ? PageEditMode.EditMode_complex : PageEditMode.EditMode_simple,
editType: PageEditMode.EditMode_simple,
// =========================
// sync attrs end
// =========================
Expand Down Expand Up @@ -283,8 +283,8 @@ const onBack = () => {
onMounted(async () => {
logger.info("获取到的ID为=>", id)
await initPage()
formData.editType = isDev ? PageEditMode.EditMode_complex : PageEditMode.EditMode_simple
formData.isInit = true
})
</script>
Expand All @@ -300,7 +300,7 @@ onMounted(async () => {
<div class="publish-form">
<el-form label-width="100px">
<!-- 编辑模式选择 -->
<edit-mode-select @emitSyncEditMode="syncEditMode" />
<edit-mode-select v-model:edit-type="formData.editType" @emitSyncEditMode="syncEditMode" />

<!--
--------------------------------------
Expand All @@ -309,7 +309,7 @@ onMounted(async () => {
-->
<source-mode
v-if="formData.editType === PageEditMode.EditMode_source"
v-model="formData.siyuanPost"
v-model="formData.mergedPost"
:api-type="key"
:cfg="formData.publishCfg.cfg"
@emitSyncPost="syncPost"
Expand All @@ -320,40 +320,29 @@ onMounted(async () => {
<el-form-item :label="t('main.title')">
<el-input v-model="formData.mergedPost.title" />
</el-form-item>
<el-alert
v-if="
formData.method === MethodEnum.METHOD_EDIT &&
!StrUtil.isEmptyString(formData.changeTips.title) &&
formData.siyuanPost.title !== formData.platformPost.title
"
class="top-tip"
:title="formData.changeTips.title"
type="error"
:closable="false"
/>
</div>
<el-divider border-style="dashed" />

<div v-if="formData.editType === PageEditMode.EditMode_complex" class="complex-mode">
<!-- 别名字段 -->
<el-form-item :label="t('main.slug')">
<el-input v-model="formData.siyuanPost.wp_slug" :disabled="true" />
<el-input v-model="formData.mergedPost.wp_slug" :disabled="true" />
</el-form-item>

<!-- 摘要 -->
<publish-description
v-model:use-ai="formData.useAi"
v-model:page-id="id"
v-model:desc="formData.siyuanPost.shortDesc"
v-model:content="formData.siyuanPost.html"
v-model:desc="formData.mergedPost.shortDesc"
v-model:content="formData.mergedPost.html"
@emitSyncDesc="syncDesc"
/>

<!-- 标签 -->
<publish-tags />

<!-- 发布时间 -->
<publish-time v-model="formData.siyuanPost" @emitSyncPublishTime="syncPublishTime" />
<publish-time v-model="formData.mergedPost" @emitSyncPublishTime="syncPublishTime" />

<el-divider border-style="dashed" />
</div>
Expand Down
29 changes: 21 additions & 8 deletions src/components/publish/form/EditModeSelect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,34 @@

<script setup lang="ts">
import { PageEditMode } from "~/src/models/pageEditMode.ts"
import { reactive } from "vue"
import { reactive, watch } from "vue"
import { useVueI18n } from "~/src/composables/useVueI18n.ts"
import { isDev } from "~/src/utils/constants.ts"
const { t } = useVueI18n()
const pageModeData = reactive({
etype: isDev ? PageEditMode.EditMode_complex : PageEditMode.EditMode_simple,
const props = defineProps({
editType: {
type: Number,
default: PageEditMode.EditMode_simple,
},
})
const formData = reactive({
etype: props.editType,
})
watch(
() => props.editType,
(newValue) => {
formData.etype = newValue
}
)
const emit = defineEmits(["emitSyncEditMode"])
// methods
const onEditModeChange = (val: PageEditMode) => {
pageModeData.etype = val
formData.etype = val
emit("emitSyncEditMode", val)
}
</script>
Expand All @@ -50,17 +63,17 @@ const onEditModeChange = (val: PageEditMode) => {
<el-form-item :label="t('main.publish.editmode')">
<el-button-group>
<el-button
:type="pageModeData.etype === PageEditMode.EditMode_simple ? 'primary' : 'default'"
:type="formData.etype === PageEditMode.EditMode_simple ? 'primary' : 'default'"
@click="onEditModeChange(PageEditMode.EditMode_simple)"
>{{ t("main.publish.editmode.simple") }}
</el-button>
<el-button
:type="pageModeData.etype === PageEditMode.EditMode_complex ? 'primary' : 'default'"
:type="formData.etype === PageEditMode.EditMode_complex ? 'primary' : 'default'"
@click="onEditModeChange(PageEditMode.EditMode_complex)"
>{{ t("main.publish.editmode.complex") }}
</el-button>
<el-button
:type="pageModeData.etype === PageEditMode.EditMode_source ? 'primary' : 'default'"
:type="formData.etype === PageEditMode.EditMode_source ? 'primary' : 'default'"
@click="onEditModeChange(PageEditMode.EditMode_source)"
>{{ t("main.publish.editmode.source") }}
</el-button>
Expand Down
4 changes: 4 additions & 0 deletions src/components/publish/form/PublishDescription.vue
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ const handleMakeDesc = async () => {
try {
if (formData.useAi) {
ElMessage.warning("使用人工智能提取摘要")
if (StrUtil.isEmptyString(formData.html)) {
throw new Error("正文为空,无法生成摘要")
}
logger.debug("使用人工智能提取摘要", { q: formData.html })
const result = await SmartUtil.autoSummary(formData.html)
logger.debug("auto summary reault =>", result)
if (!StrUtil.isEmptyString(result.errMsg)) {
Expand Down
14 changes: 5 additions & 9 deletions src/composables/usePublish.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ import { CommonBlogConfig } from "~/src/adaptors/api/base/commonBlogConfig.ts"
import { IPublishCfg } from "~/src/types/IPublishCfg.ts"
import { usePublishConfig } from "~/src/composables/usePublishConfig.ts"
import { ElMessage } from "element-plus"
import { usePicgoBridge } from "~/src/composables/usePicgoBridge.ts"
import {PageEditMode} from "~/src/models/pageEditMode.ts";

/**
* 通用发布组件
Expand Down Expand Up @@ -339,7 +337,7 @@ const usePublish = () => {
}

const initPublishMethods = {
doInitPage : async (
doInitPage: async (
key: string,
id: string,
method: MethodEnum = MethodEnum.METHOD_ADD,
Expand All @@ -366,8 +364,8 @@ const usePublish = () => {

// 思源笔记原始文章数据
const siyuanPost = await blogApi.getPost(id)
let platformPost = new Post()
let mergedPost = new Post()
let platformPost = {} as Post
let mergedPost = siyuanPost
logger.debug("doInitPage start init siyuanPost =>", toRaw(siyuanPost))

if (method === MethodEnum.METHOD_ADD) {
Expand All @@ -381,9 +379,7 @@ const usePublish = () => {

// 查询平台文章
platformPost = await api.getPost(postid)

// 暂时不合并
mergedPost = siyuanPost
// 更新属性

// 更新预览链接
postPreviewUrl = await getPostPreviewUrl(api, postid, cfg)
Expand All @@ -401,7 +397,7 @@ const usePublish = () => {
mergedPost,
postPreviewUrl,
}
}
},
}

return {
Expand Down

0 comments on commit c286a64

Please sign in to comment.