Dear Wiki user, You have subscribed to a wiki page or wiki category on "Lenya Wiki" for change notification.
The following page has been changed by AndreasHartmann: http://wiki.apache.org/lenya/JcrContentModel ------------------------------------------------------------------------------ ---- - * [JcrContentModelDraft Draft] + * [wiki:JcrContentModelDraft Draft] - * [JcrContentModelSiteStructure Site Structure] + * [wiki:JcrContentModelSiteStructure Site Structure] - * [JcrContentModelAreas Areas] + * [wiki:JcrContentModelAreas Areas] - * [JcrContentModelTranslations Translations] + * [wiki:JcrContentModelTranslations Translations] - - == Site Structure == - - Options: - - === Use JCR node hierarchy === - - * One "implicit" hierarchy - * Additional hierarchies possible: - * Via separate node hierarchies with references - * Via shared nodes (JSR 283) - - Advantages: - - * Simple - * Straightforward - * Better performance (?) - - === Use flat storage with artificial hierarchy === - - * Either XML stored in a property (like now) - * Or separate node hierarchy: - * Via references to the content nodes - * Via shared nodes (JSR 283) - - Advantages: - - * More flexibility re. content model (e.g. translations with common parent node) without constraining the URI space - - ---- - - == Areas (Authoring, Staging, Live) == - - This section refers to areas as abstract concepts, not necessarily modeled as separated content areas. - - Requirements: - - * independent from each other (changes to /authoring/foo don't influence staging/foo) - * self-contained - - Options: - - === Workspaces === - - Advantages: - - * Physically separated nodes with same UUID possible ("corresponding nodes" concept) - * Separated, independent - * Self-contained - - Issues: - - * Changing the site structure requires to remove the involved nodes from all non-authoring areas (like now) - * Copying access control definitions? - * {{{Node.update(workspace)}}} copies the subtree: - * either nodes must be kept in a flat structure (no hierarchy) - * or nodes and properties must be copied manually - * or use referenceable child nodes - - {{{ - /de - /foo < mix:referenceable - /lenya:document < mix:referenceable - /jcr:content = "Hello" - /bar - }}} - - Publish single node: - - {{{ - getItem("/de/foo/lenya:document").update("staging"); - }}} - - Publish subtree: - - {{{ - getItem("/de/foo").update("staging"); - }}} - - === Separated Areas in a Single Workspace === - - Advantages: - - * Simple access - - Issues: - - * Copying access control definitions required - * Different UUIDs: - * Either rewrite links - * Or don't use JCR UUIDs but custom String properties for UUIDs - - === Separated Areas in a Single Node === - - Example: - - {{{ - /foo - /lenya:authoring - /jcr:content = "Hello" - /lenya:staging - /jcr:content = "Hello" - /lenya:live - /jcr:content = "Hello" - /bar - /lenya:authoring - /⦠- }}} - - Advantages: - - * Simple - * Site structure can be changed without removing staged or published content - - Issues: - - * Areas not self-contained - * No direct URI-to-path mapping possible - * Changes to site structure would be visible in all areas immediately - - === Labelled Versions === - - * Issues: - * All changes applied immediately, without calling {{{Session.save()}}} - * Access control to version history? - - Submit: - - {{{ - VersionHistory history = node.getVersionHistory(); - Version base = node.getBaseVersion(); - boolean move = true; - history.addVersionLabel(base.getName(), "staging", move); - }}} - - Obtaining live version: - - {{{ - VersionHistory history = node.getVersionHistory(); - Node liveVersion = history.getVersionByLabel("live"); - Node liveNode = liveVersion.getChild("jcr:frozenNode"); - }}} - - ---- - - == Translations == - - * http://mail-archives.apache.org/mod_mbox/jackrabbit-users/200703.mbox/[EMAIL PROTECTED] - - Options: - - === Shared UUID === - - Advantages: - - * Referencing a node without specifying the language is possible (e.g., fallback to the default language if a translation doesn't exist) - - Issues: - - * JCR allows only one node with a particular UUID - * Either use a referenceable language-independent node - * Or don't use JCR UUIDs for references, but custom String-value properties - * With JCR UUIDs and a common referenceable parent node, structures like /en/welcome, /de/willkommen are not possible (would require separating the content hierarchy from the URI structure) - - === Non-Shared UUID === - - Advantages: - - * JCR UUIDs could be used - * Arbitrary content hierarchies / URI structures - * Automatic referencial integrity check with respect to language version (i.e., /foo_de can't be removed if /bar_de points to it) - - Issues: - - * References can only point to a particular translation - * A. Common parent node or artificial node - * Influences content hierarchy (and maybe URL structure) - * Obtain all translations of an artificial common node using {{{Node.getReferences()}}} - * B. No common parent node: relations between translations have to be maintained (or is this optional?) - * B.1. via multi-value reference property at each translation - * B.2. via language-independent node - * In either case, translations are not self-contained anymore - - Examples: - - Non-shared UUID, arbitrary structure - - {{{ - /de - /willkommen - /jcr:uuid = 1 - /jcr:language = "de" - /lenya:translations = { 2 } - /en - /welcome - /jcr:uuid = 2 - /jcr:language = "en" - /lenya:translations = { 1 } - }}} - - Non-shared UUID, arbitrary structure, explicit translation references - - {{{ - /welcome_de - /jcr:uuid = 1 - /jcr:language = "de" - /lenya:translations = { 2 } - /welcome_en - /jcr:uuid = 2 - /jcr:language = "en" - /lenya:translations = { 1 } - }}} - - Non-shared UUID, arbitrary structure, implicit translation references via URL structure (String operations) - - {{{ - /welcome_de - /jcr:uuid = 1 - /jcr:language = "de" - /welcome_en - /jcr:uuid = 2 - /jcr:language = "en" - }}} - - Non-shared UUID, common parent node - - {{{ - /welcome - /de - /jcr:uuid = 1 - /jcr:language = "de" - /en - /jcr:uuid = 2 - /jcr:language = "en" - }}} - - Shared UUID, common parent node - - {{{ - /welcome - /jcr:uuid = 1 - /de - /jcr:language = "de" - /en - /jcr:language = "en" - }}} - - Shared UUID, artificial shared node - - {{{ - /de - /willkommen - /lenya:sharedDocumentNode = 1 - /jcr:language = "de" - /en - /welcome - /lenya:sharedDocumentNode = 1 - /jcr:language = "en" - /lenya:sharedDocumentNodes - /welcome - /jcr:uuid = 1 - }}} - - Shared UUID, default language node is referenceable - - * Optional node type mix:referenceable assigned only to default-language nodes - * Default-language node must exist - - {{{ - /de - /willkommen - /lenya:defaultLanguageNode = 1 - /jcr:language = "de" - /en - /welcome - /jcr:uuid = 1 - /jcr:language = "en" - }}} - - Shared custom UUIDs - - {{{ - /welcome_de - /lenya:uuid = 1 - /jcr:language = "de" - /welcome_en - /lenya:uuid = 1 - /jcr:language = "en" - }}} - --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
