瀏覽代碼

레벨 기능 제작 완료

잉여개발기 (SPDV) 2 年之前
父節點
當前提交
348930b4b4
共有 7 個文件被更改,包括 147 次插入21 次删除
  1. 10 1
      lang/en-US.json
  2. 10 1
      lang/ko-KR.json
  3. 6 2
      route/main_setting_main.py
  4. 12 0
      route/tool/func.py
  5. 107 15
      route/user_challenge.py
  6. 1 1
      route/user_info.py
  7. 1 1
      version.json

+ 10 - 1
lang/en-US.json

@@ -120,6 +120,10 @@
         "popover" : "Popover",
         "trace" : "Trace",
         "level" : "Level",
+        "challenge" : "Challenges",
+        "ua" : "UA",
+        "day" : "Day(s)",
+        "backup" : "Backup",
         "_comment_1.1_" : "Time",
             "second" : "Second(s)",
             "hour" : "Hour(s)",
@@ -235,7 +239,6 @@
         "key_change" : "Change key",
         "key_delete" : "Delete key",
         "email_delete" : "Delete email",
-        "challenge" : "Challenge",
         "user_title" : "User title",
         "multiple_ban" : "Multiple ban",
         "dont_move" : "Don't move",
@@ -249,6 +252,9 @@
         "change_user_name" : "Change main user name",
         "sub_user_name" : "Sub user name",
         "start_with_search" : "Search from the first letter",
+        "challenge_and_level_manage" : "Challenges and level management",
+        "bbs_record" : "BBS post(s) record",
+        "bbs_comment_record" : "BBS comment(s) record",
         "_comment_" : "BBS",
             "bbs" : "BBS",
             "bbs_main" : "BBS main",
@@ -399,6 +405,9 @@
                 "move_with_redirect" : "Create a redirect when moving a document",
                 "slow_thread" : "Continuous thread upload limit",
                 "edit_timeout" : "render timeout",
+                "display_level_in_user_name" : "Displaying levels in username",
+                "ua_expiration_date" : "UA Expiration deadline",
+                "document_content_max_length" : "Maximum document length",
             "_comment_" : "Text",
                 "register_text" : "Terms of sign-up",
                 "non_login_alert" : "Non-login alert",

+ 10 - 1
lang/ko-KR.json

@@ -590,5 +590,14 @@
     "view_history": "문서 열람 추적 사용",
     "start_with_search" : "첫 글자부터 검색",
     "backup_warning" : "경고. 동일한 이름의 파일이 있는 경우 지워질 수 있습니다.",
-    "level" : "레벨"
+    "level" : "레벨",
+    "challenge_and_level_manage" : "도전과제와 레벨 관리",
+    "display_level_in_user_name" : "사용자 이름에 레벨 표시",
+    "ua" : "UA",
+    "day" : "일",
+    "ua_expiration_date" : "UA 만료 기한",
+    "backup" : "백업",
+    "document_content_max_length" : "문서 최대 길이",
+    "bbs_record" : "게시판 작성글 목록",
+    "bbs_comment_record" : "게시판 작성댓글 목록"
 }

+ 6 - 2
route/main_setting_main.py

@@ -45,7 +45,8 @@ def main_setting_main(db_set):
             41 : ['backup_count', ''],
             42 : ['ua_expiration_date', ''],
             43 : ['auth_history_expiration_date', ''],
-            44 : ['auth_history_off', '']
+            44 : ['auth_history_off', ''],
+            45 : ['user_name_level', '']
         }
 
         if flask.request.method == 'POST':
@@ -92,7 +93,7 @@ def main_setting_main(db_set):
                 else:
                     tls_select += '<option value="' + tls_select_one + '">' + tls_select_one + '</option>'
 
-            check_box_div = [7, 8, '', 20, 23, 24, 25, 26, 31, 33, 34, 35, 36, 37, 44]
+            check_box_div = [7, 8, '', 20, 23, 24, 25, 26, 31, 33, 34, 35, 36, 37, 44, 45]
             for i in range(0, len(check_box_div)):
                 acl_num = check_box_div[i]
                 if acl_num != '' and d_list[acl_num]:
@@ -184,6 +185,9 @@ def main_setting_main(db_set):
                         <input type="checkbox" name="enable_challenge" ''' + check_box_div[6] + '''> ''' + load_lang('enable_challenge_function') + ''' (''' + load_lang('not_working') + ''')
                         <hr class="main_hr">
 
