Manual:Extension/BlueSpiceDiscovery/Main navigation and Integration of third party content: Difference between pages

(Difference between pages)
No edit summary
 
mNo edit summary
 
Line 1: Line 1:
{{DISPLAYTITLE:Main navigation}}
Integration of third party content into a wiki page can be achieved in various ways. It depends on several factors.
<bookshelf src="Book:Admin manual" />
==How does the main navigation work?==
By default, some links are provided as entry points to the wiki. Wiki administrators can deactivate these links in the [[Manual:Extension/BlueSpiceConfigManager|configuration manager]] if needed. In addition, you can also add new links below the entrypoints (admin permissions required). Please note that no hierarchical links can be created. Therefore, it makes sense to mainly set up links to the most important topics and to  portal pages that contain additional links or page lists.
[[File:Manual:skin-discovery-hauptnavigation-EN.png|alt=Main navigation|center|thumb|402x402px|Main navigation]]


==Visual edit mode (menu editor)==
== Embedding support by 3rd party ==
{{BSVersion|bsvFrom=4.2|bsvTo=|bsvFeature=Visual menu editor}}
Does the software support embedding actively or through interfaces? Most web-based services today do, but some limit functionality.
'''To add a new menu header using the menu editor:'''


#'''Click''' ''edit sidebar'' at the bottom of the navigation menu. the page ''MediaWiki:Sidebar'' from the browser address bar. If the page does not exist yet, you will see a notice on the page.
* '''Embedding widgets available:''' Does the 3rd party provide some widget code that can be used for embedding? In the best case, the 3rd party will provide some snippets that do all the necessary embedding. This is the case with YouTube videos, for example. In this case, we use the Widgets extension to create a wrapper that mostly includes the snippets as they are provided. This is necessary for security reasons. Embeddings are very good for displaying complex content, such as video players, special graphics, dynamic charts, and so on, which require some kind of player.
#'''Click''' ''Add new element'' to create a new menu header.
* '''API provided:''' If the third party provides API access, an extension must be written that calls the API and retrieves the relevant data. This data then needs to be transformed and presented within the wiki. Depending on the complexity of the API, this can be a very simple task or a very challenging one. The API is very good for making complex queries to the 3rd party database and when the focus is mostly on the retrieved data (as opposed to the visualization).
#'''Enter''' the text for your menu header. In a multilingual wiki, you can also enter a [[mediawikiwiki:Help:System_message|message key]].
* '''SDK provided:''' Some 3rd parties provide software development kits to help build complex applications on top of the software. Using SDKs is the best means when some complex interaction between the wiki and the 3rd party is required, but typically developing such connectors is very time consuming.


<span><br /></span>
== Authentication and access control ==
'''To add links:'''
This is a limiting factor to which of the above ways can be used.


