Search

And here it is: Schema Validation (devkit)

@remie: Wow great work ! +1 for @Alistair for the demo as well !

@touchstone: Ok great, maybe I could just add a checkbox to let the user choose if he wants it read-only or hidden. Thanks !

Still looking for extension ideas? How about a text field that you can combine with a regular expression, where the result of the expression is saved? To make it clearer: I'd like the user to dump any type of YouTube URL in the text field, but only want to save the videoID. So strip the short/long domain and any trailing parameters. I'm now using a Regex for validation in the backend and jQuery to find out the ID in the front end and adjust the iframe embedding src attribute.

In general, this could also be an extension that can split any URL's parameters and subpaths into usable xml/json information.

Would be great if someone would take up this challenge!

@micros, Nitriques' oembed field has some methods in the youtube driver that are parsing the saved XML to retrieve the portions of URL, video ID portion of the url could be found using this method I'm sure. Worth a look in there for reference.

@micros can't you use the Reflection field for that?

Disclaimer: I've spent about an hour searching through the forums and I've gone through the extensions but I'm quite tired, so apologies if this has been looked at already. I have tried going through some of the other extensions (e.g. Subsection Manager) but frankly I just don't know enough about the inner workings of Symphony at the moment and I can't dedicate a huge amount of time to learning this for a good few months.

I'm looking for an extension which would do something like what subsection manager does except that you would be able to select a section dynamically. A subsection manager that isn't restricted to being assigned only one section type. Let's call it subsection manager +. I guess it's something like multi-section subsection manager.

For example, I create a top-level section called "Content Block". Within this section I would create some 'static' fields such as "name" or "title" and a subsection manager + field. When this is done I then create sections for images, text blocks, documents and links. What I want to be able to do is to select the section type in the subsection manager + field via a drop down or something and have it call the relevant fields so that they can be added as per the normal subsection manager. I would want to be able to restrict the sections that are pick-able but just not be limited to picking only one section type.

The reason for wanting to do this is that we want to be able to allow clients to add various allowed sections to a "page" (or other section) but they need to be able to pick the order in which they appear, i.e. being able to order text - image - document - image - text or any other imaginable combination.

Ok hope someone can make some sense of my ramblings!

i think i understand. i believe you may want to reconsider the structure of your sections for the sake of simplicity for both you and your users. here are the options i perceive that don't require writing a custom extension:

  • create one universal section with which to contain content items, as you said, text, images, links, downloads. create a field in this section for each one of these different content types and make every field optional. this way, the user can simply fill out the single field that they will use and ignore the rest.
  • the more widely accepted solution, i believe, is to have one single textarea for each of these content pages you're referring to, and a subsection manager that allows the user to upload images or files. subsection manager has a drag and drop feature that enables the user to drag an entry from the subsection manager onto the textarea and represent it as you define; typically with markdown that points to the image or document's path and creates a link.

there are quite possibly a dozen other ways to do this.

Ok hope someone can make some sense of my ramblings!

I'll be honest and say I've wanted this for a long long time too. There are times when I want a client to add any number of "components" to a page, which could be a map, a promo, a photo and so on. I'd like for the client to add these in-situ, and for them to be re-orderable together.

This is kind of possible by including a Subsection Manager for each component type, but then there's no central ordering.

The alternative is to have a "Components" section and use Publish Tabs to group fields for each component type inside. It means you can't make fields required though. But it means that single Components section can be loaded through a Subsection Manager and the user then chooses the type of content from the tab. You'll need to try Publish Tabs inside SSM, I haven't used that before.

@Fawx We had been through both of those possibilities but we want to limit the possibility of clients messing up the layout. Thus we would have predefined layouts for each section type. We want to be able to provide this sort of thing as a package for clients on a lower budget who don't need a bespoke site. Using a single text area with subsection manager would be the easiest solution but it's not the most robust and you have to trust that the client will follow your instructions 100% which almost never happens. This also applies to the first option as well and is the main issue. We've had a look a few different concepts for managing the structure of this but there is no solution that we've found so far that is viable.

@nickdunn The second idea is close to what we would want but the trouble is that we want to restrict them to selecting only one type of section. They could potentially fill in more than one tab on this, something that can't be ruled out.

