Attribute Bundles

Create reusable collections of attributes to apply across node types.

Attribute bundles are collections of attributes that can be applied to multiple node types. They ensure consistency across your structure and make maintaining attributes much easierβ€”change a bundle once, and the change propagates to all node types using it.

Before You Begin

You need:

  • Admin role in your account
  • Understanding of your structure and which attributes node types need
  • Clear idea of which attributes should be shared across multiple node types

What is an Attribute Bundle?

An attribute bundle is a reusable collection of attribute definitions that can be applied to multiple node types.

Think of bundles as templates for common data needs:
- "Basic Info" bundle: Title, Description, Thumbnail (used by all content types)
- "Timing" bundle: Duration, Pacing Notes (used by lessons and activities)
- "Assessment" bundle: Question Count, Time Limit (used by quizzes and tests)
- "Standards Alignment" bundle: Aligned Standards, Alignment Notes (used by curricular content)

Example:
```
Bundle: Basic Info
β”œβ”€β”€ Attribute: Title (string, required)
β”œβ”€β”€ Attribute: Description (text, optional)
└── Attribute: Thumbnail (string/url, optional)

Applied to:
- Course node type
- Unit node type
- Lesson node type
```

Result: All three node types now have Title, Description, and Thumbnail attributes. Update the bundle to add "Author" attribute β†’ all three types get it automatically.

Creating an Attribute Bundle

Step 1: Navigate to Bundles

  1. Navigate to Schema β†’ Attribute Bundles in the main navigation
  2. You'll see a list of existing bundles (system and custom)
  3. Click Create Bundle button

Step 2: Fill Out the Form

Name (Required)

The bundle's display name.

Best practices:
- Use title case: "Basic Info", "Timing Details"
- Be descriptive: "SEO Metadata" not just "SEO"
- Indicate purpose: "Assessment Properties" not "Bundle 3"

Examples:
- βœ… "Basic Info", "Timing Details", "SEO Metadata"
- βœ… "Standards Alignment", "Accessibility Features"
- ❌ "Bundle1", "Misc", "Stuff"

Description (Optional)

Explain when and how to use this bundle.

What to include:
- Purpose of the bundle
- Which node types should use it
- Any special considerations

Example:
```
Basic Info - Core metadata for all content types

Apply to all node types that appear in the content tree.
Required attributes ensure consistent authoring experience.
```

Step 3: Create the Bundle

  1. Click Create Bundle
  2. You'll be redirected to the bundle detail page
  3. The bundle is empty (no attributes yet)
  4. Next: add attributes to the bundle

Adding Attributes to Bundles

After creating a bundle, add attribute definitions to it.

Navigate to Bundle Detail

  1. From the Bundles list, click on your bundle
  2. You'll see:
    • Bundle name and description
    • List of attributes (initially empty)
    • "Add Attribute" button

Add an Attribute

  1. Click Add Attribute
  2. Fill out the attribute definition form (see below)
  3. Click Save Attribute
  4. The attribute appears in the bundle
  5. Repeat to add more attributes

Attribute Definition Fields

When creating an attribute, you configure:

Name (Required)
- Human-readable name shown to authors
- Examples: "Title", "Duration", "Learning Objectives"

System Name (Required)
- Internal identifier (snake_case)
- Auto-generated from name but editable
- Examples: title, duration_minutes, learning_objectives
- Cannot be changed after creation

Attribute Type (Required)
- Determines what kind of data this attribute holds
- See "Attribute Types" section below

Required (Checkbox)
- If checked, authors must provide a value
- Required attributes block workflow progression
- Optional attributes can be left blank

Help Text (Optional)
- Guidance text shown to authors below the input
- Examples: "Enter a concise title (50 characters or less)"

Default Value (Optional, depends on type)
- Pre-filled value for new content
- Saves authors time for common values

Attribute Types

Choose the appropriate type for your data:

Type Data Stored Use For Example
String Short text (up to 255 chars) Titles, labels, short text Title, Subtitle, Code
Text Long text (plain) Descriptions, notes, paragraphs Description, Instructions
Integer Whole numbers Counts, durations, quantities Duration (minutes), Question Count
Decimal Decimal numbers Prices, ratings, measurements Price, Rating (1.5 stars)
Boolean True/False Yes/no flags, toggles Is Featured?, Is Published?
Date Date (no time) Dates Due Date, Release Date
DateTime Date and time Timestamps Scheduled Publication
Single Select One choice from list Dropdown selections Difficulty Level, Grade Level
Multi Select Multiple choices from list Tags, categories Tags, Subject Areas
URL Web link External resources Video URL, Resource Link
Email Email address Contact info Author Email

