OpenWetWare:Software/My OWW Links

Bill Flanagan: OpenWetWare.org
The purpose of this development task is to create a facility within OWW to allow logged-in OWW members to save references to OWW pages on a personal "links" page or set of pages.

"Links Page"
The "links page" will be limited to storing links to and from OWW pages. A feature of this page will allow an OWW member to not only see their own links but those of any other OWW member.

"Links Page" Sections
On the page, all links will initially appear as individual line items on a single page. Users will be able to divide the page into sections. Each section will have a name. Nomenclature is important here. These section headings may play the same role as "categories". However, since the term "category" has a very specific definition within MediaWiki systems, these section header titles should not be confused with OWW category names.

Section names assigned within the "links page" will not be exported to editable OWW documents. This could still can be done by copying and pasting pages. However, these titles are not meaningful descriptive data outside of member's "links pages".

Editing Link Content
Editing and managing the contents of this page will initially be limited to rudimentary editing. This may be changed over time. The initial focus is to provide simple tools to allow for simplifying the job of keeping track of OWW pages. The "links page" is not designed to be an alternate OWW User Interface (UI). The goal is to provide a simple way to remember where you were and get back there in a few clicks.

OWW Page Link
Each link will appear as a hypertext link to an OWW page. The link entry "title" will be the full OWW page name of the page. This will contain both the OWW page title and the name space if present. Like other links, the link will change color if the OWW member has visited the page.

Link Created Date
The time and date the link was created on will be shown below the link. This time is static. It will nopt be changed if the page is edited or if the OWW member clicks on the link to visit the page.

Last Date Visited
The time and date the OWW member last clicked on the link to visit the page will be show. This date will only be changed if the OWW member visits 'through' the link. If the OWW member visits outside of the "links page", the date will not change.

Page Revised Indication
If the page has been edited since the last time the OWW member visits the page, this indicator will show the date of the most recent edit. By only showing this indicator when the page changes, an OWW member can qickly scan the page for updates to visited pages.

Comment
Each link will have a comment field edited by the OWW member. This is a text-only field. The OWW member is the only person who can change his or her own comment field.

Link Select
A checkbox will be present for each link to allow a person to select the link for either deletion or movement to another section from the link's current location. An option at the top of the page will allow the OWW member to delete or move several pages at once.

Link Count
For each link, a member will see a count of the total number of times that particular link appears in other OWW member link pages. By clicking on the number, the OWW member will see a list of all OWW members who have added the specified OWW page to their list of links. Each members comments, read counts, etc. for the page will be visible.

Sections
Sections are not tags nor are they MediaWiki categories. They are text labels applied to a set of links within an OWW member's "links page". An OWW member can add links from one page to multiple categories.

Accessing the "Links Page"
A new tag will be added to the "personal links" top right corner of logged-in OWW members pages. By clicking on the "My OWW Links" link tag, a user will be directed to their personal "links page". This option will only be visible to logged-in OWW members.



Determining Whether a Page Already is Linked
A new editor tab will be present at the top of the page indicating whether the current page is present in the "links page".



The following values will appear:

Link
The page does not appear in the OWW member's "links page". By clicking on this tab, the user will have the option to create a new link entry. Details of this page are provided below.

Linked
This page currently appears in the OWW member's "links page". By clicking on the edit tag, the user will go to the "links page". The browser focus will be set to the first instance of a link to this page. Clicking the "back" button will return the OWW member to the previous page: no other special accommodations will be made initially. A user could also click on the current link tag to re-enter the page. By doing this, the time/date of most recent visit to the page will be updated.

Adding a New Link to the "link page"
When a user selects the "Link" edit tab, an entry form will be present that allows the OWW member to set the initial link entry information.

Comment
The OWW member will have an HTML textarea presented to allow for adding a comment. These comments are text-only: no MediaWiki-specific features will be available.

Select "links page" Section
The OWW member will have 3 ways to specify where the new link will be positioned.

Hardcoded:
These pages would be built-in as part of the "My Links" page in advance and not subject to change by users.

