Files
help/source/help.js
Olivier Hallot 72e210bd69 Rewrite online help contents
I have worked in a new implementation of the Help online. The strategy
was to batch "flatten" all XHP into HTML files with an offline
transformation using xsltproc.

(by "flatten", I mean resolve all embeds in XHP files)

see http://vm173.documentfoundation.org

This way all displayed files are now HTML with minimal javascript. No
more on-line XSLT transformation and their associate issues (delays) and
poor debug.

Advantages:
1) preserve all XHP files as-is, authoring tools, DTD.
2) preserve current translation workflow
3) all files turned to HTML static, with minimum Javascript
4) much faster load times, browser cache  used.
5) Honors parameters &System and &DbPAR
6) URL bookmarking in browser (Ctrl-D)
7) Page navigation back and forth with browser buttons
8) preserve current HC2 in LibreOffice (see 1).
9) resolved <switchinline><caseinline> for &System and &DbPAR (aka
module).
10) maintained Fabio's bookmark search solution.
11) index-able by search engines (XHP files were unknown to robots).
12) pages can be directly accessed: e.g.
http://localhost/text/scalc/01/04060106.html?DbPAR=CALC#bm_id3153114
13) hold Google search snippet in TopRight area

Disadvantages (Most are further work):
1) issue with offline use (file://path/to/pages/)

To do:
1) batch create html of localized pages, localized bookmarks
2) Resolve missing images paths (Icons are in core/icon-themes/)
3) Resolve protocol file:// for offline use (hit CORS guideline
restriction for browsers)
4) provide better layout for bookmarks in the left pane
5) work on web CSS to make it beautiful
6) Clean up the XSLT filter, set a debug param.
7) more

Change-Id: I6de74037dbb59da872153f853237afd75b47c917
Reviewed-on: https://gerrit.libreoffice.org/38220
Reviewed-by: Olivier Hallot <olivier.hallot@edx.srv.br>
Tested-by: Olivier Hallot <olivier.hallot@edx.srv.br>
2017-05-30 16:12:16 +02:00

101 lines
2.9 KiB
JavaScript

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
function setModule(module){
var itemspan = document.getElementsByTagName("span");
if (module == null){module="DEFAPP"}
var n = itemspan.length;
for (var i = 0; i < n; i++){
if (itemspan[i].getAttribute("value") == module){
itemspan[i].removeAttribute("hidden");
}
}
}
function setSystem(system){
var itemspan = document.getElementsByTagName("span");
if (system == null){system="DEFSYS"}
var n = itemspan.length;
for (var i = 0; i < n; i++){
if (itemspan[i].getAttribute("value") == system){
itemspan[i].removeAttribute("hidden");
}
}
}
/* add &DbPAR= and &System= to the links in DisplayArea div */
function fixURL(module, system){
var itemlink = document.getElementById("DisplayArea").getElementsByTagName("a");
var n = itemlink.length;
var pSystem = (system == null) ? "":"&System="+system;
var pAppl = (module == null) ? "":"&DbPAR="+module;
for (var i = 0; i<n; i++) {
if(true){
var href = itemlink[i].getAttribute("href");
if (href != null){
if (!href.startsWith("http")) {
var pre = href.substring(0,href.indexOf('?'));
if (href.lastIndexOf('#') > 0){
var post = href.substring(href.lastIndexOf('#'),href.length);
}
else{
post='';
}
var url = pre+'?'+pAppl+pSystem+post;
itemlink[i].setAttribute("href",url);
}
}
}
}
}
function displayBookmark(module){
if (module==null){module='WRITER'}
$("#BottomLeft").load('bookmark_'+module+'.html');
}
function getParameterByName(name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)");
var results = regex.exec(url);
if (!results) {
return null;
}
if (!results[2]) {
return '';
}
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var debouncer = null;
$(document).ready(function() {
$('#search-bar').keyup(function() {
if (debouncer) {
clearTimeout(debouncer);
}
debouncer = setTimeout(function(){
if ($('#search-bar').val()) {
$("#BottomLeft ul a:not(:contains('" + $('#search-bar').val() + "'))" ).parent().hide();
$("#BottomLeft ul a:contains('" + $('#search-bar').val() + "')" ).parent().show();
}
else {
$("#BottomLeft ul li" ).show();
}
}, 200);
});
});
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */