Uploaded image for project: 'Magnolia CLI'
  1. Magnolia CLI
  2. NPMCLI-149

create-app and create-content-type commands

XMLWordPrintable

    • Icon: New Feature New Feature
    • Resolution: Fixed
    • Icon: Major Major
    • 3.1.0
    • None
    • None
    • Yes
    • Yes
    • Features 8
    • 8

      As a developer I can quickly create content-types and apps, so that I can get started on a project quickly.

      Acceptance criteria

      • I can create a working app (based on a CT) with the CLI

      We should create two new commands to assist working with content types.

      mgnl create-content-type

      Create a standard content type following the conventions established by the "create-component" command. It does not need to be interactive, it can just create a good starting point for a developer.

      A "-app" and "-a" option should cause an app definition to be created as well which references the content type.

      mgnl create-app

      It should work the same as the create-content-type command, but supply the "-a" option automatically.

       

      Why two commands?

      Some developers will be very focussed on creating an app. It needs to be obvious to them  how to do that.

      On the other hand, creating a content type directly also makes sense, and in the future will include additional useful options - such as creating templates and restEndpoints. So it makes sense to have one command which can do all related tasks for you.

       

      Suggestions for Prototypes:

      App

      !content-type:__name__
      name: __name__
      
      # Optionally override any of the app configuration supplied by the content type.
      # subApps:
      #   detail:
      #     editor:
      #       form:
      #         tabs:
      #           default:
      #
      #             fields:
      #               - name: title
      #                 rows: 5
      
      

       

      Content type

       

      # Automatically generated contentType demonstrates usage of the common properties.
      # Modify them to match your requirements.
      datasource:
        workspace: __name__
      
      # Optionally configure a custom namespace. (Replace [myNamespace] everywhere.) 
      # This namespace can then be used below for the nodetype.
      # namespaces:
      #   [myNamespace]: https://www.[myDomain.com]/jcr/1.0/[myNamespace]
        autoCreate: true
      
      model:
      # Optionally supply a specific nodetype, otherwise 'mgnl:content' will be used.
      # nodeType: [myNamespace]:__name__
        properties:
          - name: title
            label: Title
            type: String
            required: true
            i18n: true
          - name: birthday
            label: Birthday
            type: Date
          - name: member
            label: Is a member
            type: Boolean  #Types 'Decimal', 'Long' and 'Double' are also available.    
      
          - name: phoneNumbers
            label: Phone Numbers
            type: PhoneNumber
            multiple: true
          - name: billingAddress
            label: Billing Address
            type: Address
          - name: shippingAddress
            label: Shipping Address
            type: Address  
      
        subModels:    
          - name: PhoneNumber
            properties:
              - name: title
                label: Title
              - name: number
                label: Number    
      
          - name: Address
            properties:
              - name: street
                label: Street
              - name: city
                label: City
              - name: postalCode
                label: Postal Code
              - name: country
                label: Country
      

       

       

        Acceptance criteria

              mdivilek Milan Divilek
              czimmermann Christopher Zimmermann
              Votes:
              3 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: