html5/spec-author-view dfn.js,1.1,1.2 patch.anolis,1.3,1.4 style.css,1.7,1.8

Update of /sources/public/html5/spec-author-view
In directory hutz:/tmp/cvs-serv8221

Modified Files:
	dfn.js patch.anolis style.css 
Log Message:
in multipage, only enable dfn pop-ups after user actually clicks a dfn the first time


Index: patch.anolis
===================================================================
RCS file: /sources/public/html5/spec-author-view/patch.anolis,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- patch.anolis	17 Aug 2010 09:52:48 -0000	1.3
+++ patch.anolis	18 Aug 2010 12:42:49 -0000	1.4
@@ -1,6 +1,6 @@
 diff -r 16550726fd0d anolis
 --- a/anolis	Sun Aug 30 16:53:19 2009 -0500
-+++ anolis/anolis	Tue Aug 17 18:29:31 2010 +0900
++++ b/anolis	Wed Aug 18 21:40:56 2010 +0900
 @@ -70,10 +70,10 @@
  
  def getOptParser():
@@ -16,7 +16,7 @@
  
 diff -r 16550726fd0d anolislib/processes/filter.py
 --- a/anolislib/processes/filter.py	Sun Aug 30 16:53:19 2009 -0500
-+++ anolis/anolislib/processes/filter.py	Tue Aug 17 18:29:31 2010 +0900
++++ b/anolislib/processes/filter.py	Wed Aug 18 21:40:56 2010 +0900
 @@ -5,23 +5,4 @@
          return
      selector = cssselect.CSSSelector(kwargs["filter"])
@@ -44,8 +44,8 @@
 +        element.drop_tree()
 diff -r 16550726fd0d anolislib/processes/terms.py
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ anolis/anolislib/processes/terms.py	Tue Aug 17 18:29:31 2010 +0900
-@@ -0,0 +1,328 @@
++++ b/anolislib/processes/terms.py	Wed Aug 18 21:40:56 2010 +0900
+@@ -0,0 +1,330 @@
 +# coding=UTF-8
 +# Copyright (c) 2010 Michael(tm) Smith
 +#
@@ -80,7 +80,7 @@
 +    terms = None
 +
 +    def __init__(self, ElementTree, **kwargs):
-+        self.terms = etree.Element(u"div",{u"class": "index-of-terms"})
++        self.terms = etree.Element(u"div",{u"class": "index-of-terms",u"id": "index-of-terms_contents"})
 +        self.buildTerms(ElementTree, **kwargs)
 +        self.addTerms(ElementTree, **kwargs)
 +
@@ -297,24 +297,26 @@
 +                # attribute; we don't want to duplicate the id, so drop it
 +                if "id" in headingLink.attrib:
 +                    del headingLink.attrib["id"]
-+                # some headings may contain descendants that are <a> links,
-+                # and/or that have id attributeds
-+                embeddedLinks = headingLink.xpath(".//*[@href or @id]")
++                # some headings may contain descendants that are <a> links or
++                # <dfn>s, and/or that have id attributeds
++                embeddedLinks = headingLink.xpath(".//*[self::dfn or @href or @id]")
 +                # we have taken a copy of what was a heading and transformed it
 +                # into a hyperlink, and because it is a hyperlink, we now do not
-+                # want it to itself contain descendant links; so, we un-linkify
-+                # any descendant elements that have @href attributes by turning
-+                # them into @href-less <span>s
++                # want it to itself contain descendant <a> links, nor any <dfn>s, 
++                # so we transform those descendants into <span>s
 +                for descendant in embeddedLinks:
-+                    if "href" in descendant.attrib:
-+                        del descendant.attrib["href"]
-+                        descendant.tag = "span"
-+                    # this descendant might be an <a> element that we added an
-+                    # id attribute to earlier and/or may be a <dfn> that already
-+                    # had an id attribute; but we don't want to duplicate the id
-+                    # attributes here, so drop any id attribute we find
-+                    if "id" in descendant.attrib:
-+                        del descendant.attrib["id"]
++                  if descendant.tag == "a" or descendant.tag == "dfn":
++                      descendant.tag = "span"
++                  # we need to remove any @href attributes left over in any
++                  # descendants that we were <a> links
++                  if "href" in descendant.attrib:
++                      del descendant.attrib["href"]
++                  # this descendant might be an <a> element that we added an
++                  # id attribute to earlier and/or some other element with an ia
++                  # attribute ; but we don't want to duplicate the id attributes
++                  # here, so drop any id attribute we find
++                  if "id" in descendant.attrib:
++                      del descendant.attrib["id"]
 +                return headingLink
 +            elif node.getprevious() == None:
 +                node = node.getparent()

Index: style.css
===================================================================
RCS file: /sources/public/html5/spec-author-view/style.css,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- style.css	17 Aug 2010 20:01:26 -0000	1.7
+++ style.css	18 Aug 2010 12:42:49 -0000	1.8
@@ -73,6 +73,9 @@
 .index-entry ul {
   margin-bottom: 0px;
 }
