ICT:Automatic IDs: Difference between revisions
Created page with "{{#set:Description=Documentation for generating and querying automatic IDs using Page Forms and Cargo.}} = Automatic ID Generation for Cargo Tables = This page documents the workflow for generating automatic, composite IDs using the Page Forms and Cargo extensions. == Overview == While Page Forms does not have a "native" ID generator button, unique IDs can be constructed by: # Combining user-input attributes in the storage..." |
m Mngr moved page ICT:automatic IDs to ICT:Automatic IDs |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
'''Description:''' Documentation for generating and querying automatic IDs using Page Forms and Cargo, including Protected Namespace management. | |||
= Automatic ID Generation | = Automatic ID Generation & Namespace Control = | ||
This page documents the workflow for | This page documents the workflow for creating unique, automatic IDs and ensuring pages are saved within a specific Protected Namespace using [[Extension:Page Forms|Page Forms]] and [[Extension:Cargo|Cargo]]. | ||
== | == 1. Template Logic (Automatic ID Generation) == | ||
The best practice is to construct your ID inside the storage template. This allows you to combine multiple attributes and system values (like timestamps) before storing them in Cargo. | |||
=== Example Cargo Store === | |||
In your data template's <includeonly> section: | |||
=== Example Cargo | |||
<pre> | <pre> | ||
{{#cargo_store: | |||
_table = Projects | _table = Projects | ||
|ProjectID = {{{Category|}}}-{{{Year|}}}-{{#time:U}} | |||
|Category = {{{Category|}}} | |||
|Year = {{{Year|}}} | |||
}} | |||
</pre> | </pre> | ||
=== | == 2. Form Definition (Namespace & Page Naming) == | ||
In your | By defining the `page name` formula in the form, you can force all new pages into a specific namespace and ensure the URL itself acts as a unique identifier. | ||
=== Forcing a Protected Namespace === | |||
In the <info> tag, prefix your formula with the name of your protected namespace. | |||
<pre> | <pre> | ||
{{{info|page name=Archive:<Projects[Category]>-<Projects[Year]>-<unique number;start=001>}}} | |||
</pre> | </pre> | ||
== | === Validation for Uniqueness === | ||
To | To prevent manual ID collisions, use the `unique` parameter on a hidden field: | ||
<pre> | |||
{{{field|ProjectID|unique|input type=text|hidden}}} | |||
</pre> | |||
== | == 3. Querying Protected Data == | ||
When querying pages in a specific namespace, Cargo's `_pageName` will include the namespace prefix (e.g., `Archive:Project-101`). | |||
=== | === Query Example === | ||
<pre> | |||
< | {{#cargo_query: | ||
|tables = Projects | |||
|fields = _pageName=ID, Category | |||
|where = _pageNamespace = 102 | |||
|format = table | |||
}} | |||
</pre> | |||
</ | |||
== | == Comparison: Page Forms vs. Page Schemas == | ||
| Feature | Page Schemas | Manual Page Forms | | |||
* | | :--- | :--- | :--- | | ||
* | | **Namespace Control** | Limited / Hardcoded | Full (Dynamic via `page name`) | | ||
| **Custom ID Logic** | Difficult to customize | Unlimited (via ParserFunctions) | | |||
[[Category:Help]] | [[Category:Help]] | ||
[[Category:Cargo]] | [[Category:Cargo]] | ||
Latest revision as of 16:44, 29 January 2026
Description: Documentation for generating and querying automatic IDs using Page Forms and Cargo, including Protected Namespace management.
Automatic ID Generation & Namespace Control
This page documents the workflow for creating unique, automatic IDs and ensuring pages are saved within a specific Protected Namespace using Page Forms and Cargo.
1. Template Logic (Automatic ID Generation)
The best practice is to construct your ID inside the storage template. This allows you to combine multiple attributes and system values (like timestamps) before storing them in Cargo.
Example Cargo Store
In your data template's <includeonly> section:
{{#cargo_store:
_table = Projects
|ProjectID = {{{Category|}}}-{{{Year|}}}-{{#time:U}}
|Category = {{{Category|}}}
|Year = {{{Year|}}}
}}
2. Form Definition (Namespace & Page Naming)
By defining the `page name` formula in the form, you can force all new pages into a specific namespace and ensure the URL itself acts as a unique identifier.
Forcing a Protected Namespace
In the <info> tag, prefix your formula with the name of your protected namespace.
{{{info|page name=Archive:<Projects[Category]>-<Projects[Year]>-<unique number;start=001>}}}
Validation for Uniqueness
To prevent manual ID collisions, use the `unique` parameter on a hidden field:
{{{field|ProjectID|unique|input type=text|hidden}}}
3. Querying Protected Data
When querying pages in a specific namespace, Cargo's `_pageName` will include the namespace prefix (e.g., `Archive:Project-101`).
Query Example
{{#cargo_query:
|tables = Projects
|fields = _pageName=ID, Category
|where = _pageNamespace = 102
|format = table
}}
Comparison: Page Forms vs. Page Schemas
| Feature | Page Schemas | Manual Page Forms | | :--- | :--- | :--- | | **Namespace Control** | Limited / Hardcoded | Full (Dynamic via `page name`) | | **Custom ID Logic** | Difficult to customize | Unlimited (via ParserFunctions) |