Zum Inhalt springen

„Wikipedia Diskussion:Lua/Modul/PageTree“ – Versionsunterschied

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 9 Jahren von Kelti in Abschnitt Folding
Inhalt gelöscht Inhalt hinzugefügt
Zeile 147: Zeile 147:
</pre>
</pre>
--[[Benutzer:Kelti|Kelti]] ([[Benutzer Diskussion:Kelti|Diskussion]]) 08:06, 6. Mai 2015 (CEST)
--[[Benutzer:Kelti|Kelti]] ([[Benutzer Diskussion:Kelti|Diskussion]]) 08:06, 6. Mai 2015 (CEST)

Wäre es in Ordnung, für das Speichern des Zustandes des Baums die HTML5-Objekte 'localStorage' oder 'sessionStorage' zu verwenden? --[[Benutzer:Kelti|Kelti]] ([[Benutzer Diskussion:Kelti|Diskussion]]) 11:50, 9. Mai 2015 (CEST)


== Englische Wikipedia ==
== Englische Wikipedia ==

Version vom 9. Mai 2015, 11:51 Uhr

Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch English

Modul: Dokumentation

Folding

Ist es machbar, das Erscheinungsbild des Trees dahingehend zu erweitern, dass - analog zum Directory-Baum eines Dateimanagers - Subtrees zugeklappt und wieder aufgeklappt werden können? Wie könnten die Grundzüge einer Realisierung aussehen? Für das Inhaltsverzeichnis eines Wikibooks wäre das ausgesprochen hilfreich. --Kelti (Diskussion) 18:50, 29. Apr. 2015 (CEST)Beantworten

Einige Infos:
  1. Lua produziert wie auch jede Vorlage statischen Code. Das heißt: das Aussehen jeder einzelnen Seite ist fest vereinbart.
  2. Um dynamische Effekte zu erzielen, müsste zusätzlich ein JavaScript eingesetzt werden.
    • Das ist prinzipiell möglich. Sowas habe ich auch schon längst im Hinterkopf.
    • Dazu müsste jede Seite den vollständigen Baum erhalten, aber die Felder, die momentan noch eingeklappt sind, müssten über ein vom Seitenlink gesondertes Schaltelement sichtbar gemacht werden; oder könnten unsichtbar gemacht werden.
  3. Ein Unterseitensystem wie für Wikibooks ist jetzt schon durchaus möglich.
  4. Es lässt sich auch von einem Bot generieren; Wikipedia:Technik/Sitemap kommt von diesem Bot.
VG --PerfektesChaos 19:25, 29. Apr. 2015 (CEST)Beantworten

Hier eine Beispiel-Seite, die mittels eines Javascriptes das gewünschte Erscheinungsbild erzeugt. Solche Seiten können vom Modul PageTree oder von einem Template erzeugt und dann in diversen Seiten eingebunden werden. Es fehlt allerdings noch ein wichtiges Detail: wie kann der aktuelle Zustand des Baums (also: welche Subtrees sind eingeklappt und welche nicht) von einer Seite zur nächsten weitergereicht werden? Kann mir jemand auf die Sprünge helfen?


<html>
<head>

<script type="text/javascript">
<!--
function toggleSubtree(p_event) {
/*

  Purpose: Create a look-and-feel which is similar to that of a file manager.

The function toggles the visibility of subtrees by toggling the 'display' propery.
She expects a fix recursive structure of HTML-elements, where subtrees belong to their
preceding 'div' element:

<tree>
  <div>..<a href="...">..</a></div>
  <div>..<a href="...">..</a></div>
  <tree>
    <div>..<a href="...">..</a></div>
    ...
  </tree>
  <div>..<a href="...">..</a></div>
</tree>

Non-leaf-nodes are marked with a little toggling triangle before the link text. This triangles
are part of the HTML, not of a CSS 'before' rule. CSS 'before' rules are not part of Javascript.
Hence they cannot be chanced dynamically.

*/

  // process nothing but click events (mouse and touchscreen)
  if (p_event.type != 'click' && p_event.type != 'dblclick' && p_event.type != 'touchenter') return;

  // click event has 'bubbled up' to its parent TREE element. Get dispatcher of the event.
  var div = p_event.target;

  //  it should be the DIV element
  if (typeof(div) == 'undefined' || div == null || div.tagName != 'DIV') return; 

  // get CData from div element
  text = div.firstChild;
  if (typeof(text) == 'undefined' || text == null || text.nodeType != Node.TEXT_NODE) return; 
  var val = text.nodeValue;

  // do nothing, if it's ' '. This 'div' element has only a link but no subtree
  if (val == '\u00A0') return;

  // navigate to the FOLLOWING 'tree' element
  var subTree = div.nextElementSibling;
  if (typeof(subTree) == 'undefined' || subTree == null || subTree.tagName != 'TREE') return; 

  // perform toggling of the 'display' property of the 'tree' element. Don't use
  // the 'visibility' property. 'visibility' doesn't release the occupied space.
  if (val == '\u25B8') {
    text.nodeValue = '\u25BE';
    subTree.style.display = 'block';
  } else {
    text.nodeValue = '\u25B8';
    subTree.style.display = 'none';
  }
}

