[ENHANCEMENT]: Export and Import JCB-Packages #1214

Closed
opened 2025-03-30 21:34:31 +00:00 by heinzarden · 2 comments

Enhancement Details

Is there currently a feature in Joomla 5 / JCB 5 to export and import JCB packages, similar to the functionality in Joomla 3 / JCB 3?

If not, will this functionality be implemented in JCB 5 and what is the estimated timeline?"

Best regards
heinzarden

I am referring to a previous comment:

"Llewellyn hat 2024-04-28 20:00:35 +00:00 kommentiert
This feature will also be removed to get the next stable version released, but it is also a very important part of JCB, and will be added back soon as we can.
Currently the normal Joomla upgrade path is the best way to move your JCB instance to the next version of Joomla and JCB. So making a clone of your development system (so you have the original Joomla 3 "with JCB 3" system as back-up to fallback unto), and then migrate it to Joomla 4, and then to Joomla 5, and then install JCB 5.0.0-rc1 and you will have migrated JCB to the newest version and still have all your component in JCB."

Which part of the extension will be affected by this enhancement?

No response

Additional Context

No response

### Enhancement Details Is there currently a feature in Joomla 5 / JCB 5 to export and import JCB packages, similar to the functionality in Joomla 3 / JCB 3? If not, will this functionality be implemented in JCB 5 and what is the estimated timeline?" Best regards heinzarden I am referring to a previous comment: _"Llewellyn hat 2024-04-28 20:00:35 +00:00 kommentiert This feature will also be removed to get the next stable version released, but it is also a very important part of JCB, and will be added back soon as we can. Currently the normal Joomla upgrade path is the best way to move your JCB instance to the next version of Joomla and JCB. So making a clone of your development system (so you have the original Joomla 3 "with JCB 3" system as back-up to fallback unto), and then migrate it to Joomla 4, and then to Joomla 5, and then install JCB 5.0.0-rc1 and you will have migrated JCB to the newest version and still have all your component in JCB."_ ### Which part of the extension will be affected by this enhancement? _No response_ ### Additional Context _No response_
heinzarden added the
enhancement
label 2025-03-30 21:34:31 +00:00
Owner

We understand the importance of seamless component migration in JCB and want to assure the community that this feature is not only coming back but will be significantly improved. Our current development efforts are focused on rethinking the entire process of exporting and importing components, making it more robust, flexible, and scalable.

Progress & Key Improvements

  1. Advanced Demo Component:
    To bridge the gap in the meantime, we have significantly enhanced the demo component that ships with JCB. The latest version—JCB 5.1.1 Alpha 4—introduces the most advanced demo component we’ve ever released, showcasing JCB’s full capabilities, from basic to advanced features. This helps users understand how JCB works and provides a solid foundation for component development.

  2. Global Unique IDs for Seamless Data Migration:
    A major shift has been made in how entities within JCB link to each other. Previously, internal ID-based linking made data movement cumbersome. Now, fields, admin views, and components are connected via global unique IDs (GUIDs) instead of database IDs. This ensures that data can be transferred between different JCB installations without ID conflicts, making migrations much smoother.

  3. Repository-Based Export & Import System:
    We have already implemented a new approach to managing and sharing field types via a global repository. In the field type area, users now see an init, push, and reset system that connects to a shared repository.

    • Reset: Pulls the latest version of a field type from the global repository.
    • Push: Allows users to update the repository with their own field types.
    • Forking & Custom Repositories: Users can fork the global repository and maintain their own private repository for in-house use.

    This same architecture will be expanded to layouts, templates, admin views, and entire components, eventually allowing full component export/import through repositories. This will introduce multiple backup options at different levels, enabling granular control over component migration.

  4. Future Vision: Complete Component Portability
    With the repository-based system in place, JCB will support component-level migration, allowing users to push and pull entire components with all relationships intact. Thanks to the GUID-based architecture, we can eliminate ID conflicts and introduce mechanisms for merging or updating existing elements intelligently.

  5. Ongoing Development & Prioritization
    While we have already laid the groundwork for this system—first in the Power area, then in field types, and soon for layouts and templates—fully implementing it at the component level is a significant task. We are actively working on it but are balancing this effort with ongoing client projects. This means we cannot commit to a specific release date, but we are prioritizing it because we recognize its transformative impact on JCB.

  6. Latest Updates: Joomla 5 Modal Select Field
    In parallel with these improvements, we have successfully implemented the modal select field type for Joomla 5 components in the latest alpha release. This is a significant enhancement over the previous custom field type for creating table relationships, and we expect it to become the preferred method for such tasks moving forward.

