This page describes changes from the current implementation of the JCR-agnostic content apps spike, where we still seek a general concept or where we look for architecture approval.
Status 2014.02.26
- DataSource interface responsibilities
- Mika yet to update diagram on JCR agnostic concept
- we come with an idea how to deal with Containers/ContentPresenters in the future
- ContainerConfiguration
- ContainerConfiguration
- Currently has two responsibilities
- providing "data source" (Vaadin Container, Item)
- translating itemId to URL fragment and vice-versa
- Naming of the "data source" object
- DataSource
- ContentSource
- ContentConnector
- Configuration
- "Stateless" object VS. Definition
- see Proposed configuration below
- ContentChangeEvent with just itemIds
- should carry item?
- to which "domain" an item belongs to?
- are workspace/nodeType matching?
- JcrContentChangeEvent ---> ContentChangeEvent ???
- Current proposal: info.magnolia.ui.vaadin.integration.datasource.DataSource.hasItem(Object)
Proposal: use a new JcrItemId type as Vaadin itemId rather than String uuid
- workspace
- identifier
- Datasource #canHandle (basic type / property checking)
- ActionExecutor and availability (Sasha)
- we currently only split AvailabilityRule VS. JcrAvailabilityRule
- yet to comes up with a sub-concept for the long run (ActionbarPresenter and/or ContextMenu doing availability checks)
- draft impl of VoterBasedAvailability
- Availability.isAvailableForItems
- N2B transformer for node / properties / shorthands
- Injecting DataSource
- e.g. in EditItemAction
- needs to create DetailLocation
- injects dataSource
- Current proposal: DataSourceProvider implements javax.inject.Provider and is registered only for subapp scope
- only creates DataSources for ContentSubApps (browser/detail)
- Action parameters
- BrowserPresenter #prepareActionArgs
- Current proposal: ActionEvent / Inplace editing
- String actionName, Set<Object> itemIds, Map<String, Object> parameters
- concrete cases
- saveItemProperty needs propertyId and actual property
- saveForm needs actual item or JCR adapter
- placeholders
- default execute action
- default delete action
- see in DirectUploadAction <=> ActionRenderers
- BaseDialogPresenter exposes getActionParameters
- passing UI context around from ActionRenderers via #onActionFired
- need concept for passing set of expected parameters to Action
- e.g. item vs. itemId vs. location path
- BrowserPresenter #prepareActionArgs
Proposed configuration
- subApps
- browser
- actions
- editFolder
- availability
- actionbar
- dataSource
- class: info.magnolia.ui.contentapp.dsmanager.JcrDataSourceDefinition
- workspace: contacts
- rootPath: /
- nodeTypes
- includeProperties
- includeSystemNodes
- workbench
- contentViews
- detail
- editor
- nodeType
- dataSource
- extends: ../../browser/dataSource (/!\ duplicate instance)
Module structural changes
- rename magnolia-ui-vaadin-integration >> magnolia-ui-vaadin-jcr-integration
- adapters, as is currently
- move jcr containers here
- make workbench module (or subpackage) independent of vaadin-jcr-integration module
- new module magnolia-ui-workbench-jcr depends on both
- - NOT UP TO DATE
Overview
Content Tools
Apps
Activity