Jelajahi Sumber

add bbs edit

잉여개발기 (SPDV) 3 tahun lalu
induk
melakukan
ef6466e876
4 mengubah file dengan 60 tambahan dan 15 penghapusan
  1. 2 0
      app.py
  2. 56 13
      route/bbs_edit.py
  3. 1 1
      route/bbs_w_post.py
  4. 1 1
      version.json

+ 2 - 0
app.py

@@ -597,6 +597,8 @@ app.route('/bbs/set/<int:bbs_num>', methods = ['POST', 'GET'])(bbs_w_set)
 app.route('/bbs/edit/<int:bbs_num>', methods = ['POST', 'GET'])(bbs_edit)
 app.route('/bbs/edit/preview/<int:bbs_num>', methods = ['POST', 'GET'], defaults = { 'do_type' : 'preview' })(bbs_edit)
 app.route('/bbs/w/<int:bbs_num>/<int:post_num>', methods = ['POST', 'GET'])(bbs_w_post)
+app.route('/bbs/edit/<int:bbs_num>/<int:post_num>', methods = ['POST', 'GET'])(bbs_edit)
+app.route('/bbs/edit/preview/<int:bbs_num>/<int:post_num>', methods = ['POST', 'GET'], defaults = { 'do_type' : 'preview' })(bbs_edit)
 app.route('/bbs/w/preview/<int:bbs_num>/<int:post_num>', methods = ['POST'], defaults = { 'do_type' : 'preview' })(bbs_w_post)
 # app.route('/bbs/edit/<int:bbs_num>/<int:post_num>')
 

+ 56 - 13
route/bbs_edit.py

@@ -1,16 +1,27 @@
 from .tool.func import *
 
-def bbs_edit(bbs_num = '', do_type = ''):
+def bbs_edit(bbs_num = '', post_num = '', do_type = ''):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
         bbs_num_str = str(bbs_num)
+        post_num_str = str(post_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 post_num != '':
+            curs.execute(db_change('select set_data from bbs_data where set_name = "user_id" and set_id = ? and set_code = ?'), [bbs_num, post_num])
+            db_data = curs.fetchall()
+            if not db_data:
+                return redirect('/bbs/main')
+            else:
+                if not db_data[0][0] == ip and admin_check() != 1:
+                    return re_error('/ban')
+            
         if acl_check(bbs_num_str, 'bbs_edit') == 1:
             return redirect('/bbs/set/' + bbs_num_str)
 
@@ -20,22 +31,31 @@ def bbs_edit(bbs_num = '', do_type = ''):
             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'
+            if post_num == '':
+                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'
+            else:
+                id_data = post_num_str
 
             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])
+            if post_num == '':
+                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])
+            else:
+                curs.execute(db_change("update bbs_data set set_data = ? where set_name = 'title' and set_code = ? and set_id = ?"), [title, post_num, bbs_num_str])
+                curs.execute(db_change("update bbs_data set set_data = ? where set_name = 'data' and set_code = ? and set_id = ?"), [data, id_data, bbs_num_str])
+                curs.execute(db_change("update bbs_data set set_data = ? where set_name = 'date' and set_code = ? and set_id = ?"), [date, id_data, bbs_num_str])
 
             return redirect('/bbs/w/' + bbs_num_str + '/' + id_data)
         else:
             if do_type == 'preview':
+                title = flask.request.form.get('title', '')
                 data = flask.request.form.get('content', '')
                 data = data.replace('\r', '')
 
@@ -45,11 +65,34 @@ def bbs_edit(bbs_num = '', do_type = ''):
                     data_in = 'from'
                 )
             else:
-                data = ''
-                data_preview = ''
+                if post_num == '':
+                    title = ''
+                    data = ''
+                    data_preview = ''
+                else:
+                    curs.execute(db_change('select set_name, set_data, set_code from bbs_data where set_id = ? and set_code = ?'), [bbs_num, post_num])
+                    db_data = curs.fetchall()
+
+                    temp_id = ''
+                    temp_dict = {}
+
+                    for for_a in db_data + [['', '', '']]:
+                        if temp_id != for_a[2]:
+                            temp_id = for_a[2]
+                            temp_dict['code'] = for_a[2]
+
+                        temp_dict[for_a[0]] = for_a[1]
+
+                    title = temp_dict['title']
+                    data = temp_dict['data']
+                    data_preview = ''
             
-            form_action = 'formaction="/bbs/edit/' + bbs_num_str + '"'
-            form_action_preview = 'formaction="/bbs/edit/preview/' + bbs_num_str + '"'
+            if post_num == '':
+                form_action = 'formaction="/bbs/edit/' + bbs_num_str + '"'
+                form_action_preview = 'formaction="/bbs/edit/preview/' + bbs_num_str + '"'
+            else:
+                form_action = 'formaction="/bbs/edit/' + bbs_num_str + '/' + post_num_str + '"'
+                form_action_preview = 'formaction="/bbs/edit/preview/' + bbs_num_str + '/' + post_num_str + '"'
     
             editor_top_text = '<a href="/edit_filter">(' + load_lang('edit_filter_rule') + ')</a>'
             
@@ -89,7 +132,7 @@ def bbs_edit(bbs_num = '', do_type = ''):
 
                         <div>''' + edit_button('opennamu_edit_textarea', 'opennamu_monaco_editor') + '''</div>
                         
-                        <input placeholder="''' + load_lang('bbs_title') + '''" name="title">
+                        <input placeholder="''' + load_lang('bbs_title') + '''" name="title" value="''' + html.escape(title) + '''">
                         <hr class="main_hr">
 
                         <div id="opennamu_monaco_editor" class="opennamu_textarea_500" ''' + monaco_display + '''></div>

+ 1 - 1
route/bbs_w_post.py

@@ -261,7 +261,7 @@ def bbs_w_post(bbs_num = '', post_num = '', do_type = ''):
                 curs.execute(db_change('select set_name, set_data, set_code, set_id from bbs_data where (set_name = "comment" or set_name = "comment_date" or set_name = "comment_user_id") and set_id = ? order by set_code + 0 asc'), [bbs_num_str + '-' + post_num_str])
                 db_data = curs.fetchall()
                 if db_data:
-                    data += '<hr class="main_hr"><hr><hr class="main_hr">'
+                    data += '<hr class="main_hr"><hr>'
                 else:
                     db_data = []
 

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC3-dev167",
+        "r_ver" : "v3.4.6-RC3-dev168",
         "c_ver" : "3500361",
         "s_ver" : "3500111"
     }