Bläddra i källkod

feat: able to set home page link

JustSong 2 år sedan
förälder
incheckning
3684437258
6 ändrade filer med 109 tillägg och 75 borttagningar
  1. 1 0
      common/constants.go
  2. 1 0
      controller/misc.go
  3. 3 0
      model/option.go
  4. 1 0
      web/src/App.js
  5. 16 0
      web/src/components/OtherSetting.js
  6. 87 75
      web/src/pages/Home/index.js

+ 1 - 0
common/constants.go

@@ -11,6 +11,7 @@ var Version = "v0.0.0"
 var SystemName = "消息推送服务"
 var ServerAddress = "http://localhost:3000"
 var Footer = ""
+var HomePageLink = ""
 var MessageCount = 0 // Non critical value, no need to use atomic
 var UserCount = 0    // Non critical value, no need to use atomic
 

+ 1 - 0
controller/misc.go

@@ -20,6 +20,7 @@ func GetStatus(c *gin.Context) {
 			"github_oauth":        common.GitHubOAuthEnabled,
 			"github_client_id":    common.GitHubClientId,
 			"system_name":         common.SystemName,
+			"home_page_link":      common.HomePageLink,
 			"footer_html":         common.Footer,
 			"wechat_qrcode":       common.WeChatAccountQRCodeImageURL,
 			"wechat_login":        common.WeChatAuthEnabled,

+ 3 - 0
model/option.go

@@ -41,6 +41,7 @@ func InitOptionMap() {
 	common.OptionMap["Notice"] = ""
 	common.OptionMap["About"] = ""
 	common.OptionMap["Footer"] = common.Footer
+	common.OptionMap["HomePageLink"] = common.HomePageLink
 	common.OptionMap["ServerAddress"] = ""
 	common.OptionMap["GitHubClientId"] = ""
 	common.OptionMap["GitHubClientSecret"] = ""
@@ -131,6 +132,8 @@ func updateOptionMap(key string, value string) {
 		common.GitHubClientSecret = value
 	case "Footer":
 		common.Footer = value
+	case "HomePageLink":
+		common.HomePageLink = value
 	case "WeChatServerAddress":
 		common.WeChatServerAddress = value
 	case "WeChatServerToken":

+ 1 - 0
web/src/App.js

@@ -43,6 +43,7 @@ function App() {
       localStorage.setItem('status', JSON.stringify(data));
       statusDispatch({ type: 'set', payload: data });
       localStorage.setItem('footer_html', data.footer_html);
+      localStorage.setItem('home_page_link', data.home_page_link);
       if (
         data.version !== process.env.REACT_APP_VERSION &&
         data.version !== 'v0.0.0' &&

+ 16 - 0
web/src/components/OtherSetting.js

@@ -8,6 +8,7 @@ const OtherSetting = () => {
     Footer: '',
     Notice: '',
     About: '',
+    HomePageLink: '',
   });
   let originInputs = {};
   let [loading, setLoading] = useState(false);
@@ -65,6 +66,10 @@ const OtherSetting = () => {
     await updateOption('Footer', inputs.Footer);
   };
 
+  const submitHomePageLink = async () => {
+    await updateOption('HomePageLink', inputs.HomePageLink);
+  };
+
   const submitAbout = async () => {
     await updateOption('About', inputs.About);
   };
@@ -109,6 +114,17 @@ const OtherSetting = () => {
           <Form.Button onClick={submitNotice}>保存公告</Form.Button>
           <Divider />
           <Header as='h3'>个性化设置</Header>
+          <Form.Group widths='equal'>
+            <Form.Input
+              label='首页链接'
+              placeholder='在此输入首页链接,设置后将通过 iframe 方式嵌入该网页'
+              value={inputs.HomePageLink}
+              name='HomePageLink'
+              onChange={handleInputChange}
+              type='url'
+            />
+          </Form.Group>
+          <Form.Button onClick={submitHomePageLink}>设置首页链接</Form.Button>
           <Form.Group widths='equal'>
             <Form.TextArea
               label='关于'

+ 87 - 75
web/src/pages/Home/index.js

@@ -5,6 +5,7 @@ import { StatusContext } from '../../context/Status';
 
 const Home = () => {
   const [statusState, statusDispatch] = useContext(StatusContext);
+  const homePageLink = localStorage.getItem('home_page_link') || '';
 
   const displayNotice = async () => {
     const res = await API.get('/api/notice');
@@ -30,81 +31,92 @@ const Home = () => {
   }, []);
   return (
     <>
-      <Segment>
-        <Header as='h3'>系统状况</Header>
-        <Grid columns={2} stackable>
-          <Grid.Column>
-            <Card fluid>
-              <Card.Content>
-                <Card.Header>系统信息</Card.Header>
-                <Card.Meta>系统信息总览</Card.Meta>
-                <Card.Description>
-                  <p>名称:{statusState?.status?.system_name}</p>
-                  <p>版本:{statusState?.status?.version}</p>
-                  <p>
-                    源码:
-                    <a
-                      href='https://github.com/songquanpeng/message-pusher'
-                      target='_blank'
-                    >
-                      https://github.com/songquanpeng/message-pusher
-                    </a>
-                  </p>
-                  <p>启动时间:{getStartTimeString()}</p>
-                  <p>自从上次启动已发送消息数目:{statusState?.status?.message_count}</p>
-                  <p>自从上次启动新注册用户数目:{statusState?.status?.user_count}</p>
-                </Card.Description>
-              </Card.Content>
-            </Card>
-          </Grid.Column>
-          <Grid.Column>
-            <Card fluid>
-              <Card.Content>
-                <Card.Header>系统配置</Card.Header>
-                <Card.Meta>系统配置总览</Card.Meta>
-                <Card.Description>
-                  <p>
-                    邮箱验证:
-                    {statusState?.status?.email_verification === true
-                      ? '已启用'
-                      : '未启用'}
-                  </p>
-                  <p>
-                    GitHub 身份验证:
-                    {statusState?.status?.github_oauth === true
-                      ? '已启用'
-                      : '未启用'}
-                  </p>
-                  <p>
-                    微信身份验证:
-                    {statusState?.status?.wechat_login === true
-                      ? '已启用'
-                      : '未启用'}
-                  </p>
-                  <p>
-                    Turnstile 用户校验:
-                    {statusState?.status?.turnstile_check === true
-                      ? '已启用'
-                      : '未启用'}
-                  </p>
-                  <p>
-                    全局消息持久化:
-                    {statusState?.status?.message_persistence === true
-                      ? '已启用'
-                      : '未启用'}
-                  </p>
-                  <p>
-                    全局消息渲染:
-                    {statusState?.status?.message_render === true
-                      ? '已启用'
-                      : '未启用'}
-                  </p>
-                </Card.Description>
-              </Card.Content>
-            </Card>
-          </Grid.Column>
-        </Grid>
-      </Segment>
+      {homePageLink !== '' ? (
+        <>
+          <iframe
+            src={homePageLink}
+            style={{ width: '100%', height: '100vh', border: 'none' }}
+          />
+        </>
+      ) : (
+        <>
+          <Segment>
+            <Header as='h3'>系统状况</Header>
+            <Grid columns={2} stackable>
+              <Grid.Column>
+                <Card fluid>
+                  <Card.Content>
+                    <Card.Header>系统信息</Card.Header>
+                    <Card.Meta>系统信息总览</Card.Meta>
+                    <Card.Description>
+                      <p>名称:{statusState?.status?.system_name}</p>
+                      <p>版本:{statusState?.status?.version}</p>
+                      <p>
+                        源码:
+                        <a
+                          href='https://github.com/songquanpeng/message-pusher'
+                          target='_blank'
+                        >
+                          https://github.com/songquanpeng/message-pusher
+                        </a>
+                      </p>
+                      <p>启动时间:{getStartTimeString()}</p>
+                      <p>自从上次启动已发送消息数目:{statusState?.status?.message_count}</p>
+                      <p>自从上次启动新注册用户数目:{statusState?.status?.user_count}</p>
+                    </Card.Description>
+                  </Card.Content>
+                </Card>
+              </Grid.Column>
+              <Grid.Column>
+                <Card fluid>
+                  <Card.Content>
+                    <Card.Header>系统配置</Card.Header>
+                    <Card.Meta>系统配置总览</Card.Meta>
+                    <Card.Description>
+                      <p>
+                        邮箱验证:
+                        {statusState?.status?.email_verification === true
+                          ? '已启用'
+                          : '未启用'}
+                      </p>
+                      <p>
+                        GitHub 身份验证:
+                        {statusState?.status?.github_oauth === true
+                          ? '已启用'
+                          : '未启用'}
+                      </p>
+                      <p>
+                        微信身份验证:
+                        {statusState?.status?.wechat_login === true
+                          ? '已启用'
+                          : '未启用'}
+                      </p>
+                      <p>
+                        Turnstile 用户校验:
+                        {statusState?.status?.turnstile_check === true
+                          ? '已启用'
+                          : '未启用'}
+                      </p>
+                      <p>
+                        全局消息持久化:
+                        {statusState?.status?.message_persistence === true
+                          ? '已启用'
+                          : '未启用'}
+                      </p>
+                      <p>
+                        全局消息渲染:
+                        {statusState?.status?.message_render === true
+                          ? '已启用'
+                          : '未启用'}
+                      </p>
+                    </Card.Description>
+                  </Card.Content>
+                </Card>
+              </Grid.Column>
+            </Grid>
+          </Segment>
+        </>
+      )}
     </>
   );
 };