Tags on this page: add separate buttons for must, may, forbid.

master
voussoir 2020-01-14 16:44:12 -08:00
parent 491e58ecdd
commit 0ef3c7d6bf
2 changed files with 58 additions and 29 deletions

View File

@ -101,7 +101,6 @@ Here is a brief overview of the project to help you learn your way around:
### To do list
- Make the wording between "new", "create", "add"; and "remove", "delete" more consistent.
- User account system, permission levels, private pages.
- Improve the "tags on this page" list. Maybe add separate buttons for must/may/forbid on each.
- Some way for the database to re-identify a file that was moved / renamed (lost & found). Maybe file hash of the first few mb is good enough.
- Debate whether the `UserMixin.login` method should accept usernames or I should standardize the usage of IDs only internally.
- Ability to access user photos by user's ID, not just username.

View File

@ -71,6 +71,12 @@
word-wrap: break-word;
}
#tags_on_this_page_list
{
list-style-type: none;
padding: 0;
}
#right
{
grid-area: right;
@ -295,15 +301,37 @@
<button type="submit" id="search_go_button" class="green_button" value="">Search</button>
</form>
{% if total_tags %}
<span>Tags on this page (click to join query):</span>
<ul>
<h4>Tags on this page:</h4>
<ul id="tags_on_this_page_list">
{% for tag in total_tags %}
<li>{{tag_object.tag_object(
<li>
{{tag_object.tag_object(
tag,
extra_classes="tags_on_this_page",
link='void',
link=None,
onclick="tags_on_this_page_add_must(event, '" + tag.name + "');",
innertext="(+)",
)}}
{{tag_object.tag_object(
tag,
link=None,
onclick="tags_on_this_page_add_may(event, '" + tag.name + "');",
innertext="(~)",
)}}
{{tag_object.tag_object(
tag,
link=None,
onclick="tags_on_this_page_add_forbid(event, '" + tag.name + "');",
innertext="(x)",
)}}
{{tag_object.tag_object(
tag,
link="info",
with_alt_description=True,
)}}</li>
)}}
</li>
{% endfor %}
</ul>
{% endif %}
@ -558,14 +586,8 @@ function submit_search()
window.location.href = url;
return false;
}
function tags_on_this_page_hook()
function tags_on_this_page_add_must(event, tagname)
{
/*
This is hooked onto the tag objects listed under "Found on this page".
Clicking them will add it to your current search query under Musts
*/
var tagname = this.innerHTML.split(/\./);
tagname = tagname[tagname.length-1];
add_searchtag(
input_musts,
tagname,
@ -574,6 +596,26 @@ function tags_on_this_page_hook()
);
return false;
}
function tags_on_this_page_add_may(event, tagname)
{
add_searchtag(
input_mays,
tagname,
inputted_mays,
"search_builder_mays_inputted"
);
return false;
}
function tags_on_this_page_add_forbid(event, tagname)
{
add_searchtag(
input_forbids,
tagname,
inputted_forbids,
"search_builder_forbids_inputted"
);
return false;
}
function tag_input_hook(box, inputted_list, li_class)
{
/*
@ -616,18 +658,6 @@ var inputted_forbids = [];
{% endif %}
{% endfor %}
/* Assign the click handler to "Tags on this page" results. */
var found_on_page = document.getElementsByClassName("tags_on_this_page");
for (var index = 0; index < found_on_page.length; index += 1)
{
var tag_object = found_on_page[index];
if (tag_object.tagName != "A")
{continue}
tag_object.onclick = tags_on_this_page_hook;
}
input_musts.addEventListener("keyup", function(){tag_input_hook(this, inputted_musts, "search_builder_musts_inputted")});
input_mays.addEventListener("keyup", function(){tag_input_hook(this, inputted_mays, "search_builder_mays_inputted")});
input_forbids.addEventListener("keyup", function(){tag_input_hook(this, inputted_forbids, "search_builder_forbids_inputted")});