Просмотр исходного кода

Merge pull request #2355 from openNAMU/dont_use

버그 수정 및 일부 기능 개편
잉여개발기 1 год назад
Родитель
Сommit
97f5110aef
40 измененных файлов с 479 добавлено и 281 удалено
  1. 2 2
      app.py
  2. 6 2
      lang/en-US.json
  3. 7 3
      lang/ko-KR.json
  4. 4 5
      route/__init__.py
  5. 0 27
      route/api_setting.py
  6. 0 91
      route/bbs_w_set.py
  7. 4 0
      route/filter_all.py
  8. 2 0
      route/give_admin_groups.py
  9. 14 0
      route/go_api_bbs_w_set.py
  10. 1 0
      route/go_api_list_history.py
  11. 6 0
      route/go_api_list_markup.py
  12. 1 1
      route/go_api_topic.py
  13. 1 1
      route/n_bbs_main.py
  14. 0 13
      route/n_bbs_set.py
  15. 24 0
      route/n_bbs_w_set.py
  16. 2 2
      route/tool/func.py
  17. 2 6
      route/topic.py
  18. BIN
      route_go/bin/main.amd64.bin
  19. BIN
      route_go/bin/main.amd64.exe
  20. BIN
      route_go/bin/main.arm64.bin
  21. BIN
      route_go/bin/main.arm64.exe
  22. 6 0
      route_go/main.go
  23. 86 0
      route_go/route/api_bbs_w_set.go
  24. 60 0
      route_go/route/api_bbs_w_set_put.go
  25. 1 0
      route_go/route/api_list_history.go
  26. 23 0
      route_go/route/api_list_markup.go
  27. 1 0
      route_go/route/api_list_recent_change.go
  28. 29 7
      route_go/route/api_setting.go
  29. 18 2
      route_go/route/tool/acl_and_auth.go
  30. 10 0
      route_go/route/tool/render.go
  31. 1 1
      version.json
  32. 15 8
      views/main_css/js/func/func.js
  33. 0 87
      views/main_css/js/route/bbs_set.js
  34. 129 0
      views/main_css/js/route/bbs_w_set.js
  35. 11 1
      views/main_css/js/route/list_history.js
  36. 10 1
      views/main_css/js/route/list_recent_change.js
  37. 1 16
      views/main_css/js/route/topic.js
  38. 1 1
      views/ringo/index.html
  39. 1 1
      views/ringo/info.json
  40. 0 3
      views/ringo/js/sidebar.js

+ 2 - 2
app.py

@@ -691,7 +691,6 @@ app.route('/vote/add', methods = ['POST', 'GET'])(vote_add)
 # Func-bbs
 app.route('/bbs/main')(bbs_main)
 app.route('/bbs/make', methods = ['POST', 'GET'])(bbs_make)
-app.route('/bbs/set')(bbs_set)
 app.route('/bbs/in/<int:bbs_num>')(bbs_in)
 app.route('/bbs/in/<int:bbs_num>/<int:page>')(bbs_in)
 # app.route('/bbs/blind/<int:bbs_num>', methods = ['POST', 'GET'])(bbs_hide)
