Panel Configuration Tool
Before I get started, I want to clarify that my tone is "contemplative and hopeful", rather than "angry, whiney ranting".
Over the last six months, I've been trying to find a plugin or hack that will give me some control over the Panel (what everyone else in the world would call a "Sidebar"). I'm a moderately decent PHP developer, but the Panel "module" is so obfuscated in MVC coding practices, that I can't get my head around how to build a plugin that can do what I need without digging into the Vanilla core (obviously a big no-no).
I shamelessly admit that I'm a spaghetti-code-cowboy, and while I am trying to embrace OOP in the context of a scripting environment like PHP, I tend towards the more pragmatic "let's get it done yesterday" approach, rather than the "I'm writing software for a nuclear power plant" approach.
I do think Vanilla is an awesome platform, and the developers have done a great job producing clean code, even if the MVC pattern is a different flavor of Kool-Aide than I'm used to drinking (I'm usually nose-deep in WordPress).
Our Vanilla friends could could take a lesson from the the WordPress Sidebar/Widget strategy. Specifically, multiple "Sidebars" can be registered with a theme, and "Widgetized" plugins can be associated with the Sidebars.
I'll continue hacking away at the Panel for now, but Vanilla, please consider giving us friendly Sidebars!
Comments
Check out the Pockets addon. It does pretty much precisely what you want, I think, with a nice, highly-configurable backend in the dashboard.
what are you trying to do? MVC is just a design pattern that emphasizes separation of concerns. it doesn't really have much of anything to do with the panel behavior...
Vanilla Wiki, Tastes Great! 31,000 viewers can't be wrong. || Plugin Development Explained
I think their design is fine. spaghetti coding practises is the problem there is no attempt at understanding and it make it impossible for anybody to pick up where left of, will litter the core with all sorts, and people like me have to pick up the pieces.
grep is your friend.
Pockets is great, but it doesn't provide control of other panel plugins. It just allows custom content. I am using it, but it solves a different problem than the one I'm laying out.
I also agree that spaghetti coding isn't a "best practice", and I'm being self deprecating when I call myself a "spaghetti-code-cowboy". While I don't like it, I have to work with it every day, and a big part of my job is taking the leftover spaghetti and baking it into a lovely, well document, high-performing, standards-based, code casserole.
I don't have a problem with the MVC design pattern, but any design pattern falls apart when it's not clearly documented in source or an API. Without clear documentation it may as well be spaghetti. My biggest frustration with Vanilla is that some aspects are very well documented, while other result in hours and hours of frustration.
As far as the problem I'm trying to solve, I want better control of the panel via the dashboard, and my efforts are progressing very slowly because the "separation of concerns" have resulted in over-abstraction of containers like the Panel.
I know the Vanilla team is working hard to make this product even better, and writing thorough documentation and tutorials for impatient developers like me isn't at the top of the list. Fortunately, they've created an excellent community, and I always appreciate the professionalism here, as well as the valuable development advice.
As I work through this challenge (and other Vanilla challenges), I am slowly mastering Vanilla's application of MVC. When my head actually explodes, I'm just glad @x00 is here to pick up the pieces!
@CurtisOden Ah, OK -- when you mentioned WP's ease of sidebar widget juggling, I thought that was all you wanted to do.
For what it's worth, I sympathize totally with the explodey-head syndrome. I don't know anything about MVC design patterns other than knowing what M V and C stand for, and I am consistently amazed when something I do in views templates actually works, and, worryingly, at least half the time I'm note entirely sure why it does...
AMEN!