simple_blog/common/page_format.js
20xd6 6b8157f551 Initial Commit
Add the basic structure of the site.
2022-06-28 15:27:58 -04:00

136 lines
5.1 KiB
JavaScript

function format_page(){//Set the title of the page based on the main header, <h1>, tag.le != '' )){
if ( document.getElementsByTagName('h1').length !== 0){
document.title = document.getElementsByTagName('h1')[0].innerText;
}
//detect if the page contains code blocks to be highlighted and loads the prisim.js and prism.css files to accomplish this.
code_tag = document.getElementsByTagName('code').length;
if ( code_tag !== 0 ){
var script = document.createElement('script');
var style_sheet = document.createElement('link');
script.type = 'text/javascript';
script.src = '/common/prisim/prism.js';
style_sheet.type = 'text/css';
style_sheet.href = '/common/prisim/prism.css';
style_sheet.rel = 'stylesheet';
document.head.appendChild(script);
document.head.appendChild(style_sheet);
}
if ( document.getElementById("font_btns") ){//Show the font selection buttons.
document.getElementById("font_btns").style.display = 'inline';
var font_size = read_cookie("font_size");
if ( font_size != "" || font_size != "medium" ){
font_set(font_size);
}
}
if ( document.getElementById("search_inputs") ){//Show the search box and button on the tags page.
var search_box = document.getElementById("search_inputs")
search_box.style.display = 'block';
focus_element("tag_sort");
}
if (document.getElementById('modal_gallery')){//Display image modal on pages with this element
var modalEle = document.querySelector(".modal_gal");
var modalImage = document.querySelector(".gallery_img");
var captionText = document.getElementById("modal_img_caption");
Array.from(document.querySelectorAll("img")).forEach(item => {
item.addEventListener("click", event => {
modalEle.style.display = "block";
modalImage.src = event.target.src;
captionText.innerHTML = item.alt;
});
});
document.querySelector(".close_modal").addEventListener("click", () => {
modalEle.style.display = "none";
});
}
}
function font_set(size_to_set){
document.getElementById("article").style.fontSize = size_to_set;
set_cookie("font_size",size_to_set);
}
function focus_element(element_id){
var ele_to_focus = document.getElementById(element_id);
ele_to_focus.focus();
ele_to_focus.select();
}
function tag_search(){
var search_input, filter, tag_list, li, a, i;
search_input = document.getElementById("tag_sort");
filter = search_input.value.toUpperCase();
tag_list = document.getElementById("tag_menu");
li = tag_list.getElementsByTagName("li");
for(i = 0;i < li.length;i++){
a = li[i].innerHTML.toString();
if(a.toUpperCase().indexOf(filter) > -1){
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
function title_search(){
var search_input, filter, tag_list, li_list, ol, a, i;
search_input = document.getElementById("title_sort");
filter = search_input.value.toUpperCase();
tag_list = document.getElementById("tag_menu");
li_list = tag_list.getElementsByTagName("li");
for (i = 0;i < li_list.lentgh;i++){
li_list[i].style.display = "none";
}
ol = tag_list.getElementsByTagName("ol");
for(i = 0;i < ol.length;i++){
a = ol[i].innerHTML.toString();
if(a.toUpperCase().indexOf(filter) > -1){
ol[i].style.display = "list-item";
} else {
ol[i].style.display = "none";
}
}
}
function search_toggle(){
if (document.getElementById("tag_sort")){
document.getElementById("tag_sort").placeholder = "Search Titles";
document.getElementById("tag_sort").onkeyup = function() {title_search()};
document.getElementById("tag_sort").id = "title_sort";
document.getElementById("search_toggle").value = "Search Tags";
document.getElementById("page_title").innerHTML = "Posts by Title";
document.title = "Posts by Title";
focus_element("title_sort");
} else if (document.getElementById("title_sort")){
document.getElementById("title_sort").placeholder = "Search Tags";
document.getElementById("title_sort").onkeyup = function() {tag_search()};
document.getElementById("title_sort").id = "tag_sort";
document.getElementById("search_toggle").value = "Search Titles";
document.getElementById("page_title").innerHTML = "Posts by Tag";
document.title = "Posts by Tag";
focus_element("tag_sort");
}
}
function set_cookie(prop_name, prop_value){
document.cookie = prop_name + "=" + prop_value + ";path=/;SameSite=Strict;";
}
function read_cookie(cname){
let prop_name = cname + '=';
let decoded_cookie = decodeURIComponent(document.cookie);
let split_cookie = decoded_cookie.split(';');
for ( let i = 0; i < split_cookie.length;i++){
let split = split_cookie[i];
while (split.charAt(0) == ' '){
split = split.substring(1);
}
if ( split.indexOf(prop_name) == 0 ){
return split.substring(prop_name.length, split.length);
}
}
return "";
}
function printDiv(divName) {
var printContents = document.getElementById(divName).innerHTML;
w=window.open();
w.document.write(printContents);
w.print();
w.close();
}
window.onload = format_page;