[Libreoffice-commits] dev-tools.git: help3/xhpeditor

Olivier Hallot (via logerrit) logerrit at kemper.freedesktop.org
Sun Jan 12 13:36:16 UTC 2020


 help3/xhpeditor/buttons.php   |  213 +++++++++++++++++++++++++-----------------
 help3/xhpeditor/index.php     |   21 +---
 help3/xhpeditor/xhp2html.js   |    4 
 help3/xhpeditor/xhpeditor.css |   97 +++++++++++++++++--
 4 files changed, 226 insertions(+), 109 deletions(-)

New commits:
commit 87321bdeb812cbb4e1b6bd668156dac03f9d81f8
Author:     Olivier Hallot <olivier.hallot at libreoffice.org>
AuthorDate: Sun Jan 12 10:28:36 2020 -0300
Commit:     Olivier Hallot <olivier.hallot at libreoffice.org>
CommitDate: Sun Jan 12 14:35:58 2020 +0100

    xhpeditor: Add dropdown menu
    
    - Add css-only dropdown menu from W3C
    - Add Help for XHP ref and editor commands
    - Fix header divs on top to display when scrollng
    - Refactor large chunks of page elemets display
    
    Change-Id: Ie173c492a72b9f49200303d99b30544bdfc0d53e
    Reviewed-on: https://gerrit.libreoffice.org/c/dev-tools/+/86636
    Reviewed-by: Olivier Hallot <olivier.hallot at libreoffice.org>
    Tested-by: Olivier Hallot <olivier.hallot at libreoffice.org>