Note: The actual implementation may vary. Check your attribute creation form for available types.

Reordering Attributes

The order of attributes in a bundle affects the order they appear in content node edit forms.

To reorder:
1. View the bundle detail page
2. Use drag handles or reorder controls next to attributes
3. Drag to the desired position
4. Order saves automatically

Order matters for:
- Author experience (related fields grouped together)
- Form usability (logical progression)

Best practice: Put required attributes first, optional at the end.

Applying Bundles to Node Types

Once a bundle has attributes, apply it to node types.

From Node Type Editor

  1. Open the Structure Builder
  2. Click on a node type
  3. Scroll to the Attribute Bundles section
  4. Click Add Bundle or select from available bundles
  5. Choose the bundle to apply
  6. Save

Result: All attributes from that bundle are now available when authoring content of that node type.

Multiple Bundles Per Node Type

Node types can have multiple bundles applied:

Example:
- "Lesson" node type has:
- "Basic Info" bundle (Title, Description, Thumbnail)
- "Timing" bundle (Duration, Pacing Notes)
- "Standards Alignment" bundle (Standards, Alignment Notes)

Attribute display order:
1. Direct attributes (added directly to node type)
2. Bundle 1 attributes
3. Bundle 2 attributes
4. Bundle 3 attributes

Bundle Picker

When applying bundles, you'll see:

System Bundles
- Provided by CurryCMS or modules
- Show "System" badge
- Examples: "Standards Alignment"

Custom Bundles
- Created by your account
- Fully editable
- Show in regular list

System vs. Custom Bundles

System Bundles

Characteristics:
- Provided by CurryCMS or installed modules
- Have account_id = nil in the database
- Read-only (cannot edit or delete)
- Show "System" badge in the list

Examples:
- Standards Alignment: Enables content-to-standards linking
- Workflow Status: Publishing workflow attributes (if module enabled)

What you can do:
- Apply to node types
- View attributes
- See which node types use them

What you cannot do:
- Edit attributes in system bundles
- Delete system bundles
- Change bundle description

Why they're read-only:
System bundles are managed by code updates to ensure compatibility with platform features.

Custom Bundles

Characteristics:
- Created by your account admins
- Have your account_id
- Fully editable
- Can be deleted (if not in use)

What you can do:
- Add, edit, remove attributes
- Apply to any node type in your account
- Delete when no longer needed

Editing Bundles

Editing Bundle Metadata

  1. Open the bundle from the Bundles list
  2. Click Edit (if available in UI)
  3. Update name or description
  4. Save

Safe to change:
- Name (display only)
- Description

Adding Attributes to Existing Bundles

  1. Open the bundle
  2. Click Add Attribute
  3. Configure the new attribute
  4. Save

What happens:
- New attribute is added to the bundle
- All node types using this bundle now have the attribute
- Existing content nodes get the attribute (with no value unless default is set)
- Authors see the new field when editing

Impact: New attributes appear on all types using the bundle immediately.

Removing Attributes from Bundles

  1. Open the bundle
  2. Find the attribute to remove
  3. Click Delete or remove button
  4. Confirm deletion

⚠️ Warning:
- Attribute is removed from all node types using the bundle
- Existing content values are orphaned (data remains in database but hidden from UI)
- This action cannot be easily undone

Before removing:
- Check which node types use this bundle
- Communicate changes to authors
- Consider exporting data if needed

Renaming Attributes

Display name changes:
- Safe to change anytime
- Just changes what authors see
- No data impact

System name changes:
- Cannot be changed after creation
- Would break API references and data integrity

Bundle Propagation

Changes to bundles automatically propagate to all node types using them. This is the main benefit of bundles.

Example:

Initial state:
- "Basic Info" bundle has: Title, Description
- Applied to: Course, Unit, Lesson

You add "Author" attribute to "Basic Info" bundle:

Result:
- Course now has: Title, Description, Author
- Unit now has: Title, Description, Author
- Lesson now has: Title, Description, Author

One change β†’ three node types updated.

Propagation Scenarios

Adding an attribute:
- βœ… Appears on all node types using the bundle
- βœ… Existing content gets the attribute (blank unless default provided)
- βœ… Authors see it in edit forms immediately

Removing an attribute:
- ⚠️ Removed from all node types
- ⚠️ Data orphaned but not deleted
- ⚠️ Authors no longer see it in forms

Editing attribute properties:
- βœ… Changes reflect on all node types
- βœ… Examples: changing help text, required status, default value