+dfn {
+  cursor: pointer;
+}
 .dfnPanel p {
   margin-bottom: 3px;
 }
@@ -86,3 +89,6 @@
 pre .dfnPanel {
   white-space: normal;
 }
+html.chapter #index-filecontents {
+  display: none;
+}

Index: dfn.js
===================================================================
RCS file: /sources/public/html5/spec-author-view/dfn.js,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- dfn.js	17 Aug 2010 20:01:26 -0000	1.1
+++ dfn.js	18 Aug 2010 12:42:49 -0000	1.2
@@ -1,30 +1,37 @@
-// dfn.js - makes <dfn> elements link back to all uses of the term.
 // No copyright is asserted on this file.
 
-var dfnLinks;
+var dfnEnabled = false;
 var dfnLinksFile = 'index-of-terms.html';
-function initDfn() {
-  dfnLinks = document.implementation.createDocument(null, 'html', null);
-  if (document.documentElement.className.indexOf("split") != -1) {
-    var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
-    request.onreadystatechange = function () {
-      if (request.readyState == 4) {
-        fileContents = request.responseText;
-        dfnLinks.innerHTML = fileContents;
-      }
-    };
-    try {
-      request.open('GET', dfnLinksFile, true);
-      request.send(null);
-    } catch (e) {
-      console.log(e);
-      return -1;
+var fileContents = document.createElement('div');
+function initDfn(someNode, somePanelDiv) {
+  node = someNode;
+  panelDiv = somePanelDiv;
+  var loading = document.createElement("i");
+  loading.textContent = "(loading...)";
+  panelDiv.appendChild(loading);
+  var request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
+  request.onreadystatechange = function () {
+    if (request.readyState == 4) {
+      fileContents.setAttribute("id","index-filecontents");
+      //fileContents.innerHTML = request.responseText;
+      // the following regex hack is for Gecko, because it seems to otherwise try
+      // to parse parts of <script> and <style> text content from XHR as markup
+      fileContents.innerHTML = request.responseText.replace(/<script(.|\s)*?\/script>/g, '').replace(/<style(.|\s)*?\/style>/g, '');
+      var targetNode = fileContents.querySelector("#"+node.id+"_index");
+      panelDiv.innerHTML = targetNode.innerHTML;
+      panelDiv.removeChild(panelDiv.firstChild);
+      document.body.appendChild(fileContents);
+      document.body.className += " dfnEnabled";
+      dfnEnabled = true;
     }
-  } else {
-    var index = dfnLinks.importNode(document.getElementById("index-of-terms_contents"), true);
-    dfnLinks.documentElement.appendChild(index);
+  };
+  try {
+    request.open('GET', dfnLinksFile, true);
+    request.send(null);
+  } catch (e) {
+    console.log(e);
+    return -1;
   }
-  document.body.className += " dfnEnabled";
 }
 var dfnPanel;
 document.addEventListener('click', dfnShow, false);
@@ -42,10 +49,10 @@
     dfnPanel = null;
   }
   var node = event.target;
-  while (node && (node.nodeType != event.target.ELEMENT_NODE || node.tagName != "DFN"))
+  while (node && (node.nodeType != event.target.ELEMENT_NODE || !node.hasAttribute("id")))
     node = node.parentNode;
-    var panel = document.createElement('div');
-    panel.className = 'dfnPanel';
+  var panel = document.createElement('div');
+  panel.className = 'dfnPanel';
   if (node) {
     var permalinkP = document.createElement('p');
     var permalinkA = document.createElement('a');
@@ -54,12 +61,17 @@
     permalinkP.appendChild(permalinkA);
     panel.appendChild(permalinkP);
     var introP = document.createElement('p');
-    introP.textContent = "Referenced in:";
     panel.appendChild(introP);
     panelDiv = document.createElement('div');
-    if (node.id && dfnLinks) {
-      panelDiv.innerHTML = dfnLinks.getElementById(node.id+"_index").innerHTML;
-      panelDiv.removeChild(panelDiv.firstChild);
+    if (node.id) {
+      introP.textContent = "Referenced in:";
+      if (!dfnEnabled) {
+        initDfn(node, panelDiv);
+      } else {
+        var targetNode = document.getElementById(node.id+"_index");
+        panelDiv.innerHTML = targetNode.innerHTML;
+        panelDiv.removeChild(panelDiv.firstChild);
+      }
       panel.appendChild(panelDiv);
     } else {
       return -1;
@@ -68,4 +80,6 @@
     dfnPanel = panel;
   }
 }
-initDfn();
+if (document.documentElement.className.indexOf("split") == -1) {
+  dfnEnabled = true;
+}

Received on Wednesday, 18 August 2010 12:42:52 UTC