2022-01-26 21:10:09 +08:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=3.0, user-scalable=yes"/>
< meta name = "format-detection" content = "telephone=no" / >
{{ yml['header'] | safe }}
{% if yml['css']['item'] %}
{% for css in yml['css']['item'] %}
< link href = "{{ css }}" rel = "stylesheet" >
{% endfor %}
{% endif %}
{% if yml['js']['head'] %}
{% for js in yml['js']['head'] %}
< script src = "{{ js }}" > < / script >
{% endfor %}
{% endif %}
< title > EnglishPal Study Room for {{ username }}< / title >
2023-01-29 12:01:19 +08:00
< style >
.shaking {
animation: shakes 1600ms ease-in-out;
}
@keyframes shakes {
10%, 90% { transform: translate3d(-1px, 0, 0); }
20%, 50% { transform: translate3d(+2px, 0, 0); }
30%, 70% { transform: translate3d(-4px, 0, 0); }
40%, 60% { transform: translate3d(+4px, 0, 0); }
50% { transform: translate3d(-4px, 0, 0); }
}
< / style >
2022-01-26 21:10:09 +08:00
< / head >
< body >
< div class = "container-fluid" >
2022-07-18 13:29:04 +08:00
< p > < b > English Pal for < font id = "username" color = "red" > {{ username }}< / font > < / b >
2023-04-25 08:47:22 +08:00
2023-03-23 13:35:10 +08:00
{% if username == admin_name %}
2022-12-31 18:25:13 +08:00
< a class = "btn btn-secondary" href = "/admin" role = "button" onclick = "stopRead()" > 管理< / a >
2023-03-20 20:15:58 +08:00
{% endif %}
2023-04-25 08:47:22 +08:00
< a id = "quit" class = "btn btn-secondary" href = "/logout" role = "button" onclick = "stopRead()" > 退出< / a >
2022-11-25 15:42:37 +08:00
< a class = "btn btn-secondary" href = "/reset" role = "button" onclick = "stopRead()" > 重设密码< / a >
2023-04-25 08:47:22 +08:00
2022-01-26 21:10:09 +08:00
< / p >
2023-03-27 14:28:54 +08:00
{# {% for message in flashed_messages %}#} {# 根据user_service.userpage,取消了参数flashed_messages, 因此注释了这段代码 #}
{# < div class = "alert alert-warning" role = "alert" > Congratulations! {{ message }}< / div > #}
{# {% endfor %}#}
2022-01-27 11:27:26 +08:00
2023-05-08 14:33:48 +08:00
< button class = "btn btn-success" id = "load_next_article" onclick = "load_next_article()" > 下一篇 Next Article < / button >
2023-05-11 15:51:10 +08:00
< button class = "btn btn-success" id = "load_pre_article" onclick = "load_pre_article()" > 上一篇 Previous Article < / button >
2022-07-21 23:13:33 +08:00
2022-01-26 21:10:09 +08:00
< p > < b > 阅读文章并回答问题< / b > < / p >
2023-03-08 16:33:13 +08:00
< div id = "text-content" >
2023-05-11 15:51:10 +08:00
< div id = "found" >
2023-05-08 14:33:48 +08:00
< div class = "alert alert-success" role = "alert" > According to your word list, your level is < span class = "badge bg-success" id = "user-level" > {{ today_article["user_level"] }}< / span > and we have chosen an article with a difficulty level of < span class = "badge bg-success" id = "text_level" > {{ today_article["text_level"] }}< / span > for you.< / div >
< p class = "text-muted" id = "date" > Article added on: {{ today_article["date"] }}< / p > < br / >
2023-03-08 16:33:13 +08:00
< div class = "p-3 mb-2 bg-light text-dark" > < br / >
2023-05-08 14:33:48 +08:00
< p class = "display-5" id = "article_title" > {{ today_article["article_title"] }}< / p > < br / >
2023-03-08 16:33:13 +08:00
< p class = "lead" > < font id = "article" size = 2 > {{ today_article["article_body"] }}< / font > < / p > < br / >
2023-05-08 14:33:48 +08:00
< p > < small class = "text-muted" id = "source" > {{ today_article['source'] }}< / small > < / p > < br / >
< p > < b id = "question" > {{ today_article['question'] }}< / b > < / p > < br / >
2023-03-08 16:33:13 +08:00
< script type = "text/javascript" >
function toggle_visibility(id) { {# https://css-tricks.com/snippets/javascript/showhide-element/#}
const e = document.getElementById(id);
if(e.style.display === 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
< / script >
< button onclick = "toggle_visibility('answer');" > ANSWER< / button >
< div id = "answer" style = "display:none;" > {{ today_article['answer'] }}< / div > < br / >
< / div >
2023-05-11 15:51:10 +08:00
< / div >
< div class = "alert alert-success" role = "alert" id = "not_found" style = "display:none;" >
< p class = "text-muted" > < span class = "badge bg-success" > Notes:< / span > < br > No article is currently available for you. You can try again a few times or mark new words in the passage to improve your level.< / p >
< / div >
< div class = "alert alert-success" role = "alert" id = "read_all" style = "display:none;" >
< p class = "text-muted" > < span class = "badge bg-success" > Notes:< / span > < br > You've read all the articles.< / p >
< / div >
2023-03-08 16:33:13 +08:00
< / div >
2022-01-27 11:27:26 +08:00
2022-08-02 12:33:41 +08:00
< input type = "checkbox" onclick = "toggleHighlighting()" checked / > 生词高亮
2022-01-26 21:10:09 +08:00
< input type = "checkbox" onclick = "onReadClick()" checked / > 大声朗读
< input type = "checkbox" onclick = "onChooseClick()" checked / > 划词入库
2022-07-18 16:00:08 +08:00
< div class = "range" >
< div class = "field" >
< div class = "sliderValue" >
< span id = "rangeValue" > 1× < / span >
< / div >
2023-02-21 20:23:24 +08:00
< input type = "range" id = "rangeComponent" min = "0.5" max = "2" value = "1" step = "0.25" / >
2022-07-18 16:00:08 +08:00
< / div >
2023-02-21 20:05:48 +08:00
< / div >
2022-01-26 21:10:09 +08:00
< p > < b > 收集生词吧< / b > (可以在正文中划词,也可以复制黏贴)< / p >
2023-04-20 20:30:14 +08:00
< form method = "post" action = "/{{ username }}/userpage" >
2022-01-26 21:10:09 +08:00
< textarea name = "content" id = "selected-words" rows = "10" cols = "120" > < / textarea > < br / >
2023-01-29 12:01:19 +08:00
< input type = "submit" value = "把生词加入我的生词库" / >
2022-01-26 21:10:09 +08:00
< input type = "reset" value = "清除" / >
< / form >
{% if session.get['thisWord'] %}
< script type = "text/javascript" >
//point to the anchor in the page whose id is aaa if it exists
window.onload = function () {
var element = document.getElementsByName("aaa");
if (element != null)
document.getElementsByName("aaa")[0].scrollIntoView(true);
}
< / script >
{% endif %}
{% if d_len > 0 %}
2023-01-29 12:01:19 +08:00
< p >
< b > 我的生词簿< / b >
< label for = "move_dynamiclly" >
< input type = "checkbox" name = "move_dynamiclly" id = "move_dynamiclly" checked >
允许动态调整顺序
< / label >
< / p >
< a name = "aaa" > < / a >
< div class = "word-container" >
{% for x in lst3 %}
{% set word = x[0] %}
{% set freq = x[1] %}
{% if session.get('thisWord') == x[0] and session.get('time') == 1 %}
{% endif %}
< p id = 'p_{{ word }}' class = "new-word" >
< a id = "word_{{ word }}" class = "btn btn-light" href = 'http://youdao.com/w/eng/{{ word }}/#keyfrom=dict2.index'
role="button">{{ word }}< / a >
( < a id = "freq_{{ word }}" title = "{{ word }}" > {{ freq }}< / a > )
< a class = "btn btn-success" onclick = "familiar('{{ word }}')" role = "button" > 熟悉< / a >
< a class = "btn btn-warning" onclick = "unfamiliar('{{ word }}')" role = "button" > 不熟悉< / a >
< a class = "btn btn-danger" onclick = "delete_word('{{ word }}')" role = "button" > 删除< / a >
< / p >
{% endfor %}
< / div >
2022-01-26 21:10:09 +08:00
< input id = "selected-words2" type = "hidden" value = "{{ words }}" >
{% endif %}
< / div >
{{ yml['footer'] | safe }}
{% if yml['js']['bottom'] %}
{% for js in yml['js']['bottom'] %}
< script src = "{{ js }}" > < / script >
{% endfor %}
{% endif %}
2023-05-11 15:51:10 +08:00
< script type = "text/javascript" >
2023-05-08 14:33:48 +08:00
function load_next_article(){
$.ajax({
url: '/get_next_article/{{username}}',
dataType: 'json',
success: function(data) {
// 更新页面内容
2023-05-11 15:51:10 +08:00
if(data['today_article']){
update(data['today_article']);
check_pre(data['visited_articles']);
check_next(data['result_of_generate_article']);
}
2023-05-08 14:33:48 +08:00
}
});
}
function load_pre_article(){
$.ajax({
url: '/get_pre_article/{{username}}',
dataType: 'json',
success: function(data) {
// 更新页面内容
2023-05-11 15:51:10 +08:00
if(data['today_article']){
update(data['today_article']);
check_pre(data['visited_articles']);
2023-05-08 14:33:48 +08:00
}
}
});
2023-05-11 15:51:10 +08:00
}
function update(today_article){
$('#user-level').html(today_article['user_level']);
$('#text_level').html(today_article["text_level"]);
$('#date').html('Article added on: '+today_article["date"]);
$('#article_title').html(today_article["article_title"]);
$('#article').html(today_article["article_body"]);
$('#source').html(today_article['source']);
$('#question').html(today_article["question"]);
$('#answer').html(today_article["answer"]);
}
<!-- 检查是否存在上一篇或下一篇,不存在则对应按钮隐藏 -->
function check_pre(visited_articles){
if((visited_articles=='')||(visited_articles['index']< =0)){
$('#load_pre_article').hide();
}else{
$('#load_pre_article').show();
}
}
function check_next(result_of_generate_article){
if(result_of_generate_article == "found"){
$('#found').show();$('#not_found').hide();
$('#read_all').hide();
}else if(result_of_generate_article == "not found"){
$('#found').hide();
$('#not_found').show();
$('#read_all').hide();
}else{
$('#found').hide();
$('#not_found').hide();
$('#read_all').show();
}
2023-05-08 14:33:48 +08:00
}
< / script >
2022-01-26 21:10:09 +08:00
< / body >
< style >
mark {
2023-02-21 20:05:48 +08:00
color: #{{ yml['highlight']['color'] }};
background-color: rgba(0, 0, 0, 0);
}
2022-01-26 21:10:09 +08:00
< / style >
2022-01-27 20:15:26 +08:00
< / html >