Create once, use everywhere. This credo is the basis for most objects and their relations. For example, the client has a logo, so there's exactly one logo element, which then gets used on all templates that should have a logo. When you have to update the logo, you only do that once, and it's updated everywhere. The same goes for fonts, colors, text styles, relations and so on.
Furthermore, the system is inherently multi-lingual and multi-color-spaced, i.e. a slogan will be different depending on the language, but it is still just one element. Or the CMYK logo is usually a different vector file than the RGB one, but it is also just one element.
A note on languages: The system differentiates between user interface languages and content languages. In other words, you can order a German flyer while your user interface is set to English. Hence you may be asked to enter a title in a language that can't be ordered in a template, or vice versa.
Users work pretty much as you might expect them to - each user has a login (either directly or through SSO) and some properties, such as their address (for shipping etc.). A user belongs to exactly one group and has a specific role - both of which is relevant for the permissions that the user gets.
A users role is an abstraction for a set of functional permissions, e.g. if a user is allowed to release orders. These functional permissions apply system-wide, but their scope may be restricted through group permissions (see groups). You can either choose one of the default roles, create a specific role for that user (Custom ACL) or create your own role (Users -> Roles). The following functional permissions are available:
User groups are a mechanism to assign permissions to a set of users. In contrast to the role, these permissions always have a context, e.g. group A can see templates B, or user C can release templates D.
Note that group permissions are a deny-list (aka blacklist), so when you add new ones, check their permissions.
Permissions can be assigned for
Depending on the context, these permissions can be assigned either via template groups or via user groups. When using both at once, an intersection (matching template group AND user group) is attempted. Failing that, a union will be used (matching template group OR user group). If there are still no matching users, the master controller will be informed.
A template is simply an aggregation of elements that get placed at certain coordinates on a canvas. By itself it doesn't do much, except define the properties of the canvas and how a user can order it (such as output format, delivery and controlling).
Templates do however control the dimension(s), the ordering and release processes and other aspects of the rendering process.
/admin/customfieldsand can be assigned on a pre-template basis. You can also re-order the fields through drag & drop.
Controls technical aspects of the rendering phase, such as ICC profiles, cut marks and imposing (e.g. re-rendering business cards on a bigger sheet for efficient printing)
You can optionally add instructional messages for each step along an order's life, both for the author when they're editing or ordering, as well as for each step in the workflow (controlling, graphics, printing).
Layouting is where the rubber meets the road. This is where all of the previous work setting up elements and styles comes to fruition - even though we're simply drawing rectangles at this point.
Example: for a business card, all the different inputs can be condensed down to just two rectangles. A text group does the heavy lifting assembling all the text inputs and their style. And of course there's the logo.
This is where a previously uploaded preview image comes in handy, so you can see what you're aiming for.
In order to assign an element to the template, drag it from the available to the used elements. Note that their position in the list are relevant for both the order in which the elements get drawn, as well as the order in which their inputs are presented to the user. To define its coordinates, enable visibility (as not all elements need to have a coordinates) and adjust them as needed, either by dragging or by entering the coordinates manually at the top (keyboard shortcuts are available, check the help button in the toolbar). At this point you can also override styles in the lower left corner. By default, the parent style of the element is used, but you can override every setting by unchecking the inheritance checkbox. This is where you'd set your font sizes etc. Note that assignment-private text styles can be generated through the plus-button next to the style dropdowns.
In order to test a layout, first click the save button and then the test button right next to it. This will open a new tab with the same editing experience that a regular end-user would have. Having an open test tab also enables you to use the live-preview mode, which gets updated automatically each time you save.
Linked templates exist so that you can have different ordering behavior while borrowing the actual layout from another template. So all the same options are available as in a regular template, except you can't change the layout.
An element is an isolatable component of your layout. It could be a logo, an address block or a heading. All of these get broken out into their own element, so they can be reused and reassembled later on. An element has a few fundamental properties:
A special kind of element that allows you to combine multiple elements into a single block of text. For example, an address block consists of multiple input fields (name, street, ZIP/city, phone, mobile etc.), but should be rendered into one block of text like:
Name Street ZIP City T: Phone, M: Mobile
But it is more than just an aggregator, it can also assemble the texts in a sensible manner. In our example, the user might not want to publish their mobile phone number and leaves the input field empty. The text group detects this and also removes the
, M: that came before the mobile, as it is no longer needed and hence renders to:
Name Street ZIP City T: Phone
In the UI, this is represented with lines - when the center element disappears or is empty, the entire line is not rendered:
Additionally, each element can have its own text style (if the style is allowed as an inline style of that element). Lastly, each element can also be displayed or hidden depending on if the last line was visible (useful for commas vs. line breaks depending on the input that was provided)
The output types define how an element is rendered on a canvas and which styling options are available.
Available styling, mostly depending on the output type. Some general settings will always be available, while others, such as text style, will only apply to text elements.
Note that while it's possible to not define a style for your elements, the renderer might not like not knowing what font to use and will either use a fallback or refuse to render it at all.
Text styles are defined separately and should also be held as generic as possible. So for example, you define how a headline generally looks, but the exact font size is probably better left to the individual element assignment. You can and perhaps should specify a default size anyway, but don't create multiple very similar styles.
Colors and Fonts are also handled separately and are available globally, so you only need to define just what shade of blue your company uses, and then you can re-use that everywhere (font color, border color, fill color, etc.). The same goes for fonts, with a small concession to how Rich Text Editors work, i.e. you must define what exactly "bold" and "italics" means in regards to the current font style.
Probably the most powerful feature of brix:papilio - it allows you to dynamically update the layout, update dropdowns or make entire sections of your layout disappear. Relations are only available on value lists, i.e. dropdowns and checkboxes (which is treated as a dropdown with two values, true and false).
Under Elements > Relations, the following relation types are available:
To get an overview of the existing relations, use the diagram tab.
Relations only work top-down, e.g. only elements that appear before your target can have an influence on the values of your target, in order to prevent update-loops.
Another motivation to use relations is consistency. For example, some subtitles may not make sense depending on the title you chose. For example, the title "Merry Christmas" may be combined with the subtitle "and a happy new year", but not with "may the force be with you". To ensure this, you can simply create a value relation title->subtitle to restrict what's available in the second dropdown.
In the UI, this is represented in two columns, one to hook up the source element to the target element. The second column is then used to connect source values to certain target values.
By default, no restrictions apply - but as soon as you start restricting certain values, all target values are expected to be mapped - otherwise they won't show up. This means that when you add new values to an element with relations later on, you should check the corresponding relations - otherwise the new value may or may not show up as you expect.
If you have several variants of a layout, you don't have to create a new template for each variant - you can just use relations. For example, your brochure may have one or two contacts on it, and the layout changes based on the space that is available as a consequence. Since a picture says more than a thousand words, here's an example: This is a single template, with the options "show portrait photo" and "second address" toggled on/off. Note how it doesn't just make elements disappear - in the last one it rearranges the layout to make space for the two photos.
The administration of these relations work in a similar manner to the value relation, only that the left column only contains source elements, as the target elements appear in the column on the right, as they are the target value in this case.
Style relations can be used to change the look of other elements, based on a selected value. This is useful for light vs. dark backgrounds for example, where you may want to invert the color of the headline:
In addition to the global relations that work on the element regardless of where it is used, template relations only apply to a single template and are thus administered under Templates (
The available relations are limited to visibility- and style-relation, but you can change the visibility or the style on every element assignment (placement of an element on a template), as you may show/hide the same element in different places, depending on what was selected before (the portrait photos in the screenshot above are a good example).
In order to indicate which element assignment is which, the order in which they appear in is appended at the end like element (1). Elements that belong to a text group will be in textgroup-order but will carry the same number (the one of the text group).