diff --git a/help3/xhpeditor/buttons.php b/help3/xhpeditor/buttons.php
index ead4776..cd90f4e 100644
--- a/help3/xhpeditor/buttons.php
+++ b/help3/xhpeditor/buttons.php
@@ -1,86 +1,129 @@
-<div class="buttonrow">
-    <div class="snip_heading">File:</div>
-    <div class="snip_buttons">Open: <input type="file" id="file-input" accept=".xhp"/></div>
-    <button onclick="download(editor.getValue(),getFileNameFromXML(),'text/xml')" class="snip_buttons">Save local file</button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Edit: </div>
-    <button class="snip_buttons" onclick="editor.undo()">Undo</button>
-    <button class="snip_buttons" onclick="editor.redo()">Redo</button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Document: </div>
-    <button onclick="startNewXHPDoc()" class="snip_buttons">Start new XHP document</button>
-    <button onclick="docHeading()" class="snip_buttons">DocHeading</button>
-    <button onclick="snippet7()" class="snip_buttons"><ahelp></button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Bookmarks: </div>
-    <button onclick="bookmarkValue()" class="snip_buttons">bmk-value</button>
-    <button onclick="bookmarkBranch()" class="snip_buttons">bmk-hid</button>
-    <button onclick="bookmarkIndex()" class="snip_buttons">bmk-index</button>
-    <button onclick="bookmarkNoWidget()" class="snip_buttons">bmk-nowidget</button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Sections: </div>
-    <button onclick="section_div()" class="snip_buttons">Section</button>
-    <button onclick="related_topics()" class="snip_buttons">Related Topics</button>
-    <button onclick="howtoget()" class="snip_buttons">How to get</button>
-    <button onclick="bascode_div()" class="snip_buttons">bascode div</button>
-    <button onclick="pycode_div()" class="snip_buttons">pycode div</button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Tables: </div>
-    <button onclick="table2R3C()" class="snip_buttons">Table Full</button>
-    <button onclick="tableRow()" class="snip_buttons">Table Row</button>
-    <button onclick="tableCell()" class="snip_buttons">Table Cell</button>
-    <button onclick="iconTable()" class="snip_buttons">Icon Table</button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Paragraph: </div>
-    <button onclick="paragraph('paragraph')" class="snip_buttons"><paragraph></button>
-    <button onclick="note()" class="snip_buttons"><note></button>
-    <button onclick="warning()" class="snip_buttons"><warning></button>
-    <button onclick="tip()" class="snip_buttons"><tip></button>
-    <button onclick="bascode_par()" class="snip_buttons">bascode-par</button>
-    <button onclick="pycode_par()" class="snip_buttons">pycode-par</button>
-    <button onclick="image_par()" class="snip_buttons">image-par</button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Characters: </div>
-    <button onclick="emph()" class="snip_buttons"><emph></button>
-    <button onclick="c_menuitem()" class="snip_buttons"><menuitem></button>
-    <button onclick="_input()" class="snip_buttons"><input></button>
-    <button onclick="_literal()" class="snip_buttons"><literal></button>
-    <button onclick="_keystroke()" class="snip_buttons"><keycode></button>
-    <button onclick="_widget()" class="snip_buttons"><widget></button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Headings:</div>
-    <button onclick="heading('1')" class="snip_buttons"><H1></button>
-    <button onclick="heading('2')" class="snip_buttons"><H2></button>
-    <button onclick="heading('3')" class="snip_buttons"><H3></button>
-    <button onclick="heading('4')" class="snip_buttons"><H4></button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Switches: </div>
-    <button onclick="switchXHP('appl')" class="snip_buttons">Switch appl</button>
-    <button onclick="switchXHP('sys')" class="snip_buttons">Switch sys</button>
-    <button onclick="switchInline('appl')" class="snip_buttons">Switchinline appl</button>
-    <button onclick="switchInline('sys')" class="snip_buttons">Switchinline sys</button>
-    <button onclick="MenuPrefMAC()" class="snip_buttons">Menu MAC</button>
-    <button onclick="KeyMAC()" class="snip_buttons">Key MAC</button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Lists: </div>
-    <button onclick="tList('unordered')" class="snip_buttons"><ul></button>
-    <button onclick="tList('ordered')" class="snip_buttons"><ol></button>
-    <button onclick="listItem()" class="snip_buttons"><listitem></button>
-</div>
-<div class="buttonrow">
-    <div class="snip_heading">Links:</div>
-    <button onclick="tVariable()" class="snip_buttons"><variable></button>
-    <button onclick="tEmbed()" class="snip_buttons"><embed></button>
-    <button onclick="tEmbedvar()" class="snip_buttons"><embedvar></button>
-    <button onclick="tLink()" class="snip_buttons"><link></button>
+<div class="navbar">
+    <div class="dropdown">
+    <button class="dropbtn">File</button>
+    <div class="dropdown-content">
+    <input type="file" id="file-input" accept=".xhp" value="Open"/>
+    <a href="#" onclick="download(editor.getValue(),getFileNameFromXML(),'text/xml')">Save</a>
+    </div>
+  </div>
+    <div class="dropdown">
+    <button class="dropbtn">Edit</button>
+    <div class="dropdown-content">
+    <a href="#" onclick="editor.undo()">Undo</a>
+    <a href="#" onclick="editor.redo()">Redo</a>
+    </div>
+  </div>
+    <div class="dropdown">
+    <button class="dropbtn">Document</button>
+    <div class="dropdown-content">
+    <a href="#" onclick="startNewXHPDoc()">Start new XHP document</a>
+    <a href="#" onclick="docHeading()">DocHeading</a>
+    <a href="#" onclick="snippet7()"><ahelp></a>
+    </div>
+  </div>
+    <div class="dropdown">
+    <button class="dropbtn">Bookmarks</button>
+    <div class="dropdown-content">
+    <a href="#" onclick="bookmarkValue()">bmk-value</a>
+    <a href="#" onclick="bookmarkBranch()">bmk-hid</a>
+    <a href="#" onclick="bookmarkIndex()">bmk-index</a>
+    <a href="#" onclick="bookmarkNoWidget()">bmk-nowidget</a>
+    </div>
+  </div>
+    <div class="dropdown">
+    <button class="dropbtn">Sections</button>
+    <div class="dropdown-content">
+    <a href="#" onclick="section_div()">Section</a>
+    <a href="#" onclick="related_topics()">Related Topics</a>
+    <a href="#" onclick="howtoget()">How to get</a>
+    <a href="#" onclick="bascode_div()">bascode div</a>
+    <a href="#" onclick="pycode_div()">pycode div</a>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Tables</button>
+    <div class="dropdown-content">
+    <a href="#" onclick="table2R3C()">Table Full</a>
+    <a href="#" onclick="tableRow()">Table Row</a>
+    <a href="#" onclick="tableCell()">Table Cell</a>
+    <a href="#" onclick="iconTable()">Icon Table</a>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Paragraph</button>
+    <div class="dropdown-content">
+    <a href="#" onclick="paragraph('paragraph')"><paragraph></a>
+    <a href="#" onclick="note()"><note></a>
+    <a href="#" onclick="warning()"><warning></a>
+    <a href="#" onclick="tip()"><tip></a>
+    <a href="#" onclick="bascode_par()">bascode-par</a>
+    <a href="#" onclick="pycode_par()">pycode-par</a>
+    <a href="#" onclick="image_par()">image-par</a>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Characters</button>
+    <div class="dropdown-content">
+    <a href="#" onclick="emph()"><emph></a>
+    <a href="#" onclick="c_menuitem()"><menuitem></a>
+    <a href="#" onclick="_input()"><input></a>
+    <a href="#" onclick="_literal()"><literal></a>
+    <a href="#" onclick="_keystroke()"><keycode></a>
+    <a href="#" onclick="_widget()"><widget></a>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Headings</button>
+    <div class="dropdown-content">
+    <a href="#" onclick="heading('1')"><H1></a>
+    <a href="#" onclick="heading('2')"><H2></a>
+    <a href="#" onclick="heading('3')"><H3></a>
+    <a href="#" onclick="heading('4')"><H4></a>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Switches</button>
+    <div class="dropdown-content">
+        <a href="#" onclick="switchXHP('appl')">Switch appl</a>
+        <a href="#" onclick="switchXHP('sys')">Switch sys</a>
+        <a href="#" onclick="switchInline('appl')">Switchinline appl</a>
+        <a href="#" onclick="switchInline('sys')">Switchinline sys</a>
+        <a href="#" onclick="MenuPrefMAC()">Menu MAC</a>
+        <a href="#" onclick="KeyMAC()">Key MAC</a>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Lists</button>
+    <div class="dropdown-content">
+      <a href="#" onclick="tList('unordered')"><ul></a>
+      <a href="#" onclick="tList('ordered')"><ol></a>
+      <a href="#" onclick="listItem()"><listitem></a>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Links</button>
+    <div class="dropdown-content">
+      <a href="#" onclick="tVariable()"><variable></a>
+      <a href="#" onclick="tEmbed()"><embed></a>
+      <a href="#" onclick="tEmbedvar()"><embedvar></a>
+      <a href="#" onclick="tLink()"><link></a>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Tools</button>
+    <div class="dropdown-content">
+        <input type="submit" form="CMtextarea" name="render_page" value="Render page"/>
+        <input type="submit" form="CMtextarea" name="get_patch" value="Generate patch"/>
+        <input type="submit" form="CMtextarea" name="check_xhp" value="Check XHP"/>
+        <input type="submit" form="CMtextarea" name="open_master" value="Open Master"/>
+    </div>
+  </div>
+  <div class="dropdown">
+    <button class="dropbtn">Help</button>
+    <div class="dropdown-content">
+        <a href="https://wiki.documentfoundation.org/Documentation/Understanding,_Authoring_and_Editing_Openoffice.org_Help/3" target="_blank">XHP Reference</a>
+        <a href="doc/manual.html#commands" target="_blank">Editor shortcuts</a>
+        <a href="#" target="_blank">Editor</a>
+    </div>
+  </div>
 </div>
