From 343b8437908363195877e33b9760f7823ea443a4 Mon Sep 17 00:00:00 2001 From: Francesco Luzzana Date: Sun, 6 Mar 2022 21:30:18 +0100 Subject: [PATCH] clipboard --- config.py | 7 +++++-- exquisite_branch/__init__.py | 14 +++++++++---- exquisite_branch/static/css/global.css | 1 + exquisite_branch/static/css/share.css | 28 +++++++++++++++++++++++++ exquisite_branch/static/favicon.ico | Bin 0 -> 15406 bytes exquisite_branch/static/js/copy.js | 22 +++++++++++++++++++ exquisite_branch/templates/share.html | 8 +++++-- 7 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 exquisite_branch/static/css/share.css create mode 100644 exquisite_branch/static/favicon.ico create mode 100644 exquisite_branch/static/js/copy.js diff --git a/config.py b/config.py index 851e11e..6b654be 100644 --- a/config.py +++ b/config.py @@ -1,15 +1,18 @@ import os + class Config(object): DEBUG = False TESTING = False URL_PREFIX = '' - + + class ProductionConfig(Config): DEBUG = False URL_PREFIX = os.environ.get("URL_PREFIX") - + class DevelopmentConfig(Config): ENV = "development" DEVELOPMENT = True + DEBUG = True diff --git a/exquisite_branch/__init__.py b/exquisite_branch/__init__.py index ed25e6a..cacbd6c 100644 --- a/exquisite_branch/__init__.py +++ b/exquisite_branch/__init__.py @@ -1,7 +1,8 @@ import os -from flask import Flask +from flask import Flask, send_from_directory from . import prefix + def create_app(test_config=None): # create and configure the app app = Flask(__name__, instance_relative_config=True) @@ -26,6 +27,12 @@ def create_app(test_config=None): from . import db db.init_app(app) + @app.route("/favicon.ico") + def favicon(): + return send_from_directory( + os.path.join(app.root_path, "static"), "favicon.ico", mimetype="image/vnd.microsoft.icon", + ) + from . import draw app.register_blueprint(draw.bp) @@ -38,8 +45,7 @@ def create_app(test_config=None): from . import home app.register_blueprint(home.bp) - - - app.wsgi_app = prefix.PrefixMiddleware(app.wsgi_app, prefix=os.environ.get("URL_PREFIX", '')) + app.wsgi_app = prefix.PrefixMiddleware( + app.wsgi_app, prefix=os.environ.get("URL_PREFIX", '')) return app diff --git a/exquisite_branch/static/css/global.css b/exquisite_branch/static/css/global.css index dab5c64..375efcf 100644 --- a/exquisite_branch/static/css/global.css +++ b/exquisite_branch/static/css/global.css @@ -2,6 +2,7 @@ html, body { margin: 0; background-color: var(--background); + font-size: 1.25rem; } * { diff --git a/exquisite_branch/static/css/share.css b/exquisite_branch/static/css/share.css new file mode 100644 index 0000000..55d7022 --- /dev/null +++ b/exquisite_branch/static/css/share.css @@ -0,0 +1,28 @@ +.share { + width: 100vw; + height: 100vh; + + line-height: 2; + + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +a { + color: currentColor; + text-decoration: none; +} + +button.clipboard { + background: none; + border: none; + text-decoration: underline; + cursor: pointer; + font-size: 1rem; +} + +button.clipboard:hover { + color: dodgerblue; +} diff --git a/exquisite_branch/static/favicon.ico b/exquisite_branch/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..80ea9e5d2c6418db9ef0fb84d6d82c5fffdf5d95 GIT binary patch literal 15406 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 { + clipboard = document.createElement("button"); + clipboard.classList.add("clipboard"); + clipboard.innerHTML = "Copy to clipboard"; + insertAfter(clipboard, copy); + clipboard.addEventListener("click", (e) => { + navigator.clipboard.writeText(copy.dataset.copy).then( + function () { + clipboard.innerHTML = "Copied!"; + }, + function (err) { + console.error("Async: Could not copy text: ", err); + } + ); + }); +}); + +function insertAfter(newNode, referenceNode) { + referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); +} diff --git a/exquisite_branch/templates/share.html b/exquisite_branch/templates/share.html index d8312d2..96e77f5 100644 --- a/exquisite_branch/templates/share.html +++ b/exquisite_branch/templates/share.html @@ -8,12 +8,16 @@ + +