From e9b18756bd45a99c937357e08833be7bf91360de Mon Sep 17 00:00:00 2001 From: wangxuepeng Date: Tue, 14 Nov 2023 10:21:22 +0800 Subject: [PATCH] * Fixed the problem of the tutorial index. --- module/tutorial/control.php | 2 +- module/tutorial/js/index.ui.js | 29 +++--- module/tutorial/ui/index.html.php | 164 ++++++++++++++++-------------- 3 files changed, 106 insertions(+), 89 deletions(-) diff --git a/module/tutorial/control.php b/module/tutorial/control.php index 9ffe867e41..8f30bcc74c 100644 --- a/module/tutorial/control.php +++ b/module/tutorial/control.php @@ -80,7 +80,7 @@ class tutorial extends control $this->session->set('tutorialMode', false); $this->loadModel('setting')->setItem($this->app->user->account . '.common.global.novice', 0); if(empty($referer)) $referer = helper::safe64Encode(helper::createLink('my', 'index', '', 'html')); - echo js::locate(helper::safe64Decode($referer), 'parent'); + return $this->send(array('result' => 'success', 'open' => $this->createLink('index', 'index'))); } /** diff --git a/module/tutorial/js/index.ui.js b/module/tutorial/js/index.ui.js index 1ca94e053a..6b9ee1b149 100644 --- a/module/tutorial/js/index.ui.js +++ b/module/tutorial/js/index.ui.js @@ -37,6 +37,7 @@ $(function() var checkTaskId = null, modalShowTaskId; var checkFormReadyId = null; var showToolTipTask = null; + var submitBindCount = 0; var getApp = function(code) { @@ -240,8 +241,6 @@ $(function() var checkFormReady = function() { - clearTips(); - var iWindow = getAppWindow(); if(!iWindow || !iWindow.$) return tryCheckTask(); var task = tasks[current]; @@ -288,7 +287,6 @@ $(function() { targetStatus.form = false; if(!targetStatus.waitField) targetStatus.waitField = $required; - showFormPopver = false; } } }); @@ -330,7 +328,7 @@ $(function() $navTarget.toggleClass('finish', !!targetStatus.nav); $formTarget.toggleClass('finish', !!targetStatus.form); - $submitTarget.toggleClass('finish', !!targetStatus.submit); + $submitTarget.toggleClass('finish', !!targetStatus.submitOK); $navTarget.toggleClass('wait', !$navTarget.is('.finish,.active')); $formTarget.toggleClass('wait', !$formTarget.is('.finish,.active')); $submitTarget.toggleClass('wait', !$submitTarget.is('.finish,.active')); @@ -382,6 +380,7 @@ $(function() var $form = $$(task.nav.form); var $formWrapper = $form.closest('#mainContent'); if(!$formWrapper.length) $formWrapper = $form; + $formTarget.addClass('active'); highlight($formWrapper); showToolTip($formWrapper, $formTarget.text()); var fieldSelector = ''; @@ -406,6 +405,8 @@ $(function() if(!$form.data('bindCheckTaskEvent')) { $form.off('.tutorial').off('submit'); + $form.on('change.tutorial', fieldSelector, tryCheckFormReady) + $form.on('blur.tutorial', fieldSelector, tryCheckFormReady) var onSubmit = function(e) { @@ -449,15 +450,6 @@ $(function() }); } } - - setTimeout( - function() - { - $form.on('change.tutorial', fieldSelector, tryCheckFormReady) - $form.on('blur.tutorial', fieldSelector, tryCheckFormReady) - }, - 2000 - ) } else { @@ -551,6 +543,15 @@ $(function() } } + $navTarget.toggleClass('finish', !!targetStatus.nav); + $formTarget.toggleClass('finish', !!targetStatus.form); + $submitTarget.toggleClass('finish', !!targetStatus.submitOK); + $navTarget.toggleClass('wait', !$navTarget.is('.finish,.active')); + $formTarget.toggleClass('wait', !$formTarget.is('.finish,.active')); + $submitTarget.toggleClass('wait', !$submitTarget.is('.finish,.active')); + $openTaskPage.toggleClass('open', targetStatus.nav); + + targetStatus.submitOK = targetStatus.nav && targetStatus.form; return targetStatus; }; @@ -670,7 +671,7 @@ $(function() if(status.submitOK) window.location.reload(); }).on('click', '.btn-open-target-page', function() { - appsWindow.$.apps.open(tasks[current].url); + appsWindow.$.apps.openApp(tasks[current].url); }).on('click', '.btn-reset-tasks', function() { hideModal(); diff --git a/module/tutorial/ui/index.html.php b/module/tutorial/ui/index.html.php index 56dca271da..cba6a2cb93 100644 --- a/module/tutorial/ui/index.html.php +++ b/module/tutorial/ui/index.html.php @@ -18,16 +18,16 @@ $taskGroup = array_map(function($key, $task) use(&$i) $i++; return li ( - set::style(array('width' => '100%')), - set('data-name', $key), + setClass('w-full'), + setData(array('name' => $key)), a ( - set('data-name', $key), + setData(array('name' => $key)), set::href('javascript:;'), - set::className('btn-task pull-left'), + setClass('btn-task pull-left'), span($i .'. '), span( - set::className('task-name'), + setClass('task-name'), $task['title'] ) ), @@ -57,75 +57,75 @@ jsVar('langRequiredTip', $lang->tutorial->requiredTip); div ( - set::id('pageContainer'), + setID('pageContainer'), div ( - set::id('iframeWrapper'), + setID('iframeWrapper'), h::iframe ( - set::id('iframePage'), + setID('iframePage'), set::name('iframePage'), - set::src(helper::createLink('index', 'index', 't=tutorial')), + set::src(createLink('index', 'index', 't=tutorial')), ) ), - div(set::id('taskModalBack')), + div(setID('taskModalBack')), div ( - set::id('taskModal'), + setID('taskModal'), div ( - set::className('close'), + set::class('close'), set::icon('close'), ), div ( - set::className('finish-all'), + setClass('finish-all'), div ( - set::className('start-icon'), + setClass('start-icon'), icon( - set::class('icon-front'), + setClass('icon-front'), 'check-circle' ), ), - h::h3($lang->tutorial->congratulation), + h3($lang->tutorial->congratulation), btn ( set::icon('restart'), - set::className('btn btn-outline btn-reset-tasks'), + setClass('btn btn-outline btn-reset-tasks'), $lang->tutorial->restart ), ' ', btn ( - set::className('btn btn-outline'), - set::url(helper::createLink('tutorial', 'quit')), + setClass('btn btn-outline'), + set::url(createLink('tutorial', 'quit')), $lang->tutorial->exit ) ), div ( - set::className('finish'), + setClass('finish'), div ( - set::className('start-icon'), + setClass('start-icon'), icon( set::class('icon-front'), 'check-circle' ), ), - h::h3( + h3( $lang->tutorial->congratulateTask, "【", span ( - set::className('task-name-current'), + setClass('task-name-current'), ), "】!" ), btn ( - set::className('btn btn-outline btn-next-task btn-task'), + setClass('btn btn-outline btn-next-task btn-task'), $lang->tutorial->nextTask, set::trailingIcon('angle-right') ) @@ -133,151 +133,167 @@ div ), div ( - set::id('sidebar'), + setID('sidebar'), h::header ( - set::className('bg-primary'), + setClass('bg-primary'), div ( - set::className('start-icon'), + setClass('start-icon'), + icon( + setClass('icon-back'), + 'certificate' + ), + icon( + setClass('icon-front text-secondary'), + 'flag' + ) ), - h::h2('新手教程'), + h2($lang->tutorial->common), div ( - set::className('actions'), + setClass('actions'), btn ( - set::className('size-sm'), + setClass('size-sm'), set::type('danger'), - set::url(helper::createLink('tutorial', 'quit')), - '退出教程', + set::url(inlink('quit')), + $lang->tutorial->exit, ) ) ), h::section ( - set::id('current'), - h::h4('当前任务'), + setID('current'), + h4('当前任务'), div ( - set::id('task'), - set::className('panel'), + setID('task'), + setClass('panel'), div ( - set::className('panel-heading bg-secondary'), + setClass('panel-heading bg-secondary'), h::strong ( span ( - set::className('task-id-current'), + setClass('task-id-current'), ), '. ', span ( - set::className('task-name task-name-current'), + setClass('task-name task-name-current'), ) ) ), div ( - set::className('panel-body'), + setClass('panel-body'), div ( - set::className('task-desc'), + setClass('task-desc'), p(), - h::ul + ul ( li ( - set::data_target('nav'), - set::className('wait'), + setData(array('target' => 'nav')), + setClass('wait'), ), li ( - set::data_target('form'), - set::className('wait'), + setData(array('target' => 'form')), + setClass('wait'), ), li ( - set::data_target('submit'), - set::className('wait'), + setData(array('target' => 'submit')), + setClass('wait'), ) ) ), - h::a( + a( + setID('openTaskPage'), + setClass('btn-open-target-page hl-primary open'), + set::href('javascript:;'), div ( - set::className('normal'), + setClass('normal'), + icon('magic'), + html($lang->tutorial->openTargetPage) ), div ( - set::className('opened'), + setClass('opened'), + icon('flag'), + html($lang->tutorial->atTargetPage) ), div ( - set::className('reload'), - ), + setClass('reload'), + icon('restart'), + html($lang->tutorial->reloadTargetPage) + ) ), div ( - set::className('alert warning-pale flex items-center'), - set::style(array('padding' => '5px', 'margin-bottom' => '0px')), - "教程任务中,数据不会保存。" + setClass('alert warning-pale flex items-center p-4 my-0'), + $lang->tutorial->dataNotSave ) ) ), div ( - set::className('clearfix actions'), + setClass('clearfix actions'), btn ( set::icon('arrow-left'), set::size('sm'), - set::className('btn-prev-task btn-task circle'), - '上一个', + setClass('btn-prev-task btn-task circle'), + $lang->tutorial->previous, ), btn ( set::trailingIcon('arrow-right'), set::size('sm'), set::type('primary'), - set::className('btn-next-task btn-task circle pull-right'), - '下一个任务', + setClass('btn-next-task btn-task circle pull-right'), + $lang->tutorial->nextTask, ) ) ), h::section ( - set::id('all'), - h::h4( - '所有任务(', + setID('all'), + h4( + $lang->tutorial->allTasks, + '(', span ( - set::className('task-num-finish'), - 5, + setClass('task-num-finish'), + 0, ), '/', span ( - set::className('task-count'), + setClass('task-count'), 10 ), ')' ), div ( - set::id('tasksProgress'), - set::className('progress'), + setID('tasksProgress'), + setClass('progress'), div ( - set::className('progress-bar primary'), - set::style(array('width' => '30%')), + setClass('progress-bar primary'), ) ), - h::ul + ul ( - set::id('tasks'), - set::className('nav nav-primary nav-stacked'), + setID('tasks'), + setClass('nav nav-primary nav-stacked mt-5'), $taskGroup ) )