@@ -732,7 +731,6 @@ app.route('/api/version', defaults = { 'version_list' : version_list })(api_vers
 app.route('/api/skin_info')(api_skin_info)
 app.route('/api/skin_info/<name>')(api_skin_info)
 app.route('/api/user_info/<user_name>')(api_user_info)
-app.route('/api/setting/<name>')(api_setting)
 
 app.route('/api/thread/<int:topic_num>/<int:s_num>/<int:e_num>')(api_topic)
 app.route('/api/thread/<int:topic_num>/<tool>')(api_topic)
@@ -772,6 +770,7 @@ app.route('/api/v2/list/document/old/<int:num>', defaults = { 'set_type' : 'old'
 app.route('/api/v2/list/document/new/<int:num>', defaults = { 'set_type' : 'new' })(api_list_old_page)
 app.route('/api/v2/list/document/<int:num>')(api_list_title_index)
 app.route('/api/v2/list/auth')(api_list_auth)
+app.route('/api/v2/list/markup')(api_list_markup)
 app.route('/api/v2/list/acl/<data_type>')(api_list_acl)
 app.route('/api/v2/history/<int:num>/<set_type>/<everything:doc_name>')(api_list_history)
 
@@ -779,6 +778,7 @@ app.route('/api/v2/topic/<int:num>/<set_type>/<everything:name>')(api_topic_list
 
 app.route('/api/v2/bbs')(api_bbs_list)
 app.route('/api/v2/bbs/main')(api_bbs)
+app.route('/api/v2/bbs/set/<int:bbs_num>/<name>', methods = ['GET', 'PUT'])(api_bbs_w_set)
 app.route('/api/v2/bbs/in/<int:bbs_num>/<int:page>')(api_bbs)
 app.route('/api/v2/bbs/w/comment/<sub_code>/<tool>', defaults = { 'legacy' : '' })(api_bbs_w_comment)
 app.route('/api/v2/bbs/w/comment_one/<sub_code>/<tool>', defaults = { 'legacy' : '' })(api_bbs_w_comment_one)

+ 6 - 2
lang/en-US.json

@@ -45,6 +45,11 @@
     "resolution" : "Resolution",
     "file_delete_with_document" : "Delete document and file at the same time",
     "method" : "Method",
+    "edit_filter_pass_authority" : "Contents filter pass authority",
+    "edit_filter_view_authority" : "Contents filter view authority",
+    "post_view_acl" : "Post view ACL",
+    "post_comment_acl" : "Post comment ACL",
+    "remove_hidden" : "Don't show hide content",
 
     "_comment_" : "Common",
     "data" : "Data",
@@ -600,7 +605,6 @@
     "discussion_record" : "Discussion record",
     
     "_comment_" : "Topic",
-    "remove_blind_thread" : "Hide blind thread",
     "make_new_topic" : "Make new discussion",
     "topic_tool" : "Discussion management tools",
     "topic_state" : "Discussion status",
@@ -722,7 +726,7 @@
     "file_capacity_error" : "Maximum file capacity (MB): ",
     "move_error" : "An error occurred while moving. All or part of it has not been moved.",
     "password_diffrent_error" : "Reconfirm password and input password are different.",
-    "edit_filter_error" : "Censored by edit filter.",
+    "edit_filter_error" : "Censored by contents filter.",
     "file_name_error" : "You cannot use dots in the file name.",
     "topic_long_error" : "The discussions topic must not exceed 256 characters.",
     "email_error" : "No one has this email.",

+ 7 - 3
lang/ko-KR.json

@@ -587,7 +587,6 @@
     "list_view_change": "숫자 리스트의 보기 방식 변경",
     "view_joke": "농담 매크로 내용 보이기",
     "math_scroll": "Math 매크로에서 스크롤 사용",
-    "remove_blind_thread": "숨겨진 토론 보이지 않기",
     "trace": "추적",
     "view_history": "문서 열람 추적 사용",
     "start_with_search": "첫 글자부터 검색",
@@ -675,7 +674,7 @@
     "doc_watch_list_view_authority" : "문서를 주시 목록에 추가한 사람 목록 보기",
     "bbs_view_authority" : "BBS 보기 권한",
     "bbs_comment_authority" : "BBS 댓글 권한",
-    "bbs_edit_authority" : "BBS 수정 권한",
+    "bbs_edit_authority" : "BBS 편집 권한",
     "user_analyze_authority" : "사용자 분석 권한",
     "still_use_auth_error" : "이 권한을 보유한 사람이 아직 존재합니다.",
     "xss_data_include_error" : "XSS에 이용될 수 있는 문자는 입력할 수 없습니다.",
@@ -691,5 +690,10 @@
     "file_delete_with_document" : "문서와 파일 동시 삭제",
     "url" : "URL",
     "resolution" : "해상도",
-    "method" : "방법"
+    "method" : "방법",
+    "edit_filter_pass_authority" : "편집 필터 통과 권한",
+    "edit_filter_view_authority" : "편집 필터 보기 권한",
+    "post_view_acl" : "게시글 보기 ACL",
+    "post_comment_acl" : "게시글 댓글 ACL",
+    "remove_hidden": "숨겨진 내용 보이지 않기"
 }

+ 4 - 5
route/__init__.py

@@ -1,5 +1,4 @@
 from route.api_image_view import api_image_view
-from route.api_setting import api_setting
 from route.api_skin_info import api_skin_info
 from route.api_user_info import api_user_info
 from route.api_version import api_version
@@ -14,7 +13,6 @@ from route.bbs_w import bbs_w
 from route.bbs_delete import bbs_delete
 # from route.bbs_hide import bbs_hide
 from route.bbs_w_post import bbs_w_post
-from route.bbs_w_set import bbs_w_set
 from route.bbs_w_comment_tool import bbs_w_comment_tool
 from route.bbs_w_tool import bbs_w_tool
 
@@ -164,9 +162,6 @@ from route.n_list_old_page import list_old_page
 from route.n_list_user_check_submit import list_user_check_submit
 from route.n_list_history import list_history
 
-from route.n_bbs_in import bbs_in
-from route.n_bbs_set import bbs_set
-
 from route.n_w_watch_list import w_watch_list
 
 from route.n_user_rankup import user_rankup
@@ -178,6 +173,8 @@ from route.n_give_auth import give_auth
 from route.n_setting_404_page import setting_404_page
 
 from route.n_bbs_main import bbs_main
+from route.n_bbs_in import bbs_in
+from route.n_bbs_w_set import bbs_w_set
 
 from route.n_edit_move_all import edit_move_all
 
@@ -200,10 +197,12 @@ from route.go_api_list_old_page import api_list_old_page
 from route.go_api_list_title_index import api_list_title_index
 from route.go_api_list_acl import api_list_acl
 from route.go_api_list_auth import api_list_auth
+from route.go_api_list_markup import api_list_markup
 from route.go_api_list_history import api_list_history
 
 from route.go_api_bbs import api_bbs
 from route.go_api_bbs_list import api_bbs_list
+from route.go_api_bbs_w_set import api_bbs_w_set
 from route.go_api_bbs_w_comment import api_bbs_w_comment
 from route.go_api_bbs_w_comment_one import api_bbs_w_comment_one
 

+ 0 - 27
route/api_setting.py

@@ -1,27 +0,0 @@
-from .tool.func import *
-
-from .user_setting_skin_set_main import user_setting_skin_set_main_set_list
-
-def api_setting(name = 'markup'):
-    with get_db_connect() as conn:
-        curs = conn.cursor()
-        
-        # from other
-        ok_list_1 = ['markup']
-        ok_list_1 += [for_a for for_a in user_setting_skin_set_main_set_list(conn)]
-
-        # from html_filter
-        ok_list_2 = ['inter_wiki']
-        
-        if name in ok_list_1:
-            curs.execute(db_change('select data from other where name = ?'), [name])
-            rep_data = curs.fetchall()
-            if rep_data:
-                return flask.jsonify({ name : rep_data })
-        elif name in ok_list_2:
-            curs.execute(db_change("select html, plus, plus_t from html_filter where kind = ?"), [name])
-            rep_data = curs.fetchall()
-            if rep_data:
-                return flask.jsonify({ name : rep_data })
-
-        return flask.jsonify({})

+ 0 - 91
route/bbs_w_set.py

@@ -1,91 +0,0 @@
-from .tool.func import *
-
-def bbs_w_set(bbs_num = ''):
-    with get_db_connect() as conn:
-        curs = conn.cursor()
-
-        curs.execute(db_change('select set_data from bbs_set where set_id = ? and set_name = "bbs_name"'), [bbs_num])
-        db_data = curs.fetchall()
-        if not db_data:
-            return redirect(conn, '/bbs/main')
-        else:
-            bbs_name = db_data[0][0]
-        
-        bbs_num_str = str(bbs_num)
-
-        i_list = ['bbs_acl', 'bbs_edit_acl', 'bbs_comment_acl', 'bbs_view_acl', 'bbs_markup']
-
-        if flask.request.method == 'POST':
-            if acl_check('', 'owner_auth', '', '', 'bbs_set (acl)') == 1:
-                return re_error(conn, 0)
-            else:
-                for for_a in range(len(i_list)):
-                    curs.execute(db_change("update bbs_set set set_data = ? where set_name = ? and set_id = ?"), [
-                        flask.request.form.get(i_list[for_a], 'normal'),
-                        i_list[for_a],
-                        bbs_num
-                    ])
-
-                return redirect(conn, '/bbs/set/' + bbs_num_str)
-        else:
-            d_list = ['' for _ in range(0, len(i_list))]
-
-            other_menu = []
-            if acl_check('', 'bbs_auth', '', '') == 1:
-                disable = 'disabled'
-            else:
-                disable = ''
-                other_menu += [['bbs/delete/' + bbs_num_str, get_lang(conn, 'delete')]]
-
-            for for_a in range(len(i_list)):
-                curs.execute(db_change('select set_data from bbs_set where set_name = ? and set_id = ?'), [i_list[for_a], bbs_num])
-                sql_d = curs.fetchall()
-                if sql_d:
-                    d_list[for_a] = sql_d[0][0]
-                else:
-                    curs.execute(db_change('insert into bbs_set (set_name, set_code, set_id, set_data) values (?, "", ?, ?)'), [i_list[for_a], bbs_num, 'normal'])
-                    d_list[for_a] = 'normal'
-
-            acl_div = ['' for _ in range(0, len(i_list))]
-            acl_list = get_acl_list()
-            for for_a in range(0, len(i_list)):
-                if for_a == 4:
-                    acl_list = ['normal'] + get_init_set_list('markup')['list']
-
-                for data_list in acl_list:
-                    if data_list == d_list[for_a]:
-                        check = 'selected="selected"'
-                    else:
-                        check = ''
-
-                    acl_div[for_a] += '<option value="' + data_list + '" ' + check + '>' + (data_list if data_list != '' else 'normal') + '</option>'
-
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'bbs_set'), wiki_set(conn), wiki_custom(conn), wiki_css(['(' + bbs_name + ')', 0])],
-                data = render_simple_set(conn, '''
-                    <form method="post">
-                        <hr class="main_hr">
-                        <a href="/acl/TEST#exp">(''' + get_lang(conn, 'reference') + ''')</a>
-                        
-                        <h2>''' + get_lang(conn, 'acl') + '''</h2>
-                        <h3>''' + get_lang(conn, 'bbs_view_acl') + '''</h3>
-                        <select ''' + disable + ''' name="bbs_view_acl">''' + acl_div[3] + '''</select>
-
-                        <h4>''' + get_lang(conn, 'bbs_acl') + '''</h4>
-                        <select ''' + disable + ''' name="bbs_acl">''' + acl_div[0] + '''</select>
-
-                        <h5>''' + get_lang(conn, 'bbs_edit_acl') + '''</h5>
-                        <select ''' + disable + ''' name="bbs_edit_acl">''' + acl_div[1] + '''</select>
-
-                        <h5>''' + get_lang(conn, 'bbs_comment_acl') + '''</h5>
-                        <select ''' + disable + ''' name="bbs_comment_acl">''' + acl_div[2] + '''</select>
-
-                        <h2>''' + get_lang(conn, 'markup') + '''</h2>
-                        <select ''' + disable + ''' name="bbs_markup">''' + acl_div[4] + '''</select>
-                        
-                        <hr class="main_hr">
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
-                    </form>
-                '''),
-                menu = [['bbs/in/' + bbs_num_str, get_lang(conn, 'return')]] + other_menu
-            ))

