diff --git a/__pycache__/app.cpython-313.pyc b/__pycache__/app.cpython-313.pyc index 53dcb83..0ab4170 100644 Binary files a/__pycache__/app.cpython-313.pyc and b/__pycache__/app.cpython-313.pyc differ diff --git a/app.py b/app.py index cde5ef1..772ca58 100644 --- a/app.py +++ b/app.py @@ -74,23 +74,6 @@ def info(): catList = Liste_cat() return render_template('staticpage.html', page=page , catList=catList) -@app.route('/cat/') -def catPage(catname): - articles = (p for p in pages if 'published' in p.meta and 'cat' in p.meta and p.meta['cat']==catname ) - latest = sorted(articles, reverse=True, - key=lambda p: p.meta['published']) - catList = Liste_cat() - return render_template('index.html', articles=latest , catList=catList ) - -@app.route('/author/') -def authorPage(authorname): - articles = (p for p in pages if 'published' in p.meta and 'author' in p.meta and p.meta['author']==authorname ) - latest = sorted(articles, reverse=True, - key=lambda p: p.meta['published']) - catList = Liste_cat() - return render_template('index.html', articles=latest , catList=catList ) - - @app.route('/pages/') def serve_pages(path): return send_from_directory('pages', path) @@ -101,30 +84,16 @@ def serve_pages(path): def search(): query = request.form['query'] print(query) - catList = Liste_cat() # articles = (p for p in pages if 'published' in p.meta and query.lower() in metastr= lambda m : [item.lower() for item in list(p.meta.values())]) articles = (p for p in pages if 'published' in p.meta and any(isinstance(value,str) and query.lower() in value.lower() for value in p.meta.values())) - return render_template('index.html', articles=articles ,catList=catList) - - - -@app.route('/webhook', methods=['POST']) -def webhook(): - if request.method == 'POST': - repo_path = "http://192.168.178.21:3000/zvevqx/tdtdt.git" # Replace with the actual path - subprocess.run(['git', 'pull', repo_path]) - return "Webhook received!" + imgDict ={} + for a in articles: + g_path, imgs = imagelist(a.path) + imgDict[a.path]=imgs + return render_template('index.html', articles=articles ,imgDict=imgDict) -def compute_signature(data, secret): - import hmac - import hashlib - return hmac.new(secret.encode('utf-8'), data, hashlib.sha256).hexdigest() -def restart_flask_app(): - # Customize this function to restart your Flask app (e.g., using gunicorn, systemd, etc.) - # Example: subprocess.run(['systemctl', 'restart', 'your-flask-app.service']) - pass @app.errorhandler(404) diff --git a/static/main.bak b/static/main.bak new file mode 100644 index 0000000..d3d469e --- /dev/null +++ b/static/main.bak @@ -0,0 +1,91 @@ +$(document).ready(function(){ + + //$(".alist li").click(function(){ + //console.log("lolololol"); + //var ctnt = $(this).find('.content-wrapper') + //$(ctnt).toggleClass("open") + //}); + + + const sortState = {}; + + // Function to sort articles + function sortArticles(columnClass) { + const $list = $('.alist'); + const $listItems = $list.children('li'); + + // Determine sort direction + if (!sortState[columnClass]) { + sortState[columnClass] = 'asc'; + } else { + sortState[columnClass] = (sortState[columnClass] === 'asc') ? 'desc' : 'asc'; + } + + // Sort the list items based on the text of the specified column + $listItems.sort(function(a, b) { + const aText = $(a).find('.' + columnClass).text().trim().toLowerCase(); + const bText = $(b).find('.' + columnClass).text().trim().toLowerCase(); + + // Special handling for period (numeric sorting) + if (columnClass === 'period') { + const aNum = parseInt(aText); + const bNum = parseInt(bText); + return sortState[columnClass] === 'asc' + ? aNum - bNum + : bNum - aNum; + } + + // Default alphabetical sorting + return sortState[columnClass] === 'asc' + ? aText.localeCompare(bText) + : bText.localeCompare(aText); + }); + + // Detach and reappend sorted items to maintain DOM structure + $list.empty().append($listItems); + + // Optional: Visual indication of sort direction + $('.legend li ').removeClass('sort-asc sort-desc'); + $(`.legend li[data-sort="${columnClass}"]`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); + //$(`.legend li:contains("${columnClass}")`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); + //$(`.legend li `).attr('data-sort').addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); + } + + // Add click event to legend spans + $('.legend li ').on('click', function() { + // Get the class corresponding to the clicked span + //const columnClass = $(this).text().toLowerCase().replace(/\s+/g, ''); + const columnClass = $(this).attr("data-sort") + + // If the column exists in the article items, sort by that column + if ($('.alist li').first().find('.' + columnClass).length > 0) { + sortArticles(columnClass); + } + }); + + +$(".alist li a ").click(function(e) { + // Prevent this event from interfering with sorting or default link behavior +// e.preventDefault(); + + console.log("lolololol"); + var ctnt = $(this).find('.content-wrapper'); + if (ctnt.length === 0) { + ctnt = $(this).closest('li').find('.content-wrapper'); + } + $(ctnt).toggleClass("open"); + }); + + //$(".alist").on('click', 'li', function(e) { + //// Prevent this event from interfering with sorting + //if ($(e.target).closest('.legend').length === 0) { + //console.log("lolololol"); + //var ctnt = $(this).find('.content-wrapper'); + //$(ctnt).toggleClass("open"); + //} + //}); + +}) + + + diff --git a/static/main.js b/static/main.js index 0906787..d4226bc 100644 --- a/static/main.js +++ b/static/main.js @@ -1,12 +1,5 @@ -$(document).ready(function(){ - - //$(".alist li").click(function(){ - //console.log("lolololol"); - //var ctnt = $(this).find('.content-wrapper') - //$(ctnt).toggleClass("open") - //}); - - +$(document).ready(function() { + // Sorting state management const sortState = {}; // Function to sort articles @@ -44,18 +37,16 @@ $(document).ready(function(){ // Detach and reappend sorted items to maintain DOM structure $list.empty().append($listItems); - // Optional: Visual indication of sort direction - $('.legend li ').removeClass('sort-asc sort-desc'); - $(`.legend li[data-sort="${columnClass}"]`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); - //$(`.legend li:contains("${columnClass}")`).addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); - //$(`.legend li `).attr('data-sort').addClass(sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc'); + // Update sort direction indicators + $('.legend li').removeClass('sort-asc sort-desc'); + $(`.legend li[data-sort="${columnClass}"]`).addClass( + sortState[columnClass] === 'asc' ? 'sort-asc' : 'sort-desc' + ); } - // Add click event to legend spans - $('.legend li ').on('click', function() { - // Get the class corresponding to the clicked span - //const columnClass = $(this).text().toLowerCase().replace(/\s+/g, ''); - const columnClass = $(this).attr("data-sort") + // Add click event to legend spans for sorting + $('.legend li').on('click', function() { + const columnClass = $(this).attr("data-sort"); // If the column exists in the article items, sort by that column if ($('.alist li').first().find('.' + columnClass).length > 0) { @@ -63,29 +54,16 @@ $(document).ready(function(){ } }); - -$(".alist").on('click', 'li ', function(e) { - // Prevent this event from interfering with sorting or default link behavior - e.preventDefault(); - - console.log("lolololol"); - var ctnt = $(this).find('.content-wrapper'); - if (ctnt.length === 0) { - ctnt = $(this).closest('li').find('.content-wrapper'); + // Toggle content visibility + $(".alist").on('click', 'li', function(e) { + // Prevent sorting when clicking on content + if (!$(e.target).closest('.legend').length) { + const $contentWrapper = $(this).find('.content-wrapper'); + + // Ensure content-wrapper is not inside a link or legend + if (!$(e.target).closest('a, .legend').length) { + $contentWrapper.toggleClass("open"); + } } - $(ctnt).toggleClass("open"); }); - - //$(".alist").on('click', 'li', function(e) { - //// Prevent this event from interfering with sorting - //if ($(e.target).closest('.legend').length === 0) { - //console.log("lolololol"); - //var ctnt = $(this).find('.content-wrapper'); - //$(ctnt).toggleClass("open"); - //} - //}); - -}) - - - +}); diff --git a/static/style.css b/static/style.css index bb39a1c..476fcc4 100644 --- a/static/style.css +++ b/static/style.css @@ -265,7 +265,7 @@ a:hover{ .open{ height:auto !important; max-height:2000px !important; - margin-top:10px; + margin-top: 10px !important; transition: max-height 0.25s ease-in; } diff --git a/templates/index.html b/templates/index.html index 7318d98..ed58f98 100644 --- a/templates/index.html +++ b/templates/index.html @@ -4,7 +4,7 @@ - urbaniste dev site + latitude dev site