//-->
</script>

<style type="text/css">
/*
U+25aa 	BLACK SMALL SQUARE (smaller than the following two)
U+25b8 	BLACK RIGHT-POINTING SMALL TRIANGLE
U+25be 	BLACK DOWN-POINTING SMALL TRIANGLE
*/

tree {
  display: block;
  /* 'relative' is neccessary to get an anchor for the 'a'-elements */
  position: relative;
}
tree tree {
  /* indentation per level */
  margin-left: .7em;
}
div  a {
  /* start position of text (with or without link) */
  position: absolute;
  left: .7em;
  /* the div-element MUST contain any non-whitespace text. Why??? */
}
a {
  /* no underscore for links */
  text-decoration:none;
  color:inherit;
}

</style>
</head>

<body>
  <tree onclick="toggleSubtree(event);" ondblclick="toggleSubtree(event);">
    <div> <a href="www.1.com">Chapter 1, no sub-chapter</a></div>
    <div>&#x25be<a href="www.2.com">Chapter 2</a></div>
    <tree>
      <div> <a href="www.2_1.com">Chapter 2.1</a></div>
      <div> <a href="www.2_2.com">Chapter 2.2</a></div>
      <div> <a href="www.2_3.com">Chapter 2.3</a></div>
      <div>&#x25be<a href="www.2_4.com">Chapter 2.4</a></div>
      <tree>
        <div> <a href="www.2_4_1com">Chapter 2.4.1</a></div>
        <div> <a href="www.2_4_2.com">Chapter 2.4.2</a></div>
        <div>&#x25be<a href="www.2_4_3.com">Chapter 2.4.3</a></div>
        <tree>
          <div> <a href="www.2_4_3_1.com">Chapter 2.4.3.1</a></div>
          <div> <a href="www.2_4_3_2.com">Chapter 2.4.3.2</a></div>
        </tree>
      </tree>
      <div> <a href="www.2_5.com">Chapter 2.5</a></div>
      <div> <a href="www.2_6.com">Chapter 2.6</a></div>
    </tree>
    <div> <a href="www.3.com">Chapter 3</a></div>
    <div>&#x25be<a>Chapter 4 (without introductory text, hence no link)</a></div>
    <tree>
      <div> <a href="www.4_1.com">Chapter 4.1</a></div>
    </tree>
  </tree>
</body>
</html>

--Kelti (Diskussion) 08:06, 6. Mai 2015 (CEST)Beantworten

Wäre es in Ordnung, für das Speichern des Zustandes des Baums die HTML5-Objekte 'localStorage' oder 'sessionStorage' zu verwenden? --Kelti (Diskussion) 11:50, 9. Mai 2015 (CEST)Beantworten

Englische Wikipedia

Warum ist das Modul nicht auf der englischen Wikipedia verfügbar? Gibt es prinzipielle Probleme oder ist es lediglich noch nicht transferiert worden? --Kelti (Diskussion) 18:50, 29. Apr. 2015 (CEST)Beantworten

Warum sollte es dort verfügbar sein?
Der Austausch von Modulen ist nicht so häufig, und viele sind auch nicht internationalisiert geschrieben.
VG --PerfektesChaos 19:25, 29. Apr. 2015 (CEST)Beantworten