From 33be5f5a97dd40a50969d1896942b6483bd7a52d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BE=9A=E4=BA=91=E7=80=9A?= <1258430687@qq.com> Date: Sun, 17 Sep 2023 10:56:51 +0800 Subject: [PATCH] history --- src/forge/SecuritySetting/Index.jsx | 113 +++++++------ src/forge/SecuritySetting/website/index.scss | 32 +++- .../SecuritySetting/website/mySiteList.jsx | 44 +++++- .../SecuritySetting/website/new/index.jsx | 148 ++++++++++++++++++ .../SecuritySetting/website/new/index.scss | 88 +++++++++++ src/forge/Server/Index.jsx | 37 ++++- src/forge/Server/List.jsx | 20 +++ src/forge/Server/sitecreate.jsx | 146 +++++++++++++++++ src/forge/Server/sitedetail.jsx | 70 +++++++++ 9 files changed, 637 insertions(+), 61 deletions(-) create mode 100644 src/forge/SecuritySetting/website/new/index.jsx create mode 100644 src/forge/SecuritySetting/website/new/index.scss create mode 100644 src/forge/Server/sitecreate.jsx create mode 100644 src/forge/Server/sitedetail.jsx diff --git a/src/forge/SecuritySetting/Index.jsx b/src/forge/SecuritySetting/Index.jsx index cdabd86d..ae6455c0 100644 --- a/src/forge/SecuritySetting/Index.jsx +++ b/src/forge/SecuritySetting/Index.jsx @@ -8,7 +8,7 @@ import { CNotificationHOC } from "../../modules/courses/common/CNotificationHOC" import { TPMIndexHOC } from "../../modules/tpm/TPMIndexHOC"; import Loadable from "react-loadable"; import Loading from "../../Loading"; -import { Box , Gap , LongWidth } from '../Component/layout'; +import { Box, Gap, LongWidth } from '../Component/layout'; import { getImageUrl } from 'educoder'; import { Link } from 'react-router-dom'; import Avatar from '../users/Avatar/Index'; @@ -16,6 +16,8 @@ import Avatar from '../users/Avatar/Index'; import './Index.scss'; import { useEffect } from "react"; +import axios from "axios"; + const MyNoticeIndex = Loadable({ loader: () => import("./notice/myNotice/Index"), loading: Loading, @@ -70,51 +72,57 @@ const Mysite = Loadable({ loader: () => import("./website/mySiteList"), loading: Loading, }); +const Createsite = Loadable({ + loader: () => import("./website/new"), + loading: Loading, +}); -function Index(props){ - const { current_user,mygetHelmetapi , checkIfLogin } = props; + + +function Index(props) { + const { current_user, mygetHelmetapi, checkIfLogin } = props; const { pathname } = props.location; const notice_url = mygetHelmetapi && mygetHelmetapi.common && mygetHelmetapi.common.notice; - const [ avatarVisible , setAvatarVisible ] = useState(false); + const [avatarVisible, setAvatarVisible] = useState(false); const [active, setActive] = useState(1); console.log('active', active); - useEffect(()=>{ - if(checkIfLogin() === false){ + useEffect(() => { + if (checkIfLogin() === false) { props.history.push('/login'); } - },[]) + }, []) - useEffect(()=>{ + useEffect(() => { console.log('pathname', pathname, ["/settings/profile"].indexOf(pathname)); - if(["/settings/profile"].indexOf(pathname) !== -1){ + if (["/settings/profile"].indexOf(pathname) !== -1) { setActive(1); - }else if(["/settings/emails", "/settings/phone", "/settings/password", "/settings/cancel"].indexOf(pathname) !== -1){ + } else if (["/settings/emails", "/settings/phone", "/settings/password", "/settings/cancel"].indexOf(pathname) !== -1) { setActive(2); - }else if(["/settings/notice/config"].indexOf(pathname) !== -1){ + } else if (["/settings/notice/config"].indexOf(pathname) !== -1) { setActive(4); - }else if(["/settings/notice"].indexOf(pathname) !== -1){ + } else if (["/settings/notice"].indexOf(pathname) !== -1) { setActive(3); - }else if(["/settings/SSH"].indexOf(pathname) !== -1){ + } else if (["/settings/SSH"].indexOf(pathname) !== -1) { setActive(5); - }else if(["/settings/CLA"].indexOf(pathname) !== -1){ + } else if (["/settings/CLA"].indexOf(pathname) !== -1) { setActive(6); - }else if(["/settings/mybot"].indexOf(pathname) !== -1){ + } else if (["/settings/mybot"].indexOf(pathname) !== -1) { setActive(7); - }else if(["/settings/installbot"].indexOf(pathname) !== -1){ + } else if (["/settings/installbot"].indexOf(pathname) !== -1) { setActive(8); - }else if(["/settings/mysite"].indexOf(pathname) !== -1){ + } else if (["/settings/mysite"].indexOf(pathname) !== -1) { setActive(9); } }, [pathname]) - function onCancelAvatar(){ + function onCancelAvatar() { setAvatarVisible(false); const { resetUserInfo } = props; resetUserInfo && resetUserInfo(); } - return( + return (
建站工具: {i.language_frame}
+ 建站时间: {i.created_at}上次部署时间: {i.last_build_at}
+ +新建站点
+
+ {window.location.href=`/${owner}/${projectsId}/service/site`}}>{name?name:""}
+
+ {desc?desc:""}
+ + {window.location.href=`/${owner}/${projectsId}/service/site`}} className="btnhover">查看详情 + +
diff --git a/src/forge/Server/sitecreate.jsx b/src/forge/Server/sitecreate.jsx
new file mode 100644
index 00000000..0a1429ee
--- /dev/null
+++ b/src/forge/Server/sitecreate.jsx
@@ -0,0 +1,146 @@
+import React, { Fragment, forwardRef, useEffect, useState } from "react";
+import { Form, Input, Select, Space, Button, message, Radio } from "antd";
+import axios from "axios";
+import { Link } from "react-router-dom";
+
+
+
+function createSite(props) {
+ const { form, current_user } = props;
+ const [content, setContent] = useState(undefined);
+ const [addr, setAddr] = useState(undefined);
+ const [tag, setTag] = useState("");
+ const [proname, setProname] = useState("");
+ const [protag, setProtag] = useState("");
+ const [themename, setThemename] = useState([""]);
+ const { TextArea } = Input;
+ const { getFieldDecorator, validateFields } = props && props.form;
+ const [pagetheme, setPagetheme] = useState(undefined);
+
+
+ useEffect(() => {
+ document.title = '注册新的站点';
+ axios.get('/site_pages/themes.json').then(res => {
+ if (res) {
+ setPagetheme(res.data.themes);
+ }
+ })
+ }, [])
+ function onContentChange(value) {
+ setContent(value);
+ };
+
+ function ChangeAddr(e) {
+ setTag(e.target.value);
+ }
+
+ function checkAddr(rule, value, callback) {
+ let reg = /[^\a-\z\A-\Z]/;
+ if (!value) {
+ callback();
+ }
+ if (!reg.test(value)) {
+ callback("请输入有效的名称");
+ }
+ setAddr(value);
+ callback();
+ }
+
+ function submit(e) {
+ e.preventDefault();
+ validateFields((err, fieldsValue) => {
+ if (err) {
+ console.log("error");
+ return;
+ }
+ const { site_name, identifier, theme, name, repository_name, clone_addr } = fieldsValue;
+ const prame = { site_name, identifier, language_frame: "hugo", theme:themename[0], user_id: current_user.user_id, name, repository_name, clone_addr:themename[1] };
+ axios.post(`/projects/page_migrate.json`, prame).then(response => {
+ if (response && response.status === 200) {
+ message.success("创建成功");
+ } else {
+ message.error("创建失败");
+ }
+ })
+ })
+ }
+ console.log(themename);
+
+ return (
+ 新建站点
+建站工具 {page ? page.language_frame : ""}
+绑定仓库 {page ? page.owner + "/" + page.repo : ""}
+上次部署时间 {page ? page.last_build_at : ""}
创建时间 {page ? page.created_at : ""}
+分支数:{projectDetail ? projectDetail.branches_count : ""}
+ +