I got the form processing framework in place this morning. This includes customisable template-driven forms and a dynamic system for form handlers. That allows us to have plugins that add entirely new processing features to Minx, and can be installed or uninstalled on the fly, per blog.
(We don't have plugins for new template features yet, but I will be adding that.)
Later today I'll implement forms for comments, searches, and (if I have time), post, comment, and trackback management. Once those are working, you'll just about be able to switch over to Minx completely.
The last big thing left to implement is block tags. These are fiddly because to implement them fully I need to dynamically construct SQL queries from the options specified in the template, but think I can get a fair way by just validating the options and plugging them into a set of pre-defined queries. I can probably get that in on the weekend.
From there, it's all about features, more features, more more features, and lots of testing and performance tweaking, but the basic system will be in place.
Update: Just replaced the template loader with a template cache. The new forms system will lead to a lot of new templates, even if you don't normally look at them at all, and it doesn't make sense to load them up every time. So templates are now loaded on demand and cached.
The new templated comment form will go in tonight, and more forms will follow tomorrow.
Posted by Pixy Misa at June 15, 2006 01:49 AM | TrackBackSomething weird happened with the comment above. It seems to have lost its formatting...
Comment #3 appears in my comment tab, but when I refresh the Minx-Munuviana blog it doesn't appear there...
Okay, now both comments appear. Must have been a hiccup.
Oh, I know. It's the cache. Maybe posting a comment should clear the cache?
Okay, in order:
Yep, we have sub-templates/modules. Already in and working fine.
Minx tags should work fine in any WYSIWYG HTML editor; that's the major reason I used square brackets instead of angle brackets. I'm going to include a WYSIWYG template editor using Innova.
Also, I'll have TinyMCE as a drop-in replacement for anyone who has problems with Innova. But Innova is a lot more powerful than TinyMCE.
There's an issue with the way Innova works in Firefox that means that formatting is currently getting stripped out. This will be fixed.
Currently the cache gets cleared after five minutes, but knows nothing of comments or posts. I plan to fix that. If you are logged in, though, it doesn't cache pages at all (because it assumes you will be commenting and/or posting).
Posted by Pixy Misa at June 15, 2006 11:27 AMThe updated build is in and has passed regression testing, but I'm too splorgled to try the forms system right now. Tomorrow...
I see you've thought of everything!
Not that I want to be a nudnik, but a WYSIWYG template editor that supports sub-templates won't work automatically...
Sleep Tight!
Making a template editor fully WYSIWYG is kind of tricky, not least because templates are inherently anti-WYSIWYG. But we should be able to do something pretty nice.
Some sort of Ajax-y preview is what I have in mind. Well, I'll start with a single-template editor and work from there.
I am getting the feeling that when this happens I am going to be forced to access long dormant parts of my brain that understands any of this.
I guess its a good thing.
Posted by Stephen Macklin at June 15, 2006 05:38 PMJust thinking out loud here...
Displaying a template WYSIWYG is easy - just give it a fake post and/or comment and display it like you always do.
The first problem is knowing exactly which element you're in when you do something - but that shouldn't be too hard either. Javascript has the tools.
The second problem is knowing which template the element belongs to. That's not too hard - as you climb the element tree, eventually you'll come to the point where the template is included, and then you know. Just make sure you put an element there (a div?) with name="templateName", or some such.
Third problem: display the change. Again, not too hard, just reset the innerHTML. There might be one complication: if there're multiple instances of the same template, you have to redisplay all of them. Not too hard, though, just do getElementsByName("templateName"); (You can even add some weird characters to the name to be 1000% sure that the name is unique.)
Fourth problem: I thought there was a 4th problem, but I can't think of it now... I need to go to sleep. Oh yeah, there's all the regular stuff, like how to undo italics, but that's already been done somehow...
Pixy:
Thanks for this ongoing gift to the community. Can hardly believe you're actually writing brand new blogging software?? In fact, I'm still not sure I know what's going on.
Some time in the next few weeks I'll figure out how to install a blogroll too. It's just a matter of getting a few hours that aren't committed to something else.
Posted by Demosophist at June 16, 2006 03:19 AM