diff --git a/.gitignore b/.gitignore index 6b44da956590a17c07f936d76227a3fdc2ddba8a..a67826d271424536013a3b7df887d810e20b9328 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,5 @@ bjcp-2015-styleguide-de.xml bjcp-2015-styleguide-orig.xml bjcp-2015-styleguide-de.html bjcp-2015-styleguide-orig.html -web/edit.html cache/ orig/ diff --git a/web/bjcp-styleguide-new.css b/web/bjcp-styleguide-new.css deleted file mode 100644 index cdd6f3f4d8da4c3548ab6c1db0e52e26614022c3..0000000000000000000000000000000000000000 --- a/web/bjcp-styleguide-new.css +++ /dev/null @@ -1,328 +0,0 @@ - -styleguide { - font-family: Helvetica, Arial, Geneva, sans-serif; -} - -styleguide chapter p, styleguide chapter h1, styleguide chapter h2, styleguide chapter h3, styleguide chapter h4, styleguide chapter ol, styleguide chapter ul, styleguide chapter table { - margin-left: 1em; -} - -/* the following rules are copied from standard html rules */ - -styleguide p { - display: block; - margin-block-start: 1em; - margin-block-end: 1em; - margin-inline-start: 0px; - margin-inline-end: 0px; -} - -styleguide h2 { - display: block; - font-size: 1.5em; - margin-block-start: 0.83em; - margin-block-end: 0.83em; - margin-inline-start: 0px; - margin-inline-end: 0px; - font-weight: bold; -} - -styleguide h3 { - display: block; - font-size: 1.17em; - margin-block-start: 1em; - margin-block-end: 1em; - margin-inline-start: 0px; - margin-inline-end: 0px; - font-weight: bold; -} - -styleguide h4 { - display: block; - margin-block-start: 1.33em; - margin-block-end: 1.33em; - margin-inline-start: 0px; - margin-inline-end: 0px; - font-weight: bold; -} - -styleguide ol { - display: block; - list-style-type: decimal; - margin-block-start: 1em; - margin-block-end: 1em; - margin-inline-start: 0px; - margin-inline-end: 0px; - padding-inline-start: 40px; -} - -styleguide ul { - display: block; - list-style-type: disc; - margin-block-start: 1em; - margin-block-end: 1em; - margin-inline-start: 0px; - margin-inline-end: 0px; - padding-inline-start: 40px; -} - -styleguide li { - display: list-item; - text-align: -webkit-match-parent; -} - -styleguide table { - white-space: normal; - line-height: normal; - font-weight: normal; - font-size: medium; - font-variant-ligatures: normal; - font-variant-caps: normal; - font-variant-east-asian: normal; - font-variant-position: normal; - font-style: normal; - color: -webkit-text; - text-align: start; - display: table; - border-collapse: separate; - -webkit-border-horizontal-spacing: 2px; - -webkit-border-vertical-spacing: 2px; - border-top-color: gray; -} - -styleguide tbody { - display: table-row-group; - vertical-align: middle; - border-top-color: inherit; - border-right-color: inherit; - border-bottom-color: inherit; - border-left-color: inherit; -} - -styleguide tr { - display: table-row; - vertical-align: inherit; - border-top-color: inherit; - border-right-color: inherit; - border-bottom-color: inherit; - border-left-color: inherit; -} - -styleguide td { - display: table-cell; - vertical-align: inherit; -} - -/* end of copied css */ - - -styleguide p.list-item { - list-style-type: decimal; -} - -styleguide category, styleguide subcategory { - margin-top:1em; - margin-bottom:1em; - margin-left:0em; - display: list-item; - list-style-position: inside; -} - -styleguide p { - margin-top:1em; -} - -styleguide b { - font-weight: bold; -} - -styleguide i { - font-style: italic; -} - -styleguide u { - text-decoration: underline; -} - -styleguide category:before, styleguide subcategory:before { - content: attr(id); -} -styleguide name { - display: inline-block; - margin-bottom:1em; -} -styleguide description { - margin-left:1em; - display: block; -} -styleguide description p { - margin-top: 0; -} - -styleguide overall-impression:before { - content: "Overall Impression: "; -} -styleguide aroma:before { - content: "Aroma: "; -} -styleguide appearance:before { - content: "Appearance: "; -} -styleguide flavor:before { - content: "Flavor: "; -} -styleguide mouthfeel:before { - content: "Mouthfeel: "; -} -styleguide comments:before { - content: "Comments: "; -} -styleguide history:before { - content: "History: "; -} -styleguide characteristic-ingredients:before { - content: "Characteristic Ingredients: "; -} -styleguide style-comparison:before { - content: "Style Comparison: "; -} -styleguide entry-instructions:before { - content: "Entry Instructions: "; -} -styleguide specs:before { - content: "Vital Statistics: "; -} -styleguide commercial-examples:before { - content: "Commercial Examples: "; -} -styleguide tags:before { - content: "Tags: "; -} -styleguide strength-classifications:before { - content: "Strength Classifications: "; -} - -styleguide[lang="de"] overall-impression:before { - content: "Gesamteindruck: "; -} -styleguide aroma:before { - content: "Geruch: "; -} -styleguide appearance:before { - content: "Erscheinungsbild: "; -} -styleguide flavor:before { - content: "Geschmack: "; -} -styleguide mouthfeel:before { - content: "Mundgefühl: "; -} -styleguide comments:before { - content: "Kommentierung: "; -} -styleguide history:before { - content: "Geschichte: "; -} -styleguide characteristic-ingredients:before { - content: "Charakteristische Zutaten: "; -} -styleguide style-comparison:before { - content: "Stilvergleich: "; -} -styleguide entry-instructions:before { - content: "Einreichungshinweise: "; -} -styleguide specs:before { - content: "Technische Daten: "; -} -styleguide commercial-examples:before { - content: "Kommerzielle Beispiele: "; -} -styleguide tags:before { - content: "Tags: "; -} -styleguide strength-classifications:before { - content: "Stärkeklassifikation: "; -} - -styleguide overall-impression, -styleguide aroma, -styleguide appearance, -styleguide flavor, -styleguide mouthfeel, -styleguide comments, -styleguide history, -styleguide characteristic-ingredients, -styleguide style-comparison, -styleguide specs, -styleguide entry-instructions, -styleguide commercial-examples, -styleguide tags, -styleguide strength-classifications { - position: relative; - margin-left: 1em; - display: block; -} -styleguide overall-impression:before, -styleguide aroma:before, -styleguide appearance:before, -styleguide flavor:before, -styleguide mouthfeel:before, -styleguide comments:before, -styleguide history:before, -styleguide characteristic-ingredients:before, -styleguide style-comparison:before, -styleguide specs:before, -styleguide entry-instructions:before, -styleguide commercial-examples:before, -styleguide tags:before, -styleguide strength-classifications:before { - font-weight: bold; -} - -styleguide specs { - display: block; - padding: 1px; -} -styleguide specs * { - font-size: 0.8em; - width: 100px; -} - -styleguide specs ibu:before { - content: "IBU: " attr(min) " – " attr(max); -} -styleguide specs srm:before { - content: "SRM: " attr(min) " – " attr(max); -} -styleguide specs og:before { - content: "OG: " attr(min) " – " attr(max); -} -styleguide specs fg:before { - content: "FG: " attr(min) " – " attr(max); -} -styleguide specs abv:before { - content: "ABV: " attr(min) " – " attr(max) "%"; -} -styleguide specs ibu, styleguide specs srm, styleguide specs og, styleguide specs fg, styleguide specs abv { - border: solid 1px black; - width: 110px; - padding: 1px; - display: inline-block; -} -/* -styleguide specs div { - display: inline-block; -} -styleguide specs div * { - padding: 1px 4px; - border: 1px solid; - display: inline-block; - width: 9em; -} -*/ - - - - - diff --git a/web/edit-new.css b/web/edit-new.css deleted file mode 100644 index 8ff349d575ffe921cc8703da396a4feb439efef4..0000000000000000000000000000000000000000 --- a/web/edit-new.css +++ /dev/null @@ -1,129 +0,0 @@ - -.pell-content{ - border-bottom: 1px solid black; -} - -div#editor button[title="save"], -div#editor button[title="cancel"] { - width: 70px; -} -div#editor { - display: none; - position: fixed; - width: 100%; - top: 0; - left: 0; - right: 0; - text-align: center; - font-family: Helvetica, Arial, Geneva, sans-serif; -} -div#editor-inner { - background-color: white; - pointer-events: all; - text-align: left; - margin: 50 auto; - padding: 5px; - width: 80%; - z-index: 2; - border: 2px solid black; - background: #ddd; -} -div#editor-inner input { - background: white; -} -div#markup { - font-family: courier; -} -div#original { - margin:10px; -} - -nav, *[onclick] { - cursor: pointer; -} - -styleguide[orig="true"] * { - display:none; -} - - - - - - - -styleguide category:before, styleguide subcategory:before { - white-space: pre; - content: " " attr(id); -} - -styleguide name { - display: inline-block; - margin-bottom:1em; -} - -styleguide chapter, styleguide category, styleguide subcategory { - margin-top:1em; - margin-bottom:1em; - margin-left:0em; - display: block; -} -styleguide category.collapsed, styleguide subcategory.collapsed { - height: 1.3em; - overflow: hidden; -} -styleguide chapter.collapsed { - height: 1.3em; - overflow: hidden; - padding: 0px; -} -styleguide category.collapsed subcategory, styleguide subcategory.collapsed subcategory { - display: none; -} - -styleguide name { - margin-left:1em; -} - -styleguide h2 { - margin-top: 0px; - margin-bottom: 0px; -} - -styleguide h2 { font-size: large; } -styleguide h3 { font-size: medium; } -styleguide h4 { font-size: small; } - -styleguide nav { - display:inline-block; - position: absolute; - left:5px; - overflow: hidden; - margin-left:0em; - width:20px; - height:18px; - transform: rotate(0deg); - transition: -webkit-transform 0.3s cubic-bezier(0.19, 1, 0.22, 1); - transition: transform 0.3s cubic-bezier(0.19, 1, 0.22, 1); - background-position: center; - background-size: 0.75rem auto; - background-repeat: no-repeat; - background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 320 512%27%3E%3Cpath fill=%27%23003f57%27 d=%27M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z%27/%3E%3C/svg%3E"); -} - -styleguide chapter.collapsed nav, styleguide category.collapsed nav, styleguide subcategory.collapsed nav { - transform: rotate(-90deg); -} - -styleguide *[source="original"] { - background-color: #ffd0d0; -} -styleguide *[source="lang-file"] { - background-color: #dfffdf; -} -styleguide *[source="this-session"] { - background-color: #b0ffb0; -} -styleguide nav:not([todo="0"]) { - background-color: #ffb0b0; -} diff --git a/web/edit-new.js b/web/edit-new.js deleted file mode 100644 index 53f691c3e529583cd70588b9d106e7eeb11a8e95..0000000000000000000000000000000000000000 --- a/web/edit-new.js +++ /dev/null @@ -1,231 +0,0 @@ - -const editor = document.getElementById("editor"); -const pell = window.pell; -const pelleditor = document.getElementById("pelleditor"); -const original = document.getElementById("original"); -const markup = document.getElementById("markup"); -const render = document.getElementById("render"); -const author = document.getElementById("author"); -const editstyleid = document.getElementById("editstyleid"); -const editstylename = document.getElementById("editstylename"); -const editelemname = document.getElementById("editelemname"); -const lastdate = document.getElementById("lastdate"); -const lastauthor = document.getElementById("lastauthor"); - -var edit_id; -var edit_element; -var element_name; - -pell.init({ - element: pelleditor, - defaultParagraphSeparator: "p", - actions: [ - 'bold', - 'italic', - 'underline', - { - name: 'link', - result: () => { - const idref = window.prompt('Enter the target category ID'); - if (idref) { - var selection = document.getSelection(); - if (selection == "") { - text = window.prompt('Enter visible link text'); - pell.exec('insertHTML', '<a href="#' + idref + '">' + text + '</a>'); - } else { - pell.exec('createLink', "#" + idref); - } - } - } - }, - { - name: 'save', - icon: '<div style="background-color:pink;">save</div>', - title: 'save', - result: () => { - - text = pelleditor.content.innerHTML; - text = text.replace(/ /g, " "); - if (element_name != "description") { - text = text.replace(/<p>/g, " "); - text = text.replace(/<\/p>/g, " "); - } - text = text.replace(/<br>/g, " "); - text = text.replace(/\n/g,""); - text = text.replace(/ */g, " "); - text = text.replace(/^ */,""); - text = text.replace(/ *$/,""); - - var xhr = new XMLHttpRequest(); - - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - editor.style.display = "none"; - edit_element.innerHTML = text; - edit_element.setAttribute("date", "today"); - edit_element.setAttribute("author", "you"); - edit_element.setAttribute("addr", "local"); - edit_element.setAttribute("source", "this-session"); - } - } - - user = author.value; - xhr.open('POST', "save.cgi?id=" + edit_id + "&elem=" + element_name + "&user=" + user, true); - xhr.setRequestHeader('Content-Type','text/xml; charset=UTF-8'); - xhr.responseType = "text"; - xhr.send(text); - } - }, - { - name: 'cancel', - icon: '<div style="background-color:pink;">cancel</div>', - title: 'cancel', - result: () => { - editor.style.display = "none"; - } - }, - ], - onChange: (html) => { - text = html; - text = text.replace(/ /g, " "); - if (element_name != "description") { - text = text.replace(/<p>/g, " "); - text = text.replace(/<\/p>/g, " "); - } - text = text.replace(/<br>/g, " "); - text = text.replace(/ */g, " "); - text = text.replace(/^ */,""); - text = text.replace(/ *$/,""); - if (markup) { - markup.innerText = text; - } - if (render) { - render.innerHTML = text; - } - } -}) - - - -var styleguide; -var styleuide_orig; -var styleguide_node; - - - -// load styleguide and trigger rendering -var xhr1 = new XMLHttpRequest(); -xhr1.onreadystatechange = function() { - if (xhr1.readyState === 4) { - styleguide = xhr1.responseXML.querySelector("styleguide"); - renderStyleguide(styleguide); - } -} -xhr1.open('GET', document.querySelector('link[rel="styleguide"]').href, true); -xhr1.setRequestHeader('Content-Type','text/xml; charset=UTF-8'); -xhr1.responseType = "document"; -xhr1.send(); - -// load styleguide_orig -var xhr2 = new XMLHttpRequest(); -xhr2.onreadystatechange = function() { - if (xhr2.readyState === 4) { - styleguide_orig = xhr2.responseXML.querySelector("styleguide"); - } -} -xhr2.open('GET', document.querySelector('link[rel="styleguide-orig"]').href, true); -xhr2.setRequestHeader('Content-Type','text/xml; charset=UTF-8'); -xhr2.responseType = "document"; -xhr2.send(); - - -function recalcTodo() { - var parts = styleguide_node.querySelectorAll("chapter, category, subcategory"); - for (var i = 0; i < parts.length; i++) { - var nav = parts[i].getElementsByTagName("nav")[0]; - var originals = parts[i].querySelectorAll('*[source="original"]'); - nav.setAttribute("todo", originals.length); - } -} - -function renderStyleguide(styleguide) { - - styleguide_node = document.importNode(styleguide, true); - var editor = document.querySelector("div[id='editor']"); - editor.parentNode.insertBefore(styleguide_node, editor); - - var parts = styleguide_node.querySelectorAll("name, description, overall-impression, aroma, appearance, flavor, mouthfeel, comments, history, characteristic-ingredients, style-comparison, entry-instructions, commercial-examples"); - for (var i = 0; i < parts.length; i++) { - parts[i].addEventListener("click", function() { - edit_element = this; - edit_id = edit_element.parentNode.getAttribute("id"); - element_name = edit_element.tagName.toLowerCase(); - orig_record = styleguide_orig.querySelector("*[id='" + edit_id + "']"); - orig_element = orig_record.querySelector(element_name); - orig_record_name = orig_record.querySelector("name").childNodes[0].nodeValue; - editlastdate = edit_element.getAttribute("date"); - editlastauthor = edit_element.getAttribute("author"); - text = edit_element.innerHTML; - text = text.replace(/^ */,""); - text = text.replace(/ *$/,""); - text = text.replace(/ */g, " "); - if (element_name != "description") { - text = text.replace(/<p>/g, " "); - text = text.replace(/<\/p>/g, " "); - } - pelleditor.content.innerHTML = text; - if (lastdate && lastauthor) { - text = "last updated by " + lastauthor + " on " + lastdate; - } else { - text = "" - } - editstyleid.innerText = edit_id ? edit_id : "-"; - editstylename.innerText = orig_record_name ? orig_record_name : "-"; - editelemname.innerText = element_name ? element_name : "-"; - lastdate.innerText = editlastdate ? editlastdate : "original"; - lastauthor.innerText = editlastauthor ? editlastauthor : "original"; - if (orig_element) { - original.innerHTML = orig_element.innerHTML; - } - if (markup) { - markup.innerText = edit_element.innerHTML; - } - if (render) { - render.innerHTML = edit_element.innerHTML; - } - editor.style.display = "block"; - pelleditor.content.focus(); - }); - } - - var parts = styleguide_node.querySelectorAll("chapter, category, subcategory"); - for (var i = 0; i < parts.length; i++) { - - var nav = document.createElement("nav"); - parts[i].insertBefore(nav, parts[i].childNodes[0]); - - nav.addEventListener("dblclick", function() { - if (this.parentNode.classList.contains("collapsed")) { - var parts = document.querySelectorAll("category, subcategory"); - for (var i = 0; i < parts.length; i++) { - parts[i].classList.remove("collapsed"); - } - } else { - var parts = document.querySelectorAll("category, subcategory"); - for (var i = 0; i < parts.length; i++) { - parts[i].classList.add("collapsed"); - } - } - }); - - nav.addEventListener("click", function() { - this.parentNode.classList.toggle("collapsed"); - }); - - parts[i].classList.add("collapsed"); - - } - - recalcTodo(); -} - diff --git a/web/edit.css b/web/edit.css index 3631c81b335f07422f7b2057ed1c00833c7111a0..8ff349d575ffe921cc8703da396a4feb439efef4 100644 --- a/web/edit.css +++ b/web/edit.css @@ -38,11 +38,11 @@ div#original { margin:10px; } -*[onclick] { +nav, *[onclick] { cursor: pointer; } -*[orig='true'] { +styleguide[orig="true"] * { display:none; } diff --git a/web/edit-new.html b/web/edit.html similarity index 100% rename from web/edit-new.html rename to web/edit.html diff --git a/web/edit.js b/web/edit.js index 185a9dd062c73ced406656434e29fb9153829381..53f691c3e529583cd70588b9d106e7eeb11a8e95 100644 --- a/web/edit.js +++ b/web/edit.js @@ -1,5 +1,4 @@ -const body = document.getElementsByTagName("body")[0]; const editor = document.getElementById("editor"); const pell = window.pell; const pelleditor = document.getElementById("pelleditor"); @@ -13,8 +12,9 @@ const editelemname = document.getElementById("editelemname"); const lastdate = document.getElementById("lastdate"); const lastauthor = document.getElementById("lastauthor"); -var editelem; -var tagname; +var edit_id; +var edit_element; +var element_name; pell.init({ element: pelleditor, @@ -43,7 +43,37 @@ pell.init({ icon: '<div style="background-color:pink;">save</div>', title: 'save', result: () => { - dosave(); + + text = pelleditor.content.innerHTML; + text = text.replace(/ /g, " "); + if (element_name != "description") { + text = text.replace(/<p>/g, " "); + text = text.replace(/<\/p>/g, " "); + } + text = text.replace(/<br>/g, " "); + text = text.replace(/\n/g,""); + text = text.replace(/ */g, " "); + text = text.replace(/^ */,""); + text = text.replace(/ *$/,""); + + var xhr = new XMLHttpRequest(); + + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + editor.style.display = "none"; + edit_element.innerHTML = text; + edit_element.setAttribute("date", "today"); + edit_element.setAttribute("author", "you"); + edit_element.setAttribute("addr", "local"); + edit_element.setAttribute("source", "this-session"); + } + } + + user = author.value; + xhr.open('POST', "save.cgi?id=" + edit_id + "&elem=" + element_name + "&user=" + user, true); + xhr.setRequestHeader('Content-Type','text/xml; charset=UTF-8'); + xhr.responseType = "text"; + xhr.send(text); } }, { @@ -51,140 +81,151 @@ pell.init({ icon: '<div style="background-color:pink;">cancel</div>', title: 'cancel', result: () => { - docancel(); + editor.style.display = "none"; } }, ], onChange: (html) => { - x = html; - x = x.replace(/ /g, " "); - if (tagname != "description") { - x = x.replace(/<p>/g, " "); - x = x.replace(/<\/p>/g, " "); + text = html; + text = text.replace(/ /g, " "); + if (element_name != "description") { + text = text.replace(/<p>/g, " "); + text = text.replace(/<\/p>/g, " "); } - x = x.replace(/<br>/g, " "); - x = x.replace(/ */g, " "); - x = x.replace(/^ */,""); - x = x.replace(/ *$/,""); + text = text.replace(/<br>/g, " "); + text = text.replace(/ */g, " "); + text = text.replace(/^ */,""); + text = text.replace(/ *$/,""); if (markup) { - markup.innerText = x; + markup.innerText = text; } if (render) { - render.innerHTML = x; + render.innerHTML = text; } } }) -function doedit(elem) { - editid = elem.parentNode.getAttribute("id"); - editname = elem.parentNode.getElementsByTagName("name")[1].innerText; - editelem = elem; - tagname = elem.tagName.toLowerCase(); - editlastdate = elem.getAttribute("date"); - editlastauthor = elem.getAttribute("author"); - t = elem.innerHTML; - t = t.replace(/^ */,""); - t = t.replace(/ *$/,""); - t = t.replace(/ */g, " "); - if (tagname != "description") { - t = t.replace(/<p>/g, " "); - t = t.replace(/<\/p>/g, " "); - } - pelleditor.content.innerHTML = t; - origelem = elem.nextSibling; - if (lastdate && lastauthor) { - text = "last updated by " + lastauthor + " on " + lastdate; - } else { - text = "" - } - editstyleid.innerText = editid ? editid : "-"; - editstylename.innerText = editname ? editname : "-"; - editelemname.innerText = tagname ? tagname : "-"; - lastdate.innerText = editlastdate ? editlastdate : "original"; - lastauthor.innerText = editlastauthor ? editlastauthor : "original"; - if (origelem) { - original.innerHTML = origelem.innerHTML; - } - if (markup) { - markup.innerText = elem.innerHTML; - } - if (render) { - render.innerHTML = elem.innerHTML; - } - editor.style.display = "block"; - pelleditor.content.focus(); - -} -function docancel() { - editor.style.display = "none"; -} -function dosave() { +var styleguide; +var styleuide_orig; +var styleguide_node; - x = pelleditor.content.innerHTML; - x = x.replace(/ /g, " "); - if (tagname != "description") { - x = x.replace(/<p>/g, " "); - x = x.replace(/<\/p>/g, " "); - } - x = x.replace(/<br>/g, " "); - x = x.replace(/\n/g,""); - x = x.replace(/ */g, " "); - x = x.replace(/^ */,""); - x = x.replace(/ *$/,""); - - var xhr = new XMLHttpRequest(); - - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - editor.style.display = "none"; - editelem.innerHTML = x; - editelem.setAttribute("date", "today"); - editelem.setAttribute("author", "you"); - editelem.setAttribute("addr", "local"); - editelem.setAttribute("source", "this-session"); - } - } - user = author.value; - xhr.open('POST', "save.cgi?id=" + editid + "&elem=" + tagname + "&user=" + user, true); - xhr.setRequestHeader('Content-Type','text/xml; charset=UTF-8'); - xhr.responseType = "text"; - xhr.send(x); +// load styleguide and trigger rendering +var xhr1 = new XMLHttpRequest(); +xhr1.onreadystatechange = function() { + if (xhr1.readyState === 4) { + styleguide = xhr1.responseXML.querySelector("styleguide"); + renderStyleguide(styleguide); + } +} +xhr1.open('GET', document.querySelector('link[rel="styleguide"]').href, true); +xhr1.setRequestHeader('Content-Type','text/xml; charset=UTF-8'); +xhr1.responseType = "document"; +xhr1.send(); + +// load styleguide_orig +var xhr2 = new XMLHttpRequest(); +xhr2.onreadystatechange = function() { + if (xhr2.readyState === 4) { + styleguide_orig = xhr2.responseXML.querySelector("styleguide"); + } +} +xhr2.open('GET', document.querySelector('link[rel="styleguide-orig"]').href, true); +xhr2.setRequestHeader('Content-Type','text/xml; charset=UTF-8'); +xhr2.responseType = "document"; +xhr2.send(); + + +function recalcTodo() { + var parts = styleguide_node.querySelectorAll("chapter, category, subcategory"); + for (var i = 0; i < parts.length; i++) { + var nav = parts[i].getElementsByTagName("nav")[0]; + var originals = parts[i].querySelectorAll('*[source="original"]'); + nav.setAttribute("todo", originals.length); + } } +function renderStyleguide(styleguide) { + + styleguide_node = document.importNode(styleguide, true); + var editor = document.querySelector("div[id='editor']"); + editor.parentNode.insertBefore(styleguide_node, editor); + + var parts = styleguide_node.querySelectorAll("name, description, overall-impression, aroma, appearance, flavor, mouthfeel, comments, history, characteristic-ingredients, style-comparison, entry-instructions, commercial-examples"); + for (var i = 0; i < parts.length; i++) { + parts[i].addEventListener("click", function() { + edit_element = this; + edit_id = edit_element.parentNode.getAttribute("id"); + element_name = edit_element.tagName.toLowerCase(); + orig_record = styleguide_orig.querySelector("*[id='" + edit_id + "']"); + orig_element = orig_record.querySelector(element_name); + orig_record_name = orig_record.querySelector("name").childNodes[0].nodeValue; + editlastdate = edit_element.getAttribute("date"); + editlastauthor = edit_element.getAttribute("author"); + text = edit_element.innerHTML; + text = text.replace(/^ */,""); + text = text.replace(/ *$/,""); + text = text.replace(/ */g, " "); + if (element_name != "description") { + text = text.replace(/<p>/g, " "); + text = text.replace(/<\/p>/g, " "); + } + pelleditor.content.innerHTML = text; + if (lastdate && lastauthor) { + text = "last updated by " + lastauthor + " on " + lastdate; + } else { + text = "" + } + editstyleid.innerText = edit_id ? edit_id : "-"; + editstylename.innerText = orig_record_name ? orig_record_name : "-"; + editelemname.innerText = element_name ? element_name : "-"; + lastdate.innerText = editlastdate ? editlastdate : "original"; + lastauthor.innerText = editlastauthor ? editlastauthor : "original"; + if (orig_element) { + original.innerHTML = orig_element.innerHTML; + } + if (markup) { + markup.innerText = edit_element.innerHTML; + } + if (render) { + render.innerHTML = edit_element.innerHTML; + } + editor.style.display = "block"; + pelleditor.content.focus(); + }); + } + var parts = styleguide_node.querySelectorAll("chapter, category, subcategory"); + for (var i = 0; i < parts.length; i++) { - -var l = document.querySelectorAll("chapter, category, subcategory"); -for (var i = 0; i < l.length; i++) { - - nav = document.createElement("nav"); - l[i].insertBefore(nav, l[i].childNodes[0]); + var nav = document.createElement("nav"); + parts[i].insertBefore(nav, parts[i].childNodes[0]); - nav.addEventListener("dblclick", function() { - if (this.parentNode.classList.contains("collapsed")) { - var l = document.querySelectorAll("category, subcategory"); - for (var i = 0; i < l.length; i++) { - l[i].classList.remove("collapsed"); - } - } else { - var l = document.querySelectorAll("category, subcategory"); - for (var i = 0; i < l.length; i++) { - l[i].classList.add("collapsed"); + nav.addEventListener("dblclick", function() { + if (this.parentNode.classList.contains("collapsed")) { + var parts = document.querySelectorAll("category, subcategory"); + for (var i = 0; i < parts.length; i++) { + parts[i].classList.remove("collapsed"); + } + } else { + var parts = document.querySelectorAll("category, subcategory"); + for (var i = 0; i < parts.length; i++) { + parts[i].classList.add("collapsed"); + } } - } - }); + }); - l[i].classList.add("collapsed"); + nav.addEventListener("click", function() { + this.parentNode.classList.toggle("collapsed"); + }); - var o = l[i].querySelectorAll('*[source="original"]'); - nav.setAttribute("todo",o.length); + parts[i].classList.add("collapsed"); + + } - nav.addEventListener("click", function() { - this.parentNode.classList.toggle("collapsed"); - }); + recalcTodo(); }