Conclusion

The return of JCB’s export/import feature is not only certain but will be significantly better than before. By transitioning to GUID-based linking and a repository-driven migration system, we are ensuring that JCB remains the most powerful and flexible component builder available. This change will make it easier to move fields, layouts, admin views, and entire components across different systems while avoiding ID conflicts and streamlining collaboration.

We appreciate the community’s patience as we implement these improvements, and we are excited about the future of JCB. Stay tuned for further updates as we continue rolling out these advancements!

We understand the importance of seamless component migration in JCB and want to assure the community that this feature is not only coming back but will be significantly improved. Our current development efforts are focused on rethinking the entire process of exporting and importing components, making it more robust, flexible, and scalable. ### **Progress & Key Improvements** 1. **Advanced Demo Component:** To bridge the gap in the meantime, we have significantly enhanced the demo component that ships with JCB. The latest version—JCB 5.1.1 Alpha 4—introduces the most advanced demo component we’ve ever released, showcasing JCB’s full capabilities, from basic to advanced features. This helps users understand how JCB works and provides a solid foundation for component development. 2. **Global Unique IDs for Seamless Data Migration:** A major shift has been made in how entities within JCB link to each other. Previously, internal ID-based linking made data movement cumbersome. Now, fields, admin views, and components are connected via **global unique IDs (GUIDs)** instead of database IDs. This ensures that data can be transferred between different JCB installations **without ID conflicts**, making migrations much smoother. 3. **Repository-Based Export & Import System:** We have already implemented a new approach to managing and sharing field types via a global repository. In the field type area, users now see an **init, push, and reset** system that connects to a shared repository. - **Reset**: Pulls the latest version of a field type from the global repository. - **Push**: Allows users to update the repository with their own field types. - **Forking & Custom Repositories**: Users can fork the global repository and maintain their own private repository for in-house use. This same architecture will be **expanded to layouts, templates, admin views, and entire components**, eventually allowing full component export/import through repositories. This will introduce multiple backup options at different levels, enabling granular control over component migration. 4. **Future Vision: Complete Component Portability** With the repository-based system in place, JCB will support component-level migration, allowing users to push and pull **entire components with all relationships intact**. Thanks to the **GUID-based architecture**, we can eliminate ID conflicts and introduce mechanisms for merging or updating existing elements intelligently. 5. **Ongoing Development & Prioritization** While we have already laid the groundwork for this system—first in the Power area, then in field types, and soon for layouts and templates—fully implementing it at the component level is a significant task. We are actively working on it but are balancing this effort with ongoing client projects. This means we cannot commit to a specific release date, but we are prioritizing it because we recognize its transformative impact on JCB. 6. **Latest Updates: Joomla 5 Modal Select Field** In parallel with these improvements, we have successfully implemented the **modal select field type** for Joomla 5 components in the latest alpha release. This is a significant enhancement over the previous custom field type for creating table relationships, and we expect it to become the preferred method for such tasks moving forward. ### **Conclusion** The return of JCB’s export/import feature is not only certain but will be significantly better than before. By transitioning to **GUID-based linking** and a **repository-driven migration system**, we are ensuring that JCB remains the most powerful and flexible component builder available. This change will make it easier to move fields, layouts, admin views, and entire components across different systems while avoiding ID conflicts and streamlining collaboration. We appreciate the community’s patience as we implement these improvements, and we are excited about the future of JCB. Stay tuned for further updates as we continue rolling out these advancements!
Owner

🚀 JCB Packaging Is Back – Reinvented, Repository-Driven, and Smarter Than Ever

We're happy to confirm that JCB's packaging system has not only returned but has been completely reengineered to offer a smarter, scalable, and repository-integrated workflow for exporting, importing, and sharing JCB assets.

This feature is fully available in the current beta version (5.1.1 Beta 2) and will be part of the next stable release. It's a huge step forward for portability, collaboration, and version-controlled development in Joomla.


What Is JCB Packaging?

JCB Packaging is the name for what was previously known as “export/import.” It allows you to push and pull JCB data entities fields, layouts, templates, admin views, site views, libraries, and entire components to and from Git-based repositories such as GitHub and Gitea.

