From b38bcd51653dd2e9cb65ecf40ecfd439eb662d69 Mon Sep 17 00:00:00 2001 From: WangJiaLu <1252394418@qq.com> Date: Thu, 4 Jul 2024 10:10:31 +0800 Subject: [PATCH] Fix bug 571 --- .gitignore | 12 ++- Dockerfile | 9 ++- Jenkinsfile | 4 +- README.md | 30 ++++++- app/Article.py | 34 ++++---- app/Login.py | 1 - app/UseSqlite.py | 87 --------------------- app/account_service.py | 1 + app/admin_service.py | 46 ++++++----- app/db/README.txt | 1 + app/difficulty.py | 11 ++- app/main.py | 11 ++- app/model/__init__.py | 2 +- app/model/article.py | 16 +++- app/static/config.yml | 3 +- app/static/css/highlighted.css | 5 ++ app/static/js/checkboxes.js | 5 ++ app/static/js/fillword.js | 22 +++++- app/static/js/highlight.js | 79 ++++++++----------- app/static/js/read.js | 4 +- app/static/js/word_operation.js | 33 ++++---- app/static/wordfreqapp.db | Bin 0 -> 409600 bytes app/templates/login.html | 9 ++- app/templates/mainpage_get.html | 22 +++++- app/templates/mainpage_post.html | 2 +- app/templates/reset.html | 4 + app/templates/signup.html | 6 +- app/templates/userpage_get.html | 112 +++++++++++++++++++++++++-- app/templates/userpage_post.html | 83 ++++++++++---------- app/test/conftest.py | 28 ++++++- app/test/helper.py | 33 ++++++++ app/test/test_add_word.py | 75 ++++-------------- app/test/test_bug528_tangjiao.py | 95 +++++++++++++++++++++++ app/test/test_bug544_tangxinyuan.py | 55 +++++++++++++ app/test/test_bug545_HuangHuiLing.py | 44 +++++++++++ app/test/test_bug546_lixiaofeng.py | 39 ++++++++++ app/test/test_bug551_DingZeYu.py | 37 +++++++++ app/test/test_bug553_LinShan.py | 58 ++++++++++++++ app/test/test_bug561_LiangZiyue.py | 27 +++++++ app/test/test_stress.py | 43 ++++++++++ app/user_service.py | 13 +++- app/wordfreqCMD.py | 6 +- build.sh | 7 +- 43 files changed, 873 insertions(+), 341 deletions(-) delete mode 100644 app/UseSqlite.py create mode 100644 app/db/README.txt create mode 100644 app/static/css/highlighted.css create mode 100644 app/static/js/checkboxes.js create mode 100644 app/static/wordfreqapp.db create mode 100644 app/test/helper.py create mode 100644 app/test/test_bug528_tangjiao.py create mode 100644 app/test/test_bug544_tangxinyuan.py create mode 100644 app/test/test_bug545_HuangHuiLing.py create mode 100644 app/test/test_bug546_lixiaofeng.py create mode 100644 app/test/test_bug551_DingZeYu.py create mode 100644 app/test/test_bug553_LinShan.py create mode 100644 app/test/test_bug561_LiangZiyue.py create mode 100755 app/test/test_stress.py diff --git a/.gitignore b/.gitignore index 3d901ba..33f789d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,12 +2,20 @@ venv/ app/__init__.py app/__pycache__/ +.DS_Store +app/.DS_Store app/sqlite_commands.py app/static/usr/*.jpg app/static/img/ app/static/frequency/frequency_*.pickle app/static/frequency/frequency.p -app/static/wordfreqapp.db +app/wordfreqapp.db +app/db/wordfreqapp.db app/static/donate-the-author.jpg app/static/donate-the-author-hidden.jpg -app/model/__pycache__/ \ No newline at end of file +app/model/__pycache__/ +app/test/__pycache__/ +app/test/.pytest_cache/ +app/test/pytest_report.html +app/test/assets +app/log.txt diff --git a/Dockerfile b/Dockerfile index 284195a..55e5946 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ -FROM tiangolo/uwsgi-nginx-flask:python3.6 -COPY requirements.txt /app -RUN pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ -COPY ./app /app +FROM tiangolo/uwsgi-nginx-flask:python3.8-alpine +COPY requirements.txt /tmp +COPY ./app/ /app/ +RUN pip3 install -U pip -i https://mirrors.aliyun.com/pypi/simple/ +RUN pip3 install -r /tmp/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ diff --git a/Jenkinsfile b/Jenkinsfile index 2633859..c3772cc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -10,8 +10,8 @@ pipeline { stages { stage('MakeDatabasefile') { steps { - sh 'touch ./app/static/wordfreqapp.db && rm -f ./app/static/wordfreqapp.db' - sh 'cat ./app/static/wordfreqapp.sql | sqlite3 ./app/static/wordfreqapp.db' + sh 'touch ./app/wordfreqapp.db && rm -f ./app/wordfreqapp.db' + sh 'cat ./app/static/wordfreqapp.sql | sqlite3 ./app/wordfreqapp.db' } } stage('BuildIt') { diff --git a/README.md b/README.md index 14cc9aa..15fc966 100644 --- a/README.md +++ b/README.md @@ -61,15 +61,15 @@ My steps for deploying English on a Ubuntu server. All articles are stored in the `article` table in a SQLite file called -`app/static/wordfreqapp.db`. +`app/db/wordfreqapp.db`. ### Adding new articles -To add articles, open and edit `app/static/wordfreqapp.db` using DB Browser for SQLite (https://sqlitebrowser.org). +To add articles, open and edit `app/db/wordfreqapp.db` using DB Browser for SQLite (https://sqlitebrowser.org). ### Extending an account's expiry date -By default, an account's expiry is 30 days after first sign-up. To extend account's expiry date, open and edit `user` table in `app/static/wordfreqapp.db`. Simply update field `expiry_date`. +By default, an account's expiry is 30 days after first sign-up. To extend account's expiry date, open and edit `user` table in `app/db/wordfreqapp.db`. Simply update field `expiry_date`. ### Exporting the database @@ -95,7 +95,7 @@ sqlite3 wordfreqapp.db`. Delete wordfreqapp.db first if it exists. ### Uploading wordfreqapp.db to the server -`pscp wordfreqapp.db lanhui@118.*.*.118:/home/lanhui/englishpal2/EnglishPal/app/static` +`pscp wordfreqapp.db lanhui@118.*.*.118:/home/lanhui/englishpal2/EnglishPal/app/db/` @@ -129,6 +129,28 @@ We welcome feedback on EnglishPal. Feedback examples: EnglishPal's bugs and improvement suggestions are recorded in [Bugzilla](http://118.25.96.118/bugzilla/buglist.cgi?bug_status=__all__&list_id=1302&order=Importance&product=EnglishPal&query_format=specific). Send (lanhui at zjnu.edu.cn) an email message for opening a Bugzilla account or reporting a bug. +## End-to-end testing + +We use the Selenium test framework to test our app. + +In order to run the test, first we need to download a webdriver executable. + +Microsoft Edge's webdriver can be downloaded from [microsoft-edge-tools-webdriver](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/). Make sure the version we download matches the version of the web browser installed on our laptop. + +After extracting the downloaded zip file (e.g., edgedriver_win64.zip), rename msedgedriver.exe to MicrosoftWebDriver.exe. + +Add MicrosoftWebDriver.exe's path to system's PATH variable. + +Install the following dependencies too: + +- pip install -U selenium==3.141.0 +- pip install -U urllib3==1.26.2 + +Run English Pal first, then run the test using pytest as follows: pytest --html=pytest_report.html test_add_word.py + +The above command will generate a HTML report file pytest_report.html after finishing executing test_add_word.py. Note: you need to install pytest-html package first: pip install pytest-html. + +You may also want to use [webdriver-manager](https://pypi.org/project/webdriver-manager/) from PyPI, so that you can avoid tediously installing a web driver executable manually. However, my experience shows that webdriver-manager is too slow. For example, it took me 16 minutes to run 9 tests, while with the pre-installed web driver executable, it took less than 2 minutes. ## TODO diff --git a/app/Article.py b/app/Article.py index df9ac3a..566ceb6 100644 --- a/app/Article.py +++ b/app/Article.py @@ -1,6 +1,5 @@ from WordFreq import WordFreq from wordfreqCMD import youdao_link, sort_in_descending_order -from UseSqlite import InsertQuery, RecordQuery import pickle_idea, pickle_idea2 import os import random, glob @@ -8,18 +7,15 @@ import hashlib from datetime import datetime from flask import Flask, request, redirect, render_template, url_for, session, abort, flash, get_flashed_messages from difficulty import get_difficulty_level_for_user, text_difficulty_level, user_difficulty_level +from model.article import get_all_articles, get_article_by_id, get_number_of_articles +import logging - -path_prefix = '/var/www/wordfreq/wordfreq/' -path_prefix = './' # comment this line in deployment +path_prefix = './' +db_path_prefix = './db/' # comment this line in deployment def total_number_of_essays(): - rq = RecordQuery(path_prefix + 'static/wordfreqapp.db') - rq.instructions("SELECT * FROM article") - rq.do() - result = rq.get_results() - return len(result) + return get_number_of_articles() def get_article_title(s): @@ -33,32 +29,36 @@ def get_article_body(s): def get_today_article(user_word_list, visited_articles): - rq = RecordQuery(path_prefix + 'static/wordfreqapp.db') if visited_articles is None: visited_articles = { "index" : 0, # 为 article_ids 的索引 "article_ids": [] # 之前显示文章的id列表,越后越新 } if visited_articles["index"] > len(visited_articles["article_ids"])-1: # 生成新的文章,因此查找所有的文章 - rq.instructions("SELECT * FROM article") + result = get_all_articles() else: # 生成阅读过的文章,因此查询指定 article_id 的文章 if visited_articles["article_ids"][visited_articles["index"]] == 'null': # 可能因为直接刷新页面导致直接去查询了'null',因此当刷新的页面的时候,需要直接进行“上一篇”操作 visited_articles["index"] -= 1 visited_articles["article_ids"].pop() - rq.instructions('SELECT * FROM article WHERE article_id=%d' % (visited_articles["article_ids"][visited_articles["index"]])) - rq.do() - result = rq.get_results() + article_id = visited_articles["article_ids"][visited_articles["index"]] + result = get_article_by_id(article_id) random.shuffle(result) # Choose article according to reader's level - d1 = load_freq_history(path_prefix + 'static/frequency/frequency.p') + logging.debug('* get_today_article(): start d1 = ... ') + d1 = load_freq_history(user_word_list) d2 = load_freq_history(path_prefix + 'static/words_and_tests.p') + logging.debug(' ... get_today_article(): get_difficulty_level_for_user() start') d3 = get_difficulty_level_for_user(d1, d2) + logging.debug(' ... get_today_article(): done') d = None result_of_generate_article = "not found" + d_user = load_freq_history(user_word_list) + logging.debug('* get_today_article(): user_difficulty_level() start') user_level = user_difficulty_level(d_user, d3) # more consideration as user's behaviour is dynamic. Time factor should be considered. + logging.debug('* get_today_article(): done') text_level = 0 if visited_articles["index"] > len(visited_articles["article_ids"])-1: # 生成新的文章 amount_of_visited_articles = len(visited_articles["article_ids"]) @@ -87,8 +87,8 @@ def get_today_article(user_word_list, visited_articles): today_article = None if d: today_article = { - "user_level": '%4.2f' % user_level, - "text_level": '%4.2f' % text_level, + "user_level": '%4.1f' % user_level, + "text_level": '%4.1f' % text_level, "date": d['date'], "article_title": get_article_title(d['text']), "article_body": get_article_body(d['text']), diff --git a/app/Login.py b/app/Login.py index cd750d1..17d92fa 100644 --- a/app/Login.py +++ b/app/Login.py @@ -1,7 +1,6 @@ import hashlib import string from datetime import datetime, timedelta -from UseSqlite import InsertQuery, RecordQuery def md5(s): ''' diff --git a/app/UseSqlite.py b/app/UseSqlite.py deleted file mode 100644 index ea4baeb..0000000 --- a/app/UseSqlite.py +++ /dev/null @@ -1,87 +0,0 @@ -########################################################################### -# Copyright 2019 (C) Hui Lan -# Written permission must be obtained from the author for commercial uses. -########################################################################### - - -# Reference: Dusty Phillips. Python 3 Objected-oriented Programming Second Edition. Pages 326-328. -# Copyright (C) 2019 Hui Lan - -import sqlite3 - -class Sqlite3Template: - def __init__(self, db_fname): - self.db_fname = db_fname - - def connect(self, db_fname): - self.conn = sqlite3.connect(self.db_fname) - - def instructions(self, query_statement): - raise NotImplementedError() - - def operate(self): - self.conn.row_factory = sqlite3.Row - self.results = self.conn.execute(self.query) # self.query is to be given in the child classes - self.conn.commit() - - def format_results(self): - raise NotImplementedError() - - def do(self): - self.connect(self.db_fname) - self.instructions(self.query) - self.operate() - - def instructions_with_parameters(self, query_statement, parameters): - self.query = query_statement - self.parameters = parameters - - def do_with_parameters(self): - self.connect(self.db_fname) - self.instructions_with_parameters(self.query, self.parameters) - self.operate_with_parameters() - - def operate_with_parameters(self): - self.conn.row_factory = sqlite3.Row - self.results = self.conn.execute(self.query, self.parameters) # self.query is to be given in the child classes - self.conn.commit() - - -class InsertQuery(Sqlite3Template): - def instructions(self, query): - self.query = query - - -class RecordQuery(Sqlite3Template): - def instructions(self, query): - self.query = query - - def format_results(self): - output = [] - for row_dict in self.results.fetchall(): - lst = [] - for k in dict(row_dict): - lst.append( row_dict[k] ) - output.append(', '.join(lst)) - return '\n\n'.join(output) - - def get_results(self): - result = [] - for row_dict in self.results.fetchall(): - result.append( dict(row_dict) ) - return result - - - -if __name__ == '__main__': - - #iq = InsertQuery('RiskDB.db') - #iq.instructions("INSERT INTO inspection Values ('FoodSupplies', 'RI2019051301', '2019-05-13', '{}')") - #iq.do() - #iq.instructions("INSERT INTO inspection Values ('CarSupplies', 'RI2019051302', '2019-05-13', '{[{\"risk_name\":\"elevator\"}]}')") - #iq.do() - - rq = RecordQuery('wordfreqapp.db') - rq.instructions("SELECT * FROM article WHERE level=3") - rq.do() - #print(rq.format_results()) diff --git a/app/account_service.py b/app/account_service.py index a7ed0c4..fd5f7f6 100644 --- a/app/account_service.py +++ b/app/account_service.py @@ -1,4 +1,5 @@ from flask import * +from markupsafe import escape from Login import check_username_availability, verify_user, add_user, get_expiry_date, change_password, WarningMessage diff --git a/app/admin_service.py b/app/admin_service.py index a604b5e..c461af9 100644 --- a/app/admin_service.py +++ b/app/admin_service.py @@ -1,5 +1,6 @@ # System Library from flask import * +from markupsafe import escape # Personal library from Yaml import yml @@ -37,6 +38,22 @@ def admin(): @adminService.route("/admin/article", methods=["GET", "POST"]) def article(): + + def _make_title_and_content(article_lst): + for article in article_lst: + text = escape(article.text) # Fix XSS vulnerability, contributed by Xu Xuan + article.title = text.split("\n")[0] + article.content = '
'.join(text.split("\n")[1:]) + + + def _update_context(): + article_len = get_number_of_articles() + context["article_number"] = article_len + context["text_list"] = get_page_articles(_cur_page, _page_size) + _articles = get_page_articles(_cur_page, _page_size) + _make_title_and_content(_articles) + context["text_list"] = _articles + global _cur_page, _page_size is_admin = check_is_admin() @@ -44,20 +61,15 @@ def article(): return is_admin _article_number = get_number_of_articles() + try: - _page_size = min( - max(1, int(request.args.get("size", 5))), _article_number - ) # 最小的size是1 - _cur_page = min( - max(1, int(request.args.get("page", 1))), _article_number // _page_size + (_article_number % _page_size > 0) - ) # 最小的page是1 + _page_size = min(max(1, int(request.args.get("size", 5))), _article_number) # 最小的size是1 + _cur_page = min(max(1, int(request.args.get("page", 1))), _article_number // _page_size + (_article_number % _page_size > 0)) # 最小的page是1 except ValueError: - return "page parmas must be int!" - + return "page parameters must be integer!" + _articles = get_page_articles(_cur_page, _page_size) - for article in _articles: # 获取每篇文章的title - article.title = article.text.split("\n")[0] - article.content = '
'.join(article.text.split("\n")[1:]) + _make_title_and_content(_articles) context = { "article_number": _article_number, @@ -67,23 +79,16 @@ def article(): "username": session.get("username"), } - def _update_context(): - article_len = get_number_of_articles() - context["article_number"] = article_len - context["text_list"] = get_page_articles(_cur_page, _page_size) - _articles = get_page_articles(_cur_page, _page_size) - for article in _articles: # 获取每篇文章的title - article.title = article.text.split("\n")[0] - context["text_list"] = _articles if request.method == "GET": try: delete_id = int(request.args.get("delete_id", 0)) except: - return "Delete article ID must be int!" + return "Delete article ID must be integer!" if delete_id: # delete article delete_article_by_id(delete_id) _update_context() + elif request.method == "POST": data = request.form content = data.get("content", "") @@ -97,6 +102,7 @@ def article(): _update_context() title = content.split('\n')[0] flash(f'Article added. Title: {title}') + return render_template("admin_manage_article.html", **context) diff --git a/app/db/README.txt b/app/db/README.txt new file mode 100644 index 0000000..bb826a6 --- /dev/null +++ b/app/db/README.txt @@ -0,0 +1 @@ +Put wordfreqapp.db here diff --git a/app/difficulty.py b/app/difficulty.py index cb93768..1bd8d68 100644 --- a/app/difficulty.py +++ b/app/difficulty.py @@ -18,6 +18,7 @@ def load_record(pickle_fname): return d +ENGLISH_WORD_DIFFICULTY_DICT = {} def convert_test_type_to_difficulty_level(d): """ 对原本的单词库中的单词进行难度评级 @@ -39,8 +40,10 @@ def convert_test_type_to_difficulty_level(d): elif 'BBC' in d[k]: result[k] = 8 - return result # {'apple': 4, ...} + global ENGLISH_WORD_DIFFICULTY_DICT + ENGLISH_WORD_DIFFICULTY_DICT = result + return result # {'apple': 4, ...} def get_difficulty_level_for_user(d1, d2): """ @@ -49,7 +52,11 @@ def get_difficulty_level_for_user(d1, d2): 在d2的后面添加单词,没有新建一个新的字典 """ # TODO: convert_test_type_to_difficulty_level() should not be called every time. Each word's difficulty level should be pre-computed. - d2 = convert_test_type_to_difficulty_level(d2) # 根据d2的标记评级{'apple': 4, 'abandon': 4, ...} + if ENGLISH_WORD_DIFFICULTY_DICT == {}: + d2 = convert_test_type_to_difficulty_level(d2) # 根据d2的标记评级{'apple': 4, 'abandon': 4, ...} + else: + d2 = ENGLISH_WORD_DIFFICULTY_DICT + stemmer = snowballstemmer.stemmer('english') for k in d1: # 用户的词 diff --git a/app/main.py b/app/main.py index 4e3f829..19bd889 100644 --- a/app/main.py +++ b/app/main.py @@ -1,19 +1,19 @@ -#! /usr/bin/python3 -# -*- coding: utf-8 -*- - ########################################################################### # Copyright 2019 (C) Hui Lan # Written permission must be obtained from the author for commercial uses. ########################################################################### -from flask import escape +from flask import abort +from markupsafe import escape from Login import * from Article import * import Yaml from user_service import userService from account_service import accountService from admin_service import adminService, ADMIN_NAME +import os + app = Flask(__name__) -app.secret_key = 'lunch.time!' +app.secret_key = os.urandom(32) # 将蓝图注册到Lab app app.register_blueprint(userService) @@ -54,7 +54,6 @@ def appears_in_test(word, d): else: return ','.join(d[word]) - @app.route("/mark", methods=['GET', 'POST']) def mark_word(): ''' diff --git a/app/model/__init__.py b/app/model/__init__.py index 9526313..f5256a2 100644 --- a/app/model/__init__.py +++ b/app/model/__init__.py @@ -1,7 +1,7 @@ from pony.orm import * db = Database() -db.bind("sqlite", "../static/wordfreqapp.db", create_db=True) # bind sqlite file +db.bind("sqlite", "../db/wordfreqapp.db", create_db=True) # bind sqlite file class User(db.Entity): diff --git a/app/model/article.py b/app/model/article.py index a3b4bf7..bf19ded 100644 --- a/app/model/article.py +++ b/app/model/article.py @@ -7,7 +7,7 @@ def add_article(content, source="manual_input", level="5", question="No question Article( text=content, source=source, - date=datetime.now().strftime("%-d %b %Y"), # format style of `5 Oct 2022` + date=datetime.now().strftime("%d %b %Y"), # format style of `5 Oct 2022` level=level, question=question, ) @@ -32,3 +32,17 @@ def get_page_articles(num, size): x for x in Article.select().order_by(desc(Article.article_id)).page(num, size) ] + + +def get_all_articles(): + articles = [] + with db_session: + for article in Article.select(): + articles.append(article.to_dict()) + return articles + + +def get_article_by_id(article_id): + with db_session: + article = Article.get(article_id=article_id) + return [article.to_dict()] diff --git a/app/static/config.yml b/app/static/config.yml index 285f31f..7e681fe 100644 --- a/app/static/config.yml +++ b/app/static/config.yml @@ -2,13 +2,14 @@ css: item: - ../static/css/bootstrap.css - + - ../static/css/highlighted.css # 全局引入的js文件地址 js: head: # 在页面加载之前加载 - ../static/js/jquery.js - ../static/js/read.js - ../static/js/word_operation.js + - ../static/js/checkboxes.js bottom: # 在页面加载完之后加载 - ../static/js/fillword.js - ../static/js/highlight.js diff --git a/app/static/css/highlighted.css b/app/static/css/highlighted.css new file mode 100644 index 0000000..167f595 --- /dev/null +++ b/app/static/css/highlighted.css @@ -0,0 +1,5 @@ + +.highlighted { + color: red; + font-weight: normal; +} \ No newline at end of file diff --git a/app/static/js/checkboxes.js b/app/static/js/checkboxes.js new file mode 100644 index 0000000..297df55 --- /dev/null +++ b/app/static/js/checkboxes.js @@ -0,0 +1,5 @@ +function toggleCheckboxSelection(checkStatus) { + // used in userpage_post.html + const checkBoxes = document.getElementsByName('marked'); + checkBoxes.forEach((checkbox) => { checkbox.checked = checkStatus;} ); +} diff --git a/app/static/js/fillword.js b/app/static/js/fillword.js index b967633..111027a 100644 --- a/app/static/js/fillword.js +++ b/app/static/js/fillword.js @@ -1,5 +1,5 @@ -let isRead = true; -let isChoose = true; +let isRead = localStorage.getItem('readChecked') !== 'false'; // default to true +let isChoose = localStorage.getItem('chooseChecked') !== 'false'; function getWord() { return window.getSelection ? window.getSelection() : document.selection.createRange().text; @@ -8,9 +8,17 @@ function getWord() { function fillInWord() { let word = getWord(); if (isRead) Reader.read(word, inputSlider.value); - if (!isChoose) return; + if (!isChoose) { + if(isHighlight){ + const element = document.getElementById("selected-words3"); + element.value = element.value + " " + word; + } + return; + } const element = document.getElementById("selected-words"); + localStorage.setItem('nowWords', element.value); element.value = element.value + " " + word; + localStorage.setItem('selectedWords', element.value); } document.getElementById("text-content").addEventListener("click", fillInWord, false); @@ -24,8 +32,16 @@ inputSlider.oninput = () => { function onReadClick() { isRead = !isRead; + localStorage.setItem('readChecked', isRead); } function onChooseClick() { isChoose = !isChoose; + localStorage.setItem('chooseChecked', isChoose); } + +// 如果网页刷新,停止播放声音 +if (performance.getEntriesByType("navigation")[0].type == "reload") { + Reader.stopRead(); +} + diff --git a/app/static/js/highlight.js b/app/static/js/highlight.js index 0cea31a..9646ff3 100644 --- a/app/static/js/highlight.js +++ b/app/static/js/highlight.js @@ -1,4 +1,4 @@ -let isHighlight = true; +let isHighlight = localStorage.getItem('highlightChecked') !== 'false'; // default to true function cancelBtnHandler() { cancelHighlighting(); @@ -22,62 +22,48 @@ function getWord() { function highLight() { if (!isHighlight) return; - let articleContent = document.getElementById("article").innerText; //将原来的.innerText改为.innerHtml,使用innerText会把原文章中所包含的
标签去除,导致处理后的文章内容失去了原来的格式 + let word = (getWord() + "").trim(); + let articleContent = document.getElementById("article").innerHTML; // innerHTML保留HTML标签来保持部分格式,且适配不同的浏览器 let pickedWords = document.getElementById("selected-words"); // words picked to the text area let dictionaryWords = document.getElementById("selected-words2"); // words appearing in the user's new words list - let allWords = ""; //初始化allWords的值,避免进入判断后编译器认为allWords未初始化的问题 - if(dictionaryWords != null){//增加一个判断,检查生词本里面是否为空,如果为空,allWords只添加选中的单词 - allWords = pickedWords.value + " " + dictionaryWords.value; + let allWords = dictionaryWords === null ? pickedWords.value + " " : pickedWords.value + " " + dictionaryWords.value; + highlightWords = document.getElementById("selected-words3"); + allWords = highlightWords == null ? allWords : allWords + " " + highlightWords.value; + const list = allWords.split(" "); // 将所有的生词放入一个list中 + if(word !== null && word !== "" && word !== " "){ + let articleContent_fb2 = articleContent; + if(localStorage.getItem("nowWords").indexOf(word) !== -1 || localStorage.getItem("nowWords").indexOf(word.toLowerCase()) !== -1){ + articleContent = articleContent.replace(new RegExp('' + word + '', "gi"), word); + pickedWords.value = localStorage.getItem("nowWords").replace(word,""); + document.getElementById("article").innerHTML = articleContent; + return; + } } - else{ - allWords = pickedWords.value + " "; - } - const list = allWords.split(" ");//将所有的生词放入一个list中,用于后续处理 + let totalSet = new Set(); for (let i = 0; i < list.length; ++i) { - list[i] = list[i].replace(/(^\s*)|(\s*$)/g, ""); //消除单词两边的空字符 + list[i] = list[i].replace(/(^\W*)|(\W*$)/g, ""); // 消除单词两边的非单词字符 list[i] = list[i].replace('|', ""); list[i] = list[i].replace('?', ""); - if (list[i] !== "" && "".indexOf(list[i]) === -1 && "".indexOf(list[i]) === -1) { - //将文章中所有出现该单词word的地方改为:"" + word + ""。 正则表达式RegExp()中,"\\b"代表单词边界匹配。 - - //修改代码 - let articleContent_fb = articleContent; //文章副本 - while(articleContent_fb.toLowerCase().indexOf(list[i].toLowerCase()) !== -1 && list[i]!=""){ - //找到副本中和list[i]匹配的第一个单词(第一种匹配情况),并赋值给list[i]。 - const index = articleContent_fb.toLowerCase().indexOf(list[i].toLowerCase()); - list[i] = articleContent_fb.substring(index, index + list[i].length); - - articleContent_fb = articleContent_fb.substring(index + list[i].length); // 使用副本中list[i]之后的子串替换掉副本 - articleContent = articleContent.replace(new RegExp("\\b"+list[i]+"\\b","g"),"" + list[i] + ""); - } + if (list[i] != "" && !totalSet.has(list[i])) { + // 返回所有匹配单词的集合, 正则表达式RegExp()中, "\b"匹配一个单词的边界, g 表示全局匹配, i 表示对大小写不敏感。 + let matches = new Set(articleContent.match(new RegExp("\\b" + list[i] + "\\b", "gi"))); + totalSet = new Set([...totalSet, ...matches]); } } + // 删除所有的""标签,防止标签发生嵌套 + articleContent = articleContent.replace(new RegExp('',"gi"), "") + articleContent = articleContent.replace(new RegExp("","gi"), ""); + // 将文章中所有出现该单词word的地方改为:"" + word + ""。 + for (let word of totalSet) { + articleContent = articleContent.replace(new RegExp("\\b" + word + "\\b", "g"), "" + word + ""); + } document.getElementById("article").innerHTML = articleContent; } function cancelHighlighting() { - let articleContent = document.getElementById("article").innerText;//将原来的.innerText改为.innerHtml,原因同上 - let pickedWords = document.getElementById("selected-words"); - const dictionaryWords = document.getElementById("selected-words2"); - const list = pickedWords.value.split(" "); - if (pickedWords != null) { - for (let i = 0; i < list.length; ++i) { - list[i] = list[i].replace(/(^\s*)|(\s*$)/g, ""); - if (list[i] !== "") { //原来判断的代码中,替换的内容为“list[i]”这个字符串,这明显是错误的,我们需要替换的是list[i]里的内容 - articleContent = articleContent.replace(new RegExp(""+list[i]+"", "g"), list[i]); - } - } - } - if (dictionaryWords != null) { - let list2 = pickedWords.value.split(" "); - for (let i = 0; i < list2.length; ++i) { - list2 = dictionaryWords.value.split(" "); - list2[i] = list2[i].replace(/(^\s*)|(\s*$)/g, ""); - if (list2[i] !== "") { //原来代码中,替换的内容为“list[i]”这个字符串,这明显是错误的,我们需要替换的是list[i]里的内容 - articleContent = articleContent.replace(new RegExp(""+list2[i]+"", "g"), list2[i]); - } - } - } + let articleContent = document.getElementById("article").innerHTML; + articleContent = articleContent.replace(new RegExp('',"gi"), "") + articleContent = articleContent.replace(new RegExp("","gi"), ""); document.getElementById("article").innerHTML = articleContent; } @@ -97,6 +83,7 @@ function toggleHighlighting() { isHighlight = true; highLight(); } + localStorage.setItem('highlightChecked', isHighlight); } -showBtnHandler(); +showBtnHandler(); \ No newline at end of file diff --git a/app/static/js/read.js b/app/static/js/read.js index 814f627..c28fd26 100644 --- a/app/static/js/read.js +++ b/app/static/js/read.js @@ -9,7 +9,7 @@ var Reader = (function() { msg.rate = rate; msg.lang = "en-US"; msg.onboundary = ev => { - if (ev.name == "word") { + if (ev.name === "word") { current_position = ev.charIndex; } } @@ -32,4 +32,4 @@ var Reader = (function() { read: read, stopRead: stopRead }; -})(); +}) (); diff --git a/app/static/js/word_operation.js b/app/static/js/word_operation.js index f043cce..8b3ac6c 100644 --- a/app/static/js/word_operation.js +++ b/app/static/js/word_operation.js @@ -5,15 +5,14 @@ function familiar(theWord) { $.ajax({ type:"GET", url:"/" + username + "/" + word + "/familiar", - success:function(response){ + success:function(response) { let new_freq = freq - 1; const allow_move = document.getElementById("move_dynamiclly").checked; if (allow_move) { - if (new_freq <= 0) { removeWord(theWord); } else { - renderWord({ word: theWord, freq: new_freq }); + renderWord({word: theWord, freq: new_freq}); } } else { if(new_freq <1) { @@ -33,11 +32,11 @@ function unfamiliar(theWord) { $.ajax({ type:"GET", url:"/" + username + "/" + word + "/unfamiliar", - success:function(response){ + success:function(response) { let new_freq = parseInt(freq) + 1; const allow_move = document.getElementById("move_dynamiclly").checked; if (allow_move) { - renderWord({ word: theWord, freq: new_freq }); + renderWord({word: theWord, freq: new_freq}); } else { $("#freq_" + theWord).text(new_freq); } @@ -51,7 +50,7 @@ function delete_word(theWord) { $.ajax({ type:"GET", url:"/" + username + "/" + word + "/del", - success:function(response){ + success:function(response) { const allow_move = document.getElementById("move_dynamiclly").checked; if (allow_move) { removeWord(theWord); @@ -103,6 +102,8 @@ function wordTemplate(word) { 不熟悉 删除 朗读 + 笔记 +

`; } @@ -114,7 +115,7 @@ function removeWord(word) { // 根据词频信息删除元素 word = word.replace('&', '&'); const element_to_remove = document.getElementById(`p_${word}`); - if (element_to_remove != null) { + if (element_to_remove !== null) { element_to_remove.remove(); } } @@ -129,7 +130,7 @@ function renderWord(word) { for (const current of container.children) { const cur_word = parseWord(current); // 找到第一个词频比它小的元素,插入到这个元素前面 - if (compareWord(cur_word, word) == -1) { + if (compareWord(cur_word, word) === -1) { container.insertBefore(new_element, current); inserted = true; break; @@ -165,17 +166,11 @@ function elementFromString(string) { * 当first大于second时返回1 */ function compareWord(first, second) { - if (first.freq < second.freq) { - return -1; + if (first.freq !== second.freq) { + return first.freq < second.freq ? -1 : 1; } - if (first.freq > second.freq) { - return 1; - } - if (first.word < second.word) { - return -1; - } - if (first.word > second.word) { - return 1; + if (first.word !== second.word) { + return first.word < second.word ? -1 : 1; } return 0; -} +} \ No newline at end of file diff --git a/app/static/wordfreqapp.db b/app/static/wordfreqapp.db new file mode 100644 index 0000000000000000000000000000000000000000..90f41b64bf66b10f944dcc4760b41fd409e550be GIT binary patch literal 409600 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 session['username'] }}。 登出点击这里。 +你已登录 {{ session['username'] }}。 登出点击这里。 {% else %} @@ -15,6 +15,10 @@ alert('输入不能为空!'); return false; } + if (password.includes(' ')) { + alert('输入不能包含空格!'); + return false; + } $.post( "/login", {'username': username, 'password': password}, function (response) { @@ -32,14 +36,13 @@
-
{% endif %} diff --git a/app/templates/mainpage_get.html b/app/templates/mainpage_get.html index 344943d..2a9b8e3 100644 --- a/app/templates/mainpage_get.html +++ b/app/templates/mainpage_get.html @@ -34,9 +34,9 @@

粘贴1篇文章 (English only)

-
+
- +
{% if d_len > 0 %}

最常见的词

@@ -44,6 +44,7 @@ {{x[0]}} {{x[1]}} {% endfor %} {% endif %} +

Version: 20240618

{{ yml['footer'] | safe }} @@ -52,5 +53,22 @@ {% endfor %} {% endif %} + diff --git a/app/templates/mainpage_post.html b/app/templates/mainpage_post.html index 7357457..5df7dd5 100644 --- a/app/templates/mainpage_post.html +++ b/app/templates/mainpage_post.html @@ -2,7 +2,7 @@ - Title + 单词词频 {{ yml['header'] | safe }} {% if yml['css']['item'] %} diff --git a/app/templates/reset.html b/app/templates/reset.html index 3425c97..408e001 100644 --- a/app/templates/reset.html +++ b/app/templates/reset.html @@ -12,6 +12,10 @@ alert('输入不能为空!'); return false; } + if (old_password.includes(' ') || new_password.includes(' ')) { + alert('输入不能包含空格!'); + return false; + } if (new_password !== re_new_password) { alert('新密码不匹配,请重新输入'); return false; diff --git a/app/templates/signup.html b/app/templates/signup.html index 9030d41..6b5db6e 100644 --- a/app/templates/signup.html +++ b/app/templates/signup.html @@ -16,6 +16,10 @@ You're logged in already! Logout. alert('输入不能为空!'); return false; } + if (password.includes(' ') || password2.includes(' ')) { + alert('输入不能包含空格!'); + return false; + } if (password !== password2) { alert('确认密码与输入密码不一致!'); return false; @@ -53,7 +57,7 @@ You're logged in already! Logout.

diff --git a/app/templates/userpage_get.html b/app/templates/userpage_get.html index 0488aea..f8dda4a 100644 --- a/app/templates/userpage_get.html +++ b/app/templates/userpage_get.html @@ -23,10 +23,36 @@ EnglishPal Study Room for {{ username }} @@ -76,6 +104,7 @@

{% for message in get_flashed_messages() %} +<<<<<<< HEAD