<template> <modal-inner aria-label="与 Gitea 同步"> <div class="modal__content"> <div class="modal__image"> <icon-provider provider-id="gitea"></icon-provider> </div> <p>将<b> {{currentFileName}} </b>保存到<b> Gitea </b>项目,并保持同步。</p> <form-entry label="Project URL" error="projectUrl"> <input slot="field" class="textfield" type="text" v-model.trim="projectUrl" @keydown.enter="resolve()"> <div class="form-entry__info"> <b>例如:</b> {{config.token.serverUrl}}/path/to/project </div> </form-entry> <form-entry label="File path" error="path"> <input slot="field" class="textfield" type="text" v-model.trim="path" @keydown.enter="resolve()"> <div class="form-entry__info"> <b>例如:</b> path/to/README.md<br> 如果文件存在,将被覆盖。 </div> </form-entry> <form-entry label="分支" info="可选的"> <input slot="field" class="textfield" type="text" v-model.trim="branch" @keydown.enter="resolve()"> <div class="form-entry__info"> 如果未提供,将使用<code> master </code>分支。 </div> </form-entry> </div> <div class="modal__button-bar"> <button class="button" @click="config.reject()">取消</button> <button class="button button--resolve" @click="resolve()">确认</button> </div> </modal-inner> </template> <script> import giteaProvider from '../../../services/providers/giteaProvider'; import modalTemplate from '../common/modalTemplate'; import utils from '../../../services/utils'; export default modalTemplate({ data: () => ({ branch: '', path: '', }), computedLocalSettings: { projectUrl: 'giteaProjectUrl', }, created() { this.path = `${this.currentFileName}.md`; }, methods: { resolve() { const projectPath = utils.parseGiteaProjectPath(this.projectUrl); if (!projectPath) { this.setError('projectUrl'); } if (!this.path) { this.setError('path'); } if (projectPath && this.path) { const location = giteaProvider.makeLocation( this.config.token, projectPath, this.branch || 'master', this.path, ); this.config.resolve(location); } }, }, }); </script>