diff --git a/help3/xhpeditor/index.php b/help3/xhpeditor/index.php
index 9e1b066..58a1915 100644
--- a/help3/xhpeditor/index.php
+++ b/help3/xhpeditor/index.php
@@ -39,18 +39,15 @@ $xhp = $_POST["xhpdoc"];
 
 <body style="font-family:sans-serif;">
 <div id="leftside">
-    <h2>LibreOffice Documentation XHP Editor</h2>
-    
-    <form id="CMtextarea" class="form_area" method="post" action="index.php">
-        <input type="submit" name="render_page" value="Render page"/>
-        <input type="submit" name="get_patch" value="Generate patch"/>
-        <input type="submit" name="check_xhp" value="Check XHP"/>
-        <input type="submit" name="open_master" value="Open Master"/>
-        <textarea id="xhpeditor" name="xhpdoc" form="CMtextarea"><?php echo $xhp;?></textarea></br>
-    </form>
-    <div class="buttonsdiv">
+    <div id="editorpageheader">
+        <h2>LibreOffice Documentation XHP Editor</h2>
         <?php include './buttons.php';?>
     </div>
+    <div id="editortextarea">
+        <form id="CMtextarea" method="post" action="index.php">
+            <textarea id="xhpeditor" name="xhpdoc" form="CMtextarea"><?php echo $xhp;?></textarea>
+        </form>
+    </div>
 </div>
 <div id="rightside">
     <?php
