Creating displays to interact with data using multiple Panels - drupal

I'm wanting to use Panels to drive a whole bunch of pages for data interaction, but I'm not sure how to get Panels to "interact" with each other. I think the best way to put it is with an example. Say I have one Panel which has a list of nodes (in a view?), and another Panel that I want to display an editor for any node I click. And I have a page that has the first Panel in a block on the left, and the second in a block on the right. So I suppose on click, there'd be some AJAX grab that puts some page in the other Panel. Now, this is a simple example, and I'm going to end up with many different sets of interactions among multiple panels doing all sorts of stuff. But this works as a starting point. The goal is to be able to reuse these Panels in multiple pages that may interact with similar data, but with different operations (maybe there's the above edit page example and also a similarly designed view page also utilizing the left block node selector?).
How much of this can be accomplished with Panels (and maybe supplementary modules?)? Where would I need to code to put it all together? I assume it would need code perhaps in the Panel page that contains things like the data selector panel, data view panel, etc. to "link them together". Are there any good examples floating around on how to do this, since it seems like a fairly bread-and-butter exercise for any sort of web-based data interaction...

The best and probably the simplest way probably would be to do it with some coding but if you prefer using modules there a module families like Context or Rules that should give you some functionality which you are after. I also suggest looking into AJAXification methods and modules.

Related

Making Reusable Controls With JavaScript

It is easy enough to create a partial view, and just as easy to render said view. But what if I want said view to have associated JS local to it? And what if I want this view to be rendered multiple times per page?
Basically take something like a tabbed view of textareas that can be added and deleted dynamically. This is easy enough to make one of.
Now, putting that into a partial view and rendering it would be easy. But What if I wanted the page to hoist multiples of the above "partial view". (Even though its pretty frowned upon to have a partial view with javascript in it.)
Is this feasible in any way? Perhaps partial views are not exactly what I'm looking for?
I don't really have any code because this isn't so much a code related question, as it is an architecture(?)/theory question.
If repeating the same partial view requires the same block of JavaScript to be repeated multiple times for multiple instances of the view on one page, that should indicate to you that you've got design problems going on in your JavaScript. That's code repetition that's begging to be refactored. Your script should be written such that it's designed to be loaded once and work - if you need to refer to the markup of the partial view, do so by using classes rather than IDs and so forth, such that your both your HTML and its associated scripts work as a repeatable module.
I would like to disagree with sphanley. I like to see gadgets as whole objects, wholly functional by itself, so when you use it, you just drag it & drop, and it works without affecting other elements in the page. For that it needs to encapsulate everything it needs, JavaScript, CSS, HTML, etc.
However, instead of embedding JavaScript, it might just call a predefined function in a custom library specific to it, thus minimizing code when multiple gadgets are used in the page. And it will need to use ID selectors, not class or any other, so it does not affect other elements unintentionally.

Setting formatting on multiple controls in a InfoPath form at one time

I am creating a form that needs to have 30 or more fields either disabled or set to be read only. They need to be marked as such if the based on the value of a drop-down box.
This is something that I can do using conditional formating that I know, what I want to know is there a way to either add conditional formatting to multiple controls at once or a rule that I can set that will accomplish the same thing?
One requirement is that I can't use programming code to do this. I realize it would probably be far easier to do that way but that is a requirement given to me by my manager.
EDIT: Forgot to add this there are fields that still need to be edited when the other fields are read only.
One feature in InfoPath 2010 (can't remember if it was in 2007) that reduces the pain of this sort of repetitive work is the ability to copy-and-paste rules. With this you can create your read-only rule once and then just paste it onto each of the 30 controls that need it.
You could put it all in a section but your only option for sections is hide/show (not disable or read only). Otherwise you have to setup all the fields against that one dropdown. Huge pain but at least you only have to do it once.
An alternative, which is just about as much work, is to setup two views. One that is readonly and one that is normal. When the user changes the dropdown just flip the view. This method has a bunch of display nuances but does work.

Create drag-able panels in Flex like its in netvibes.com

I want to create a news application for my website.
My question is how should i create drag-able panels/canvas inside another panel/canvas.
What i exactly intend to do can be seen on netvibes.com . The website has different panels of every news group, and this panel could be moved from one place to other, but in a well defined manner. And the other panel take over the place of dragged panel.
Is there any component in flex, which can help me make something like that.
If i was unable to make my question clear, plz let me know, i will try to make it more clear.
Regards
Zeeshan
A TileList with drag and drop enabled should be able to accomplish something like that. Or, use a Spark List with a custom layout that you create.
It might be a bit tricky getting the list elements to drag and drop based on clicking the title, but it should be doable.
I think you should consider a more advanced solution with drap-n-drop with a custom panel based component. The places the panels can move can be implemented with a different custom canvas based component. The advantage would be to move the components into different custom positions and panels can be resized independent of each other.
Adobe has some good tutorials for drag-drop operations.

Display content in two columns with fixed height in drupal

I'm in need of some pointing in the right direction here...
I have a site with a couple of different content types. I want to display this content in a book-like layout. The book should be of a fixed width and height and the pages should be populated with as many nodes as can fit. It should be in two columns, with the left column being filled before the right one.
How should i approach this?
I have been thinking about a few solutions, don't know which are possible and which one is best or which i can combine.
I could just create a view that selects more nodes than is need. Then check how long the nodes is in the theming layer and throw away the nodes that aren't needed. Pagers need to be fixed too.
Use panels in combination with views to display one view in two columns, if this is possible. Need a way to determine the amount of nodes that is displayed on each page, based on content length.
Write a plugin/handler for views so that i can select an amount of nodes that has an maximum, predetermined, max content length.
Write a new display-style for views that shows content in two columns with fixed heights.
Write a custom module, leave views and panels out of it and do everything myself with db_queries.
Would appreciate and guidance a lot. Not looking for a finished solution, i'm not afraid to code and i will contribute back if i create something that someone else can use (like a views plugin). Just need someone to guide me in the right direction :)
The hardest thing will be to figure out how much content you need to fill out the space. There's not really a good way to do that either since, it will depend on both the markup and the styles.
The best solution I can think of is loading the nodes with javascript, or maybe just have them available as javascript variables. That way you could insert the nodes to your page one by one. You could then in the JS see the heights of all the nodes in total, and once that height is bigger than x, you only need to remove the last inserted node.
It's not a perfect solution, but I think you should look at doing this with JavaScript. The only problem is, that it wont degrade gracefully very well.
Drupal help you build fast, and it looks like promising but fails to fullfil the needs of client, designer also programmer. You need to write one module page, and some functions.
5th solution you gave has little trouble than others. Write a function that to have "teaser like" behavior, I will return formatted node according to its type. Don't lay on drupal's teaser system. If teasers will have different heights, add height to teaser function.
I don't have a direct answer, but have a few things for you to think about.
It sounds to me like what you are looking for is a combination of a CSS3 Multicolumn Layout (see http://www.quirksmode.org/css/multicolumn.html for example) and limiting the displayed content to a fixed height.
My first thought would be to create a single view that gets more than you need, display it using CSS3 columns, and set overflow: hidden; for the container, so that the extra text is just hidden.
If you need to get more particular, you may need to dig in to the views rendering system to limit the total number of nodes based on how many characters have been rendered.
But since your desired constraint is more visual than data-oriented, I think that the most practical approach will be to use javascript to detect the text height and state of overflow.
There are some things that are unclear about your requirements. What is the purpose of the 2 content types? Does one display on the left and the other on the right? Or are these just 2 different content types that should behave the same way, but we're only seeing one content type at a time on a given page? What should happen with the overflowed content? Should it appear dynamically on page 2, then 3, then 4, and so on?
One parting thought: Maybe load ALL the content that you want to page through, directly to the browser. Maybe have it start off hidden. Then use javascript to display it, formatted into columns, and use javascript to handle the paging as well.

Creating a scheduling / calendar grid in ASP.NET

I am working on the prototype for a scheduling application on an intranet system. The application is for scheduling and tracking promotional workers at various locations on various dates.
Currently, only for prototyping, I am generating a data table of location/date, and from this I iteratively build an HTML table (asp:Table control). On visiting each cell, I query for people working that location-date and populate the cell accordingly. This is very inefficient, and will at worst be improved by querying cached data for the whole location/date grid.
I'm looking around for established patterns and techniques for dealing with scenarios like this in HTML in general, maybe a visualization library for jQuery or something, and for ASP.NET in particular, maybe a library for implementation on a GridView etc.
Am I going in the right direction with this, and if so, what recommendations are there regarding the previous paragraph?
As regards the user interface, I would take a look at the Telerik scheduler control and see how that one is done. You don't want table cells stretching the layout, and even filtering may not help you unless you truncate the displayed text as a link to a modal pop-up, or some kind of master-details set up.
http://demos.telerik.com/aspnet-ajax/scheduler/examples/overview/defaultcs.aspx
Why don't you try placing the calender control on the left side and then select the current date by default. Thereafter user can select a date and you can list the data using a gridview based on the selected date-location. That should ease up the interface as well.
These controls are complex, and there are many third party vendors out there with components like these. Take a look around at some of the components available to you, as it is A LOT of work to develop a component like this yourself (we were going to attempt to do it, but realized to make it efficient and usable we needed to buy one, so we purchased Telerik).
HTH.

Resources