[pmwiki-users] RFC: Simple link markup for a "nearly WYSIWYG" editor

Petko Yotov 5ko at 5ko.fr
Mon Aug 3 07:27:54 CDT 2015


I'm looking for a simple to learn and type link markup.

I am working on an easy to use "structured page editor" module. It will 
allow users to modify text in a paragraph, a heading, a list item and a 
table cell; to add, remove or rearrange headings, paragraphs, ordered 
and bulleted lists, list items, tables, table rows. It aims to be 
touch-screen-friendly, but to work even with old browsers like MSIE 6 
(with some features enabled depending on browser capacity, eg. Ajax 
uploads of files).

The module will have its own areas inside a wiki page text like 
{{{[=Module text here=]}}} so it can use its own markup rules without 
modifying or disabling existing markups.

I'll detail the features and the reasons for choosing them in a few days 
or weeks.

I'd like to read your ideas for a simple to type and understand link 
markup. The module allows editing of text blocks, but inside the regular 
textarea, I'd like to allow some inline wiki markup, for example for 
'''bold''' or ''italic'' text, and links:

* to external URLs,
* to pages in the same group, (preventing accidental cross-group 
* to pages in other groups, (not a priority)
* to files attached to the current upload directory (per page or per 
* to pictures/videos/audios that would be embedded into the page rather 
than linked.

I wouldn't use a WikiWord link markup because there are many page names 
with a single word like "Telephones". I prefer to search for a markup 
other than [[PageName | link text]] because the characters [, | and ] 
are not easily accessible on a touch screen keyboard, and it is not easy 
to go left, eg. typing "[" "[" "]" "]" "left" "left" to position the 
cursor between the brackets, type the link, type "end" to go after the 

I looked at different text markup engines like Textile, Markdown, 
txt2tags, reStructured text, Creole and the only one that appears simple 
enough is the Textile-style link:

   "Link text":PageName or
   "Link text":http://www.example.org

However this markup is redundant when a link text is the same as a page 
name, eg.


and, I have observed that many users will first enter the link address, 
then the link text, and for left-to-right languages this markup above 
means that the user has to reposition the cursor before the link in 
order to type the link text (and on a touch screen this is not as easy 
as with a hardware keyboard and mouse).

I have also looked at our Cookbook:AtLinks recipe which I took as 
inspiration for a simple link markup:


It only handles internal links like this:

   @"HomePage | Link text"

So, my current best idea for a link markup would be:

   @PageName "Link text"

@HomePage would link to Group.HomePage and would display the 
"{$Titlespaced}" text, that is, when a page has a title, it will be 
shown, otherwise the "spaced" name, eg "Home Page".

The "@" prefix implies a direction or a location, so I feel it may be 
easy to learn for new authors when linking to other pages. It is also 
easy to type.

External links (http:// optional):
   http://www.example.org "link text"

no need to escape ( and ) into %28 and %29:

E-mail links, "mailto:" optional:
   user at example.org "optional link text"
   mailto:user at example.org

Attached files:
   Attach:uploaded-file.ext "link text"

   Attach:picture.jpg             (embed a picture)
   Attach:picture.jpg "link text" (link to a picture)

   +uploaded-file.ext "link text"

While "Attach:" is easy to understand and type, it is in the English 
language so it will not be that easy for people from different cultures, 
that's why I wonder if the "plus" prefix can define an attached file?

Or if we can support a translated "Attach:" prefix like they do in 
Wikipedia, for example "Fichier:" in French and "Файл:" in Bulgarian?

Additionally, I'd like to prevent accidental cross-group linking as this 
is a frequent mistake on every young wiki community I've reviewed. So 
I'd like, for the new editor module, have these links:

   @Page/Name.in.the,same/group links to [[PageNameInTheSameGroup]]
   @We.are.open:24/7            links to [[WeAreOpen247]]

   @OtherGroup::PageName        links to [[OtherGroup/PageName]]

Note, 2 colons separate a group from a page.

I am not entirely comfortable with these propositions, that's why I ask 
for your comments and ideas. Once again, these new markups will not 
remove or disable existing link markups in a wiki, either from the core 
or from a local customization. They will only apply to the content 
created in the new structured page text editor module.

Additionally, I think the '''bold''' and ''italic'' inline markups are 
easy enough to type and can be included. The apostrophe key is more 
easily accessible than for example the "*" asterisk key used in some 
markup languages for *bold text*.

Do you think any other inline markups could be included? For example, 
the module will not support %wikistyle bgcolor=orange apply=block% ... 
%% markups because they are somewhat large and new authors can get 
overwhelmed by such complex code. And advanced users are able to write 
in the regular PmWiki text editor.

Also, the new editor will only allow limited styling and organizing, 
unlike a full WYSIWYG editor. This is simpler to implement, use and 
maintain, but most importantly, different pages will look consistently 
similar which wouldn't be the case if everyone was allowed to use any 
font, color, style and size of any word they type.

Put yourselves in the place of newcomer authors who know how to use an 
office suite (but rarely type links), and a social media website or a 
mobile phone text message, where all typing fields are tiny regular 
textareas (non-WYSIWYG), and they do fine.

So in that spirit, can we find any simple link markups, and are there 
any other inline markups that are worth including?

Looking forward to your thoughts.


Change log     :  http://www.pmwiki.org/wiki/PmWiki/ChangeLog
Release notes  :  http://www.pmwiki.org/wiki/PmWiki/ReleaseNotes
If you upgrade :  http://www.pmwiki.org/wiki/PmWiki/Upgrades

More information about the pmwiki-users mailing list