|
@@ -312,9 +312,9 @@ def alarm():
|
|
|
data += '</ul>'
|
|
data += '</ul>'
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['' + lang_data['alarm'] + '', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
|
|
+ imp = [lang_data['alarm'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = data,
|
|
data = data,
|
|
|
- menu = [['user', '사용자']]
|
|
|
|
|
|
|
+ menu = [['user', lang_data['user']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/inter_wiki')
|
|
@app.route('/inter_wiki')
|
|
@@ -637,11 +637,11 @@ def acl_list():
|
|
|
curs.execute("select title, dec from acl where dec = 'admin' or dec = 'user' order by title desc")
|
|
curs.execute("select title, dec from acl where dec = 'admin' or dec = 'user' order by title desc")
|
|
|
list_data = curs.fetchall()
|
|
list_data = curs.fetchall()
|
|
|
for data in list_data:
|
|
for data in list_data:
|
|
|
- if not re.search('^사용자:', data[0]) and not re.search('^파일:', data[0]):
|
|
|
|
|
|
|
+ if not re.search('^' + lang_data['user'] + ':', data[0]) and not re.search('^파일:', data[0]):
|
|
|
if data[1] == 'admin':
|
|
if data[1] == 'admin':
|
|
|
acl = lang_data['admin']
|
|
acl = lang_data['admin']
|
|
|
else:
|
|
else:
|
|
|
- acl = '' + lang_data['subscriber'] + ''
|
|
|
|
|
|
|
+ acl = lang_data['subscriber']
|
|
|
|
|
|
|
|
div += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a> (' + acl + ')</li>'
|
|
div += '<li><a href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a> (' + acl + ')</li>'
|
|
|
|
|
|
|
@@ -721,14 +721,14 @@ def admin_plus(name = None):
|
|
|
data += '<li><input type="checkbox" ' + state + ' name="ban" ' + exist_list[0] + '> ' + lang_data['ban'] + '</li>'
|
|
data += '<li><input type="checkbox" ' + state + ' name="ban" ' + exist_list[0] + '> ' + lang_data['ban'] + '</li>'
|
|
|
data += '<li><input type="checkbox" ' + state + ' name="mdel" ' + exist_list[1] + '> ' + lang_data['bulk_delete'] + '</li>'
|
|
data += '<li><input type="checkbox" ' + state + ' name="mdel" ' + exist_list[1] + '> ' + lang_data['bulk_delete'] + '</li>'
|
|
|
data += '<li><input type="checkbox" ' + state + ' name="toron" ' + exist_list[2] + '> 토론 관리</li>'
|
|
data += '<li><input type="checkbox" ' + state + ' name="toron" ' + exist_list[2] + '> 토론 관리</li>'
|
|
|
- data += '<li><input type="checkbox" ' + state + ' name="check" ' + exist_list[3] + '> 사용자 검사</li>'
|
|
|
|
|
|
|
+ data += '<li><input type="checkbox" ' + state + ' name="check" ' + exist_list[3] + '> ' + lang_data['user'] + ' 검사</li>'
|
|
|
data += '<li><input type="checkbox" ' + state + ' name="acl" ' + exist_list[4] + '> ' + lang_data['document'] + ' ACL</li>'
|
|
data += '<li><input type="checkbox" ' + state + ' name="acl" ' + exist_list[4] + '> ' + lang_data['document'] + ' ACL</li>'
|
|
|
data += '<li><input type="checkbox" ' + state + ' name="hidel" ' + exist_list[5] + '> ' + lang_data['history'] + ' ' + lang_data['hide'] + '</li>'
|
|
data += '<li><input type="checkbox" ' + state + ' name="hidel" ' + exist_list[5] + '> ' + lang_data['history'] + ' ' + lang_data['hide'] + '</li>'
|
|
|
data += '<li><input type="checkbox" ' + state + ' name="give" ' + exist_list[6] + '> 권한 관리</li>'
|
|
data += '<li><input type="checkbox" ' + state + ' name="give" ' + exist_list[6] + '> 권한 관리</li>'
|
|
|
- data += '<li><input type="checkbox" ' + state + ' name="owner" ' + exist_list[7] + '> 소유자</li></ul>'
|
|
|
|
|
|
|
+ data += '<li><input type="checkbox" ' + state + ' name="owner" ' + exist_list[7] + '> ' + lang_data['owner'] + '</li></ul>'
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['관리 그룹 추가', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
|
|
+ imp = [lang_data['admin_group'] + ' 추가', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = '<form method="post">' + data + '<hr><button id="save" ' + state + ' type="submit">저장</button></form>',
|
|
data = '<form method="post">' + data + '<hr><button id="save" ' + state + ' type="submit">저장</button></form>',
|
|
|
menu = [['manager', lang_data['admin']]]
|
|
menu = [['manager', lang_data['admin']]]
|
|
|
))
|
|
))
|
|
@@ -857,7 +857,7 @@ def give_log():
|
|
|
list_data += '</ul><hr><a href="/manager/8">(생성)</a>'
|
|
list_data += '</ul><hr><a href="/manager/8">(생성)</a>'
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['관리 그룹 ' + lang_data['list'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
|
|
+ imp = [lang_data['admin_group'] + ' ' + lang_data['list'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = list_data,
|
|
data = list_data,
|
|
|
menu = [['other', '기타']]
|
|
menu = [['other', '기타']]
|
|
|
))
|
|
))
|
|
@@ -1064,14 +1064,14 @@ def block_log(name = None, tool = None, tool2 = None):
|
|
|
|
|
|
|
|
if not name:
|
|
if not name:
|
|
|
if not tool2:
|
|
if not tool2:
|
|
|
- div = '<a href="/manager/11">(차단자)</a> <a href="/manager/12">(' + lang_data['admin'] + ')</a><hr><a href="/block_log/ip">(아이피)</a> <a href="/block_log/user">(' + lang_data['subscriber'] + ')</a> <a href="/block_log/never_end">(무기한)</a> <a href="/block_log/can_end">(기간)</a> <a href="/block_log/end">(' + lang_data['release'] + ')</a> <a href="/block_log/now">(현재)</a> <a href="/block_log/edit_filter">(편집 필터)</a><hr>' + div
|
|
|
|
|
|
|
+ div = '<a href="/manager/11">(차단자)</a> <a href="/manager/12">(' + lang_data['admin'] + ')</a><hr><a href="/block_log/ip">(아이피)</a> <a href="/block_log/user">(' + lang_data['subscriber'] + ')</a> <a href="/block_log/never_end">(무기한)</a> <a href="/block_log/can_end">(기간)</a> <a href="/block_log/end">(' + lang_data['release'] + ')</a> <a href="/block_log/now">(현재)</a> <a href="/block_log/edit_filter">(' + lang_data['edit_filter'] + ')</a><hr>' + div
|
|
|
|
|
|
|
|
sub = 0
|
|
sub = 0
|
|
|
menu = 0
|
|
menu = 0
|
|
|
|
|
|
|
|
curs.execute("select why, block, blocker, end, today from rb order by today desc limit ?, '50'", [str(sql_num)])
|
|
curs.execute("select why, block, blocker, end, today from rb order by today desc limit ?, '50'", [str(sql_num)])
|
|
|
else:
|
|
else:
|
|
|
- menu = [['block_log', '' + lang_data['normal'] + '']]
|
|
|
|
|
|
|
+ menu = [['block_log', lang_data['normal']]]
|
|
|
|
|
|
|
|
if tool2 == 'ip':
|
|
if tool2 == 'ip':
|
|
|
sub = ' (아이피)'
|
|
sub = ' (아이피)'
|
|
@@ -1100,15 +1100,15 @@ def block_log(name = None, tool = None, tool2 = None):
|
|
|
|
|
|
|
|
data_list = [curs.fetchall()[0]] + data_list
|
|
data_list = [curs.fetchall()[0]] + data_list
|
|
|
elif tool2 == 'edit_filter':
|
|
elif tool2 == 'edit_filter':
|
|
|
- sub = '(편집 필터)'
|
|
|
|
|
|
|
+ sub = '(' + lang_data['edit_filter'] + ')'
|
|
|
|
|
|
|
|
- curs.execute("select why, block, blocker, end, today from rb where blocker = ? order by today desc limit ?, '50'", ['도구:편집 필터', str(sql_num)])
|
|
|
|
|
|
|
+ curs.execute("select why, block, blocker, end, today from rb where blocker = ? order by today desc limit ?, '50'", [lang_data['tool'] + ':' + lang_data['edit_filter'], str(sql_num)])
|
|
|
else:
|
|
else:
|
|
|
sub = '(기간)'
|
|
sub = '(기간)'
|
|
|
|
|
|
|
|
curs.execute("select why, block, blocker, end, today from rb where end like ? order by today desc limit ?, '50'", ['%\-%', str(sql_num)])
|
|
curs.execute("select why, block, blocker, end, today from rb where end like ? order by today desc limit ?, '50'", ['%\-%', str(sql_num)])
|
|
|
else:
|
|
else:
|
|
|
- menu = [['block_log', '' + lang_data['normal'] + '']]
|
|
|
|
|
|
|
+ menu = [['block_log', lang_data['normal']]]
|
|
|
|
|
|
|
|
if tool == 'block_user':
|
|
if tool == 'block_user':
|
|
|
sub = ' (차단자)'
|
|
sub = ' (차단자)'
|
|
@@ -1242,7 +1242,7 @@ def raw_view(name = None, sub_title = None, num = None):
|
|
|
v_name = '토론 원본'
|
|
v_name = '토론 원본'
|
|
|
sub = ' (' + str(num) + '번)'
|
|
sub = ' (' + str(num) + '번)'
|
|
|
|
|
|
|
|
- menu = [['topic/' + url_pas(name) + '/sub/' + url_pas(sub_title) + '#' + str(num), '토론'], ['topic/' + url_pas(name) + '/sub/' + url_pas(sub_title) + '/admin/' + str(num), '도구']]
|
|
|
|
|
|
|
+ menu = [['topic/' + url_pas(name) + '/sub/' + url_pas(sub_title) + '#' + str(num), '토론'], ['topic/' + url_pas(name) + '/sub/' + url_pas(sub_title) + '/admin/' + str(num), lang_data['tool']]]
|
|
|
else:
|
|
else:
|
|
|
curs.execute("select data from data where title = ?", [name])
|
|
curs.execute("select data from data where title = ?", [name])
|
|
|
|
|
|
|
@@ -1290,7 +1290,7 @@ def revert(name = None):
|
|
|
leng = leng_check(len(data_old[0][0]), len(data[0][0]))
|
|
leng = leng_check(len(data_old[0][0]), len(data[0][0]))
|
|
|
curs.execute("update data set data = ? where title = ?", [data[0][0], name])
|
|
curs.execute("update data set data = ? where title = ?", [data[0][0], name])
|
|
|
else:
|
|
else:
|
|
|
- leng = '+' + str(len(data[0][0]))
|
|
|
|
|
|
|
+ leng = ' +' + str(len(data[0][0]))
|
|
|
curs.execute("insert into data (title, data) values (?, ?)", [name, data[0][0]])
|
|
curs.execute("insert into data (title, data) values (?, ?)", [name, data[0][0]])
|
|
|
|
|
|
|
|
history_plus(conn, name, data[0][0], get_time(), ip_check(), request.form.get('send', None) + ' (' + str(num) + lang_data['version'] + ')', leng)
|
|
history_plus(conn, name, data[0][0], get_time(), ip_check(), request.form.get('send', None) + ' (' + str(num) + lang_data['version'] + ')', leng)
|
|
@@ -1339,7 +1339,7 @@ def big_delete():
|
|
|
return redirect('/')
|
|
return redirect('/')
|
|
|
else:
|
|
else:
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['' + lang_data['bulk_delete'] + '', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
|
|
+ imp = [lang_data['bulk_delete'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = '<span>Title A<br>Title B<br>Title C</span><hr><form method="post"><textarea rows="25" name="content"></textarea><hr><input placeholder="사유" name="send" type="text"><hr><button type="submit">' + lang_data['delete'] + '</button></form>',
|
|
data = '<span>Title A<br>Title B<br>Title C</span><hr><form method="post"><textarea rows="25" name="content"></textarea><hr><input placeholder="사유" name="send" type="text"><hr><button type="submit">' + lang_data['delete'] + '</button></form>',
|
|
|
menu = [['manager', lang_data['admin']]]
|
|
menu = [['manager', lang_data['admin']]]
|
|
|
))
|
|
))
|
|
@@ -1361,7 +1361,7 @@ def edit_filter():
|
|
|
div = '<a href="/manager/9">(추가)</a>'
|
|
div = '<a href="/manager/9">(추가)</a>'
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['편집 필터 ' + lang_data['list'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
|
|
+ imp = [lang_data['edit_filter'] + ' ' + lang_data['list'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = div,
|
|
data = div,
|
|
|
menu = [['manager', lang_data['admin']]]
|
|
menu = [['manager', lang_data['admin']]]
|
|
|
))
|
|
))
|
|
@@ -1416,9 +1416,9 @@ def set_edit_filter(name = None):
|
|
|
stat = ''
|
|
stat = ''
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = [name, wiki_set(conn, 1), custom(conn), other2([' (편집 필터)', 0])],
|
|
|
|
|
|
|
+ imp = [name, wiki_set(conn, 1), custom(conn), other2([' (' + lang_data['edit_filter'] + ')', 0])],
|
|
|
data = '<form method="post"><input ' + stat + ' type="checkbox" ' + time_data + ' name="ban"> ' + lang_data['ban'] + '<hr><input ' + stat + ' placeholder="정규식" name="content" value="' + html.escape(textarea) + '" type="text"><hr><button ' + stat + ' id="save" type="submit">저장</button></form>',
|
|
data = '<form method="post"><input ' + stat + ' type="checkbox" ' + time_data + ' name="ban"> ' + lang_data['ban'] + '<hr><input ' + stat + ' placeholder="정규식" name="content" value="' + html.escape(textarea) + '" type="text"><hr><button ' + stat + ' id="save" type="submit">저장</button></form>',
|
|
|
- menu = [['edit_filter', lang_data['list']], ['edit_filter/' + url_pas(name) + '/delete', '' + lang_data['delete'] + '']]
|
|
|
|
|
|
|
+ menu = [['edit_filter', lang_data['list']], ['edit_filter/' + url_pas(name) + '/delete', lang_data['delete']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/edit/<path:name>', methods=['POST', 'GET'])
|
|
@app.route('/edit/<path:name>', methods=['POST', 'GET'])
|
|
@@ -1434,7 +1434,7 @@ def edit(name = None):
|
|
|
match = re.compile(data_list[0])
|
|
match = re.compile(data_list[0])
|
|
|
if match.search(request.form.get('content', None)):
|
|
if match.search(request.form.get('content', None)):
|
|
|
if data_list[1] == 'X':
|
|
if data_list[1] == 'X':
|
|
|
- ban_insert(conn, ip, '', '편집 필터에 의한 차단', None, '도구:편집 필터')
|
|
|
|
|
|
|
+ ban_insert(conn, ip, '', lang_data['edit_filter'], None, lang_data['tool'] + ':' + lang_data['edit_filter'])
|
|
|
|
|
|
|
|
return re_error(conn, '/error/21')
|
|
return re_error(conn, '/error/21')
|
|
|
|
|
|
|
@@ -1501,7 +1501,7 @@ def edit(name = None):
|
|
|
|
|
|
|
|
curs.execute("update data set data = ? where title = ?", [content, name])
|
|
curs.execute("update data set data = ? where title = ?", [content, name])
|
|
|
else:
|
|
else:
|
|
|
- leng = '+' + str(len(content))
|
|
|
|
|
|
|
+ leng = ' +' + str(len(content))
|
|
|
|
|
|
|
|
curs.execute("insert into data (title, data) values (?, ?)", [name, content])
|
|
curs.execute("insert into data (title, data) values (?, ?)", [name, content])
|
|
|
|
|
|
|
@@ -1556,8 +1556,8 @@ def edit(name = None):
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
imp = [name, wiki_set(conn, 1), custom(conn), other2([' (' + lang_data['edit'] + ')', 0])],
|
|
imp = [name, wiki_set(conn, 1), custom(conn), other2([' (' + lang_data['edit'] + ')', 0])],
|
|
|
- data = get_name + js + '<form method="post" action="/edit/' + url_pas(name) + action + '">' + js_button + '<hr><textarea id="content" rows="25" name="content">' + html.escape(re.sub('\n$', '', data)) + '</textarea><textarea style="display: none;" name="otent">' + html.escape(re.sub('\n$', '', data_old)) + '</textarea><hr><input placeholder="사유" name="send" type="text"><hr>' + captcha_get(conn) + '' + ip_warring(conn) + '<button id="save" type="submit">저장</button><button id="preview" type="submit" formaction="/preview/' + url_pas(name) + action + '">미리보기</button></form>',
|
|
|
|
|
- menu = [['w/' + url_pas(name), lang_data['document']], ['delete/' + url_pas(name), '' + lang_data['delete'] + ''], ['move/' + url_pas(name), lang_data['move']]]
|
|
|
|
|
|
|
+ data = get_name + js + '<form method="post" action="/edit/' + url_pas(name) + action + '">' + js_button + '<hr><textarea id="content" rows="25" name="content">' + html.escape(re.sub('\n$', '', data)) + '</textarea><textarea style="display: none;" name="otent">' + html.escape(re.sub('\n$', '', data_old)) + '</textarea><hr><input placeholder="사유" name="send" type="text"><hr>' + captcha_get(conn) + ip_warring(conn) + '<button id="save" type="submit">저장</button><button id="preview" type="submit" formaction="/preview/' + url_pas(name) + action + '">미리보기</button></form>',
|
|
|
|
|
+ menu = [['w/' + url_pas(name), lang_data['document']], ['delete/' + url_pas(name), lang_data['delete']], ['move/' + url_pas(name), lang_data['move']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/edit_get/<path:name>', methods=['POST'])
|
|
@app.route('/edit_get/<path:name>', methods=['POST'])
|
|
@@ -1700,20 +1700,20 @@ def move(name = None):
|
|
|
@app.route('/other')
|
|
@app.route('/other')
|
|
|
def other():
|
|
def other():
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['기타 ' + lang_data['list'] + '', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
- data = '<h2>기록</h2><ul><li><a href="/manager/6">편집 기록</a></li><li><a href="/manager/7">토론 기록</a></li></ul><br><h2>' + lang_data['list'] + '</h2><ul><li><a href="/admin_list">' + lang_data['admin'] + '</a></li><li><a href="/give_log">관리 그룹</a></li><li><a href="/not_close_topic">열린 토론</a></li></ul><br><h2>기타</h2><ul><li><a href="/title_index">' + lang_data['all'] + ' ' + lang_data['document'] + '</a></li><li><a href="/acl_list">ACL 문서</a></li><li><a href="/please">필요한 문서</a></li><li><a href="/upload">파일 올리기</a></li><li><a href="/manager/10">문서 검색</a></li></ul><br><h2>' + lang_data['admin'] + '</h2><ul><li><a href="/manager/1">' + lang_data['admin'] + ' ' + lang_data['list'] + '</a></li></ul><br><h2>버전</h2><ul><li>이 오픈나무는 <a href="https://github.com/2DU/openNAMU/blob/master/version.md">' + r_ver + '</a> 입니다.</li></ul>',
|
|
|
|
|
|
|
+ imp = ['기타 ' + lang_data['list'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
+ data = '<h2>기록</h2><ul><li><a href="/manager/6">편집 기록</a></li><li><a href="/manager/7">토론 기록</a></li></ul><br><h2>' + lang_data['list'] + '</h2><ul><li><a href="/admin_list">' + lang_data['admin'] + '</a></li><li><a href="/give_log">' + lang_data['admin_group'] + '</a></li><li><a href="/not_close_topic">열린 토론</a></li></ul><br><h2>기타</h2><ul><li><a href="/title_index">' + lang_data['all'] + ' ' + lang_data['document'] + '</a></li><li><a href="/acl_list">ACL 문서</a></li><li><a href="/please">필요한 문서</a></li><li><a href="/upload">파일 올리기</a></li><li><a href="/manager/10">문서 검색</a></li></ul><br><h2>' + lang_data['admin'] + '</h2><ul><li><a href="/manager/1">' + lang_data['admin'] + ' ' + lang_data['list'] + '</a></li></ul><br><h2>버전</h2><ul><li>이 오픈나무는 <a href="https://github.com/2DU/openNAMU/blob/master/version.md">' + r_ver + '</a> 입니다.</li></ul>',
|
|
|
menu = 0
|
|
menu = 0
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/manager', methods=['POST', 'GET'])
|
|
@app.route('/manager', methods=['POST', 'GET'])
|
|
|
@app.route('/manager/<int:num>', methods=['POST', 'GET'])
|
|
@app.route('/manager/<int:num>', methods=['POST', 'GET'])
|
|
|
def manager(num = 1):
|
|
def manager(num = 1):
|
|
|
- title_list = [[lang_data['document'] + ' ACL', '문서명', 'acl'], ['사용자 검사', 0, 'check'], ['사용자 ' + lang_data['ban'], 0, 'ban'], ['권한 주기', 0, 'admin'], ['편집 기록', 0, 'record'], ['토론 기록', 0, 'topic_record'], ['그룹 생성', '그룹명', 'admin_plus'], ['편집 필터 생성', '필터명', 'edit_filter'], ['검색', '문서명', 'search'], ['차단자 검색', 0, 'block_user'], [lang_data['admin'] + ' 검색', 0, 'block_admin'], ['주시 문서 추가', '문서명', 'watch_list']]
|
|
|
|
|
|
|
+ title_list = [[lang_data['document'] + ' ACL', '문서명', 'acl'], [lang_data['user'] + ' 검사', 0, 'check'], [lang_data['user'] + ' ' + lang_data['ban'], 0, 'ban'], ['권한 주기', 0, 'admin'], ['편집 기록', 0, 'record'], ['토론 기록', 0, 'topic_record'], ['그룹 생성', '그룹명', 'admin_plus'], [lang_data['edit_filter'] + ' 생성', '필터명', 'edit_filter'], ['검색', '문서명', 'search'], ['차단자 검색', 0, 'block_user'], [lang_data['admin'] + ' 검색', 0, 'block_admin'], ['주시 문서 추가', '문서명', 'watch_list']]
|
|
|
|
|
|
|
|
if num == 1:
|
|
if num == 1:
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = [lang_data['admin'] + ' ' + lang_data['list'] + '', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
- data = '<h2>' + lang_data['list'] + '</h2><ul><li><a href="/manager/2">' + lang_data['document'] + ' ACL</a></li><li><a href="/manager/3">사용자 검사</a></li><li><a href="/manager/4">사용자 ' + lang_data['ban'] + '</a></li><li><a href="/manager/5">권한 주기</a></li><li><a href="/big_delete">' + lang_data['bulk_delete'] + '</a></li><li><a href="/edit_filter">편집 필터</a></li></ul><br><h2>소유자</h2><ul><li><a href="/indexing">인덱싱 (생성 or ' + lang_data['delete'] + ')</a></li><li><a href="/manager/8">관리 그룹 생성</a></li><li><a href="/edit_set">설정 편집</a></li><li><a href="/re_start">서버 재 시작</a></li><li><a href="/update">업데이트 (Git 사용)</a></li><li><a href="/inter_wiki">인터위키</a></li></ul>',
|
|
|
|
|
|
|
+ imp = [lang_data['admin'] + ' ' + lang_data['list'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
+ data = '<h2>' + lang_data['list'] + '</h2><ul><li><a href="/manager/2">' + lang_data['document'] + ' ACL</a></li><li><a href="/manager/3">' + lang_data['user'] + ' 검사</a></li><li><a href="/manager/4">' + lang_data['user'] + ' ' + lang_data['ban'] + '</a></li><li><a href="/manager/5">권한 주기</a></li><li><a href="/big_delete">' + lang_data['bulk_delete'] + '</a></li><li><a href="/edit_filter">' + lang_data['edit_filter'] + '</a></li></ul><br><h2>' + lang_data['owner'] + '</h2><ul><li><a href="/indexing">인덱싱 (생성 or ' + lang_data['delete'] + ')</a></li><li><a href="/manager/8">' + lang_data['admin_group'] + ' 생성</a></li><li><a href="/edit_set">설정 편집</a></li><li><a href="/re_start">서버 재 시작</a></li><li><a href="/update">업데이트 (Git 사용)</a></li><li><a href="/inter_wiki">인터위키</a></li></ul>',
|
|
|
menu = [['other', '기타']]
|
|
menu = [['other', '기타']]
|
|
|
))
|
|
))
|
|
|
elif num in range(2, 14):
|
|
elif num in range(2, 14):
|
|
@@ -1721,7 +1721,7 @@ def manager(num = 1):
|
|
|
return redirect('/' + title_list[(num - 2)][2] + '/' + url_pas(request.form.get('name', None)))
|
|
return redirect('/' + title_list[(num - 2)][2] + '/' + url_pas(request.form.get('name', None)))
|
|
|
else:
|
|
else:
|
|
|
if title_list[(num - 2)][1] == 0:
|
|
if title_list[(num - 2)][1] == 0:
|
|
|
- placeholder = '사용자명'
|
|
|
|
|
|
|
+ placeholder = lang_data['user'] + '명'
|
|
|
else:
|
|
else:
|
|
|
placeholder = title_list[(num - 2)][1]
|
|
placeholder = title_list[(num - 2)][1]
|
|
|
|
|
|
|
@@ -1768,7 +1768,7 @@ def title_index():
|
|
|
else:
|
|
else:
|
|
|
count_end += [0]
|
|
count_end += [0]
|
|
|
|
|
|
|
|
- sql_list = ['틀:', '분류:', '사용자:', '파일:']
|
|
|
|
|
|
|
+ sql_list = ['틀:', '분류:', lang_data['user'] + ':', '파일:']
|
|
|
for sql in sql_list:
|
|
for sql in sql_list:
|
|
|
curs.execute("select count(title) from data where title like ?", [sql + '%'])
|
|
curs.execute("select count(title) from data where title like ?", [sql + '%'])
|
|
|
count = curs.fetchall()
|
|
count = curs.fetchall()
|
|
@@ -1782,7 +1782,7 @@ def title_index():
|
|
|
data += '</ul><hr><ul><li>이 위키에는 총 ' + str(count_end[0]) + '개의 문서가 있습니다.</li></ul><hr><ul>'
|
|
data += '</ul><hr><ul><li>이 위키에는 총 ' + str(count_end[0]) + '개의 문서가 있습니다.</li></ul><hr><ul>'
|
|
|
data += '<li>틀 문서는 총 ' + str(count_end[1]) + '개의 문서가 있습니다.</li>'
|
|
data += '<li>틀 문서는 총 ' + str(count_end[1]) + '개의 문서가 있습니다.</li>'
|
|
|
data += '<li>분류 문서는 총 ' + str(count_end[2]) + '개의 문서가 있습니다.</li>'
|
|
data += '<li>분류 문서는 총 ' + str(count_end[2]) + '개의 문서가 있습니다.</li>'
|
|
|
- data += '<li>사용자 문서는 총 ' + str(count_end[3]) + '개의 문서가 있습니다.</li>'
|
|
|
|
|
|
|
+ data += '<li>' + lang_data['user'] + ' 문서는 총 ' + str(count_end[3]) + '개의 문서가 있습니다.</li>'
|
|
|
data += '<li>파일 문서는 총 ' + str(count_end[4]) + '개의 문서가 있습니다.</li>'
|
|
data += '<li>파일 문서는 총 ' + str(count_end[4]) + '개의 문서가 있습니다.</li>'
|
|
|
data += '<li>나머지 문서는 총 ' + str(count_end[5]) + '개의 문서가 있습니다.</li>'
|
|
data += '<li>나머지 문서는 총 ' + str(count_end[5]) + '개의 문서가 있습니다.</li>'
|
|
|
|
|
|
|
@@ -1889,7 +1889,7 @@ def topic_admin(name = None, sub = None, num = None):
|
|
|
ban = ''
|
|
ban = ''
|
|
|
|
|
|
|
|
if admin_check(conn, 3, None) == 1:
|
|
if admin_check(conn, 3, None) == 1:
|
|
|
- ban += '</ul><br><h2>관리 도구</h2><ul>'
|
|
|
|
|
|
|
+ ban += '</ul><br><h2>관리 ' + lang_data['tool'] + '</h2><ul>'
|
|
|
is_ban = '<li><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '/b/' + str(num) + '">'
|
|
is_ban = '<li><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '/b/' + str(num) + '">'
|
|
|
|
|
|
|
|
if data[0][0] == 'O':
|
|
if data[0][0] == 'O':
|
|
@@ -1917,19 +1917,19 @@ def topic_admin(name = None, sub = None, num = None):
|
|
|
|
|
|
|
|
ban += '</a></li>' + is_ban
|
|
ban += '</a></li>' + is_ban
|
|
|
|
|
|
|
|
- ban += '</ul><br><h2>기타 도구</h2><ul>'
|
|
|
|
|
|
|
+ ban += '</ul><br><h2>기타 ' + lang_data['tool'] + '</h2><ul>'
|
|
|
ban += '<li><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '/raw/' + str(num) + '">원본</a></li>'
|
|
ban += '<li><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '/raw/' + str(num) + '">원본</a></li>'
|
|
|
ban = '<li>작성 시간 : ' + data[0][2] + '</li>' + ban
|
|
ban = '<li>작성 시간 : ' + data[0][2] + '</li>' + ban
|
|
|
|
|
|
|
|
if re.search('(\.|:)', data[0][1]):
|
|
if re.search('(\.|:)', data[0][1]):
|
|
|
ban = '<li>작성인 : ' + data[0][1] + ' <li><a href="/record/' + url_pas(data[0][1]) + '">(기록)</a></li>' + ban
|
|
ban = '<li>작성인 : ' + data[0][1] + ' <li><a href="/record/' + url_pas(data[0][1]) + '">(기록)</a></li>' + ban
|
|
|
else:
|
|
else:
|
|
|
- ban = '<li>작성인 : <a href="/w/사용자:' + data[0][1] + '">' + data[0][1] + '</a> <a href="/record/' + url_pas(data[0][1]) + '">(기록)</a></li>' + ban
|
|
|
|
|
|
|
+ ban = '<li>작성인 : <a href="/w/' + lang_data['user'] + ':' + data[0][1] + '">' + data[0][1] + '</a> <a href="/record/' + url_pas(data[0][1]) + '">(기록)</a></li>' + ban
|
|
|
|
|
|
|
|
ban = '<h2>정보</h2><ul>' + ban
|
|
ban = '<h2>정보</h2><ul>' + ban
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['토론 도구', wiki_set(conn, 1), custom(conn), other2([' (' + str(num) + '번)', 0])],
|
|
|
|
|
|
|
+ imp = ['토론 ' + lang_data['tool'], wiki_set(conn, 1), custom(conn), other2([' (' + str(num) + '번)', 0])],
|
|
|
data = ban,
|
|
data = ban,
|
|
|
menu = [['topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '#' + str(num), '토론']]
|
|
menu = [['topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '#' + str(num), '토론']]
|
|
|
))
|
|
))
|
|
@@ -1958,9 +1958,9 @@ def topic(name = None, sub = None):
|
|
|
else:
|
|
else:
|
|
|
num = 1
|
|
num = 1
|
|
|
|
|
|
|
|
- match = re.search('^사용자:([^/]+)', name)
|
|
|
|
|
|
|
+ match = re.search('^' + lang_data['user'] + ':([^/]+)', name)
|
|
|
if match:
|
|
if match:
|
|
|
- curs.execute('insert into alarm (name, data, date) values (?, ?, ?)', [match.groups()[0], ip + '님이 <a href="/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '">사용자 토론</a>을 시작했습니다.', today])
|
|
|
|
|
|
|
+ curs.execute('insert into alarm (name, data, date) values (?, ?, ?)', [match.groups()[0], ip + '님이 <a href="/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '">' + lang_data['user'] + ' 토론</a>을 시작했습니다.', today])
|
|
|
|
|
|
|
|
data = re.sub("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", "[br]", request.form.get('content', None))
|
|
data = re.sub("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", "[br]", request.form.get('content', None))
|
|
|
for rd_data in re.findall("(?:#([0-9]+))", data):
|
|
for rd_data in re.findall("(?:#([0-9]+))", data):
|
|
@@ -2043,7 +2043,7 @@ def topic(name = None, sub = None):
|
|
|
curs.execute("select who from re_admin where what = ? order by time desc limit 1", ['blind (' + name + ' - ' + sub + '#' + str(number) + ')'])
|
|
curs.execute("select who from re_admin where what = ? order by time desc limit 1", ['blind (' + name + ' - ' + sub + '#' + str(number) + ')'])
|
|
|
who_blind = curs.fetchall()
|
|
who_blind = curs.fetchall()
|
|
|
if who_blind:
|
|
if who_blind:
|
|
|
- user_write = '[[사용자:' + who_blind[0][0] + ']] ' + lang_data['hide']
|
|
|
|
|
|
|
+ user_write = '[[' + lang_data['user'] + ':' + who_blind[0][0] + ']] ' + lang_data['hide']
|
|
|
else:
|
|
else:
|
|
|
user_write = lang_data['hide']
|
|
user_write = lang_data['hide']
|
|
|
else:
|
|
else:
|
|
@@ -2058,7 +2058,7 @@ def topic(name = None, sub = None):
|
|
|
ip += ' <a href="javascript:void(0);" title="' + lang_data['admin'] + '">★</a>'
|
|
ip += ' <a href="javascript:void(0);" title="' + lang_data['admin'] + '">★</a>'
|
|
|
|
|
|
|
|
if admin == 1 or blind_data == '':
|
|
if admin == 1 or blind_data == '':
|
|
|
- ip += ' <a href="/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '/admin/' + str(number) + '">(도구)</a>'
|
|
|
|
|
|
|
+ ip += ' <a href="/topic/' + url_pas(name) + '/sub/' + url_pas(sub) + '/admin/' + str(number) + '">(' + lang_data['tool'] + ')</a>'
|
|
|
|
|
|
|
|
curs.execute("select end from ban where block = ?", [topic_data[3]])
|
|
curs.execute("select end from ban where block = ?", [topic_data[3]])
|
|
|
if curs.fetchall():
|
|
if curs.fetchall():
|
|
@@ -2204,9 +2204,9 @@ def login():
|
|
|
return redirect('/user')
|
|
return redirect('/user')
|
|
|
else:
|
|
else:
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['' + lang_data['login'] + '', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
|
|
+ imp = [lang_data['login'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = '<form method="post"><input placeholder="아이디" name="id" type="text"><hr><input placeholder="비밀번호" name="pw" type="password"><hr>' + captcha_get(conn) + '<button type="submit">' + lang_data['login'] + '</button><hr><span>' + lang_data['http_warring'] + '</span></form>',
|
|
data = '<form method="post"><input placeholder="아이디" name="id" type="text"><hr><input placeholder="비밀번호" name="pw" type="password"><hr>' + captcha_get(conn) + '<button type="submit">' + lang_data['login'] + '</button><hr><span>' + lang_data['http_warring'] + '</span></form>',
|
|
|
- menu = [['user', '사용자']]
|
|
|
|
|
|
|
+ menu = [['user', lang_data['user']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/change', methods=['POST', 'GET'])
|
|
@app.route('/change', methods=['POST', 'GET'])
|
|
@@ -2268,9 +2268,9 @@ def change_password():
|
|
|
div2 += '<option value="' + skin_data + '">' + skin_data + '</option>'
|
|
div2 += '<option value="' + skin_data + '">' + skin_data + '</option>'
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['' + lang_data['my_info'] + ' ' + lang_data['edit'] + '', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
|
|
+ imp = [lang_data['my_info'] + ' ' + lang_data['edit'], wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = '<form method="post"><span>닉네임 : ' + ip + '</span><hr><input placeholder="현재 비밀번호" name="pw" type="password"><br><br><input placeholder="변경할 비밀번호" name="pw2" type="password"><br><br><input placeholder="재 확인" name="pw3" type="password"><hr><input placeholder="이메일" name="email" type="text" value="' + email + '"><hr><span>스킨</span><br><br><select name="skin">' + div2 + '</select><hr><button type="submit">' + lang_data['edit'] + '</button><hr><span>' + lang_data['http_warring'] + '</span></form>',
|
|
data = '<form method="post"><span>닉네임 : ' + ip + '</span><hr><input placeholder="현재 비밀번호" name="pw" type="password"><br><br><input placeholder="변경할 비밀번호" name="pw2" type="password"><br><br><input placeholder="재 확인" name="pw3" type="password"><hr><input placeholder="이메일" name="email" type="text" value="' + email + '"><hr><span>스킨</span><br><br><select name="skin">' + div2 + '</select><hr><button type="submit">' + lang_data['edit'] + '</button><hr><span>' + lang_data['http_warring'] + '</span></form>',
|
|
|
- menu = [['user', '사용자']]
|
|
|
|
|
|
|
+ menu = [['user', lang_data['user']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/check/<name>')
|
|
@app.route('/check/<name>')
|
|
@@ -2392,7 +2392,7 @@ def register():
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
imp = ['회원가입', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
imp = ['회원가입', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = '<form method="post">' + contract + '<input placeholder="아이디" name="id" type="text"><hr><input placeholder="비밀번호" name="pw" type="password"><hr><input placeholder="다시" name="pw2" type="password"><hr><input placeholder="이메일 (선택)" name="email" type="text"><hr>' + captcha_get(conn) + '<button type="submit">가입</button><hr><span>' + lang_data['http_warring'] + '</span></form>',
|
|
data = '<form method="post">' + contract + '<input placeholder="아이디" name="id" type="text"><hr><input placeholder="비밀번호" name="pw" type="password"><hr><input placeholder="다시" name="pw2" type="password"><hr><input placeholder="이메일 (선택)" name="email" type="text"><hr>' + captcha_get(conn) + '<button type="submit">가입</button><hr><span>' + lang_data['http_warring'] + '</span></form>',
|
|
|
- menu = [['user', '사용자']]
|
|
|
|
|
|
|
+ menu = [['user', lang_data['user']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/logout')
|
|
@app.route('/logout')
|
|
@@ -2511,7 +2511,7 @@ def acl(name = None):
|
|
|
else:
|
|
else:
|
|
|
check_data = None
|
|
check_data = None
|
|
|
|
|
|
|
|
- user_data = re.search('^사용자:(.+)$', name)
|
|
|
|
|
|
|
+ user_data = re.search('^' + lang_data['user'] + ':(.+)$', name)
|
|
|
if user_data:
|
|
if user_data:
|
|
|
if custom(conn)[2] == 0:
|
|
if custom(conn)[2] == 0:
|
|
|
return redirect('/login')
|
|
return redirect('/login')
|
|
@@ -2547,10 +2547,10 @@ def acl(name = None):
|
|
|
else:
|
|
else:
|
|
|
data = '<h2>문서 ACL</h2><select name="dec" ' + check_ok + '>'
|
|
data = '<h2>문서 ACL</h2><select name="dec" ' + check_ok + '>'
|
|
|
|
|
|
|
|
- if re.search('^사용자:', name):
|
|
|
|
|
- acl_list = [['', '' + lang_data['normal'] + ''], ['user', '' + lang_data['subscriber'] + ''], ['all', '모두']]
|
|
|
|
|
|
|
+ if re.search('^' + lang_data['user'] + ':', name):
|
|
|
|
|
+ acl_list = [['', lang_data['normal']], ['user', lang_data['subscriber']], ['all', '모두']]
|
|
|
else:
|
|
else:
|
|
|
- acl_list = [['', '' + lang_data['normal'] + ''], ['user', '' + lang_data['subscriber'] + ''], ['admin', '관리자']]
|
|
|
|
|
|
|
+ acl_list = [['', lang_data['normal']], ['user', lang_data['subscriber']], ['admin', '관리자']]
|
|
|
|
|
|
|
|
curs.execute("select dec from acl where title = ?", [name])
|
|
curs.execute("select dec from acl where title = ?", [name])
|
|
|
acl_data = curs.fetchall()
|
|
acl_data = curs.fetchall()
|
|
@@ -2564,7 +2564,7 @@ def acl(name = None):
|
|
|
|
|
|
|
|
data += '</select>'
|
|
data += '</select>'
|
|
|
|
|
|
|
|
- if not re.search('^사용자:', name):
|
|
|
|
|
|
|
+ if not re.search('^' + lang_data['user'] + ':', name):
|
|
|
data += '<br><br><h2>토론 ACL</h2><select name="dis" ' + check_ok + '>'
|
|
data += '<br><br><h2>토론 ACL</h2><select name="dis" ' + check_ok + '>'
|
|
|
|
|
|
|
|
curs.execute("select dis, why from acl where title = ?", [name])
|
|
curs.execute("select dis, why from acl where title = ?", [name])
|
|
@@ -2779,7 +2779,7 @@ def read_view(name = None):
|
|
|
response_data = 404
|
|
response_data = 404
|
|
|
else_data = ''
|
|
else_data = ''
|
|
|
|
|
|
|
|
- m = re.search("^사용자:([^/]*)", name)
|
|
|
|
|
|
|
+ m = re.search("^' + lang_data['user'] + ':([^/]*)", name)
|
|
|
if m:
|
|
if m:
|
|
|
g = m.groups()
|
|
g = m.groups()
|
|
|
|
|
|
|
@@ -2815,7 +2815,7 @@ def read_view(name = None):
|
|
|
if data_none == 1:
|
|
if data_none == 1:
|
|
|
menu = [['edit/' + url_pas(name), '생성']]
|
|
menu = [['edit/' + url_pas(name), '생성']]
|
|
|
else:
|
|
else:
|
|
|
- menu = [['edit/' + url_pas(name), '' + lang_data['edit'] + '']]
|
|
|
|
|
|
|
+ menu = [['edit/' + url_pas(name), lang_data['edit']]]
|
|
|
|
|
|
|
|
menu += [['topic/' + url_pas(name), '토론'], ['history/' + url_pas(name), lang_data['history']], ['xref/' + url_pas(name), '역링크'], ['acl/' + url_pas(name), 'ACL']]
|
|
menu += [['topic/' + url_pas(name), '토론'], ['history/' + url_pas(name), lang_data['history']], ['xref/' + url_pas(name), '역링크'], ['acl/' + url_pas(name), 'ACL']]
|
|
|
|
|
|
|
@@ -2887,7 +2887,7 @@ def user_topic_list(name = None):
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
imp = ['토론 기록', wiki_set(conn, 1), custom(conn), other2([sub, 0])],
|
|
imp = ['토론 기록', wiki_set(conn, 1), custom(conn), other2([sub, 0])],
|
|
|
data = div,
|
|
data = div,
|
|
|
- menu = [['other', '기타'], ['user', '사용자'], ['count/' + url_pas(name), '횟수'], ['record/' + url_pas(name), lang_data['edit']]]
|
|
|
|
|
|
|
+ menu = [['other', '기타'], ['user', lang_data['user']], ['count/' + url_pas(name), '횟수'], ['record/' + url_pas(name), lang_data['edit']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/recent_changes')
|
|
@app.route('/recent_changes')
|
|
@@ -3050,18 +3050,18 @@ def recent_changes(name = None, tool = 'record'):
|
|
|
|
|
|
|
|
title = '편집 기록'
|
|
title = '편집 기록'
|
|
|
|
|
|
|
|
- menu = [['other', '기타'], ['user', '사용자'], ['count/' + url_pas(name), '횟수'], ['topic_record/' + url_pas(name), '토론']]
|
|
|
|
|
|
|
+ menu = [['other', '기타'], ['user', lang_data['user']], ['count/' + url_pas(name), '횟수'], ['topic_record/' + url_pas(name), '토론']]
|
|
|
|
|
|
|
|
div += next_fix('/record/' + url_pas(name) + '/' + url_pas(what) + '?num=', num, data_list)
|
|
div += next_fix('/record/' + url_pas(name) + '/' + url_pas(what) + '?num=', num, data_list)
|
|
|
|
|
|
|
|
if what != 'all':
|
|
if what != 'all':
|
|
|
- menu += [['record/' + url_pas(name), '' + lang_data['normal'] + '']]
|
|
|
|
|
|
|
+ menu += [['record/' + url_pas(name), lang_data['normal']]]
|
|
|
else:
|
|
else:
|
|
|
menu = 0
|
|
menu = 0
|
|
|
title = '최근 변경'
|
|
title = '최근 변경'
|
|
|
|
|
|
|
|
if what != 'all':
|
|
if what != 'all':
|
|
|
- menu = [['recent_changes', '' + lang_data['normal'] + '']]
|
|
|
|
|
|
|
+ menu = [['recent_changes', lang_data['normal']]]
|
|
|
|
|
|
|
|
if what == 'delete':
|
|
if what == 'delete':
|
|
|
sub += ' (' + lang_data['delete'] + ')'
|
|
sub += ' (' + lang_data['delete'] + ')'
|
|
@@ -3124,7 +3124,7 @@ def upload():
|
|
|
if custom(conn)[2] == 0:
|
|
if custom(conn)[2] == 0:
|
|
|
lice = ip + ' 올림'
|
|
lice = ip + ' 올림'
|
|
|
else:
|
|
else:
|
|
|
- lice = '[[사용자:' + ip + ']] 올림'
|
|
|
|
|
|
|
+ lice = '[[' + lang_data['user'] + ':' + ip + ']] 올림'
|
|
|
|
|
|
|
|
if os.path.exists(os.path.join('image', e_data)):
|
|
if os.path.exists(os.path.join('image', e_data)):
|
|
|
os.remove(os.path.join('image', e_data))
|
|
os.remove(os.path.join('image', e_data))
|
|
@@ -3163,9 +3163,9 @@ def user_info():
|
|
|
if data[0][0] != 'user':
|
|
if data[0][0] != 'user':
|
|
|
acl = data[0][0]
|
|
acl = data[0][0]
|
|
|
else:
|
|
else:
|
|
|
- acl = '' + lang_data['subscriber'] + ''
|
|
|
|
|
|
|
+ acl = lang_data['subscriber']
|
|
|
else:
|
|
else:
|
|
|
- acl = '' + lang_data['normal'] + ''
|
|
|
|
|
|
|
+ acl = lang_data['normal']
|
|
|
else:
|
|
else:
|
|
|
acl = lang_data['ban']
|
|
acl = lang_data['ban']
|
|
|
|
|
|
|
@@ -3181,7 +3181,7 @@ def user_info():
|
|
|
acl += ' (' + lang_data['login'] + ' ' + lang_data['able'] + ')'
|
|
acl += ' (' + lang_data['login'] + ' ' + lang_data['able'] + ')'
|
|
|
|
|
|
|
|
if custom(conn)[2] != 0:
|
|
if custom(conn)[2] != 0:
|
|
|
- ip_user = '<a href="/w/사용자:' + ip + '">' + ip + '</a>'
|
|
|
|
|
|
|
+ ip_user = '<a href="/w/' + lang_data['user'] + ':' + ip + '">' + ip + '</a>'
|
|
|
|
|
|
|
|
plus = '<li><a href="/logout">로그아웃</a></li><li><a href="/change">' + lang_data['my_info'] + ' ' + lang_data['edit'] + '</a></li>'
|
|
plus = '<li><a href="/logout">로그아웃</a></li><li><a href="/change">' + lang_data['my_info'] + ' ' + lang_data['edit'] + '</a></li>'
|
|
|
|
|
|
|
@@ -3199,8 +3199,8 @@ def user_info():
|
|
|
plus2 = ''
|
|
plus2 = ''
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['사용자 메뉴', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
- data = '<h2>상태</h2><ul><li>' + ip_user + ' <a href="/record/' + url_pas(ip) + '">(기록)</a></li><li>권한 상태 : ' + acl + '</li></ul><br><h2>' + lang_data['login'] + '</h2><ul>' + plus + '<li><a href="/register">회원가입</a></li></ul><br><h2>사용자 기능</h2><ul><li><a href="/acl/사용자:' + url_pas(ip) + '">사용자 ' + lang_data['document'] + ' ACL</a></li><li><a href="/custom_head">사용자 HEAD</a></li></ul><br><h2>기타</h2><ul>' + plus2 + '<li><a href="/count">활동 횟수</a></li></ul>',
|
|
|
|
|
|
|
+ imp = [lang_data['user'] + ' 메뉴', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
+ data = '<h2>상태</h2><ul><li>' + ip_user + ' <a href="/record/' + url_pas(ip) + '">(기록)</a></li><li>권한 상태 : ' + acl + '</li></ul><br><h2>' + lang_data['login'] + '</h2><ul>' + plus + '<li><a href="/register">회원가입</a></li></ul><br><h2>' + lang_data['user'] + ' 기능</h2><ul><li><a href="/acl/' + lang_data['user'] + ':' + url_pas(ip) + '">' + lang_data['user'] + ' ' + lang_data['document'] + ' ACL</a></li><li><a href="/custom_head">' + lang_data['user'] + ' HEAD</a></li></ul><br><h2>기타</h2><ul>' + plus2 + '<li><a href="/count">활동 횟수</a></li></ul>',
|
|
|
menu = 0
|
|
menu = 0
|
|
|
))
|
|
))
|
|
|
|
|
|
|
@@ -3287,9 +3287,9 @@ def custom_head_view():
|
|
|
start += '<span><style>CSS</style><br><script>JS</script></span><hr>'
|
|
start += '<span><style>CSS</style><br><script>JS</script></span><hr>'
|
|
|
|
|
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
- imp = ['사용자 HEAD', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
|
|
|
|
+ imp = [lang_data['user'] + ' HEAD', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = start + '<form method="post"><textarea rows="25" cols="100" name="content">' + data + '</textarea><hr><button id="save" type="submit">저장</button></form>',
|
|
data = start + '<form method="post"><textarea rows="25" cols="100" name="content">' + data + '</textarea><hr><button id="save" type="submit">저장</button></form>',
|
|
|
- menu = [['user', '사용자']]
|
|
|
|
|
|
|
+ menu = [['user', lang_data['user']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/count')
|
|
@app.route('/count')
|
|
@@ -3317,7 +3317,7 @@ def count_edit(name = None):
|
|
|
return html_minify(render_template(skin_check(conn),
|
|
return html_minify(render_template(skin_check(conn),
|
|
|
imp = ['활동 횟수', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
imp = ['활동 횟수', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
data = '<ul><li><a href="/record/' + url_pas(that) + '">편집 횟수</a> : ' + str(data) + '</li><li><a href="/topic_record/' + url_pas(that) + '">토론 횟수</a> : ' + str(t_data) + '</a></li></ul>',
|
|
data = '<ul><li><a href="/record/' + url_pas(that) + '">편집 횟수</a> : ' + str(data) + '</li><li><a href="/topic_record/' + url_pas(that) + '">토론 횟수</a> : ' + str(t_data) + '</a></li></ul>',
|
|
|
- menu = [['user', '사용자']]
|
|
|
|
|
|
|
+ menu = [['user', lang_data['user']]]
|
|
|
))
|
|
))
|
|
|
|
|
|
|
|
@app.route('/random')
|
|
@app.route('/random')
|