+ 4 - 0
route/filter_all.py

@@ -16,6 +16,10 @@ def filter_all(tool):
         admin = acl_check(tool = 'owner_auth')
         admin = 1 if admin == 0 else 0
 
+        if tool == 'edit_filter':
+            if acl_check('', 'edit_filter_view', '', '') == 1:
+                return re_error(conn, 0)
+
         if tool == 'inter_wiki':
             title = get_lang(conn, 'interwiki_list')
             curs.execute(db_change("select html, plus, plus_t from html_filter where kind = 'inter_wiki'"))

+ 2 - 0
route/give_admin_groups.py

@@ -34,6 +34,7 @@ def give_admin_groups(name = 'test'):
                         [4, 'multiple_upload', get_lang(conn, 'multiple_upload_authority')],
                         [4, 'slow_edit_pass', get_lang(conn, 'slow_edit_pass_authority')],
                         [4, 'edit_bottom_compulsion_pass', get_lang(conn, 'edit_bottom_compulsion_pass_authority')],
+                        [4, 'edit_filter_pass', get_lang(conn, 'edit_filter_pass_authority')],
                         [4, '', get_lang(conn, 'user_authority')],
             [1, 'user', get_lang(conn, 'user_authority')],
                 [2, 'captcha_pass', get_lang(conn, 'captcha_pass_authority')],
@@ -63,6 +64,7 @@ def give_admin_groups(name = 'test'):
                             [5, '', get_lang(conn, 'bbs_view_authority')],
                         [4, 'bbs_view', get_lang(conn, 'bbs_view_authority')],
                     [3, 'captcha_one_check_five_pass', get_lang(conn, 'captcha_one_check_five_pass_authority')],
+                    [3, 'edit_filter_view', get_lang(conn, 'edit_filter_view_authority')],
                     [3, 'nothing', get_lang(conn, 'nothing_authority')]
         ]
 

+ 14 - 0
route/go_api_bbs_w_set.py

@@ -0,0 +1,14 @@
+from .tool.func import *
+
+async def api_bbs_w_set(name = 'Test', set_id = '1'):
+    other_set = {}
+    other_set["set_name"] = name
+    other_set["set_id"] = set_id
+    other_set["ip"] = ip_check()
+
+    func_name = sys._getframe().f_code.co_name
+    if flask.request.method == 'PUT':
+        func_name += '_put'
+        other_set['data'] = flask.request.form.get('data', 'Test')
+    
+    return flask.Response(response = (await python_to_golang(func_name, other_set)), status = 200, mimetype = 'application/json')

+ 1 - 0
route/go_api_list_history.py