Reordering attributes:
- βœ… New order reflects on all node types
- βœ… Author form order updates

Testing Changes Before Rollout

Before making significant bundle changes:

  1. Note which node types use the bundle
  2. Create a test curriculum using that structure
  3. Add test content of affected node types
  4. Make the bundle change
  5. Verify content forms show the change correctly
  6. Communicate changes to authors

Removing Bundles from Node Types

If a node type no longer needs a bundle:

  1. Open the node type in Structure Builder
  2. Go to Bundles section
  3. Find the bundle to remove
  4. Click Remove or uncheck it
  5. Confirm removal

What happens:
- Attributes from that bundle are removed from the node type
- Existing content retains data (orphaned but not deleted)
- Authors no longer see those attributes when editing

Impact: Only affects this one node type. The bundle remains available for other types.

Deleting Bundles

When You Can Delete

You can delete a custom bundle if:

  • It's not applied to any node types
  • It's a custom bundle (not system)
  • You have Admin role

When You Cannot Delete

You cannot delete if:

  • The bundle is applied to one or more node types
  • It's a system bundle
  • You don't have Admin permissions

Error message:

Cannot delete bundle: it is used by 3 node type(s).

How to Delete

  1. First: Remove the bundle from all node types using it

    • Go to each node type
    • Remove the bundle from that type
    • Repeat for all types
  2. Then: Delete the bundle

    • Navigate to Bundles list
    • Click on the bundle
    • Click Delete Bundle
    • Confirm deletion

⚠️ Warning: Deletion is permanent. The bundle definition and all its attributes are removed.

What Gets Deleted

  • Bundle definition
  • All attribute definitions in the bundle
  • Relationships to node types (already removed in step 1)

What is NOT Deleted

  • Content node data (orphaned but preserved in database)
  • Node types that used the bundle
  • Other bundles

Common Bundle Patterns

Pattern 1: Universal "Basic Info"

Bundle: Basic Info
Attributes:
- Title (string, required)
- Description (text, optional)
- Thumbnail (url, optional)

Apply to: All node types
Why: Every content type needs these core fields

Pattern 2: "Timing Details"

Bundle: Timing Details
Attributes:
- Duration (integer, minutes, optional)
- Estimated Time (string, optional)
- Pacing Notes (text, optional)

Apply to: Lesson, Activity, Assessment
Why: Time-based content needs duration and pacing info

Pattern 3: "Standards Alignment"

Bundle: Standards Alignment (System Bundle)
Attributes:
- Aligned Standards (multi-select, optional)
- Alignment Notes (text, optional)
- Alignment Category (single-select, optional)

Apply to: Unit, Lesson, Activity, Assessment
Why: Curricular content aligns to educational standards

Pattern 4: "SEO Metadata"

Bundle: SEO Metadata
Attributes:
- Meta Title (string, optional)
- Meta Description (text, optional)
- Canonical URL (url, optional)

Apply to: Course, Unit (published content)
Why: Public-facing content needs SEO optimization

Pattern 5: "Accessibility"

Bundle: Accessibility Features
Attributes:
- Alt Text for Images (text, optional)
- Transcript Available (boolean, optional)
- Closed Captions (boolean, optional)

Apply to: Video, Multimedia content types
Why: Ensure accessible content creation

Best Practices

Keep Bundles Focused

Do:
- βœ… "Timing" bundle with duration-related fields
- βœ… "SEO" bundle with web metadata
- βœ… "Assessment" bundle with quiz properties

Don't:
- ❌ "Everything" bundle with 20 unrelated attributes
- ❌ "Miscellaneous" bundle (no clear purpose)

Why: Focused bundles are easier to maintain and apply appropriately.

Name Bundles Descriptively

Good names:
- βœ… "Basic Info" (everyone knows what this means)
- βœ… "Standards Alignment" (clear purpose)
- βœ… "Timing Details" (specific to time)

