diff --git a/yadc/assets/css/base-types.scss b/yadc/assets/css/base-types.scss index e288561..7ea27a4 100644 --- a/yadc/assets/css/base-types.scss +++ b/yadc/assets/css/base-types.scss @@ -280,6 +280,9 @@ label { word-break: break-word; //chromium overflow-wrap: anywhere; //just new ff } + @each $cat, $color in $tag-category-colors { + &[data-tagcat="#{$cat}"] { .content { color: $color; } } + } .tag-icon, .tag-right { align-self: center; diff --git a/yadc/assets/css/main.scss b/yadc/assets/css/main.scss index 0116762..44f3e24 100644 --- a/yadc/assets/css/main.scss +++ b/yadc/assets/css/main.scss @@ -11,15 +11,22 @@ $ahover-color: #909090; $notif-bg-color: #000c; $notif-bg-error: #500c; -$bp-desktop: ">=desktop"; -$bp-tablet: "=desktop"; +$bp-tablet: " @@ -18,10 +19,11 @@ function create_selection_tag(tagname) { // CLEAR } // Suggestions -function create_suggestion_tag(tagname) { // CLEAR +function create_suggestion_tag(tagname, tagcat) { // CLEAR let tag = document.createElement("a") tag.classList.add("tagsuggestion") tag.dataset.tagname = tagname + tag.dataset.tagcat = tagcat tag.insertAdjacentHTML("beforeend", ` @@ -74,7 +76,7 @@ taginputs.forEach(function (tinput) { hid_input.value = val.join(' ').trim() } - function add_selected(tagname) { // 2 references + function add_selected(tagname, tagcat) { // 2 references let predf = predef let sel = selected @@ -85,7 +87,7 @@ taginputs.forEach(function (tinput) { } } - let newtag = create_selection_tag(tagname) + let newtag = create_selection_tag(tagname, tagcat) newtag.addEventListener('click', (event) => { remove_selected(event.target.dataset.tagname) event.preventDefault() @@ -116,7 +118,7 @@ taginputs.forEach(function (tinput) { if (predef) { predef.querySelectorAll("a").forEach(element => { element.addEventListener('click', (event) => { - add_selected(event.target.dataset.tagname) + add_selected(event.target.dataset.tagname, event.target.dataset.tagcat) event.preventDefault() setTimeout(() => suggest_input.focus(), 2) @@ -150,7 +152,7 @@ taginputs.forEach(function (tinput) { suggest_input.removeAttribute('value') // Disable prefill by browser function select_suggestion(tagelement) { - add_selected(tagelement.dataset.tagname) + add_selected(tagelement.dataset.tagname, tagelement.dataset.tagcat) suggest_input.value = '' render_suggestions([]) @@ -171,7 +173,7 @@ taginputs.forEach(function (tinput) { if (i > 5) return if (tagnames.includes(el.content)) return - let sugtag = create_suggestion_tag(el.content) + let sugtag = create_suggestion_tag(el.content, el.category.name) sugtag.addEventListener('click', (event) => { select_suggestion(event.target) diff --git a/yadc/bp/post.py b/yadc/bp/post.py index 9607c50..4d24a03 100644 --- a/yadc/bp/post.py +++ b/yadc/bp/post.py @@ -20,7 +20,9 @@ def posts(page): def tags_prepare(posts): tags = db.session.query(Tag, func.count(Post.id), func.array_agg(Post.id)).join(Tag.posts).filter(Post.id.in_([p.id for p in posts])).group_by(Tag.id).all() tags = [tag for tag, tag.count, tag.post_ids in tags] - tags.sort(key=lambda x: (x.category.value, x.content) ) + tags.sort(key=lambda x: x.content) + tags.sort(key=lambda x: x.count, reverse=True) + tags.sort(key=lambda x: x.category.value, reverse=True) return tags # PARSING ARGUMENTS @@ -57,7 +59,7 @@ def posts(page): 'post/index.html', posts=posts, tags=tags, - sel_tags=[tag for tag in tags if tag.content in f_tags] + sel_tags=[tag for tag in tags if tag.content in f_tags] or Tag.query.filter(Tag.content.in_(f_tags)) ) @bp.route('/show/') diff --git a/yadc/static/all.css b/yadc/static/all.css index aad55ba..9455c11 100644 --- a/yadc/static/all.css +++ b/yadc/static/all.css @@ -1 +1 @@ -.flash_msgs{display:flex;flex-flow:column-reverse nowrap;position:fixed;z-index:20;bottom:0;right:0;margin:0;padding:10px;font-size:.9em;pointer-events:none}.flash_msgs>li{width:250px;padding:10px;list-style-type:none;background-color:#000c;overflow:hidden;opacity:0;animation:fade 7s normal}.flash_msgs>li:not(:first-child){margin-bottom:10px}@keyframes fade{0%,100%{opacity:0}20%,80%{opacity:1}}.flash_msgs>li.error{background-color:#500c}h2{margin:0;margin-bottom:.5em}h3{margin-bottom:.5em;font-size:1.3em}h4{margin:0;margin-bottom:.8em;margin-top:.4em}.oneline-space{height:1em}.comment-form{margin-left:10px;max-width:500px}.comment-form input:required{box-shadow:none}.editingable:not(.time-to-edit) .edit{display:none!important}.editingable:not(.time-to-edit):hover .jsoff-show.edit{display:initial!important}.editingable:not(.time-to-edit):hover .jsoff-show.notedit{display:none!important}.editingable:not(.time-to-edit) .jsoff-hide.edit,.editingable:not(.time-to-edit) .jsoff-hide.notedit{display:none!important}.editingable.time-to-edit .notedit{display:none!important}input[type=text],input[type=password],textarea{background:#444a;border:1px solid #444;color:inherit;display:block;padding:.5em}input[type=text],input[type=password]{width:100%}textarea{resize:vertical;width:100%}input[type=submit]{background:#444a;border:2px solid #666a;border-radius:4px;color:inherit;padding:.4em 1.8em}input[type=submit]:active{background:#000a;border:2px solid #444a}label{padding:.4em}.baseform input[type=text],.baseform input[type=password],.baseform textarea,.pageform input[type=text],.pageform input[type=password],.pageform textarea{width:100%}.baseform input[type=checkbox],.pageform input[type=checkbox]{margin:.5em}.baseform input[type=submit],.pageform input[type=submit]{margin:.2em}.baseform>input,.baseform>textarea,.baseform>div,.baseform form>input,.baseform form>textarea,.baseform form>div,.pageform>input,.pageform>textarea,.pageform>div,.pageform form>input,.pageform form>textarea,.pageform form>div{margin:.8em 0}.baseform div.row,.pageform div.row{display:flex;align-items:center}.baseform div.row.stretch,.pageform div.row.stretch{justify-content:space-between}.baseform div.row label,.pageform div.row label{padding:0;margin-left:.2em;margin-right:.6em}.baseform ul,.pageform ul{padding:0;margin:0}.baseform ul li,.pageform ul li{list-style-type:none}.pageform{padding:1em;width:300px;margin:0 auto}.tag-input .tag-suggester{width:100%;position:relative}.tag-input .tag-suggester input[type=text]{margin:.3em 0}.tag-input .tag-suggester>.suggest-dropdown{display:flex;align-items:start;width:100%;top:100%;position:absolute;z-index:10;overflow:auto;background-color:#2d2d2de0}.tag-input .tag-suggester>.suggest-dropdown:not(:empty){padding:.2em}.tag-input .tag-suggester>.suggest-dropdown>a.sug-sel{background-color:#242424}.tag-container{display:flex;flex-flow:row wrap}.tag-container:empty{display:none}.tag-container>a{display:flex;justify-content:space-between;overflow:hidden;align-items:baseline;margin:.2em;padding:.35em .6em;border-radius:4px;background-color:#121212ff;cursor:pointer}.tag-container>a .content{margin:0 .4em;flex-grow:1;flex-basis:100%;word-break:break-word;overflow-wrap:anywhere}.tag-container>a .tag-icon,.tag-container>a .tag-right{align-self:center}.tag-container>a .count{font-size:.8em;margin-right:.4em}.tag-container>a>*{pointer-events:none}.tag-container>a:not(:hover) span.close{opacity:0}.tag-container>a:not(:hover) span.plus{opacity:0}.tag-container>a.tagselected{background-color:#400808ff}.tag-container>a.tag_hide{display:none}.comment-container{max-width:500px}.comment-container article.comment{overflow:hidden;margin:.4em .4em;padding:.4em .4em}.comment-container article.comment p,.comment-container article.comment textarea{margin:0}.comment-container article.comment p.deleted,.comment-container article.comment textarea.deleted{color:red}.comment-container article.comment .comment-head{display:flex;justify-content:space-between;align-items:baseline}.comment-container article.comment .comment-head h4{margin:0;padding:.4em}.comment-container article.comment .comment-head a,.comment-container article.comment .comment-head label{cursor:pointer}.comment-container article.comment .comment-head .controls{display:flex}.comment-container article.comment .comment-head .controls label>input{display:none}.comment-container article.comment .comment-editform p{padding:.5em}.comment-container article.comment .comment-editform textarea{font-size:inherit;font-family:inherit;border:none}header{display:flex;align-items:baseline;padding:0 10px;background-color:#222}header>a.logo{font-size:2em;margin:6px}@media(max-width:559px){header{position:relative}}header>nav{flex-grow:1;display:flex}header>nav>._overlay{display:none}@media(max-width:559px){header>nav{display:none}header>nav._drop{display:flex;flex-flow:column nowrap;position:absolute;margin:0;top:100%;left:0;right:0;z-index:10;background-color:#111d}header>nav>a,header>nav a#user-menu,header>nav .user_dropdown>a{padding:12px;padding-left:24px}header>nav>a:hover,header>nav>a:active,header>nav a#user-menu:hover,header>nav a#user-menu:active,header>nav .user_dropdown>a:hover,header>nav .user_dropdown>a:active{background-color:#333}header>nav .user::before{content:"";display:block;border-top:1px solid grey;margin:2px 12px}header>nav .user #user-menu{display:block}header>nav .user .user_dropdown{display:flex;flex-flow:column nowrap}header>nav>._overlay{display:block;position:fixed;width:100%;height:100%;z-index:-1;background-color:#0006}html.oh{overflow:hidden}}@media(min-width:560px){header>nav{margin:0 5px;align-items:center}header>nav>*{margin:0 5px;padding:6px 0}header>nav>.user{padding:0;margin-left:auto;margin-right:0;position:relative}header>nav>.user #user-menu{display:block;padding:6px 10px}header>nav>.user .user_dropdown{display:none}header>nav>.user .user_dropdown a{padding:10px}header>nav>.user .user_dropdown a:hover{background-color:#333}header>nav>.user:hover>.user_dropdown{display:flex;flex-flow:column nowrap;position:absolute;margin:0;top:100%;right:0;z-index:10;background-color:#111d}}header>#nav-menu{display:none}@media(max-width:559px){header>#nav-menu{display:block;margin:5px;margin-left:auto;padding:0 2px;align-self:center;font-size:2em;cursor:pointer}}.main-wrap{margin:0 auto;max-width:1300px;padding:8px;padding-top:0;padding-bottom:0;display:flex}@media(min-width:900px){.main-wrap{flex-flow:row nowrap}}@media(max-width:899px){.main-wrap{flex-flow:column nowrap}}@media(max-width:899px){.main-wrap{overflow:visible}}.main-wrap .important-subwrap{display:flex;flex-flow:column nowrap;flex-grow:1;overflow:visible}@media(max-width:899px){.main-wrap .important-subwrap{display:contents}}.main-wrap>section.sidepanel{flex-shrink:0;padding:10px}@media(min-width:900px){.main-wrap>section.sidepanel{width:18rem}}.main-wrap>section.sidepanel article:not(:last-child){margin-bottom:10px}@media(max-width:899px){.main-wrap>section.sidepanel article.tags .tag-container,.main-wrap>section.sidepanel article.post-edit .tag-container{flex-flow:row wrap}}@media(min-width:900px){.main-wrap>section.sidepanel article.tags .tag-container,.main-wrap>section.sidepanel article.post-edit .tag-container{flex-flow:column nowrap;align-items:start}.main-wrap>section.sidepanel article.tags .suggest-dropdown,.main-wrap>section.sidepanel article.post-edit .suggest-dropdown{flex-flow:row wrap}.main-wrap>section.sidepanel article.tags .suggest-dropdown a,.main-wrap>section.sidepanel article.post-edit .suggest-dropdown a{width:100%}}.main-wrap>section.sidepanel article.rating ul{padding:0}.main-wrap>section.sidepanel article.rating ul li{list-style-type:none}.main-wrap>section.sidepanel article.post-desc{display:flex;flex-flow:column nowrap;font-size:.9em}.main-wrap>section.sidepanel article.post-desc .source>a{word-break:break-all}.main-wrap>section.sidepanel article.post-desc>img{display:block;max-width:128px}.main-wrap>section.sidepanel article.sidenav>a{display:block;padding:.3em 1em}@media(min-width:900px){.main-wrap section:not(.sidepanel){width:100%}}.main-wrap section.post-list{overflow:hidden}@media(max-width:559px){.main-wrap section.post-list{margin-left:-8px;margin-right:-8px}}.main-wrap section.post-list .posts{display:flex;flex-flow:row wrap}@media(max-width:899px){.main-wrap section.post-list .posts{margin-left:-8px;margin-right:-8px}}.main-wrap section.post-list .posts::after{content:"";flex:10000 0 350px}.main-wrap section.post-list .posts>figure{position:relative;margin:8px}.main-wrap section.post-list .posts>figure img{display:block;width:100%;height:100%;transition:.2s ease}.main-wrap section.post-list .posts>figure:hover img{opacity:.7}@media(min-width:900px){.main-wrap section.post-single{padding:8px}}@media(max-width:899px){.main-wrap section.post-single{order:-1;margin-bottom:8px}}@media(max-width:559px){.main-wrap section.post-single{margin-left:-8px;margin-right:-8px}}.main-wrap section.post-single img{display:block;max-width:100%}.main-wrap section.comments{padding:10px}.main-wrap section.management-table{overflow-x:auto}.main-wrap section.management-table table{margin:0 auto}.main-wrap section.management-table tr{background-color:#303030}.main-wrap section.management-table tr th,.main-wrap section.management-table tr td{padding:6px 10px}.main-wrap section.management-table tr th{background-color:#606060}.main-wrap section.management-table tr label>input{display:none}.main-wrap section.management-table tr .fa{padding:4px 4px;align-self:center;font-size:1.5em;cursor:pointer}.main-wrap .user-main,.main-wrap .user-comments{flex-grow:1;flex-basis:0;padding:10px}.main-wrap section.manage-profile>.baseform{margin:0 10px;margin-bottom:15px;max-width:500px}.main-wrap .pagin{margin:10px 0;display:flex;flex-flow:row nowrap;justify-content:center}.main-wrap .pagin>a{display:block;background-color:#0005;padding:8px 12px;margin:0 2px}footer{padding:10px;text-align:center}*{box-sizing:border-box}body{margin:0;font-family:Verdana,Geneva,Tahoma,sans-serif;background-color:#222;color:#fff}a{color:#bbb;text-decoration:none}a:hover{color:#909090;text-decoration:none} \ No newline at end of file +.flash_msgs{display:flex;flex-flow:column-reverse nowrap;position:fixed;z-index:20;bottom:0;right:0;margin:0;padding:10px;font-size:.9em;pointer-events:none}.flash_msgs>li{width:250px;padding:10px;list-style-type:none;background-color:#000c;overflow:hidden;opacity:0;animation:fade 7s normal}.flash_msgs>li:not(:first-child){margin-bottom:10px}@keyframes fade{0%,100%{opacity:0}20%,80%{opacity:1}}.flash_msgs>li.error{background-color:#500c}h2{margin:0;margin-bottom:.5em}h3{margin-bottom:.5em;font-size:1.3em}h4{margin:0;margin-bottom:.8em;margin-top:.4em}.oneline-space{height:1em}.comment-form{margin-left:10px;max-width:500px}.comment-form input:required{box-shadow:none}.editingable:not(.time-to-edit) .edit{display:none!important}.editingable:not(.time-to-edit):hover .jsoff-show.edit{display:initial!important}.editingable:not(.time-to-edit):hover .jsoff-show.notedit{display:none!important}.editingable:not(.time-to-edit) .jsoff-hide.edit,.editingable:not(.time-to-edit) .jsoff-hide.notedit{display:none!important}.editingable.time-to-edit .notedit{display:none!important}input[type=text],input[type=password],textarea{background:#444a;border:1px solid #444;color:inherit;display:block;padding:.5em}input[type=text],input[type=password]{width:100%}textarea{resize:vertical;width:100%}input[type=submit]{background:#444a;border:2px solid #666a;border-radius:4px;color:inherit;padding:.4em 1.8em}input[type=submit]:active{background:#000a;border:2px solid #444a}label{padding:.4em}.baseform input[type=text],.baseform input[type=password],.baseform textarea,.pageform input[type=text],.pageform input[type=password],.pageform textarea{width:100%}.baseform input[type=checkbox],.pageform input[type=checkbox]{margin:.5em}.baseform input[type=submit],.pageform input[type=submit]{margin:.2em}.baseform>input,.baseform>textarea,.baseform>div,.baseform form>input,.baseform form>textarea,.baseform form>div,.pageform>input,.pageform>textarea,.pageform>div,.pageform form>input,.pageform form>textarea,.pageform form>div{margin:.8em 0}.baseform div.row,.pageform div.row{display:flex;align-items:center}.baseform div.row.stretch,.pageform div.row.stretch{justify-content:space-between}.baseform div.row label,.pageform div.row label{padding:0;margin-left:.2em;margin-right:.6em}.baseform ul,.pageform ul{padding:0;margin:0}.baseform ul li,.pageform ul li{list-style-type:none}.pageform{padding:1em;width:300px;margin:0 auto}.tag-input .tag-suggester{width:100%;position:relative}.tag-input .tag-suggester input[type=text]{margin:.3em 0}.tag-input .tag-suggester>.suggest-dropdown{display:flex;align-items:start;width:100%;top:100%;position:absolute;z-index:10;overflow:auto;background-color:#2d2d2de0}.tag-input .tag-suggester>.suggest-dropdown:not(:empty){padding:.2em}.tag-input .tag-suggester>.suggest-dropdown>a.sug-sel{background-color:#242424}.tag-container{display:flex;flex-flow:row wrap}.tag-container:empty{display:none}.tag-container>a{display:flex;justify-content:space-between;overflow:hidden;align-items:baseline;margin:.2em;padding:.35em .6em;border-radius:4px;background-color:#121212ff;cursor:pointer}.tag-container>a .content{margin:0 .4em;flex-grow:1;flex-basis:100%;word-break:break-word;overflow-wrap:anywhere}.tag-container>a[data-tagcat="general"] .content{color:unset}.tag-container>a[data-tagcat="style"] .content{color:#ff2020}.tag-container>a[data-tagcat="circle"] .content{color:#0bb}.tag-container>a[data-tagcat="artist"] .content{color:#cc0}.tag-container>a[data-tagcat="character"] .content{color:#0a0}.tag-container>a[data-tagcat="copyright"] .content{color:#d0d}.tag-container>a .tag-icon,.tag-container>a .tag-right{align-self:center}.tag-container>a .count{font-size:.8em;margin-right:.4em}.tag-container>a>*{pointer-events:none}.tag-container>a:not(:hover) span.close{opacity:0}.tag-container>a:not(:hover) span.plus{opacity:0}.tag-container>a.tagselected{background-color:#400808ff}.tag-container>a.tag_hide{display:none}.comment-container{max-width:500px}.comment-container article.comment{overflow:hidden;margin:.4em .4em;padding:.4em .4em}.comment-container article.comment p,.comment-container article.comment textarea{margin:0}.comment-container article.comment p.deleted,.comment-container article.comment textarea.deleted{color:red}.comment-container article.comment .comment-head{display:flex;justify-content:space-between;align-items:baseline}.comment-container article.comment .comment-head h4{margin:0;padding:.4em}.comment-container article.comment .comment-head a,.comment-container article.comment .comment-head label{cursor:pointer}.comment-container article.comment .comment-head .controls{display:flex}.comment-container article.comment .comment-head .controls label>input{display:none}.comment-container article.comment .comment-editform p{padding:.5em}.comment-container article.comment .comment-editform textarea{font-size:inherit;font-family:inherit;border:none}header{display:flex;align-items:baseline;padding:0 10px;background-color:#222}header>a.logo{font-size:2em;margin:6px}@media(max-width:559px){header{position:relative}}header>nav{flex-grow:1;display:flex}header>nav>._overlay{display:none}@media(max-width:559px){header>nav{display:none}header>nav._drop{display:flex;flex-flow:column nowrap;position:absolute;margin:0;top:100%;left:0;right:0;z-index:10;background-color:#111d}header>nav>a,header>nav a#user-menu,header>nav .user_dropdown>a{padding:12px;padding-left:24px}header>nav>a:hover,header>nav>a:active,header>nav a#user-menu:hover,header>nav a#user-menu:active,header>nav .user_dropdown>a:hover,header>nav .user_dropdown>a:active{background-color:#333}header>nav .user::before{content:"";display:block;border-top:1px solid grey;margin:2px 12px}header>nav .user #user-menu{display:block}header>nav .user .user_dropdown{display:flex;flex-flow:column nowrap}header>nav>._overlay{display:block;position:fixed;width:100%;height:100%;z-index:-1;background-color:#0006}html.oh{overflow:hidden}}@media(min-width:560px){header>nav{margin:0 5px;align-items:center}header>nav>*{margin:0 5px;padding:6px 0}header>nav>.user{padding:0;margin-left:auto;margin-right:0;position:relative}header>nav>.user #user-menu{display:block;padding:6px 10px}header>nav>.user .user_dropdown{display:none}header>nav>.user .user_dropdown a{padding:10px}header>nav>.user .user_dropdown a:hover{background-color:#333}header>nav>.user:hover>.user_dropdown{display:flex;flex-flow:column nowrap;position:absolute;margin:0;top:100%;right:0;z-index:10;background-color:#111d}}header>#nav-menu{display:none}@media(max-width:559px){header>#nav-menu{display:block;margin:5px;margin-left:auto;padding:0 2px;align-self:center;font-size:2em;cursor:pointer}}.main-wrap{margin:0 auto;max-width:1300px;padding:8px;padding-top:0;padding-bottom:0;display:flex}@media(min-width:900px){.main-wrap{flex-flow:row nowrap}}@media(max-width:899px){.main-wrap{flex-flow:column nowrap}}@media(max-width:899px){.main-wrap{overflow:visible}}.main-wrap .important-subwrap{display:flex;flex-flow:column nowrap;flex-grow:1;overflow:visible}@media(max-width:899px){.main-wrap .important-subwrap{display:contents}}.main-wrap>section.sidepanel{flex-shrink:0;padding:10px}@media(min-width:900px){.main-wrap>section.sidepanel{width:18rem}}.main-wrap>section.sidepanel article:not(:last-child){margin-bottom:10px}@media(max-width:899px){.main-wrap>section.sidepanel article.tags .tag-container,.main-wrap>section.sidepanel article.post-edit .tag-container{flex-flow:row wrap}}@media(min-width:900px){.main-wrap>section.sidepanel article.tags .tag-container,.main-wrap>section.sidepanel article.post-edit .tag-container{flex-flow:column nowrap;align-items:start}.main-wrap>section.sidepanel article.tags .suggest-dropdown,.main-wrap>section.sidepanel article.post-edit .suggest-dropdown{flex-flow:row wrap}.main-wrap>section.sidepanel article.tags .suggest-dropdown a,.main-wrap>section.sidepanel article.post-edit .suggest-dropdown a{width:100%}}.main-wrap>section.sidepanel article.rating ul{padding:0}.main-wrap>section.sidepanel article.rating ul li{list-style-type:none}.main-wrap>section.sidepanel article.post-desc{display:flex;flex-flow:column nowrap;font-size:.9em}.main-wrap>section.sidepanel article.post-desc .source>a{word-break:break-all}.main-wrap>section.sidepanel article.post-desc>img{display:block;max-width:128px}.main-wrap>section.sidepanel article.sidenav>a{display:block;padding:.3em 1em}@media(min-width:900px){.main-wrap section:not(.sidepanel){width:100%}}.main-wrap section.post-list{overflow:hidden}@media(max-width:559px){.main-wrap section.post-list{margin-left:-8px;margin-right:-8px}}.main-wrap section.post-list .posts{display:flex;flex-flow:row wrap}@media(max-width:899px){.main-wrap section.post-list .posts{margin-left:-8px;margin-right:-8px}}.main-wrap section.post-list .posts::after{content:"";flex:10000 0 350px}.main-wrap section.post-list .posts>figure{position:relative;margin:8px}.main-wrap section.post-list .posts>figure img{display:block;width:100%;height:100%;transition:.2s ease}.main-wrap section.post-list .posts>figure:hover img{opacity:.7}@media(min-width:900px){.main-wrap section.post-single{padding:8px}}@media(max-width:899px){.main-wrap section.post-single{order:-1;margin-bottom:8px}}@media(max-width:559px){.main-wrap section.post-single{margin-left:-8px;margin-right:-8px}}.main-wrap section.post-single img{display:block;max-width:100%}.main-wrap section.comments{padding:10px}.main-wrap section.management-table{overflow-x:auto}.main-wrap section.management-table table{margin:0 auto}.main-wrap section.management-table tr{background-color:#303030}.main-wrap section.management-table tr th,.main-wrap section.management-table tr td{padding:6px 10px}.main-wrap section.management-table tr th{background-color:#606060}.main-wrap section.management-table tr label>input{display:none}.main-wrap section.management-table tr .fa{padding:4px 4px;align-self:center;font-size:1.5em;cursor:pointer}.main-wrap .user-main,.main-wrap .user-comments{flex-grow:1;flex-basis:0;padding:10px}.main-wrap section.manage-profile>.baseform{margin:0 10px;margin-bottom:15px;max-width:500px}.main-wrap .pagin{margin:10px 0;display:flex;flex-flow:row nowrap;justify-content:center}.main-wrap .pagin>a{display:block;background-color:#0005;padding:8px 12px;margin:0 2px}footer{padding:10px;text-align:center}*{box-sizing:border-box}body{margin:0;font-family:Verdana,Geneva,Tahoma,sans-serif;background-color:#222;color:#fff}a{color:#bbb;text-decoration:none}a:hover{color:#909090;text-decoration:none} \ No newline at end of file diff --git a/yadc/static/all.js b/yadc/static/all.js index 4589a32..f886eec 100644 --- a/yadc/static/all.js +++ b/yadc/static/all.js @@ -86,10 +86,11 @@ document.getElementById("user-menu").addEventListener('click', (ev) => { drop.classList.remove("_drop") } }) -function create_selection_tag(tagname) { // CLEAR +function create_selection_tag(tagname, tagcat) { // CLEAR let tag = document.createElement("a") tag.classList.add("tagselected") tag.dataset.tagname = tagname + tag.dataset.tagcat = tagcat tag.insertAdjacentHTML("beforeend", ` @@ -106,10 +107,11 @@ function create_selection_tag(tagname) { // CLEAR } // Suggestions -function create_suggestion_tag(tagname) { // CLEAR +function create_suggestion_tag(tagname, tagcat) { // CLEAR let tag = document.createElement("a") tag.classList.add("tagsuggestion") tag.dataset.tagname = tagname + tag.dataset.tagcat = tagcat tag.insertAdjacentHTML("beforeend", ` @@ -162,7 +164,7 @@ taginputs.forEach(function (tinput) { hid_input.value = val.join(' ').trim() } - function add_selected(tagname) { // 2 references + function add_selected(tagname, tagcat) { // 2 references let predf = predef let sel = selected @@ -173,7 +175,7 @@ taginputs.forEach(function (tinput) { } } - let newtag = create_selection_tag(tagname) + let newtag = create_selection_tag(tagname, tagcat) newtag.addEventListener('click', (event) => { remove_selected(event.target.dataset.tagname) event.preventDefault() @@ -204,7 +206,7 @@ taginputs.forEach(function (tinput) { if (predef) { predef.querySelectorAll("a").forEach(element => { element.addEventListener('click', (event) => { - add_selected(event.target.dataset.tagname) + add_selected(event.target.dataset.tagname, event.target.dataset.tagcat) event.preventDefault() setTimeout(() => suggest_input.focus(), 2) @@ -238,7 +240,7 @@ taginputs.forEach(function (tinput) { suggest_input.removeAttribute('value') // Disable prefill by browser function select_suggestion(tagelement) { - add_selected(tagelement.dataset.tagname) + add_selected(tagelement.dataset.tagname, tagelement.dataset.tagcat) suggest_input.value = '' render_suggestions([]) @@ -259,7 +261,7 @@ taginputs.forEach(function (tinput) { if (i > 5) return if (tagnames.includes(el.content)) return - let sugtag = create_suggestion_tag(el.content) + let sugtag = create_suggestion_tag(el.content, el.category.name) sugtag.addEventListener('click', (event) => { select_suggestion(event.target) diff --git a/yadc/templates/layout/base_sidebar_tags.html b/yadc/templates/layout/base_sidebar_tags.html index 7bcc80d..08caba8 100644 --- a/yadc/templates/layout/base_sidebar_tags.html +++ b/yadc/templates/layout/base_sidebar_tags.html @@ -28,7 +28,7 @@
{% for tag in sel_tags %} - + @@ -43,7 +43,7 @@