@@ -5,5 +5,6 @@ async def api_list_history(num = 1, set_type = 'normal', doc_name = 'Test'):
     other_set["num"] = str(num)
     other_set["doc_name"] = doc_name
     other_set["set_type"] = set_type
+    other_set["ip"] = ip_check()
     
     return flask.Response(response = (await python_to_golang(sys._getframe().f_code.co_name, other_set)), status = 200, mimetype = 'application/json')

+ 6 - 0
route/go_api_list_markup.py

@@ -0,0 +1,6 @@
+from .tool.func import *
+
+async def api_list_markup():
+    other_set = {}
+
+    return flask.Response(response = (await python_to_golang(sys._getframe().f_code.co_name, other_set)), status = 200, mimetype = 'application/json')

+ 1 - 1
route/go_api_topic.py

@@ -7,7 +7,7 @@ def api_topic_thread_make(user_id, date, data, code, color = '', blind = '', add
         else:
             color_b = 'opennamu_comment_blind_admin'
 
-        class_b = 'opennamu_comment_blind_js'
+        class_b = 'opennamu_comment_blind_js opennamu_list_hidden'
     else:
         color_b = 'opennamu_comment_blind_not'
         class_b = ''

+ 1 - 1
route/n_bbs_main.py

@@ -9,5 +9,5 @@ def bbs_main():
                 '<script defer src="/views/main_css/js/route/bbs_main.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_main(); });</script>' + \
             '',
-            menu = [['other', get_lang(conn, 'other_tool')]] + ([['bbs/make', get_lang(conn, 'add')], ['bbs/set', get_lang(conn, 'bbs_set')]] if acl_check('', 'owner_auth', '', '') != 1 else [])
+            menu = [['other', get_lang(conn, 'other_tool')], ['bbs/make', get_lang(conn, 'add')]]
         ))

+ 0 - 13
route/n_bbs_set.py

@@ -1,13 +0,0 @@
-from .tool.func import *
-
-def bbs_set():
-    with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'bbs_set'), wiki_set(conn), wiki_custom(conn), wiki_css([0, 0])],
-            data = '' + \
-                '<div id="opennamu_bbs_set"></div>' + \
-                '<script defer src="/views/main_css/js/route/bbs_set.js' + cache_v() + '"></script>' + \
-                '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_set(); });</script>' + \
-            '',
-            menu = [['bbs/main', get_lang(conn, 'bbs_main')]]
-        ))

+ 24 - 0
route/n_bbs_w_set.py

@@ -0,0 +1,24 @@
+from .tool.func import *
+
+def bbs_w_set(bbs_num = ''):
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+
+        curs.execute(db_change('select set_data from bbs_set where set_id = ? and set_name = "bbs_name"'), [bbs_num])
+        db_data = curs.fetchall()
+        if not db_data:
+            return redirect(conn, '/bbs/main')
+        else:
+            bbs_name = db_data[0][0]
+
+        bbs_num_str = str(bbs_num)
+
+        return easy_minify(conn, flask.render_template(skin_check(conn),
+            imp = [get_lang(conn, 'bbs_set'), wiki_set(conn), wiki_custom(conn), wiki_css(['(' + bbs_name + ')', 0])],
+            data = '' + \
+                '<div id="opennamu_bbs_w_set"></div>' + \
+                '<script defer src="/views/main_css/js/route/bbs_w_set.js' + cache_v() + '"></script>' + \
+                '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_w_set(); });</script>' + \
+            '',
+            menu = [['bbs/in/' + bbs_num_str, get_lang(conn, 'return')]]
+        ))

+ 2 - 2
route/tool/func.py

@@ -1235,7 +1235,7 @@ def skin_check(conn, set_n = 0):
         return skin
     
 def cache_v():
-    return '.cache_v273'
+    return '.cache_v274'
 
 def wiki_css(data):
     with class_temp_db() as m_conn:
@@ -2065,7 +2065,7 @@ def do_edit_filter(conn, data):
     curs = conn.cursor()
 
     ip = ip_check()
-    if acl_check(tool = 'ban_auth') == 1:
+    if acl_check(tool = 'edit_filter_pass') == 1:
         curs.execute(db_change("select plus, plus_t from html_filter where kind = 'regex_filter' and plus != ''"))
         for data_list in curs.fetchall():
             match = re.compile(data_list[0], re.I)

+ 2 - 6
route/topic.py

