Kaynağa Gözat

issue #588 마무리

hoparkgo9ma 7 yıl önce
ebeveyn
işleme
5889009b9e
4 değiştirilmiş dosya ile 93 ekleme ve 41 silme
  1. 29 2
      app.py
  2. 34 35
      func.py
  3. 17 1
      views/easter_egg.py
  4. 13 3
      views/main_css/egg.css

+ 29 - 2
app.py

@@ -2342,6 +2342,12 @@ def manager(num = 1):
     }
     
     if num == 1:
+        curs.execute('select data from other where name = "easter_egg"')
+        result = curs.fetchall()[0][0]
+        if result == 'True':
+            easter_egg_status = 'checked'
+        else:
+            easter_egg_status = ''
         return easy_minify(flask.render_template(skin_check(), 
             imp = [load_lang('admin') + ' ' + load_lang('tool'), wiki_set(), custom(), other2([0, 0])],
             data =  '''
@@ -2375,7 +2381,13 @@ def manager(num = 1):
                         <li><a href="/oauth_settings">''' + load_lang('oauth_settings') + '''</a></li>
                         <li><a href="/adsense_settings">''' + load_lang('adsense') + ' ' + load_lang('setting') + '''</a></li>
                     </ul>
-                    ''',
+                    <h2>Easter Egg</h2>
+                    <div>
+                        <input type="checkbox" id="enable-easter-egg"''' + easter_egg_status + '''>
+                        <label for="enable-easter-egg">enable easteregg</label>
+                        <p id="easter-egg-status"></p>
+                    </div>
+                    ''' + easter_egg_config_js,
             menu = [['other', load_lang('other')]],
             script = load_script()
         ))
@@ -4787,9 +4799,24 @@ def main_file(data = None):
     else:
         return redirect('/w/' + url_pas(wiki_set(2)))
 
+@app.route('/request/egg_config', methods=['GET', 'POST'])
+def request_egg_config():
+    if admin_check(None, 'update') != 1:
+       abort(401)
+    request_config = flask.request.form['data']
+    request_config = request_config.replace(request_config[0], request_config[0].upper())
+    curs.execute('update other set data = ? where name = "easter_egg"', [request_config])
+    conn.commit()
+    return flask.jsonify({"request": "response", "data": "done", "now": request_config})
+
 @app.route('/request/egg')
 def request_egg():
-    return easter_egg[random.randint(0, len(easter_egg) - 1)]
+    curs.execute('select data from other where name = "easter_egg"')
+    result = curs.fetchall()[0][0]
+    if result == 'True':
+        return easter_egg[random.randint(0, len(easter_egg) - 1)]
+    else:
+        return ''
 
 @app.errorhandler(404)
 def error_404(e):

+ 34 - 35
func.py

@@ -413,45 +413,44 @@ def wiki_set(num = 1):
 
 def load_script():
     script = []
-    script += [''] # script[0] = head(top)
+    script += ['<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>'] # script[0] = head(top)
     curs.execute("select data from other where name = 'easter_egg'")
     db_data = curs.fetchall()
-    if db_data[0][0] == 'True':
-        script += ['''
-        <link rel="stylesheet" href="/views/main_css/egg.css">
-        <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
-        <script>
-        var easter_count = 0;
-        document.getElementById('bottom_main').onclick = function() {
-            easter_count++;
-            if (easter_count > 3) {
-                $.get('/request/egg', function (data) {
-                    document.getElementById("egg_content").innerHTML = data;
-                });
-                document.getElementById("egg_container").style.display = 'block';
-            }
-        };
-        </script>
-        <script>
-        function overlay_off() {
-            document.getElementById("egg_content").innerHTML = '';
-            document.getElementById("egg_container").style.display = "none";
+    script += ['''
+    <link rel="stylesheet" href="/views/main_css/egg.css">
+    <script>
+    var easter_count = 0;
+    document.getElementById('bottom_main').onclick = function() {
+        easter_count++;
+        if (easter_count > 3) {
+            $.get('/request/egg', function (data) {
+                document.getElementById("egg_content").innerHTML = data;
+                if (data != '') {
+                    document.getElementById("egg_container").style.display = 'block';
+                }
+            });
         }
-        </script>
-
-        <div id="egg_container">
-            <div id="egg_inner">
-                <div id="egg_close" onclick="overlay_off()">
-                    <i class="fas fa-times"></i>
-                </div>
-                <div id="egg_content">
-                </div>
+    };
+    </script>
+    <script>
+    function overlay_off() {
+        document.getElementById("egg_content").innerHTML = '';
+        document.getElementById("egg_container").style.display = "none";
+    }
+    </script>
+
+    <div id="egg_container" class="egg_container">
+        <div id="egg_outer" class="egg_container" onclick="overlay_off()"></div>
+        <div id="egg_inner">
+            <div id="egg_close" onclick="overlay_off()">
+                <i class="fas fa-times"></i>
             </div>
-        </div>
-        ''']
-        # script[1] = on the </body>(bottom)
-    else:
-        script[1] += ['']
+            <div id="egg_content">
+            </div>
+         </div>
+    </div>
+    ''']
+    # script[1] = on the </body>(bottom)
     return script
 
 

+ 17 - 1
views/easter_egg.py

@@ -25,4 +25,20 @@ easter_egg = [
 """,
 """<iframe width="560" height="315" src="https://www.youtube.com/embed/kxopViU98Xo?autoplay=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>""",
 """<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ?autoplay=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>"""
-]
+]
+
+easter_egg_config_js = '''
+<script>
+document.getElementById('enable-easter-egg').addEventListener("change", function() {
+    $.ajax({
+        type: "POST",
+        url: "/request/egg_config",
+        data: {request: "config", data: document.getElementById('enable-easter-egg').checked},
+        dataType: "json",
+        success: function (data) {
+            document.getElementById('easter-egg-status').innerHTML = '서버에 변경 사항이 저장되었습니다.';
+        }
+    });
+});
+</script>
+'''

+ 13 - 3
views/main_css/egg.css

@@ -1,16 +1,24 @@
-#egg_container {
+.egg_container {
     position: fixed;
-    display: none;
     width: 100%;
     height: 100%;
     top: 0;
     left: 0;
     right: 0;
     bottom: 0;
-    background-color: rgba(0,0,0,0.5);
     z-index: 2;
 }
 
+#egg_container {
+    display: none;
+}
+
+#egg_outer {
+    z-index: 3;
+    cursor: pointer;
+    background-color: rgba(0,0,0,0.5);
+}
+
 #egg_inner {
     width: 50vw;
     max-width: 620px;
@@ -23,6 +31,7 @@
     border-radius: 10px;
     transform: translate(-50%,-50%);
     -ms-transform: translate(-50%,-50%);
+    z-index: 5;
 }
 
 #egg_content {
@@ -34,4 +43,5 @@
     margin: 0;
     padding: 0;
     padding-bottom: 10px;
+    cursor: pointer;
 }