// fires after DOM is ready for manipulation document.addEventListener("DOMContentLoaded", function () { setupCommunityNameInput(); setupShowMoreLinks(); }); // fires after all resources have loaded, including stylesheets and js files window.addEventListener("load", function () { setupPostTypeTabs(); // when choosing the type of your new post, store the chosen tab in a hidden field so the backend knows which fields to check setupHideButtons(); }); function setupShowMoreLinks() { const comments = document.querySelectorAll('.comment'); comments.forEach(comment => { const content = comment.querySelector('.comment_body'); if (content && content.clientHeight > 400) { content.style.overflow = 'hidden'; content.style.maxHeight = '400px'; const showMoreLink = document.createElement('a'); showMoreLink.classList.add('show-more'); showMoreLink.classList.add('hidable'); showMoreLink.innerHTML = ''; showMoreLink.href = '#'; showMoreLink.addEventListener('click', function(event) { event.preventDefault(); content.classList.toggle('expanded'); if (content.classList.contains('expanded')) { content.style.overflow = 'visible'; content.style.maxHeight = ''; showMoreLink.innerHTML = ''; } else { content.style.overflow = 'hidden'; showMoreLink.innerHTML = ''; } }); content.insertAdjacentElement('afterend', showMoreLink); } }); } function setupCommunityNameInput() { var communityNameInput = document.getElementById('community_name'); if (communityNameInput) { communityNameInput.addEventListener('keyup', function() { var urlInput = document.getElementById('url'); urlInput.value = titleToURL(communityNameInput.value); }); } } function setupPostTypeTabs() { const tabEl = document.querySelector('#discussion-tab') if(tabEl) { tabEl.addEventListener('show.bs.tab', event => { document.getElementById('type').value = 'discussion'; }); } const tabE2 = document.querySelector('#link-tab') if(tabE2) { tabE2.addEventListener('show.bs.tab', event => { document.getElementById('type').value = 'link'; }); } const tabE3 = document.querySelector('#image-tab') if(tabE3) { tabE3.addEventListener('show.bs.tab', event => { document.getElementById('type').value = 'image'; }); } const tabE4 = document.querySelector('#poll-tab') if(tabE4) { tabE4.addEventListener('show.bs.tab', event => { document.getElementById('type').value = 'poll'; }); } } function setupHideButtons() { const hideEls = document.querySelectorAll('.hide_button'); hideEls.forEach(hideEl => { let isHidden = false; hideEl.addEventListener('click', event => { event.preventDefault(); const parentElement = hideEl.parentElement; const hidables = parentElement.querySelectorAll('.hidable'); hidables.forEach(hidable => { hidable.style.display = isHidden ? 'block' : 'none'; }); // Toggle the content of hideEl if (isHidden) { hideEl.innerHTML = "[-] hide"; } else { hideEl.innerHTML = "[+] show"; } isHidden = !isHidden; // Toggle the state }); }); } function titleToURL(title) { // Convert the title to lowercase and replace spaces with hyphens return title.toLowerCase().replace(/\s+/g, '-'); }