Manual:Extension/InputBox and Integration of third party content: Difference between pages

(Difference between pages)
No edit summary
 
(Changed categories.)
 
Line 1: Line 1:
The '''InputBox''' extension allows to automatically create a new page via an input field with a specific page name and - optionally - in a specific namespace.
Integration of third party content into a wiki page can be achieved in various ways. It depends on several factors:


== Creating meeting minutes from an inputbox ==
== Embedding support by 3rd party ==
<br />
Does the software actively or via interfaces support embedding? Most web-based services nowadays do so, but some restrict functionality.
[[File:inputbox-en.png|alt=Inputbox to create a wiki page|center|thumb|450x450px|Inputbox to create a wiki page]]
<br />A typical example of this is creating meeting minutes that follow a consistent content structure. The following code can be added to the source code of a page:<syntaxhighlight lang="text">
<inputbox>
type=create
default={{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}
prefix=Meeting:IT/Jour fixe/
preload=Meeting:Standard minutes
buttonlabel=New minutes
break=no
width=30
useve=true
arialabel=New minutes
</inputbox>
</syntaxhighlight>


'''Description of the settings:'''
* '''Embedding widgets available:''' Does the 3rd party provide some widget code, which can be used for embedding? In the best case, the 3rd party already has some snippets ready, which do all the necessary embedding. This is the case e.g. for YouTube videos. In this case, we use the extension Widgets to create a wrapper, which includes the snippets mostly as they are provided. This is required for security reasons.  Embeddings are very good for displaying complex content, such as video players, specialized graphics, dynamic diagrams, and so on, which require some sort of player.
{| class="wikitable" style=""
* '''API provided:''' If the 3rd party provides API access, an extension needs to be written, which calls the API and pulls the relevant data. This data then has to be transformed and be presented within the wiki. Depending on the complexity of the API, this can be a very simple task, but also a very challenging endeavor. API is very good for asking complex queries to the 3rd party database, and when the focus is mostly on the data retrieved (as opposed to the visualization).
|+
* '''SDK provided:''' Some 3rd parties provide software development kits that help creating complex applications on top of the software. Using SDKs is the best means when there is some complex interaction required between the wiki and the 3rd party, but typically the development of such connectors is very time-intense.
!
!Wert
!
|-
|type
|create
|Creates a new page
|-
|default
|
|Suggestion for a name for the new page; here in the example: current edate
|-
|prefix
|''Seitenpfad''
|Path to a namespace or subpage.
|-
|preload
|''Pfad zur Vorlage''
|Loads the default text for the new page from a template, if you are not using a template, this line can be deleted. If the template is not found, a blank page is created.
|-
|buttonlabel
|''Text''
|Text that is shown on the button.
|-
|break
|no
|Places the button behind the text field rather than below.
|-
|width
|30
|Size of the inputbox in characters
|-
|useve
|true
|Opens the new page directly in visual editing mode
|}


===Show latest minutes===
== Authentication and access control ==
If you want to display links to the last 5 meeting minutes by creation date directly below the input box, you can add the following query in the source code below the input box, specifying the path to the logs in the square brackets in the #ask query (i.e. the prefix-path from the inputbox followed by a *:<syntaxhighlight lang="text">
This is a limiting factor to which of the above ways can be used.  
List of minutes:
<div>
{{#ask:[[~IT/Jour Fixe/*]]
|limit=5
|sort=creation date
|order=desc
|format=ul
|default=There are currently no minutes
|searchlabel= &#8594; More IT-Jour Fixe minutes
}}
</div>
</syntaxhighlight>'''Beschreibung der Einstellungen zur Anzeige der letzten Protokolle:'''
{| class="wikitable" style=""
|+
!Name
!Wert
!
|-
|#ask [[ ]]
|create
|The path to the minutes is pecified here. Alternatively, the category if the logs are assigned to a category.
|-
|limit
|Zahl
|Number of results. Below, a more... link will be shown
|-
|sort
|creation date
|Sorting of resulst by creation date
|-
|order
|desc
|Ordered descending
|-
|format
|ul
|Results format is an unordered list
|-
|default
|Text
|Text to show if no results exist
|-
|search label
|Text
|Label for the link to additional results (is shown only if there are more results than the defined  ''limit]''
|}{{Box Links-en|Topic1=[https://www.mediawiki.org/wiki/Extension:InputBox/de www.mediawiki.org/wiki/Extension:InputBox]}}


* '''Client (browser) based authentication:''' The user has to be logged into the 3rd party system. On the pro side, the application has full control over authentication and access control. On the con side, this can be a nuisance in case there is no single login system in place, since the user will be prompted for logins.
* '''Server side authentication:''' Communication between the 3rd party and the wiki is done on the server side. This means, the server has to take control over authentication. In this scenario, typically, communication takes place using a proxy user. On the pro side, this means the wiki user does not care about authentication. On the con side, however, per-user access control becomes hard to implement. It is possible, though.


[[en:{{FULLPAGENAME}}]]
== Level of integration ==
[[de:Handbuch:Erweiterung/Inputbox]]
 
* '''Tease and redirect:''' In some scenarios, an integration wants to only get the attention of a user. For deep interaction, the user is redirected to the 3rd party software. This is the case, e.g., for embedding a ticket system number (which simply shows the ticket state, but for any interaction, the user has to follow the link to the ticket system).
* '''Full read:''' In this scenario, the embedded content should be fully readable, such as with videos or graphics. There is no editing required.
* '''Full interact:''' In this scenario, the full range of interaction should be supported. This is the case in BlueSpice with embedding Draw.io diagrams.
 
There are several technical ways of embedding content. Mostly, we would try to work with widgets, as long as there is an embedding code or some ''iframe'' solution.
[[Category:Customization]]

Revision as of 18:14, 23 February 2023

Integration of third party content into a wiki page can be achieved in various ways. It depends on several factors:

Embedding support by 3rd party

Does the software actively or via interfaces support embedding? Most web-based services nowadays do so, but some restrict functionality.

  • Embedding widgets available: Does the 3rd party provide some widget code, which can be used for embedding? In the best case, the 3rd party already has some snippets ready, which do all the necessary embedding. This is the case e.g. for YouTube videos. In this case, we use the extension Widgets to create a wrapper, which includes the snippets mostly as they are provided. This is required for security reasons. Embeddings are very good for displaying complex content, such as video players, specialized graphics, dynamic diagrams, and so on, which require some sort of player.
  • API provided: If the 3rd party provides API access, an extension needs to be written, which calls the API and pulls the relevant data. This data then has to be transformed and be presented within the wiki. Depending on the complexity of the API, this can be a very simple task, but also a very challenging endeavor. API is very good for asking complex queries to the 3rd party database, and when the focus is mostly on the data retrieved (as opposed to the visualization).
  • SDK provided: Some 3rd parties provide software development kits that help creating complex applications on top of the software. Using SDKs is the best means when there is some complex interaction required between the wiki and the 3rd party, but typically the development of such connectors is very time-intense.

Authentication and access control

This is a limiting factor to which of the above ways can be used.

  • Client (browser) based authentication: The user has to be logged into the 3rd party system. On the pro side, the application has full control over authentication and access control. On the con side, this can be a nuisance in case there is no single login system in place, since the user will be prompted for logins.
  • Server side authentication: Communication between the 3rd party and the wiki is done on the server side. This means, the server has to take control over authentication. In this scenario, typically, communication takes place using a proxy user. On the pro side, this means the wiki user does not care about authentication. On the con side, however, per-user access control becomes hard to implement. It is possible, though.

Level of integration

  • Tease and redirect: In some scenarios, an integration wants to only get the attention of a user. For deep interaction, the user is redirected to the 3rd party software. This is the case, e.g., for embedding a ticket system number (which simply shows the ticket state, but for any interaction, the user has to follow the link to the ticket system).
  • Full read: In this scenario, the embedded content should be fully readable, such as with videos or graphics. There is no editing required.
  • Full interact: In this scenario, the full range of interaction should be supported. This is the case in BlueSpice with embedding Draw.io diagrams.

There are several technical ways of embedding content. Mostly, we would try to work with widgets, as long as there is an embedding code or some iframe solution.



To submit feedback about this documentation, visit our community forum.

Discussions