Poor names:
- ❌ "Bundle 1", "Bundle A" (meaningless)
- ❌ "Misc" (unclear what's included)
- ❌ "Fields" (too vague)

Why: Clear names help admins decide when to apply each bundle.

Document Bundle Purpose

Use descriptions to explain:
- What the bundle is for
- Which node types should use it
- Any special considerations

Example:
```
SEO Metadata - Search engine optimization attributes

Apply to content types that are published on the public web.
Do not apply to internal-only or unpublished content types.

Required for: Course, Program
Optional for: Unit, Module
```

Plan Attribute Order Thoughtfully

Order matters for user experience:

  1. Required fields first

    • Ensures authors complete essential fields
    • Reduces errors during submission
  2. Group related fields

    • SEO fields together
    • Timing fields together
    • Helps authors think in context
  3. Optional fields last

    • Authors can skip if not relevant
    • Reduces form fatigue

Example order for "Basic Info":

1. Title (required)
2. Description (optional)
3. Thumbnail (optional)

Start with Core Bundles Only

Begin with:
- "Basic Info" (Title, Description)
- "Timing" (if you have timed content)

Add later:
- "Standards" (when you enable standards alignment)
- "SEO" (when publishing to web)
- Specialized bundles as needs emerge

Why: Start simple. Add complexity only when needed.

Consider Dependencies

Before editing a bundle:

  1. Click on the bundle in the list
  2. Look at "Used by X node types"
  3. Understand impact: changes affect all those types
  4. Communicate with authors if making breaking changes

Test Bundle Changes

Before applying widely:
1. Create a test structure
2. Apply bundle to a test node type
3. Create test content
4. Verify attributes appear and behave correctly
5. Then apply to production structures

Why: Catching issues in testing avoids disrupting authors.

Use System Bundles When Available

If a system bundle provides what you need:
- βœ… Use it (like "Standards Alignment")
- ❌ Don't recreate it as a custom bundle

Why: System bundles integrate with platform features and receive updates.

Common Questions

Can I edit attributes in a bundle after applying it to node types?

Yes. Changes propagate automatically to all node types using the bundle. This is the main benefit of bundles.

What happens to existing content data when I remove an attribute?

Data is orphaned but not deleted. It remains in the database but is hidden from the UI. Re-adding the attribute makes the data visible again.

Can I apply the same bundle to a node type twice?

No. Each bundle can only be applied once per node type.

How many bundles can a node type have?

There's no hard limit. However, too many bundles create a cluttered authoring experience. Aim for 2-4 bundles per type.

Can I copy a bundle from another account?

Not automatically. You must manually recreate the bundle. Consider exporting/importing if you need this frequently.

What's the difference between a bundle attribute and a direct attribute?

  • Bundle attribute: Defined in a bundle, shared across node types
  • Direct attribute: Added directly to one node type, not reusable

Use bundles for reusable attributes, direct for type-specific fields.

Can I rename a bundle after creation?

Yes, but only the display name. The bundle doesn't have an immutable system name like node types do.

Why can't I delete a system bundle?

System bundles are managed by platform code to ensure feature compatibility. They update with platform releases.

Can I create a variant of a system bundle?

You cannot edit system bundles, but you can create a custom bundle with similar attributes if you need variations.

How do I know which bundles a node type uses?

  1. Open the Structure Builder
  2. Click on the node type
  3. Scroll to the Bundles section
  4. Applied bundles are listed there

Troubleshooting

"Cannot delete bundle: it is used by X node types"

Solution:
1. Note which node types use it (shown in error message or bundle detail)
2. Go to each node type's Bundles section
3. Remove the bundle from each type
4. Return to bundle and delete

Changes to bundle aren't appearing on node types

Check:
- Refresh the structure page
- Verify the bundle is actually applied to those node types
- Clear browser cache if necessary

Attribute order is wrong in content edit form

Solution:
- Open the bundle
- Reorder attributes within the bundle
- Changes propagate immediately to all node types

Bundle shows wrong attribute count

Solution:
- Refresh the Bundles list page
- The count is calculated from associated attributes

"System bundles cannot be deleted"

Reason:
You're trying to delete a system bundle. These are read-only and managed by the platform.

Solution:
You cannot delete system bundles. If you don't need it, simply don't apply it to any node types.

Can't find the bundle I just created

Check:
- Scroll down the Bundles list
- Ensure you saved the bundle (not just filled the form)
- Verify you're viewing the correct account

Attributes from bundle not showing in content editor

Possible causes:
1. Bundle is applied to node type, but content node is of a different type
2. Browser cache issue (hard refresh)
3. Bundle has no attributes yet

Solution:
- Verify bundle is applied to the correct node type
- Ensure bundle has attributes
- Refresh the content edit page

Next Steps

After creating and applying bundles:

  1. Managing Node Types - Apply bundles to configure node types
  2. Designing Structures - Plan overall structure design
  3. Creating Curricula - Use your structure to build content

Related Documentation:
- Admin Overview - Your administrative capabilities
- Managing Node Types - Configure content types
- Designing Structures - Structure design patterns
- Team Management - Manage user roles

Was this page helpful? |