HtmlMgr (version: 2010.09.15-alpha)
Home-WebPage
#h0#
I stopped developing this project, when I realized that java is not the appropriate language to manage html. So I wrote the last version on 2010.09.15.
2010.10.25: TableOfContents is my Chrome extension that creates an expandable toc-tree on ANY page with headings.
2011.02.20, 2013.06.04: HTML5.ID.TOC is my proposal that replaces my SFI-proposal I present in this page.
HtmlMgr (Html-Manager) is a free java open-source BROWSER and a wysiwyg and source EDITOR of html-files that contain Structure-Fragment-Identifiers (SFI). HtmlMgr
a) creates dynamically the Table-of-Contents (ToC) of these-files,
b) shows in the ToC, the location of a mouse-click anywhere in a file,
c) makes full-text search of structures of SFI-files, and
d) easilly creates, modifies and NAVIGATES these-files.
e) java developers can use it for their help-system.
#h0.1p1#
DEVELOPMENT-STAGE:
The program is in alpha version, but its main functionality works. I have tested in Windows and Ubuntu. Softpedia have tested in Mac OS X.
#h0.2p1#
WHAT-YOU-NEED-TO-RUN-IT:
Download the latest HtmlMgr-version.jar, which contains the executable-code and the source-code. You could find example-html-sfi-files from the net.
* HtmlMgr-2010.09.15-00.02.03.jar, bug-fix release.
* HtmlMgr-2010.09.12-00.02.03.jar, bug-fix, feature release.
* HtmlMgr-2010.08.27-00.02.03.jar, feature release (developers).
* HtmlMgr-2010.08.26-00.02.03.jar, bug-fix release.
* HtmlMgr-2010.08.22-00.02.03.jar, bug-fix release.
* HtmlMgr-2010.08.21-00.02.03.jar, bug-fix, feature release.
* HtmlMgr-2010.08.19-00.02.03.jar, bug-fix, feature release.
* HtmlMgr-2010.08.16-00.02.03.jar, MAJOR feature-release (editor).
* HtmlMgr-2010.06.14-00.02.02.jar, feature-release.
* HtmlMgr-2010.06.02-00.02.02.jar, bug-fix release.
* HtmlMgr-2010.05.30-00.02.02.jar, first release.
#h0.2p2#
HOW-TO-RUN:
FIRST-method:
JavaWebStart: If your computer has java 1.6+ installed, you can run the program from THIS LINK. You have to accept content published by me (Nikos Kaseluris) from SourceForge net.
SECOND-method:
Download the above newest jar-file in a directory, uncompress it (it's a zip file) in the SAME directory and double-click on run-HtmlMgr.bat
file in windows OR double-click on the jar-file OR run the command java pkHtml.HtmlMgr
in Linux.
#h0.2p3#
USAGE:
Java developers can use HtmlMgr for its help-system.
- They will easily create, modify and navigate their html-help files.
- Their users easily navigate, search and ANNOTATE the help-files.
#h0.2.1p1#
HOW-TO:
1) Basically, they have only to add the package "pkHtml" together with their java packages (~= 0,5 MB).
2) Create with HtmlMgr the SFI-html help-files.
3) And run from their code the command: new HtmlMgr("WhatToDisplay")
;
- where "WhatToDisplay" is
a) the string of the path of the file they want to display or
b) a "toc.xml" file (like the one I have in the doc directory) which contains the structure of files they want to display or
c) a directory with all html files. The program recursively will create the ToC.
The second and third case is better because HtmlMgr indexes the words of all the files.
#h0.2.1p2#
DESCRIPTION:
Html uses fragment-identifiers (also known as: Fragment-IDs, Anchor-Identifiers, Named-Anchors) to denote a PORTION of an html-file.
Today's standards (inclunding html-5), define fragment-identifiers only as UNIQUE strings inside an html-file.
#h0.3p1#
I extend the concept of fragment-identifiers, because of the advantages it gives to us.
I propose 2 types of Fragment-Identifiers:
1) STRUCTURE--FRAGMENT-IDENTIFIERS (denote|name the specific structure per version of an html-file) and
2) INFO--FRAGMENT-IDENTIFIERS (denote the same information in ALL versions of a file).
HtmlMgr demostrates the usefulness of the proposed Fragment-Identifiers.
#h0.3p2#
DEFINITION:
SFI is a fragment-identifier that denotes the STRUCTURE of an html-text-file in a specific-VERSION of it.
The SEQUENCE of heading-elements is the necessary and sufficient condition to know the structure (outline) of an html-file.
Then, setting SFIs in the heading-elements, we essentially have the structure of an html-file.
The majority of text inside the SECTIONS of texts of books, articles, etc is grouped per paragraph. Then setting SFIs and in the paragraph-elements, we almost have the structure of the whole file.
#h0.3.1p1#
FORMAT:
- h0, h0p1, h0p2, ...
- h0.1, h0.1p1, ... h0.1.1, ... h0.1.2, ... h0.1.2.1, h0.1.2.1p1, h0.1.2.1p2, ...
- h0.2, h0.2p1, ... h0.2.1, ... h0.2.2, ... h0.2.2.1, h0.2.2.1p1, h0.2.2.1p2, ...
...
- h0.?, h0.?p1, ... h0.?.1, ... h0.?.2, ... h0.?.2.1, h0.?.2.1p1, h0.?.2.1p2, ...
- "foo.html#h0.6.3p2": denotes paragraph2 of 3rd h2 of 6th h1 element of CURRENT version of the file "foo.html".
#h0.3.1p2#
EXAMPLE-FILES:
1) this file, a good example to play with,
2) a BIG law-file: sfi-Law_Eu_Treaties_2008-2010.08.27.html. I have done some processing on this file, but you can see my objective. Also it takes some time to load (java problems).
This file is my approach to online-law-texts, and
3) a w3.org recommendation file: sfi-w3_org_css21_generate-2010.08.27.html. (now [2010.08.16], my code does not recreates correctly the html-code of this file!!!)
#h0.3.1p3#
IMPLEMENTATION:
I have implemented SFIs using the existing html-standards.
a) I used XHTML 1.0 Strict files, for increased consistency.
b) I used heading and paragraph elements as SFI-elements.
c) I used a css for consistent presentation and
d) In every SFI-element, I add an anchor-element with the name-attribute and value the SFI in the beginning and another achor-element with the class-attribute "hide" at the end. For example:
[p]
[a name="h0.1p5"][/a]
text
[a class="hide"]# h 0 . 1 p 5 #[/a]
[/p]
The RIGHT way to create an SFI-element is to use its "id" attribute, instead of the "name" attribute of the anchor-element. I use the second-method, because java, today, does not support the first-method.
#h0.3.1p4#
WHAT WE NEED (STANDARDIZATION):
By standardizing SFIs:
1) anyone could REFER to any place INSIDE an html-file without knowing the concrete anchors the author uses inside his document.
2) the web-browsers, will create automatically the ToC of the files, will show the location we are reading in the Toc and will make fast full-text searches, because any word|term will reside in a unique SFI. My HtmlMgr proves this (2) argument.
3) together with versioning-support we can create permalinks.
We need:
a) an h0-element for the title of the document, but to display as the other headings. Also we could add and h7, h8, h9 elements, just in case anyone could need them but to suggest not to use them.
b) it is useful to add and sentence-elements, in order to have SFIs and for every sentence, inside a paragraph.
#h0.3.1p5#
DEFINITION:
IFI is a fragment-identifier that denotes ANY information PART of an html-file.
Today fragment-identifiers are IFIs.
#h0.3.2p1#
FORMAT:
- "ifiName"
By setting the prefix "ifi" we ensure uniquness in the name of the fragment-identifier AND ensure its difference from SFIs.
#h0.3.2p2#
DISCUSSION:
Today WWW does NOT supports versioning. We replace the old-files with the new-ones and thus we destroy the EVOLUTION of the information we publish on the internet.
A significant amount of the today monoDirectional web dead-links exists because of the evolution of published information.
#h0.3.3p1#
PROPOSAL:
By setting the DATE before the extenstion of the name of a file, we can support versioning for the non dynamic created files.
- for the most-recent-files we will have 2 files. One with the date and one without. This way, anyone will find the most-recent-file from a list of versioning-files by removing the date.
- also, to avoid storage-problems, there is no need to store minor changes to the files. Each author will deside what he considers importance for versioning.
- if we have more versions per day, we will add numbers in ascending order.
- each file, at the end will store its versions.
FORMAT: foo-2010.08.14.html, name-2010.08.14-1.png, ...
#h0.3.3p2#
PERMALINK:
SFIs are unique per version of a file. Then if the file supports versioning, we can create permalinks with the SFIs.
On the other hand, IFIs denote the same information in ALL versions of a file. A versioning-file plus an IFI creates also a permalink.
#h0.3.3p3#
I am havily developing the program. #h0.4p1#
Thankfulness:
Many thanks to those help me to write the code:
* Slava Pestov with his jEdit code.
* Dirk Moebius with his InfoViewer jEdit's plugin.
* Howard Kistler with his Ekit html-editor.
* Stanislav Lapitsky.
* And to many guys who publish code on the internet.
#h0.4p2#
New SFI-FILE:
Creates a new SFI-file.
#h0.4.1.1p1#
Open File | ToC:
Opens an SFI-file OR a "toc.xml"-file which contains a structure of SFI-files.
#h0.4.1.1p2#
Open Url:
Opens an SFI-file from a Url.
#h0.4.1.1p3#
Open Directory:
Opens a directory of SFI-files recursively, and creates a ToC with the structure of these files and its subdirectories plus the ToC of each file. Also indexes the words and terms of all these files.
#h0.4.1.1p4#
Save:
Saves the current file and reloads only this file.
#h0.4.1.1p5#
Save As:
Saves current file with a different name.
#h0.4.1.1p6#
Exit: #h0.4.1.1p7#
Undo: #h0.4.1.2p1#
Redo: #h0.4.1.2p2#
Cut: #h0.4.1.2p3#
Copy: #h0.4.1.2p4#
Paste: #h0.4.1.2p5#
Insert SFI-Heading (Ctrl+Shift+H):
Inserts a heading-element with an SFI, AFTER the SFI-element of the cursor. Updates the affecting next SFIs and recreates the ToC inserting the new structure.
#h0.4.1.2p6#
Insert SFI-Paragraph (Ctrl+Shift+P):
Inserts a paragraph-element with an SFI, as previous.
#h0.4.1.2p7#
Insert Break (Ctrl+Shift+Enter): #h0.4.1.2p8#
Delete Element:
Deletes an SFI-element (heading, paragraph).
#h0.4.1.2p9#
Format Bold:
Makes bold the selected-text.
#h0.4.1.2p10#
Format Italic:
Makes italic the selected-text.
#h0.4.1.2p11#
Format Underline:
Underlines the selected-text.
#h0.4.1.2p12#
Update SFI:
Updates SFIs in a file.
#h0.4.1.2p13#
Wrap Lines:
Wrap the lines in the source-editor or not.
#h0.4.1.3p1#
View Java Element-Structure:
The browser and the wysiwyg-editor use the java JEditorPane-class to present the html-elements. The internal java-element-structure is different from the html-element-structure (and not exactly one-to-one!!!). But I must know this internal-structure to recreate the html-structure in the source-editor.
Stanislav Lapitsky wrote the code of this utility, which helped me to write the mapping code.
#h0.4.1.3p2#
Back:
Goes to previous Url.
#h0.4.1.4p1#
Forward:
Goes to next Url, IF we have navigated in the history of Urls.
#h0.4.1.4p2#
Home:
Goes to this file.
#h0.4.1.4p3#
Reload:
Reloads the displayed-file.
#h0.4.1.4p4#
List-Directory:
Lists the contents of a directory, so you can copy this list.
#h0.4.1.4p5#
About HtmlMgr: #h0.4.1.5p1#
Java does not support yet the "display" property. So the SFIs always appear. Today browsers, hide them and display only when we put the mouse over the paragraph. #h0.4.2p1#
Infinite things!!! #h0.4.2p2#
2010.08.30:
Feature-release. I added the JavaWebStart function.
#h0.4.3p1#
2010.08.16:
MAJOR feature-release. HtmlMgr now is and wysiwyg and source editor.
#h0.4.3p2#
2010.06.14:
Feature-release. I changed the hidden-locators from #@h3#
to #h3#
.
#h0.4.3p3#
2010.05.30:
FIRST release of the HtmlMgr.
#h0.4.3p4#
2010.05.24:
Project registration.
#h0.4.3p5#
2010.04:
HtmlMgr is part of my life-long AAj project, a knowledge-management project. I begun HtmlMgr using the open-source code of jEdit's help package of Slava Pestov and jEdit's plugin InfoViewer of Dirk Moebius.
#h0.4.3p6#
GNU GENERAL PUBLIC LICENSE (GPL) #h0.4.4p1#
File-ToC:
⇨ Description
⇨ Download
⇨ Fragment-Identifier Proposal
⇨ The Program
⇨ Author
#h0.toc#
This is an SFI-file, best viewed with HtmlMgr. #h0.toc#
VERSIONS (of this file):
* CURRENT: http://htmlmgr.sourceforge.net/index-2011.02.20.html (index.html minor 2013.06.04)
* Previous: index-2010.11.01.html
* Previous: index-2010.08.28.html
* Previous: index-2010.08.21.html
* Previous: index-2010.08.19.html
* Previous: index-2010.08.16.html
* Previous: index-2010.07.29.html
* Previous: index-2010.06.14.html
* Previous: index-2010.06.02.html
* PUBLISHED: index-2010.05.30.html
* CREATED: 2010.05.26
* MAIL: userid@domain, where userid=nikkas and domain=otenet.gr
#h0.toc#