How to display additional form during views bulk operation? - drupal

I want to use the Views Bulk Operations (VBO) module to get the possibility to select nodes from a view and then do an action on each of them. However, this action requires additional data to be supplied by user, so what I need is to put another form in between VBO submit and the actual action processing.
I am using the *hook_action_info* hook to define my action. However, as I went through the *hook_action_info* documentation it seems to me that this is not doable using this hook as there is no configuration option to suppress the action bulk ajax update.
Can somebody confirm and/or propose better solution?
In short: User selects nodes from a view using checkboxes, after submitting the form another form appears asking for some more details (having list of nodes as hidden elements in it) and after submitting this one, e-mail is sent per every node. The body of the e-mails is always a combination of node data and the second form data.
Thanks a lot.
Petiar.

So, I decided to forget Views and VBO (no hard feelings) and create my own, custom form. The major thing which actually convinced me that this is not going to be a big issue is the tableselect form element type. I think this has been invoked in Drupal 7 and it is magical. At least worth have a look:
http://api.drupal.org/api/drupal/developer%21topics%21forms_api_reference.html/7#tableselect
Thanks everybody for stopping by willing to help.

Related

cq:include default components in CQ form with server validation

I would like to customize start/end of OOTB CQ5 user form component to start with certain custom components pre-populated when the 'form' component is drag/dropped on to the page.
I currently have an over-laid /apps/foundation/components/form elements with start/end/actions customized. But I am to figure out way to add a component belonging to the FORM group, to the form start.......end to the page whenever a form is added to the page.
I have tried using a <cq:include path= "customComp" resourceType="/pathto/customComponent" /> to the jsp of the form-end component, this adds / shows the custom-component on display but does not perform the server-validations as it is not a separate node between the start and end nodes on the page, but a dynamically added one.
This is basically to enforce/mandate the use of my custom captcha component whenever a form is placed on a page.
thanks in Advance !
If you want to leave the form creation entirely to the author (as intended with OOTB components) there is no easy way to "sneak in" a mandatory captcha component. Even if you managed to put in the captcha component, the author can just delete it or move it out of your paragraph system.
Mingling the captcha with form-end might be possible, but not without reinventing the form-end component pretty much from scratch. I wouldn't want to do that.
I see three options that might be helpful to you:
Implement a jcr EventListener that will fire whenever a form is created or changed. Check the form data structure in jcr and when the mandatory captcha component is missing, add it and commit. This type of behaviour is of course a little shady and may suprise authors - but it's gonna work.
Build a wrapper form component that contains a paragraph system with a fully pre-configured form, including form-start, captcha and form-end. This approach my even save authors a bit of work and nobody will "forget" about the chaptcha easily. Nothing will stop an evil author from explicitly deleting the catpcha component however.
Build an entirely custom form component that does not utilizy any of the OOTB components. In this scenario you have full control over what the author can and cannot do. Most likely you will give up on a lot of flexibility in order to save development time and end up with a mostly static form where the author can edit a few cruicial parts.

Symfony2 - Dynamically modify form using user inputs

A little bit of background first. I learned in the past how to use "pure" php, and have more recently started using Symfony. I have been following several guides (Cookbook, Lynda & Openclassrooms) for many of my inquiries, but I haven't been able to find an answer for my current question.
I have two entities, let's name them User and Player. The User entity contains a Player property which can be null.
So, during a User creation, I would like 3 possibilities : leave the Player field empty, select an already-existing player, or create a new Player. At first I wanted to add a "Create new" option in the Player dropdown list, but have simply gone for a "Create new Player" checkbox.
The idea is, if the checkbox is checked, I would like to remove the Player dropdown list and add an embedded form to create a new Player. I have tried several events (PRE_SET_DATA, PRE_SUBMIT & co), but none seem to trigger according to a user input.
This is something that I would have done in JScript, but seeing how Symfony's a much different animal than pure php, I don't know how to do it. Any help or advice would be greatly appreciated !
You're on the right track there with PRE_SET_DATA and PRE_SUBMIT events.
You need to use JavaScript to reload form from server and Symfony form events to rebuild the form.
This is the documentation you're looking for: http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html
Unfortunately, Symfony's form component is pretty complicated, so there are no simple code examples you can just take and use it without going through this article.
Also reading Form Events documentation is helpful for deeper understanding.

Drupal 7 - Administration - Find node by it's field value

