Search

A new extension, "Dynamic Text Group" is now available for download. Comments and feedback can be left here but if you discover any issues, please post it on the issue tracker.

Dynamic Text Group

  • Version: 1.0
  • Requirements: Symphony 2.2

This field provides a method to dynamically add a text field or text field groups to a section entry. An example of its use would be for creating tracklists in a section for record albums. This extension would allow you to create as many track entries in each album entry as needed. In a way, it provides a method for creating a dynamic amount of rows of table data.

This extension's codebase is highly based on Nils Hörrmann's Date/Time extension, and as such, Nils probably deserves much more credit than I do for this extension.

Configuration

When this field is first added to a section, you'll need to declare how many text fields you want in each group/row. For example, if you are creating a tracklist field, you'd most likely want 3 text fields (track number, track title, track length). (IMPORTANT: once you save your section blueprint, this field no longer becomes editable. This is because it creates a database table with the amount of columns specified in this input.) You also have the option to declare a custom schema for your group.

Custom Group Schemas

By default, the extension gives each textfield index in your group a generic name (e.g. 'textfield1', 'textfield2' & 'textfield3') and displays them proportionally, widthwise, in the Publish panel ('33.3%', '33.3%', & '33.3%'). The generic names are also the names used for that textfield's node in the XML output. The Custom Schema input allows you to declare your own template that determines how the field's entries are displayed and outputted. The readme on Github covers the process of declaring your schema.

Roadmap

  • Store each textfield index/column in its own table, which would allow for adding/removing columns from a dynamictextgroup instance.
  • Implement a schema editor to make building schemas easier and more natural. Ideally, it will be a visual tool where you can add, rename, resize and reorder fields by simple drag/drop mechanisms.

Disclaimer / Heads up

This is my first time making an extension, my first time creating a repo on Github, etc... Basically, a lot of firsts here. I tried to make sure everything was buttoned up and ready for you guys, but there's a good chance I screwed something up. For that, I'd like to apologize ahead of time. With that said, I also want to give you a heads up that while I'll try my best to support the growth of this extension, I'm quite the newb when it comes to coding and development. Bear with me.

I'm using this extension in 2 separate areas. Main usage: using it for making vCards, allowing me to add a dynamic amount of telephone numbers, chat usernames, email address, etc for each individual. Second: something akin to my example above, for adding a dynamic amount of tracks to a album's tracklisting. I'd love to hear about how you guys are using it.

Again, this wouldn't exist without me being able to use Nils' Date/Time extension as a coding springboard. A good chunk of this code comes directly from his project, and he deserves all the credit in the world.

This sounds fantastic! I'm looking forward to giving this extension a try.

Very nice! This is awesome.

This is a really cool way to embed complex meta data that doesn't really require another section. I'm sure Nils will be stoked someone is using his Stage library!

Is there any plans to support filtering in the future? For instance, filtering by track-number: 2 (to continue with your example) that would return any entry that has a Track Number of 2?

@Brendo: I definitely have plans to support filtering! Unfortunately the Symphony documentation for those functions aren't too descriptive, so I'm still trying to wrap my head around it. I failed miserably when I tried to implement them.

If anyone could offer up any guidance, I'd love to get that working right away!

This may help. In Meta Keys (which is similar but not as powerful as your extension) users can search using key-equals: or value: in additional to just normal (which searches on Key)

Dynamic Text Group 2.0dev

Hey guys, I could really use some alpha-testing love for the next version of this extension. It's quite an overhaul, so those of you with v1 will have to uninstall before doing a fresh install of v2. Please don't use this in your production environments, as I've only done local testing on Chrome and Firefox; it might not work in IE at all. I've been testing in Symphony 2.2.3, but I think it'll work on all 2.2 installations.

2.0 replaces the old Field Count & Schema properties with an advanced (and intuitive, hopefully) Field Editor. It also implements basic filtering and the ability to add Select Lists (with preset options) to your field groups.

Version 2 is available in the development branch of the repo: https://github.com/brockpetrie/dynamictextgroup/tree/development

Video Guides

I also created some videos to give everyone an overview of what this extension does, and give an idea of the changes implemented in version 2:

Thanks ahead of time! Any testing and feedback is greatly appreciated.

I should note that 2.0dev relies on some minor adjustments made to Nils' Stage plugin. While it's not imperative, I would recommend using my fork of Stage:

https://github.com/brockpetrie/stage

There's a possibility my changes will be merged soon, but I just wanted to call that out.

Edit: Nils has updated the original Stage with the minor changes I needed, so there's no need to get my fork.

Awesome work! This will be put to immediate use :) Thanks for releasing it.

Thanks Andrew! If you could post all the bugs you encounter to the issue tracker on github, I'd greatly appreciate it.

Awesomeness, just seeing this now.

This is great, the videos explain it well. Dunno how I missed it the first time around. Will definitely use this at some point.

Awesome.

The main repository of Stage has now been updated to version 1.3 and should contain all needed changes.

I haven't tested this little magic extension, but it looks amazing from what can be seen in the video introductions. Congrats!

Woah, Brock has earned +3 awesome points for this! It looks like it has been a labour of love. Thank you so much. I'll definitely be trying this on a current project I'm working on.

One small suggestion straight off — it wasn't until the second view that I spotted that the input name/label of the focused element was shown at the top right of the field container when the input has focus. Maybe you could use the HTML5 placeholder attribute on an input to populate the field names in-situ as well. It'd make that blank slate look a bit less scary for first time use.

Nick, that's a great suggestion— I'll definitely add that in the next commit, thanks!

Hey Brock, gonna load this extension into a project tonight for a Band site. Will post any bugs. Looks amazing in the vids by the way.

Quick question, are there any plans for field validation ? i.e url's or numbers etc? just wondering for things like lists of valid url links and numeric only schemes for duration/length fields.

That's another great suggestion. I'll try my best to implement that in the next commit. Keep 'em coming, guys!

I was going to ask for checkbox support, but I'm conscious that this would open a floodgate of requests, and it begins to encroach on Subsection Manager territory. Plus it contradicts the "Dynamic Text Group" name.

I had the need for a list of multiple choice answers (a Question text field, plus an Answers dynamic text group):

  • Answer (text input)
  • Is this the correct answer? (checkbox)

But I went for Subsection Manager in the end because I wanted the checkbox. However in hindsight I could have used Dynamic Text Group and used a select box for the yes/no.

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details