The system is smartly hierarchical:

  • If you push a component, JCB pushes all linked dependencies (views, fields, layouts, templates, libraries).
  • If you push a field or a layout, only the relevant entity and its immediate relationships are included.
  • You can even push multiple components or multiple views in a single batch, depending on your selection.

This granular yet cohesive approach provides incredible flexibility for:

  • Sharing demo components
  • Maintaining private team repositories
  • Migrating components between environments
  • Creating backups for individual entities or complete systems

🧠 Key Technological Improvements

1. GUID-Based Linking

JCB now uses Globally Unique Identifiers (GUIDs) instead of numeric database IDs to track and associate relationships between entities. This eliminates ID conflicts when moving data between systems and makes cross-system compatibility seamless.

2. Native Repository Integration

The push/pull/reset operations are now embedded throughout JCB. Each entity type (components, views, fields, layouts, etc.) can be individually connected to a repository, either public or private.

  • Push: Uploads the current entity (and optionally its dependencies) to your configured Git repository.
  • Reset: Pulls the latest version from the repository and syncs it back into your local JCB instance.
  • Init: Imports new entities into your system from the repository.

This makes version control, collaboration, and rollback easier and safer than ever before.


🔄 How It Works: One Unified Contribution Workflow

JCB does not use ZIPs anymore. Instead, all packaging is handled via Git, and the workflow is consistent across all packaging systems:

  1. Fork the Core Repository

  2. Add Your Fork to JCB

    • In the Repositories area of JCB, create a new repository entry.

    • Set the Content Type (e.g., Packages, Snippets, Field Types, etc.).

    • Provide:

      • The clone details of your fork like [org]/[repo]
      • The branch name (e.g., main)
      • A valid personal access token for write access (only required for pushing)
  3. Push from Within JCB

    • Navigate to the entity you want to push (e.g., component, field, layout).
    • Use the Push button on the list or detail view.
    • JCB handles the rest: commits, structure, and formatting.
  4. Open a Pull Request

    • Go to GitHub and create a PR from your fork to the core repository.
    • We’ll review, provide feedback, and merge once it's ready.

This is the only supported path for contributing JCB assets going forward. No more exporting/importing ZIP files.


🧪 Get Involved: Help Us Test It

JCB 5.1.1 Beta 2 includes the fully functional packaging engine. This version ships with three demo components already available in the core package repository:

👉 https://github.com/joomengine/packages

You can explore, pull, and learn from them directly within JCB.

If you’ve upgraded via the official path (JCB 3 → JCB 4 → JCB 5), this repository will already be available in your instance. If not, you can manually add it via the repository manager in JCB.

We’re encouraging the community to:

  • Push their own demo components
  • Share entities with the rest of the community
  • Fork and contribute improvements
  • Test how reliably packaging behaves in their own environments
  • Backup your projects to your own private repos

🎁 The Demo Component

A significantly enhanced Advanced Demo Component is included in this release. It showcases JCB's full capabilities, including:

  • Modal select field (Joomla 5 native)
  • Dynamic admin and site views
  • Custom libraries and logic
  • Real-world use cases

You can pull it directly from the packages repository if you missed it during install.


🐞 Reporting Issues or Requesting Features


📦 In Summary

  • JCB's packaging engine is back — and it's smarter, faster, and repository-native.
  • Everything from fields to full components can be version-controlled and shared.
  • Contribute via a single workflow: fork → aim JCB → push → PR.
  • No more ZIP files or brittle exports.
  • Version 5.1.1 Beta 2 includes the entire engine and three example demo components.

This is a major leap forward in how we build, maintain, and share components with JCB.

We’re excited to see how the community adopts and extends this new packaging system — and we welcome your participation in shaping its future!

