Views
Share Components (Proposed)
From alfrescowiki
This article refers to a proposed feature in Alfresco Share
Share Components provide a system for finding, installing and publishing SURF-based components for Alfresco Share.
A component is a collection of web scripts, Surf components and static assets, in addition to any supporting repository-tier web scripts, which can be installed into an Alfresco Share instance. Components may be packaged using the ZIP file format (or ACPs/Jars?), allowing for easy distribution and installation into the Alfresco repository which is used as a container.
Initially support should be provided within the Share Administration Console for searching one or more configured component stores and installing components on a system-wide basis. Ideally, certain components such as themes, language packs and dashlets would be installable by normal users for their own individual use. This would require deeper changes to Surf to allow different sets of web scripts or Surf components to be 'visible' for different users.
Contents |
High Level Components
Web Tier Support
- Configuration for loading web scripts and SURF components from a remote Alfresco repository via HTTP
- Admin console component for managing installed components and installing new components
Repository Support
- Data Dictionary structures for holding installed component metadata and files, plus data on configured component stores
- Bootstrap configuration to create the required Data Dictionary structures from an ACP file
- Web script Store API for querying, fetching, adding, updating and removing individual component items - similar to the existing AVM store API
- Web script Component API for querying, fetching, adding, updating and removing installed complete components
- Web script Component Store List API for managing the list of configured stores
- Implements a Component Store RESTful API providing access to components, search capabilities and feedback (ratings/comments), May extend Component API?
Detailed Design
Data Dictionary structures
Consumer structure
cm:share_components
|
|- cm:components
|- components.json
|- stores.json
|- cm:site_data
|- chrome
|- component-types
|- components
|- configurations
|- content-associations
|- page-associations
|- page-types
|- pages
|- template-instances
|- cm:site_resources
|- cm:site_webscripts
|- org
|- alfresco
|- ...
|- cm:templates
|- cm:webscripts
Store structure
cm:share_component_store
|
|- packages
|- org.alfresco.component.dashlet.site-tags
|- org.alfresco.component.dashlet.site-tags.acp
|- org.alfresco.component.dashlet.site-tags.jar
|- sources
|- org.alfresco.component.dashlet.site-tags
|- site-webscripts
|- webscripts
Component Store API
Store metdata
GET /componentstore/details (JSON)
List components
GET /componentstore/index - All components GET /componentstore/index/t/site-dashlet - Filter by component type GET /componentstore/index/org/alfresco - Filter by org.alfresco namespace GET /componentstore/index/t/admin-console/org/alfresco - Filter by component type and namespace GET /componentstore/index/t/admin-console/org/alfresco?q=test - Filter by component type, namespace and search term q
Get/Update/Add/Delete a component
GET /componentstore/item/org/alfresco/components/dashlets/site-tags-dashlet - Return JSON metadata POST /componentstore/item/org/alfresco/components/dashlets/site-tags-dashlet - Create new item PUT /componentstore/item/org/alfresco/components/dashlets/site-tags-dashlet - Update item DELETE /componentstore/item/org/alfresco/components/dashlets/site-tags-dashlet - Delete item
Get/Set component files
GET /componentstore/package/org/alfresco/components/dashlets/site-tags-dashlet GET /componentstore/package/org/alfresco/components/dashlets/site-tags-dashlet?f=[acp|zip|jar] PUT /componentstore/package/org/alfresco/components/dashlets/site-tags-dashlet
Submit component ratings/comments
POST /componentstore/reviews/org/alfresco/components/dashlets/site-tags-dashlet (JSON format, fields 'rating' and 'comment')
Component Consumer API
Component stores configured for the current repository
GET /components/stores - Get a JSON list of the stores configured against this repository POST /components/stores/socs - Add a new store called socs PUT /components/stores/socs - Update the socs store DELETE /components/stores/socs - Delete the socs store
Store listings (held locally in the repo)
GET /components/storeitems - List all store items that we know about GET /components/storeitems?q=searchterm - List all store items matching a search term POST /components/storeitems/update - Re-fetch the list of store items from the stores' APIs
Install component
POST /components/install/566 - Install component with local ID 566 POST /components/update/566 - Update component with local ID 566 to latest version available from the stores DELETE /components/delete/566 - Uninstall component with local ID 566 DELETE /components/delete/org/alfresco/components/dashlets/site-tags/dashlet - Uninstall component with ID org.alfresco.components.dashlets.site-tags-dashlet
Source Code
See [1]