@@ -59,12 +56,12 @@ $xhp = $_POST["xhpdoc"];
             echo '<div id="renderedpageheader"><h2>Rendered page</h2><div class="buttonrow"><div class="systembuttons"><p>System: ';
             $opSys = array("MAC", "WIN", "UNIX");
             foreach ($opSys as $value) {
-               echo '<input type="radio" name="sys" onclick="setSystemSpan(\''.$value.'\')" class="snip_buttons">'.$value.' ';
+               echo '<input type="radio" name="sys" onclick="setSystemSpan(\''.$value.'\')">'.$value.' ';
                }
             echo '</p></div><div class="applbuttons"><p> Module: ';
             $appModule = array("WRITER", "CALC", "IMPRESS", "DRAW", "BASE", "MATH");
             foreach ($appModule as $value){
-                echo '<input type="radio" name="app" onclick="setApplSpan(\''.$value.'\')" class="snip_buttons">'.$value.' ';
+                echo '<input type="radio" name="app" onclick="setApplSpan(\''.$value.'\')">'.$value.' ';
             }
             echo '</p></div></div></div><div id="renderedpage">';
             $xml = new DOMDocument();
diff --git a/help3/xhpeditor/xhp2html.js b/help3/xhpeditor/xhp2html.js
index 6ff45af..170b846 100644
--- a/help3/xhpeditor/xhp2html.js
+++ b/help3/xhpeditor/xhp2html.js
@@ -57,6 +57,7 @@ function download(data, filename, type) {
 // Codemirror configuration 
 var editor = CodeMirror.fromTextArea(document.getElementById("xhpeditor"), {
     lineNumbers: true,
+    viewportMargin: Infinity,
     indentUnit: 4,
     indentWithTabs: false,
     mode: "xml",
@@ -69,6 +70,5 @@ var editor = CodeMirror.fromTextArea(document.getElementById("xhpeditor"), {
         "' '": completeIfInTag,
         "'='": completeIfInTag,
         "Ctrl-Space": "autocomplete"
-    },
-    hintOptions: {schemaInfo: tags}
+    }
 });
diff --git a/help3/xhpeditor/xhpeditor.css b/help3/xhpeditor/xhpeditor.css
index d85e145..251672e 100644
--- a/help3/xhpeditor/xhpeditor.css
+++ b/help3/xhpeditor/xhpeditor.css
@@ -7,24 +7,86 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  */
 
-/* css for the man editor  web page */
+/* css for the main editor  web page */
 
 .form_area{
     border:1px solid grey;
+    height: auto;
 }
-.snip_buttons{
-    display:inline-block;
-}
-.snip_heading{
-    display:inline-block;
-    width:6em;
+
+.CodeMirror {
+  border: 1px solid #eee;
+  height: auto;
 }
+
 .buttonrow{
     margin-top:5px;
     margin-left:10px;
 }
-.buttonsdiv{
-    display:block;
+
+/* CSS for the menu (W3Schools) */
+.navbar {
+  overflow: hidden;
+  background-color: #333;
+}
+
+.navbar a {
+  float: left;
+  font-size: 16px;
+  color: white;
+  text-align: center;
+  padding: 14px 16px;
+  text-decoration: none;
+}
+
+.dropdown {
+  float: left;
+  overflow: hidden;
+}
+
+.dropdown .dropbtn {
+  font-size: 16px;  
+  border: none;
+  outline: none;
+  color: white;
+  padding: 14px 16px;
+  background-color: inherit;
+  font-family: inherit;
+  margin: 0;
+}
+
+.navbar a:hover, .dropdown:hover .dropbtn {
+  background-color: #148603;
+}
+
+.dropdown-content {
+  display: none;
+  position: absolute;
+  background-color: #f9f9f9;
+  min-width: 160px;
+  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
+  z-index: 1;
+}
+
+.dropdown-content a, .dropdown-content input {
+  float: none;
+  color: black;
+  padding: 12px 16px;
+  text-decoration: none;
+  display: block;
+  text-align: left;
+}
+
+.dropdown-content input{
+    
+}
+
+.dropdown-content a:hover, .dropdown-content input:hover {
+  background-color: #ddd;
+}
+
+.dropdown:hover .dropdown-content {
+  display: block;
 }
 
 #leftside{
@@ -36,7 +98,22 @@
     background: Beige;
     display:block;
     border:1px solid grey;
-    overflow: scroll;
+    overflow: auto;
+}
+#editorpageheader{
+    top: 0%;
+    left: 0%;
+    position:absolute;
+    margin: 0px 10px 10px 10px;
+    z-index:100;
+}
+#editortextarea{
+    margin: 170px 10px 10px 10px;
+    left:0%;
+    right: 50%;
+    line-height: normal;
+    clear:right;
+    overflow: auto;
 }
 #rightside{
     top: 0%;


More information about the Libreoffice-commits mailing list