### 🚀 JCB Packaging Is Back – Reinvented, Repository-Driven, and Smarter Than Ever We're happy to confirm that JCB's packaging system has not only returned but has been **completely reengineered** to offer a **smarter, scalable, and repository-integrated workflow** for exporting, importing, and sharing JCB assets. This feature is **fully available in the current beta version (5.1.1 Beta 2)** and will be part of the next stable release. It's a huge step forward for portability, collaboration, and version-controlled development in Joomla. --- ### ✨ What Is JCB Packaging? JCB Packaging is the name for what was previously known as “export/import.” It allows you to push and pull JCB data entities **fields, layouts, templates, admin views, site views, libraries, and entire components** to and from Git-based repositories such as **GitHub** and **Gitea**. The system is smartly hierarchical: * If you **push a component**, JCB pushes **all linked dependencies** (views, fields, layouts, templates, libraries). * If you **push a field or a layout**, only the relevant entity and its immediate relationships are included. * You can even push **multiple components** or **multiple views** in a single batch, depending on your selection. This granular yet cohesive approach provides incredible flexibility for: * Sharing demo components * Maintaining private team repositories * Migrating components between environments * Creating backups for individual entities or complete systems --- ### 🧠 Key Technological Improvements #### ✅ 1. **GUID-Based Linking** JCB now uses **Globally Unique Identifiers (GUIDs)** instead of numeric database IDs to track and associate relationships between entities. This eliminates ID conflicts when moving data between systems and makes cross-system compatibility seamless. #### ✅ 2. **Native Repository Integration** The push/pull/reset operations are now embedded throughout JCB. Each entity type (components, views, fields, layouts, etc.) can be individually connected to a repository, either public or private. * **Push**: Uploads the current entity (and optionally its dependencies) to your configured Git repository. * **Reset**: Pulls the latest version from the repository and syncs it back into your local JCB instance. * **Init**: Imports new entities into your system from the repository. This makes version control, collaboration, and rollback easier and safer than ever before. --- ### 🔄 How It Works: One Unified Contribution Workflow JCB does not use ZIPs anymore. Instead, **all packaging is handled via Git**, and the workflow is consistent across all packaging systems: 1. **Fork the Core Repository** * For components and other assets: 👉 [https://github.com/joomengine/packages](https://github.com/joomengine/packages) * For snippets: 👉 [https://github.com/joomengine/snippets](https://github.com/joomengine/snippets) 2. **Add Your Fork to JCB** * In the **Repositories** area of JCB, create a new repository entry. * Set the **Content Type** (e.g., `Packages`, `Snippets`, `Field Types`, etc.). * Provide: * The **clone** details of your fork like [org]/[repo] * The **branch name** (e.g., `main`) * A **valid personal access token** for write access (only required for pushing) 3. **Push from Within JCB** * Navigate to the entity you want to push (e.g., component, field, layout). * Use the **Push** button on the list or detail view. * JCB handles the rest: commits, structure, and formatting. 4. **Open a Pull Request** * Go to GitHub and create a PR from your fork to the core repository. * We’ll review, provide feedback, and merge once it's ready. > This is the **only** supported path for contributing JCB assets going forward. No more exporting/importing ZIP files. --- ### 🧪 Get Involved: Help Us Test It JCB 5.1.1 Beta 2 includes the **fully functional packaging engine**. This version ships with three demo components already available in the core package repository: 👉 [https://github.com/joomengine/packages](https://github.com/joomengine/packages) You can explore, pull, and learn from them directly within JCB. If you’ve upgraded via the official path (JCB 3 → JCB 4 → JCB 5), this repository will already be available in your instance. If not, you can manually add it via the repository manager in JCB. We’re encouraging the community to: * Push their own demo components * Share entities with the rest of the community * Fork and contribute improvements * Test how reliably packaging behaves in their own environments * Backup your projects to your own private repos --- ### 🎁 The Demo Component A significantly enhanced **Advanced Demo Component** is included in this release. It showcases JCB's full capabilities, including: * Modal select field (Joomla 5 native) * Dynamic admin and site views * Custom libraries and logic * Real-world use cases You can pull it directly from the packages repository if you missed it during install. --- ### 🐞 Reporting Issues or Requesting Features * 💡 For bugs or technical issues, please **open an issue** here: 👉 [https://git.vdm.dev/joomla/Component-Builder/issues](https://git.vdm.dev/joomla/Component-Builder/issues) * 🧠 For discussions, ideas, and collaboration: 👉 [https://github.com/orgs/joomengine/discussions](https://github.com/orgs/joomengine/discussions) --- ### 📦 In Summary * ✅ JCB's packaging engine is back — and it's smarter, faster, and repository-native. * ✅ Everything from fields to full components can be version-controlled and shared. * ✅ Contribute via a **single workflow**: fork → aim JCB → push → PR. * ✅ No more ZIP files or brittle exports. * ✅ Version 5.1.1 Beta 2 includes the entire engine and three example demo components. This is a major leap forward in how we build, maintain, and share components with JCB. We’re excited to see how the community adopts and extends this new packaging system — and we welcome your participation in shaping its future!
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: joomla/Component-Builder#1214
No description provided.