Yioop Wiki Syntax
Wiki syntax is a lightweight way to markup a text document so that
it can be formatted and drawn nicely by Yioop.
This page briefly describes the wiki syntax supported by Yioop.
Headings
In wiki syntax headings of documents and sections are written as follows:
= Level 1 =
== Level 2 ==
=== Level 3 ===
==== Level 4 ====
===== Level 5 =====
====== Level 6 ======
and would look like:
Level 1
Level 2
Level 3
Level 4
Level 5
Level 6
Paragraphs
In Yioop two new lines indicates a new paragraph. You can control
the indent of a paragraph by putting colons followed by a space in front of it:
: some indent
:: a little more
::: even more
:::: that's sorta crazy
which looks like:
some indent
a little more
even more
that's sorta crazy
Horizontal Rule
Sometimes it is convenient to separate paragraphs or sections with a horizontal
rule. This can be done by placing four hyphens on a line by themselves:
----
This results in a line that looks like:
Text Formatting Within Paragraphs
Within a paragraph it is often convenient to make some text bold, italics,
underlined, etc. Below is a quick summary of how to do this:
Wiki Markup
''italic'' |
italic |
'''bold''' |
bold |
'''''bold and italic''''' |
bold and italic |
Yioop also supports several html tags such as:
<del>delete</del> |
delete |
<ins>insert</ins> |
insert |
<s>strike through</s> or
<strike>strike through</strike> |
strike through |
<sup>superscript</sup> and
<sub>subscript</sub> |
superscript and
subscript |
<tt>typewriter</tt> |
typewriter |
<u>underline</u> |
underline |
Spacing within Paragraphs
The HTML entity
can be used to create a non-breaking space. The tag
<br>
can be used to produce a line break.
Preformatted Text and Unformatted Text
You can force text to be formatted as you typed it rather
than using the layout mechanism of the browser using the
<pre>preformatted text tag.</pre>
Alternatively, a sequence of lines all beginning with a
space character will also be treated as preformatted.
Wiki markup within pre tags is still parsed by Yioop.
If you would like to add text that is not parsed, enclosed
it in <`mbox{nowiki}`> </`mbox{nowiki}`> tags.
Styling Text Paragraphs
Yioop wiki syntax offers a number of templates for
control the styles, and alignment of text for
a paragraph or group of paragraphs:
`{{`left| some text`}}`,
`{{`right| some text`}}`,
and
`{{`center| some text`}}`
can be used to left-justify,
right-justify, and center a block of text. For example,
the last command, would produce:
If you know cascading style sheets (CSS), you can set
a class or id selector for a block of text using:
`{{`class="my-class-selector" some text`}}`
and
`{{`id="my-id-selector" some text`}}`.
You can also apply inline styles to a block of text
using the syntax:
`{{`style="inline styles" some text`}}`.
For example, `{{`style="color:red" some text`}}` looks
like
some text.
Lists
The Yioop Wiki Syntax supported of ways of listing items:
bulleted/unordered list, numbered/ordered lists, and
definition lists. Below are some examples:
Unordered Lists
* Item1
** SubItem 1
** SubItem 2
*** SubSubItem 1
* Item 2
* Item 3
would be drawn as:
Ordered Lists
# Item 1
## SubItem 1
## SubItem 2
### SubSubItem 1
# Item 2
# Item 3
- Item1
- SubItem 1
- SubItem 2
- SubSubItem 1
- Item 2
- Item 3
Mixed Lists
# Item1
#* SubItem 1
#* SubItem 2
#*# SubSubItem 1
# Item 2
# Item 3
- Item1
- SubItem 1
- SubItem 2
- SubSubItem 1
- Item 2
- Item 3
Definition Lists
;Term 1: Definition of Term 1
;Term 2: Definition of Term 2
- Term 1
- Definition of Term 1
- Term 2
- Definition of Term 2
Tables
A table begins with {`|` and ends with `|`}. Cells are separated with | and
rows are separated with |- as can be seen in the following
example:
{|
|a||b
|-
|c||d
|}
Headings for columns and rows can be made by using an exclamation point, !,
rather than a vertical bar |. For example,
{|
!a!!b
|-
|c||d
|}
Captions can be added using the + symbol:
{|
|+ My Caption
!a!!b
|-
|c||d
|}
Finally, you can put a CSS class or style attributes (or both) on the first line
of the table to further control how it looks:
{| class="wikitable"
|+ My Caption
!a!!b
|-
|c||d
|}
Within a cell attributes like align, valign, styles, and class can be used. For
example,
{|
| style="text-align:right;"| a| b
|-
| lalala | lalala
|}
Math
Math can be included into a wiki document by either using the math tag:
<math>
\sum_{i=1}^{n} i = frac{(n+1)(n)}{2}
</math>
`
\sum_{i=1}^{n} i = frac{(n+1)(n)}{2}
`
or by enclosing the math in backticks:
`[[1, -2],[3,4]]`
`[[1, -2],[3,4]]`.
Links and Relationships
A hypertext link to another document can be inserted into a wiki page using
the chain link icon in the GUI. Alternatively, there are several techniques
for inserting a link into a page depending on whether the link is to a page
within the same wiki group, is a link to a page on a different wiki
group, or is a link to a different website. In addition to normal
hypertext links, Yioop also supports relationship links.
Intra-Group Wiki Links use the syntax:
[[name_of_wiki_page]]
or
[[name_of_wiki_page|text for the link]]
or
[[name_of_wiki_page#heading_or_id_on_page|text for the link]]
for example, to make a link to this Syntax page one could write,
[[Syntax|Yioop Wiki Syntax Page]]
which would look like,
Inter-Group Wiki Links use the syntax:
[[name_of-group@name_of_wiki_page|text for the link]]
Different Website Links use the syntax:
[[website_url|text for the link]]
Relationships are a generalized form of link. They are used to express
a more complicated linking between two wiki pages and have the syntax:
[[relationship_type|wiki_page_name|text for the link]]
In the navigation dropdown for a Yioop wiki page there are items for
what links to the current page and what relates to the current page
based on the links and relationships a page belongs to.
Recent Places Dropdowns
You can add a dropdown that can allow users to navigate to recently visited
wiki pages using the syntax:
`[`{recent_places}]
This looks like:
Adding Resources to a Page
Yioop wiki syntax supports adding search bars, audio, images, and video to a
page. The magnifying class edit tool icon can be used to add a search bar via
the GUI. This can also be added by hand with the syntax:
{{search:default|size:small|placeholder:Search Placeholder Text}}
This syntax is split into three parts each separated by a vertical bar |. The
first part search:default means results from searches should come from the
default search index. You can replace default with the timestamp of a specific
index or mix if you do not want to use the default. The second group size:small
indicates the size of the search bar to be drawn. Choices of size are small,
medium, and large. Finally, placeholder:Search Placeholder Text indicates the
grayed out background text in the search input before typing is done should
read: Search Placeholder Text. Here is what the above code outputs:
Image, video and other media resources can be associated with a page by dragging
and dropping them in the edit textarea or by clicking on the link click to select
link in the gray box below the textarea. This would add wiki code such as
((resource`:`myphoto.jpg|Resource Description))
to the page. Only saving the page will save this code and upload the resource to
the server. In the above myphoto.jpg is the resource that will be inserted and
Resource Description is the alternative text to use in case the viewing browser
cannot display jpg files. To add a resource
from a different wiki page belonging to the same group to the current wiki
page one can use a syntax like:
((resource`:`Documentation:ConfigureScreenForm1.png|The work directory form))
Here Documentation would be the page and ConfigureScreenForm1.png the resource.
You can also insert resources from a data-string using resource-data rather than
resource . For example:
((resource-data`:`image/jpeg;base64,/9j/4AAQSkZJRg...rest of image data...|Seekquarry Logo))
could be used to inline an image like:
be aware though that the default maximum wiki page size is 512Kb (this can be set in src/configs/Config.php).
Sometimes it is useful to edit the basic resource link
above to make a link which is a thumbnail of the resource which points to a
separate page containing that resource. This can be done using the syntax:
((resource-thumb`:`myphoto.jpg|Resource Description))
Similarly, by default for resources like PDFs, epub's, etc., the resource tag inlines
the whole resource into the page, if instead one wants a clickable link to a page where
the resource is displayed one can use the syntax:
((resource-link`:`my_document.pdf|Resource Description))
Comma separated value files (.csv or CSV files) are inlined into a page as a table. Which rows and columns of the CSV to present in this table can be controlled by the resource line. The general format for including
a CSV resource is:
((resource`:`resource_name.csv#config#top_left_cell#bottom_right_cell|Resource Description))
For example,
((resource`:`resource_name.csv##B2#C3|Resource Description))
might output
I.e., just the portion of the CSV given by the rectangle between the cells B2 and C3. Using a config directive we can omit the spreadsheet row and column headings as follows:
((resource`:`resource_name.csv#noheadings#B2#C3|Resource Description))
which might output
CSV spreadsheet files can also be used to output a variety of charts. The general format for the command to insert a chart resource is:
((resource-chart_type`:`resource_name.csv#char_config#x_start#x_end#y_start#y_end|Resource Description))
Here chart_type can be one of bargraph , linegraph , or pointgraph . For example, one might have a line like:
((resource-bargraph`:`resource_name.csv##B1#B4#C1#C4|Quadratic Function))
which could produce a chart like
In the above example, the values for the `x` coordinates would come from the cells B1, B2, B3, B4 from
resource_name.csv and the values for the `y` coordinates would come from cells C1, C2, C3, C4 from
resource_name.csv . Alternatively, rather than use a CSV to get out data we can just list the points we want to plot with a command like:
((resource-bargraph`:`##(1,1)#(2,4)#(3,9)#(4,16)|Quadratic Function))
If the QRENCODE variable has been set in src/configs/LocalConfig.php to the path of a working
copy of the qrencode command, then QR code resources can be displayed on wiki pages. Such a resource
has the format:
((resource-qr`:`url-to-qr-encode|A description of the qr code))
For example, if Yioop has been appropriately configured below one should see a QR code for https://www.seekquarry.com/
Manipulating Page Resources
A list of media that have already been associated with
a page appears under the Page Resource heading below the textarea. This
table allows the user to rename and delete resources as well as insert the
same resource at multiple locations within the same document.
The resources section of the edit page can be thought of as similar to
a folder in Windows or MacOS. One can have subfolders of the resource folder.
The Places dropdown at the top of the Page Resource section name has the
name of the current subfolder of the resource folder one is in, and allows you to navigate
up folders to the root resource folder.
The View selection gadget allows you to control whether you want to view the resource
items in the current folder as a list, as a grid, or in a detail mode. If you are in detail mode
then the currently selected appears in a "details" top panel; whereas, all other items in the folder
appear beneath it in a horizontal list. the details item consists of an icon, size, modified date, etc details. One can also configure to have a short text description display under the item. To do this enter edit
mode, click on an item and type the description.
The Sort dropdown (up-down arrows) allows you to control the order in which media lists items are presented.
The Filter textfield lets you enter a search string.
Clicking Go then shows only those resources
which contain that search string in their title.
The Clipboard icon is used to toggle showing the user's clipboard. The clipboard can be
used to move items around the folder structure. In edit mode, when a resource item is clicked on,
it becomes a text field with three options: Rename, Copy Clipboard, and Cut Clipboard. The latter
two can be used to either copy the item to the clipboard folder or to move it there. Once in the
clipboard, the user can move to a different folder and paste the item as desired. Alternatively,
the user can delete the clipboard's contents.
The Actions dropdown (labelled ...) can be used to create new folders, new text files, and new csv
text files within the current page resource folder. These are initially named beginning
with untitled followed by some number, and if applicable a file extension. In the dropdown there is also an option to upload a file to the current resource folder.
The Name , Size , Modified header links above the resources list
control the sort order for the resource list. If a page is a media list page,
then even in read mode, the sort order selected is remembered when drawing the
media list.
Resources entries for the resources list consist first of an icon. In edit mode, when clicked on,
they become a textfield with a name for the resource, followed by buttons for actions
that can be done to that resource (Rename, Add to Page, Clip Cut, Clip Copy). If a resource is
editable the icon will look like a plus sign together with a pencil. Clicking
on the icon will then let you edit the resource.
Text and CSV Resources
For normal text files clicking edit will bring up a textarea with the context of the text to edit.
For CSV (comma separated value) files this will present the file as an editable spreadsheet.
Yioop spreadsheets can have equation much like Excel spreadsheets. Clicking on a cell lets one
edit its contents. For example, if in the cell A3
one entered the equation:
= A1+A2
then clicking out of the cell would cause it to refresh with the value of the sum of the contents of
cells A1 and A2. In addition, to the standard arithmetic operators ['*', '/', '+', '-', '%'], the
spreadsheet expressions can use float or integer literals, and can make use of the following table
of built-in functions:
Function Name |
Description |
avg(x1,...,xn), avg(x1:xn) |
computes average of values of cells listed as arguments |
ceil(x) |
rounds the value of x up to nearest integer |
cell(i,j) |
returns the contents of the cell with column name of letter j, and row name i. For example, cell(2,'B') would return the contents of cell B2. |
col(value, search_row, start_col, end_col) |
searches the row search_row between the columns
start_col , end_col for value . Returns the column name where this value was found or -1 if not found.
For example, col(3, 2, "B", "D") might return C if the cell C2 had value 3. |
exp(x) |
computes `e^x` |
floor(x) |
rounds the value of x down to the nearest integer |
log(x) |
computes `log x` |
min(x1,...,xn), min(x1:xn) |
computes minimum value of cells listed as arguments |
max(x1,...,xn), max(x1:xn) |
computes maximum value of cells listed as arguments |
pow(x,y) |
computes `x^y` |
row(value, search_col, start_row, end_row) |
searches the column search_col
between the rows start_row , end_row for value .
Returns the row name where this value was found or -1 if not found.
For example, row(3, "C", "1", "5") might return 2 if the cell C2 had value 3. |
sqrt(x) |
computes `sqrt(x)` |
sum(x1,...,xn), sum(x1:xn) |
computes sum of values of cells listed as arguments |
username() |
returns username of the person using this CSV file |
---|
HTML, PDF and EPub Resources
How HTML, PDF, EPub resources included on a page render depends on how the Yioop wiki software
has been configured. If no special configuration has been done, then HTML and PDF documents
will bbe rendered in an <iframe> tag within the current wiki page. In the EPub, case a link
to download the resource will be given. If the wiki software detects the presence of the
file APP_DIR/scripts/epubjs-reader (
epubjs-reader), the wiki
system will render the resource in a Javascript viewer and will do things like remember reading
position.
Video and Audio Resources
Not all browsers support the same video and audio formats for playback. For this reason
it sometimes is useful to have multiple video resources for the same video. For example,
you might have a .ogv and .vp8 version of the same video recording. In read (non-edit)
mode, the Yioop wiki system displays only one link for video or audio files that have
the same name except for extension. It then includes the grouped file as separated <source>
tags within either the <video> or <audio> html tag used to render the item in the browser.
In this way, you can make your media take best advantages to whatever capabilities your
client's browser has. If you don't feel like recoding your media in such a fancy way, a safe
rule of thumb is that .mp3 audio will playback in all modern browser, and that .mp4 video
will playback in all modern browser.
For video it is sometimes useful to add a subtitle or caption track. Yioop wiki supports
WebVTT format subtitles and captions. To see how
Yioop wiki makes use of these files, suppose you included a resource
foo.mp4 in your
wiki pages, and you also had a file named
foo-captions-en-US.vtt then when the HTML
page is generated from your wiki page, a <track> tag for the caption file would be added
to the <video> tag. A user seeing this page would then see in the video player a closed caption
symbol and be able to turn on/off (defaults off) the English captions. If you wanted
named the file
foo-subtitles-en-US.vtt instead, then Yioop wiki would include it as a
subtitles track (defaults on). You can add captions/subtitle files for as many languages as
desired.
When viewing the page resources for a page in edit mode, one can see one file/resource and
no grouping of resources by name is done. In this way you can keep track of exactly what
resources are available for a page.
Page Settings, Page Type
In edit mode for a wiki page, next to the page name, is a link [Settings].
Clicking this link expands a form which can be used to control global settings
for a wiki page. This form contains a drop down for the page type, another
drop down for the type of border for the page in non-logged in mode,
a checkbox for whether a table of contents should be auto-generated from level 2
and level three headings and then text
fields or areas for the page title, author, meta robots, and page description.
Beneath this one can specify another wiki page to be used as a header for this
page and also specify another wiki page to be used as a footer for this page.
The contents of the page title is displayed in the browser title when the
wiki page is accessed with the Activity Panel collapsed or when not logged in.
Similarly, in the collapsed or not logged in mode, if one looks as the HTML
page source for the page, in the head of document, <meta> tags for author,
robots, and description are set according to these fields. These fields can
be useful for search engine optimization. The robots meta tag can be
used to control how search engine robots index the page. Wikipedia has more information on
Meta Elements.
The Standard page type treats the page as a usual wiki page.
Page Alias type redirects the current page to another page name. This can
be used to handle things like different names for the same topic or to do localization
of pages. For example, if you switch the locale from English to French and
you were on the wiki page dental_floss when you switch to French the article
dental_floss might redirect to the page dentrifice.
Media List type means that the page, when read, should display just the
resources in the page as a list of thumbnails and links. These links for the
resources go to a separate pages used to display these resources.
This kind of page is useful for a gallery of
images or a collection of audio or video files. For videos, thumbnails will appear
as animated gifs, provided the FFMPEG constant has been defined in the system's
src/configs/LocalConfig.php and it is set to the path of an executable of ffmpeg.
Presentation type is for a wiki page whose purpose is a slide presentation. In this mode,
....
on a line by itself is used to separate one slide. If presentation type is a selected a new
slide icon appears in the wiki edit bar allowing one to easily add new slides.
When the Activity panel is not collapsed and you are reading a presentation, it just
displays as a single page with all slides visible. Collapsing the Activity panel presents
the slides as a typical slide presentation using the javascript program:
Slidy
The Share Wall page type allows you to make a page with a public textarea where people
can copy and paste text snippets for others to see. Above this text area is a formatted version
of the text with line numbers.
The URL Shortener page type allows you to do a page alias to an external
website rather than to a Yioop wiki page. The edit mode for this page lets you
see a graphs of how frequently people are following your link.