+                        <input type="checkbox" name="user_name_level" ''' + check_box_div[15] + '''> ''' + load_lang('display_level_in_user_name') + '''
+                        <hr class="main_hr">
+
                         <h2>''' + load_lang('design_set') + '''</h2>
                         
                         <span>''' + load_lang('wiki_skin') + '''</span>

+ 12 - 0
route/tool/func.py

@@ -2134,6 +2134,18 @@ def ip_pas(raw_ip, type_data = 0):
                     curs.execute(db_change('select data from user_set where name = "user_name" and id = ?'), [raw_ip])
                     db_data = curs.fetchall()
                     ip = db_data[0][0] if db_data and db_data[0][0] != '' else raw_ip
+
+                curs.execute(db_change("select data from other where name = 'user_name_level'"))
+                db_data = curs.fetchall()
+                if db_data and db_data[0][0] != '':
+                    level = '0'
+
+                    curs.execute(db_change("select data from user_set where id = ? and name = 'level'"), [raw_ip])
+                    db_data = curs.fetchall()
+                    if db_data:
+                        level = db_data[0][0]
+
+                    ip += '<sup>' + level + '</sup>'
                 
             if type_data == 0 and change_ip == 0:
                 if is_this_ip == 0:

+ 107 - 15
route/user_challenge.py

@@ -31,7 +31,85 @@ def user_challenge():
             return redirect('/user')
 
         if flask.request.method == 'POST':
-            pass
+            user_exp = 0
+
+            curs.execute(db_change('select count(*) from history where ip = ?'), [ip])
+            db_data = curs.fetchall()
+            if not db_data:
+                db_data = [[0]]
+
+            user_exp += 5 * db_data[0][0]
+
+            if db_data[0][0] >= 1:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_first_contribute'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_first_contribute', ?, '1')"), [ip])
+                user_exp += 500
+
+            if db_data[0][0] >= 10:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_tenth_contribute'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_tenth_contribute', ?, '1')"), [ip])
+                user_exp += 1000
+
+            if db_data[0][0] >= 100:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_hundredth_contribute'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_hundredth_contribute', ?, '1')"), [ip])
+                user_exp += 3000        
+
+            if db_data[0][0] >= 1000:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_thousandth_contribute'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_thousandth_contribute', ?, '1')"), [ip])
+                user_exp += 10000
+
+            curs.execute(db_change("select count(*) from topic where ip = ?"), [ip])
+            db_data = curs.fetchall()
+            if not db_data:
+                db_data = [[0]]
+
+            user_exp += 5 * db_data[0][0]
+
+            if db_data[0][0] >= 1:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_first_discussion'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_first_discussion', ?, '1')"), [ip])
+                user_exp += 500    
+
+            if db_data[0][0] >= 10:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_tenth_discussion'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_tenth_discussion', ?, '1')"), [ip])
+                user_exp += 1000
+
+            if db_data[0][0] >= 100:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_hundredth_discussion'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_hundredth_discussion', ?, '1')"), [ip])
+                user_exp += 3000
+
+            if db_data[0][0] >= 1000:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_thousandth_discussion'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_thousandth_discussion', ?, '1')"), [ip])
+                user_exp += 10000        
+
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_admin', ip])
+            db_data = curs.fetchall()
+            if admin_check('all') == 1 or db_data:
+                curs.execute(db_change("delete from user_set where id = ? and name = 'challenge_admin'"), [ip])
+                curs.execute(db_change("insert into user_set (name, id, data) values ('challenge_admin', ?, '1')"), [ip])
+                user_exp += 10000
+
+            exp = user_exp
+            level = 0
+            while 1:
+                if exp >= (500 + level * 50):
+                    exp -= (500 + level * 50)
+                    level += 1
+                else:
+                    break
+
+            curs.execute(db_change("delete from user_set where id = ? and name = 'level'"), [ip])
+            curs.execute(db_change("insert into user_set (name, id, data) values ('level', ?, ?)"), [ip, level])
+
+            curs.execute(db_change("delete from user_set where id = ? and name = 'experience'"), [ip])
+            curs.execute(db_change("insert into user_set (name, id, data) values ('experience', ?, ?)"), [ip, exp])
+
+            return redirect('/challenge')
         else:
             data_html_green = ''
             data_html_red = ''
@@ -43,10 +121,9 @@ def user_challenge():
                 1
             )
             
-            curs.execute(db_change('select count(*) from history where ip = ?'), [ip])
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_first_contribute', ip])
             db_data = curs.fetchall()
