| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- from .tool.func import *
- def bbs_edit(bbs_num = '', do_type = ''):
- with get_db_connect() as conn:
- curs = conn.cursor()
- bbs_num_str = str(bbs_num)
- ip = ip_check()
- curs.execute(db_change('select set_id from bbs_set where set_id = ? and set_name = "bbs_name"'), [bbs_num_str])
- if not curs.fetchall():
- return redirect('/bbs/main')
-
- if acl_check(bbs_num_str, 'bbs_edit') == 1:
- return redirect('/bbs/set/' + bbs_num_str)
- if flask.request.method == 'POST' and do_type != 'preview':
- if captcha_post(flask.request.form.get('g-recaptcha-response', flask.request.form.get('g-recaptcha', ''))) == 1:
- return re_error('/error/13')
- else:
- captcha_post('', 0)
-
- curs.execute(db_change('select set_code from bbs_data where set_name = "title" and set_id = ? order by set_code + 0 desc'), [bbs_num_str])
- db_data = curs.fetchall()
- id_data = str(int(db_data[0][0]) + 1) if db_data else '1'
- title = flask.request.form.get('title', '')
- data = flask.request.form.get('content', '')
- date = get_time()
- curs.execute(db_change("insert into bbs_data (set_name, set_code, set_id, set_data) values ('title', ?, ?, ?)"), [id_data, bbs_num_str, title])
- curs.execute(db_change("insert into bbs_data (set_name, set_code, set_id, set_data) values ('data', ?, ?, ?)"), [id_data, bbs_num_str, data])
- curs.execute(db_change("insert into bbs_data (set_name, set_code, set_id, set_data) values ('date', ?, ?, ?)"), [id_data, bbs_num_str, date])
- curs.execute(db_change("insert into bbs_data (set_name, set_code, set_id, set_data) values ('user_id', ?, ?, ?)"), [id_data, bbs_num_str, ip])
- return redirect('/bbs/w/' + bbs_num_str + '/' + id_data)
- else:
- if do_type == 'preview':
- data = flask.request.form.get('content', '')
- data = data.replace('\r', '')
- data_preview = render_set(
- doc_name = '',
- doc_data = data,
- data_in = 'from'
- )
- else:
- data = ''
- data_preview = ''
-
- form_action = 'formaction="/bbs/edit/' + bbs_num_str + '"'
- form_action_preview = 'formaction="/bbs/edit/preview/' + bbs_num_str + '"'
-
- editor_top_text = '<a href="/edit_filter">(' + load_lang('edit_filter_rule') + ')</a>'
-
- monaco_on = get_main_skin_set(curs, flask.session, 'main_css_monaco', ip)
- if monaco_on == 'use':
- editor_display = 'style="display: none;"'
- monaco_display = ''
- add_get_file = '''
- <link rel="stylesheet"
- data-name="vs/editor/editor.main"
- href="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.37.1/min/vs/editor/editor.main.min.css">
- <script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.37.1/min/vs/loader.min.js"></script>
- '''
- editor_top_text += ' <a href="javascript:opennamu_edit_turn_off_monaco();">(' + load_lang('turn_off_monaco') + ')</a>'
-
- if flask.request.cookies.get('main_css_darkmode', '0') == '1':
- monaco_thema = 'vs-dark'
- else:
- monaco_thema = ''
-
- add_script = 'do_monaco_init("' + monaco_thema + '");'
- else:
- editor_display = ''
- monaco_display = 'style="display: none;"'
- add_get_file = ''
- add_script = 'opennamu_edit_turn_off_monaco();'
- if editor_top_text != '':
- editor_top_text += '<hr class="main_hr">'
-
- return easy_minify(flask.render_template(skin_check(),
- imp = [load_lang('bbs_edit'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
- data = editor_top_text + add_get_file + '''
- <form method="post">
- <textarea style="display: none;" id="opennamu_edit_origin" name="doc_data_org"></textarea>
- <div>''' + edit_button('opennamu_edit_textarea', 'opennamu_monaco_editor') + '''</div>
-
- <input placeholder="''' + load_lang('bbs_title') + '''" name="title">
- <hr class="main_hr">
- <div id="opennamu_monaco_editor" class="opennamu_textarea_500" ''' + monaco_display + '''></div>
- <textarea id="opennamu_edit_textarea" ''' + editor_display + ''' class="opennamu_textarea_500" name="content">''' + html.escape(data) + '''</textarea>
- <hr class="main_hr">
-
- ''' + captcha_get() + ip_warning() + '''
-
- <button id="opennamu_save_button" type="submit" ''' + form_action + ''' onclick="do_monaco_to_textarea(); do_stop_exit_release();">''' + load_lang('save') + '''</button>
- <button id="opennamu_preview_button" type="submit" ''' + form_action_preview + ''' onclick="do_monaco_to_textarea(); do_stop_exit_release();">''' + load_lang('preview') + '''</button>
- </form>
-
- <hr class="main_hr">
- <div id="opennamu_preview_area">''' + data_preview + '''</div>
-
- <script>
- do_stop_exit();
- do_paste_image('opennamu_edit_textarea', 'opennamu_monaco_editor');
- ''' + add_script + '''
- </script>
- ''',
- menu = [['bbs/w/' + bbs_num_str, load_lang('return')]]
- ))
|