((h2 (@ (id . "welcome-zettel")) "Welcome Zettel") (ul (li (p (strong "Problem:") " You want to put your Zettelstore into the public and need a starting zettel for your users." " " "In addition, you still want a " (@L (@H "“") "home zettel" (@H "”")) ", with all your references to internal, non-public zettel." " " "Zettelstore only allows to specify one " (a (@ (href . "00001004020000#home-zettel")) (kbd "home-zettel")) ".")) (li (p (strong "Solution 1:")) (ol (li "Create a new zettel with all your references to internal, non-public zettel." " " "Let's assume this zettel receives the zettel identifier " (kbd "20220803182600") ".") (li "Create the zettel that should serve as the starting zettel for your users." " " "It must have syntax " (a (@ (href . "00001008000000#zmk")) "Zettelmarkup") ", i.e. the syntax metadata must be set to " (kbd "zmk") "." " " "If needed, set the runtime configuration " (a (@ (href . "00001004020000#home-zettel")) "''home-zettel") " to the value of the identifier of this zettel.") (li "At the beginning of the start zettel, add the following " (a (@ (href . "00001007000000")) "Zettelmarkup") " text in a separate paragraph: " (code "{{{20220803182600}}}") " (you have to adapt to the actual value of the zettel identifier for your non-public home zettel)."))) (li (p (strong "Discussion:") " As stated in the description for a " (a (@ (href . "00001007031100")) "transclusion") ", a transclusion will be ignored, if the transcluded zettel is not visible to the current user." " " "In effect, the transclusion statement (above paragraph that contained " (kbd "{{{...}}}") ") is ignored when rendering the zettel.")) (li (p (strong "Solution 2:") " Set a user-specific value by adding metadata " (kbd "home-zettel") " to the " (a (@ (href . "00001010040200")) "user zettel") ".")) (li (p (strong "Discussion:") " A value for " (kbd "home-zettel") " is first searched in the user zettel of the current authenticated user." " " "Only if it is not found, the value is looked up in the runtime configuration zettel." " " "If multiple user should use the same home zettel, its zettel identifier must be set in all relevant user zettel."))) (h2 (@ (id . "role-specific-layout-of-zettel-in-web-user-interface-webui")) "Role-specific Layout of Zettel in Web User Interface (WebUI)") (p (a (@ (id . "role-css")))) (ul (li (p (strong "Problem:") " You want to add some CSS when displaying zettel of a specific " (a (@ (href . "00001006020000#role")) "role") "." " " "For example, you might want to add a yellow background color for all " (a (@ (href . "00001006020100#configuration")) "configuration") " zettel." " " "Or you want a multi-column layout.")) (li (p (strong "Solution:") " If you enable " (a (@ (href . "00001004020000#expert-mode")) (kbd "expert-mode")) ", you will have access to a zettel called " (@L (@H "“") (span "Zettelstore Sxn Start Code") (@H "”")) " (its identifier is " (kbd "00000000019000") ")." " " "This zettel is the starting point for Sxn code, where you can place a definition for a variable named " (@L (@H "“") "CSS-ROLE-map" (@H "”")) ".") (p "But first, create a zettel containing the needed CSS: give it any title, its role is preferably " (@L (@H "“") "configuration" (@H "”")) " (but this is not a must)." " " "Its " (a (@ (href . "00001006020000#syntax")) (kbd "syntax")) " must be set to " (@L (@H "“") (a (@ (href . "00001008000000#css")) "css") (@H "”")) "." " " "The content must contain the role-specific CSS code, for example " (code "body {background-color: #FFFFD0}") "for a background in a light yellow color.") (p "Let's assume, the newly created CSS zettel got the identifier " (kbd "20220825200100") ".") (p "Now, you have to map this freshly created zettel to a role, for example " (@L (@H "“") "zettel" (@H "”")) "." " " "Since you have enabled " (kbd "expert-mode") ", you are allowed to modify the zettel " (@L (@H "“") (span "Zettelstore Sxn Start Code") (@H "”")) "." " " "Add the following code to the Sxn Start Code zettel: " (code "(set! CSS-ROLE-map '((\"zettel\" . \"20220825200100\")))") ".") (p "In general, the mapping must follow the pattern: " (code "(ROLE . ID)") ", where " (kbd "ROLE") " is the placeholder for the role, and " (kbd "ID") " for the zettel identifier containing CSS code." " " "For example, if you also want the role " (@L (@H "“") "configuration" (@H "”")) " to be rendered using that CSS, the code should be something like " (code "(set! CSS-ROLE-map '((\"zettel\" . \"20220825200100\") (\"configuration\" . \"20220825200100\")))") ".")) (li (p (strong "Discussion:") " you have to ensure that the CSS zettel is allowed to be read by the intended audience of the zettel with that given role." " " "For example, if you made zettel with a specific role public visible, the CSS zettel must also have a " (a (@ (href . "00001010070200")) (kbd "visibility: public")) " metadata."))) (h2 (@ (id . "zettel-synchronization-with-icloud-apple")) "Zettel synchronization with iCloud (Apple)") (ul (li (p (strong "Problem:") " You use Zettelstore on various macOS computers and you want to use the sameset of zettel across all computers.")) (li (p (strong "Solution:") " Place your zettel in an iCloud folder.") (p "To configure Zettelstore to use the folder, you must specify its location within you directory structure as " (a (@ (href . "00001004010000#box-uri-x")) (kbd "box-uri-X")) " (replace " (kbd "X") " with an appropriate number)." " " "Your iCloud folder is typically placed in the folder " (kbd "~/Library/Mobile Documents/com~apple~CloudDocs") "." " " "The " (@L (@H "“") (kbd "~") (@H "”")) " is a shortcut and specifies your home folder.") (p "Unfortunately, Zettelstore does not yet support this shortcut." " " "Therefore you must replace it with the absolute name of your home folder." " " "In addition, a space character is not allowed in an URI." " " "You have to replace it with the sequence " (@L (@H "“") (kbd "%20") (@H "”")) ".") (p "Let us assume, that you stored your zettel box inside the folder " (@L (@H "“") "zettel" (@H "”")) ", which is located top-level in your iCloud folder." " " "In this case, you must specify the following box URI within the startup configuration: " (kbd "box-uri-1: dir:///Users/USERNAME/Library/Mobile%20Documents/com~apple~CloudDocs/zettel") ", replacing " (kbd "USERNAME") " with the username of that specific computer (and assuming you want to use it as the first box).")) (li (p (strong "Solution 2:") " If you typically start your Zettelstore on the command line, you could use the " (kbd "-d DIR") " option for the " (a (@ (href . "00001004051000#d")) (kbd "run")) " sub-command." " " "In this case you are allowed to use the character " (@L (@H "“") (kbd "~") (@H "”")) ".") (p (kbd "zettelstore run -d ~/Library/Mobile\\ Documents/com\\~apple\\~CloudDocs/zettel")) (p "(The " (@L (@H "“") (kbd "\\") (@H "”")) " is needed by the command line processor to mask the following character to be processed in unintended ways.)")) (li (p (strong "Discussion:") " Zettel files are synchronized between your computers via iCloud." " " "Is does not matter, if one of your computer is offline / switched off." " " "iCloud will synchronize the zettel files if it later comes online.") (p "However, if you use more than one computer simultaneously, you must be aware that synchronization takes some time." " " "It might take several seconds, maybe longer, that new new version of a zettel appears on the other computer." " " "If you update the same zettel on multiple computers at nearly the same time, iCloud will not be able to synchronize the different versions in a safe manner." " " "Zettelstore is intentionally not aware of any synchronization within its zettel boxes.") (p "If Zettelstore behaves strangely after a synchronization took place, the page about " (a (@ (href . "00001018000000#working-with-files")) "Troubleshooting") " might contain some useful information."))))