-            
-            disable = 1 if db_data[0][0] >= 1 else 0
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '🔰',
                 load_lang('challenge_title_first_contribute'), 
@@ -58,7 +135,9 @@ def user_challenge():
             else:
                 data_html_red += data_html
             
-            disable = 1 if db_data[0][0] >= 10 else 0
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_tenth_contribute', ip])
+            db_data = curs.fetchall()
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '📝',
                 load_lang('challenge_title_tenth_contribute'), 
@@ -70,7 +149,9 @@ def user_challenge():
             else:
                 data_html_red += data_html
             
-            disable = 1 if db_data[0][0] >= 100 else 0
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_hundredth_contribute', ip])
+            db_data = curs.fetchall()
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '🖊️',
                 load_lang('challenge_title_hundredth_contribute'), 
@@ -82,7 +163,9 @@ def user_challenge():
             else:
                 data_html_red += data_html
             
-            disable = 1 if db_data[0][0] >= 1000 else 0
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_thousandth_contribute', ip])
+            db_data = curs.fetchall()
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '🏅',
                 load_lang('challenge_title_thousandth_contribute'), 
@@ -94,10 +177,9 @@ def user_challenge():
             else:
                 data_html_red += data_html
             
-            curs.execute(db_change("select count(*) from topic where ip = ?"), [ip])
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_first_discussion', ip])
             db_data = curs.fetchall()
-            
-            disable = 1 if db_data[0][0] >= 1 else 0
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '💬',
                 load_lang('challenge_title_first_discussion'), 
@@ -109,7 +191,9 @@ def user_challenge():
             else:
                 data_html_red += data_html
             
-            disable = 1 if db_data[0][0] >= 10 else 0
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_tenth_discussion', ip])
+            db_data = curs.fetchall()
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '💡',
                 load_lang('challenge_title_tenth_discussion'), 
@@ -121,7 +205,9 @@ def user_challenge():
             else:
                 data_html_red += data_html
             
-            disable = 1 if db_data[0][0] >= 100 else 0
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_hundredth_discussion', ip])
+            db_data = curs.fetchall()
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '📢',
                 load_lang('challenge_title_hundredth_discussion'), 
@@ -133,7 +219,9 @@ def user_challenge():
             else:
                 data_html_red += data_html
             
-            disable = 1 if db_data[0][0] >= 1000 else 0
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_thousandth_discussion', ip])
+            db_data = curs.fetchall()
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '📜',
                 load_lang('challenge_title_thousandth_discussion'), 
@@ -147,7 +235,9 @@ def user_challenge():
                 
             data_html = data_html_green + data_html_red
 
-            disable = 1 if admin_check('all') == 1 else 0
+            curs.execute(db_change('select data from user_set where name = ? and id = ?'), ['challenge_admin', ip])
+            db_data = curs.fetchall()
+            disable = 1 if db_data else 0
             data_html = do_make_challenge_design(
                 '✅',
                 load_lang('challenge_title_admin'), 
@@ -162,9 +252,11 @@ def user_challenge():
             data_html = data_html_green + data_html_red
             
             return easy_minify(flask.render_template(skin_check(),
-                imp = [load_lang('challenge'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
+                imp = [load_lang('challenge_and_level_manage'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
                 data = data_html + '''
                     <form method="post">
+                        <div id="opennamu_get_user_info">''' + html.escape(ip) + '''</div>
+                        <hr class="main_hr">
                         <button id="opennamu_save_button" type="submit">''' + load_lang('reload') + '''</button>
                     </form>
                 ''',

+ 1 - 1
route/user_info.py

@@ -28,7 +28,7 @@ def user_info(name = ''):
     
                 tool_menu += '<li><a href="/watch_list">' + load_lang('watchlist') + '</a></li>'
                 tool_menu += '<li><a href="/star_doc">' + load_lang('star_doc') + '</a></li>'
-                tool_menu += '<li><a href="/challenge">' + load_lang('challenge') + '</a></li>'
+                tool_menu += '<li><a href="/challenge">' + load_lang('challenge_and_level_manage') + '</a></li>'
                 tool_menu += '<li><a href="/acl/user:' + url_pas(ip) + '">' + load_lang('user_document_acl') + '</a></li>'
             else:
                 login_menu += '''

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC5-dev85",
+        "r_ver" : "v3.4.6-RC5-dev86",
         "c_ver" : "3500374",
         "s_ver" : "3500112"
     }