An App which allows a non-developer to easily create a content app.
- People will only create an app if they can.
- In 4.5 one can at least easily create a menu item which opens the configuration tree at a specific level.
- If non-developers can create apps - M5 will be more useful.
- Config App: A user can create a basic configuration App in 10 minutes.
- Content App: A non-technical user can create a basic configured content app in 1 hour.
Just some quick ideas helping to scope what this thing could do.
- Config App:
Image Editor actions:
A client wants an app that only shows the configuration tree for
enabling them to re-order the actions in the image editor.
- Config App:
A client wants an app that only shows the config tree for
enabling them to move, remove apptiles & groups.
- Content App:
STK pages App:
A client wants to easily setup & remove STK Pages. They want a content app which has a workbench listing all the pages with some reasonable columns in the list. They should be able to edit a page with an Item Sub app with a form with at least:
- category dropdown
- rendertype dropdown
- visible checkbox
- dialog (dropdown/ textfield)
- class textfield
- This app is essentially an editor for the configuration stored in JCR.
What components are used to build the pieces of an App? Where a workbench, where a form?
Principle: create as much as possible for a user without them having to do anything - create a workbench subapp, create standard actions, etc
- App Workbench SUBAPP = List view of apps.
- Create App
- Delete App
- Edit App Properties
- Manage Subapps
- Item SubApp
- App Properties
- Actual App Properteis
- “Default” Workbench Subapp quickstart properties (create a subapp instantly- beause most apps will need it - why force user to perform extra step?)
- Could it automagically let you select columns for the subapp based on the users Nodetype?
- Subapp Workbench SUBAPP = List view of subapps for an app.
- Option 1: Just a configuration app - with a tree for workbench & actionbar & subapp properties.
- Option 2:
- List of subapps
- Add workbench subapp, Delete, Edit Subapp Properties
- Dialogs/Item subapp
- Subapp Property editor
- Option 3:
- List of subapps
- Add workbench subapp (Same as option 2)
- Edit Actionbar - opens another Workbench subapp - with actions
- Edit Workbench Columns - opens another Workbench - with columns (ordering)
- Option 4:
- Does the App App module have its own node that specifies the apps that it creates?
- Could you also use it to customize existing apps?
- Can we use the App App to build the App App?
- If a Form App gets created - the App App should use it.
- How would a module creator use this app to quickly create an app for their module? Maybe when you create an app, you have the option to choose on which module it should be built.
- Similar pattern to the “Tool” apps (PageMainSubApp / PageSubAppDescriptor)?
Plan as if we have 1 week ( - but plan for a presentation on weds afternoon if necessary.)
What would be the MVP (Minimum viable product)?
What could be the phases of this large project?
- Create repo
- Create module structure “app-creator”
- Create Workbench Subapp
- configuration of actions
- Extend Open Item Subapp action to prepare form
- populate “workspace” dropdown list.
- populate multi-item select control with available workbench column fields based on Contacts App Form definition.
- Create the “Save dialog action” “Create App” action (which writes configuration tree to workspace)
- Create Item Subapp
- configure form with fields - name, label, icon, workspace, path, columns
- Add new app to the appsLauncher layout. For phase 1 add it to the edit group.
- Somehow name the app intelligently to prevent naming collisions - or validate name to ensure the name is not already in use.
- Create App in subapp instead of editor.
- Enable Editing an app that you created.
- Create “Page App Creator”
- Create “Config App Creator”
- Add workbench builder
- Add Form builder
- Add Actionbar builder
- Add way to create additional subapps (at least an item subapp)
Meeting #1 - March 11, 2013 11:00
- Focus on ContentApp.
- Module app-app
- Configuration of apps created by the AppApp are stored as apps in the AppApp module.
- To start with work on apps that edit existing node types.
- As first test/ use case, re-create the Contacts app.
Meeting #2 - March 11, 2013 12:00
- App Creation form also provides configuration for “default” workbench subapp. (Why make user create it when they will typically want it anyway.) Including workspace name, path, nodetypes etc.
- App Creation form also gives you a “column helper” control to select the columns for the workbench subapp based on a form that you point to. (Multiple selection field)
- To jumpstart this proof of concept - we’ll just point to the existing form for the Contacts app.
- Eventually we will provide a form builder - and the column helper would be built based on this form.
- To start with - this form builder can be just a configuration workbench app pointing to a form node.
- We feel we have the overall scope. Next we will break Phase 1 concept into tasks and assign tasks.
Implementation Details / Questions
- How does the workbench only show the apps and subapps - and not the other details?
- Use Cases
- Website workspace
- STK Templates
- Show Workbench
- Show Configuration changes
- appslauncher layout
Findings about M5
- cannot choose items (e.g. in choose dialog) which are configured by code
- cannot get a list of all registered dialogs/forms
- cannot use a custom form class to add specific value change handlers
- target app must be a content app to be able to use a choose dialog
- Significantly more complicated to create an item sub app then a dialog to edit an item. Necessarily?
- Could a SubApp specify a form in the same way that an EditDialogDefintion can (rather then having its own form - that might duplicate the dialog?
- dialogName: ui-appcreator-app:addApp
- Should be able to add additional instances of fields in a form - handle 1 or more of one kind of field - little + and - buttons for a field.
- Difficult to prepopulate fields dynamically - for example a select field.
- Fields in a form need a way to update based on activity in other fields.
- How to retrieve main node type bound to a workspace (NodeTypeManager holds all node types for all workspaces)?