{"id":3,"date":"2019-05-22T13:58:32","date_gmt":"2019-05-22T13:58:32","guid":{"rendered":"https:\/\/www.macalester.edu\/directory2\/?page_id=3"},"modified":"2023-04-12T16:33:13","modified_gmt":"2023-04-12T16:33:13","slug":"directory","status":"publish","type":"page","link":"https:\/\/www.macalester.edu\/directory\/","title":{"rendered":"Directory"},"content":{"rendered":"<p>Use the search form below to find contact information for departments, offices, faculty, and staff. For web content, use <a href=\"\/search\/\">Site Search<\/a>. For event information, use <a href=\"\/calendar\/search\/\">Event Search<\/a>. Not able to find the department you&#8217;re looking for? Browse the <a href=\"\/directory\/siteindex\/\">A-Z Index<\/a> for a full list.<\/p>\n<section class=\"block-container form\">\n<form id=\"directoryForm\"class=\"form__form\">\n<div class=\"form__field-container form__field-container--text\">\n    <label for=\"q\" class=\"form__text-container\">\n        <span>People and Groups<br\/><small>Search for people and groups by partial name (e.g., chem, julie, julie h).<\/small><\/span>\n        <input name=\"q\" id=\"q\" type=\"text\" class=\"form__input\">\n    <\/label>\n<\/div>\n<div class=\"form__field-container form__field-container--text form__field-container--half\">\n    <label for=\"fn\" class=\"form__text-container\">\n        <span>First name<\/span>\n        <input name=\"fn\" id=\"fn\" type=\"text\" class=\"form__input\">\n    <\/label>\n<\/div>\n<div class=\"form__field-container form__field-container--text form__field-container--half\">\n    <label for=\"ln\" class=\"form__text-container\">\n        <span>Last name<\/span>\n        <input name=\"ln\" id=\"ln\" type=\"text\" class=\"form__input\">\n    <\/label>\n<\/div>\n<div class=\"form__field-container form__field-container--text\">\n    <label for=\"ln\" class=\"form__text-container\">\n        <span>Username<\/span>\n        <input name=\"un\" id=\"un\" type=\"text\" class=\"form__input\">\n    <\/label>\n<\/div>\n<div class=\"form__submit-container\" id=\"directoryFormButtonContainer\">\n    <button class=\"form__submit base-cta-primary action-button\" id=\"directoryFormButton\" type=\"submit\">Search<\/button>\n<\/div>\n<\/form>\n<\/section>\n<div id=\"fullWidthDir\">\n    <div id=\"resultsDiv\">\n    <\/div>\n<\/div>\n\n<script>\n\n    function searchStaff(fn, ln, un) {\n        document.getElementById('fn').value = fn;\n        document.getElementById('ln').value = ln;\n        document.getElementById('un').value = un;\n        document.getElementById('q').value = '';\n        var queryString = getQueryStringFromForm(document.getElementById('directoryForm'));\n            if (queryString) {\n                if (document.getElementById('resultsDiv').innerHTML.trim() == '') {\n                    document.getElementById('resultsDiv').innerHTML = '<span id=\"directoryFormLoadingSpan\" class=\"directory-tab-label\">Loading...<\/span>';\n                }\n                document.getElementById('directoryFormButton').innerHTML = 'Searching...'\n                document.getElementById('directoryFormButton').disabled = true;\n                var oReq = new XMLHttpRequest();\n                oReq.open(\"GET\", \"https:\/\/webapps.macalester.edu\/directorydata\/search\" + queryString);\n                oReq.onload = function () {\n                    document.getElementById('directoryFormButton').scrollIntoView();\n                    document.getElementById('directoryFormButton').disabled = false;\n                    document.getElementById('resultsDiv').innerHTML = oReq.responseText;\n                    document.getElementById('directoryFormButton').innerHTML = 'Search'\n                }\n                oReq.send(null);\n            }\n    }\n    function getQueryStringFromForm(form) {\n            var directorySearchParams = ['q', 'fn', 'ln', 'un'];\n            var queryString = '';\n            var first = true;\n            for (i=0; i<directorySearchParams.length; i++) {\n                var param = directorySearchParams[i];\n                var value = safeGetFormAttr(form, param).value;\n                if (value) {\n                    queryString += first ? '?' : '&';\n                    queryString += param + '=' + value;\n                    if (first) {\n                        first = false;\n                    }\n                }\n            }\n            return queryString;\n        }\n\n        function safeGetFormAttr(form, attr) {\n            var el = form.elements[attr];\n            if (el) {\n                return el;\n            }\n            return {};\n        }\n\n    setTimeout(function(){\n        \n        var form = document.getElementById('directoryForm');\n        \n        let directory_url = \"https:\/\/webapps.macalester.edu\/directorydata\/search\"; \n\n        form.onsubmit = function (event) {\n            event.preventDefault();\n            var queryString = getQueryStringFromForm(this);\n            if (queryString) {\n                if (document.getElementById('resultsDiv').innerHTML.trim() == '') {\n                    document.getElementById('resultsDiv').innerHTML = '<span id=\"directoryFormLoadingSpan\" class=\"directory-tab-label\">Loading...<\/span>';\n                }\n                document.getElementById('directoryFormButton').innerHTML = 'Searching...'\n                document.getElementById('directoryFormButton').disabled = true;\n                var oReq = new XMLHttpRequest();\n                oReq.open(\"GET\", directory_url + queryString);\n                oReq.onload = function () {\n                    document.getElementById('directoryFormButton').disabled = false;\n                    document.getElementById('resultsDiv').innerHTML = oReq.responseText;\n                    document.getElementById('directoryFormButton').innerHTML = 'Search'\n                }\n                oReq.send(null);\n            }\n        }\n\n        \/\/ Alfred: This code block clear other input fields when the\n        \/\/ focus goes to the input field with id=\"q\" \n        var generalInput = document.getElementById('q');\n        generalInput.addEventListener('focus', (event) => {\n            if (generalInput.value == '') {\n                document.getElementById('fn').value = '';\n                document.getElementById('ln').value = '';\n                document.getElementById('un').value = '';\n            }\n        }, false);\n\n        function getQueryStringFromForm(form) {\n            var directorySearchParams = ['q', 'fn', 'ln', 'un'];\n            var queryString = '';\n            var first = true;\n            for (i=0; i<directorySearchParams.length; i++) {\n                var param = directorySearchParams[i];\n                var value = safeGetFormAttr(form, param).value;\n                if (value) {\n                    queryString += first ? '?' : '&';\n                    queryString += param + '=' + value;\n                    if (first) {\n                        first = false;\n                    }\n                }\n            }\n            return queryString;\n        }\n\n        function safeGetFormAttr(form, attr) {\n            var el = form.elements[attr];\n            if (el) {\n                return el;\n            }\n            return {};\n        }\n\n        \/\/ Alfred: This code block is what show the dropdown name suggestion under the input fileds.\n        document.body.addEventListener('click', function(event) {\n            if (event.target.classList.contains('associated-names-drop-button')) {\n                var orgName = event.target.getAttribute('data-entity-name');\n                var namesElement = document.querySelector('ul.entity-associated-people[data-entity-name=\"' + orgName + '\"]');\n                namesElement.classList.toggle('hide');\n                event.target.classList.toggle('icon-downarrowhead');\n                event.target.classList.toggle('icon-rightarrowhead');\n            }\n        });\n    }, 300)\n\n<\/script>","protected":false},"excerpt":{"rendered":"<p>Use the search form below to find contact information for departments, offices, faculty, and staff. For web content, use Site Search. For event information, use Event Search. Not able to find the department you&#8217;re looking for? Browse the A-Z Index for a full list.<\/p>","protected":false},"author":238,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-3","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.macalester.edu\/directory\/wp-json\/wp\/v2\/pages\/3","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.macalester.edu\/directory\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.macalester.edu\/directory\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.macalester.edu\/directory\/wp-json\/wp\/v2\/users\/238"}],"replies":[{"embeddable":true,"href":"https:\/\/www.macalester.edu\/directory\/wp-json\/wp\/v2\/comments?post=3"}],"version-history":[{"count":7,"href":"https:\/\/www.macalester.edu\/directory\/wp-json\/wp\/v2\/pages\/3\/revisions"}],"predecessor-version":[{"id":64,"href":"https:\/\/www.macalester.edu\/directory\/wp-json\/wp\/v2\/pages\/3\/revisions\/64"}],"wp:attachment":[{"href":"https:\/\/www.macalester.edu\/directory\/wp-json\/wp\/v2\/media?parent=3"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}