comparison README.txt @ 0:76f9b43738f2

Popups 2.0-alpha5
author Franck Deroche <franck@defr.org>
date Fri, 31 Dec 2010 13:41:08 +0100
parents
children 4215c43e74eb
comparison
equal deleted inserted replaced
-1:000000000000 0:76f9b43738f2
1 This module gives Drupal the ability to easily change links into popup dialog boxes.
2
3 IMPORTANT INSTRUCTIONS
4 ------------------------------------------------------------------------------------
5 Ajax updating only works with themes that have selectable content areas.
6 If you are not using garland, you will need to figure out the selector for your theme,
7 and enter it into the "Content Selector" field on the admin/build/themes/settings page
8 for your theme. Open the page.tpl.php file for your theme, and search for "print $content".
9 The $content should be surrounded by a div with an id. Ex:
10 <div id="content-content">
11 <?php print $content; ?>
12 </div> <!-- /content-content -->
13 In this case, just enter '#content-content' into the Content Selector field.
14 Unfortunately, a lot of themes do not have well defined content areas. Just add the div yourself,
15 and then complain on the issue queue for the theme. It is important that there are no other
16 print statements inside the div.
17
18 LIMITATIONS
19 ------------------------------------------------------------------------------------
20 Is this still true? Does not work with tinymce. Unlikely to work with other WYSIWYG's.
21
22 HOW TO USE THE POPUPS API
23 ------------------------------------------------------------------------------------
24 If you just want to use the built in admin links, just enable the Popups: Admin Links
25 module and you are good to go.
26 If you want to add popups behavior to new links, or incorporate popups into your module,
27 there are a couple of ways to do it.
28
29 #1) Attach popup behavior to a link with popups_add_popups() call.
30 ----------------------------------------------------------------
31 <!-- In html or theme -->
32 <a href="popups/test/response" id="mylink">
33 <a href="popups/test/response" id="mylink2">
34
35 // In your module
36 popups_add_popups(array('#mylink', '#mylink2=>array('width'=>'200px')));
37 IMPORTANT: You can only put popups_add_popups in module, NOT in a .tpl file
38 or the template.php file.
39 This is the simplest method if you want to pass in per-link options.
40 The first key is a jQuery selector. It should select an 'a' element (unless you
41 are using the 'href' option). See http://docs.jquery.com/Selectors to learn more
42 about jQuery selectors.
43 The array is a set of Options. See below for the list of options.
44 No array means just use the defualts.
45
46 #2) Add the class="popup" to an existing link.
47 -------------------------------------------
48 And then either be sure popups_add_popups() is called sometime for the page,
49 or use the "Scan all pages for popup links" checkbox on the popups settings page.
50
51 Example on the theme level ("Scan all pages for popups links" must be checked):
52 <a href="popups/test/response" class="popups">
53
54 Example in code:
55 popups_add_popups();
56 $output .= l("Pop up entire local page.", 'popups/test/response', array('attributes'=>array('class' => 'popups')));
57
58 Here are the classes that you can use:
59 class="popups" requests an informational popup (or a form that doesn't want ajax processing).
60 class="popups-form" requests a popup with a form that modifies the content of the original page.
61 class="popups-form-reload" requests a popup with a form, and reloads the entire page when done.
62 class="popups-form-noupdate" requests a popup with a form, and leaves the original page as-is.
63
64 You can use the pseudo-attribute, "on-popups-options" to send options, if you don't mind having non-validating HTML.
65 Note: this attribute gets removed from user content by the HTML filter.
66 Example:
67 print l("Pop with options (width=200px).", 'popups/test/response',
68 array('attributes'=>array(array('class' => 'popups', 'on-popups-options' => '{width: "200px"}'))))
69 See popups_test.module for more examples.
70
71 #3) Add a custom module that implements hook_popups().
72 ---------------------------------------------------------------------
73 hook_popups() returns an array of popup rules, keyed by the id of a form,
74 or the url of a page (which can use the wildcard '*').
75 Each rule is an array of options, keyed by a jQuery selector.
76 Leaving off the options array is equal to a link with class="popup-form".
77 This is equivent to using a series of popup_add_popups() calls.
78
79 Rule Format Example:
80 'admin/content/taxonomy' => array( // Act only on the links on this page.
81 'div#tabs-wrapper a:eq(1)', // No options, so use defaults.
82 'table td:nth-child(2) a' => array(
83 'noUpdate' => true, // Popup will not modify original page.
84 ),
85 );
86
87 #4) Make your module alter the default popup rules with hook_popups_alter().
88 ----------------------------------------------------------------------------
89 hook_popups_alter() allows you to modify how the popup rules are
90 registered. This is useful to modify the default behavior of some
91 already existing popup rules.
92
93 See hook_popups_alter() in popups.api.php for an example.
94
95
96 LIST OF POPUP OPITIONS
97 ------------------------------------------------------------------------------------
98 DEPRECATED OPTIONS
99 // noUpdate: Does the popup NOT modify the original page (Default: FALSE).
100 // reloadWhenDone: Force the entire page to reload after the popup form is submitted (Default: FALSE)
101 // nonModel: Not working.
102 // forceReturn: url to force a stop to work flow (Advanced. Use in conjunction with noUpdate or targetSelectors).
103 // afterSubmit: function to call when updating after successful form submission.
104
105 doneTest: how do we know when the multiform flow is done?
106 null: flow is done when returned path = original path (default).
107 *path*:
108 *regexp*: done when returned path matches regexp.
109 updateMethod:
110 none: do not update the initial page
111 ajax: targeted replacement of parts of the initial page (default).
112 reload: full replacement of initial page with new page.
113 callback: use onUpdate(data, options, element).
114 updateSource (only used if updateMethod is not none):
115 initial: use the initial page (default).
116 final: use the path returned at the end of the multiform flow.
117 href: Override the href in the a element, or attach an href to a non-link element.
118 width: Override the width specified in the css.
119 targetSelectors: Hash of jQuery selectors that define the content to be swapped out.
120 titleSelectors: Array of jQuery selectors to place the new page title.
121 reloadOnError: Force the entire page to reload if the popup href is unaccessable (Default: FALSE)
122 noMessage: Don't show drupal_set_message messages.
123 onUpdate: function to call when updating after successful form submission.
124 skipDirtyCheck: If true, this popup will not check for edits on the originating page.
125 Often used with custom target selectors. Redundant is noUpdate is true. (Default: FALSE)
126 hijackDestination: Use the destiination param to force a form submit to return to the originating page.
127 Overwrites any destination already set one the link (Default: TRUE)
128
129