Hi Panel developers!
First of all, an excellent module, thank you.
I have worked with various different CMS before, but I am new to Drupal. I came across Panels as I wanted to realise some functionality that is fundamental to many other CMS. In order to motivate why I am requesting this feature, here is a brief summary:
In sites maintained by designated editors rather than community members, it is often required to compose a single page (i.e. node) from STRUCTURED SUBSECTIONS. In Drupal this can be achieved by defining a node type for each section type that you want to have on a page, then by creating some nodes, and then by using Panels to display the nodes on a single page in the required order. Note that the objective here is to use Panels not for overwriting a layout but for aggregating some nodes on a single page in a way such that each node and their order are specified explicitly (i.e. Views module is not suitable).
There is a detailed description of what I want to do and why I believe that there are many more people who would like to do the same thing: http://drupal.org/node/259586. Specifically, see the comments: http://drupal.org/node/259586#comment-852885 and http://drupal.org/node/259586#comment-852938.
One of the important points here is that all this should be done by an editor with a minimal technical knowledge and a minimum of privileges.
According to the documentation, the preferred way of doing the above is to add a CONTEXT to the panel node for each node whose content I want to add. I appreciate why it is the preferred approach, as I am a developer myself. But I have also extensive experience in project management and dealing with corporate clients and the editors who work for them. In opposite to back-end developers, they will not understand why this has to be what they call too-complicated. Editors want and can to concentrate only on the actual content and do not want to (and often cannot) deal with abstract concepts like a context.
There is a "deprecated" approach to add nodes into panels by using the "Legacy node panes"-module. My request is to move the functionality of that module into the main Panels module and to remove the "deprecated"-stamp from this approach.
I think that this easy change would provide an enormous benefit for the usability of the Panels module in a number of use-cases outlined above and described in the links provided earlier:
- The structured node content approach based on Panels would be workable for non-technically trained editors.
- It would speed up development for all user groups.
- The reasons for the context-based approach are (in my understanding) based only on back-end ecstatics, the direct approach would increase usability.
I hope you will agree.
Many thanks!
Comments
Comment #1
catchIf you want a list of arbitrary nodes and ordering, have you looked at http://drupal.org/project/nodequeue ?
Comment #2
sdboyer commentedHi gragus - thanks for the detailed explanation and references, as well as the kind words; when I'm more used to dealing with #260510: Panels for Drupal 6.x?, you can ask anything this reasonably and at least expect a fair response :) catch does make a good point - it does sound a lot like what you're looking for is adequately addressed by nodequeue. But since you've taken the time to write out and reference your explanation, I can at least address your valid concerns about panels' conceptual inaccessibility to a general audience, as well as your desire (which I share) to see the panels interface be extended into something that's transparently and intuitively usable by that general audience. I do have to warn you, however, that I don't have the time to be able to keep up with the length of the posts you linked to - there's a lot of dev to be done.
There are several issues that need to be addressed first. With all the energy you're putting into this, I'm surprised that you're as concerned about us simply titling a particular method as 'deprecrated'. It may not be the wisest choice, but the deprecation refers to the evolution from Panels1, not that the method is somehow invalid. MUCH more importantly, however, is that you've misgauged the nature of Panels itself. Panels.module, and most of the associated .inc files that are in the /includes and various plugins directories, are _completely_ abstracted from the type of operation you're talking about. Since the core Panels API comes packaged with all the various submodules, people naturally assume that many of the navigational, textual, and other informational elements are in some way basic or fundamental to the core of Panels itself. With very few exceptions, they are not; in terms of their interaction with the Panels API, panels node (legacy), panels page, mini-panels, panels views (legacy) have absolutely no special-privilege access to the API, no custom code going on inside the API that allows them to do their thing. They're simply client modules that bear a striking resemblance in terminology and appearance to those few pieces that are 'core' Panels because - surprise surprise - merlin coded all of them.
The problem isn't that core Panels can't or isn't designed to do any of the things you're talking about, or that it's irrevocably married to the use of terms like 'Context' in its UI. It's entirely possible to design a panels client module that makes extensive and complex use of context without the user ever having the slightest idea. The problem you're focused on here is with the particular way in which panels_node(legacy) implements the Panels API. And though your points and end goals are certainly valid, we're not going to change panels_node(legacy) to suit, as there are plenty of things for which it works just fine right now, nor are we going to introduce any such changes into the API, because doing so would at minimum slow down the rest of the API so that it could consider a special, less-abstracted case, and at worst, would just plain break all other panels client modules. So while I agree with the end goal, the remedy you've proposed would actually take us further away from it. What I'd encourage you to do is write that module, because we do, indeed, need it.
Comment #3
gragus commentedHi,
I briefly looked at nodequeue before. Their brief description speaks od node grouping and of nodes but does not suggest that it works with node content or panels. But as you are suggesting that it may be helpful I will install it and investigate in detail, so thanks.
Comment #4
gragus commentedHi,
thanks for the detailed answer.
My personal situation at the moment is being overloaded with work and wanting to complete a private web project before leaving on an extended business trip in a month. I am saying that to underline that although writing a custom module sounds interesting, at this particular occasion I cannot do that. I do not like publishing bad code and if I was to write Drupal modules, I need to first gain serious knowledge of its core and API. So far I have played with Drupal for about 2-3 days (if you aggregate all the 2-hour chunks to full time). I'd be happy to help but this will not be before the end of the year, at best, when I am available again.
Of course I also do not know the Panels API, but I trust you on your opinion. I am not suggesting to alter the core of the Panels for a single feature. As for the UI, here is one approach we could take, if you like:
The word "legacy" has (at least to me) the co-notation "historical", but the word "deprecated" in the context of software development has the co-notation "do not ever use it for your own sake because its unsupported and a bad idea anyway".
If I understand you correctly, then you are saying in your post that the "Legacy node panes" module is legacy, but not really deprecated in the above sense. Maybe you could remove the reference to being deprecated from the module description (and wherever else it appears) in order to not discourage people from using it. Of course, in that case you would have to make sure that "Legacy node panes" are also included in Panels for D6 and other future releases. I do not know whether you have had planned that anyway and whether it would be difficult to do.
On my side I am happy to write a handbook page or two that describes how to achieve my "node sections" on the basis of panels.
Your benefit from this would be that you add a common use case to your module and introduce a standard implementation path for a common use case on the basis of your module thus making it more valuable.
The benefit for me is that I know that the approach I have taken is conform with the standard implementation path and that it will be supported in D6 and in future.
What do you think?
Cheers,
..
Comment #5
sdboyer commentedSo I've reflected some more on this, and here's where I'm at:
I think I may have somewhat misrepresented the real reason for titling the describing panels nodes legacy as a deprecated method. In truth, though, probably the worst misrepresentation is even calling panels_node_legacy a module at all - in actuality, it is _nothing_ more than a standard panels content type plugin with a couple of extra hook invocations. In fact, compared to a number of the content types that are packaged with Panels, it's pretty elementary.
We've marked it as deprecated because it's as close to deprecated as you can get with a panels plugin - virtually any other plugin that displays node data, especially now that it's possible to create panes more or less directly from CCK fields, is more flexible and provides more granular control than do legacy nodes. But this is about more than just the software engineer's eternal quest for ultimate granularity and abstraction; the real justification for marking the method as deprecated is that, while it works, utilizing it will put you at odds with the direction that the rest of the community is going, and I think we'd be really remiss if we didn't advise people that there's virtually nothing they could want to do with that content type that couldn't be done better by another one. That includes your goal. In this particular case, the issue is that using whole node types to provide such micro-level content will put you at odds with the drupal interface sooner rather than later; that's REALLY what CCK aims to do via its fields. As you point out, you've only been working with drupal for a couple days, and you've jumped in on one of the more abstract ends of a framework/community that's already pretty steeped in abstraction.
It's not that I don't - fully - appreciate the need to bring the abstractions of drupal into interfaces that can be appreciated and intuited by the average user. The fact is, there's an enormous amount of abstraction that needs to be harnessed with drupal, and modules that try to get ahead of themselves will fail - Panels included. At the endof the day, I think that Panels2's real achievement was creating an interface that allows many of the most abstract, most powerful methods currently used in drupal together into an interface so that site designers at all levels can (well, once we finish doccing it) create and manage complex, but relatively non-participatory, websites with ease. Panels3 isn't going to reinvent that wheel - in large point, it's going to be about extending the interfaces to the point where they can reach out to average users in a transparent and intuitive way. Unfortunately, we just can't rush it.
So, all that said - don't worry about not having the time to dev right now. Contribute if & when you can. If you want to write up the method you used, great - the more csae studies, the more accessible it becomes, and that's great all around.
Comment #6
gragus commentedWell, thanks for a well detailed reply once again!
I think, for now I should go away and play with Drupal for a bit. I very well appreciate your reasoning in general, and if I have enough time to play with Drupal, I will see what you specifically mean in future.
For now, I will continue using the Legacy Nodes as described. I'll keep you up to date if I should develop something specifically customised for my task.
I hope that my remarks will be useful for you at some point in future when you are working on the UI. Now you have one more use-case to consider))
Cheers!