@@ -137,12 +137,8 @@ def topic(topic_num = 0, do_type = '', doc_name = 'Test'):
                 imp = [name, wiki_set(conn), wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'discussion') + ')', 0])],
                 data = '''
                     <script defer src="/views/main_css/js/route/topic.js''' + cache_v() + '''"></script>
-                    <style id="opennamu_remove_blind">
-                        .opennamu_comment_blind_js {
-                            display: none;
-                        }
-                    </style>
-                    <input type="checkbox" onclick="opennamu_do_remove_blind_thread();" checked> ''' + get_lang(conn, 'remove_blind_thread') + '''
+                    <style id="opennamu_list_hidden_style">.opennamu_list_hidden { display: none; }</style>
+                    <input type="checkbox" onclick="opennamu_list_hidden_remove();" checked> ''' + get_lang(conn, 'remove_hidden') + '''
                     <hr class="main_hr">
 
                     ''' + shortcut + '''

BIN
route_go/bin/main.amd64.bin


BIN
route_go/bin/main.amd64.exe


BIN
route_go/bin/main.arm64.bin


BIN
route_go/bin/main.arm64.exe


+ 6 - 0
route_go/main.go

@@ -99,6 +99,12 @@ func main() {
 		route_data = route.Api_bbs_w_comment(call_arg[1:])
 	} else if call_arg[0] == "api_list_history" {
 		route_data = route.Api_list_history(call_arg[1:])
+	} else if call_arg[0] == "api_list_markup" {
+		route_data = route.Api_list_markup(call_arg[1:])
+	} else if call_arg[0] == "api_bbs_w_set" {
+		route_data = route.Api_bbs_w_set(call_arg[1:])
+	} else if call_arg[0] == "api_bbs_w_set_put" {
+		route_data = route.Api_bbs_w_set_put(call_arg[1:])
 	} else {
 		log.Fatal(call_arg[0] + " is 404")
 	}

+ 86 - 0
route_go/route/api_bbs_w_set.go

@@ -0,0 +1,86 @@
+package route
+
+import (
+	"log"
+	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
+)
+
+func BBS_w_set_list() map[string]string {
+	setting_acl := map[string]string{}
+
+	setting_acl["bbs_view_acl"] = ""
+	setting_acl["bbs_acl"] = ""
+	setting_acl["bbs_edit_acl"] = ""
+	setting_acl["bbs_comment_acl"] = ""
+
+	setting_acl["bbs_markup"] = ""
+	setting_acl["bbs_name"] = ""
+
+	return setting_acl
+}
+
+func Api_bbs_w_set(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &other_set)
+
+	db := tool.DB_connect()
+	defer db.Close()
+
+	setting_acl := BBS_w_set_list()
+
+	if val, ok := setting_acl[other_set["set_name"]]; ok {
+		if val != "" {
+			if tool.Check_acl(db, "", "", "owner_auth", other_set["ip"]) {
+				return_data := make(map[string]interface{})
+				return_data["response"] = "require auth"
+
+				json_data, _ := json.Marshal(return_data)
+				return string(json_data)
+			}
+		}
+
+		stmt, err := db.Prepare(tool.DB_change("select set_data, set_code from other where set_name = ? and set_id = ?"))
+		if err != nil {
+			log.Fatal(err)
+		}
+
+		defer stmt.Close()
+
+		rows, err := stmt.Query(other_set["set_name"], other_set["set_id"])
+		if err != nil {
+			log.Fatal(err)
+		}
+		defer rows.Close()
+
+		data_list := [][]string{}
+
+		for rows.Next() {
+			var set_data string
+			var set_coverage string
+
+			err := rows.Scan(&set_data, &set_coverage)
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			data_list = append(data_list, []string{set_data, set_coverage})
+		}
+
+		return_data := make(map[string]interface{})
+		return_data["response"] = "ok"
+		return_data["data"] = data_list
+
+		json_data, _ := json.Marshal(return_data)
+		return string(json_data)
+	} else {
+		return_data := make(map[string]interface{})
+		return_data["response"] = "not exist"
+
+		json_data, _ := json.Marshal(return_data)
+		return string(json_data)
+	}
+}

+ 60 - 0
route_go/route/api_bbs_w_set_put.go

@@ -0,0 +1,60 @@
+package route
+
+import (
+	"log"
+	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
+)
+
+func Api_bbs_w_set_put(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &other_set)
+
+	db := tool.DB_connect()
+	defer db.Close()
+
+	auth_info := tool.Check_acl(db, "", "", "owner_auth", other_set["ip"])
+
+	setting_acl := BBS_w_set_list()
+	return_data := make(map[string]interface{})
+
+	if _, ok := setting_acl[other_set["set_name"]]; ok {
+		if auth_info {
+			if _, ok := other_set["coverage"]; !ok {
+				stmt, err := db.Prepare(tool.DB_change("delete from bbs_set where set_name = ? and set_id = ?"))
+				if err != nil {
+					log.Fatal(err)
+				}
+				defer stmt.Close()
+
+				_, err = stmt.Exec(other_set["set_name"], other_set["set_id"])
+				if err != nil {
+					log.Fatal(err)
+				}
+			}
+
+			stmt, err := db.Prepare(tool.DB_change("insert into bbs_set (set_name, set_code, set_id, set_data) values (?, '', ?, ?)"))
+			if err != nil {
+				log.Fatal(err)
+			}
+			defer stmt.Close()
+
+			_, err = stmt.Exec(other_set["set_name"], other_set["data"], other_set["set_id"])
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			return_data["response"] = "ok"
+		} else {
+			return_data["response"] = "require auth"
+		}
+	} else {
+		return_data["response"] = "not exist"
+	}
+
+	json_data, _ := json.Marshal(return_data)
+	return string(json_data)
+}

+ 1 - 0
route_go/route/api_list_history.go

@@ -133,6 +133,7 @@ func Api_list_history(call_arg []string) string {
 		"file":           tool.Get_language(db, "file", false),
 		"category":       tool.Get_language(db, "category", false),
 		"setting":        tool.Get_language(db, "setting", false),
+		"remove_hidden":  tool.Get_language(db, "remove_hidden", false),
 	}
 	return_data["data"] = data_list
 	return_data["auth"] = auth_info

+ 23 - 0
route_go/route/api_list_markup.go

@@ -0,0 +1,23 @@
+package route
+
+import (
+	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
+)
+
+func Api_list_markup(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &other_set)
+
+	data := tool.List_markup()
+
+	return_data := make(map[string]interface{})
+	return_data["response"] = "ok"
+	return_data["data"] = data
+
+	json_data, _ := json.Marshal(return_data)
+	return string(json_data)
+}

+ 1 - 0
route_go/route/api_list_recent_change.go

@@ -153,6 +153,7 @@ func Api_list_recent_change(call_arg []string) string {
 			"file":           tool.Get_language(db, "file", false),
 			"category":       tool.Get_language(db, "category", false),
 			"setting":        tool.Get_language(db, "setting", false),
+			"remove_hidden":  tool.Get_language(db, "remove_hidden", false),
 		}
 		return_data["auth"] = auth_info
 		return_data["data"] = data_list

+ 29 - 7
route_go/route/api_setting.go

@@ -1,6 +1,7 @@
 package route
 
 import (
+	"database/sql"
 	"log"
 	"opennamu/route/tool"
 
@@ -45,16 +46,37 @@ func Api_setting(call_arg []string) string {
 			}
 		}
 
-		stmt, err := db.Prepare(tool.DB_change("select data, coverage from other where name = ? and coverage = ?"))
-		if err != nil {
-			log.Fatal(err)
+		data_coverage := ""
+		if val, ok := other_set["coverage"]; ok {
+			data_coverage = val
 		}
 
-		defer stmt.Close()
+		var rows *sql.Rows
 
-		rows, err := stmt.Query(other_set["set_name"], val)
-		if err != nil {
-			log.Fatal(err)
+		if data_coverage != "" {
+			stmt, err := db.Prepare(tool.DB_change("select data, coverage from other where name = ? and coverage = ?"))
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			defer stmt.Close()
+
+			rows, err = stmt.Query(other_set["set_name"], data_coverage)
+			if err != nil {
+				log.Fatal(err)
+			}
+		} else {
+			stmt, err := db.Prepare(tool.DB_change("select data, coverage from other where name = ?"))
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			defer stmt.Close()
+
+			rows, err = stmt.Query(other_set["set_name"])
+			if err != nil {
+				log.Fatal(err)
+			}
 		}
 		defer rows.Close()
 

+ 18 - 2
route_go/route/tool/acl_and_auth.go

@@ -185,7 +185,7 @@ func Check_auth(auth_info map[string]bool) map[string]bool {
 		auth_info["admin_default_feature"] = true
 	}
 
-	admin_default_feature := []string{"treat_as_admin", "user_name_bold", "multiple_upload", "slow_edit_pass", "edit_bottom_compulsion_pass", "view_hide_user_name", "doc_watch_list_view", "user"}
+	admin_default_feature := []string{"treat_as_admin", "user_name_bold", "multiple_upload", "slow_edit_pass", "edit_bottom_compulsion_pass", "view_hide_user_name", "doc_watch_list_view", "edit_filter_pass", "user"}
 
 	if _, ok := auth_info["admin_default_feature"]; ok {
 		for _, v := range admin_default_feature {
@@ -201,7 +201,7 @@ func Check_auth(auth_info map[string]bool) map[string]bool {
 		}
 	}
 
-	ip_default := []string{"document", "discuss", "upload", "vote", "bbs_use", "captcha_one_check_five_pass"}
+	ip_default := []string{"document", "discuss", "upload", "vote", "bbs_use", "captcha_one_check_five_pass", "edit_filter_view"}
 
 	if _, ok := auth_info["ip"]; ok {
 		for _, v := range ip_default {
@@ -795,6 +795,22 @@ func Check_acl(db *sql.DB, name string, topic_number string, tool string, ip str
 			} else {
 				acl_data = "owner"
 			}
+		} else if tool == "edit_filter_pass" {
+			acl_pass_auth = "admin_default_feature"
+
+			if auth_info["edit_filter_pass"] {
+				acl_data = ""
+			} else {
+				acl_data = "owner"
+			}
+		} else if tool == "edit_filter_view" {
+			acl_pass_auth = "edit_filter_pass"
+
+			if auth_info["edit_filter_view"] {
+				acl_data = ""
+			} else {
+				acl_data = "owner"
+			}
 		} else if tool == "view_hide_user_name" {
 			acl_pass_auth = "admin_default_feature"
 

+ 10 - 0
route_go/route/tool/render.go

@@ -7,6 +7,16 @@ import (
 	"time"
 )
 
+func List_markup() []string {
+	return []string{
+		"namumark",
+		"namumark_beta",
+		"markdown",
+		"custom",
+		"raw",
+	}
+}
+
 func Get_render(db *sql.DB, doc_name string, data string, render_type string) map[string]string {
 	var markup string
 

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-v176",
+        "r_ver" : "v3.5.0-v179",
         "c_ver" : "20240513",
         "s_ver" : "20240426"
     }

+ 15 - 8
views/main_css/js/func/func.js

@@ -186,12 +186,6 @@ function opennamu_cookie_split_regex(data) {
     return new RegExp('(?:^|; )' + data + '=([^;]*)');
 }
 
-function opennamu_get_main_skin_set(set_name) {
-    return fetch("/api/setting/" + opennamu_do_url_encode(set_name)).then(function(res) {
-        return res.json();
-    });
-}
-
 function opennamu_send_render(data) {
     if(data === '&lt;br&gt;' || data === '' || data.match(/^ +$/)) {
         data = '<br>';
@@ -274,8 +268,20 @@ function opennamu_page_control(url, page, data_length, data_length_max = 50) {
     return (back() + ' ' + next()).replace(/^ /, '');
 }
 
-function opennamu_make_list(left = '', right = '', bottom = '') {
-    let data_html = '<div class="opennamu_recent_change">';
+function opennamu_list_hidden_remove() {
+    const style = document.querySelector('#opennamu_list_hidden_style');
+    if(style !== null) {
+        if(style.innerHTML !== "") {
+            style.innerHTML = '';
+        } else {
+            style.innerHTML = '.opennamu_list_hidden { display: none; }';
+        }
+    }
+}
+
+function opennamu_make_list(left = '', right = '', bottom = '', class_name = '') {
+    let data_html = '<span class="' + class_name + '">';
+    data_html += '<div class="opennamu_recent_change">';
     data_html += left;
     
     data_html += '<div style="float: right;">';
@@ -291,6 +297,7 @@ function opennamu_make_list(left = '', right = '', bottom = '') {
 
     data_html += '</div>';
     data_html += '<hr class="main_hr">';
+    data_html += '</span>';
 
     return data_html;
 }

+ 0 - 87
views/main_css/js/route/bbs_set.js

@@ -1,87 +0,0 @@
-"use strict";
-
-function opennamu_bbs_set_post() {
-    let acl_set_list = [
-        "bbs_view_acl_all",
-        "bbs_acl_all",
-        "bbs_edit_acl_all",
-        "bbs_comment_acl_all"
-    ];
-
-    for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
-        let post_data = new FormData();
-        post_data.append('data', document.getElementById('opennamu_' + acl_set_list[for_a]).value);
-        
-        fetch('/api/v2/setting/' + acl_set_list[for_a], {
-            method : 'PUT',
-            body : post_data,
-        }).then(function(res) {
-            return res.json();
-        }).then(function(data) {
-            history.go(0);
-        });
-    }
-}
-
-function opennamu_bbs_set() {
-    let acl_set_list = ["bbs_view_acl_all", "bbs_acl_all", "bbs_edit_acl_all", "bbs_comment_acl_all"];
-    let acl_set_list_h = [2, 3, 4, 4];
-    
-    let lang_str = 'save reference';
-    for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
-        lang_str += ' ' + acl_set_list[for_a];
-    }
-
-    let lang_data = new FormData();
-    lang_data.append('data', lang_str);
-
-    fetch('/api/v2/lang', {
-        method : 'POST',
-        body : lang_data,
-    }).then(function(res) {
-        return res.json();
-    }).then(function(lang) {
-        lang = lang["data"];
-
-        fetch('/api/v2/list/acl/normal').then(function(res) {
-            return res.json();
-        }).then(function(acl_list) {
-            acl_list = acl_list["data"];
-
-            let acl_set_html = '<a href="/acl/TEST#exp">(' + lang['reference'] + ')</a>';
-
-            for(let for_b = 0; for_b < acl_set_list.length; for_b++) {
-                acl_set_html += '<h' + acl_set_list_h[for_b] + '>' + lang[acl_set_list[for_b]] + '</h' + acl_set_list_h[for_b] + '>';
-                acl_set_html += '<select id="opennamu_' + acl_set_list[for_b] + '">';
-                
-                let select = '';
-                for(let for_a = 0; for_a < acl_list.length; for_a++) {
-                    let acl_list_view = acl_list[for_a];
-                    acl_list_view = acl_list_view === "" ? "normal" : acl_list_view;
-
-                    select += '<option value="' + acl_list[for_a] + '">' + acl_list_view + '</option>';
-                }
-
-                acl_set_html += select;
-                acl_set_html += '</select>';
-            }
-
-            document.getElementById('opennamu_bbs_set').innerHTML = renderSimpleSet('' +
-                acl_set_html +
-                '<hr class="main_hr">' + 
-                '<button onclick="opennamu_bbs_set_post();">' + lang['save'] + '</button>' +
-            '');
-
-            for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
-                fetch('/api/v2/setting/' + acl_set_list[for_a]).then(function(res) {
-                    return res.json();
-                }).then(function(data) {
-                    data = data["data"][0];
-
-                    let select_element = document.getElementById('opennamu_' + acl_set_list[for_a]);
-                    select_element.querySelector('option[value="' + data + '"]').selected = true;
-                });
-            }
-        });
-    });
-}

+ 129 - 0
views/main_css/js/route/bbs_w_set.js

@@ -0,0 +1,129 @@
+"use strict";
+
+function opennamu_bbs_w_set_post() {
+    let acl_set_list = [
+        "bbs_view_acl",
+        "bbs_acl",
+        "bbs_edit_acl",
+        "bbs_comment_acl",
+        "bbs_markup"
+    ];
+
+    for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
+        let post_data = new FormData();
+        post_data.append('data', document.getElementById('opennamu_' + acl_set_list[for_a]).value);
+        
+        fetch('/api/v2/setting/' + acl_set_list[for_a], {
+            method : 'PUT',
+            body : post_data,
+        }).then(function(res) {
+            return res.json();
+        }).then(function(data) {
+            history.go(0);
+        });
+    }
+}
+
+function opennamu_bbs_w_set_lang(lang, set_name) {
+    if(set_name === "bbs_markup") {
+        return lang["markup"];
+    } else {
+        return lang[set_name];
+    }
+}
+
+function opennamu_bbs_w_set_select(acl_set_list, acl_set_list_h, acl_list, lang) {
+    let acl_set_html = '';
+
+    for(let for_b = 0; for_b < acl_set_list.length; for_b++) {
+        acl_set_html += '<h' + acl_set_list_h[for_b] + '>' + opennamu_bbs_w_set_lang(lang, acl_set_list[for_b]) + '</h' + acl_set_list_h[for_b] + '>';
+        acl_set_html += '<select id="opennamu_' + acl_set_list[for_b] + '">';
+        
+        let select = '';
+        for(let for_a = 0; for_a < acl_list.length; for_a++) {
+            let acl_list_view = acl_list[for_a];
+            acl_list_view = acl_list_view === "" ? "normal" : acl_list_view;
+
+            select += '<option value="' + acl_list[for_a] + '">' + acl_list_view + '</option>';
+        }
+
+        acl_set_html += select;
+        acl_set_html += '</select>';
+    }
+
+    return acl_set_html;
+}
+
+function opennamu_bbs_w_set() {
+    const url = window.location.pathname;
+    const url_split = url.split('/');
+
+    let set_id = url_split[3];
+
+    let acl_set_list = ["bbs_view_acl", "bbs_acl", "bbs_edit_acl", "bbs_comment_acl"];
+    let acl_set_list_h = [2, 3, 4, 4];
+
+    let markup_set_list = ["bbs_markup"];
+    let markup_set_list_h = [2];
+    
+    let lang_str = 'save reference markup';
+    for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
+        lang_str += ' ' + acl_set_list[for_a];
+    }
+
+    let lang_data = new FormData();
+    lang_data.append('data', lang_str);
+
+    let make_html = '';
+
+    fetch('/api/v2/lang', {
+        method : 'POST',
+        body : lang_data,
+    }).then(function(res) {
+        return res.json();
+    }).then(function(lang) {
+        lang = lang["data"];
+
+        fetch('/api/v2/list/acl/normal').then(function(res) {
+            return res.json();
+        }).then(function(acl_list) {
+            acl_list = acl_list["data"];
+
+            let acl_set_html = '<a href="/acl/TEST#exp">(' + lang['reference'] + ')</a>';
+            acl_set_html += opennamu_bbs_w_set_select(acl_set_list, acl_set_list_h, acl_list, lang);
+
+            make_html += acl_set_html;
+
+            return fetch('/api/v2/list/markup');
+        }).then(function(res) {
+            return res.json();
+        }).then(function(markup_list) {
+            markup_list = markup_list["data"];
+
+            make_html += opennamu_bbs_w_set_select(markup_set_list, markup_set_list_h, markup_list, lang);
+
+            return;
+        }).then(function() {
+            document.getElementById('opennamu_bbs_w_set').innerHTML = renderSimpleSet('' +
+                make_html +
+                '<hr class="main_hr">' + 
+                '<button onclick="opennamu_bbs_w_set_post();">' + lang['save'] + '</button>' +
+            '');
+
+            let total_set_list = [];
+            total_set_list.concat(acl_set_list);
+            total_set_list.concat(markup_set_list);
+
+            for(let for_a = 0; for_a < total_set_list.length; for_a++) {
+                fetch('/api/v2/bbs/set/' + set_id + '/' + total_set_list[for_a]).then(function(res) {
+                    return res.json();
+                }).then(function(data) {
+                    data = data["data"][0];
+
+                    let select_element = document.getElementById('opennamu_' + total_set_list[for_a]);
+                    select_element.querySelector('option[value="' + data + '"]').selected = true;
+                });
+            }
+        });
+    });
+}

+ 11 - 1
views/main_css/js/route/list_history.js

@@ -50,9 +50,14 @@ function opennamu_list_history() {
         let lang = data["language"];
         let auth = data["auth"];
         data = data["data"];
+        console.log(auth);
 
         let data_html = '';
 
+        data_html += '<style id="opennamu_list_hidden_style">.opennamu_list_hidden { display: none; }</style>';
+        data_html += '<input type="checkbox" onclick="opennamu_list_hidden_remove();" checked> ' + lang['remove_hidden'];
+        data_html += '<hr class="main_hr">';
+
         let option_list = ['normal', 'edit', 'move', 'delete', 'revert', 'r1', 'setting'];
         for(let for_a = 0; for_a < option_list.length; for_a++) {
             data_html += '<a href="/history_page/1/' + option_list[for_a] + '/' + doc_name + '">(' + option_lang(option_list[for_a], lang) + ')</a> ';
@@ -62,7 +67,12 @@ function opennamu_list_history() {
         let select = '';
         for(let for_a = 0; for_a < data.length; for_a++) {
             if(data[for_a][6] !== "" && data[for_a][1] === "") {
-                data_html += opennamu_make_list('----');
+                if(date_heading !== '----') {
+                    data_html += '<h2 class="opennamu_list_hidden">----</h2>';
+                    date_heading = '----';
+                }
+
+                data_html += opennamu_make_list('----', '', '', 'opennamu_list_hidden');
 
                 continue;
             }

+ 10 - 1
views/main_css/js/route/list_recent_change.js

@@ -33,6 +33,10 @@ function opennamu_list_recent_change() {
 
         let data_html = '';
 
+        data_html += '<style id="opennamu_list_hidden_style">.opennamu_list_hidden { display: none; }</style>';
+        data_html += '<input type="checkbox" onclick="opennamu_list_hidden_remove();" checked> ' + lang['remove_hidden'];
+        data_html += '<hr class="main_hr">';
+
         let option_list = ['normal', 'edit', 'move', 'delete', 'revert', 'r1', 'edit_request', 'user', 'file', 'category'];
         for(let for_a = 0; for_a < option_list.length; for_a++) {
             data_html += '<a href="/recent_change/1/' + option_list[for_a] + '">(' + option_lang(option_list[for_a], lang) + ')</a> ';
@@ -41,7 +45,12 @@ function opennamu_list_recent_change() {
         let date_heading = '';
         for(let for_a = 0; for_a < data.length; for_a++) {
             if(data[for_a][6] !== "" && data[for_a][1] === "") {
-                data_html += opennamu_make_list('----');
+                if(date_heading !== '----') {
+                    data_html += '<h2 class="opennamu_list_hidden">----</h2>';
+                    date_heading = '----';
+                }
+
+                data_html += opennamu_make_list('----', '', '', 'opennamu_list_hidden');
 
                 continue;
             }

+ 1 - 16
views/main_css/js/route/topic.js

@@ -1,20 +1,5 @@
 "use strict";
 
-function opennamu_do_remove_blind_thread() {
-    const style = document.querySelector('#opennamu_remove_blind');
-    if(style !== null) {
-        if(style.innerHTML !== "") {
-            style.innerHTML = '';
-        } else {
-            style.innerHTML = `
-                .opennamu_comment_blind_js {
-                    display: none;
-                }
-            `;
-        }
-    }
-}
-
 function opennamu_thread_delete() {
     let lang_data = new FormData();
     lang_data.append('data', 'delete');
@@ -77,7 +62,7 @@ function opennamu_get_thread_ui(user_id, date, data, code, color = '', blind = '
     let color_b, class_b;
     if(blind === 'O') {
         color_b = data === '' ? 'opennamu_comment_blind' : 'opennamu_comment_blind_admin';
-        class_b = 'opennamu_comment_blind_js';
+        class_b = 'opennamu_comment_blind_js opennamu_list_hidden';
     } else {
         color_b = 'opennamu_comment_blind_not';
         class_b = '';

+ 1 - 1
views/ringo/index.html

@@ -13,7 +13,7 @@
         <link href="https://cdn.jsdelivr.net/gh/sun-typeface/SUIT/fonts/static/woff2/SUIT.css" rel="stylesheet">
         <script defer src="https://code.iconify.design/1/1.0.3/iconify.min.js"></script>
         <script defer src="/views/ringo/js/main.js.cache_v2"></script>
-        <script defer src="/views/ringo/js/sidebar.js.cache_v3"></script>
+        <script defer src="/views/ringo/js/sidebar.js.cache_v4"></script>
         <script defer src="/views/ringo/js/skin_set.js.cache_v7"></script>
         <link rel="stylesheet" href="/views/ringo/css/main.css.cache_v11">
         {% if request.cookies.get('main_css_darkmode', '') == '1' %}

+ 1 - 1
views/ringo/info.json

@@ -1,5 +1,5 @@
 {
     "name" : "Ringo",
-    "skin_ver" : "v1.1.6",
+    "skin_ver" : "v1.1.7",
     "require_ver" : "3500113"
 }

+ 0 - 3
views/ringo/js/sidebar.js

@@ -23,9 +23,6 @@ function ringo_do_side_button_1() {
                 if(text[for_a][6] === '') {
                     data += '<a href="/w/' + ringo_do_url_encode(text[for_a][1]) + '">' + ringo_do_xss_encode(text[for_a][1]) + '</a><br>';
                     data += text[for_a][2] + ' | ' + ringo_do_xss_encode(text[for_a][3]) + '<br>';
-                } else {
-                    data += '---<br>';
-                    data += '--- | ---<br>';
                 }
             }