Prechádzať zdrojové kódy

Added custom CSS option to todo list overlay

deadtom 1 týždeň pred
rodič
commit
6c6c07b555

+ 1 - 31
ownchatbot/templates/list.html

@@ -6,37 +6,7 @@
     <meta http-equiv="refresh" content="10">
     <title>Today's to-do List</title>
     <style>
-        body {
-            background-color: transparent;
-            color: #ffd39a;
-        }
-
-	@font-face {
-  	    font-family: Shunda; 
-	    src: url("/static/Shunda.ttf");
-	}
-
-	* {
-	    font-family: Shunda;
-	    color; #ffd39a;
-	}
-
-	h4 {
-	    font-size: 24px;
-	    text-decoration: underline;
-	    text-align: center;
-	    margin-bottom: 0;
-            padding-bottom: 0;
-	}
-
-	ul {
-	    margin-top: 0; 
-            padding-top: 0;
-	}
-
-	li {
-	    font-size: 20px;
-	}
+        {{ css }}
     </style>
     <script>
       function refreshPage() {

+ 9 - 3
ownchatbot/templates/mgmt.html

@@ -429,9 +429,9 @@
         </script>
         <body onload="focusInput()">
         <h1>To-Do List</h1>
-        <form id="todo-form" method="POST" onsubmit="focusInput()" action="/mgmt/addtodo">
-            <input type="text" id="itemInput" name="item" placeholder="Add a new item" required>
-            <button class="button button2" type="submit">Add</button>
+        <form id="todo-item-form" method="POST" onsubmit="focusInput()" action="/mgmt/addtodoitem">
+            <input type="text" id="itemInput" name="item" placeholder="Add a new item">
+            <button id="todo-item-form" class="button button2" type="submit">Add</button>
         </form>
         <ul>
             {% if items %}
@@ -454,6 +454,12 @@
             <button class="button button2" type="submit" class="button">Clear List</button>
         </form>
         <br>
+        
+        <h1>Custom CSS for your list overlay</h1>
+        <form id="todo-css-form" method="POST" onsubmit="focusInput()" action="/mgmt/addtodocss">
+            <textarea id="cssInput" name="todo_css" rows="20" cols="80">{{ todo_css }}</textarea>
+            <button id="todo-css-form" class="button button2" type="submit">Save</button>
+        </form>
     </div>
     
     

+ 18 - 3
ownchatbot/user_handlers.py

@@ -7,17 +7,32 @@ import json
 import os
 
 
-def save_todolist(list_items):  # Save todolist items
+def save_todocss(todo_css):  # Save todo list custom CSS
+    todo_list = current_app.config['LIST']
+    list_file = os.path.join(current_app.instance_path, 'todo.py')
+    try:
+        with open(list_file, 'w') as f:
+            f.write(f'LIST = {todo_list}\n\nCSS = \"\"\"{todo_css}\"\"\"')
+        f.close
+        current_app.config.from_pyfile('todo.py', silent=True)  # Reread the list into the app
+        return True
+    except Exception as stdcerror:
+        current_app.logger.error(f'Couldn\'t save todo.py: {stdcerror.args[0]}')
+        return False
+
+
+def save_todolist(list_items):  # Save todo list items
     new_list = json.dumps(list_items, indent=4)
+    todo_css = current_app.config['CSS']
     list_file = os.path.join(current_app.instance_path, 'todo.py')
     try:
         with open(list_file, 'w') as f:
-            f.write(f'LIST = {new_list}')
+            f.write(f'LIST = {new_list}\n\nCSS = \"\"\"{todo_css}\"\"\"')
         f.close
         current_app.config.from_pyfile('todo.py', silent=True)  # Reread the list into the app
         return True
     except Exception as stdlerror:
-        current_app.logger.error(f'Couldn\'t save todo.py: {stdclerror.args[0]}')
+        current_app.logger.error(f'Couldn\'t save todo.py: {stdlerror.args[0]}')
         return False
 
 

+ 22 - 5
ownchatbot/web_panels.py

@@ -2,7 +2,7 @@ from flask import flash, render_template, Blueprint, current_app, redirect, requ
 from datetime import timezone
 from ownchatbot.db import get_db, reread_goals, reread_votes, rem_vote, reset_vote, reset_goal, clear_fulfilled_rewards, clear_reward_queue, rem_cool, rem_from_queue
 from ownchatbot.reward_handlers import all_active_votes, all_active_goals, all_active_rewards, get_queue, fulfill_reward, save_rewards, activate_category, deactivate_category, refund_reward, reread_categories, save_config
-from ownchatbot.user_handlers import get_all_users, get_all_users_by_name, refund_points, adjust_points, change_email, get_email_code, del_email_code, save_todolist
+from ownchatbot.user_handlers import get_all_users, get_all_users_by_name, refund_points, adjust_points, change_email, get_email_code, del_email_code, save_todolist, save_todocss
 from ownchatbot.bot_messages import save_announce
 from ownchatbot.owncast_com import send_private_chat
 import json
@@ -104,6 +104,7 @@ def mgmt():
     announce_interval = current_app.config['ANNOUNCE_INTERVAL']
     announcements = current_app.config['ANNOUNCEMENTS']
     todolist_items = current_app.config['LIST']
+    todo_css = current_app.config['CSS']
     active_tab = request.args.get('activeTab')
     settings_info = [
         access_id,
@@ -136,6 +137,7 @@ def mgmt():
                            inactive_categories=inactive_categories,
                            settings_info=settings_info,
                            items=todolist_items,
+                           todo_css=todo_css,
                            activeTab=active_tab)
 
 
@@ -549,9 +551,23 @@ def clear_queue():
     return redirect(url_for('web_panels.mgmtqueue'))
 
 
-@ocb.route('/mgmt/addtodo', methods=['POST'])
-def add_todo():
-    todo_item = request.form.get('todo_item')
+@ocb.route('/mgmt/addtodocss', methods=['POST'])
+def add_todo_css():
+    if request.method == 'POST':
+        new_css = request.form.get('todo_css')
+        if not new_css:
+            new_css = """body {
+    background-color: transparent;
+    color: white;
+}"""
+        if save_todocss(new_css):  # Save todo list
+            current_app.logger.info('Saved to-do CSS.')
+        return redirect(url_for('web_panels.mgmt', activeTab='todolist'))
+    return redirect(url_for('web_panels.mgmt', activeTab='todolist'))
+
+
+@ocb.route('/mgmt/addtodoitem', methods=['POST'])
+def add_todo_item():
     if request.method == 'POST':
         todolist_items = current_app.config['LIST']
         item = request.form.get('item')
@@ -610,4 +626,5 @@ def votes():
 @ocb.route('/todo')
 def todo():
     todolist_items = current_app.config['LIST']
-    return render_template('list.html', items=todolist_items)
+    todolist_css = current_app.config['CSS']
+    return render_template('list.html', items=todolist_items, css=todolist_css)