Anyway thanks to both for your suggestions :), I'll carry on looking into it and see if there's another work around. I know that it's something that would be possible within Symphony, I just don't have the expertise at the moment to build this, though I suspect perhaps I could use an existing extension as a base.

Hello, guys. Do you think it's possible to build an extension that creates a custom data source, which outputs some server information such as OS, domain IP, used disk space, PHP and MySQL versions,... etc.?

Definitely. The grab() function of Datasources is a free for all really, as long as it returns an XMLElement.

Gallery Section

  • section editors are given a checkbox indicating whether the main function of the section is as an image gallery
  • if the section is a gallery, the table structure of a publish index is reformed into a left-to-right collection of thumbnails and, if found to be intuitive (or at the discretion of the user), a filename, url, or title field
  • hovering reveals an edit icon, clicking anywhere other than the icon selects the entry pursuant to normal publish index behavior
  • requires (or extends) the ever-so-awesome image index preview
  • optionally uses nick's ass-kicking order entries to rearrange thumbnails

Well, this is really doable with SBL+ (gallery view).

Images -> Albums -> News
                 -> Articles
                 -> Events

If you download the latest version you'll get:

  • on hover = create / edit entries on-the-fly
  • on click = select item
  • integration with image index preview

In #6 pending pull request for SBL+:

  • filter of related values (images) with respect to another field in current section (where your SBL+ resides).

Check out the Readme in my fork for details and the full implementation of the above (until the pull request is integrated).

optionally uses nick's ass-kicking order entries to rearrange thumbnails

Regarding this, I posted an issue about related values (images in this case) rearrange in gallery view. I hope some skilled JS dude can tackle this.

EDIT:

The above is totally useless for Image galleries since 10.01.2012 when Subsection Manager 2.0 was released.

I'm brand new to Symphony, but curious if anybody knows about any extensions that would allow for recurring payments via paypal. Thanks all.

Paypal actually provides this function if the buyer has added a credit card number. Perhaps some adjustments of the existing "PayPal Payments" extension could get this to work. Also some clever mix with events that extension and cron jobs should get the job done.

Now that I commented on a request, I get to have a wish too right? ;)

Perhaps this already exists but how about having predefined DataSource collections? So instead of finding all the individual datasources you need for each page you could create DataSource groups. These could then be listed above all the others in the page settings. Less ticking, less searching -> faster workflow -> reduced failures!

@ChriZ Good idea.

In most cases you will end up with a few data sources that should be included on each single page... that could be handled more effective.

Dear Santa,

Can I have a GUID Field extension? I promise to be a better boy, really.

Thanks.


Specifically I want a cleaner way to handle markdown images dropped from Subsection Manager into textareas. As noted by others, file URLs are fragile references that can result in broken image links and usability issues for maintaining content. I use the Unique Upload field, so every time I re-upload to the same entry, I get a new file name and a broken reference.

Symphony for the most part allows you to create a COPE (Create Once, Publish Everywhere) CMS, but when it comes to handling markup(down) and media content in textareas, the available extensions make it hard for you to avoid a WPT (Web Publishing Tool) solution:

"Conversely, WPT’s tend to store objects to enable the building of a web page. As a result, the content may be bundled together in database fields, storing the actual references to images, video and audio entirely within the story content text. It is still possible that the WPT’s are adhering to some form of data normalization in their storage techniques, but that does not mean that these systems are embracing COPE."