#'''Select''' ''Add new subitem''  from the dropdown menu of the menu header.[[File:Main navigation 1667828722138.png|alt=add a link|none|thumb|add a link as a new subitem]]
* '''Client (browser) based authentication:''' The user must 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 annoying if there is no single sign-on system in place, as the user will be prompted to log in.
#Enter the page name as the link target and the label that you want to show:[[File:Main navigation 1667828849101.png|alt=enter link info|none|thumb|enter link info]]
* '''Server side authentication:''' Communication between the 3rd party and the wiki is server-side. This means that the server must take control of authentication. In this scenario, communication typically takes place using a proxy user. On the pro side, this means that the wiki user does not have to worry about authentication. On the con side, however, per-user access control becomes difficult to implement. It is possible, though.
#'''Click''' ''Done.''
#'''Repeat''' steps 1-3.
#'''Click''' ''Save changes''.
{{Messagebox|boxtype=note|icon=|Note text=If you use the parser function <code><nowiki>{{#ifingroup:...</nowiki> </code> to display navigation elements in the source code, you must always edit the main navigation in the source code. In visual editing mode, saving removes any parser function or semantic queries.|bgcolor=}}
#


<span><span /><span /><span /><br /></span> '''To add new links:'''
== Level of integration ==


#'''Click''' ''edit sidebar'' below the navigation links.
* '''Tease and redirect:''' In some scenarios, an integration just wants to get a user's attention. For deeper interaction, the user is redirected to the 3rd party software. This is the case, for example, when embedding a ticket system number (which simply shows the ticket status, but for any interaction the user must follow the link to the ticket system).
#'''Change''' to source editing mode.
* '''Full read:''' In this scenario, the embedded content should be fully readable, such as video or graphics. No editing is required.
#'''Create''' one or more navigation links (with or without section heading).  The following example shows a link to the page "Company" with the label "Our company" and an external link to the BlueSpice website with the label "Website". The links are grouped together under the section heading "Quicklinks":<syntaxhighlight lang="text">
* '''Full interact:''' In this scenario, the full range of interaction should be supported. This is the case in BlueSpice with embedding Draw.io diagrams.
*Quicklinks
**Company|Our company
**https//www.bluespice.com/de|Website
</syntaxhighlight>
#'''Save''' the page. The links are now shown in the main navigation.
{{Messagebox|boxtype=note|icon=|Note text=As soon as you have created at least one additional link, a direct edit link to the ''MediaWiki:Sidebar'' page is displayed when you move the mouse over such a link (see screenshot above).|bgcolor=}}


<span class="ve-pasteProtect">Link labels may collide with system messages. If this is the case, simply append the HTML-code for an empty space to the description:</span><syntaxhighlight lang="text">
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.
**Portal|Portal&#160;
</syntaxhighlight>


==Deactivating standard links==
==See also==
The standard links can be deactivated in the  [[Manual:Extension/BlueSpiceConfigManager|configuration manager]]. The following settings are available under ''Feature > Skinning'':


<span><span /><span /><span /><br /></span>
*[[Reference:Widgets]]
BlueSpiceBookshelf:
*[https://www.mediawikiwidgets.org/Widgets_Catalog mediawikiwidgets.org: Widgets Catalog]


*Show entrypoint "Bookshelf"
BlueSpiceDiscovery:
*Show entrypoint "Mainpage"
*Show entrypoint "All pages"
*Show entrypoint "Recent changes"
BlueSpiceSocial:
*Show entrypoint "Timeline"
BlueSpiceSocialBlog:
* Show entrypoint "Blog"
==Group-specific navigation==
<span style="color: rgb(51, 51, 51)">It is possible to show navigation elements for specific user groups only. Please note that the pipe symbol (|) between the page name and its label has to be escaped as</span> <code><nowiki>{{!}}</nowiki></code> <span style="color: rgb(51, 51, 51)">within this function.</span>
This syntax is defined in the extension [[Reference:UserFunctions|UserFunctions]].<syntaxhighlight lang="text">
{{#ifingroup:sysop,widgeteditor |
*Test2                     
**somepage{{!}}Some page
|}}
</syntaxhighlight>
==Additional customizations ==
*[[Manual:Extension/BlueSpiceDiscovery/Main navigation/Icons|Display icons with navigation links]]
*[[Manual:Extension/BlueSpiceDiscovery/Main navigation/Language support|Multi-language navigation]]
<span /><span /><span /><span /><br />
[[Category:Administration]]
[[Category:Customization]]
[[Category:Customization]]
[[en:{{FULLPAGENAME}}]]
[[en:{{FULLPAGENAME}}]]
[[de:Handbuch:Erweiterung/BlueSpiceDiscovery/Hauptnavigation anpassen]]
[[de:Integration von Drittanbieter-Inhalten]]

Latest revision as of 19:19, 24 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 support embedding actively or through interfaces? Most web-based services today do, but some limit functionality.

  • Embedding widgets available: Does the 3rd party provide some widget code that can be used for embedding? In the best case, the 3rd party will provide some snippets that do all the necessary embedding. This is the case with YouTube videos, for example. In this case, we use the Widgets extension to create a wrapper that mostly includes the snippets as they are provided. This is necessary for security reasons. Embeddings are very good for displaying complex content, such as video players, special graphics, dynamic charts, and so on, which require some kind of player.
  • API provided: If the third party provides API access, an extension must be written that calls the API and retrieves the relevant data. This data then needs to be transformed and presented within the wiki. Depending on the complexity of the API, this can be a very simple task or a very challenging one. The API is very good for making complex queries to the 3rd party database and when the focus is mostly on the retrieved data (as opposed to the visualization).
  • SDK provided: Some 3rd parties provide software development kits to help build complex applications on top of the software. Using SDKs is the best means when some complex interaction between the wiki and the 3rd party is required, but typically developing such connectors is very time consuming.

Authentication and access control

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

  • Client (browser) based authentication: The user must 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 annoying if there is no single sign-on system in place, as the user will be prompted to log in.
  • Server side authentication: Communication between the 3rd party and the wiki is server-side. This means that the server must take control of authentication. In this scenario, communication typically takes place using a proxy user. On the pro side, this means that the wiki user does not have to worry about authentication. On the con side, however, per-user access control becomes difficult to implement. It is possible, though.

Level of integration

  • Tease and redirect: In some scenarios, an integration just wants to get a user's attention. For deeper interaction, the user is redirected to the 3rd party software. This is the case, for example, when embedding a ticket system number (which simply shows the ticket status, but for any interaction the user must follow the link to the ticket system).
  • Full read: In this scenario, the embedded content should be fully readable, such as video or graphics. No editing is 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.

See also




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

Discussions