Customize Deeplinks
General
Deep links in PLANTA project allow you to execute user-defined actions directly via URL. For example, users can access a linked module directly from an email—without having to manually navigate the system.
Technical Implementation
Requirements
Creation of a user-defined class that inherits from
BaseProtocolAction.
Procedure
Define a class by
generating a subclass of
ppms.protocol.BaseProtocolAction,
implement the execute() method,
access URL parameters,
self.path_parametersfor path segments andself.query_parametersfor query strings.
Example
from ppms.protocol import BaseProtocolAction, get_any_module_object
class OpenCustomerModuleAction(BaseProtocolAction):
def execute(self):
module = get_any_module_object()
module.open_module('100000')
Note
Save the class, e.g. in
customer/protocol.py.
Create Deeplinks
Procedure
Create a new entry in the Deeplink module:
Set action to a user-defined URL (e.g.
/special_module),Set the Python function to the path to your Python class (e.g.
customer.protocol.OpenCustomerModuleAction),Set a checkmark in the Activated checkbox,
Define a Python ID to be able to reference this deeplink at a later point.
After setup, calling
<planta-web-client>/special_moduleopens module 100000.
Path and Query Parameters
Information
PLANTA deeplinks support both path parameters and query parameters. Both can be used for filtering or navigating nested hierarchies.
Path Parameter
Details
Used to clearly display hierarchical resources.
Path parameters can be defined directly in the deep link URL using angle brackets
< >:e.g.:
project/<pr_id>.Using the RESTful URL design.
Query Parameter
Details
Used for optional filters or additional modificators.
Automatic availability without having to explicitly define a query parameter:
e.g.:
project/4711?foo=bar
The flexibility may also lead to longer URLs.
Query parameter values are always lists, since a parameter can occur multiple times.
Error Handling
Note
If a user attempts to access a non-existent deep link, an error message is displayed (text constant
002502). Deeplink actions must treat invalid user input respectively in their implementation.