I'm looking for the way for the site's administrator / moderator to find / filter the list of nodes by some field custom value. Field value could be defined by radio / text / checkbox etc.
Default content listing proposes only few filters, it's not enough for sites with huge amount of custom nodes.
Use an EntityFieldQuery object, documented here:
http://api.drupal.org/api/drupal/includes--entity.inc/class/EntityFieldQuery/7
The documentation has no examples (ugh), but there's a thread here with some:
http://drupal.org/node/916776
EDIT: Ah, you're talking about administration and not actually writing a module to do it. If that's the case, use a view with exposed filters, like the other guy said. :)
Maybe it would help to use a view for it, where you set filters, so that you get the desired listing.
I had to test this, but I've just confirmed. Views in Drupal 7 can indeed filter across multiple content types w/ custom fields, and still have filters apply to those custom fields. They seem to treat the nodes w/o those custom fields as empty or null values.
So for instance, I have article and blog content types. Blog has images, article does not. I can sort or filter on the image field, even though article doesn't have it. It simply assumes the field is null or empty.
This however, may not solve your problem of having a large number of custom fields. If these are dynamic (i.e. they grow over time) you might be in trouble. If, however, they are set, and just a very large number, you could manage this.
So while there is no automatic add all fields, which I believe you mentioned in a previous post, you could feasibly search on a large variety of the fields. Even exposing fields that you don't necessarily display in the table, but can then search on. Or changing the fields you expose or display on a per page basis in the view. All from one view. And then you could export the view to bring it over to the other sites.
I was going to try and attach the exported view, but the export is rather large for inclusion in an answer, I think. Please let me know if you think I should still include it, or if you'd rather I can simply send it to you through a PM. Let me know!
EDIT: I decided to include a link to an export of the view. http://greggalante.com/sites/greggalante.com/files/cross_type_view.txt
http://drupal.org/project/search_api

Custom search form in Drupal 6: Views/Panels or custom sql?

I use CCK in Drupal 6 and I need to build a search form in Drupal with 8-10 fields used as a filter. When the user submits the form I need to make a query on the DB applying filters and presenting the result on a table.
I know how to do this programmatically by building dynamically the SQL-where condition (joining node and content_type_xyz tables) but I would be interested in learning how to do it in the "Drupal way". I think I would have to use Views and Panels but I don't know if they can be easily implemented in situations like this. I've tried to build some sample views but I think to be faster in creating code by hand.
If you want custom searches you need IMO to do 2 things:
Hook yourself into _search so you can use Drupal's display for the results. Inside this form, you can create your queries for the database or load other content as you wish, just be sure to use pager_query.
Extend the search form that already exists or built your own. I suggest buliding your own. use what is already existing from Drupals search form. This way, you have a clean way of how to do this.
There is actually no need to use any fancy modules (that doesn't mean you should rule them out, but a search is something so esential that it is quite well handled with the basics).
Using the above, you'll get a native search form with all it's power and can make use of global paging options.
If you do it using views you will only be limited to the filtering you can do using SQL. Views is an SQL builder, and does not contain any 'proper' search functions. That said, it sounds like Views will do what you want; if you create filters under views and then click 'Expose this filter', you will suddenly see fields that allow the user to enter something to filter by appear.

Drupal reserve checkbox module?

I have a drupal site I'm working on here: selkirk.treethink.net
I have CCK and Views modules installed, so on the frontend you see the Request Work page created using CCK. On the backend admins and students can view all the work post through that form with the Views module.
I need to add a checkbox that the person submitting the work can't see but students can see in the page that lists the work through "Views". This checkbox will need to only be able to be checked once as it will reserve the job for that student. But the same student that checked it needs to be able to uncheck it...And only that student (or an admin)
In other words: Just a little box that sits on the "Views" page that a student can check and then no one else can uncheck it afterwards except the student that checked it or an admin.
Is there a module that can do this?
Thanks, Wade
My first thought when reading your question was Flag module. There is already a thread in the issue queue about exactly your question: http://drupal.org/node/624746. What it comes down to, is that flag can do most of the job, but you would have to write some code yourself (or possibly use the Rules module) to register which user flagged the node.
Another option would be to use the Workflow module and create an 'assigned' state. I have not done much with workflow myself so I can't really tell you which option is better.
The Field Permissions module lets you specify create, view, and edit permissions for CCK fields. I don't think it will do everything you want, but it's a start.

Resources