forked from amazingfate/help
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>
101 lines
2.9 KiB
JavaScript
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: */
|