From 6e9feafc6311239189565c2dfd42886911f2b1b4 Mon Sep 17 00:00:00 2001 From: dingyongliang Date: Thu, 30 Nov 2023 14:41:37 +0800 Subject: [PATCH] * add collection button. --- module/ai/control.php | 1 + module/ai/css/miniprogramchat.ui.css | 13 ++++++++++++- module/ai/js/miniprogramchat.ui.js | 20 ++++++++++++++++++++ module/ai/ui/miniprogramchat.html.php | 12 +++++++++++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/module/ai/control.php b/module/ai/control.php index e1ad1e7566..df035b42f5 100644 --- a/module/ai/control.php +++ b/module/ai/control.php @@ -146,6 +146,7 @@ class ai extends control { $this->view->miniProgram = $this->ai->getMiniProgramByID($id); $this->view->fields = $this->ai->getMiniProgramFields($id); + $this->view->collectedIDs = $this->ai->getCollectedMiniProgramIDs($this->app->user->id); $this->display(); } diff --git a/module/ai/css/miniprogramchat.ui.css b/module/ai/css/miniprogramchat.ui.css index 0f80113812..40fba94fb5 100644 --- a/module/ai/css/miniprogramchat.ui.css +++ b/module/ai/css/miniprogramchat.ui.css @@ -7,7 +7,8 @@ } .mini-program .detail { - flex-basis: 390px; + width: 390px; + flex: none; background: #fff; display: flex; flex-direction: column; @@ -22,6 +23,11 @@ border-bottom: 1px solid var(--color-gray-200); } +.mini-program .detail .header .btn-star { + top: 20px; + right: 20px; +} + .mini-program .detail .header .program-avatar { width: 46px; height: 46px; @@ -30,11 +36,16 @@ .mini-program .detail .header .content { flex: auto; + overflow: hidden; } .mini-program .detail .header .content .title { font-size: 14px; font-weight: 500; + padding-right: 64px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } .mini-program .detail .header .content .desc { diff --git a/module/ai/js/miniprogramchat.ui.js b/module/ai/js/miniprogramchat.ui.js index 39009b1899..3772357794 100644 --- a/module/ai/js/miniprogramchat.ui.js +++ b/module/ai/js/miniprogramchat.ui.js @@ -37,3 +37,23 @@ window.aiMiniProgramChat.startAIChat = function() const promptStr = generatePrompt(); console.log(promptStr); }; + +window.aiMiniProgramChat.handleStarBtnClick = function() +{ + const $btn = $(this); + const url = $btn.attr('data-url'); + $.get(url, function(response) + { + if(response.status == '1') + { + $btn.children('img').attr('src', 'static/svg/star.svg'); + $btn.attr('data-url', $btn.attr('data-url').replace('false', 'true')); + } + else + { + $btn.children('img').attr('src', 'static/svg/star-empty.svg'); + $btn.attr('data-url', $btn.attr('data-url').replace('true', 'false')); + } + }, 'json'); +}; + diff --git a/module/ai/ui/miniprogramchat.html.php b/module/ai/ui/miniprogramchat.html.php index 8886311450..720413e4f5 100644 --- a/module/ai/ui/miniprogramchat.html.php +++ b/module/ai/ui/miniprogramchat.html.php @@ -58,13 +58,15 @@ foreach($fields as $field) jsVar('fieldNames', $fieldNames); list($iconName, $iconTheme) = explode('-', $miniProgram->icon); +$star = in_array($miniProgram->id, $collectedIDs) ? 'star' : 'star-empty'; +$delete = $star === 'star' ? 'true' : 'false'; div( setClass('mini-program fixed flex'), div( setClass('detail col shadow-md'), div( - setClass('header'), + setClass('header', 'relative'), div( setClass('program-avatar center'), setStyle(array('border' => "1px solid {$config->ai->miniPrograms->themeList[$iconTheme][1]}", 'background-color' => $config->ai->miniPrograms->themeList[$iconTheme][0])), @@ -81,6 +83,14 @@ div( set::title($miniProgram->desc), $miniProgram->desc ) + ), + btn( + setClass('ghost btn-star absolute'), + set::size('md'), + setData('url', createLink('ai', 'collectMiniProgram', "appID={$miniProgram->id}&delete={$delete}")), + on::click('window.aiMiniProgramChat.handleStarBtnClick'), + html(html::image("static/svg/{$star}.svg", "class='$star'")), + $lang->ai->miniPrograms->collect ) ), div(