It would be ideal to have those mixed in content objects referenced with a more reliable identifier that's:

  • auto-populated (authors shouldn't be burdened or trusted with system coherence)
  • permanent (absolutely uneditable after creation to prevent all dead links short of object deletion)
  • unique (across a symphony install would be nice, across the universe until it dies a cold death would be spanky)
  • random (secure)
  • URL encoded (to be used in place of the file URL in the drop text or in an actual URL)
  • non-reusable (zombie associations could bite you when you least expect them) A full GUID would be awesome (size configurable up to a 32 character hex?), but I could settle for something random and unique only across the section itself.

I considered using a system id, but I don't know if that's reliable since ids/entry ids can change (do they?) during migrations or system/extension updates. I also never quite figured out how to get an entry id to show up in Subsection Manager drop texts, although apparently that worked for some people at some point. After looking at all the available fields I could find, I've cobbled together something workable for now (2 Incremental Number fields combined with a Reflection field), but that's a little messier, involves more dependencies than I like, isn't random, and is reusable when entries are deleted at the end of the sequence. There are also possibilities with the new Reflection field in the works using a custom XSLT, but that's probably uglier than necessary and wouldn't guarantee uniqueness.

Some kind of GUID field could also be used to help fulfill slug/permalink dreams. Some have suggested a unique reflection-like field to create text slugs, but there are permanence/relevance issues there when the author edits titles. Another suggestion is to combine entry id and title in the URL. But sometimes it isn't a good idea security-wise to put sequential integer keys in the URL, and there's still the possibility of id changes.

Since GUIDs are a standard db technique, I'd imagine this kind of field would find many uses.

I considered using a system id, but I don't know if that's reliable since ids/entry ids can change (do they?) during migrations or system/extension update

Entry ID's never change. Once an entry is created, it's ID remains static. It's essentially a GUID for this object in your entire Symphony install so I don't think a GUID field would help in this situation :)

I would file a bug against the SSM extension asking to be able to reinstate the ability to use System ID in the drop text.

In a recent project we used the name of the Image instead of the path to do the XSLT. When the image was found in the copy, we cross referenced it to the SSM field so that if different images were uploaded, they would still appear.

An extension this could probably cater for the scenario where an image is removed from the system but the image was not removed from the textarea.

Hope that helps a little bit.

Thanks brendo, that does help.

SSM and Reflection don't provide direct access to the entry id, but if it's truly reliable for all eternity, the System Id Field extension can show it. At least for now. It shows signs of neglect (the readme is actually for a different extension altogether, last changelog in 2009 :-) ), and that makes me a little itchy. I don't want to have to re-save hundreds of entries to re-expose a reliable identifier if that extension suddenly stops working. Maybe exposing the entry id in the admin should be a standard option for all sections.

Also, is the entry id unique across all entry ids in a symphony install, or just its section? In my case it doesn't have to be universally unique, but it'd be nice.

"In a recent project we used the name of the Image instead of the path to do the XSLT. When the image was found in the copy, we cross referenced it to the SSM field so that if different images were uploaded, they would still appear."

I considered that. Reflection can give me a Unique Text Input handle (SSM won't) that I can put into the URL of the drop text, but the links will be just as dead when an author edits the title as when she re-uploads the file. Editability of the identifier is part of the problem.

"An extension this could probably cater for the scenario where an image is removed from the system but the image was not removed from the textarea."

If the identifier is non-reusable, accidental deletion can't be fixed without also fixing references in all the textareas (good luck remembering where those are :-D ). But titles create the same problem when edited and, to make things worse, are reusable. With titles editing is almost guaranteed to be a problem. In my Google Reader feed, some higher profile blogs will have several versions of the same article in the feed every day because the authors keep tweaking titles to improve SEO or punchiness.

I'll go ahead and post a bug in the SSM thread, but this seems like a bigger problem. It's about how Symphony encourages authors to mix unreliable object references in textareas. Without SSM, using URLs is a painful workflow for authors, but acquiring and using entry ids in a URL prompt is worse. And it's the option with the least official support as there are only two(?) developer solutions: use an old extension or force the author to find ids in URLs. :-(

The connection I made with slugs/permalinks may seem tenuous, but what led me there was considering what happens when readers of a post want to share a link to an object within the post that later changes filenames or some other non-permanent URL fragment. I'm not sure how to solve this, but some kind of non-semantic permalink is involved, just like with pages. All of these issues revolve around permanent identifiers, and from reading other posts here, it seems that developers are settling for something less than ideal.

SSM and Reflection don't provide direct access to the entry id

That's frustrating. You can't do entry/@id? If so, that sounds like a Reflection field bug.

Also, is the entry id unique across all entry ids in a symphony install, or just its section? In my case it doesn't have to be universally unique, but it'd be nice.

It is unique across sections, so given an entry ID you can work out which section it is in by looking up within sym_entries.

I'll go ahead and post a bug in the SSM thread, but this seems like a bigger problem. It's about how Symphony encourages authors to mix unreliable object references in textareas.

Yep, very much so. We still haven't solved this problem.

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