User selected via drop-down list:
These pages would be specified by a user in advance as part of the "My Links" page and not subject to change by users when adding a new link.

User selected via text box:
""

These pages could be specified by a user in when adding a new link. This would create a new entry in the list of links. The next time a user added a link, this label would be part of the drop-down list of link locations.

Scope of Links Within OpenWetWare
Certain categories for links will be defined in advance for all OWW users. "My Protocols" and "My Materials" are examples. For purposes of illustration, we will use the term "My Protocols", as an example.

All links will be for OWW pages. We're not trying to create a general booklink page site like Delicious. Because of the structure of pages, we may expand to access pages on other wiki sites via InterWiki links.

"My Protocols" and "My Materials"
All links made in predefined "built-in" sections such as "My Protocols" will result in an entry to the linking user's "My Protocols" page. It will also result in creating a link in the "OWW Protocols" page. "OWW Protocols" would be accessible to all OWW users.

Deleting Links
An option will be present at the top of the "links page" allowing an OWW member to delete one or more links. To do this, a user clicks on the checkbox in front of one or more links. When 'Delete" is selected, the OWW member will be asked to confirm the action. If the user confirms, the links will be removed from the section.

Moving Links Between Sections
An option will be present at the top of the "links page" allowing an OWW member to move one or more links to a different page. To do this, a user clicks on the checkbox in front of one or more links. When 'Move" is selected, the OWW member will be asked to enter the new section. When a valid section is specified, the move of the links will be effected. The original time/date of the creation of the link will be maintained. The "updated " and "visited" time/dates will also retain their existing values.

Storage
All links and the metadata related to these links will be stored within the OWW database in tables. This is analogous to the way MediaWiki stores internal and external links as well as image links. This is done to assist in performance as well as to provide SQL indexing. By placing links inside of Wiki pages, the performance of the system would not be scalable as links increase.

This is especially important because of the requirement related to 'common links' such as "Protocols". If a SQL table was not used, the complexity of managing text links residing within pages would be daunting from both implementation and operational perspectives.

Definition of Terms
The following is list of terms related to this development effort.

Link
A 'link' is a local OpenWetWare (OWW) /MediaWiki version of a web 'hotlink'. Behavior of links within OWW are indistinguishable from the behavior of web 'hotlinks'. Clicking on any link will cause a web browser to jump to the specified page.

Wiki Page
An editable OWW page containing either MediaWiki-compliant 'Wiki Text' or HTML-encoded tags and text. Combinations of 'Wiki Text' and HTML are possible by using tags within WikiText.

Wiki Text
Text encoded by OWW users using a set of markup tags specific to MediaWiki implementations. The text is rendered via MediaWiki as HTML content to allow viewing via standard web browsers.

Examples: "Main Page", Protocols, and Materials.

Special Pages
A system-generated page typically used to provide data reports or user data entry forms. These pages typically are not editable with the same built-in text editor text pages are created with.

Examples: "All Pages" and "OWW Stats".

Personal Links
Personal Links are displayed by Mediawiki at the top right corner of every Wiki page. These links are generally not modified by users. All actions generally are related to a specific user.

Examples: "Login", "My Preferences", "My Talk", and "My Watchlist".

"Skin" Tabs
The MediaWiki editor manages a set of links presented as tabs on top of each OWW/MediaWiki page. These change dynamically based upon a specific user's ability to either modify the pages or to perform actions upon the pages.

Examples: "page", "talk", and "watch/unwatch".

Sidebar Toolbox
The sidebar toolbox is a relatively dynamic set of links managed by MediaWiki. These options are presented to the user based upon what can/can't be done using either the pages of related to pages at any point in time.

Examples: What links here, "Printable version", and "Permanent Link".

Citation Tools
A number of external services allow MediaWiki/OWW users to capture information about specific pages in external applications either on their desktop or on remote web servers. These applications typically allow users to mix content from disparate web sites which would include but not be limited to OWW.

Examples: Connotea and CiteULike.