Dynamic Widgets - Version 1.4.0

Version Description

Be sure to deactivate Dynamic Widgets Plugin before installing the new version following steps 1 and 2 in the installation procedure. After the install you can reactivate the plugin.

Download this release

Release Info

Developer qurl
Plugin Icon wp plugin Dynamic Widgets
Version 1.4.0
Comparing to
See all releases

Code changes from version 1.3.7 to 1.4.0

Files changed (50) hide show
  1. dynamic-widgets.php +117 -28
  2. dynwid_admin.php +13 -3
  3. dynwid_admin_edit.php +33 -765
  4. dynwid_admin_overview.php +33 -13
  5. dynwid_admin_save.php +52 -66
  6. dynwid_class.php +48 -5
  7. dynwid_class_php4.php +49 -5
  8. dynwid_init_worker.php +34 -3
  9. dynwid_worker.php +81 -6
  10. img/checkmark.gif +0 -0
  11. jquery-ui-smoothness.css → jquery-ui-1.7.3.custom.css +9 -3
  12. jquery.ui.theme.smoothness.css → jquery-ui-1.8.7.custom.css +157 -2
  13. jquery.ui.accordion.css +0 -19
  14. jquery.ui.accordion.min.js +0 -12
  15. jquery.ui.core.css +0 -41
  16. jquery.ui.datepicker.css +0 -61
  17. jquery_datepicker.js +0 -12
  18. locale/dynamic-widgets-de_DE.mo +0 -0
  19. locale/dynamic-widgets-de_DE.po +653 -0
  20. locale/dynamic-widgets-es_ES.mo +0 -0
  21. locale/dynamic-widgets-es_ES.po +665 -0
  22. locale/dynamic-widgets-fr_FR.mo +0 -0
  23. locale/dynamic-widgets-fr_FR.po +437 -222
  24. locale/dynamic-widgets-nl.mo +0 -0
  25. locale/dynamic-widgets-nl.po +501 -357
  26. locale/dynamic-widgets.pot +425 -286
  27. mods/archive_module.php +31 -0
  28. mods/attachment_module.php +26 -0
  29. mods/author_module.php +44 -0
  30. mods/bp_module.php +108 -0
  31. mods/category_module.php +45 -0
  32. mods/custompost_module.php +165 -0
  33. mods/date_module.php +57 -0
  34. mods/error_module.php +26 -0
  35. mods/frontpage_module.php +34 -0
  36. mods/pages_module.php +130 -0
  37. mods/role_module.php +56 -0
  38. mods/search_module.php +27 -0
  39. mods/single_module.php +148 -0
  40. mods/useragent_module.php +58 -0
  41. mods/wpec_module.php +52 -0
  42. mods/wpml_module.php +55 -0
  43. plugin/bp.php +69 -0
  44. plugin/wpml.php +2 -2
  45. plugin/wpsc.php +24 -10
  46. readme.txt +47 -7
  47. ui.accordion.1.7.3.js +477 -0
  48. ui.accordion.1.8.7.js +599 -0
  49. ui.datepicker.1.7.3.js +1636 -0
  50. ui.datepicker.1.8.7.js +1757 -0
dynamic-widgets.php CHANGED
@@ -3,10 +3,10 @@
3
  * Plugin Name: Dynamic Widgets
4
  * Plugin URI: http://www.qurl.nl/dynamic-widgets/
5
  * Description: Dynamic Widgets gives you full control on which pages your widgets will appear. It lets you dynamicly place the widgets on WordPress pages.
6
- * Author: Jacco
7
- * Version: 1.3.7
8
  * Author URI: http://www.qurl.nl/
9
- * Tags: widget, widgets, dynamic, sidebar, custom, rules, admin, conditional tags
10
  *
11
  * This program is distributed in the hope that it will be useful,
12
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -15,26 +15,36 @@
15
  *
16
  * Released under the GPL v.2, http://www.gnu.org/copyleft/gpl.html
17
  *
18
- * @version $Id: dynamic-widgets.php 326392 2010-12-27 15:59:50Z qurl $
 
19
  */
20
 
21
  /*
22
- Thanks to Alexis Nomine for the contributions of the French (fr_FR) language files, several L10N fixes and change of the edit options UI.
 
 
23
  */
24
 
25
  /*
26
  WPML Plugin support via API
27
- Using constants ICL_PLUGIN_PATH > dynwid_admin_edit.php, dynwid_init_worker.php, dynwid_worker.php
28
  Using functions wpml_get_default_language() > dynwid_init_worker.php
29
- wpml_get_current_language() > dynwid_init_worker.php, dynwid_worker.php, wpml.php
30
- wpml_get_content_translation() > wpml.php
31
- wpml_get_active_languages() > dynwid_admin_edit.php
32
  */
33
 
34
  /*
35
  WPSC/WPEC Plugin support
36
- Using constants WPSC_TABLE_PRODUCT_CATEGORIES > dynwid_admin_edit.php, dynwid_init_worker.php, wpsc.php
37
- Using vars $wpsc_query > dynwid_init_worker.php, wpsc.php
 
 
 
 
 
 
 
38
  */
39
 
40
  // Constants
@@ -44,10 +54,11 @@
44
  define('DW_LIST_LIMIT', 20);
45
  define('DW_LIST_STYLE', 'style="overflow:auto;height:240px;"');
46
  define('DW_OLD_METHOD', get_option('dynwid_old_method'));
 
47
  define('DW_PLUGIN', dirname(__FILE__) . '/' . 'plugin/');
48
  define('DW_TIME_LIMIT', 86400); // 1 day
49
  define('DW_URL', 'http://www.qurl.nl');
50
- define('DW_VERSION', '1.3.7');
51
  define('DW_VERSION_URL_CHECK', DW_URL . '/wp-content/uploads/php/dw_version.php?v=' . DW_VERSION . '&n=');
52
  define('DW_WPML_API', '/inc/wpml-api.php'); // WPML Plugin support - API file relative to ICL_PLUGIN_PATH
53
  define('DW_WPML_ICON', 'img/wpml_icon.png'); // WPML Plugin support - WPML icon
@@ -112,7 +123,7 @@
112
  function dynwid_add_admin_menu() {
113
  $DW = &$GLOBALS['DW'];
114
 
115
- $screen = add_submenu_page('themes.php', 'Dynamic Widgets', 'Dynamic Widgets', 'switch_themes', 'dynwid-config', 'dynwid_admin_page');
116
 
117
  if ( $DW->enabled ) {
118
  add_action('admin_print_styles-' . $screen, 'dynwid_add_admin_styles');
@@ -146,11 +157,31 @@
146
  */
147
  function dynwid_add_admin_scripts() {
148
  $DW = &$GLOBALS['DW'];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  wp_enqueue_script('jquery');
150
- wp_enqueue_script('jquery-ui-core');
151
- wp_enqueue_script('jquery-ui-datepicker', $DW->plugin_url . 'jquery_datepicker.js', array('jquery-ui-core'));
152
- wp_enqueue_script('jquery-ui-accordion', $DW->plugin_url . 'jquery.ui.accordion.min.js', array('jquery-ui-core'));
153
- }
 
 
 
 
 
 
154
 
155
  /**
156
  * dynwid_add_admin_styles() Enqueue CSS to admin page
@@ -158,10 +189,12 @@
158
  */
159
  function dynwid_add_admin_styles() {
160
  $DW = &$GLOBALS['DW'];
161
- wp_enqueue_style('jquery-ui-core', $DW->plugin_url . 'jquery.ui.core.css');
162
- wp_enqueue_style('jquery-ui-smoothness', $DW->plugin_url . 'jquery.ui.theme.smoothness.css', array('jquery-ui-core'));
163
- wp_enqueue_style('jquery-ui-accordion', $DW->plugin_url . 'jquery.ui.accordion.css', array('jquery-ui-core', 'jquery-ui-smoothness'));
164
- wp_enqueue_style('jquery-ui-datepicker', $DW->plugin_url . 'jquery.ui.datepicker.css', array('jquery-ui-core', 'jquery-ui-smoothness'));
 
 
165
  }
166
 
167
  /**
@@ -202,8 +235,8 @@
202
  }
203
  }
204
 
205
- $default = ( $single_condition == '0' ) ? 'Off' : 'On';
206
- echo '<input type="checkbox" id="dw_' . $widget['widget_id'] . '" name="dw-single-post[]" value="' . $widget['widget_id'] . '"' . $checked . ' /> <label for="dw_' . $widget['widget_id'] . '">' . $DW->getName($widget['widget_id']) . ' (Default: ' . $default . ')</label><br />';
207
  }
208
  }
209
 
@@ -329,6 +362,61 @@
329
  require_once(dirname(__FILE__) . '/dynwid_admin.php');
330
  }
331
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
  /**
333
  * dynwid_check_version() Displays changelog with latest version compared to installed version
334
  * @param mixed $plugin_data
@@ -564,8 +652,8 @@
564
  call_user_func_array($wp_callback, $args);
565
 
566
  // Now adding the dynwid text & link
567
- echo '<p>Dynamic Widgets: ';
568
- echo '<a style="text-decoration:none;" title="Edit Dynamic Widgets Options" href="themes.php?page=dynwid-config&action=edit&id=' . $widget_id . '&returnurl=' . urlencode(trailingslashit(admin_url()) . 'widgets.php') . '">';
569
  echo ( $DW->hasOptions($widget_id) ) ? __('Dynamic', DW_L10N_DOMAIN) : __('Static', DW_L10N_DOMAIN);
570
  echo '</a>';
571
  if ( $DW->hasOptions($widget_id) ) {
@@ -573,7 +661,7 @@
573
  $opt = $DW->getOptions($widget_id, NULL);
574
  foreach ( $opt as $widget ) {
575
  $type = $widget['maintype'];
576
- if ( $type != 'individual' ) {
577
  $single = array('single-author', 'single-category', 'single-tag', 'single-post');
578
  if ( in_array($type, $single) ) {
579
  $type = 'single';
@@ -589,8 +677,8 @@
589
  $type = $s[$i];
590
  if (! empty($DW->dwoptions[$type]) ) {
591
  $string .= $DW->dwoptions[$type];
592
- }
593
- $string .= ( ($last - 1) == $i ) ? ' ' . __('and', DW_L10N_DOMAIN) . ' ' : ', ';
594
  }
595
  $type = $s[$last];
596
  $string .= $DW->dwoptions[$type];
@@ -634,6 +722,7 @@
634
 
635
  // Hooks
636
  add_action('admin_action_dynwid_dump', 'dynwid_admin_dump');
 
637
  add_action('admin_action_dynwid_uninstall', 'dynwid_uninstall');
638
  add_action('init', 'dynwid_init');
639
  register_activation_hook(__FILE__, 'dynwid_install');
3
  * Plugin Name: Dynamic Widgets
4
  * Plugin URI: http://www.qurl.nl/dynamic-widgets/
5
  * Description: Dynamic Widgets gives you full control on which pages your widgets will appear. It lets you dynamicly place the widgets on WordPress pages.
6
+ * Author: Qurl
7
+ * Version: 1.4.0
8
  * Author URI: http://www.qurl.nl/
9
+ * Tags: widget, widgets, dynamic, sidebar, custom, rules, admin, conditional tags, wpml, wpec, buddypress
10
  *
11
  * This program is distributed in the hope that it will be useful,
12
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
  *
16
  * Released under the GPL v.2, http://www.gnu.org/copyleft/gpl.html
17
  *
18
+ * @version $Id: dynamic-widgets.php 349959 2011-02-23 19:15:28Z qurl $
19
+ * @copyright 2011 Jacco Drabbe
20
  */
21
 
22
  /*
23
+ Thanks to Alexis Nomine for the contribution of the French (fr_FR) language files, several L10N fixes and change of the edit options UI.
24
+ Thanks to Daniel Bihler for the contribution of the German (de_DE) language files.
25
+ Thanks to Eduardo Larequi for the contribution of the Spanish (es_ES) language files and several L10N fixes.
26
  */
27
 
28
  /*
29
  WPML Plugin support via API
30
+ Using constants ICL_PLUGIN_PATH > dynwid_admin_edit.php, mods/wpml_module.php, dynwid_init_worker.php, dynwid_worker.php
31
  Using functions wpml_get_default_language() > dynwid_init_worker.php
32
+ wpml_get_current_language() > dynwid_init_worker.php, dynwid_worker.php, plugin/wpml.php
33
+ wpml_get_content_translation() > plugin/wpml.php
34
+ wpml_get_active_languages() > mods/wpml_module.php
35
  */
36
 
37
  /*
38
  WPSC/WPEC Plugin support
39
+ Using constants WPSC_TABLE_PRODUCT_CATEGORIES > dynwid_admin_overview.php, plugin/wpsc.php
40
+ WPSC_VERSION > mods/wpec_module.php, dynwid_init_worker.php, plugin/wpsc.php
41
+ Using vars $wpsc_query > dynwid_init_worker.php, plugin/wpsc.php
42
+ */
43
+
44
+ /*
45
+ BP Plugin support
46
+ Using constants BP_VERSION > mods/bp_module, dynwid_init_worker.php
47
+ User vars $bp > dynwid_init_worker.php, plugin/bp.php
48
  */
49
 
50
  // Constants
54
  define('DW_LIST_LIMIT', 20);
55
  define('DW_LIST_STYLE', 'style="overflow:auto;height:240px;"');
56
  define('DW_OLD_METHOD', get_option('dynwid_old_method'));
57
+ define('DW_MODULES', dirname(__FILE__) . '/' . 'mods/');
58
  define('DW_PLUGIN', dirname(__FILE__) . '/' . 'plugin/');
59
  define('DW_TIME_LIMIT', 86400); // 1 day
60
  define('DW_URL', 'http://www.qurl.nl');
61
+ define('DW_VERSION', '1.4.0');
62
  define('DW_VERSION_URL_CHECK', DW_URL . '/wp-content/uploads/php/dw_version.php?v=' . DW_VERSION . '&n=');
63
  define('DW_WPML_API', '/inc/wpml-api.php'); // WPML Plugin support - API file relative to ICL_PLUGIN_PATH
64
  define('DW_WPML_ICON', 'img/wpml_icon.png'); // WPML Plugin support - WPML icon
123
  function dynwid_add_admin_menu() {
124
  $DW = &$GLOBALS['DW'];
125
 
126
+ $screen = add_submenu_page('themes.php', __('Dynamic Widgets', DW_L10N_DOMAIN), __('Dynamic Widgets', DW_L10N_DOMAIN), 'switch_themes', 'dynwid-config', 'dynwid_admin_page');
127
 
128
  if ( $DW->enabled ) {
129
  add_action('admin_print_styles-' . $screen, 'dynwid_add_admin_styles');
157
  */
158
  function dynwid_add_admin_scripts() {
159
  $DW = &$GLOBALS['DW'];
160
+
161
+ /*
162
+ BuddyPress doing an overall JS enqueue (BAD!)
163
+ Workaround fixing a js error with ui.accordion freezing the screen
164
+ - dtheme-ajax-js is used in BP default theme
165
+ - bp-js is used in BP Compatibility Plugin
166
+ */
167
+ if ( wp_script_is('dtheme-ajax-js') ) {
168
+ wp_deregister_script('dtheme-ajax-js');
169
+ }
170
+ if ( wp_script_is('bp-js') ) {
171
+ wp_deregister_script('bp-js');
172
+ }
173
+
174
  wp_enqueue_script('jquery');
175
+ wp_enqueue_script('jquery-ui-core');
176
+ if ( version_compare(substr($GLOBALS['wp_version'], 0, 3), '3.1', '>=') ) {
177
+ wp_enqueue_script('jquery-ui-widget');
178
+ wp_enqueue_script('jquery-ui-accordion', $DW->plugin_url . 'ui.accordion.1.8.7.js', array('jquery-ui-widget'));
179
+ wp_enqueue_script('jquery-ui-datepicker', $DW->plugin_url . 'ui.datepicker.1.8.7.js', array('jquery-ui-widget'));
180
+ } else {
181
+ wp_enqueue_script('jquery-ui-accordion', $DW->plugin_url . 'ui.accordion.1.7.3.js', array('jquery-ui-core'));
182
+ wp_enqueue_script('jquery-ui-datepicker', $DW->plugin_url . 'ui.datepicker.1.7.3.js', array('jquery-ui-core'));
183
+ }
184
+ }
185
 
186
  /**
187
  * dynwid_add_admin_styles() Enqueue CSS to admin page
189
  */
190
  function dynwid_add_admin_styles() {
191
  $DW = &$GLOBALS['DW'];
192
+
193
+ if ( version_compare(substr($GLOBALS['wp_version'], 0, 3), '3.1', '>=') ) {
194
+ wp_enqueue_style('jquery-ui-custom', $DW->plugin_url . 'jquery-ui-1.8.7.custom.css');
195
+ } else {
196
+ wp_enqueue_style('jquery-ui-custom', $DW->plugin_url . 'jquery-ui-1.7.3.custom.css');
197
+ }
198
  }
199
 
200
  /**
235
  }
236
  }
237
 
238
+ $default = ( $single_condition == '0' ) ? __('Off', DW_L10N_DOMAIN) : __('On', DW_L10N_DOMAIN);
239
+ echo '<input type="checkbox" id="dw_' . $widget['widget_id'] . '" name="dw-single-post[]" value="' . $widget['widget_id'] . '"' . $checked . ' /> <label for="dw_' . $widget['widget_id'] . '">' . $DW->getName($widget['widget_id']) . __(' (Default: ', DW_L10N_DOMAIN) . $default . ')</label><br />';
240
  }
241
  }
242
 
362
  require_once(dirname(__FILE__) . '/dynwid_admin.php');
363
  }
364
 
365
+ /**
366
+ * dynwid_admin_wpec_dump() Dump WPEC rules function for upgrade to 3.8
367
+ * @since 1.4.0
368
+ */
369
+ function dynwid_admin_wpec_dump() {
370
+ $DW = &$GLOBALS['DW'];
371
+ $wpdb = &$GLOBALS['wpdb'];
372
+ $dump = array();
373
+
374
+ $opt = $DW->getOptions('%', 'wpsc');
375
+
376
+ $categories = array();
377
+ $table = WPSC_TABLE_PRODUCT_CATEGORIES;
378
+ $fields = array('id', 'name');
379
+ $query = "SELECT " . implode(', ', $fields) . " FROM " . $table . " WHERE active = '1' ORDER BY name";
380
+ $results = $wpdb->get_results($query);
381
+ foreach ( $results as $myrow ) {
382
+ $categories[$myrow->id] = $myrow->name;
383
+ }
384
+
385
+ foreach ( $opt as $widget ) {
386
+ $id = $widget['widget_id'];
387
+ if (! array_key_exists($id, $dump) ) {
388
+ $dump[$id] = array( 'name' => strip_tags($DW->getName($widget['widget_id'])) );
389
+ }
390
+
391
+ if ( $widget['name'] == 'default' ) {
392
+ $dump[$id]['default'] = ( $widget['value'] == '0' ? 'No' : 'Yes' );
393
+ } else {
394
+ $v = $widget['name'];
395
+ $dump[$id][ ] = $categories[$v];
396
+ }
397
+ }
398
+
399
+ header('Content-Description: File Transfer');
400
+ header('Content-Disposition: attachment; filename=dynwid_wpec_dump_' . date('Ymd') . '.txt' );
401
+ header('Content-Type: text/plain');
402
+
403
+ foreach ( $dump as $widget ) {
404
+ echo 'Widget: ' . $widget['name'] . "\r\n";
405
+ echo 'Default set to ' . $widget['default'] . "\r\n";
406
+ if ( count($widget) > 2 ) {
407
+ echo 'Categories ticked: ' . "\r\n";
408
+ foreach ( $widget as $k => $v ) {
409
+ if ( is_int($k) ) {
410
+ echo "\t" . $v . "\r\n";
411
+ }
412
+ }
413
+ }
414
+ echo "\r\n";
415
+ }
416
+
417
+ die();
418
+ }
419
+
420
  /**
421
  * dynwid_check_version() Displays changelog with latest version compared to installed version
422
  * @param mixed $plugin_data
652
  call_user_func_array($wp_callback, $args);
653
 
654
  // Now adding the dynwid text & link
655
+ echo '<p>' . __('Dynamic Widgets', DW_L10N_DOMAIN) . ': ';
656
+ echo '<a style="text-decoration:none;" title="' . __('Edit Dynamic Widgets Options', DW_L10N_DOMAIN) . '" href="themes.php?page=dynwid-config&action=edit&id=' . $widget_id . '&returnurl=' . urlencode(trailingslashit(admin_url()) . 'widgets.php') . '">';
657
  echo ( $DW->hasOptions($widget_id) ) ? __('Dynamic', DW_L10N_DOMAIN) : __('Static', DW_L10N_DOMAIN);
658
  echo '</a>';
659
  if ( $DW->hasOptions($widget_id) ) {
661
  $opt = $DW->getOptions($widget_id, NULL);
662
  foreach ( $opt as $widget ) {
663
  $type = $widget['maintype'];
664
+ if ( $type != 'individual' && substr($type, -6) != 'childs' ) {
665
  $single = array('single-author', 'single-category', 'single-tag', 'single-post');
666
  if ( in_array($type, $single) ) {
667
  $type = 'single';
677
  $type = $s[$i];
678
  if (! empty($DW->dwoptions[$type]) ) {
679
  $string .= $DW->dwoptions[$type];
680
+ }
681
+ $string .= ( ($last - 1) == $i ) ? ' ' . __('and', DW_L10N_DOMAIN) . ' ' : ', ';
682
  }
683
  $type = $s[$last];
684
  $string .= $DW->dwoptions[$type];
722
 
723
  // Hooks
724
  add_action('admin_action_dynwid_dump', 'dynwid_admin_dump');
725
+ add_action('admin_action_wpec_dump', 'dynwid_admin_wpec_dump');
726
  add_action('admin_action_dynwid_uninstall', 'dynwid_uninstall');
727
  add_action('init', 'dynwid_init');
728
  register_activation_hook(__FILE__, 'dynwid_install');
dynwid_admin.php CHANGED
@@ -2,13 +2,23 @@
2
  /**
3
  * dynwid_admin.php - Startpage for admin
4
  *
5
- * @version $Id: dynwid_admin.php 311081 2010-11-13 13:08:15Z qurl $
 
6
  */
7
  ?>
8
 
9
- <div class="wrap">
10
- <h2><?php _e('Dynamic Widgets', DW_L10N_DOMAIN); ?></h2>
 
 
 
11
 
 
 
 
 
 
 
12
  <?php
13
  if ( $DW->enabled ) {
14
  if ( dynwid_sql_mode() ) {
2
  /**
3
  * dynwid_admin.php - Startpage for admin
4
  *
5
+ * @version $Id: dynwid_admin.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
  */
8
  ?>
9
 
10
+ <form id="paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
11
+ <input type="hidden" name="cmd" value="_s-xclick">
12
+ <input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHLwYJKoZIhvcNAQcEoIIHIDCCBxwCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYA8oKawH0wVsnruuavwjiZi+1u1moRDmdIg8kzCLarZA74ZYRhv+TNCynCQCNWHZGPkTTl2SHQb8RhJa1L+EyRiLLQyBJt5S6IuJL0RV/jh+TXnH79qB/C530XRS6gQyMO9Leef2Z8JZw5bEZbI57rTQt9iZnCN0ukC0pk+XPWZJDELMAkGBSsOAwIaBQAwgawGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIpdpTIm0AzteAgYj+SxsNo2z15IpjAKJEJMDFsS0MQMc2fWkmuC6YqRL3EvhdNg38881HiCdmbyh12jKbR5Brblf3x4kcsQxwtUTa1X2wTcnAxnLSqWz7rHVd43M/597X1YnznUFb8rxnKB3Fdk4Wft97H6PDRgQ9MTMDiDh7XdxKXOaSdp2ezT0wVBhriYh7nqyUoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTAwMTE1MTk1NDA2WjAjBgkqhkiG9w0BCQQxFgQU1NqOsMx96zcBKgH6iRmbgjiJS1MwDQYJKoZIhvcNAQEBBQAEgYCEqGOx+IvEEjWyVOhgDTSTFPqTfR9GxGXHXNz1lBkPZpRJCp3F2GkZpadce8r5IOvQX67kgg7OGyLUaRcGXghaZOuGr5Jd3MhTaXqwyiQRIHAcsJSrgaNtfCE/LHIQ4jEDw15XlEI5/1OgLiZeuIZaiL53WjoH4AMxgEXt8kHk3w==-----END PKCS7-----
13
+ ">
14
+ </form>
15
 
16
+ <div class="wrap">
17
+ <div class="icon32" id="icon-themes"><br></div>
18
+ <h2>
19
+ <?php _e('Dynamic Widgets', DW_L10N_DOMAIN); ?>
20
+ <input type="image" style="vertical-align: middle;" title="Donate for this plugin via PayPal" alt="Donate" name="submit" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" onclick="jQuery('#paypal').submit()">
21
+ </h2>
22
  <?php
23
  if ( $DW->enabled ) {
24
  if ( dynwid_sql_mode() ) {
dynwid_admin_edit.php CHANGED
@@ -2,341 +2,15 @@
2
  /**
3
  * dynwid_admin_edit.php - Options settings
4
  *
5
- * @version $Id: dynwid_admin_edit.php 325507 2010-12-22 21:01:50Z qurl $
 
6
  */
7
 
8
  // WPML Plugin support
9
  if ( defined('ICL_PLUGIN_PATH') && file_exists(ICL_PLUGIN_PATH . DW_WPML_API) ) {
10
  $DW->wpml = TRUE;
11
- $wpml_icon = '<img src="' . $DW->plugin_url . DW_WPML_ICON . '" alt="WMPL" title="Dynamic Widgets syncs with other languages of these pages via WPML" />';
12
- $wpml_api = ICL_PLUGIN_PATH . DW_WPML_API;
13
- require_once($wpml_api);
14
  }
15
-
16
- // WPSC/WPEC Plugin support (http://getshopped.org)
17
- if ( defined('WPSC_TABLE_PRODUCT_CATEGORIES') ) {
18
- $DW->wpsc = TRUE;
19
- require_once(DW_PLUGIN . 'wpsc.php');
20
- }
21
-
22
- // Roles
23
- $wp_roles = $GLOBALS['wp_roles'];
24
- $roles = array_merge($wp_roles->role_names, array('anonymous' => __('Anonymous') . '|User role'));
25
- $jsroles = array();
26
- foreach ( $roles as $rid => $role ) {
27
- $roles[esc_attr($rid)] = translate_user_role($role);
28
- $jsroles[ ] = '\'role_act_' . esc_attr($rid) . '\''; // Prep for JS Array
29
- }
30
- if ( count($roles) > DW_LIST_LIMIT ) {
31
- $role_condition_select_style = DW_LIST_STYLE;
32
- }
33
-
34
- $role_yes_selected = 'checked="checked"';
35
- $opt_role = $DW->getOptions($_GET['id'], 'role');
36
- if ( count($opt_role) > 0 ) {
37
- $role_act = array();
38
- foreach ( $opt_role as $role_condition ) {
39
- if ( $role_condition['name'] == 'default' || empty($role_condition['name']) ) {
40
- $role_default = $role_condition['value'];
41
- } else {
42
- $role_act[ ] = $role_condition['name'];
43
- }
44
- }
45
-
46
- if ( $role_default == '0' ) {
47
- $role_no_selected = $role_yes_selected;
48
- unset($role_yes_selected);
49
- }
50
- }
51
-
52
- // Date
53
- $date_yes_selected = 'checked="checked"';
54
- $opt_date = $DW->getOptions($_GET['id'], 'date');
55
- if ( count($opt_date) > 0 ) {
56
- foreach ( $opt_date as $value ) {
57
- switch ( $value['name'] ) {
58
- case 'date_start':
59
- $date_start = $value['value'];
60
- break;
61
-
62
- case 'date_end':
63
- $date_end = $value['value'];
64
- break;
65
- }
66
- }
67
-
68
- $date_no_selected = $date_yes_selected;
69
- unset($date_yes_selected);
70
- }
71
-
72
- // Front Page
73
- if ( get_option('show_on_front') != 'page' ) {
74
- $frontpage_yes_selected = 'checked="checked"';
75
- $opt_frontpage = $DW->getOptions($_GET['id'], 'front-page');
76
- if ( count($opt_frontpage) > 0 ) {
77
- $frontpage_condition = $opt_frontpage[0]['value'];
78
- if ( $frontpage_condition == '0' ) {
79
- $frontpage_no_selected = $frontpage_yes_selected;
80
- unset($frontpage_yes_selected);
81
- }
82
- }
83
- }
84
-
85
- // Single Post
86
- $single_yes_selected = 'checked="checked"';
87
- $single_condition = '1';
88
- $opt_single = $DW->getOptions($_GET['id'], 'single');
89
- if ( count($opt_single) > 0 ) {
90
- foreach ( $opt_single as $widget ) {
91
- if ( $widget['maintype'] == 'single' ) {
92
- $single_condition = $widget['value'];
93
- }
94
- }
95
- if ( $single_condition == '0' ) {
96
- $single_no_selected = $single_yes_selected;
97
- unset($single_yes_selected);
98
- }
99
- }
100
-
101
- // -- Author
102
- $js_count = 0;
103
- $opt_single_author = $DW->getOptions($_GET['id'], 'single-author');
104
- $js_author_array = array();
105
- if ( count($opt_single_author) > 0 ) {
106
- $js_count = $js_count + count($opt_single_author) - 1;
107
- $single_author_act = array();
108
- foreach ( $opt_single_author as $single_author_condition ) {
109
- $single_author_act[ ] = $single_author_condition['name'];
110
- }
111
- }
112
-
113
- // -- Category
114
- $opt_single_category = $DW->getOptions($_GET['id'], 'single-category');
115
- $js_category_array = array();
116
- if ( count($opt_single_category) > 0 ) {
117
- $js_count = $js_count + count($opt_single_category) - 1;
118
- $single_category_act = array();
119
- foreach ( $opt_single_category as $single_category_condition ) {
120
- $single_category_act[ ] = $single_category_condition['name'];
121
- }
122
- }
123
-
124
- // -- Individual / Posts / Tags
125
- $individual = FALSE;
126
- $opt_individual = $DW->getOptions($_GET['id'], 'individual');
127
- $single_post_act = array();
128
- $single_tag_act = array();
129
-
130
- if ( count($opt_individual) > 0 ) {
131
- $individual_condition = $opt_individual[0]['value'];
132
- if ( $individual_condition == 1 ) {
133
- $individual = TRUE;
134
-
135
- $opt_single_post = $DW->getOptions($_GET['id'], 'single-post');
136
- if ( count($opt_single_post) > 0 ) {
137
- foreach ( $opt_single_post as $single_post_condition ) {
138
- if ( $single_post_condition['name'] != 'default' ) {
139
- $single_post_act[ ] = $single_post_condition['name'];
140
- }
141
- }
142
- }
143
-
144
- $opt_single_tag = $DW->getOptions($_GET['id'], 'single-tag');
145
- if ( count($opt_single_tag) > 0 ) {
146
- foreach ( $opt_single_tag as $single_tag_condition ) {
147
- if ( $single_tag_condition['name'] != 'default' ) {
148
- $single_tag_act[ ] = $single_tag_condition['name'];
149
- }
150
- }
151
- }
152
-
153
- $count_individual = '(Posts: ' . count($single_post_act) . ', Tags: ' . count($single_tag_act) . ')';
154
- }
155
- }
156
-
157
- // Pages
158
- $page_yes_selected = 'checked="checked"';
159
- $opt_page = $DW->getOptions($_GET['id'], 'page');
160
- if ( count($opt_page) > 0 ) {
161
- $page_act = array();
162
- foreach ( $opt_page as $page_condition ) {
163
- if ( $page_condition['maintype'] == 'page' ) {
164
- if ( $page_condition['name'] == 'default' || empty($page_condition['name']) ) {
165
- $page_default = $page_condition['value'];
166
- } else {
167
- $page_act[ ] = $page_condition['name'];
168
- }
169
- }
170
- }
171
-
172
- if ( $page_default == '0' ) {
173
- $page_no_selected = $page_yes_selected;
174
- unset($page_yes_selected);
175
- }
176
-
177
- // -- Childs
178
- $opt_page_childs = $DW->getOptions($_GET['id'], 'page-childs');
179
- if ( count($opt_page_childs) > 0 ) {
180
- $page_childs_act = array();
181
- foreach ( $opt_page_childs as $child_condition ) {
182
- if ( $child_condition['name'] != 'default' ) {
183
- $page_childs_act[ ] = $child_condition['name'];
184
- }
185
- }
186
- }
187
- }
188
-
189
- $pages = get_pages();
190
- if ( count($pages) > DW_LIST_LIMIT ) {
191
- $page_condition_select_style = DW_LIST_STYLE;
192
- }
193
-
194
- $static_page = array();
195
- if ( get_option('show_on_front') == 'page' ) {
196
- if ( get_option('page_on_front') == get_option('page_for_posts') ) {
197
- $id = get_option('page_on_front');
198
- $static_page[$id] = 'Front page, Posts page';
199
- } else {
200
- $id = get_option('page_on_front');
201
- $static_page[$id] = 'Front page';
202
- $id = get_option('page_for_posts');
203
- $static_page[$id] = 'Posts page';
204
- }
205
- }
206
-
207
- // Author
208
- $author_yes_selected = 'checked="checked"';
209
- $opt_author = $DW->getOptions($_GET['id'], 'author');
210
- if ( count($opt_author) > 0 ) {
211
- $author_act = array();
212
- foreach ( $opt_author as $author_condition ) {
213
- if ( $author_condition['name'] == 'default' || empty($author_condition['name']) ) {
214
- $author_default = $author_condition['value'];
215
- } else {
216
- $author_act[ ] = $author_condition['name'];
217
- }
218
- }
219
-
220
- if ( $author_default == '0' ) {
221
- $author_no_selected = $author_yes_selected;
222
- unset($author_yes_selected);
223
- }
224
- }
225
-
226
- $authors = get_users_of_blog();
227
- if ( count($authors) > DW_LIST_LIMIT ) {
228
- $author_condition_select_style = DW_LIST_STYLE;
229
- }
230
-
231
- // Categories
232
- $category_yes_selected = 'checked="checked"';
233
- $opt_category = $DW->getOptions($_GET['id'], 'category');
234
- if ( count($opt_category) > 0 ) {
235
- $category_act = array();
236
- foreach ( $opt_category as $category_condition ) {
237
- if ( $category_condition['name'] == 'default' || empty($category_condition['name']) ) {
238
- $category_default = $category_condition['value'];
239
- } else {
240
- $category_act[ ] = $category_condition['name'];
241
- }
242
- }
243
-
244
- if ( $category_default == '0' ) {
245
- $category_no_selected = $category_yes_selected;
246
- unset($category_yes_selected);
247
- }
248
- }
249
-
250
- $category = get_categories( array('hide_empty' => FALSE) );
251
- if ( count($category) > DW_LIST_LIMIT ) {
252
- $category_condition_select_style = DW_LIST_STYLE;
253
- }
254
-
255
- // Archives
256
- $archive_yes_selected = 'checked="checked"';
257
- $opt_archive = $DW->getOptions($_GET['id'], 'archive');
258
- if ( count($opt_archive) > 0 ) {
259
- $archive_condition = $opt_archive[0]['value'];
260
- if ( $archive_condition == '0' ) {
261
- $archive_no_selected = $archive_yes_selected;
262
- unset($archive_yes_selected);
263
- }
264
- }
265
-
266
- // Error 404
267
- $e404_yes_selected = 'checked="checked"';
268
- $opt_e404 = $DW->getOptions($_GET['id'], 'e404');
269
- if ( count($opt_e404) > 0 ) {
270
- $e404_condition = $opt_e404[0]['value'];
271
- if ( $e404_condition == '0' ) {
272
- $e404_no_selected = $e404_yes_selected;
273
- unset($e404_yes_selected);
274
- }
275
- }
276
-
277
- // Search
278
- $search_yes_selected = 'checked="checked"';
279
- $opt_search = $DW->getOptions($_GET['id'], 'search');
280
- if ( count($opt_search) > 0 ) {
281
- $search_condition = $opt_search[0]['value'];
282
- if ( $search_condition == '0' ) {
283
- $search_no_selected = $search_yes_selected;
284
- unset($search_yes_selected);
285
- }
286
- }
287
-
288
- // WPML
289
- if ( $DW->wpml ) {
290
- $wpml_yes_selected = 'checked="checked"';
291
- $opt_wpml = $DW->getOptions($_GET['id'], 'wpml');
292
- if ( count($opt_wpml) > 0 ) {
293
- $wpml_act = array();
294
- foreach ( $opt_wpml as $wpml_condition ) {
295
- if ( $wpml_condition['name'] == 'default' || empty($wpml_condition['name']) ) {
296
- $wpml_default = $wpml_condition['value'];
297
- } else {
298
- $wpml_act[ ] = $wpml_condition['name'];
299
- }
300
- }
301
-
302
- if ( $wpml_default == '0' ) {
303
- $wpml_no_selected = $wpml_yes_selected;
304
- unset($wpml_yes_selected);
305
- }
306
- }
307
-
308
- $wpml_langs = wpml_get_active_languages();
309
- if ( count($wpml_langs) > DW_LIST_LIMIT ) {
310
- $wpml_condition_select_style = DW_LIST_STYLE;
311
- }
312
- }
313
-
314
- // WPSC/WPEC
315
- if ( $DW->wpsc ) {
316
- // Categories
317
- $wpsc_yes_selected = 'checked="checked"';
318
- $opt_wpsc = $DW->getOptions($_GET['id'], 'wpsc');
319
- if ( count($opt_wpsc) > 0 ) {
320
- $wpsc_act = array();
321
- foreach ( $opt_wpsc as $wpsc_condition ) {
322
- if ( $wpsc_condition['name'] == 'default' || empty($wpsc_condition['name']) ) {
323
- $wpsc_default = $wpsc_condition['value'];
324
- } else {
325
- $wpsc_act[ ] = $wpsc_condition['name'];
326
- }
327
- }
328
-
329
- if ( $wpsc_default == '0' ) {
330
- $wpsc_no_selected = $wpsc_yes_selected;
331
- unset($wpsc_yes_selected);
332
- }
333
- }
334
-
335
- $wpsc = dw_wpsc_get_categories();
336
- if ( count($wpsc) > DW_LIST_LIMIT ) {
337
- $wpsc_condition_select_style = DW_LIST_STYLE;
338
- }
339
- }
340
  ?>
341
 
342
  <style type="text/css">
@@ -398,7 +72,7 @@ h4 {
398
 
399
  <?php } ?>
400
 
401
- <h3><?php _e('Edit options for', DW_L10N_DOMAIN); ?> <em><?php echo $DW->getName($_GET['id']); ?></em> <?php _e('Widget'); ?></h3>
402
  <?php echo ( DW_DEBUG ) ? '<pre>ID = ' . $_GET['id'] . '</pre><br />' : ''; ?>
403
 
404
  <form action="<?php echo trailingslashit(admin_url()) . 'themes.php?page=dynwid-config&action=edit&id=' . $_GET['id']; ?>" method="post">
@@ -407,443 +81,33 @@ h4 {
407
  <input type="hidden" name="widget_id" value="<?php echo $_GET['id']; ?>" />
408
  <input type="hidden" name="returnurl" value="<?php echo ( isset($_GET['returnurl']) ? urldecode($_GET['returnurl']) : '' ); ?>" />
409
 
410
- <!-- Role //-->
411
  <div id="dynwid">
412
- <h4><b><?php _e('Role'); ?></b><?php echo ( count($opt_role) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
413
- <div class="dynwid_conf">
414
- <?php _e('Show widget to everybody?', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" onclick="divToggle('role');" /><br />
415
- <?php $DW->dumpOpt($opt_role); ?>
416
- <div>
417
- <div id="role" class="infotext">
418
- <?php _e('Setting options by role is very powerfull. It can override all other options!<br />
419
- Users who are not logged in, get the <em>Anonymous</em> role.', DW_L10N_DOMAIN); ?>
420
- </div>
421
- </div>
422
- <input type="radio" name="role" value="yes" id="role-yes" <?php echo ( isset($role_yes_selected) ? $role_yes_selected : '' ); ?> onclick="swChb(cRole, true);" /> <label for="role-yes"><?php _e('Yes'); ?></label>
423
- <input type="radio" name="role" value="no" id="role-no" <?php echo ( isset($role_no_selected) ? $role_no_selected : '' ); ?> onclick="swChb(cRole, false)" /> <label for="role-no"><?php _e('No'); ?>, <?php _e('only to', DW_L10N_DOMAIN); ?>:</label><br />
424
- <div id="role-select" class="condition-select" <?php echo ( isset($role_condition_select_style) ? $role_condition_select_style : '' ); ?>>
425
- <?php foreach ( $roles as $rid => $role ) { ?>
426
- <input type="checkbox" id="role_act_<?php echo $rid; ?>" name="role_act[]" value="<?php echo $rid; ?>" <?php echo ( isset($role_act) && count($role_act) > 0 && in_array($rid, $role_act) ) ? 'checked="checked"' : ''; ?> /> <label for="role_act_<?php echo $rid; ?>"><?php echo $role; ?></label><br />
427
- <?php } ?>
428
- </div>
429
- </div><!-- end dynwid_conf -->
430
-
431
- <!-- Date //-->
432
- <h4><b><?php _e('Date'); ?></b><?php echo ( count($opt_date) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
433
- <div class="dynwid_conf">
434
- <?php _e('Show widget always?', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" onclick="divToggle('date');" /><br />
435
- <?php $DW->dumpOpt($opt_date); ?>
436
- <div>
437
- <div id="date" class="infotext">
438
- <?php _e('Next to the above role option, the date option is also very powerfull. You\'ve been warned!', DW_L10N_DOMAIN); ?><br />
439
- <?php _e('Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/calendar.gif" alt="Calendar" /><br />
440
- <?php _e('Date ranges can be made by entering a From AND a To date<br />
441
- When you want the widget to be displayed from a specific date, only fill in the From date<br />
442
- When you want the widget to stop displaying on a specific date, only fill in the To date.
443
- ', DW_L10N_DOMAIN); ?>
444
- </div>
445
- </div>
446
- <input type="radio" name="date" value="yes" id="date-yes" <?php echo ( isset($date_yes_selected) ? $date_yes_selected : '' ); ?> onclick="swTxt(cDate, true);" /> <label for="date-yes"><?php _e('Yes'); ?></label>
447
- <input type="radio" name="date" value="no" id="date-no" <?php echo ( isset($date_no_selected) ? $date_no_selected : '' ); ?> onclick="swTxt(cDate, false)" /> <label for="date-no"><?php _e('No'); ?>, <?php _e('only', DW_L10N_DOMAIN); ?>:</label><br />
448
- <div id="date-select" class="condition-select">
449
- <table border="0" cellspacing="0" cellpadding="0">
450
- <tr>
451
- <td style="width:45px;"><?php _e('From', DW_L10N_DOMAIN); ?></td>
452
- <td><input id="date_start" type="text" name="date_start" value="<?php echo ( isset($date_start) ? $date_start : '' ); ?>" size="10" maxlength="10" /> <img src="<?php echo $DW->plugin_url; ?>img/calendar.gif" alt="Calendar" onclick="showCalendar('date_start')" /></td>
453
- </tr>
454
- <tr>
455
- <td style="width:45px;"><?php _e('To', DW_L10N_DOMAIN); ?></td>
456
- <td><input id="date_end" type="text" name="date_end" value="<?php echo ( isset($date_end) ? $date_end : '' ); ?>" size="10" maxlength="10" /> <img src="<?php echo $DW->plugin_url; ?>img/calendar.gif" alt="Calendar" onclick="showCalendar('date_end')" /></td>
457
- </tr>
458
- </table>
459
- </div>
460
- </div><!-- end dynwid_conf -->
461
-
462
- <!-- Language (WPML) //-->
463
- <?php if ( $DW->wpml ) { /* WPML */ ?>
464
- <h4><b><?php _e('Language (WPML)', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_wpml) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
465
- <div class="dynwid_conf">
466
- <?php _e('Show widget default on all languages?', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" onclick="divToggle('wpml');" /><br /><br />
467
- <?php $DW->dumpOpt($opt_wpml); ?>
468
- <div>
469
- <div id="wpml" class="infotext">
470
- <?php _e('Using this option can override all other options.'); ?><br />
471
- </div>
472
- </div>
473
- <input type="radio" name="wpml" value="yes" id="wpml-yes" <?php echo ( isset($wpml_yes_selected) ? $wpml_yes_selected : '' ); ?> /> <label for="wpml-yes"><?php _e('Yes'); ?></label>
474
- <input type="radio" name="wpml" value="no" id="wpml-no" <?php echo ( isset($wpml_no_selected) ? $wpml_no_selected : '' ); ?> /> <label for="wpml-no"><?php _e('No'); ?></label><br />
475
- <?php _e('Except the languages', DW_L10N_DOMAIN); ?>:<br />
476
- <div id="wpml-select" class="condition-select" <?php echo ( isset($wpml_condition_select_style) ? $wpml_condition_select_style : '' ); ?>>
477
- <?php foreach ( $wpml_langs as $code => $lang ) { ?>
478
- <input type="checkbox" id="wpml_act_<?php echo $lang['code']; ?>" name="wpml_act[]" value="<?php echo $lang['code']; ?>" <?php echo ( count($wpml_act) > 0 && in_array($lang['code'], $wpml_act) ) ? 'checked="checked"' : ''; ?> /> <label for="wpml_act_<?php echo $lang['code']; ?>"><?php echo $lang['display_name']; ?></label><br />
479
- <?php } ?>
480
- </div>
481
- </div><!-- end dynwid_conf -->
482
- <?php } ?>
483
-
484
- <!-- Front Page //-->
485
- <?php if ( get_option('show_on_front') != 'page' ) { ?>
486
- <h4><b><?php _e('Front Page', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_frontpage) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
487
- <div class="dynwid_conf">
488
- <?php _e('Show widget on the front page?', DW_L10N_DOMAIN) ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" onclick="divToggle('frontpage');" /><br />
489
- <?php $DW->dumpOpt($opt_frontpage); ?>
490
- <div>
491
- <div id="frontpage" class="infotext">
492
- <?php _e('This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />
493
- When a static page is set, you can use the options for the static pages below.
494
- ', DW_L10N_DOMAIN); ?>
495
- </div>
496
- </div>
497
- <input type="radio" name="front-page" value="yes" id="front-page-yes" <?php echo ( isset($frontpage_yes_selected) ? $frontpage_yes_selected : '' ); ?> /> <label for="front-page-yes"><?php _e('Yes'); ?></label>
498
- <input type="radio" name="front-page" value="no" id="front-page-no" <?php echo ( isset($frontpage_no_selected) ? $frontpage_no_selected : '' ); ?> /> <label for="front-page-no"><?php _e('No'); ?></label>
499
- </div><!-- end dynwid_conf -->
500
- <?php } ?>
501
-
502
- <!-- Single Posts //-->
503
- <h4><b><?php _e('Single Posts', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_single) > 0 || count($opt_single_author) > 0 || count($opt_single_category) > 0 || count($opt_single_post) > 0 || count($opt_single_tag) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
504
- <div class="dynwid_conf">
505
- <?php _e('Show widget default on single posts?', DW_L10N_DOMAIN) ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="Click to toggle info" onclick="divToggle('single')" /><br />
506
- <?php $DW->dumpOpt($opt_single); ?>
507
- <div>
508
- <div id="single" class="infotext">
509
- <?php _e('When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won\'t be applied.
510
- If you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.
511
- ', DW_L10N_DOMAIN); ?>
512
- </div>
513
- </div>
514
- <input type="radio" name="single" value="yes" id="single-yes" <?php echo ( isset($single_yes_selected) ? $single_yes_selected : '' ); ?> /> <label for="single-yes"><?php _e('Yes'); ?></label>
515
- <input type="radio" name="single" value="no" id="single-no" <?php echo ( isset($single_no_selected) ? $single_no_selected : '' ); ?> /> <label for="single-no"><?php _e('No'); ?></label><br />
516
- <?php $DW->dumpOpt($opt_individual); ?>
517
- <input type="checkbox" id="individual" name="individual" value="1" <?php echo ( $individual ) ? 'checked="checked"' : ''; ?> onclick="chkInPosts()" />
518
- <label for="individual"><?php _e('Make exception rule available to individual posts and tags.', DW_L10N_DOMAIN) ?> <?php echo ( isset($count_individual) ? $count_individual : '' ); ?></label>
519
- <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="Click to toggle info" onclick="divToggle('individual_post_tag')" />
520
- <div>
521
- <div id="individual_post_tag" class="infotext">
522
- <?php _e('When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.
523
- You can set the exception rule for tags in the single Edit Tag Panel (go to <a href="edit-tags.php?taxonomy=post_tag">Post Tags</a>,
524
- click a tag), For individual posts in the <a href="post-new.php">New</a> or <a href="edit.php">Edit</a> Posts panel.
525
- Exception rules for tags and individual posts in any combination work independantly, but will always be counted as one exception.<br />
526
- Please note when exception rules are set for Author and/or Category, these will be removed.
527
- ', DW_L10N_DOMAIN); ?>
528
- </div>
529
- </div>
530
- <?php foreach ( $single_post_act as $singlepost ) { ?>
531
- <input type="hidden" name="single_post_act[]" value="<?php echo $singlepost; ?>" />
532
- <?php } ?>
533
- <?php foreach ( $single_tag_act as $tag ) { ?>
534
- <input type="hidden" name="single_tag_act[]" value="<?php echo $tag; ?>" />
535
- <?php } ?>
536
- <table border="0" cellspacing="0" cellpadding="0">
537
- <tr>
538
- <td valign="top">
539
- <?php _e('Except the posts by author', DW_L10N_DOMAIN); ?>:
540
- <?php $DW->dumpOpt($opt_single_author); ?>
541
- <div id="single-author-select" class="condition-select" <?php echo ( isset($author_condition_select_style) ? $author_condition_select_style : '' ); ?>>
542
- <?php foreach ( $authors as $author ) { ?>
543
- <?php $js_author_array[ ] = '\'single_author_act_' . $author->ID . '\''; ?>
544
- <input type="checkbox" id="single_author_act_<?php echo $author->ID; ?>" name="single_author_act[]" value="<?php echo $author->ID; ?>" <?php echo ( isset($single_author_act) && count($single_author_act) > 0 && in_array($author->ID,$single_author_act) ) ? 'checked="checked"' : ''; ?> onclick="ci('single_author_act_<?php echo $author->ID; ?>')" /> <label for="single_author_act_<?php echo $author->ID; ?>"><?php echo $author->display_name; ?></label><br />
545
- <?php } ?>
546
- </div>
547
- </td>
548
- <td style="width:10px"></td>
549
- <td valign="top">
550
- <?php _e('Except the posts in category', DW_L10N_DOMAIN); ?>: <?php echo ( $DW->wpml ? $wpml_icon : '' ); ?>
551
- <?php $DW->dumpOpt($opt_single_category); ?>
552
- <div id="single-category-select" class="condition-select" <?php echo ( isset($category_condition_select_style) ? $category_condition_select_style : '' ); ?>>
553
- <?php foreach ( $category as $cat ) { ?>
554
- <?php $js_category_array[ ] = '\'single_cat_act_' . $cat->cat_ID . '\''; ?>
555
- <input type="checkbox" id="single_cat_act_<?php echo $cat->cat_ID; ?>" name="single_category_act[]" value="<?php echo $cat->cat_ID; ?>" <?php echo ( isset($single_category_act) && count($single_category_act) > 0 && in_array($cat->cat_ID,$single_category_act) ) ? 'checked="checked"' : ''; ?> onclick="ci('single_cat_act_<?php echo $cat->cat_ID; ?>')" /> <label for="single_cat_act_<?php echo $cat->cat_ID; ?>"><?php echo $cat->name; ?></label><br />
556
- <?php } ?>
557
- </div>
558
- </td>
559
- </tr>
560
- </table>
561
- </div><!-- end dynwid_conf -->
562
-
563
- <!-- Pages //-->
564
- <h4><b><?php _e('Pages'); ?></b> <?php echo ( count($opt_page) > 0 ? ' <span class="hasoptions">*</span>' : '' ) . ( $DW->wpml ? $wpml_icon : '' ); ?></h4>
565
- <div class="dynwid_conf">
566
- <?php _e('Show widget default on static pages?', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" onclick="divToggle('pages');" /><br />
567
- <?php $DW->dumpOpt($opt_page); ?>
568
- <div>
569
- <div id="pages" class="infotext">
570
- <?php
571
- $childs_infotext = __('Checking the "All childs" option, makes the exception rule apply
572
- to the parent and all items under it in all levels. Also future items
573
- under the parent. It\'s not possible to apply an exception rule to
574
- "All childs" without the parent.', DW_L10N_DOMAIN);
575
- echo $childs_infotext;
576
- ?>
577
- </div>
578
- </div>
579
- <input type="radio" name="page" value="yes" id="page-yes" <?php echo ( isset($page_yes_selected) ? $page_yes_selected : '' ); ?> /> <label for="page-yes"><?php _e('Yes'); ?></label>
580
- <input type="radio" name="page" value="no" id="page-no" <?php echo ( isset($page_no_selected) ? $page_no_selected : '' ); ?> /> <label for="page-no"><?php _e('No'); ?></label><br />
581
- <?php _e('Except the page(s)', DW_L10N_DOMAIN); ?>:<br />
582
- <div id="page-select" class="condition-select" <?php echo ( isset($page_condition_select_style) ? $page_condition_select_style : '' ); ?>>
583
- <div style="position:relative;left:-15px">
584
  <?php
585
- function getPageChilds($arr, $id, $i) {
586
- $pg = get_pages('child_of=' . $id);
587
- foreach ($pg as $p ) {
588
- if (! in_array($p->ID, $i) ) {
589
- $i[ ] = $p->ID;
590
- $arr[$p->ID] = array();
591
- $a = &$arr[$p->ID];
592
- $a = getPageChilds($a, $p->ID, &$i);
593
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
594
  }
595
- return $arr;
596
  }
597
- $pagemap = getPageChilds(array(), 0, array());
598
-
599
- // Creating childmap
600
- function childPageMap($arr, $id) {
601
- $pg = get_pages('child_of=' . $id);
602
- foreach ($pg as $p ) {
603
- $i[ ] = $p->ID;
604
- $arr[$p->ID] = array();
605
- $a = &$arr[$p->ID];
606
- $a = childPageMap($a, $p->ID);
607
- }
608
- return $arr;
609
- }
610
- $childmap = childPageMap(array(), 0);
611
-
612
- function prtPgs($pages, $childmap, $page_act, $page_childs_act, $static_page) {
613
- foreach ( $pages as $pid => $childs ) {
614
- $page = get_page($pid);
615
-
616
- echo '<div style="position:relative;left:15px;">';
617
- echo '<input type="checkbox" id="page_act_' . $page->ID . '" name="page_act[]" value="' . $page->ID . '" ' . ( isset($page_act) && count($page_act) > 0 && in_array($page->ID, $page_act) ? 'checked="checked"' : '' ) . ' onchange="chkChild(' . $pid . ')" /> <label for="page_act_' . $page->ID . '">' . $page->post_title . ' ' . ( get_option('show_on_front') == 'page' && isset($static_page[$page->ID]) ? '(' . $static_page[$page->ID] . ')' : '' ) . '</label><br />';
618
-
619
- echo '<div style="position:relative;left:15px;">';
620
- echo '<input type="checkbox" id="child_' . $pid . '" name="page_childs_act[]" value="' . $pid . '" ' . ( isset($page_childs_act) && count($page_childs_act) > 0 && in_array($pid, $page_childs_act) ? 'checked="checked"' : '' ) . ' onchange="chkParent(' . $pid . ')" /> <label for="child_' . $pid . '"><em>' . __('All childs', DW_L10N_DOMAIN) . '</em></label><br />';
621
- echo '</div>';
622
-
623
- if ( count($childs) > 0 ) {
624
- prtPgs($childs, $childmap, $page_act, $page_childs_act, $static_page);
625
- }
626
- echo '</div>';
627
- }
628
- }
629
- prtPgs($pagemap, $childmap, $page_act, $page_childs_act, $static_page);
630
- ?>
631
- </div>
632
- </div>
633
-
634
- </div><!-- end dynwid_conf -->
635
-
636
- <!-- Author Pages //-->
637
- <h4><b><?php _e('Author Pages', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_author) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
638
- <div class="dynwid_conf">
639
- <?php _e('Show widget default on author pages?', DW_L10N_DOMAIN); ?><br />
640
- <?php $DW->dumpOpt($opt_author); ?>
641
- <input type="radio" name="author" value="yes" id="author-yes" <?php echo ( isset($author_yes_selected) ? $author_yes_selected : '' ); ?> /> <label for="author-yes"><?php _e('Yes'); ?></label>
642
- <input type="radio" name="author" value="no" id="author-no" <?php echo ( isset($author_no_selected) ? $author_no_selected : '' ); ?> /> <label for="author-no"><?php _e('No'); ?></label><br />
643
- <?php _e('Except the author(s)', DW_L10N_DOMAIN); ?>:<br />
644
- <div id="author-select" class="condition-select" <?php echo ( isset($author_condition_select_style) ? $author_condition_select_style : '' ); ?>>
645
- <?php foreach ( $authors as $author ) { ?>
646
- <input type="checkbox" id="author_act_<?php echo $author->ID; ?>" name="author_act[]" value="<?php echo $author->ID; ?>" <?php echo ( isset($author_act) && count($author_act) > 0 && in_array($author->ID,$author_act) ) ? 'checked="checked"' : ''; ?> /> <label for="author_act_<?php echo $author->ID; ?>"><?php echo $author->display_name; ?></label><br />
647
- <?php } ?></div>
648
- </div><!-- end dynwid_conf -->
649
-
650
- <!-- Category Pages //-->
651
- <h4><b><?php _e('Category Pages', DW_L10N_DOMAIN); ?></b> <?php echo ( count($opt_category) > 0 ? ' <span class="hasoptions">*</span>' : '' ) . ( $DW->wpml ? $wpml_icon : '' ); ?></h4>
652
- <div class="dynwid_conf">
653
- <?php _e('Show widget default on category pages?', DW_L10N_DOMAIN); ?><br />
654
- <?php $DW->dumpOpt($opt_category); ?>
655
- <input type="radio" name="category" value="yes" id="category-yes" <?php echo ( isset($category_yes_selected) ? $category_yes_selected : '' ); ?> /> <label for="category-yes"><?php _e('Yes'); ?></label>
656
- <input type="radio" name="category" value="no" id="category-no" <?php echo ( isset($category_no_selected) ? $category_no_selected : '' ); ?> /> <label for="category-no"><?php _e('No'); ?></label><br />
657
- <?php _e('Except the categories', DW_L10N_DOMAIN); ?>:<br />
658
- <div id="category-select" class="condition-select" <?php echo ( isset($category_condition_select_style) ? $category_condition_select_style : '' ); ?>>
659
- <?php foreach ( $category as $cat ) { ?>
660
- <input type="checkbox" id="cat_act_<?php echo $cat->cat_ID; ?>" name="category_act[]" value="<?php echo $cat->cat_ID; ?>" <?php echo ( isset($category_act) && count($category_act) > 0 && in_array($cat->cat_ID,$category_act) ) ? 'checked="checked"' : ''; ?> /> <label for="cat_act_<?php echo $cat->cat_ID; ?>"><?php echo $cat->name; ?></label><br />
661
- <?php } ?>
662
- </div>
663
- </div><!-- end dynwid_conf -->
664
-
665
- <!-- Archive Pages //-->
666
- <h4><b><?php _e('Archive Pages', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_archive) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
667
- <div class="dynwid_conf">
668
- <?php _e('Show widget on archive pages', DW_L10N_DOMAIN); ?>? <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="Click to toggle info" onclick="divToggle('archive')" /><br />
669
- <?php $DW->dumpOpt($opt_archive); ?>
670
- <div>
671
- <div id="archive" class="infotext">
672
- <?php _e('This option does not include Author and Category Pages.', DW_L10N_DOMAIN); ?>
673
- </div>
674
- </div>
675
- <input type="radio" name="archive" value="yes" id="archive-yes" <?php echo ( isset($archive_yes_selected) ? $archive_yes_selected : '' ); ?> /> <label for="archive-yes"><?php _e('Yes'); ?></label>
676
- <input type="radio" name="archive" value="no" id="archive-no" <?php echo ( isset($archive_no_selected) ? $archive_no_selected : '' ); ?> /> <label for="archive-no"><?php _e('No'); ?></label>
677
-
678
- </div><!-- end dynwid_conf -->
679
-
680
- <!-- Error Page //-->
681
- <h4><b><?php _e('Error Page', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_e404) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
682
- <div class="dynwid_conf">
683
- <?php _e('Show widget on the error page?', DW_L10N_DOMAIN); ?><br />
684
- <?php $DW->dumpOpt($opt_e404); ?>
685
- <input type="radio" name="e404" value="yes" id="e404-yes" <?php echo ( isset($e404_yes_selected) ? $e404_yes_selected : '' ); ?> /> <label for="e404-yes"><?php _e('Yes'); ?></label>
686
- <input type="radio" name="e404" value="no" id="e404-no" <?php echo ( isset($e404_no_selected) ? $e404_no_selected : '' ); ?> /> <label for="e404-no"><?php _e('No'); ?></label>
687
- </div><!-- end dynwid_conf -->
688
-
689
- <!-- Search Page //-->
690
- <h4><b><?php _e('Search Page', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_search) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
691
- <div class="dynwid_conf">
692
- <?php _e('Show widget on the search page?', DW_L10N_DOMAIN); ?><br />
693
- <?php $DW->dumpOpt($opt_search); ?>
694
- <input type="radio" name="search" value="yes" id="search-yes" <?php echo ( isset($search_yes_selected) ? $search_yes_selected : '' ); ?> /> <label for="search-yes"><?php _e('Yes'); ?></label>
695
- <input type="radio" name="search" value="no" id="search-no" <?php echo ( isset($search_no_selected) ? $search_no_selected : '' ); ?> /> <label for="search-no"><?php _e('No'); ?></label>
696
- </div><!-- end dynwid_conf -->
697
-
698
- <!-- Custom Post Type //-->
699
- <?php
700
- /* WordPress 3.0 and higher: Custom Post Types */
701
- if ( version_compare($GLOBALS['wp_version'], '3.0', '>=') ) {
702
- function getCPostChilds($type, $arr, $id, $i) {
703
- $post = get_posts('post_type=' . $type . '&post_parent=' . $id);
704
- foreach ($post as $p ) {
705
- if (! in_array($p->ID, $i) ) {
706
- $i[ ] = $p->ID;
707
- $arr[$p->ID] = array();
708
- $a = &$arr[$p->ID];
709
- $a = getCPostChilds($type, $a, $p->ID, &$i);
710
- }
711
- }
712
- return $arr;
713
- }
714
-
715
- function childCPostMap($type, $arr, $id) {
716
- $post = get_posts('post_type=' . $type . '&post_parent=' . $id);
717
- foreach ($post as $p ) {
718
- $i[ ] = $p->ID;
719
- $arr[$p->ID] = array();
720
- $a = &$arr[$p->ID];
721
- $a = childCPostMap($type, $a, $p->ID);
722
- }
723
- return $arr;
724
- }
725
-
726
- function prtCPost($type, $ctid, $posts, $childmap, $posts_act, $posts_childs_act) {
727
- foreach ( $posts as $pid => $childs ) {
728
- $post = get_post($pid);
729
-
730
- echo '<div style="position:relative;left:15px;">';
731
- echo '<input type="checkbox" id="' . $type . '_act_' . $post->ID . '" name="' . $type . '_act[]" value="' . $post->ID . '" ' . ( isset($posts_act) && count($posts_act) > 0 && in_array($post->ID, $posts_act) ? 'checked="checked"' : '' ) . ' onchange="chkCPChild(\'' . $type . '\',' . $pid . ')" /> <label for="' . $type . '_act_' . $post->ID . '">' . $post->post_title . '</label><br />';
732
-
733
- if ( $ctid->hierarchical ) {
734
- echo '<div style="position:relative;left:15px;">';
735
- echo '<input type="checkbox" id="' . $type . '_child_' . $pid . '" name="' . $type . '_childs_act[]" value="' . $pid . '" ' . ( isset($posts_childs_act) && count($posts_childs_act) > 0 && in_array($pid, $posts_childs_act) ? 'checked="checked"' : '' ) . ' onchange="chkCPParent(\'' . $type . '\',' . $pid . ')" /> <label for="' . $type . '_child_' . $pid . '"><em>' . __('All childs', DW_L10N_DOMAIN) . '</em></label><br />';
736
- echo '</div>';
737
- }
738
-
739
- if ( count($childs) > 0 ) {
740
- prtCPost($type, $ctid, $childs, $childmap, $posts_act, $posts_childs_act);
741
- }
742
- echo '</div>';
743
- }
744
- }
745
-
746
- $args = array(
747
- 'public' => TRUE,
748
- '_builtin' => FALSE
749
- );
750
- $post_types = get_post_types($args, 'objects', 'and');
751
-
752
- foreach ( $post_types as $type => $ctid ) {
753
- // Prepare
754
- $custom_yes_selected = 'checked="checked"';
755
- $opt_custom = $DW->getOptions($_GET['id'], $type);
756
- if ( count($opt_custom) > 0 ) {
757
- $custom_act = array();
758
- $custom_childs_act = array();
759
-
760
- foreach ( $opt_custom as $custom_condition ) {
761
- if ( $custom_condition['maintype'] == $type ) {
762
- if ( $custom_condition['name'] == 'default' || empty($custom_condition['name']) ) {
763
- $custom_default = $custom_condition['value'];
764
- } else {
765
- $custom_act[ ] = $custom_condition['name'];
766
- }
767
- }
768
- }
769
-
770
- if ( $custom_default == '0' ) {
771
- $custom_no_selected = $custom_yes_selected;
772
- unset($custom_yes_selected);
773
- }
774
-
775
- // -- Childs
776
- if ( $ctid->hierarchical ) {
777
- $opt_custom_childs = $DW->getOptions($_GET['id'], $type . '-childs');
778
- if ( count($opt_custom_childs) > 0 ) {
779
- foreach ( $opt_custom_childs as $child_condition ) {
780
- if ( $child_condition['name'] != 'default' ) {
781
- $custom_childs_act[ ] = $child_condition['name'];
782
- }
783
- }
784
- }
785
- }
786
- }
787
-
788
- $loop = new WP_Query( array('post_type' => $type) );
789
- if ( $loop->post_count > DW_LIST_LIMIT ) {
790
- $custom_condition_select_style = DW_LIST_STYLE;
791
- }
792
-
793
- $cpmap = getCPostChilds($type, array(), 0, array());
794
- $childmap = childCPostMap($type, array(), 0);
795
-
796
- // Output
797
- echo '<h4><b>' . __('Custom Post Type') . ' <em>' . $ctid->label . '</em></b> ' . ( count($opt_custom) > 0 ? ' <span class="hasoptions">*</span>' : '' ) . ( $DW->wpml ? $wpml_icon : '' ) . '</h4>';
798
- echo '<div class="dynwid_conf">';
799
- echo __('Show widget on', DW_L10N_DOMAIN) . ' ' . $ctid->label . '? ' . ( $ctid->hierarchical ? '<img src="' . $DW->plugin_url . 'img/info.gif" alt="info" onclick="divToggle(\'custom_' . $type . '\');" />' : '' ) . '<br />';
800
- echo '<input type="hidden" name="post_types[]" value="' . $type . '" />';
801
- $DW->dumpOpt($opt_custom);
802
-
803
- if ( $ctid->hierarchical ) {
804
- echo '<div>';
805
- echo '<div id="custom_' . $type . '" class="infotext">';
806
- echo $childs_infotext;
807
- echo '</div>';
808
- echo '</div>';
809
- }
810
-
811
- echo '<input type="radio" name="' . $type . '" value="yes" id="' . $type . '-yes" ' . ( isset($custom_yes_selected) ? $custom_yes_selected : '' ) . ' /> <label for="' . $type . '-yes">' . __('Yes') . '</label> ';
812
- echo '<input type="radio" name="' . $type . '" value="no" id="' . $type . '-no" ' . ( isset($custom_no_selected) ? $custom_no_selected : '' ) . ' /> <label for="' . $type . '-no">' . __('No') . '</label><br />';
813
-
814
- echo __('Except for') . ':<br />';
815
- echo '<div id="' . $type . '-select" class="condition-select" ' . ( isset($custom_condition_select_style) ? $custom_condition_select_style : '' ) . '>';
816
-
817
- echo '<div style="position:relative;left:-15px">';
818
- prtCPost($type, $ctid, $cpmap, $childmap, $custom_act, $custom_childs_act);
819
- echo '</div>';
820
-
821
- echo '</div>';
822
- echo '</div><!-- end dynwid_conf -->';
823
- }
824
- } // end version compare >= WP 3.0
825
- ?>
826
-
827
- <!-- WPSC Category //-->
828
- <?php
829
- // WPEC
830
- if ( $DW->wpsc ) {
831
- ?>
832
- <h4><b><?php _e('WPSC Category', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_wpsc) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
833
- <div class="dynwid_conf">
834
- <?php _e('Show widget default on WPSC categories?', DW_L10N_DOMAIN); ?><br />
835
- <?php $DW->dumpOpt($opt_wpsc); ?>
836
- <input type="radio" name="wpsc" value="yes" id="wpsc-yes" <?php echo ( isset($wpsc_yes_selected) ? $wpsc_yes_selected : '' ); ?> /> <label for="wpsc-yes"><?php _e('Yes'); ?></label>
837
- <input type="radio" name="wpsc" value="no" id="wpsc-no" <?php echo ( isset($wpsc_no_selected) ? $wpsc_no_selected : '' ); ?> /> <label for="wpsc-no"><?php _e('No'); ?></label><br />
838
- <?php _e('Except the categories', DW_L10N_DOMAIN); ?>:<br />
839
- <div id="wpsc-select" class="condition-select" <?php echo ( isset($wpsc_condition_select_style) ? $wpsc_condition_select_style : '' ); ?>>
840
- <?php foreach ( $wpsc as $id => $cat ) { ?>
841
- <input type="checkbox" id="wpsc_act_<?php echo $id; ?>" name="wpsc_act[]" value="<?php echo $id; ?>" <?php echo ( count($wpsc_act) > 0 && in_array($id, $wpsc_act) ) ? 'checked="checked"' : ''; ?> /> <label for="wpsc_act_<?php echo $id; ?>"><?php echo $cat; ?></label><br />
842
- <?php } ?>
843
- </div>
844
- </div><!-- end dynwid_conf -->
845
- <?php
846
- } // end DW->wpsc
847
  ?>
848
 
849
  </div><!-- end dynwid -->
@@ -852,7 +116,7 @@ h4 {
852
  <div style="float:left">
853
  <input class="button-primary" type="submit" value="<?php _e('Save'); ?>" /> &nbsp;&nbsp;
854
  </div>
855
- <?php $url = (! empty($_GET['returnurl']) ) ? urldecode($_GET['returnurl']) : trailingslashit(admin_url()) . 'themes.php?page=dynwid-config'; ?>
856
  <div style="float:left">
857
  <input class="button-secondary" type="button" value="<?php _e('Return', DW_L10N_DOMAIN); ?>" onclick="location.href='<?php echo $url; ?>'" />
858
  </div>
@@ -860,6 +124,7 @@ h4 {
860
  </form>
861
 
862
  <script type="text/javascript">
 
863
  function chkInPosts() {
864
  var posts = <?php echo count($single_post_act); ?>;
865
  var tags = <?php echo count($single_tag_act); ?>;
@@ -932,7 +197,9 @@ h4 {
932
  jQuery(id).datepicker({
933
  dateFormat: 'yy-mm-dd',
934
  minDate: new Date(<?php echo date('Y, n - 1, j'); ?>),
935
- onClose: function() { jQuery(id).datepicker('destroy') }
 
 
936
  });
937
  jQuery(id).datepicker('show');
938
  });
@@ -984,4 +251,5 @@ h4 {
984
  autoHeight: false,
985
  });
986
  });
 
987
  </script>
2
  /**
3
  * dynwid_admin_edit.php - Options settings
4
  *
5
+ * @version $Id: dynwid_admin_edit.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
  */
8
 
9
  // WPML Plugin support
10
  if ( defined('ICL_PLUGIN_PATH') && file_exists(ICL_PLUGIN_PATH . DW_WPML_API) ) {
11
  $DW->wpml = TRUE;
12
+ $wpml_icon = '<img src="' . $DW->plugin_url . DW_WPML_ICON . '" alt="WMPL" title="Dynamic Widgets syncs with other languages of these pages via WPML" style="position:relative;top:2px;" />';
 
 
13
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  ?>
15
 
16
  <style type="text/css">
72
 
73
  <?php } ?>
74
 
75
+ <h3><?php _e('Edit options for the widget', DW_L10N_DOMAIN); ?>: <em><?php echo $DW->getName($_GET['id']); ?></em></h3>
76
  <?php echo ( DW_DEBUG ) ? '<pre>ID = ' . $_GET['id'] . '</pre><br />' : ''; ?>
77
 
78
  <form action="<?php echo trailingslashit(admin_url()) . 'themes.php?page=dynwid-config&action=edit&id=' . $_GET['id']; ?>" method="post">
81
  <input type="hidden" name="widget_id" value="<?php echo $_GET['id']; ?>" />
82
  <input type="hidden" name="returnurl" value="<?php echo ( isset($_GET['returnurl']) ? urldecode($_GET['returnurl']) : '' ); ?>" />
83
 
 
84
  <div id="dynwid">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  <?php
86
+ $modules = array(
87
+ 'role' => 'Role',
88
+ 'date' => 'Date',
89
+ 'wpml' => 'Language (WPML)',
90
+ 'useragent' => 'UserAgent',
91
+ 'frontpage' => 'Front Page',
92
+ 'single' => 'Single Posts',
93
+ 'attachment' => 'Attachment',
94
+ 'pages' => 'Pages',
95
+ 'author' => 'Author Pages',
96
+ 'category' => 'Category Pages',
97
+ 'archive' => 'Archive Pages',
98
+ 'error' => 'Error Page',
99
+ 'search' => 'Search Page',
100
+ 'custompost' => 'Custom Post Types',
101
+ 'wpec' => 'WPSC Category',
102
+ 'bp' => 'BuddyPress'
103
+ );
104
+ foreach ( $modules as $key => $mod ) {
105
+ $modfile = DW_MODULES . $key . '_module.php';
106
+ echo '<!-- ' . $mod . ' //-->';
107
+ if ( file_exists($modfile) ) {
108
+ include($modfile);
109
  }
 
110
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  ?>
112
 
113
  </div><!-- end dynwid -->
116
  <div style="float:left">
117
  <input class="button-primary" type="submit" value="<?php _e('Save'); ?>" /> &nbsp;&nbsp;
118
  </div>
119
+ <?php $url = (! empty($_GET['returnurl']) ? urldecode($_GET['returnurl']) : trailingslashit(admin_url()) ) . 'themes.php?page=dynwid-config'; ?>
120
  <div style="float:left">
121
  <input class="button-secondary" type="button" value="<?php _e('Return', DW_L10N_DOMAIN); ?>" onclick="location.href='<?php echo $url; ?>'" />
122
  </div>
124
  </form>
125
 
126
  <script type="text/javascript">
127
+ /* <![CDATA[ */
128
  function chkInPosts() {
129
  var posts = <?php echo count($single_post_act); ?>;
130
  var tags = <?php echo count($single_tag_act); ?>;
197
  jQuery(id).datepicker({
198
  dateFormat: 'yy-mm-dd',
199
  minDate: new Date(<?php echo date('Y, n - 1, j'); ?>),
200
+ onClose: function() {
201
+ jQuery(id).datepicker('destroy');
202
+ }
203
  });
204
  jQuery(id).datepicker('show');
205
  });
251
  autoHeight: false,
252
  });
253
  });
254
+ /* ]]> */
255
  </script>
dynwid_admin_overview.php CHANGED
@@ -2,7 +2,8 @@
2
  /**
3
  * dynwid_admin_overview.php - Overview page
4
  *
5
- * @version $Id: dynwid_admin_overview.php 326313 2010-12-27 11:13:47Z qurl $
 
6
  */
7
 
8
  // Special case: Reset action needs to go back to overview.
@@ -85,54 +86,73 @@
85
 
86
  <div class="clear"><br /><br /></div>
87
 
88
- <a href="#" onclick="jQuery('#un').slideToggle('fast'); return false;"><?php _e('Advanced'); ?> &gt;</a>
89
  <div id="un" style="display:none">
90
- <br /> <strong>wp_head() check: </strong>
 
 
 
91
  <?php
92
  $c = $DW->checkWPhead();
93
  switch ( $c ) {
94
  case 0:
95
- echo '<span style="color:red">wp_head() is NOT called (at the most obvious place)</span>';
96
  break;
97
 
98
  case 1:
99
- echo '<span style="color:green">wp_head() is called</span>';
100
  break;
101
 
102
  case 2:
103
- echo '<span style="color:orange">Unable to determine if wp_head() is called</span>';
104
  break;
105
  }
106
  ?>
107
  .<br />
108
-
109
  <br />
 
 
110
  <div id="method">
111
  <form id="dynwid_method" action="" method="get">
112
  <input type="hidden" name="page" value="dynwid-config" />
113
  <input type="hidden" name="action" value="dynwid_set_method" />
114
- <input type="checkbox" id="oldmethod" name="oldmethod" <?php echo ( get_option('dynwid_old_method') ? 'checked="checked"' : '' ) ?> onchange="document.getElementById('dynwid_method').submit();" /> <label for="oldmethod">Use 'OLD' method</label>
115
  </form>
116
  </div>
117
 
118
- <br />
119
- For debugging purposes it is possible you're asked to create a dump. Click the 'Create dump' button and save the text file.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  <br /><br />
121
  <div id="dump">
122
  <form action="" method="get">
123
  <input type="hidden" name="action" value="dynwid_dump" />
124
- <input class="button-primary" type="submit" value="Create dump" />
125
  </form>
126
  </div>
127
 
128
  <br /><br />
129
 
130
- When you deceide not to use this plugin anymore (sorry to hear that!). You can cleanup all settings and data related to this plugin by clicking on the 'Uninstall' button. This process is irreversible! After the cleanup the plugin is deactivated automaticly.
 
131
  <br /><br />
132
  <div id="uninstall">
133
  <form action="" method="get">
134
  <input type="hidden" name="action" value="dynwid_uninstall" />
135
- <input class="button-primary" type="submit" value="Uninstall" onclick="if ( confirm('Are you sure you want to uninstall Dynamic Widgets?') ) { return true; } return false;" />
136
  </form>
137
  </div>
138
  </div>
2
  /**
3
  * dynwid_admin_overview.php - Overview page
4
  *
5
+ * @version $Id: dynwid_admin_overview.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
  */
8
 
9
  // Special case: Reset action needs to go back to overview.
86
 
87
  <div class="clear"><br /><br /></div>
88
 
89
+ <a href="#" onclick="jQuery('#un').slideToggle('fast'); return false;"><?php _e('Advanced', DW_L10N_DOMAIN); ?> &gt;</a>
90
  <div id="un" style="display:none">
91
+ <br />
92
+
93
+ <!-- wp_head() check //-->
94
+ <strong><?php _e('wp_head() check:', DW_L10N_DOMAIN); ?> </strong>
95
  <?php
96
  $c = $DW->checkWPhead();
97
  switch ( $c ) {
98
  case 0:
99
+ echo '<span style="color:red">' . __('wp_head() is NOT called (at the most obvious place)', DW_L10N_DOMAIN) . '</span>';
100
  break;
101
 
102
  case 1:
103
+ echo '<span style="color:green">' . __('wp_head() is called', DW_L10N_DOMAIN) . '</span>';
104
  break;
105
 
106
  case 2:
107
+ echo '<span style="color:orange">' . __('Unable to determine if wp_head() is called', DW_L10N_DOMAIN) . '</span>';
108
  break;
109
  }
110
  ?>
111
  .<br />
 
112
  <br />
113
+
114
+ <!-- method //-->
115
  <div id="method">
116
  <form id="dynwid_method" action="" method="get">
117
  <input type="hidden" name="page" value="dynwid-config" />
118
  <input type="hidden" name="action" value="dynwid_set_method" />
119
+ <input type="checkbox" id="oldmethod" name="oldmethod" <?php echo ( get_option('dynwid_old_method') ? 'checked="checked"' : '' ) ?> onchange="document.getElementById('dynwid_method').submit();" /> <label for="oldmethod"><?php _e('Use \'OLD\' method', DW_L10N_DOMAIN); ?></label>
120
  </form>
121
  </div>
122
 
123
+ <?php if ( defined('WPSC_TABLE_PRODUCT_CATEGORIES') ) { ?>
124
+ <!-- WPEC dump //--><br /><br />
125
+ <?php _e('When upgrading to WPEC 3.8 the Dynamic Widgets rules for WPEC are lost. The WPEC dump gives you an overview of the rules before the update.'); ?><br />
126
+ <span style="color:red;font-weight:bold;"><?php _e('WARNING'); ?></span> <?php _e('This only works correct when you did not add or change anything in the Dynamic Widgets rules.'); ?>
127
+ <br /><br />
128
+ <div id="wpec_dump">
129
+ <form action="" method="get">
130
+ <input type="hidden" name="action" value="wpec_dump" />
131
+ <input class="button-primary" type="submit" value="<?php _e('Create WPEC dump', DW_L10N_DOMAIN); ?>" />
132
+ </form>
133
+ </div>
134
+ <br /><br />
135
+ <?php } ?>
136
+
137
+ <!-- dump //-->
138
+ <?php _e('For debugging purposes it is possible you\'re asked to create a dump. Click the \'Create dump\' button and save the text file.', DW_L10N_DOMAIN); ?>
139
  <br /><br />
140
  <div id="dump">
141
  <form action="" method="get">
142
  <input type="hidden" name="action" value="dynwid_dump" />
143
+ <input class="button-primary" type="submit" value="<?php _e('Create dump', DW_L10N_DOMAIN); ?>" />
144
  </form>
145
  </div>
146
 
147
  <br /><br />
148
 
149
+ <!-- uninstall //-->
150
+ <?php _e('When you deceide not to use this plugin anymore (sorry to hear that!). You can cleanup all settings and data related to this plugin by clicking on the \'Uninstall\' button. This process is irreversible! After the cleanup the plugin is deactivated automaticly.', DW_L10N_DOMAIN); ?>
151
  <br /><br />
152
  <div id="uninstall">
153
  <form action="" method="get">
154
  <input type="hidden" name="action" value="dynwid_uninstall" />
155
+ <input class="button-primary" type="submit" value="<?php _e('Uninstall', DW_L10N_DOMAIN); ?>" onclick="if ( confirm('Are you sure you want to uninstall Dynamic Widgets?') ) { return true; } return false;" />
156
  </form>
157
  </div>
158
  </div>
dynwid_admin_save.php CHANGED
@@ -2,17 +2,29 @@
2
  /**
3
  * dynwid_admin_save.php - Saving options to the database
4
  *
5
- * @version $Id: dynwid_admin_save.php 323926 2010-12-17 17:02:58Z qurl $
 
6
  */
7
 
8
  // Security - nonce
9
  check_admin_referer('plugin-name-action_edit_' . $_POST['widget_id']);
10
 
11
- // Checking basic stuff
12
- if ( $_POST['role'] == 'no' && count($_POST['role_act']) == 0 ) {
13
- wp_redirect( get_option('siteurl') . $_SERVER['REQUEST_URI'] . '&work=none' );
 
14
  die();
15
  }
 
 
 
 
 
 
 
 
 
 
16
 
17
  // Date check
18
  if ( $_POST['date'] == 'no' ) {
@@ -20,7 +32,7 @@
20
  $date_end = trim($_POST['date_end']);
21
 
22
  if (! preg_match('/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/', $date_start) && ! preg_match('/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/', $date_end) ) {
23
- wp_redirect( get_option('siteurl') . $_SERVER['REQUEST_URI'] . '&work=none' );
24
  die();
25
  }
26
 
@@ -38,70 +50,13 @@
38
  }
39
 
40
  if (! empty($date_start) && ! empty($date_end) ) {
41
- if ( mktime(0,0,0,$date_start_month,$date_start_day,$date_start_year) > mktime(0,0,0,$date_end_month,$date_end_day, $date_end_year) ) {
42
- wp_redirect( get_option('siteurl') . $_SERVER['REQUEST_URI'] . '&work=nonedate' );
43
  die();
44
  }
45
  }
46
  }
47
 
48
- $fields = array('front-page', 'single', 'page', 'author', 'category', 'archive', 'e404', 'search');
49
- $work = FALSE;
50
- foreach ( $fields as $field ) {
51
- if ( $_POST[$field] == 'yes' ) {
52
- $work = TRUE;
53
- break;
54
- }
55
- }
56
- if (! $work ) {
57
- $fields = array('single_author_act',
58
- 'single_category_act',
59
- 'single_post_act',
60
- 'single_tag_act',
61
- 'page_act',
62
- 'author_act',
63
- 'category_act'
64
- );
65
- foreach ( $fields as $field ) {
66
- if ( count($_POST[$field]) > 0 ) {
67
- $work = TRUE;
68
- break;
69
- }
70
- }
71
- }
72
- if (! $work) {
73
- if ( $_POST['individual'] == '1' ) {
74
- $work = TRUE;
75
- }
76
- }
77
-
78
- // Custom Types (WP >= 3.0)
79
- if ( version_compare($GLOBALS['wp_version'], '3.0', '>=') && isset($_POST['post_types']) ) {
80
- if (! $work ) {
81
- foreach ( $_POST['post_types'] as $type ) {
82
- if ( $_POST[$type] == 'yes' ) {
83
- $work = TRUE;
84
- break;
85
- }
86
- }
87
- }
88
-
89
- if (! $work ) {
90
- foreach ( $_POST['post_types'] as $type ) {
91
- $field = $type . '_act';
92
- if ( count($_POST[$field]) > 0 ) {
93
- $work = TRUE;
94
- break;
95
- }
96
- }
97
- }
98
- }
99
-
100
- if (! $work ) {
101
- wp_redirect( get_option('siteurl') . $_SERVER['REQUEST_URI'] . '&work=none' );
102
- die();
103
- }
104
-
105
  // Removing already set options
106
  $DW->resetOptions($_POST['widget_id']);
107
 
@@ -125,6 +80,13 @@
125
  }
126
  }
127
 
 
 
 
 
 
 
 
128
  // Front Page
129
  if ( isset($_POST['front-page']) && $_POST['front-page'] == 'no' ) {
130
  $DW->addSingleOption($_POST['widget_id'], 'front-page');
@@ -162,6 +124,11 @@
162
  }
163
  }
164
 
 
 
 
 
 
165
  // Pages
166
  if ( isset($_POST['page_act']) && count($_POST['page_act']) > 0 ) {
167
  $DW->addMultiOption($_POST['widget_id'], 'page', $_POST['page'], $_POST['page_act']);
@@ -177,7 +144,6 @@
177
  $childs_act[ ] = $act;
178
  }
179
  }
180
-
181
  $DW->addMultiOption($_POST['widget_id'], 'page-childs', $_POST['page'], $childs_act);
182
  }
183
 
@@ -232,6 +198,12 @@
232
  $DW->addMultiOption($_POST['widget_id'], $type . '-childs', $_POST[$type], $childs_act);
233
  }
234
  }
 
 
 
 
 
 
235
  }
236
 
237
  // WPML PLugin support
@@ -248,6 +220,20 @@
248
  $DW->addSingleOption($_POST['widget_id'], 'wpsc');
249
  }
250
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
251
  // Redirect to ReturnURL
252
  if (! empty($_POST['returnurl']) ) {
253
  $q = array();
@@ -259,7 +245,7 @@
259
  $query_string = substr($_POST['returnurl'], ($pos+1));
260
  $args = explode('&', $query_string);
261
  foreach ( $args as $arg ) {
262
- @list($name,$value) = explode('=', $arg);
263
  if ( $name != 'dynwid_save' && $name != 'widget_id' ) {
264
  $q[ ] = $name . '=' . $value;
265
  }
2
  /**
3
  * dynwid_admin_save.php - Saving options to the database
4
  *
5
+ * @version $Id: dynwid_admin_save.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
  */
8
 
9
  // Security - nonce
10
  check_admin_referer('plugin-name-action_edit_' . $_POST['widget_id']);
11
 
12
+ /* Checking basic stuff */
13
+ // Role
14
+ if ( $_POST['role'] == 'no' && count($_POST['role_act']) == 0 ) {
15
+ wp_redirect( $_SERVER['REQUEST_URI'] . '&work=none' );
16
  die();
17
  }
18
+ // Browser
19
+ if ( $_POST['browser'] == 'no' && count($_POST['role_act']) == 0 ) {
20
+ wp_redirect( $_SERVER['REQUEST_URI'] . '&work=none' );
21
+ die();
22
+ }
23
+ // WPML
24
+ if ( isset($_POST['wpml']) && $_POST['wpml'] == 'no' && count($_POST['wpml_act']) == 0 ) {
25
+ wp_redirect( $_SERVER['REQUEST_URI'] . '&work=none' );
26
+ die();
27
+ }
28
 
29
  // Date check
30
  if ( $_POST['date'] == 'no' ) {
32
  $date_end = trim($_POST['date_end']);
33
 
34
  if (! preg_match('/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/', $date_start) && ! preg_match('/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/', $date_end) ) {
35
+ wp_redirect( $_SERVER['REQUEST_URI'] . '&work=none' );
36
  die();
37
  }
38
 
50
  }
51
 
52
  if (! empty($date_start) && ! empty($date_end) ) {
53
+ if ( mktime(0, 0, 0, $date_start_month, $date_start_day, $date_start_year) > mktime(0, 0, 0, $date_end_month, $date_end_day, $date_end_year) ) {
54
+ wp_redirect( $_SERVER['REQUEST_URI'] . '&work=nonedate' );
55
  die();
56
  }
57
  }
58
  }
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  // Removing already set options
61
  $DW->resetOptions($_POST['widget_id']);
62
 
80
  }
81
  }
82
 
83
+ // Browser
84
+ if ( isset($_POST['browser_act']) && count($_POST['browser_act']) > 0 ) {
85
+ $DW->addMultiOption($_POST['widget_id'], 'browser', $_POST['browser'], $_POST['browser_act']);
86
+ } else if ( isset($_POST['browser']) && $_POST['browser'] == 'no' ) {
87
+ $DW->addSingleOption($_POST['widget_id'], 'browser');
88
+ }
89
+
90
  // Front Page
91
  if ( isset($_POST['front-page']) && $_POST['front-page'] == 'no' ) {
92
  $DW->addSingleOption($_POST['widget_id'], 'front-page');
124
  }
125
  }
126
 
127
+ // Attachment
128
+ if ( $_POST['attachment'] == 'no' ) {
129
+ $DW->addSingleOption($_POST['widget_id'], 'attachment');
130
+ }
131
+
132
  // Pages
133
  if ( isset($_POST['page_act']) && count($_POST['page_act']) > 0 ) {
134
  $DW->addMultiOption($_POST['widget_id'], 'page', $_POST['page'], $_POST['page_act']);
144
  $childs_act[ ] = $act;
145
  }
146
  }
 
147
  $DW->addMultiOption($_POST['widget_id'], 'page-childs', $_POST['page'], $childs_act);
148
  }
149
 
198
  $DW->addMultiOption($_POST['widget_id'], $type . '-childs', $_POST[$type], $childs_act);
199
  }
200
  }
201
+
202
+ if ( isset($_POST['cp_archive_act']) && count($_POST['cp_archive_act']) > 0 ) {
203
+ $DW->addMultiOption($_POST['widget_id'], 'cp_archive', $_POST['cp_archive'], $_POST['cp_archive_act']);
204
+ } else if ( $_POST['cp_archive'] == 'no' ) {
205
+ $DW->addSingleOption($_POST['widget_id'], 'cp_archive');
206
+ }
207
  }
208
 
209
  // WPML PLugin support
220
  $DW->addSingleOption($_POST['widget_id'], 'wpsc');
221
  }
222
 
223
+ // BP Plugin support
224
+ if ( isset($_POST['bp_act']) && count($_POST['bp_act']) > 0 ) {
225
+ $DW->addMultiOption($_POST['widget_id'], 'bp', $_POST['bp'], $_POST['bp_act']);
226
+ } else if ( isset($_POST['bp']) && $_POST['bp'] == 'no' ) {
227
+ $DW->addSingleOption($_POST['widget_id'], 'bp');
228
+ }
229
+
230
+ // BP Plugin support (Groups)
231
+ if ( isset($_POST['bp_group_act']) && count($_POST['bp_group_act']) > 0 ) {
232
+ $DW->addMultiOption($_POST['widget_id'], 'bp-group', $_POST['bp-group'], $_POST['bp_group_act']);
233
+ } else if ( isset($_POST['bp-group']) && $_POST['bp-group'] == 'no' ) {
234
+ $DW->addSingleOption($_POST['widget_id'], 'bp-group');
235
+ }
236
+
237
  // Redirect to ReturnURL
238
  if (! empty($_POST['returnurl']) ) {
239
  $q = array();
245
  $query_string = substr($_POST['returnurl'], ($pos+1));
246
  $args = explode('&', $query_string);
247
  foreach ( $args as $arg ) {
248
+ @list($name, $value) = explode('=', $arg);
249
  if ( $name != 'dynwid_save' && $name != 'widget_id' ) {
250
  $q[ ] = $name . '=' . $value;
251
  }
dynwid_class.php CHANGED
@@ -2,10 +2,13 @@
2
  /**
3
  * dynwid_class.php - Dynamic Widgets Class (PHP5)
4
  *
5
- * @version $Id: dynwid_class.php 323926 2010-12-17 17:02:58Z qurl $
 
6
  */
7
 
8
  class dynWid {
 
 
9
  public $custom_post_type;
10
  private $dbtable;
11
  public $dwoptions;
@@ -20,6 +23,7 @@
20
  public $removelist;
21
  public $sidebars;
22
  public $plugin_url;
 
23
  public $userrole;
24
  public $whereami;
25
  private $wpdb;
@@ -36,20 +40,23 @@
36
  $this->custom_post_type = FALSE;
37
  $this->firstmessage = TRUE;
38
  $this->listmade = FALSE;
39
- $this->overrule_maintype = array('date', 'role', 'wpml');
40
  $this->registered_sidebars = $GLOBALS['wp_registered_sidebars'];
41
  $this->registered_widget_controls = &$GLOBALS['wp_registered_widget_controls'];
42
  $this->registered_widgets = &$GLOBALS['wp_registered_widgets'];
43
  $this->removelist = array();
44
  $this->sidebars = wp_get_sidebars_widgets();
 
45
  $this->plugin_url = WP_PLUGIN_URL . '/' . str_replace( basename(__FILE__), '', plugin_basename(__FILE__) );
46
 
47
  $this->dwoptions = array(
48
  'role' => __('Role'),
49
  'date' => __('Date'),
 
50
  'wpml' => __('Language', DW_L10N_DOMAIN),
51
  'front-page' => __('Front Page', DW_L10N_DOMAIN),
52
  'single' => __('Single Posts', DW_L10N_DOMAIN),
 
53
  'page' => __('Pages'),
54
  'author' => __('Author Pages', DW_L10N_DOMAIN),
55
  'category' => __('Category Pages', DW_L10N_DOMAIN),
@@ -83,6 +90,10 @@
83
  $this->enabled = TRUE;
84
  }
85
 
 
 
 
 
86
  // WPML Plugin support
87
  $this->wpml = FALSE;
88
 
@@ -178,10 +189,12 @@
178
  }
179
 
180
  public function detectPage() {
181
- if ( is_front_page() && get_option('show_on_front') == 'posts' ) {
182
  return 'front-page';
183
  } else if ( is_home() && get_option('show_on_front') == 'page' ) {
184
  return 'home';
 
 
185
  } else if ( is_single() ) {
186
  return 'single';
187
  } else if ( is_page() ) {
@@ -190,6 +203,8 @@
190
  return 'author';
191
  } else if ( is_category() ) {
192
  return 'category';
 
 
193
  } else if ( is_archive() && ! is_category() && ! is_author() ) {
194
  return 'archive';
195
  } else if ( is_404() ) {
@@ -248,13 +263,37 @@
248
  }
249
 
250
  $query = "SELECT DISTINCT widget_id FROM " . $this->dbtable . "
251
- WHERE maintype LIKE '" . $whereami . "%' OR maintype = 'role' OR maintype = 'date' OR maintype = 'wpml'";
 
 
 
 
252
  $results = $this->wpdb->get_results($query);
253
  foreach ( $results as $myrow ) {
254
  $this->dynwid_list[ ] = $myrow->widget_id;
255
  }
256
  }
257
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  public function getName($id, $type = 'W') {
259
  switch ( $type ) {
260
  case 'S':
@@ -296,7 +335,11 @@
296
  }
297
  $query = "SELECT widget_id, maintype, name, value FROM " . $this->dbtable . "
298
  WHERE widget_id LIKE '" . $widget_id . "'
299
- AND (maintype LIKE '" . $maintype . "%' OR maintype = 'role' OR maintype = 'date' OR maintype = 'wpml')
 
 
 
 
300
  ORDER BY maintype, name";
301
  }
302
  $results = $this->wpdb->get_results($query);
2
  /**
3
  * dynwid_class.php - Dynamic Widgets Class (PHP5)
4
  *
5
+ * @version $Id: dynwid_class.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
  */
8
 
9
  class dynWid {
10
+ public $bp; // BuddyPress Plugin support
11
+ public $bp_groups; // BuddyPress Plugin support (groups)
12
  public $custom_post_type;
13
  private $dbtable;
14
  public $dwoptions;
23
  public $removelist;
24
  public $sidebars;
25
  public $plugin_url;
26
+ public $useragent;
27
  public $userrole;
28
  public $whereami;
29
  private $wpdb;
40
  $this->custom_post_type = FALSE;
41
  $this->firstmessage = TRUE;
42
  $this->listmade = FALSE;
43
+ $this->overrule_maintype = array('date', 'role', 'browser', 'wpml');
44
  $this->registered_sidebars = $GLOBALS['wp_registered_sidebars'];
45
  $this->registered_widget_controls = &$GLOBALS['wp_registered_widget_controls'];
46
  $this->registered_widgets = &$GLOBALS['wp_registered_widgets'];
47
  $this->removelist = array();
48
  $this->sidebars = wp_get_sidebars_widgets();
49
+ $this->useragent = $this->getBrowser();
50
  $this->plugin_url = WP_PLUGIN_URL . '/' . str_replace( basename(__FILE__), '', plugin_basename(__FILE__) );
51
 
52
  $this->dwoptions = array(
53
  'role' => __('Role'),
54
  'date' => __('Date'),
55
+ 'browser' => __('Browser', DW_L10N_DOMAIN),
56
  'wpml' => __('Language', DW_L10N_DOMAIN),
57
  'front-page' => __('Front Page', DW_L10N_DOMAIN),
58
  'single' => __('Single Posts', DW_L10N_DOMAIN),
59
+ 'attachment' => __('Attachments', DW_L10N_DOMAIN),
60
  'page' => __('Pages'),
61
  'author' => __('Author Pages', DW_L10N_DOMAIN),
62
  'category' => __('Category Pages', DW_L10N_DOMAIN),
90
  $this->enabled = TRUE;
91
  }
92
 
93
+ // BuddyPress Plugin support
94
+ $this->bp = FALSE;
95
+ $this->bp_groups = FALSE;
96
+
97
  // WPML Plugin support
98
  $this->wpml = FALSE;
99
 
189
  }
190
 
191
  public function detectPage() {
192
+ if ( is_front_page() && get_option('show_on_front') == 'posts' ) {
193
  return 'front-page';
194
  } else if ( is_home() && get_option('show_on_front') == 'page' ) {
195
  return 'home';
196
+ } else if ( is_attachment() ) {
197
+ return 'attachment'; // must be before is_single(), otherwise detects as 'single'
198
  } else if ( is_single() ) {
199
  return 'single';
200
  } else if ( is_page() ) {
203
  return 'author';
204
  } else if ( is_category() ) {
205
  return 'category';
206
+ } else if ( function_exists('is_post_type_archive') && is_post_type_archive() ) {
207
+ return 'cp_archive'; // must be before is_archive(), otherwise detects as 'archive' in WP 3.1.0
208
  } else if ( is_archive() && ! is_category() && ! is_author() ) {
209
  return 'archive';
210
  } else if ( is_404() ) {
263
  }
264
 
265
  $query = "SELECT DISTINCT widget_id FROM " . $this->dbtable . "
266
+ WHERE maintype LIKE '" . $whereami . "%'
267
+ OR maintype = 'role'
268
+ OR maintype = 'date'
269
+ OR maintype = 'browser'
270
+ OR maintype = 'wpml'";
271
  $results = $this->wpdb->get_results($query);
272
  foreach ( $results as $myrow ) {
273
  $this->dynwid_list[ ] = $myrow->widget_id;
274
  }
275
  }
276
 
277
+ private function getBrowser() {
278
+ global $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome;
279
+
280
+ if ( $is_gecko ) {
281
+ return 'gecko';
282
+ } else if ( $is_IE ) {
283
+ return 'msie';
284
+ } else if ( $is_opera ) {
285
+ return 'opera';
286
+ } else if ( $is_NS4 ) {
287
+ return 'ns';
288
+ } else if ( $is_safari ) {
289
+ return 'safari';
290
+ } else if ( $is_chrome ) {
291
+ return 'chrome';
292
+ } else {
293
+ return 'undef';
294
+ }
295
+ }
296
+
297
  public function getName($id, $type = 'W') {
298
  switch ( $type ) {
299
  case 'S':
335
  }
336
  $query = "SELECT widget_id, maintype, name, value FROM " . $this->dbtable . "
337
  WHERE widget_id LIKE '" . $widget_id . "'
338
+ AND (maintype LIKE '" . $maintype . "%'
339
+ OR maintype = 'role'
340
+ OR maintype = 'date'
341
+ OR maintype = 'browser'
342
+ OR maintype = 'wpml')
343
  ORDER BY maintype, name";
344
  }
345
  $results = $this->wpdb->get_results($query);
dynwid_class_php4.php CHANGED
@@ -3,10 +3,13 @@
3
  * dynwid_class_php4.php - Dynamic Widgets Class for PHP4
4
  * Needs at least PHP 4.1.0
5
  *
6
- * @version $Id: dynwid_class_php4.php 323926 2010-12-17 17:02:58Z qurl $
 
7
  */
8
 
9
  class dynWid {
 
 
10
  var $custom_post_type;
11
  var $dbtable; /* private */
12
  var $enabled;
@@ -21,6 +24,7 @@
21
  var $removelist;
22
  var $sidebars;
23
  var $plugin_url;
 
24
  var $userrole;
25
  var $whereami;
26
  var $wpdb; /* private */
@@ -42,20 +46,23 @@
42
  $this->custom_post_type = FALSE;
43
  $this->firstmessage = TRUE;
44
  $this->listmade = FALSE;
45
- $this->overrule_maintype = array('date', 'role', 'wpml');
46
  $this->registered_sidebars = $GLOBALS['wp_registered_sidebars'];
47
  $this->registered_widget_controls = &$GLOBALS['wp_registered_widget_controls'];
48
  $this->registered_widgets = &$GLOBALS['wp_registered_widgets'];
49
  $this->removelist = array();
50
  $this->sidebars = wp_get_sidebars_widgets();
 
51
  $this->plugin_url = WP_PLUGIN_URL . '/' . str_replace( basename(__FILE__), '', plugin_basename(__FILE__) );
52
 
53
  $this->dwoptions = array(
54
  'role' => __('Role'),
55
  'date' => __('Date'),
 
56
  'wpml' => __('Language', DW_L10N_DOMAIN),
57
  'front-page' => __('Front Page', DW_L10N_DOMAIN),
58
  'single' => __('Single Posts', DW_L10N_DOMAIN),
 
59
  'page' => __('Pages'),
60
  'author' => __('Author Pages', DW_L10N_DOMAIN),
61
  'category' => __('Category Pages', DW_L10N_DOMAIN),
@@ -89,6 +96,10 @@
89
  $this->enabled = TRUE;
90
  }
91
 
 
 
 
 
92
  // WPML Plugin support
93
  $this->wpml = FALSE;
94
 
@@ -185,10 +196,12 @@
185
  }
186
 
187
  function detectPage() {
188
- if ( is_front_page() && get_option('show_on_front') == 'posts' ) {
189
  return 'front-page';
190
  } else if ( is_home() && get_option('show_on_front') == 'page' ) {
191
  return 'home';
 
 
192
  } else if ( is_single() ) {
193
  return 'single';
194
  } else if ( is_page() ) {
@@ -197,6 +210,8 @@
197
  return 'author';
198
  } else if ( is_category() ) {
199
  return 'category';
 
 
200
  } else if ( is_archive() && ! is_category() && ! is_author() ) {
201
  return 'archive';
202
  } else if ( is_404() ) {
@@ -255,13 +270,38 @@
255
  }
256
 
257
  $query = "SELECT DISTINCT widget_id FROM " . $this->dbtable . "
258
- WHERE maintype LIKE '" . $whereami . "%' OR maintype = 'role' OR maintype = 'date' OR maintype = 'wpml'";
 
 
 
 
259
  $results = $this->wpdb->get_results($query);
260
  foreach ( $results as $myrow ) {
261
  $this->dynwid_list[ ] = $myrow->widget_id;
262
  }
263
  }
264
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
265
  function getName($id, $type = 'W') {
266
  switch ( $type ) {
267
  case 'S':
@@ -303,7 +343,11 @@
303
  }
304
  $query = "SELECT widget_id, maintype, name, value FROM " . $this->dbtable . "
305
  WHERE widget_id LIKE '" . $widget_id . "'
306
- AND (maintype LIKE '" . $maintype . "%' OR maintype = 'role' OR maintype = 'date' OR maintype = 'wpml')
 
 
 
 
307
  ORDER BY maintype, name";
308
  }
309
  $results = $this->wpdb->get_results($query);
3
  * dynwid_class_php4.php - Dynamic Widgets Class for PHP4
4
  * Needs at least PHP 4.1.0
5
  *
6
+ * @version $Id: dynwid_class_php4.php 348295 2011-02-20 20:13:21Z qurl $
7
+ * @copyright 2011 Jacco Drabbe
8
  */
9
 
10
  class dynWid {
11
+ var $bp; /* BuddyPress Plugin support */
12
+ var $bp_groups; /* BuddyPress Plugin support (groups) */
13
  var $custom_post_type;
14
  var $dbtable; /* private */
15
  var $enabled;
24
  var $removelist;
25
  var $sidebars;
26
  var $plugin_url;
27
+ var $useragent;
28
  var $userrole;
29
  var $whereami;
30
  var $wpdb; /* private */
46
  $this->custom_post_type = FALSE;
47
  $this->firstmessage = TRUE;
48
  $this->listmade = FALSE;
49
+ $this->overrule_maintype = array('date', 'role', 'browser', 'wpml');
50
  $this->registered_sidebars = $GLOBALS['wp_registered_sidebars'];
51
  $this->registered_widget_controls = &$GLOBALS['wp_registered_widget_controls'];
52
  $this->registered_widgets = &$GLOBALS['wp_registered_widgets'];
53
  $this->removelist = array();
54
  $this->sidebars = wp_get_sidebars_widgets();
55
+ $this->useragent = $this->getBrowser();
56
  $this->plugin_url = WP_PLUGIN_URL . '/' . str_replace( basename(__FILE__), '', plugin_basename(__FILE__) );
57
 
58
  $this->dwoptions = array(
59
  'role' => __('Role'),
60
  'date' => __('Date'),
61
+ 'browser' => __('Browser', DW_L10N_DOMAIN),
62
  'wpml' => __('Language', DW_L10N_DOMAIN),
63
  'front-page' => __('Front Page', DW_L10N_DOMAIN),
64
  'single' => __('Single Posts', DW_L10N_DOMAIN),
65
+ 'attachment' => __('Attachments', DW_L10N_DOMAIN),
66
  'page' => __('Pages'),
67
  'author' => __('Author Pages', DW_L10N_DOMAIN),
68
  'category' => __('Category Pages', DW_L10N_DOMAIN),
96
  $this->enabled = TRUE;
97
  }
98
 
99
+ // BuddyPress Plugin support
100
+ $this->bp = FALSE;
101
+ $this->bp_groups = FALSE;
102
+
103
  // WPML Plugin support
104
  $this->wpml = FALSE;
105
 
196
  }
197
 
198
  function detectPage() {
199
+ if ( is_front_page() && get_option('show_on_front') == 'posts' ) {
200
  return 'front-page';
201
  } else if ( is_home() && get_option('show_on_front') == 'page' ) {
202
  return 'home';
203
+ } else if ( is_attachment() ) {
204
+ return 'attachment'; // must be before is_single(), otherwise detects as 'single'
205
  } else if ( is_single() ) {
206
  return 'single';
207
  } else if ( is_page() ) {
210
  return 'author';
211
  } else if ( is_category() ) {
212
  return 'category';
213
+ } else if ( function_exists('is_post_type_archive') && is_post_type_archive() ) {
214
+ return 'cp_archive'; // must be before is_archive(), otherwise detects as 'archive' in WP 3.1.0
215
  } else if ( is_archive() && ! is_category() && ! is_author() ) {
216
  return 'archive';
217
  } else if ( is_404() ) {
270
  }
271
 
272
  $query = "SELECT DISTINCT widget_id FROM " . $this->dbtable . "
273
+ WHERE maintype LIKE '" . $whereami . "%'
274
+ OR maintype = 'role'
275
+ OR maintype = 'date'
276
+ OR maintype = 'browser'
277
+ OR maintype = 'wpml'";
278
  $results = $this->wpdb->get_results($query);
279
  foreach ( $results as $myrow ) {
280
  $this->dynwid_list[ ] = $myrow->widget_id;
281
  }
282
  }
283
 
284
+ /* private function */
285
+ function getBrowser() {
286
+ global $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome;
287
+
288
+ if ( $is_gecko ) {
289
+ return 'gecko';
290
+ } else if ( $is_IE ) {
291
+ return 'msie';
292
+ } else if ( $is_opera ) {
293
+ return 'opera';
294
+ } else if ( $is_NS4 ) {
295
+ return 'ns';
296
+ } else if ( $is_safari ) {
297
+ return 'safari';
298
+ } else if ( $is_chrome ) {
299
+ return 'chrome';
300
+ } else {
301
+ return 'undef';
302
+ }
303
+ }
304
+
305
  function getName($id, $type = 'W') {
306
  switch ( $type ) {
307
  case 'S':
343
  }
344
  $query = "SELECT widget_id, maintype, name, value FROM " . $this->dbtable . "
345
  WHERE widget_id LIKE '" . $widget_id . "'
346
+ AND (maintype LIKE '" . $maintype . "%'
347
+ OR maintype = 'role'
348
+ OR maintype = 'date'
349
+ OR maintype = 'browser'
350
+ OR maintype = 'wpml')
351
  ORDER BY maintype, name";
352
  }
353
  $results = $this->wpdb->get_results($query);
dynwid_init_worker.php CHANGED
@@ -3,12 +3,16 @@
3
  /**
4
  * dynwid_init_worker.php
5
  *
6
- * @version $Id: dynwid_init_worker.php 321062 2010-12-09 19:49:13Z qurl $
 
7
  */
8
 
9
  $DW->message('Dynamic Widgets INIT');
10
  echo "\n" . '<!-- Dynamic Widgets v' . DW_VERSION . ' //-->' . "\n";
11
 
 
 
 
12
  // WPML Plugin Support
13
  if ( defined('ICL_PLUGIN_PATH') ) {
14
  $wpml_api = ICL_PLUGIN_PATH . DW_WPML_API;
@@ -53,7 +57,7 @@
53
 
54
  if ( $DW->whereami == 'page' ) {
55
  // WPSC/WPEC Plugin Support
56
- if ( defined('WPSC_TABLE_PRODUCT_CATEGORIES') ) {
57
  $wpsc_query = &$GLOBALS['wpsc_query'];
58
 
59
  if ( $wpsc_query->category > 0 ) {
@@ -63,9 +67,36 @@
63
 
64
  require_once(DW_PLUGIN . 'wpsc.php');
65
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  }
67
  }
68
 
69
- $DW->dwList($DW->whereami);
 
 
 
 
 
 
 
 
70
 
 
 
 
 
 
 
71
  ?>
3
  /**
4
  * dynwid_init_worker.php
5
  *
6
+ * @version $Id: dynwid_init_worker.php 348295 2011-02-20 20:13:21Z qurl $
7
+ * @copyright 2011 Jacco Drabbe
8
  */
9
 
10
  $DW->message('Dynamic Widgets INIT');
11
  echo "\n" . '<!-- Dynamic Widgets v' . DW_VERSION . ' //-->' . "\n";
12
 
13
+ // UserAgent detection
14
+ $DW->message('UserAgent: ' . $DW->useragent);
15
+
16
  // WPML Plugin Support
17
  if ( defined('ICL_PLUGIN_PATH') ) {
18
  $wpml_api = ICL_PLUGIN_PATH . DW_WPML_API;
57
 
58
  if ( $DW->whereami == 'page' ) {
59
  // WPSC/WPEC Plugin Support
60
+ if ( defined('WPSC_VERSION') && version_compare(WPSC_VERSION, '3.8', '<') ) {
61
  $wpsc_query = &$GLOBALS['wpsc_query'];
62
 
63
  if ( $wpsc_query->category > 0 ) {
67
 
68
  require_once(DW_PLUGIN . 'wpsc.php');
69
  }
70
+ } else if ( defined('BP_VERSION') ) { // BuddyPress Plugin Support -- else if needed, otherwise WPEC pages are detected as BP
71
+ $bp = &$GLOBALS['bp'];
72
+ if (! empty($bp->current_component) ) {
73
+ if ( $bp->current_component == 'groups' && ! empty($bp->current_item) ) {
74
+ $DW->bp_groups = TRUE;
75
+ $DW->whereami = 'bp-group';
76
+ $DW->message('BP detected, component: ' . $bp->current_component . '; Group: ' . $bp->current_item . ', Page changed to bp-group');
77
+ } else {
78
+ $DW->bp = TRUE;
79
+ $DW->whereami = 'bp';
80
+ $DW->message('BP detected, component: ' . $bp->current_component . ', Page changed to bp');
81
+ }
82
+ }
83
  }
84
  }
85
 
86
+ if ( $DW->whereami == 'archive' ) {
87
+ // WPSC/WPEC Plugin Support
88
+ if ( defined('WPSC_VERSION') && version_compare(WPSC_VERSION, '3.8', '>=') ) {
89
+ $wpsc_query = &$GLOBALS['wpsc_query'];
90
+ if ( $wpsc_query->query_vars['taxonomy'] == 'wpsc_product_category' ) {
91
+ $DW->wpsc = TRUE;
92
+ $DW->whereami = 'wpsc';
93
+ $term = get_term_by('slug', $wpsc_query->query_vars['term'], 'wpsc_product_category');
94
+ $DW->message('WPSC detected, page changed to ' . $DW->whereami . ', category: ' . $term->term_id);
95
 
96
+ require_once(DW_PLUGIN . 'wpsc.php');
97
+ }
98
+ }
99
+ }
100
+
101
+ $DW->dwList($DW->whereami);
102
  ?>
dynwid_worker.php CHANGED
@@ -2,7 +2,8 @@
2
  /**
3
  * dynwid_worker.php - The worker does the actual work.
4
  *
5
- * @version $Id: dynwid_worker.php 326147 2010-12-26 09:25:03Z qurl $
 
6
  */
7
 
8
  $DW->message('Worker START');
@@ -30,6 +31,7 @@
30
  $display = TRUE;
31
  $role = TRUE;
32
  $date = TRUE;
 
33
  $wpml = TRUE;
34
 
35
  foreach ( $opt as $condition ) {
@@ -60,13 +62,12 @@
60
  } else if ( $condition['maintype'] == 'date' && $condition['name'] == 'default' ) {
61
  $DW->message('Default for ' . $widget_id . ' set to FALSE (rule DT1)');
62
  $date = FALSE;
 
 
 
63
  } else if ( $condition['maintype'] == 'wpml' && $condition['name'] == 'default' ) {
64
  $DW->message('Default for ' . $widget_id . ' set to ' . ( (bool) $condition['value'] ? 'TRUE' : 'FALSE' ) . ' (rule DML1)');
65
  $wpml = (bool) $condition['value'];
66
- } else { // Failsave
67
- $DW->message('Failsave: Default for ' . $widget_id . ' set to TRUE (rule D4)');
68
- $display = TRUE;
69
- $other = FALSE;
70
  }
71
  }
72
 
@@ -134,6 +135,20 @@
134
  $wpml = $wpml_tmp;
135
  }
136
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
 
138
  // For debug messages
139
  $e = ( $other ) ? 'TRUE' : 'FALSE';
@@ -347,8 +362,37 @@
347
  }
348
  break;
349
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
350
  case 'wpsc':
351
  if ( count($act) > 0 ) {
 
 
352
  if ( is_dw_wpsc_category($act) ) {
353
  $display = $other;
354
  $DW->message('Exception triggered for ' . $widget_id . ' sets display to ' . $e . ' (rule ESC1)');
@@ -356,11 +400,42 @@
356
  }
357
  break;
358
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
  } // END switch ( $DW->whereami )
360
  } // END if/else ( $DW->custom_post_type )
361
  } /* END if ( count($opt) > 0 ) */
362
 
363
- if (! $display || ! $role || ! $date || ! $wpml ) {
364
  $DW->message('Removed ' . $widget_id . ' from display, SID = ' . $sidebar_id . ' / WID = ' . $widget_id . ' / KID = ' . $widget_key);
365
  if ( DW_OLD_METHOD ) {
366
  unset($DW->registered_widgets[$widget_id]);
2
  /**
3
  * dynwid_worker.php - The worker does the actual work.
4
  *
5
+ * @version $Id: dynwid_worker.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
  */
8
 
9
  $DW->message('Worker START');
31
  $display = TRUE;
32
  $role = TRUE;
33
  $date = TRUE;
34
+ $browser = TRUE;
35
  $wpml = TRUE;
36
 
37
  foreach ( $opt as $condition ) {
62
  } else if ( $condition['maintype'] == 'date' && $condition['name'] == 'default' ) {
63
  $DW->message('Default for ' . $widget_id . ' set to FALSE (rule DT1)');
64
  $date = FALSE;
65
+ } else if ( $condition['maintype'] == 'browser' && $condition['name'] == 'default' ) {
66
+ $DW->message('Default for ' . $widget_id . ' set to ' . ( (bool) $condition['value'] ? 'TRUE' : 'FALSE' ) . ' (rule DB1)');
67
+ $browser = (bool) $condition['value'];
68
  } else if ( $condition['maintype'] == 'wpml' && $condition['name'] == 'default' ) {
69
  $DW->message('Default for ' . $widget_id . ' set to ' . ( (bool) $condition['value'] ? 'TRUE' : 'FALSE' ) . ' (rule DML1)');
70
  $wpml = (bool) $condition['value'];
 
 
 
 
71
  }
72
  }
73
 
135
  $wpml = $wpml_tmp;
136
  }
137
  }
138
+ unset($wpml_tmp);
139
+
140
+ // Browser
141
+ foreach ( $opt as $condition ) {
142
+ if ( $condition['maintype'] == 'browser' && $condition['name'] == $DW->useragent ) {
143
+ (bool) $browser_tmp = $condition['value'];
144
+ }
145
+ }
146
+
147
+ if ( isset($browser_tmp) && $browser_tmp != $browser ) {
148
+ $DW->message('Exception triggered for browser, sets display to ' . ( $wpml_tmp ? 'TRUE' : 'FALSE' ) . ' (rule EB1)');
149
+ $browser = $browser_tmp;
150
+ }
151
+ unset($browser_tmp);
152
 
153
  // For debug messages
154
  $e = ( $other ) ? 'TRUE' : 'FALSE';
362
  }
363
  break;
364
 
365
+ case 'cp_archive':
366
+ if ( count($act) > 0 ) {
367
+ /*
368
+ is_post_type_archive() is natively supported in WP 3.1
369
+ WP 3.0.x gets is_post_type_archive() via plugin
370
+ 'Custom Post Type Archive', but does not accept array
371
+ */
372
+ $is_cpa = FALSE;
373
+
374
+ if ( version_compare(substr($GLOBALS['wp_version'], 0, 3), '3.1', '>=') ) {
375
+ if ( is_post_type_archive($act) ) {
376
+ $is_cpa = TRUE;
377
+ }
378
+ } else {
379
+ $post_type = get_query_var('post_type');
380
+ if ( in_array($post_type, $act) ) {
381
+ $is_cpa = TRUE;
382
+ }
383
+ }
384
+
385
+ if ( $is_cpa ) {
386
+ $display = $other;
387
+ $DW->message('Exception triggered for ' . $widget_id . ' sets display to ' . $e . ' (rule ECPA1)');
388
+ }
389
+ }
390
+ break;
391
+
392
  case 'wpsc':
393
  if ( count($act) > 0 ) {
394
+ require_once(DW_PLUGIN . 'wpsc.php');
395
+
396
  if ( is_dw_wpsc_category($act) ) {
397
  $display = $other;
398
  $DW->message('Exception triggered for ' . $widget_id . ' sets display to ' . $e . ' (rule ESC1)');
400
  }
401
  break;
402
 
403
+ case 'bp':
404
+ // We have to split out the conditions as we don't want the bp-groups to interfere
405
+ $act = array();
406
+ foreach ( $opt as $condition ) {
407
+ if ( $condition['name'] != 'default' && $condition['maintype'] == 'bp' ) {
408
+ $act[ ] = $condition['name'];
409
+ }
410
+ }
411
+
412
+ if ( count($act) > 0 ) {
413
+ require_once(DW_PLUGIN . 'bp.php');
414
+
415
+ if ( is_dw_bp_component($act) ) {
416
+ $display = $other;
417
+ $DW->message('Exception triggered for ' . $widget_id . ' sets display to ' . $e . ' (rule EBP1)');
418
+ }
419
+ }
420
+ break;
421
+
422
+ case 'bp-group':
423
+ if ( count($act) > 0 ) {
424
+ require_once(DW_PLUGIN . 'bp.php');
425
+
426
+ if ( is_dw_bp_group($act) ) {
427
+ $display = $other;
428
+ $DW->message('Exception triggered for ' . $widget_id . ' sets display to ' . $e . ' (rule EBPG1)');
429
+ }
430
+ }
431
+ break;
432
+
433
+
434
  } // END switch ( $DW->whereami )
435
  } // END if/else ( $DW->custom_post_type )
436
  } /* END if ( count($opt) > 0 ) */
437
 
438
+ if (! $display || ! $role || ! $date || ! $browser || ! $wpml ) {
439
  $DW->message('Removed ' . $widget_id . ' from display, SID = ' . $sidebar_id . ' / WID = ' . $widget_id . ' / KID = ' . $widget_key);
440
  if ( DW_OLD_METHOD ) {
441
  unset($DW->registered_widgets[$widget_id]);
img/checkmark.gif ADDED
Binary file
jquery-ui-smoothness.css → jquery-ui-1.7.3.custom.css RENAMED
@@ -36,8 +36,6 @@
36
  /* Overlays */
37
  .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
38
 
39
-
40
-
41
  /*
42
  * jQuery UI CSS Framework
43
  * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
@@ -280,7 +278,15 @@
280
 
281
  /* Overlays */
282
  .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
283
- .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Datepicker
 
 
 
 
 
 
 
 
284
  ----------------------------------*/
285
  .ui-datepicker { width: 17em; padding: .2em .2em 0; }
286
  .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
36
  /* Overlays */
37
  .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
38
 
 
 
39
  /*
40
  * jQuery UI CSS Framework
41
  * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
278
 
279
  /* Overlays */
280
  .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
281
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; }/* Accordion
282
+ ----------------------------------*/
283
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
284
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
285
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
286
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; }
287
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
288
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; }
289
+ .ui-accordion .ui-accordion-content-active { display: block; }/* Datepicker
290
  ----------------------------------*/
291
  .ui-datepicker { width: 17em; padding: .2em .2em 0; }
292
  .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
jquery.ui.theme.smoothness.css → jquery-ui-1.8.7.custom.css RENAMED
@@ -1,7 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
 
2
 
3
  /*
4
- * jQuery UI CSS Framework 1.8.6
5
  *
6
  * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
7
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -251,4 +292,118 @@
251
 
252
  /* Overlays */
253
  .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
254
- .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI CSS Framework 1.8.7
3
+ *
4
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Theming/API
9
+ */
10
+
11
+ /* Layout helpers
12
+ ----------------------------------*/
13
+ .ui-helper-hidden { display: none; }
14
+ .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
15
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
17
+ .ui-helper-clearfix { display: inline-block; }
18
+ /* required comment for clearfix to work in Opera \*/
19
+ * html .ui-helper-clearfix { height:1%; }
20
+ .ui-helper-clearfix { display:block; }
21
+ /* end clearfix */
22
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
23
+
24
+
25
+ /* Interaction Cues
26
+ ----------------------------------*/
27
+ .ui-state-disabled { cursor: default !important; }
28
+
29
+
30
+ /* Icons
31
+ ----------------------------------*/
32
+
33
+ /* states and images */
34
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
35
+
36
+
37
+ /* Misc visuals
38
+ ----------------------------------*/
39
+
40
+ /* Overlays */
41
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
42
 
43
 
44
  /*
45
+ * jQuery UI CSS Framework 1.8.7
46
  *
47
  * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
48
  * Dual licensed under the MIT or GPL Version 2 licenses.
292
 
293
  /* Overlays */
294
  .ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
295
+ .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
296
+ * jQuery UI Resizable 1.8.7
297
+ *
298
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
299
+ * Dual licensed under the MIT or GPL Version 2 licenses.
300
+ * http://jquery.org/license
301
+ *
302
+ * http://docs.jquery.com/UI/Resizable#theming
303
+ */
304
+ .ui-resizable { position: relative;}
305
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
306
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
307
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
308
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
309
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
310
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
311
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
312
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
313
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
314
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
315
+ * jQuery UI Selectable 1.8.7
316
+ *
317
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
318
+ * Dual licensed under the MIT or GPL Version 2 licenses.
319
+ * http://jquery.org/license
320
+ *
321
+ * http://docs.jquery.com/UI/Selectable#theming
322
+ */
323
+ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
324
+ /*
325
+ * jQuery UI Accordion 1.8.7
326
+ *
327
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
328
+ * Dual licensed under the MIT or GPL Version 2 licenses.
329
+ * http://jquery.org/license
330
+ *
331
+ * http://docs.jquery.com/UI/Accordion#theming
332
+ */
333
+ /* IE/Win - Fix animation bug - #4615 */
334
+ .ui-accordion { width: 100%; }
335
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
336
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
337
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
338
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
339
+ .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
340
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
341
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
342
+ .ui-accordion .ui-accordion-content-active { display: block; }/*
343
+ * jQuery UI Datepicker 1.8.7
344
+ *
345
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
346
+ * Dual licensed under the MIT or GPL Version 2 licenses.
347
+ * http://jquery.org/license
348
+ *
349
+ * http://docs.jquery.com/UI/Datepicker#theming
350
+ */
351
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
352
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
353
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
354
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
355
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
356
+ .ui-datepicker .ui-datepicker-next { right:2px; }
357
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
358
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
359
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
360
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
361
+ .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
362
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
363
+ .ui-datepicker select.ui-datepicker-month,
364
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
365
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
366
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
367
+ .ui-datepicker td { border: 0; padding: 1px; }
368
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
369
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
370
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
371
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
372
+
373
+ /* with multiple calendars */
374
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
375
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
376
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
377
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
378
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
379
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
380
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
381
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
382
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
383
+ .ui-datepicker-row-break { clear:both; width:100%; }
384
+
385
+ /* RTL support */
386
+ .ui-datepicker-rtl { direction: rtl; }
387
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
388
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
389
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
390
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
391
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
392
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
393
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
394
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
395
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
396
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
397
+
398
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
399
+ .ui-datepicker-cover {
400
+ display: none; /*sorry for IE5*/
401
+ display/**/: block; /*sorry for IE5*/
402
+ position: absolute; /*must have*/
403
+ z-index: -1; /*must have*/
404
+ filter: mask(); /*must have*/
405
+ top: -4px; /*must have*/
406
+ left: -4px; /*must have*/
407
+ width: 200px; /*must have*/
408
+ height: 200px; /*must have*/
409
+ }
jquery.ui.accordion.css DELETED
@@ -1,19 +0,0 @@
1
- /*
2
- * jQuery UI Accordion 1.8.6
3
- *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
- * Dual licensed under the MIT or GPL Version 2 licenses.
6
- * http://jquery.org/license
7
- *
8
- * http://docs.jquery.com/UI/Accordion#theming
9
- */
10
- /* IE/Win - Fix animation bug - #4615 */
11
- .ui-accordion { width: 100%; }
12
- .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
13
- .ui-accordion .ui-accordion-li-fix { display: inline; }
14
- .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
15
- .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
16
- .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
17
- .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
18
- .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
19
- .ui-accordion .ui-accordion-content-active { display: block; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
jquery.ui.accordion.min.js DELETED
@@ -1,12 +0,0 @@
1
- /*
2
- * jQuery UI Accordion 1.7.3
3
- *
4
- * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
5
- * Dual licensed under the MIT (MIT-LICENSE.txt)
6
- * and GPL (GPL-LICENSE.txt) licenses.
7
- *
8
- * http://docs.jquery.com/UI/Accordion
9
- *
10
- * Depends:
11
- * ui.core.js
12
- */(function(a){a.widget("ui.accordion",{_init:function(){var d=this.options,b=this;this.running=0;if(d.collapsible==a.ui.accordion.defaults.collapsible&&d.alwaysOpen!=a.ui.accordion.defaults.alwaysOpen){d.collapsible=!d.alwaysOpen}if(d.navigation){var c=this.element.find("a").filter(d.navigationFilter);if(c.length){if(c.filter(d.header).length){this.active=c}else{this.active=c.parent().parent().prev();c.addClass("ui-accordion-content-active")}}}this.element.addClass("ui-accordion ui-widget ui-helper-reset");if(this.element[0].nodeName=="UL"){this.element.children("li").addClass("ui-accordion-li-fix")}this.headers=this.element.find(d.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){a(this).removeClass("ui-state-focus")});this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");this.active=this._findActive(this.active||d.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");this.active.next().addClass("ui-accordion-content-active");a("<span/>").addClass("ui-icon "+d.icons.header).prependTo(this.headers);this.active.find(".ui-icon").toggleClass(d.icons.header).toggleClass(d.icons.headerSelected);if(a.browser.msie){this.element.find("a").css("zoom","1")}this.resize();this.element.attr("role","tablist");this.headers.attr("role","tab").bind("keydown",function(e){return b._keydown(e)}).next().attr("role","tabpanel");this.headers.not(this.active||"").attr("aria-expanded","false").attr("tabIndex","-1").next().hide();if(!this.active.length){this.headers.eq(0).attr("tabIndex","0")}else{this.active.attr("aria-expanded","true").attr("tabIndex","0")}if(!a.browser.safari){this.headers.find("a").attr("tabIndex","-1")}if(d.event){this.headers.bind((d.event)+".accordion",function(e){return b._clickHandler.call(b,e,this)})}},destroy:function(){var c=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind(".accordion").removeData("accordion");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");this.headers.find("a").removeAttr("tabindex");this.headers.children(".ui-icon").remove();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");if(c.autoHeight||c.fillHeight){b.css("height","")}},_setData:function(b,c){if(b=="alwaysOpen"){b="collapsible";c=!c}a.widget.prototype._setData.apply(this,arguments)},_keydown:function(e){var g=this.options,f=a.ui.keyCode;if(g.disabled||e.altKey||e.ctrlKey){return}var d=this.headers.length;var b=this.headers.index(e.target);var c=false;switch(e.keyCode){case f.RIGHT:case f.DOWN:c=this.headers[(b+1)%d];break;case f.LEFT:case f.UP:c=this.headers[(b-1+d)%d];break;case f.SPACE:case f.ENTER:return this._clickHandler({target:e.target},e.target)}if(c){a(e.target).attr("tabIndex","-1");a(c).attr("tabIndex","0");c.focus();return false}return true},resize:function(){var e=this.options,d;if(e.fillSpace){if(a.browser.msie){var b=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}d=this.element.parent().height();if(a.browser.msie){this.element.parent().css("overflow",b)}this.headers.each(function(){d-=a(this).outerHeight()});var c=0;this.headers.next().each(function(){c=Math.max(c,a(this).innerHeight()-a(this).height())}).height(Math.max(0,d-c)).css("overflow","auto")}else{if(e.autoHeight){d=0;this.headers.next().each(function(){d=Math.max(d,a(this).outerHeight())}).height(d)}}},activate:function(b){var c=this._findActive(b)[0];this._clickHandler({target:c},c)},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===false?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,f){var d=this.options;if(d.disabled){return false}if(!b.target&&d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var h=this.active.next(),e={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:h},c=(this.active=a([]));this._toggle(c,h,e);return false}var g=a(b.currentTarget||f);var i=g[0]==this.active[0];if(this.running||(!d.collapsible&&i)){return false}this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");if(!i){g.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").find(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);g.next().addClass("ui-accordion-content-active")}var c=g.next(),h=this.active.next(),e={options:d,newHeader:i&&d.collapsible?a([]):g,oldHeader:this.active,newContent:i&&d.collapsible?a([]):c.find("> *"),oldContent:h.find("> *")},j=this.headers.index(this.active[0])>this.headers.index(g[0]);this.active=i?a([]):g;this._toggle(c,h,e,i,j);return false},_toggle:function(b,i,g,j,k){var d=this.options,m=this;this.toShow=b;this.toHide=i;this.data=g;var c=function(){if(!m){return}return m._completed.apply(m,arguments)};this._trigger("changestart",null,this.data);this.running=i.size()===0?b.size():i.size();if(d.animated){var f={};if(d.collapsible&&j){f={toShow:a([]),toHide:i,complete:c,down:k,autoHeight:d.autoHeight||d.fillSpace}}else{f={toShow:b,toHide:i,complete:c,down:k,autoHeight:d.autoHeight||d.fillSpace}}if(!d.proxied){d.proxied=d.animated}if(!d.proxiedDuration){d.proxiedDuration=d.duration}d.animated=a.isFunction(d.proxied)?d.proxied(f):d.proxied;d.duration=a.isFunction(d.proxiedDuration)?d.proxiedDuration(f):d.proxiedDuration;var l=a.ui.accordion.animations,e=d.duration,h=d.animated;if(!l[h]){l[h]=function(n){this.slide(n,{easing:h,duration:e||700})}}l[h](f)}else{if(d.collapsible&&j){b.toggle()}else{i.hide();b.show()}c(true)}i.prev().attr("aria-expanded","false").attr("tabIndex","-1").blur();b.prev().attr("aria-expanded","true").attr("tabIndex","0").focus()},_completed:function(b){var c=this.options;this.running=b?0:--this.running;if(this.running){return}if(c.clearStyle){this.toShow.add(this.toHide).css({height:"",overflow:""})}this._trigger("change",null,this.data)}});a.extend(a.ui.accordion,{version:"1.7.3",defaults:{active:null,alwaysOpen:true,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()==location.href.toLowerCase()}},animations:{slide:function(j,h){j=a.extend({easing:"swing",duration:300},j,h);if(!j.toHide.size()){j.toShow.animate({height:"show"},j);return}if(!j.toShow.size()){j.toHide.animate({height:"hide"},j);return}var c=j.toShow.css("overflow"),g,d={},f={},e=["height","paddingTop","paddingBottom"],b;var i=j.toShow;b=i[0].style.width;i.width(parseInt(i.parent().width(),10)-parseInt(i.css("paddingLeft"),10)-parseInt(i.css("paddingRight"),10)-(parseInt(i.css("borderLeftWidth"),10)||0)-(parseInt(i.css("borderRightWidth"),10)||0));a.each(e,function(k,m){f[m]="hide";var l=(""+a.css(j.toShow[0],m)).match(/^([\d+-.]+)(.*)$/);d[m]={value:l[1],unit:l[2]||"px"}});j.toShow.css({height:0,overflow:"hidden"}).show();j.toHide.filter(":hidden").each(j.complete).end().filter(":visible").animate(f,{step:function(k,l){if(l.prop=="height"){g=(l.now-l.start)/(l.end-l.start)}j.toShow[0].style[l.prop]=(g*d[l.prop].value)+d[l.prop].unit},duration:j.duration,easing:j.easing,complete:function(){if(!j.autoHeight){j.toShow.css("height","")}j.toShow.css("width",b);j.toShow.css({overflow:c});j.complete()}})},bounceslide:function(b){this.slide(b,{easing:b.down?"easeOutBounce":"swing",duration:b.down?1000:200})},easeslide:function(b){this.slide(b,{easing:"easeinout",duration:700})}}})})(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
jquery.ui.core.css DELETED
@@ -1,41 +0,0 @@
1
- /*
2
- * jQuery UI CSS Framework 1.8.6
3
- *
4
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
- * Dual licensed under the MIT or GPL Version 2 licenses.
6
- * http://jquery.org/license
7
- *
8
- * http://docs.jquery.com/UI/Theming/API
9
- */
10
-
11
- /* Layout helpers
12
- ----------------------------------*/
13
- .ui-helper-hidden { display: none; }
14
- .ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
15
- .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16
- .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
17
- .ui-helper-clearfix { display: inline-block; }
18
- /* required comment for clearfix to work in Opera \*/
19
- * html .ui-helper-clearfix { height:1%; }
20
- .ui-helper-clearfix { display:block; }
21
- /* end clearfix */
22
- .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
23
-
24
-
25
- /* Interaction Cues
26
- ----------------------------------*/
27
- .ui-state-disabled { cursor: default !important; }
28
-
29
-
30
- /* Icons
31
- ----------------------------------*/
32
-
33
- /* states and images */
34
- .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
35
-
36
-
37
- /* Misc visuals
38
- ----------------------------------*/
39
-
40
- /* Overlays */
41
- .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
jquery.ui.datepicker.css DELETED
@@ -1,61 +0,0 @@
1
- /* Datepicker----------------------------------*/
2
- .ui-datepicker { width: 17em; padding: .2em .2em 0; }
3
- .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
4
- .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
5
- .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
6
- .ui-datepicker .ui-datepicker-prev { left:2px; }
7
- .ui-datepicker .ui-datepicker-next { right:2px; }
8
- .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
9
- .ui-datepicker .ui-datepicker-next-hover { right:1px; }
10
- .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
11
- .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
12
- .ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; }
13
- .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
14
- .ui-datepicker select.ui-datepicker-month,
15
- .ui-datepicker select.ui-datepicker-year { width: 49%;}
16
- .ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; }
17
- .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
18
- .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
19
- .ui-datepicker td { border: 0; padding: 1px; }
20
- .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
21
- .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
22
- .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
23
- .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
24
-
25
- /* with multiple calendars */
26
- .ui-datepicker.ui-datepicker-multi { width:auto; }
27
- .ui-datepicker-multi .ui-datepicker-group { float:left; }
28
- .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
29
- .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
30
- .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
31
- .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
32
- .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
33
- .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
34
- .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
35
- .ui-datepicker-row-break { clear:both; width:100%; }
36
-
37
- /* RTL support */
38
- .ui-datepicker-rtl { direction: rtl; }
39
- .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
40
- .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
41
- .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
42
- .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
43
- .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
44
- .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
45
- .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
46
- .ui-datepicker-rtl .ui-datepicker-group { float:right; }
47
- .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
48
- .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
49
-
50
- /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
51
- .ui-datepicker-cover {
52
- display: none; /*sorry for IE5*/
53
- display/**/: block; /*sorry for IE5*/
54
- position: absolute; /*must have*/
55
- z-index: -1; /*must have*/
56
- filter: mask(); /*must have*/
57
- top: -4px; /*must have*/
58
- left: -4px; /*must have*/
59
- width: 200px; /*must have*/
60
- height: 200px; /*must have*/
61
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
jquery_datepicker.js DELETED
@@ -1,12 +0,0 @@
1
- /* jQuery UI Datepicker 1.7.2
2
- *
3
- * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
4
- * Dual licensed under the MIT (MIT-LICENSE.txt)
5
- * and GPL (GPL-LICENSE.txt) licenses.
6
- *
7
- * http://docs.jquery.com/UI/Datepicker
8
- *
9
- * Depends:
10
- * ui.core.js
11
- */
12
- (function($){$.extend($.ui,{datepicker:{version:"1.7.2"}});var PROP_NAME="datepicker";function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],dateFormat:"mm/dd/yy",firstDay:0,isRTL:false};this._defaults={showOn:"focus",showAnim:"show",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,showMonthAfterYear:false,yearRange:"-10:+10",showOtherMonths:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"normal",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false};$.extend(this._defaults,this.regional[""]);this.dpDiv=$('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",log:function(){if(this.debug){console.log.apply("",arguments)}},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=(nodeName=="div"||nodeName=="span");if(!target.id){target.id="dp"+(++this.uuid)}var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectDatepicker(target,inst)}else{if(inline){this._inlineDatepicker(target,inst)}}},_newInst:function(target,inline){var id=target[0].id.replace(/([:\[\]\.])/g,"\\\\$1");return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(target,inst){var input=$(target);inst.append=$([]);inst.trigger=$([]);if(input.hasClass(this.markerClassName)){return}var appendText=this._get(inst,"appendText");var isRTL=this._get(inst,"isRTL");if(appendText){inst.append=$('<span class="'+this._appendClass+'">'+appendText+"</span>");input[isRTL?"before":"after"](inst.append)}var showOn=this._get(inst,"showOn");if(showOn=="focus"||showOn=="both"){input.focus(this._showDatepicker)}if(showOn=="button"||showOn=="both"){var buttonText=this._get(inst,"buttonText");var buttonImage=this._get(inst,"buttonImage");inst.trigger=$(this._get(inst,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage==""?buttonText:$("<img/>").attr({src:buttonImage,alt:buttonText,title:buttonText})));input[isRTL?"before":"after"](inst.trigger);inst.trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target){$.datepicker._hideDatepicker()}else{$.datepicker._showDatepicker(target)}return false})}input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst)},_inlineDatepicker:function(target,inst){var divSpan=$(target);if(divSpan.hasClass(this.markerClassName)){return}divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst);this._setDate(inst,this._getDefaultDate(inst));this._updateDatepicker(inst);this._updateAlternate(inst)},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){var id="dp"+(++this.uuid);this._dialogInput=$('<input type="text" id="'+id+'" size="1" style="position: absolute; top: -100px;"/>');this._dialogInput.keydown(this._doKeyDown);$("body").append(this._dialogInput);inst=this._dialogInst=this._newInst(this._dialogInput,false);inst.settings={};$.data(this._dialogInput[0],PROP_NAME,inst)}extendRemove(inst.settings,settings||{});this._dialogInput.val(dateText);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY]}this._dialogInput.css("left",this._pos[0]+"px").css("top",this._pos[1]+"px");inst.settings.onSelect=onSelect;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);if($.blockUI){$.blockUI(this.dpDiv)}$.data(this._dialogInput[0],PROP_NAME,inst);return this},_destroyDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();$.removeData(target,PROP_NAME);if(nodeName=="input"){inst.append.remove();inst.trigger.remove();$target.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress)}else{if(nodeName=="div"||nodeName=="span"){$target.removeClass(this.markerClassName).empty()}}},_enableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=false;inst.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().removeClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)})},_disableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=true;inst.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().addClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)});this._disabledInputs[this._disabledInputs.length]=target},_isDisabledDatepicker:function(target){if(!target){return false}for(var i=0;i<this._disabledInputs.length;i++){if(this._disabledInputs[i]==target){return true}}return false},_getInst:function(target){try{return $.data(target,PROP_NAME)}catch(err){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(target,name,value){var inst=this._getInst(target);if(arguments.length==2&&typeof name=="string"){return(name=="defaults"?$.extend({},$.datepicker._defaults):(inst?(name=="all"?$.extend({},inst.settings):this._get(inst,name)):null))}var settings=name||{};if(typeof name=="string"){settings={};settings[name]=value}if(inst){if(this._curInst==inst){this._hideDatepicker(null)}var date=this._getDateDatepicker(target);extendRemove(inst.settings,settings);this._setDateDatepicker(target,date);this._updateDatepicker(inst)}},_changeDatepicker:function(target,name,value){this._optionDatepicker(target,name,value)},_refreshDatepicker:function(target){var inst=this._getInst(target);if(inst){this._updateDatepicker(inst)}},_setDateDatepicker:function(target,date,endDate){var inst=this._getInst(target);if(inst){this._setDate(inst,date,endDate);this._updateDatepicker(inst);this._updateAlternate(inst)}},_getDateDatepicker:function(target){var inst=this._getInst(target);if(inst&&!inst.inline){this._setDateFromField(inst)}return(inst?this._getDate(inst):null)},_doKeyDown:function(event){var inst=$.datepicker._getInst(event.target);var handled=true;var isRTL=inst.dpDiv.is(".ui-datepicker-rtl");inst._keyEvent=true;if($.datepicker._datepickerShowing){switch(event.keyCode){case 9:$.datepicker._hideDatepicker(null,"");break;case 13:var sel=$("td."+$.datepicker._dayOverClass+", td."+$.datepicker._currentClass,inst.dpDiv);if(sel[0]){$.datepicker._selectDay(event.target,inst.selectedMonth,inst.selectedYear,sel[0])}else{$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"))}return false;break;case 27:$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"));break;case 33:$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M");break;case 34:$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M");break;case 35:if(event.ctrlKey||event.metaKey){$.datepicker._clearDate(event.target)}handled=event.ctrlKey||event.metaKey;break;case 36:if(event.ctrlKey||event.metaKey){$.datepicker._gotoToday(event.target)}handled=event.ctrlKey||event.metaKey;break;case 37:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?+1:-1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M")}break;case 38:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,-7,"D")}handled=event.ctrlKey||event.metaKey;break;case 39:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?-1:+1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M")}break;case 40:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,+7,"D")}handled=event.ctrlKey||event.metaKey;break;default:handled=false}}else{if(event.keyCode==36&&event.ctrlKey){$.datepicker._showDatepicker(this)}else{handled=false}}if(handled){event.preventDefault();event.stopPropagation()}},_doKeyPress:function(event){var inst=$.datepicker._getInst(event.target);if($.datepicker._get(inst,"constrainInput")){var chars=$.datepicker._possibleChars($.datepicker._get(inst,"dateFormat"));var chr=String.fromCharCode(event.charCode==undefined?event.keyCode:event.charCode);return event.ctrlKey||(chr<" "||!chars||chars.indexOf(chr)>-1)}},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!="input"){input=$("input",input.parentNode)[0]}if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input){return}var inst=$.datepicker._getInst(input);var beforeShow=$.datepicker._get(inst,"beforeShow");extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));$.datepicker._hideDatepicker(null,"");$.datepicker._lastInput=input;$.datepicker._setDateFromField(inst);if($.datepicker._inDialog){input.value=""}if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css("position")=="fixed";return !isFixed});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop}var offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null;inst.rangeStart=null;inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.datepicker._updateDatepicker(inst);offset=$.datepicker._checkOffset(inst,offset,isFixed);inst.dpDiv.css({position:($.datepicker._inDialog&&$.blockUI?"static":(isFixed?"fixed":"absolute")),display:"none",left:offset.left+"px",top:offset.top+"px"});if(!inst.inline){var showAnim=$.datepicker._get(inst,"showAnim")||"show";var duration=$.datepicker._get(inst,"duration");var postProcess=function(){$.datepicker._datepickerShowing=true;if($.browser.msie&&parseInt($.browser.version,10)<7){$("iframe.ui-datepicker-cover").css({width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4})}};if($.effects&&$.effects[showAnim]){inst.dpDiv.show(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[showAnim](duration,postProcess)}if(duration==""){postProcess()}if(inst.input[0].type!="hidden"){inst.input[0].focus()}$.datepicker._curInst=inst}},_updateDatepicker:function(inst){var dims={width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4};var self=this;inst.dpDiv.empty().append(this._generateHTML(inst)).find("iframe.ui-datepicker-cover").css({width:dims.width,height:dims.height}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).removeClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).removeClass("ui-datepicker-next-hover")}}).bind("mouseover",function(){if(!self._isDisabledDatepicker(inst.inline?inst.dpDiv.parent()[0]:inst.input[0])){$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).addClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).addClass("ui-datepicker-next-hover")}}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();var numMonths=this._getNumberOfMonths(inst);var cols=numMonths[1];var width=17;if(cols>1){inst.dpDiv.addClass("ui-datepicker-multi-"+cols).css("width",(width*cols)+"em")}else{inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("")}inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");inst.dpDiv[(this._get(inst,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");if(inst.input&&inst.input[0].type!="hidden"&&inst==$.datepicker._curInst){$(inst.input[0]).focus()}},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+$(document).scrollLeft();var viewHeight=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+$(document).scrollTop();offset.left-=(this._get(inst,"isRTL")?(dpWidth-inputWidth):0);offset.left-=(isFixed&&offset.left==inst.input.offset().left)?$(document).scrollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))?$(document).scrollTop():0;offset.left-=(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.abs(offset.left+dpWidth-viewWidth):0;offset.top-=(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.abs(offset.top+dpHeight+inputHeight*2-viewHeight):0;return offset},_findPos:function(obj){while(obj&&(obj.type=="hidden"||obj.nodeType!=1)){obj=obj.nextSibling}var position=$(obj).offset();return[position.left,position.top]},_hideDatepicker:function(input,duration){var inst=this._curInst;if(!inst||(input&&inst!=$.data(input,PROP_NAME))){return}if(inst.stayOpen){this._selectDate("#"+inst.id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear))}inst.stayOpen=false;if(this._datepickerShowing){duration=(duration!=null?duration:this._get(inst,"duration"));var showAnim=this._get(inst,"showAnim");var postProcess=function(){$.datepicker._tidyDialog(inst)};if(duration!=""&&$.effects&&$.effects[showAnim]){inst.dpDiv.hide(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[(duration==""?"hide":(showAnim=="slideDown"?"slideUp":(showAnim=="fadeIn"?"fadeOut":"hide")))](duration,postProcess)}if(duration==""){this._tidyDialog(inst)}var onClose=this._get(inst,"onClose");if(onClose){onClose.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():""),inst])}this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.dpDiv)}}this._inDialog=false}this._curInst=null},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(event){if(!$.datepicker._curInst){return}var $target=$(event.target);if(($target.parents("#"+$.datepicker._mainDivId).length==0)&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)){$.datepicker._hideDatepicker(null,"")}},_adjustDate:function(id,offset,period){var target=$(id);var inst=this._getInst(target[0]);if(this._isDisabledDatepicker(target[0])){return}this._adjustInstDate(inst,offset+(period=="M"?this._get(inst,"showCurrentAtPos"):0),period);this._updateDatepicker(inst)},_gotoToday:function(id){var target=$(id);var inst=this._getInst(target[0]);if(this._get(inst,"gotoCurrent")&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear}else{var date=new Date();inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear()}this._notifyChange(inst);this._adjustDate(target)},_selectMonthYear:function(id,select,period){var target=$(id);var inst=this._getInst(target[0]);inst._selectingMonthYear=false;inst["selected"+(period=="M"?"Month":"Year")]=inst["draw"+(period=="M"?"Month":"Year")]=parseInt(select.options[select.selectedIndex].value,10);this._notifyChange(inst);this._adjustDate(target)},_clickMonthYear:function(id){var target=$(id);var inst=this._getInst(target[0]);if(inst.input&&inst._selectingMonthYear&&!$.browser.msie){inst.input[0].focus()}inst._selectingMonthYear=!inst._selectingMonthYear},_selectDay:function(id,month,year,td){var target=$(id);if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])){return}var inst=this._getInst(target[0]);inst.selectedDay=inst.currentDay=$("a",td).html();inst.selectedMonth=inst.currentMonth=month;inst.selectedYear=inst.currentYear=year;if(inst.stayOpen){inst.endDay=inst.endMonth=inst.endYear=null}this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));if(inst.stayOpen){inst.rangeStart=this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));this._updateDatepicker(inst)}},_clearDate:function(id){var target=$(id);var inst=this._getInst(target[0]);inst.stayOpen=false;inst.endDay=inst.endMonth=inst.endYear=inst.rangeStart=null;this._selectDate(target,"")},_selectDate:function(id,dateStr){var target=$(id);var inst=this._getInst(target[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input){inst.input.val(dateStr)}this._updateAlternate(inst);var onSelect=this._get(inst,"onSelect");if(onSelect){onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst])}else{if(inst.input){inst.input.trigger("change")}}if(inst.inline){this._updateDatepicker(inst)}else{if(!inst.stayOpen){this._hideDatepicker(null,this._get(inst,"duration"));this._lastInput=inst.input[0];if(typeof(inst.input[0])!="object"){inst.input[0].focus()}this._lastInput=null}}},_updateAlternate:function(inst){var altField=this._get(inst,"altField");if(altField){var altFormat=this._get(inst,"altFormat")||this._get(inst,"dateFormat");var date=this._getDate(inst);dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr)})}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),""]},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDate<firstMon){checkDate.setDate(checkDate.getDate()-3);return $.datepicker.iso8601Week(checkDate)}else{if(checkDate>new Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)<firstDay-3){return 1}}}return Math.floor(((checkDate-firstMon)/86400000)/7)+1},parseDate:function(format,value,settings){if(format==null||value==null){throw"Invalid arguments"}value=(typeof value=="object"?value.toString():value+"");if(value==""){return null}var shortYearCutoff=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff;var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var year=-1;var month=-1;var day=-1;var doy=-1;var literal=false;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var getNumber=function(match){lookAhead(match);var origSize=(match=="@"?14:(match=="y"?4:(match=="o"?3:2)));var size=origSize;var num=0;while(size>0&&iValue<value.length&&value.charAt(iValue)>="0"&&value.charAt(iValue)<="9"){num=num*10+parseInt(value.charAt(iValue++),10);size--}if(size==origSize){throw"Missing number at position "+iValue}return num};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);var size=0;for(var j=0;j<names.length;j++){size=Math.max(size,names[j].length)}var name="";var iInit=iValue;while(size>0&&iValue<value.length){name+=value.charAt(iValue++);for(var i=0;i<names.length;i++){if(name==names[i]){return i+1}}size--}throw"Unknown name at position "+iInit};var checkLiteral=function(){if(value.charAt(iValue)!=format.charAt(iFormat)){throw"Unexpected literal at position "+iValue}iValue++};var iValue=0;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{checkLiteral()}}else{switch(format.charAt(iFormat)){case"d":day=getNumber("d");break;case"D":getName("D",dayNamesShort,dayNames);break;case"o":doy=getNumber("o");break;case"m":month=getNumber("m");break;case"M":month=getName("M",monthNamesShort,monthNames);break;case"y":year=getNumber("y");break;case"@":var date=new Date(getNumber("@"));year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();break;case"'":if(lookAhead("'")){checkLiteral()}else{literal=true}break;default:checkLiteral()}}}if(year==-1){year=new Date().getFullYear()}else{if(year<100){year+=new Date().getFullYear()-new Date().getFullYear()%100+(year<=shortYearCutoff?0:-100)}}if(doy>-1){month=1;day=doy;do{var dim=this._getDaysInMonth(year,month-1);if(day<=dim){break}month++;day-=dim}while(true)}var date=this._daylightSavingAdjust(new Date(year,month-1,day));if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day){throw"Invalid date"}return date},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TIMESTAMP:"@",W3C:"yy-mm-dd",formatDate:function(format,date,settings){if(!date){return""}var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var formatNumber=function(match,value,len){var num=""+value;if(lookAhead(match)){while(num.length<len){num="0"+num}}return num};var formatName=function(match,value,shortNames,longNames){return(lookAhead(match)?longNames[value]:shortNames[value])};var output="";var literal=false;if(date){for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{output+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":output+=formatNumber("d",date.getDate(),2);break;case"D":output+=formatName("D",date.getDay(),dayNamesShort,dayNames);break;case"o":var doy=date.getDate();for(var m=date.getMonth()-1;m>=0;m--){doy+=this._getDaysInMonth(date.getFullYear(),m)}output+=formatNumber("o",doy,3);break;case"m":output+=formatNumber("m",date.getMonth()+1,2);break;case"M":output+=formatName("M",date.getMonth(),monthNamesShort,monthNames);break;case"y":output+=(lookAhead("y")?date.getFullYear():(date.getYear()%100<10?"0":"")+date.getYear()%100);break;case"@":output+=date.getTime();break;case"'":if(lookAhead("'")){output+="'"}else{literal=true}break;default:output+=format.charAt(iFormat)}}}}return output},_possibleChars:function(format){var chars="";var literal=false;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{chars+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":case"m":case"y":case"@":chars+="0123456789";break;case"D":case"M":return null;case"'":if(lookAhead("'")){chars+="'"}else{literal=true}break;default:chars+=format.charAt(iFormat)}}}return chars},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name]},_setDateFromField:function(inst){var dateFormat=this._get(inst,"dateFormat");var dates=inst.input?inst.input.val():null;inst.endDay=inst.endMonth=inst.endYear=null;var date=defaultDate=this._getDefaultDate(inst);var settings=this._getFormatConfig(inst);try{date=this.parseDate(dateFormat,dates,settings)||defaultDate}catch(event){this.log(event);date=defaultDate}inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();inst.currentDay=(dates?date.getDate():0);inst.currentMonth=(dates?date.getMonth():0);inst.currentYear=(dates?date.getFullYear():0);this._adjustInstDate(inst)},_getDefaultDate:function(inst){var date=this._determineDate(this._get(inst,"defaultDate"),new Date());var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);return date},_determineDate:function(date,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date};var offsetString=function(offset,getDaysInMonth){var date=new Date();var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||"d"){case"d":case"D":day+=parseInt(matches[1],10);break;case"w":case"W":day+=parseInt(matches[1],10)*7;break;case"m":case"M":month+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break;case"y":case"Y":year+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break}matches=pattern.exec(offset)}return new Date(year,month,day)};date=(date==null?defaultDate:(typeof date=="string"?offsetString(date,this._getDaysInMonth):(typeof date=="number"?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));date=(date&&date.toString()=="Invalid Date"?defaultDate:date);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0)}return this._daylightSavingAdjust(date)},_daylightSavingAdjust:function(date){if(!date){return null}date.setHours(date.getHours()>12?date.getHours()+2:0);return date},_setDate:function(inst,date,endDate){var clear=!(date);var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;date=this._determineDate(date,new Date());inst.selectedDay=inst.currentDay=date.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();if(origMonth!=inst.selectedMonth||origYear!=inst.selectedYear){this._notifyChange(inst)}this._adjustInstDate(inst);if(inst.input){inst.input.val(clear?"":this._formatDate(inst))}},_getDate:function(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=="")?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return startDate},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));var isRTL=this._get(inst,"isRTL");var showButtonPanel=this._get(inst,"showButtonPanel");var hideIfNoPrevNext=this._get(inst,"hideIfNoPrevNext");var navigationAsDateFormat=this._get(inst,"navigationAsDateFormat");var numMonths=this._getNumberOfMonths(inst);var showCurrentAtPos=this._get(inst,"showCurrentAtPos");var stepMonths=this._get(inst,"stepMonths");var stepBigMonths=this._get(inst,"stepBigMonths");var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--}if(maxDate){var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate()));maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);while(this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--}}}inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=this._get(inst,"prevText");prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));var prev=(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+"', -"+stepMonths+", 'M');\" title=\""+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>"));var nextText=this._get(inst,"nextText");nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));var next=(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+"', +"+stepMonths+", 'M');\" title=\""+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>"));var currentText=this._get(inst,"currentText");var gotoDate=(this._get(inst,"gotoCurrent")&&inst.currentDay?currentDate:today);currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)));var controls=(!inst.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">'+this._get(inst,"closeText")+"</button>":"");var buttonPanel=(showButtonPanel)?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(isRTL?controls:"")+(this._isInRange(inst,gotoDate)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#'+inst.id+"');\">"+currentText+"</button>":"")+(isRTL?"":controls)+"</div>":"";var firstDay=parseInt(this._get(inst,"firstDay"),10);firstDay=(isNaN(firstDay)?0:firstDay);var dayNames=this._get(inst,"dayNames");var dayNamesShort=this._get(inst,"dayNamesShort");var dayNamesMin=this._get(inst,"dayNamesMin");var monthNames=this._get(inst,"monthNames");var monthNamesShort=this._get(inst,"monthNamesShort");var beforeShowDay=this._get(inst,"beforeShowDay");var showOtherMonths=this._get(inst,"showOtherMonths");var calculateWeek=this._get(inst,"calculateWeek")||this.iso8601Week;var endDate=inst.endDay?this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)):currentDate;var defaultDate=this._getDefaultDate(inst);var html="";for(var row=0;row<numMonths[0];row++){var group="";for(var col=0;col<numMonths[1];col++){var selectedDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay));var cornerClass=" ui-corner-all";var calender="";if(isMultiMonth){calender+='<div class="ui-datepicker-group ui-datepicker-group-';switch(col){case 0:calender+="first";cornerClass=" ui-corner-"+(isRTL?"right":"left");break;case numMonths[1]-1:calender+="last";cornerClass=" ui-corner-"+(isRTL?"left":"right");break;default:calender+="middle";cornerClass="";break}calender+='">'}calender+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+cornerClass+'">'+(/all|left/.test(cornerClass)&&row==0?(isRTL?next:prev):"")+(/all|right/.test(cornerClass)&&row==0?(isRTL?prev:next):"")+this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0,monthNames,monthNamesShort)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var thead="";for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;thead+="<th"+((dow+firstDay+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="'+dayNames[day]+'">'+dayNamesMin[day]+"</span></th>"}calender+=thead+"</tr></thead><tbody>";var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth){inst.selectedDay=Math.min(inst.selectedDay,daysInMonth)}var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow<numRows;dRow++){calender+="<tr>";var tbody="";for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,""]);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=otherMonth||!daySettings[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);tbody+='<td class="'+((dow+firstDay+6)%7>=5?" ui-datepicker-week-end":"")+(otherMonth?" ui-datepicker-other-month":"")+((printDate.getTime()==selectedDate.getTime()&&drawMonth==inst.selectedMonth&&inst._keyEvent)||(defaultDate.getTime()==printDate.getTime()&&defaultDate.getTime()==selectedDate.getTime())?" "+this._dayOverClass:"")+(unselectable?" "+this._unselectableClass+" ui-state-disabled":"")+(otherMonth&&!showOtherMonths?"":" "+daySettings[1]+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()==today.getTime()?" ui-datepicker-today":""))+'"'+((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':"")+(unselectable?"":" onclick=\"DP_jQuery.datepicker._selectDay('#"+inst.id+"',"+drawMonth+","+drawYear+', this);return false;"')+">"+(otherMonth?(showOtherMonths?printDate.getDate():"&#xa0;"):(unselectable?'<span class="ui-state-default">'+printDate.getDate()+"</span>":'<a class="ui-state-default'+(printDate.getTime()==today.getTime()?" ui-state-highlight":"")+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" ui-state-active":"")+'" href="#">'+printDate.getDate()+"</a>"))+"</td>";printDate.setDate(printDate.getDate()+1);printDate=this._daylightSavingAdjust(printDate)}calender+=tbody+"</tr>"}drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++}calender+="</tbody></table>"+(isMultiMonth?"</div>"+((numMonths[0]>0&&col==numMonths[1]-1)?'<div class="ui-datepicker-row-break"></div>':""):"");group+=calender}html+=group}html+=buttonPanel+($.browser.msie&&parseInt($.browser.version,10)<7&&!inst.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");inst._keyEvent=false;return html},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,secondary,monthNames,monthNamesShort){minDate=(inst.rangeStart&&minDate&&selectedDate<minDate?selectedDate:minDate);var changeMonth=this._get(inst,"changeMonth");var changeYear=this._get(inst,"changeYear");var showMonthAfterYear=this._get(inst,"showMonthAfterYear");var html='<div class="ui-datepicker-title">';var monthHtml="";if(secondary||!changeMonth){monthHtml+='<span class="ui-datepicker-month">'+monthNames[drawMonth]+"</span> "}else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);monthHtml+='<select class="ui-datepicker-month" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+"', this, 'M');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"+inst.id+"');\">";for(var month=0;month<12;month++){if((!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth())){monthHtml+='<option value="'+month+'"'+(month==drawMonth?' selected="selected"':"")+">"+monthNamesShort[month]+"</option>"}}monthHtml+="</select>"}if(!showMonthAfterYear){html+=monthHtml+((secondary||changeMonth||changeYear)&&(!(changeMonth&&changeYear))?"&#xa0;":"")}if(secondary||!changeYear){html+='<span class="ui-datepicker-year">'+drawYear+"</span>"}else{var years=this._get(inst,"yearRange").split(":");var year=0;var endYear=0;if(years.length!=2){year=drawYear-10;endYear=drawYear+10}else{if(years[0].charAt(0)=="+"||years[0].charAt(0)=="-"){year=drawYear+parseInt(years[0],10);endYear=drawYear+parseInt(years[1],10)}else{year=parseInt(years[0],10);endYear=parseInt(years[1],10)}}year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='<select class="ui-datepicker-year" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+"', this, 'Y');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"+inst.id+"');\">";for(;year<=endYear;year++){html+='<option value="'+year+'"'+(year==drawYear?' selected="selected"':"")+">"+year+"</option>"}html+="</select>"}if(showMonthAfterYear){html+=(secondary||changeMonth||changeYear?"&#xa0;":"")+monthHtml}html+="</div>";return html},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+(period=="Y"?offset:0);var month=inst.drawMonth+(period=="M"?offset:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+(period=="D"?offset:0);var date=this._daylightSavingAdjust(new Date(year,month,day));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();if(period=="M"||period=="Y"){this._notifyChange(inst)}},_notifyChange:function(inst){var onChange=this._get(inst,"onChangeMonthYear");if(onChange){onChange.apply((inst.input?inst.input[0]:null),[inst.selectedYear,inst.selectedMonth+1,inst])}},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return(numMonths==null?[1,1]:(typeof numMonths=="number"?[1,numMonths]:numMonths))},_getMinMaxDate:function(inst,minMax,checkRange){var date=this._determineDate(this._get(inst,minMax+"Date"),null);return(!checkRange||!inst.rangeStart?date:(!date||inst.rangeStart>date?inst.rangeStart:date))},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst);var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1));if(offset<0){date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()))}return this._isInRange(inst,date)},_isInRange:function(inst,date){var newMinDate=(!inst.rangeStart?null:this._daylightSavingAdjust(new Date(inst.selectedYear,inst.selectedMonth,inst.selectedDay)));newMinDate=(newMinDate&&inst.rangeStart<newMinDate?inst.rangeStart:newMinDate);var minDate=newMinDate||this._getMinMaxDate(inst,"min");var maxDate=this._getMinMaxDate(inst,"max");return((!minDate||date>=minDate)&&(!maxDate||date<=maxDate))},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,"shortYearCutoff");shortYearCutoff=(typeof shortYearCutoff!="string"?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,"dayNamesShort"),dayNames:this._get(inst,"dayNames"),monthNamesShort:this._get(inst,"monthNamesShort"),monthNames:this._get(inst,"monthNames")}},_formatDate:function(inst,day,month,year){if(!day){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear}var date=(day?(typeof day=="object"?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return this.formatDate(this._get(inst,"dateFormat"),date,this._getFormatConfig(inst))}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null||props[name]==undefined){target[name]=props[name]}}return target}function isArray(a){return(a&&(($.browser.safari&&typeof a=="object"&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))))}$.fn.datepicker=function(options){if(!$.datepicker.initialized){$(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv);$.datepicker.initialized=true}var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"&&(options=="isDisabled"||options=="getDate")){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}if(options=="option"&&arguments.length==2&&typeof arguments[1]=="string"){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}return this.each(function(){typeof options=="string"?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options)})};$.datepicker=new Datepicker();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.7.2";window.DP_jQuery=$})(jQuery);;
 
 
 
 
 
 
 
 
 
 
 
 
locale/dynamic-widgets-de_DE.mo ADDED
Binary file
locale/dynamic-widgets-de_DE.po ADDED
@@ -0,0 +1,653 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Dynamic Widgets NL\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2011-01-05 19:15+0100\n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: Jacco <jacco@qurl.nl>\n"
8
+ "Language-Team: \n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-Language: Dutch\n"
13
+ "X-Poedit-Country: NETHERLANDS\n"
14
+
15
+ #: ../dynwid_admin_edit.php:24
16
+ msgid "Anonymous"
17
+ msgstr "Anonym"
18
+
19
+ #: ../dynwid_admin_edit.php:74
20
+ msgid "(and other Gecko based)"
21
+ msgstr "(und andere Gecko-basierte)"
22
+
23
+ #: ../dynwid_admin_edit.php:80
24
+ msgid "Other / Unknown / Not detected"
25
+ msgstr ""
26
+
27
+ #: ../dynwid_admin_edit.php:185
28
+ msgid "Posts: "
29
+ msgstr "Beiträge:"
30
+
31
+ #: ../dynwid_admin_edit.php:185
32
+ msgid "Tags: "
33
+ msgstr "Schlagwörter:"
34
+
35
+ #: ../dynwid_admin_edit.php:241
36
+ #: ../dynwid_admin_edit.php:244
37
+ #, fuzzy
38
+ msgid "Front page"
39
+ msgstr "Startseite"
40
+
41
+ #: ../dynwid_admin_edit.php:241
42
+ #: ../dynwid_admin_edit.php:246
43
+ msgid "Posts page"
44
+ msgstr "Artikelseite"
45
+
46
+ #: ../dynwid_admin_edit.php:430
47
+ msgid "Widget options saved."
48
+ msgstr "Widget Optionen gespeichert."
49
+
50
+ #: ../dynwid_admin_edit.php:430
51
+ #: ../dynwid_admin_edit.php:969
52
+ msgid "Return"
53
+ msgstr "Zurück"
54
+
55
+ #: ../dynwid_admin_edit.php:430
56
+ msgid "to Dynamic Widgets overview"
57
+ msgstr "zu den Dynamic Widgets Optionen"
58
+
59
+ #: ../dynwid_admin_edit.php:435
60
+ msgid "Dynamic does not mean static hiding of a widget."
61
+ msgstr "Dynamisch houdt niet in het statisch verbergen van een widget."
62
+
63
+ #: ../dynwid_admin_edit.php:435
64
+ msgid "Hint"
65
+ msgstr "Hinweis"
66
+
67
+ #: ../dynwid_admin_edit.php:435
68
+ msgid "Remove"
69
+ msgstr "Entfernt"
70
+
71
+ #: ../dynwid_admin_edit.php:435
72
+ msgid "the widget from the sidebar"
73
+ msgstr "das Widget aus der Sidebar"
74
+
75
+ #: ../dynwid_admin_edit.php:439
76
+ msgid "The From date can't be later than the To date."
77
+ msgstr "Das Startdatum kann nicht später als das Enddatum sein."
78
+
79
+ #: ../dynwid_admin_edit.php:444
80
+ msgid "Edit options for the widget"
81
+ msgstr "Option für das Widget bearbeiten"
82
+
83
+ #: ../dynwid_admin_edit.php:455
84
+ #: ../dynwid_class_php4.php:56
85
+ #: ../dynwid_class.php:50
86
+ msgid "Role"
87
+ msgstr "Rolle"
88
+
89
+ #: ../dynwid_admin_edit.php:457
90
+ msgid "Show widget to everybody?"
91
+ msgstr "Widget für jeden anzeigen?"
92
+
93
+ #: ../dynwid_admin_edit.php:457
94
+ #: ../dynwid_admin_edit.php:477
95
+ #: ../dynwid_admin_edit.php:509
96
+ #: ../dynwid_admin_edit.php:530
97
+ #: ../dynwid_admin_edit.php:568
98
+ #: ../dynwid_admin_edit.php:582
99
+ #: ../dynwid_admin_edit.php:638
100
+ #: ../dynwid_admin_edit.php:740
101
+ msgid "Click to toggle info"
102
+ msgstr "Klicken Sie um Info anzuzeigen"
103
+
104
+ #: ../dynwid_admin_edit.php:461
105
+ msgid ""
106
+ "Setting options by role is very powerfull. It can override all other options!<br />\n"
107
+ "\t\t\t\t\t\tUsers who are not logged in, get the <em>Anonymous</em> role."
108
+ msgstr ""
109
+ "Einstellungen pro Rolle werden bevorzugt behandelt. Sie können alle anderen Optionen überschreiben!<br />\n"
110
+ "\t\t\t\t\t\tBenutzer die nicht angemeldet sind kommen in die <em>Anonym</em> Rolle."
111
+
112
+ #: ../dynwid_admin_edit.php:465
113
+ #: ../dynwid_admin_edit.php:489
114
+ #: ../dynwid_admin_edit.php:516
115
+ #: ../dynwid_admin_edit.php:537
116
+ #: ../dynwid_admin_edit.php:560
117
+ #: ../dynwid_admin_edit.php:577
118
+ #: ../dynwid_admin_edit.php:631
119
+ #: ../dynwid_admin_edit.php:651
120
+ #: ../dynwid_admin_edit.php:713
121
+ #: ../dynwid_admin_edit.php:727
122
+ #: ../dynwid_admin_edit.php:747
123
+ #: ../dynwid_admin_edit.php:757
124
+ #: ../dynwid_admin_edit.php:766
125
+ #: ../dynwid_admin_edit.php:883
126
+ #: ../dynwid_admin_edit.php:925
127
+ #: ../dynwid_admin_edit.php:948
128
+ msgid "Yes"
129
+ msgstr "Ja"
130
+
131
+ #: ../dynwid_admin_edit.php:466
132
+ #: ../dynwid_admin_edit.php:490
133
+ #: ../dynwid_admin_edit.php:517
134
+ #: ../dynwid_admin_edit.php:538
135
+ #: ../dynwid_admin_edit.php:561
136
+ #: ../dynwid_admin_edit.php:578
137
+ #: ../dynwid_admin_edit.php:632
138
+ #: ../dynwid_admin_edit.php:652
139
+ #: ../dynwid_admin_edit.php:714
140
+ #: ../dynwid_admin_edit.php:728
141
+ #: ../dynwid_admin_edit.php:748
142
+ #: ../dynwid_admin_edit.php:758
143
+ #: ../dynwid_admin_edit.php:767
144
+ #: ../dynwid_admin_edit.php:884
145
+ #: ../dynwid_admin_edit.php:926
146
+ #: ../dynwid_admin_edit.php:949
147
+ msgid "No"
148
+ msgstr "Nein"
149
+
150
+ #: ../dynwid_admin_edit.php:466
151
+ msgid "only to"
152
+ msgstr "nur für"
153
+
154
+ #: ../dynwid_admin_edit.php:475
155
+ #: ../dynwid_class_php4.php:57
156
+ #: ../dynwid_class.php:51
157
+ msgid "Date"
158
+ msgstr "Datum"
159
+
160
+ #: ../dynwid_admin_edit.php:477
161
+ msgid "Show widget always?"
162
+ msgstr "Widget immer anzeigen?"
163
+
164
+ #: ../dynwid_admin_edit.php:481
165
+ msgid "Next to the above role option, the date option is also very powerfull. You've been warned!"
166
+ msgstr "Als nächstes nach der obenstehenden Option kommt die Datum-Option. Die Warnung gilt ebenfalls!"
167
+
168
+ #: ../dynwid_admin_edit.php:482
169
+ msgid "Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the"
170
+ msgstr "Datum bitte im Forma JJJJ-MM-TT eintragen. Oder einfach auf den Kalender klicken "
171
+
172
+ #: ../dynwid_admin_edit.php:483
173
+ msgid ""
174
+ "Date ranges can be made by entering a From AND a To date<br />\n"
175
+ " \t\t\t\t\tWhen you want the widget to be displayed from a specific date, only fill in the From date<br />\n"
176
+ " \t\t\t\t\tWhen you want the widget to stop displaying on a specific date, only fill in the To date.\n"
177
+ " \t\t\t\t"
178
+ msgstr ""
179
+ "Um einen Zeitraum zu bestimmen einfach \"von\" und \"bis\" eintragen.<br />\n"
180
+ " \t\t\t\t\tSoll das Widget ab einem bestimmten Datum angezeigt werden muss nur das \"von\" Feld ausgefüllt werden.<br />\n"
181
+ " \t\t\t\t\tSoll das Widget ab einem bestimmten Datum nicht mehr angezeigt werden muss nur das \"bis\" Feld ausgefüllt werden.\n"
182
+ " \t\t\t\t"
183
+
184
+ #: ../dynwid_admin_edit.php:490
185
+ msgid "only"
186
+ msgstr "nur"
187
+
188
+ #: ../dynwid_admin_edit.php:494
189
+ msgid "From"
190
+ msgstr "von"
191
+
192
+ #: ../dynwid_admin_edit.php:498
193
+ msgid "To"
194
+ msgstr "bis"
195
+
196
+ #: ../dynwid_admin_edit.php:507
197
+ msgid "Language (WPML)"
198
+ msgstr "Sprache (WPML)"
199
+
200
+ #: ../dynwid_admin_edit.php:509
201
+ msgid "Show widget default on all languages?"
202
+ msgstr "Widget standardmäßig bei allen Sprachen anzeigen?"
203
+
204
+ #: ../dynwid_admin_edit.php:513
205
+ msgid "Using this option can override all other options."
206
+ msgstr "Diese Option kann bei Benutzung alle anderen überschreiben."
207
+
208
+ #: ../dynwid_admin_edit.php:518
209
+ msgid "Except the languages"
210
+ msgstr "Ausgenommen diese Sprache(n)"
211
+
212
+ #: ../dynwid_admin_edit.php:528
213
+ #: ../dynwid_class_php4.php:58
214
+ #: ../dynwid_class.php:52
215
+ msgid "Browser"
216
+ msgstr "Browser"
217
+
218
+ #: ../dynwid_admin_edit.php:530
219
+ msgid "Show widget with all browsers?"
220
+ msgstr "Widget für alle Browser anzeigen?"
221
+
222
+ #: ../dynwid_admin_edit.php:534
223
+ msgid "Browser detection is never 100% accurate."
224
+ msgstr "Browser-Erkennung funktioniert nie zu 100%."
225
+
226
+ #: ../dynwid_admin_edit.php:539
227
+ msgid "Except the browser(s)"
228
+ msgstr "Ausgenommen diese(r) Browser"
229
+
230
+ #: ../dynwid_admin_edit.php:549
231
+ #: ../dynwid_class_php4.php:60
232
+ #: ../dynwid_class.php:54
233
+ msgid "Front Page"
234
+ msgstr "Startseite"
235
+
236
+ #: ../dynwid_admin_edit.php:551
237
+ msgid "Show widget on the front page?"
238
+ msgstr "Das Widget auf der Startseite anzeigen?"
239
+
240
+ #: ../dynwid_admin_edit.php:555
241
+ msgid ""
242
+ "This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />\n"
243
+ "\t\t\t\t\t\tWhen a static page is set, you can use the options for the static pages below.\n"
244
+ "\t\t\t\t\t"
245
+ msgstr ""
246
+ "Diese Option greift nur wenn die Startseite die letzten Artikel anzeigt (siehe Einstellungen &gt; Lesen)<br />\n"
247
+ "\t\t\t\t\t\tWenn eine statische Seite benutzt wird muss die Option für statische Seiten, weiter unten, benutzt werden.\n"
248
+ "\t\t\t\t\t"
249
+
250
+ #: ../dynwid_admin_edit.php:566
251
+ #: ../dynwid_class_php4.php:61
252
+ #: ../dynwid_class.php:55
253
+ msgid "Single Posts"
254
+ msgstr "Artikel"
255
+
256
+ #: ../dynwid_admin_edit.php:568
257
+ msgid "Show widget default on single posts?"
258
+ msgstr "Das Widget auf Artikelseiten anzeigen?"
259
+
260
+ #: ../dynwid_admin_edit.php:572
261
+ msgid ""
262
+ "When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won't be applied.\n"
263
+ " \t\t\t\t\tIf you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.\n"
264
+ " \t\t\t\t\t"
265
+ msgstr ""
266
+ "Sollen ein Autor <b>UND</b> eine Kategorie als Filter gesetzt werden müssen beide Optionen markiert werden.\n"
267
+ " \t\t\t\t\tWird als Regel ein logisches <b>ODER</b> gebraucht muss das Widget dubliziert werden und die zweite Regel darauf angewendet werden.\n"
268
+ " \t\t\t\t\t"
269
+
270
+ #: ../dynwid_admin_edit.php:581
271
+ msgid "Make exception rule available to individual posts and tags."
272
+ msgstr "Ausnahmeregeln für individuelle Artikel oder nach Schlagwörtern"
273
+
274
+ #: ../dynwid_admin_edit.php:585
275
+ msgid ""
276
+ "When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.\n"
277
+ "\t\t\t\t\t\tYou can set the exception rule for tags in the single Edit Tag Panel (go to <a href=\"edit-tags.php?taxonomy=post_tag\">Post Tags</a>,\n"
278
+ "\t\t\t\t\t\tclick a tag), For individual posts in the <a href=\"post-new.php\">New</a> or <a href=\"edit.php\">Edit</a> Posts panel.\n"
279
+ "\t\t\t\t\t\tException rules for tags and individual posts in any combination work independantly, but will always be counted as one exception.<br />\n"
280
+ " \t\t\t\t\tPlease note when exception rules are set for Author and/or Category, these will be removed.\n"
281
+ " \t\t\t\t"
282
+ msgstr ""
283
+ "Wird diese Option aktiviert können einzelne Artikel oder Artikel anhand von Schlagwörtern ausgeschlossen werden.\n"
284
+ "\t\t\t\t\t\tUm einzelne Schlagwörter zu benutzern müsen diese berarbeitet werden (siehe <a href=\"edit-tags.php?taxonomy=post_tag\">Schlagwörter</a>,\n"
285
+ "\t\t\t\t\t\tum ein Schlagwört zu bearbeiten). Für einzelne Artikel siehe <a href=\"post-new.php\">neuer Artikel</a> oder <a href=\"edit.php\">Artikel bearbeiten</a>.\n"
286
+ "\t\t\t\t\t\tAusnahmeregeln für einzelne Artikel oder Schlägwörter in jeglicher Kombination funktionieren unabhängig, werden aber immer als einzelne Regel betrachtet.<br />\n"
287
+ " \t\t\t\t\tBitte beachten! Sind Ausnahmeregeln für Autor und/oder Kategorie gesetzt, werden diese ignoriert.\n"
288
+ " \t\t\t\t"
289
+
290
+ #: ../dynwid_admin_edit.php:602
291
+ msgid "Except the posts by author"
292
+ msgstr "Ausgenommen Artikel von diesem Autor"
293
+
294
+ #: ../dynwid_admin_edit.php:613
295
+ msgid "Except the posts in category"
296
+ msgstr "Ausgenommen Artikel in dieser Kategorie"
297
+
298
+ #: ../dynwid_admin_edit.php:627
299
+ #: ../dynwid_class_php4.php:62
300
+ #: ../dynwid_class.php:56
301
+ msgid "Attachments"
302
+ msgstr "Anhänge / Medien"
303
+
304
+ #: ../dynwid_admin_edit.php:629
305
+ msgid "Show widget on attachment pages"
306
+ msgstr "Widget auf Anhang Seiten anzeigen"
307
+
308
+ #: ../dynwid_admin_edit.php:636
309
+ #: ../dynwid_class_php4.php:63
310
+ #: ../dynwid_class.php:57
311
+ msgid "Pages"
312
+ msgstr "Seiten"
313
+
314
+ #: ../dynwid_admin_edit.php:638
315
+ msgid "Show widget default on static pages?"
316
+ msgstr "Widget auf statischen Seiten anzeigen?"
317
+
318
+ #: ../dynwid_admin_edit.php:643
319
+ msgid ""
320
+ "Checking the \"All childs\" option, makes the exception rule apply\n"
321
+ "\t\t\t\tto the parent and all items under it in all levels. Also future items\n"
322
+ "\t\t\t\tunder the parent. It's not possible to apply an exception rule to\n"
323
+ "\t\t\t\t\"All childs\" without the parent."
324
+ msgstr ""
325
+ "Klick auf \"alle Kinder\" aktiviert die Ausnahmeregel\n"
326
+ "\t\t\t\tfür das Elternelement und alle Elemente die davon erben. Auch zukünftige Elemente\n"
327
+ "\t\t\t\tunter diesem Elternelement. Es ist nicht möglich eine Ausnahmeregel für\n"
328
+ "\t\t\t\t\"alle Kinder\" ohne das Elternelement zu aktivieren."
329
+
330
+ #: ../dynwid_admin_edit.php:653
331
+ msgid "Except the page(s)"
332
+ msgstr "Alle bis auf diese Seite(n)"
333
+
334
+ #: ../dynwid_admin_edit.php:692
335
+ #: ../dynwid_admin_edit.php:807
336
+ msgid "All childs"
337
+ msgstr "alle Kinder"
338
+
339
+ #: ../dynwid_admin_edit.php:709
340
+ #: ../dynwid_class_php4.php:64
341
+ #: ../dynwid_class.php:58
342
+ msgid "Author Pages"
343
+ msgstr "Autoren Seiten"
344
+
345
+ #: ../dynwid_admin_edit.php:711
346
+ msgid "Show widget default on author pages?"
347
+ msgstr "Widget auf Autoren Seiten anzeigen?"
348
+
349
+ #: ../dynwid_admin_edit.php:715
350
+ msgid "Except the author(s)"
351
+ msgstr "Ausgenommen diese(r) Autor(en)"
352
+
353
+ #: ../dynwid_admin_edit.php:723
354
+ #: ../dynwid_class_php4.php:65
355
+ #: ../dynwid_class.php:59
356
+ msgid "Category Pages"
357
+ msgstr "Kategorie Seiten"
358
+
359
+ #: ../dynwid_admin_edit.php:725
360
+ msgid "Show widget default on category pages?"
361
+ msgstr "Widget auf Kategorie Seiten anzeigen?"
362
+
363
+ #: ../dynwid_admin_edit.php:729
364
+ #: ../dynwid_admin_edit.php:950
365
+ msgid "Except the categories"
366
+ msgstr "Ausgenommen diese Kategorien"
367
+
368
+ #: ../dynwid_admin_edit.php:738
369
+ #: ../dynwid_class_php4.php:66
370
+ #: ../dynwid_class.php:60
371
+ msgid "Archive Pages"
372
+ msgstr "Archiv Seiten"
373
+
374
+ #: ../dynwid_admin_edit.php:740
375
+ msgid "Show widget on archive pages"
376
+ msgstr "Widget auf Archiv Seiten anzeigen"
377
+
378
+ #: ../dynwid_admin_edit.php:744
379
+ msgid "This option does not include Author and Category Pages."
380
+ msgstr "Diese Option beinhaltet nicht Autoren und Kategorie Seiten"
381
+
382
+ #: ../dynwid_admin_edit.php:753
383
+ #: ../dynwid_class_php4.php:67
384
+ #: ../dynwid_class.php:61
385
+ msgid "Error Page"
386
+ msgstr "Fehlerseite"
387
+
388
+ #: ../dynwid_admin_edit.php:755
389
+ msgid "Show widget on the error page?"
390
+ msgstr "Widget auf der Fehlerseite anzeigen?"
391
+
392
+ #: ../dynwid_admin_edit.php:762
393
+ msgid "Search Page"
394
+ msgstr "Suchseite"
395
+
396
+ #: ../dynwid_admin_edit.php:764
397
+ msgid "Show widget on the search page?"
398
+ msgstr "Widget auf der Suchseite anzeigen?"
399
+
400
+ #: ../dynwid_admin_edit.php:869
401
+ msgid "Custom Post Type"
402
+ msgstr "Individueller Artikel Typ"
403
+
404
+ #: ../dynwid_admin_edit.php:871
405
+ msgid "Show widget on"
406
+ msgstr "Widget anzeigen auf"
407
+
408
+ #: ../dynwid_admin_edit.php:886
409
+ #: ../dynwid_admin_edit.php:928
410
+ msgid "Except for"
411
+ msgstr "Ausgenommen"
412
+
413
+ #: ../dynwid_admin_edit.php:920
414
+ msgid "Custom Post Type Archives"
415
+ msgstr "Individuelle Artike-Typ-Archive"
416
+
417
+ #: ../dynwid_admin_edit.php:922
418
+ msgid "Show widget on Custom Post Type Archives"
419
+ msgstr "Widget in individuellen Artikel-Typ-Archiven anzeigen?"
420
+
421
+ #: ../dynwid_admin_edit.php:944
422
+ #: ../dynwid_class_php4.php:69
423
+ #: ../dynwid_class.php:63
424
+ msgid "WPSC Category"
425
+ msgstr "WPSC Kategorie"
426
+
427
+ #: ../dynwid_admin_edit.php:946
428
+ msgid "Show widget default on WPSC categories?"
429
+ msgstr "Widget standardmäßig auf WPSC Kategorien anzeigen?"
430
+
431
+ #: ../dynwid_admin_edit.php:965
432
+ msgid "Save"
433
+ msgstr "speichern"
434
+
435
+ #: ../dynwid_class_php4.php:59
436
+ #: ../dynwid_class.php:53
437
+ msgid "Language"
438
+ msgstr "Sprache"
439
+
440
+ #: ../dynwid_class_php4.php:68
441
+ #: ../dynwid_class.php:62
442
+ msgid "Search page"
443
+ msgstr "Suchseite"
444
+
445
+ #: ../dynwid_admin.php:10
446
+ #: ../dynamic-widgets.php:139
447
+ #: ../dynamic-widgets.php:218
448
+ #: ../dynamic-widgets.php:563
449
+ msgid "Dynamic Widgets"
450
+ msgstr "Dynamic Widgets"
451
+
452
+ #: ../dynwid_admin.php:16
453
+ msgid "<b>WARNING</b> STRICT sql mode in effect. Dynamic Widgets might not work correctly. Please disable STRICT sql mode."
454
+ msgstr "<b>Warnung</b> STRICT sql mode ist aktiv. Dynamic Widgets arbeitet möglicherweise nicht korrekt. Bitte STRICT sql mode abschalten."
455
+
456
+ #: ../dynwid_admin.php:36
457
+ msgid "Oops! Something went terrible wrong. Please reinstall Dynamic Widgets."
458
+ msgstr "Huch! Irgend etwas ist böse schief gegangen. Dynamic Widgets muss neu installiert werden."
459
+
460
+ #: ../dynwid_admin.php:44
461
+ #: ../dynwid_admin_overview.php:28
462
+ msgid "OLD"
463
+ msgstr "ALTE"
464
+
465
+ #: ../dynwid_admin.php:44
466
+ #: ../dynwid_admin_overview.php:28
467
+ msgid "FILTER"
468
+ msgstr "FILTER"
469
+
470
+ #: ../dynwid_admin_overview.php:15
471
+ msgid "Widget options have been reset to default."
472
+ msgstr "Widget Optionen wurden zurück gesetzt."
473
+
474
+ #: ../dynwid_admin_overview.php:28
475
+ msgid "Method set to"
476
+ msgstr "Methode geändert auf"
477
+
478
+ #: ../dynwid_admin_overview.php:36
479
+ msgid "Inactive Widgets"
480
+ msgstr "Inaktive Widgets"
481
+
482
+ #: ../dynwid_admin_overview.php:59
483
+ #: ../dynwid_admin_overview.php:62
484
+ msgid "Edit this widget options"
485
+ msgstr "Diese Widget Optionen bearbeiten"
486
+
487
+ #: ../dynwid_admin_overview.php:62
488
+ msgid "Edit"
489
+ msgstr "bearbeiten"
490
+
491
+ #: ../dynwid_admin_overview.php:67
492
+ msgid "Reset widget to Static"
493
+ msgstr "Widget zurück auf \"statisch\" setzen"
494
+
495
+ #: ../dynwid_admin_overview.php:67
496
+ #: ../dynamic-widgets.php:131
497
+ msgid "Reset"
498
+ msgstr "zurücksetzen"
499
+
500
+ #: ../dynwid_admin_overview.php:73
501
+ #: ../dynamic-widgets.php:128
502
+ #: ../dynamic-widgets.php:130
503
+ #: ../dynamic-widgets.php:565
504
+ msgid "Dynamic"
505
+ msgstr "dynamisch"
506
+
507
+ #: ../dynwid_admin_overview.php:73
508
+ #: ../dynamic-widgets.php:128
509
+ #: ../dynamic-widgets.php:129
510
+ #: ../dynamic-widgets.php:132
511
+ #: ../dynamic-widgets.php:565
512
+ msgid "Static"
513
+ msgstr "statisch"
514
+
515
+ #: ../dynwid_admin_overview.php:88
516
+ msgid "Advanced"
517
+ msgstr "Fortgeschrittene"
518
+
519
+ #: ../dynwid_admin_overview.php:90
520
+ msgid "wp_head() check:"
521
+ msgstr "wp_head() geprüft:"
522
+
523
+ #: ../dynwid_admin_overview.php:95
524
+ msgid "wp_head() is NOT called (at the most obvious place)"
525
+ msgstr "wp_head() wird nicht aufgerufen (am üblichen Ort)"
526
+
527
+ #: ../dynwid_admin_overview.php:99
528
+ msgid "wp_head() is called"
529
+ msgstr "wp_head() wird aufgerufen"
530
+
531
+ #: ../dynwid_admin_overview.php:103
532
+ msgid "Unable to determine if wp_head() is called"
533
+ msgstr "Es kann nicht festegstellt werden, ob wp_head() aufgerufen wird"
534
+
535
+ #: ../dynwid_admin_overview.php:114
536
+ msgid "Use 'OLD' method"
537
+ msgstr "Benutze \"alte\" Methode"
538
+
539
+ #: ../dynwid_admin_overview.php:119
540
+ msgid "For debugging purposes it is possible you're asked to create a dump. Click the 'Create dump' button and save the text file."
541
+ msgstr "Zur Fehlerbehandlung kann eventuell nötig sein ein Abbild zu erstellen. Dazu auf \"Abbild erstellen\" klicken und Abbild als Text-Datei speichern. "
542
+
543
+ #: ../dynwid_admin_overview.php:124
544
+ msgid "Create dump"
545
+ msgstr "Abbild erstellen"
546
+
547
+ #: ../dynwid_admin_overview.php:130
548
+ msgid "When you deceide not to use this plugin anymore (sorry to hear that!). You can cleanup all settings and data related to this plugin by clicking on the 'Uninstall' button. This process is irreversible! After the cleanup the plugin is deactivated automaticly."
549
+ msgstr "Wenn das Plugin nicht mehr verwendet werden soll (tut uns leid das zu hören!) können alle Einstellungen und Daten in Zusammenhang mit dem Plugin durch Klick auf die \"Zurücksetzen\"-Schaltfläche entfernt werden. Dieser Prozess kann nicht rückgängig gemacht werden! Nach dem Zurücksetzen wird das Plugin automatisch deaktiviert."
550
+
551
+ #: ../dynwid_admin_overview.php:135
552
+ msgid "Uninstall"
553
+ msgstr "Zurücksetzen"
554
+
555
+ #: ../dynamic-widgets.php:124
556
+ msgid "Widgets are always displayed by default"
557
+ msgstr "Widgets werden standardmäßig immer angezeigt"
558
+
559
+ #: ../dynamic-widgets.php:124
560
+ msgid "The '<em>Yes</em>' selection"
561
+ msgstr "Die '<em>Ja</em>' Auswahl"
562
+
563
+ #: ../dynamic-widgets.php:125
564
+ msgid "Click on the"
565
+ msgstr "Klicken Sie"
566
+
567
+ #: ../dynamic-widgets.php:125
568
+ msgid "next to the options for more info"
569
+ msgstr "neben die Optionen für weitergehende Informationen"
570
+
571
+ #: ../dynamic-widgets.php:126
572
+ msgid "The"
573
+ msgstr "Das"
574
+
575
+ #: ../dynamic-widgets.php:126
576
+ msgid "next to a section means it has options set."
577
+ msgstr "neben einer Sektion bedeutet, dass die Option aktiviert ist."
578
+
579
+ #: ../dynamic-widgets.php:129
580
+ msgid "When a widget is"
581
+ msgstr "Wenn das Widget"
582
+
583
+ #: ../dynamic-widgets.php:129
584
+ msgid "the widget uses the WordPress default. In other words, it's shown everywhere"
585
+ msgstr "ist, benutzt das Widget WordPress Standardeinstellungen. Besser gesagt, es wird überall angezeigt. "
586
+
587
+ #: ../dynamic-widgets.php:130
588
+ msgid "A widget is"
589
+ msgstr "Ein Widget ist"
590
+
591
+ #: ../dynamic-widgets.php:130
592
+ msgid "when there are options set, i.e. not showing on the front page."
593
+ msgstr "wenn Optionen gesetzt sind, z.B. dass es nicht auf der Startseite angezeigt wird."
594
+
595
+ #: ../dynamic-widgets.php:132
596
+ msgid "Reset makes the widget return to"
597
+ msgstr "Durch zurücksetzen wird das Widget wieder auf folgenden Status gesetzt"
598
+
599
+ #: ../dynamic-widgets.php:171
600
+ msgid "Settings"
601
+ msgstr "Einstellungen"
602
+
603
+ #: ../dynamic-widgets.php:185
604
+ msgid "Apply exception rule to widgets:"
605
+ msgstr "Ausnahmeregel auf Widgets anwenden:"
606
+
607
+ #: ../dynamic-widgets.php:201
608
+ msgid "Off"
609
+ msgstr "Aus"
610
+
611
+ #: ../dynamic-widgets.php:201
612
+ msgid "On"
613
+ msgstr "An"
614
+
615
+ #: ../dynamic-widgets.php:202
616
+ msgid " (Default: "
617
+ msgstr "(Standard:"
618
+
619
+ #: ../dynamic-widgets.php:299
620
+ msgid "Dynamic Widgets Options saved"
621
+ msgstr "Widget Optionen gespeichert"
622
+
623
+ #: ../dynamic-widgets.php:299
624
+ msgid "for"
625
+ msgstr "für"
626
+
627
+ #: ../dynamic-widgets.php:564
628
+ msgid "Edit Dynamic Widgets Options"
629
+ msgstr "Dynamic Widgets Optionen bearbeiten"
630
+
631
+ #: ../dynamic-widgets.php:589
632
+ msgid "and"
633
+ msgstr "und"
634
+
635
+ #: ../dynamic-widgets.php:595
636
+ msgid "Options set for"
637
+ msgstr "Optionen wurden gesetzt für"
638
+
639
+ #: ../dynamic-widgets.php:595
640
+ msgid "Option set for"
641
+ msgstr "Optionen wurde gesetzt für"
642
+
643
+ #~ msgid "Dynamic Widgets: "
644
+ #~ msgstr "Dynamic Widgets:"
645
+
646
+ #~ msgid "Widget"
647
+ #~ msgstr "Widget"
648
+
649
+ #~ msgid "selection"
650
+ #~ msgstr "Auswahl"
651
+
652
+ #~ msgid "This widget is"
653
+ #~ msgstr "Dieses Widget ist"
locale/dynamic-widgets-es_ES.mo ADDED
Binary file
locale/dynamic-widgets-es_ES.po ADDED
@@ -0,0 +1,665 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Dynamic Widgets en español\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2011-01-05 19:15+0100\n"
6
+ "PO-Revision-Date: 2011-01-05 19:17+0100\n"
7
+ "Last-Translator: Jacco <jacco@qurl.nl>\n"
8
+ "Language-Team: Eduardo Larequi <elarequi@gmail.com>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-KeywordsList: __;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "X-Poedit-SourceCharset: utf-8\n"
15
+ "X-Poedit-Language: Spanish\n"
16
+ "X-Poedit-Country: Spain\n"
17
+ "X-Poedit-SearchPath-0: ..\n"
18
+
19
+ # WordPress MO
20
+ #: ../dynwid_admin_edit.php:24
21
+ msgid "Anonymous"
22
+ msgstr "Anónimo"
23
+
24
+ #: ../dynwid_admin_edit.php:74
25
+ msgid "(and other Gecko based)"
26
+ msgstr ""
27
+
28
+ #: ../dynwid_admin_edit.php:80
29
+ msgid "Other / Unknown / Not detected"
30
+ msgstr ""
31
+
32
+ #: ../dynwid_admin_edit.php:185
33
+ msgid "Posts: "
34
+ msgstr "entradas: "
35
+
36
+ #: ../dynwid_admin_edit.php:185
37
+ msgid "Tags: "
38
+ msgstr "etiquetas: "
39
+
40
+ #: ../dynwid_admin_edit.php:241
41
+ #: ../dynwid_admin_edit.php:244
42
+ msgid "Front page"
43
+ msgstr "Página de inicio"
44
+
45
+ #: ../dynwid_admin_edit.php:241
46
+ #: ../dynwid_admin_edit.php:246
47
+ msgid "Posts page"
48
+ msgstr "Página de entradas"
49
+
50
+ #: ../dynwid_admin_edit.php:430
51
+ msgid "Widget options saved."
52
+ msgstr "Opciones del widget guardadas."
53
+
54
+ #: ../dynwid_admin_edit.php:430
55
+ #: ../dynwid_admin_edit.php:969
56
+ msgid "Return"
57
+ msgstr "Volver"
58
+
59
+ #: ../dynwid_admin_edit.php:430
60
+ msgid "to Dynamic Widgets overview"
61
+ msgstr "a la vista general de Dynamic Widgets"
62
+
63
+ #: ../dynwid_admin_edit.php:435
64
+ msgid "Dynamic does not mean static hiding of a widget."
65
+ msgstr "Un widget dinámico no permite ocultar estáticamente un widget."
66
+
67
+ #: ../dynwid_admin_edit.php:435
68
+ msgid "Hint"
69
+ msgstr "Pista"
70
+
71
+ #: ../dynwid_admin_edit.php:435
72
+ msgid "Remove"
73
+ msgstr "Eliminar"
74
+
75
+ #: ../dynwid_admin_edit.php:435
76
+ msgid "the widget from the sidebar"
77
+ msgstr "el widget de la barra lateral"
78
+
79
+ #: ../dynwid_admin_edit.php:439
80
+ msgid "The From date can't be later than the To date."
81
+ msgstr "La fecha del campo Desde no puede ser posterior a la fecha del campo Hasta."
82
+
83
+ #: ../dynwid_admin_edit.php:444
84
+ #, fuzzy
85
+ msgid "Edit options for the widget"
86
+ msgstr "Editar las opciones del widget"
87
+
88
+ # WordPress MO
89
+ #: ../dynwid_admin_edit.php:455
90
+ #: ../dynwid_class_php4.php:56
91
+ #: ../dynwid_class.php:50
92
+ msgid "Role"
93
+ msgstr "Perfil"
94
+
95
+ #: ../dynwid_admin_edit.php:457
96
+ msgid "Show widget to everybody?"
97
+ msgstr "¿Mostrar el widget a todo el mundo?"
98
+
99
+ #: ../dynwid_admin_edit.php:457
100
+ #: ../dynwid_admin_edit.php:477
101
+ #: ../dynwid_admin_edit.php:509
102
+ #: ../dynwid_admin_edit.php:530
103
+ #: ../dynwid_admin_edit.php:568
104
+ #: ../dynwid_admin_edit.php:582
105
+ #: ../dynwid_admin_edit.php:638
106
+ #: ../dynwid_admin_edit.php:740
107
+ msgid "Click to toggle info"
108
+ msgstr "Haz clic para mostrar/ocultar la información"
109
+
110
+ #: ../dynwid_admin_edit.php:461
111
+ msgid ""
112
+ "Setting options by role is very powerfull. It can override all other options!<br />\n"
113
+ "\t\t\t\t\t\tUsers who are not logged in, get the <em>Anonymous</em> role."
114
+ msgstr ""
115
+ "Establecer las opciones por perfil o rol es una opción muy potente. Ten en cuenta que puede sobreescribir todas las demás opciones.<br />\n"
116
+ "\t\t\t\t\t\tLos usuarios que no están conectados tienen el perfil o rol de <em>Anónimo</em>."
117
+
118
+ # WordPress MO
119
+ #: ../dynwid_admin_edit.php:465
120
+ #: ../dynwid_admin_edit.php:489
121
+ #: ../dynwid_admin_edit.php:516
122
+ #: ../dynwid_admin_edit.php:537
123
+ #: ../dynwid_admin_edit.php:560
124
+ #: ../dynwid_admin_edit.php:577
125
+ #: ../dynwid_admin_edit.php:631
126
+ #: ../dynwid_admin_edit.php:651
127
+ #: ../dynwid_admin_edit.php:713
128
+ #: ../dynwid_admin_edit.php:727
129
+ #: ../dynwid_admin_edit.php:747
130
+ #: ../dynwid_admin_edit.php:757
131
+ #: ../dynwid_admin_edit.php:766
132
+ #: ../dynwid_admin_edit.php:883
133
+ #: ../dynwid_admin_edit.php:925
134
+ #: ../dynwid_admin_edit.php:948
135
+ msgid "Yes"
136
+ msgstr "Sí"
137
+
138
+ # WordPress MO
139
+ #: ../dynwid_admin_edit.php:466
140
+ #: ../dynwid_admin_edit.php:490
141
+ #: ../dynwid_admin_edit.php:517
142
+ #: ../dynwid_admin_edit.php:538
143
+ #: ../dynwid_admin_edit.php:561
144
+ #: ../dynwid_admin_edit.php:578
145
+ #: ../dynwid_admin_edit.php:632
146
+ #: ../dynwid_admin_edit.php:652
147
+ #: ../dynwid_admin_edit.php:714
148
+ #: ../dynwid_admin_edit.php:728
149
+ #: ../dynwid_admin_edit.php:748
150
+ #: ../dynwid_admin_edit.php:758
151
+ #: ../dynwid_admin_edit.php:767
152
+ #: ../dynwid_admin_edit.php:884
153
+ #: ../dynwid_admin_edit.php:926
154
+ #: ../dynwid_admin_edit.php:949
155
+ msgid "No"
156
+ msgstr "No"
157
+
158
+ #: ../dynwid_admin_edit.php:466
159
+ msgid "only to"
160
+ msgstr "sólo a"
161
+
162
+ # WordPress MO
163
+ #: ../dynwid_admin_edit.php:475
164
+ #: ../dynwid_class_php4.php:57
165
+ #: ../dynwid_class.php:51
166
+ msgid "Date"
167
+ msgstr "Fecha"
168
+
169
+ #: ../dynwid_admin_edit.php:477
170
+ msgid "Show widget always?"
171
+ msgstr "¿Mostrar el widget siempre?"
172
+
173
+ #: ../dynwid_admin_edit.php:481
174
+ msgid "Next to the above role option, the date option is also very powerfull. You've been warned!"
175
+ msgstr "Ten en cuenta que, al igual que la opción anterior, la opción de fecha es muy potente."
176
+
177
+ #: ../dynwid_admin_edit.php:482
178
+ msgid "Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the"
179
+ msgstr "Escribe las fechas en el formato YYYY-MM-DD. Siempre puedes utilizar el calendario y hacer clic en el icono"
180
+
181
+ #: ../dynwid_admin_edit.php:483
182
+ msgid ""
183
+ "Date ranges can be made by entering a From AND a To date<br />\n"
184
+ " \t\t\t\t\tWhen you want the widget to be displayed from a specific date, only fill in the From date<br />\n"
185
+ " \t\t\t\t\tWhen you want the widget to stop displaying on a specific date, only fill in the To date.\n"
186
+ " \t\t\t\t"
187
+ msgstr ""
188
+ "Los rangos de fecha pueden definirse mediante los parámetros Desde y Hasta.<br />\n"
189
+ " \t\t\t\t\tCuando quieras que el widget se muestre a partir de una fecha específica, sólo debes llenar el campo Desde.<br />\n"
190
+ " \t\t\t\t\tCuando quieras que el widget deje de mostrarse a partir de una fecha específica, sólo debes llenar el campo Hasta.\n"
191
+ " \t\t\t\t"
192
+
193
+ #: ../dynwid_admin_edit.php:490
194
+ msgid "only"
195
+ msgstr "sólo"
196
+
197
+ #: ../dynwid_admin_edit.php:494
198
+ msgid "From"
199
+ msgstr "Desde"
200
+
201
+ #: ../dynwid_admin_edit.php:498
202
+ msgid "To"
203
+ msgstr "Hasta"
204
+
205
+ #: ../dynwid_admin_edit.php:507
206
+ msgid "Language (WPML)"
207
+ msgstr "Idioma (WPML)"
208
+
209
+ #: ../dynwid_admin_edit.php:509
210
+ msgid "Show widget default on all languages?"
211
+ msgstr "¿Quieres mostrar el widget por defecto en todos los idiomas?"
212
+
213
+ #: ../dynwid_admin_edit.php:513
214
+ msgid "Using this option can override all other options."
215
+ msgstr "Al utilizar esta opción se pueden sobreescribir todas las demás opciones."
216
+
217
+ #: ../dynwid_admin_edit.php:518
218
+ msgid "Except the languages"
219
+ msgstr "Excepto los idiomas"
220
+
221
+ #: ../dynwid_admin_edit.php:528
222
+ #: ../dynwid_class_php4.php:58
223
+ #: ../dynwid_class.php:52
224
+ msgid "Browser"
225
+ msgstr ""
226
+
227
+ #: ../dynwid_admin_edit.php:530
228
+ #, fuzzy
229
+ msgid "Show widget with all browsers?"
230
+ msgstr "¿Mostrar el widget siempre?"
231
+
232
+ #: ../dynwid_admin_edit.php:534
233
+ msgid "Browser detection is never 100% accurate."
234
+ msgstr ""
235
+
236
+ #: ../dynwid_admin_edit.php:539
237
+ #, fuzzy
238
+ msgid "Except the browser(s)"
239
+ msgstr "Excepto en las páginas del autor o autores"
240
+
241
+ #: ../dynwid_admin_edit.php:549
242
+ #: ../dynwid_class_php4.php:60
243
+ #: ../dynwid_class.php:54
244
+ msgid "Front Page"
245
+ msgstr "Página de inicio"
246
+
247
+ #: ../dynwid_admin_edit.php:551
248
+ msgid "Show widget on the front page?"
249
+ msgstr "¿Quieres mostrar el widget en la página de inicio?"
250
+
251
+ #: ../dynwid_admin_edit.php:555
252
+ msgid ""
253
+ "This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />\n"
254
+ "\t\t\t\t\t\tWhen a static page is set, you can use the options for the static pages below.\n"
255
+ "\t\t\t\t\t"
256
+ msgstr ""
257
+ "Esta opción sólo se aplica cuando la página de opción está configurada para mostrar tus últimas entradas (ve al menú Ajustes &gt; Lectura).<br />\n"
258
+ "\t\t\t\t\t\tSi configuras el blog a partir de una página estática, puedes utilizar las opciones para páginas estáticas, que aparecen a continuación.\n"
259
+ "\t\t\t\t\t"
260
+
261
+ #: ../dynwid_admin_edit.php:566
262
+ #: ../dynwid_class_php4.php:61
263
+ #: ../dynwid_class.php:55
264
+ msgid "Single Posts"
265
+ msgstr "Entradas individuales"
266
+
267
+ #: ../dynwid_admin_edit.php:568
268
+ msgid "Show widget default on single posts?"
269
+ msgstr "¿Quieres mostrar el widget por defecto en las entradas individuales?"
270
+
271
+ #: ../dynwid_admin_edit.php:572
272
+ msgid ""
273
+ "When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won't be applied.\n"
274
+ " \t\t\t\t\tIf you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.\n"
275
+ " \t\t\t\t\t"
276
+ msgstr ""
277
+ "Si defines una excepción para un autor <b>y</b> una categoría (AND), ambas condiciones deben cumplirse. De otro modo, la excepción no se aplicará.\n"
278
+ " \t\t\t\t\tSi quieres utilizar las dos reglas en una condiciión lógica excluyente (OR), debes añadir el mismo widget otra vez y aplicarle la segunda regla.\n"
279
+ " \t\t\t\t\t"
280
+
281
+ #: ../dynwid_admin_edit.php:581
282
+ msgid "Make exception rule available to individual posts and tags."
283
+ msgstr "Definir una excepción para las entradas individuales y las etiquetas"
284
+
285
+ #: ../dynwid_admin_edit.php:585
286
+ msgid ""
287
+ "When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.\n"
288
+ "\t\t\t\t\t\tYou can set the exception rule for tags in the single Edit Tag Panel (go to <a href=\"edit-tags.php?taxonomy=post_tag\">Post Tags</a>,\n"
289
+ "\t\t\t\t\t\tclick a tag), For individual posts in the <a href=\"post-new.php\">New</a> or <a href=\"edit.php\">Edit</a> Posts panel.\n"
290
+ "\t\t\t\t\t\tException rules for tags and individual posts in any combination work independantly, but will always be counted as one exception.<br />\n"
291
+ " \t\t\t\t\tPlease note when exception rules are set for Author and/or Category, these will be removed.\n"
292
+ " \t\t\t\t"
293
+ msgstr ""
294
+ "Cuando actives esta opción, tendrás la capacidad de aplicar las excepciones definidas en esta sección tanto a las etiquetas como a las entradas individuales.\n"
295
+ "\t\t\t\t\t\tPuedes establecer las excepciones para las etiquetas en el panel de edición de etiquetas (para ello, ve al menú <a href=\"edit-tags.php?taxonomy=post_tag\">Etiquetas de las entradas</a>,\n"
296
+ "\t\t\t\t\t\ty haz clic en una etiqueta). Para las entradas individuales, ve a las opciones <a href=\"post-new.php\">Añadir nueva</a> o <a href=\"edit.php\">Entradas</a>, en la sección Entradas del menú.\n"
297
+ "\t\t\t\t\t\tLas excepciones para las etiquetas y las entradas individuales funcionan de forma independiente en cualquier combinación, pero siempre se contabilizarán como una única excepción.<br />\n"
298
+ " \t\t\t\t\tDebes tener en cuenta que si defines excepciones para las páginas de autor o de categoría, las que hayas definido en esta sección se eliminarán.\n"
299
+ " \t\t\t\t"
300
+
301
+ #: ../dynwid_admin_edit.php:602
302
+ msgid "Except the posts by author"
303
+ msgstr "Excepto en las entradas del autor"
304
+
305
+ #: ../dynwid_admin_edit.php:613
306
+ msgid "Except the posts in category"
307
+ msgstr "Excepto en las entradas de la categoría"
308
+
309
+ #: ../dynwid_admin_edit.php:627
310
+ #: ../dynwid_class_php4.php:62
311
+ #: ../dynwid_class.php:56
312
+ msgid "Attachments"
313
+ msgstr ""
314
+
315
+ #: ../dynwid_admin_edit.php:629
316
+ #, fuzzy
317
+ msgid "Show widget on attachment pages"
318
+ msgstr "¿Quieres mostrar el widget en las páginas de archivo o índice"
319
+
320
+ # WordPress MO
321
+ #: ../dynwid_admin_edit.php:636
322
+ #: ../dynwid_class_php4.php:63
323
+ #: ../dynwid_class.php:57
324
+ msgid "Pages"
325
+ msgstr "Páginas"
326
+
327
+ #: ../dynwid_admin_edit.php:638
328
+ msgid "Show widget default on static pages?"
329
+ msgstr "¿Quieres mostrar el widget por defecto en las páginas estáticas?"
330
+
331
+ #: ../dynwid_admin_edit.php:643
332
+ msgid ""
333
+ "Checking the \"All childs\" option, makes the exception rule apply\n"
334
+ "\t\t\t\tto the parent and all items under it in all levels. Also future items\n"
335
+ "\t\t\t\tunder the parent. It's not possible to apply an exception rule to\n"
336
+ "\t\t\t\t\"All childs\" without the parent."
337
+ msgstr ""
338
+ "Si marcas la opción \"Todas las páginas-hijas\", la excepción se aplicará\n"
339
+ "\t\t\t\ta la página padre y a todas las páginas-hijas que dependan de ella, a todos los niveles, incluyendo las futuras páginas-hijas.\n"
340
+ "\t\t\t\tNo es posible aplicar una excepción a\n"
341
+ "\t\t\t\t\"Todas las páginas-hijas\" sin incluir previamente la página-padre."
342
+
343
+ #: ../dynwid_admin_edit.php:653
344
+ msgid "Except the page(s)"
345
+ msgstr "Excepto en la(s) página(s)"
346
+
347
+ #: ../dynwid_admin_edit.php:692
348
+ #: ../dynwid_admin_edit.php:807
349
+ msgid "All childs"
350
+ msgstr "Todas las páginas-hijas"
351
+
352
+ #: ../dynwid_admin_edit.php:709
353
+ #: ../dynwid_class_php4.php:64
354
+ #: ../dynwid_class.php:58
355
+ msgid "Author Pages"
356
+ msgstr "Páginas de autor"
357
+
358
+ #: ../dynwid_admin_edit.php:711
359
+ msgid "Show widget default on author pages?"
360
+ msgstr "¿Quieres mostrar el widget por defecto en las páginas de autor?"
361
+
362
+ #: ../dynwid_admin_edit.php:715
363
+ msgid "Except the author(s)"
364
+ msgstr "Excepto en las páginas del autor o autores"
365
+
366
+ #: ../dynwid_admin_edit.php:723
367
+ #: ../dynwid_class_php4.php:65
368
+ #: ../dynwid_class.php:59
369
+ msgid "Category Pages"
370
+ msgstr "Páginas de categoría"
371
+
372
+ #: ../dynwid_admin_edit.php:725
373
+ msgid "Show widget default on category pages?"
374
+ msgstr "¿Quieres mostrar el widget por defecto en las páginas por categorías?"
375
+
376
+ #: ../dynwid_admin_edit.php:729
377
+ #: ../dynwid_admin_edit.php:950
378
+ msgid "Except the categories"
379
+ msgstr "Excepto en las páginas de las categorías"
380
+
381
+ #: ../dynwid_admin_edit.php:738
382
+ #: ../dynwid_class_php4.php:66
383
+ #: ../dynwid_class.php:60
384
+ msgid "Archive Pages"
385
+ msgstr "Páginas de archivo o índice"
386
+
387
+ #: ../dynwid_admin_edit.php:740
388
+ msgid "Show widget on archive pages"
389
+ msgstr "¿Quieres mostrar el widget en las páginas de archivo o índice"
390
+
391
+ #: ../dynwid_admin_edit.php:744
392
+ msgid "This option does not include Author and Category Pages."
393
+ msgstr "Esta opción no incluye las páginas de autor y de categorías."
394
+
395
+ #: ../dynwid_admin_edit.php:753
396
+ #: ../dynwid_class_php4.php:67
397
+ #: ../dynwid_class.php:61
398
+ msgid "Error Page"
399
+ msgstr "Página de error"
400
+
401
+ #: ../dynwid_admin_edit.php:755
402
+ msgid "Show widget on the error page?"
403
+ msgstr "¿Quieres mostrar el widget en la página de error?"
404
+
405
+ #: ../dynwid_admin_edit.php:762
406
+ msgid "Search Page"
407
+ msgstr "Página de búsqueda"
408
+
409
+ #: ../dynwid_admin_edit.php:764
410
+ msgid "Show widget on the search page?"
411
+ msgstr "¿Quieres mostrar el widget en la página de búsqueda?"
412
+
413
+ #: ../dynwid_admin_edit.php:869
414
+ msgid "Custom Post Type"
415
+ msgstr "Tipo de contenido personalizado"
416
+
417
+ #: ../dynwid_admin_edit.php:871
418
+ msgid "Show widget on"
419
+ msgstr "¿Quieres mostrar el widget en"
420
+
421
+ #: ../dynwid_admin_edit.php:886
422
+ #: ../dynwid_admin_edit.php:928
423
+ msgid "Except for"
424
+ msgstr "Excepto para"
425
+
426
+ #: ../dynwid_admin_edit.php:920
427
+ #, fuzzy
428
+ msgid "Custom Post Type Archives"
429
+ msgstr "Tipo de contenido personalizado"
430
+
431
+ #: ../dynwid_admin_edit.php:922
432
+ #, fuzzy
433
+ msgid "Show widget on Custom Post Type Archives"
434
+ msgstr "¿Quieres mostrar el widget en la página de búsqueda?"
435
+
436
+ #: ../dynwid_admin_edit.php:944
437
+ #: ../dynwid_class_php4.php:69
438
+ #: ../dynwid_class.php:63
439
+ msgid "WPSC Category"
440
+ msgstr "Categoría WPSC (WP Shopping Cart)"
441
+
442
+ #: ../dynwid_admin_edit.php:946
443
+ msgid "Show widget default on WPSC categories?"
444
+ msgstr "¿Quieres mostrar el widget por defecto en las categorías del plugin WPSC?"
445
+
446
+ # WordPress MO
447
+ #: ../dynwid_admin_edit.php:965
448
+ msgid "Save"
449
+ msgstr "Guardar"
450
+
451
+ #: ../dynwid_class_php4.php:59
452
+ #: ../dynwid_class.php:53
453
+ msgid "Language"
454
+ msgstr "Idioma"
455
+
456
+ #: ../dynwid_class_php4.php:68
457
+ #: ../dynwid_class.php:62
458
+ msgid "Search page"
459
+ msgstr "Página de búsqueda"
460
+
461
+ #: ../dynwid_admin.php:10
462
+ #: ../dynamic-widgets.php:139
463
+ #: ../dynamic-widgets.php:218
464
+ #: ../dynamic-widgets.php:563
465
+ msgid "Dynamic Widgets"
466
+ msgstr "Widgets dinámicos"
467
+
468
+ #: ../dynwid_admin.php:16
469
+ msgid "<b>WARNING</b> STRICT sql mode in effect. Dynamic Widgets might not work correctly. Please disable STRICT sql mode."
470
+ msgstr "<b>AVISO</b> El modo SQL STRICT está activado, y por tanto el plugin Dynamic Widgets podría no funcionar correctamente. Por favor, desacitva el modo SQL STRICT."
471
+
472
+ #: ../dynwid_admin.php:36
473
+ msgid "Oops! Something went terrible wrong. Please reinstall Dynamic Widgets."
474
+ msgstr "Lo sentimos, pero algo ha funcionado mal. Por favor, reinstala el plugin Dynamic Widgets."
475
+
476
+ #: ../dynwid_admin.php:44
477
+ #: ../dynwid_admin_overview.php:28
478
+ msgid "OLD"
479
+ msgstr "ANTIGUO"
480
+
481
+ #: ../dynwid_admin.php:44
482
+ #: ../dynwid_admin_overview.php:28
483
+ msgid "FILTER"
484
+ msgstr "FILTRO"
485
+
486
+ #: ../dynwid_admin_overview.php:15
487
+ msgid "Widget options have been reset to default."
488
+ msgstr "Las opciones del widget se han devuelto a su configuración por defecto."
489
+
490
+ #: ../dynwid_admin_overview.php:28
491
+ msgid "Method set to"
492
+ msgstr "El método ha sido establecido a"
493
+
494
+ #: ../dynwid_admin_overview.php:36
495
+ msgid "Inactive Widgets"
496
+ msgstr "Widgets inactivos"
497
+
498
+ #: ../dynwid_admin_overview.php:59
499
+ #: ../dynwid_admin_overview.php:62
500
+ msgid "Edit this widget options"
501
+ msgstr "Editar las opciones de este widget"
502
+
503
+ # WordPress MO
504
+ #: ../dynwid_admin_overview.php:62
505
+ msgid "Edit"
506
+ msgstr "Editar"
507
+
508
+ #: ../dynwid_admin_overview.php:67
509
+ msgid "Reset widget to Static"
510
+ msgstr "Restablecer el widget y hacerlo estático"
511
+
512
+ #: ../dynwid_admin_overview.php:67
513
+ #: ../dynamic-widgets.php:131
514
+ msgid "Reset"
515
+ msgstr "Restablecer"
516
+
517
+ #: ../dynwid_admin_overview.php:73
518
+ #: ../dynamic-widgets.php:128
519
+ #: ../dynamic-widgets.php:130
520
+ #: ../dynamic-widgets.php:565
521
+ msgid "Dynamic"
522
+ msgstr "Dinámico"
523
+
524
+ #: ../dynwid_admin_overview.php:73
525
+ #: ../dynamic-widgets.php:128
526
+ #: ../dynamic-widgets.php:129
527
+ #: ../dynamic-widgets.php:132
528
+ #: ../dynamic-widgets.php:565
529
+ msgid "Static"
530
+ msgstr "Estático"
531
+
532
+ #: ../dynwid_admin_overview.php:88
533
+ msgid "Advanced"
534
+ msgstr "Avanzado"
535
+
536
+ #: ../dynwid_admin_overview.php:90
537
+ msgid "wp_head() check:"
538
+ msgstr "Comprobación de wp_head:"
539
+
540
+ #: ../dynwid_admin_overview.php:95
541
+ msgid "wp_head() is NOT called (at the most obvious place)"
542
+ msgstr "la función wp_head no ha sido invocada (al menos, en su ubicación habitual)"
543
+
544
+ #: ../dynwid_admin_overview.php:99
545
+ msgid "wp_head() is called"
546
+ msgstr "la función wp_head() ha sido invocada"
547
+
548
+ #: ../dynwid_admin_overview.php:103
549
+ msgid "Unable to determine if wp_head() is called"
550
+ msgstr "el plugin ha sido incapaz de determinar si se ha invocado la función wp_head()"
551
+
552
+ #: ../dynwid_admin_overview.php:114
553
+ msgid "Use 'OLD' method"
554
+ msgstr "Utilizar el método 'Antiguo'"
555
+
556
+ #: ../dynwid_admin_overview.php:119
557
+ msgid "For debugging purposes it is possible you're asked to create a dump. Click the 'Create dump' button and save the text file."
558
+ msgstr "A efectos de depuración, es posible que se te pida crear un volcado. Haz clic en el botón 'Crear volcado' y guarda el fichero de texto."
559
+
560
+ #: ../dynwid_admin_overview.php:124
561
+ msgid "Create dump"
562
+ msgstr "Crear volcado"
563
+
564
+ #: ../dynwid_admin_overview.php:130
565
+ msgid "When you deceide not to use this plugin anymore (sorry to hear that!). You can cleanup all settings and data related to this plugin by clicking on the 'Uninstall' button. This process is irreversible! After the cleanup the plugin is deactivated automaticly."
566
+ msgstr "Si decides no utilizar más este plugin, puedes eliminar todos las opciones de configuración y los datos relacionados con él haciendo clic en el botón 'Desinstalar'. Ten en cuenta que este proceso es irreversible. Una vez hecha la limpieza, el plugin se desactivará de forma automática."
567
+
568
+ #: ../dynwid_admin_overview.php:135
569
+ msgid "Uninstall"
570
+ msgstr "Desinstalar"
571
+
572
+ #: ../dynamic-widgets.php:124
573
+ msgid "Widgets are always displayed by default"
574
+ msgstr "Los widgets siempre se muestran por defecto"
575
+
576
+ #: ../dynamic-widgets.php:124
577
+ msgid "The '<em>Yes</em>' selection"
578
+ msgstr "La opción '<em>Sí</em>'"
579
+
580
+ #: ../dynamic-widgets.php:125
581
+ msgid "Click on the"
582
+ msgstr "Haz clic en el botón"
583
+
584
+ #: ../dynamic-widgets.php:125
585
+ msgid "next to the options for more info"
586
+ msgstr "siguiente de las opciones para obtener más información"
587
+
588
+ #: ../dynamic-widgets.php:126
589
+ msgid "The"
590
+ msgstr "El"
591
+
592
+ #: ../dynamic-widgets.php:126
593
+ msgid "next to a section means it has options set."
594
+ msgstr "junto a una sección significa que se han establecido opciones."
595
+
596
+ #: ../dynamic-widgets.php:129
597
+ msgid "When a widget is"
598
+ msgstr "Cuando un widget es"
599
+
600
+ #: ../dynamic-widgets.php:129
601
+ msgid "the widget uses the WordPress default. In other words, it's shown everywhere"
602
+ msgstr "el widget utiliza la configuración por defecto de WordPress. En otras palabras, se muestra en todas partes."
603
+
604
+ #: ../dynamic-widgets.php:130
605
+ msgid "A widget is"
606
+ msgstr "Un widget es"
607
+
608
+ #: ../dynamic-widgets.php:130
609
+ msgid "when there are options set, i.e. not showing on the front page."
610
+ msgstr "cuando se han definido opciones para él; por ejemplo, cuando no se muestra en la página de inicio."
611
+
612
+ #: ../dynamic-widgets.php:132
613
+ msgid "Reset makes the widget return to"
614
+ msgstr "El botón de Restablecer hace que el widget vuelva a"
615
+
616
+ # WordPress MO
617
+ #: ../dynamic-widgets.php:171
618
+ msgid "Settings"
619
+ msgstr "Configuración"
620
+
621
+ #: ../dynamic-widgets.php:185
622
+ msgid "Apply exception rule to widgets:"
623
+ msgstr "Aplicar una excepción a los siguientes widgets:"
624
+
625
+ #: ../dynamic-widgets.php:201
626
+ msgid "Off"
627
+ msgstr "desactivado"
628
+
629
+ #: ../dynamic-widgets.php:201
630
+ msgid "On"
631
+ msgstr "activado"
632
+
633
+ #: ../dynamic-widgets.php:202
634
+ msgid " (Default: "
635
+ msgstr " (Por defecto: "
636
+
637
+ #: ../dynamic-widgets.php:299
638
+ msgid "Dynamic Widgets Options saved"
639
+ msgstr "Se han guardado las opciones del plugin Dynamic Widgets"
640
+
641
+ #: ../dynamic-widgets.php:299
642
+ msgid "for"
643
+ msgstr "para"
644
+
645
+ #: ../dynamic-widgets.php:564
646
+ msgid "Edit Dynamic Widgets Options"
647
+ msgstr "Editar las opciones de los widgets dinámicos"
648
+
649
+ #: ../dynamic-widgets.php:589
650
+ msgid "and"
651
+ msgstr "y"
652
+
653
+ #: ../dynamic-widgets.php:595
654
+ msgid "Options set for"
655
+ msgstr "Opciones establecidas para"
656
+
657
+ #: ../dynamic-widgets.php:595
658
+ msgid "Option set for"
659
+ msgstr "Opción establecida para"
660
+
661
+ #~ msgid "Dynamic Widgets: "
662
+ #~ msgstr "Widgets dinámicos: "
663
+
664
+ #~ msgid "Front page, Posts page"
665
+ #~ msgstr "Página de inicio, Página de entradas"
locale/dynamic-widgets-fr_FR.mo CHANGED
Binary file
locale/dynamic-widgets-fr_FR.po CHANGED
@@ -2,9 +2,9 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Dynamic Widgets\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-11-07 20:42+0100\n"
6
- "PO-Revision-Date: 2010-11-07 20:44+0100\n"
7
- "Last-Translator: Alexis NOMINE <alexis.nomine@gmail.com>\n"
8
  "Language-Team: Alexis NOMINE <alexis@nomine.fr>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
@@ -17,210 +17,101 @@ msgstr ""
17
  "X-Poedit-Country: FRANCE\n"
18
  "X-Poedit-SearchPath-0: ..\n"
19
 
20
- #: ../dynamic-widgets.php:118
21
- msgid "Widgets are always displayed by default"
22
- msgstr "Les widgets sont affichés partout par défaut"
23
-
24
- #: ../dynamic-widgets.php:118
25
- msgid "The '<em>Yes</em>' selection"
26
- msgstr "Case '<em>Oui</em>' cochée"
27
-
28
- #: ../dynamic-widgets.php:119
29
- msgid "Click on the"
30
- msgstr "Cliquez sur"
31
-
32
- #: ../dynamic-widgets.php:119
33
- msgid "next to the options for more info"
34
- msgstr "à côté de chaque réglage pour plus d'informations"
35
-
36
- #: ../dynamic-widgets.php:121
37
- #: ../dynamic-widgets.php:122
38
- #: ../dynamic-widgets.php:125
39
- #: ../dynamic-widgets.php:563
40
- #: ../dynwid_admin_overview.php:73
41
- msgid "Static"
42
- msgstr "Statique"
43
-
44
- #: ../dynamic-widgets.php:121
45
- #: ../dynamic-widgets.php:123
46
- #: ../dynamic-widgets.php:563
47
- #: ../dynwid_admin_overview.php:73
48
- msgid "Dynamic"
49
- msgstr "Dynamique"
50
-
51
- #: ../dynamic-widgets.php:122
52
- msgid "When a widget is"
53
- msgstr "Quand un widget est"
54
-
55
- #: ../dynamic-widgets.php:122
56
- msgid "the widget uses the WordPress default. In other words, it's shown everywhere"
57
- msgstr "le widget utilise le paramétrage par défaut de WordPress et est affiché partout"
58
-
59
- #: ../dynamic-widgets.php:123
60
- msgid "A widget is"
61
- msgstr "Un widget est"
62
-
63
- #: ../dynamic-widgets.php:123
64
- msgid "when there are options set, i.e. not showing on the front page."
65
- msgstr "quand des réglages s'appliquent (par exemple masquer sur la page d'accueil)."
66
-
67
- #: ../dynamic-widgets.php:124
68
- #: ../dynwid_admin_overview.php:67
69
- msgid "Reset"
70
- msgstr "Réinitialiser"
71
-
72
- #: ../dynamic-widgets.php:125
73
- msgid "Reset makes the widget return to"
74
- msgstr "La réinirialisation rendra le widget à nouveau"
75
-
76
  # WordPress MO
77
- #: ../dynamic-widgets.php:169
78
- msgid "Settings"
79
  msgstr ""
80
 
81
- #: ../dynamic-widgets.php:562
82
- msgid "This widget is"
83
- msgstr "Ce widget est"
84
-
85
- # WordPress MO
86
- #: ../dynamic-widgets.php:568
87
- #: ../dynwid_admin_edit.php:366
88
- msgid "Role"
89
  msgstr ""
90
 
91
- # WordPress MO
92
- #: ../dynamic-widgets.php:569
93
- #: ../dynwid_admin_edit.php:386
94
- msgid "Date"
95
  msgstr ""
96
 
97
- #: ../dynamic-widgets.php:570
98
- #: ../dynwid_admin_edit.php:417
99
- msgid "Front Page"
100
- msgstr "Page d'accueil"
101
-
102
- #: ../dynamic-widgets.php:571
103
- #: ../dynwid_admin_edit.php:433
104
- msgid "Single Posts"
105
- msgstr "Article"
106
-
107
- # WordPress MO
108
- #: ../dynamic-widgets.php:572
109
- #: ../dynwid_admin_edit.php:494
110
- msgid "Pages"
111
- msgstr "Pages statiques"
112
-
113
- #: ../dynamic-widgets.php:573
114
- #: ../dynwid_admin_edit.php:509
115
- msgid "Author Pages"
116
- msgstr "Pages d'auteur"
117
-
118
- #: ../dynamic-widgets.php:574
119
- #: ../dynwid_admin_edit.php:523
120
- msgid "Category Pages"
121
- msgstr "Pages de catégorie"
122
-
123
- #: ../dynamic-widgets.php:575
124
- #: ../dynwid_admin_edit.php:538
125
- msgid "Archive Pages"
126
- msgstr "Pages d'archives"
127
-
128
- #: ../dynamic-widgets.php:576
129
- #: ../dynwid_admin_edit.php:552
130
- msgid "Error Page"
131
- msgstr "Pages d'erreur"
132
-
133
- #: ../dynamic-widgets.php:577
134
- msgid "Search page"
135
- msgstr "Page de recherche"
136
-
137
- #: ../dynamic-widgets.php:578
138
- #: ../dynwid_admin_edit.php:632
139
- msgid "WPSC Category"
140
- msgstr "Catégorie \"WordPress Shopping Cart\""
141
-
142
- #: ../dynamic-widgets.php:613
143
- msgid "and"
144
- msgstr "et"
145
-
146
- #: ../dynamic-widgets.php:619
147
- msgid "Options set for"
148
- msgstr "Réglages pour"
149
-
150
- #: ../dynamic-widgets.php:619
151
- msgid "Option set for"
152
- msgstr "Réglages pour"
153
-
154
- #: ../dynwid_admin.php:16
155
- msgid "<b>WARNING</b> STRICT sql mode in effect. Dynamic Widgets might not work correctly. Please disable STRICT sql mode."
156
- msgstr "<b>Attention!</b> Le mode SQL STRICT est activé. Dynamic Widgets pourrait ne pas fonctionner correctement. Merci de désactiver le mode SQL STRICT."
157
-
158
- #: ../dynwid_admin.php:36
159
- msgid "Oops! Something went terrible wrong. Please reinstall Dynamic Widgets."
160
- msgstr "Oups! Quelque chose à mal tourné. Merci de réinstaller Dynamic Widgets."
161
-
162
- #: ../dynwid_admin.php:44
163
- #: ../dynwid_admin_overview.php:28
164
- msgid "OLD"
165
  msgstr ""
166
 
167
- #: ../dynwid_admin.php:44
168
- #: ../dynwid_admin_overview.php:28
169
- msgid "FILTER"
170
  msgstr ""
171
 
172
- # WordPress MO
173
- #: ../dynwid_admin_edit.php:22
174
- msgid "Anonymous"
175
- msgstr ""
 
176
 
177
- #: ../dynwid_admin_edit.php:342
 
 
 
 
 
 
178
  msgid "Widget options saved."
179
  msgstr "Options du widget sauvegardées."
180
 
181
- #: ../dynwid_admin_edit.php:342
182
- #: ../dynwid_admin_edit.php:653
183
  msgid "Return"
184
  msgstr "Retour"
185
 
186
- #: ../dynwid_admin_edit.php:342
187
  msgid "to Dynamic Widgets overview"
188
  msgstr "à la vue générale Dynamic Widget"
189
 
190
- #: ../dynwid_admin_edit.php:347
191
  msgid "Dynamic does not mean static hiding of a widget."
192
  msgstr "Dynamic ne permet pas de masquer statiquement un widget"
193
 
194
- #: ../dynwid_admin_edit.php:347
195
  msgid "Hint"
196
  msgstr "Astuce"
197
 
198
- #: ../dynwid_admin_edit.php:347
199
  msgid "Remove"
200
  msgstr "Effacer"
201
 
202
- #: ../dynwid_admin_edit.php:347
203
  msgid "the widget from the sidebar"
204
  msgstr "le widget de la barre latérale"
205
 
206
- #: ../dynwid_admin_edit.php:351
207
  msgid "The From date can't be later than the To date."
208
  msgstr "La date de début doit être inférieure à la date de fin."
209
 
210
- #: ../dynwid_admin_edit.php:356
211
- msgid "Edit options for"
 
212
  msgstr "Modifier les réglages de"
213
 
214
  # WordPress MO
215
- #: ../dynwid_admin_edit.php:356
216
- msgid "Widget"
 
 
217
  msgstr ""
218
 
219
- #: ../dynwid_admin_edit.php:368
220
  msgid "Show widget to everybody?"
221
  msgstr "Afficher le widget pour tout le monde?"
222
 
223
- #: ../dynwid_admin_edit.php:372
 
 
 
 
 
 
 
 
 
 
 
 
224
  msgid ""
225
  "Setting options by role is very powerfull. It can override all other options!<br />\n"
226
  "\t\t\t\t\t\tUsers who are not logged in, get the <em>Anonymous</em> role."
@@ -229,54 +120,69 @@ msgstr ""
229
  "\t\t\t\t\t\tLe rôle <em>Anonyme</em> correspond aux utilisateurs non connectés."
230
 
231
  # WordPress MO
232
- #: ../dynwid_admin_edit.php:376
233
- #: ../dynwid_admin_edit.php:400
234
- #: ../dynwid_admin_edit.php:428
235
- #: ../dynwid_admin_edit.php:444
236
- #: ../dynwid_admin_edit.php:498
237
- #: ../dynwid_admin_edit.php:513
238
- #: ../dynwid_admin_edit.php:527
239
- #: ../dynwid_admin_edit.php:547
240
- #: ../dynwid_admin_edit.php:556
241
- #: ../dynwid_admin_edit.php:565
242
- #: ../dynwid_admin_edit.php:611
243
- #: ../dynwid_admin_edit.php:636
 
 
 
 
244
  msgid "Yes"
245
  msgstr ""
246
 
247
  # WordPress MO
248
- #: ../dynwid_admin_edit.php:377
249
- #: ../dynwid_admin_edit.php:401
250
- #: ../dynwid_admin_edit.php:429
251
- #: ../dynwid_admin_edit.php:445
252
- #: ../dynwid_admin_edit.php:499
253
- #: ../dynwid_admin_edit.php:514
254
- #: ../dynwid_admin_edit.php:528
255
- #: ../dynwid_admin_edit.php:548
256
- #: ../dynwid_admin_edit.php:557
257
- #: ../dynwid_admin_edit.php:566
258
- #: ../dynwid_admin_edit.php:612
259
- #: ../dynwid_admin_edit.php:637
 
 
 
 
260
  msgid "No"
261
  msgstr ""
262
 
263
- #: ../dynwid_admin_edit.php:377
264
  msgid "only to"
265
  msgstr "seulement à"
266
 
267
- #: ../dynwid_admin_edit.php:388
 
 
 
 
 
 
 
268
  msgid "Show widget always?"
269
  msgstr "Toujours afficher le widget?"
270
 
271
- #: ../dynwid_admin_edit.php:392
272
  msgid "Next to the above role option, the date option is also very powerfull. You've been warned!"
273
  msgstr "Les réglages de dates sont relativement puissants et permettent de passer outre tous les autres réglages!"
274
 
275
- #: ../dynwid_admin_edit.php:393
276
  msgid "Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the"
277
  msgstr "Entrer la date au format AAAA-MM-JJ. Vous pouvez aussi utiliser le calendrier en cliquant sur"
278
 
279
- #: ../dynwid_admin_edit.php:394
280
  msgid ""
281
  "Date ranges can be made by entering a From AND a To date<br />\n"
282
  " \t\t\t\t\tWhen you want the widget to be displayed from a specific date, only fill in the From date<br />\n"
@@ -288,23 +194,67 @@ msgstr ""
288
  " \t\t\t\t\tSi vous voulez masquer le widget à partir d'une certaine date seulement, remplissez uniquement la date de fin.\n"
289
  " \t\t\t\t"
290
 
291
- #: ../dynwid_admin_edit.php:401
292
  msgid "only"
293
  msgstr "uniquement"
294
 
295
- #: ../dynwid_admin_edit.php:405
296
  msgid "From"
297
  msgstr "Du"
298
 
299
- #: ../dynwid_admin_edit.php:409
300
  msgid "To"
301
  msgstr "Au"
302
 
303
- #: ../dynwid_admin_edit.php:419
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
  msgid "Show widget on the front page?"
305
  msgstr "Afficher le widget sur la page d'accueil?"
306
 
307
- #: ../dynwid_admin_edit.php:423
308
  msgid ""
309
  "This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />\n"
310
  "\t\t\t\t\t\tWhen a static page is set, you can use the options for the static pages below.\n"
@@ -314,11 +264,17 @@ msgstr ""
314
  "\t\t\t\t\t\tSi votre page d'accueil est configurée comme une page statique, vous pouvez utiliser les réglages des pages statiques ci-dessous.\n"
315
  "\t\t\t\t\t"
316
 
317
- #: ../dynwid_admin_edit.php:435
 
 
 
 
 
 
318
  msgid "Show widget default on single posts?"
319
  msgstr "Afficher le widget sur chaque page d'article?"
320
 
321
- #: ../dynwid_admin_edit.php:439
322
  msgid ""
323
  "When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won't be applied.\n"
324
  " \t\t\t\t\tIf you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.\n"
@@ -328,11 +284,11 @@ msgstr ""
328
  " \t\t\t\t\tSi vous voulez etiliser une règle <b>OU</b> l'autre, ajoutez un widget identique et appliquez-lui d'autres règles.\n"
329
  " \t\t\t\t\t"
330
 
331
- #: ../dynwid_admin_edit.php:448
332
  msgid "Make exception rule available to individual posts and tags."
333
  msgstr "Permettre le réglage pour chaque article ou mot clé individuellement."
334
 
335
- #: ../dynwid_admin_edit.php:452
336
  msgid ""
337
  "When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.\n"
338
  "\t\t\t\t\t\tYou can set the exception rule for tags in the single Edit Tag Panel (go to <a href=\"edit-tags.php?taxonomy=post_tag\">Post Tags</a>,\n"
@@ -348,80 +304,188 @@ msgstr ""
348
  " \t\t\t\t\tAttention! Ces règles seront effacées si des règles sont appliquées concernant les auteurs ou catégories. \n"
349
  " \t\t\t\t"
350
 
351
- #: ../dynwid_admin_edit.php:469
352
  msgid "Except the posts by author"
353
  msgstr "Sauf les articles de l'auteur suivant"
354
 
355
- #: ../dynwid_admin_edit.php:480
356
  msgid "Except the posts in category"
357
  msgstr "Sauf les articles appartenant à la catégorie"
358
 
359
- #: ../dynwid_admin_edit.php:496
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  msgid "Show widget default on static pages?"
361
  msgstr "Afficher le widget sur les pages statiques?"
362
 
363
- #: ../dynwid_admin_edit.php:500
 
 
 
 
 
 
 
 
364
  msgid "Except the page(s)"
365
  msgstr "Sauf la/les page(s)"
366
 
367
- #: ../dynwid_admin_edit.php:511
 
 
 
 
 
 
 
 
 
 
 
368
  msgid "Show widget default on author pages?"
369
  msgstr "Afficher le widget sur les pages d'auteur"
370
 
371
- #: ../dynwid_admin_edit.php:515
372
  msgid "Except the author(s)"
373
  msgstr "Sauf le/les auteur(s)"
374
 
375
- #: ../dynwid_admin_edit.php:525
 
 
 
 
 
 
376
  msgid "Show widget default on category pages?"
377
  msgstr "Afficher le widget sur les pages de catégorie?"
378
 
379
- #: ../dynwid_admin_edit.php:529
380
- #: ../dynwid_admin_edit.php:638
381
  msgid "Except the categories"
382
  msgstr "Sauf les catégories"
383
 
384
- #: ../dynwid_admin_edit.php:540
 
 
 
 
 
 
385
  msgid "Show widget on archive pages"
386
  msgstr "Afficher le widget sur les pages d'archives"
387
 
388
- #: ../dynwid_admin_edit.php:544
389
  msgid "This option does not include Author and Category Pages."
390
  msgstr "Ce réglage ne s'applique ni aux pages d'auteur ni aux pages de catégorie"
391
 
392
- #: ../dynwid_admin_edit.php:554
 
 
 
 
 
 
393
  msgid "Show widget on the error page?"
394
  msgstr "Afficher le widget sur les pages d'erreur?"
395
 
396
- #: ../dynwid_admin_edit.php:561
397
  msgid "Search Page"
398
  msgstr "Page de recherche"
399
 
400
- #: ../dynwid_admin_edit.php:563
401
  msgid "Show widget on the search page?"
402
  msgstr "Afficher le widget sur les pages de recherche?"
403
 
404
- #: ../dynwid_admin_edit.php:606
405
  msgid "Custom Post Type"
406
  msgstr "Types de contenu personnalisés"
407
 
408
- #: ../dynwid_admin_edit.php:608
409
  msgid "Show widget on"
410
  msgstr "Afficher le widget pour"
411
 
412
- #: ../dynwid_admin_edit.php:614
 
413
  msgid "Except for"
414
  msgstr "Sauf pour"
415
 
416
- #: ../dynwid_admin_edit.php:634
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
417
  msgid "Show widget default on WPSC categories?"
418
  msgstr "Afficher le widget pour les catégories \"WordPress Shopping Cart\""
419
 
420
  # WordPress MO
421
- #: ../dynwid_admin_edit.php:649
422
  msgid "Save"
423
  msgstr ""
424
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
425
  #: ../dynwid_admin_overview.php:15
426
  msgid "Widget options have been reset to default."
427
  msgstr "Les réglages du widget ont été réinitialisées"
@@ -430,6 +494,10 @@ msgstr "Les réglages du widget ont été réinitialisées"
430
  msgid "Method set to"
431
  msgstr ""
432
 
 
 
 
 
433
  #: ../dynwid_admin_overview.php:59
434
  #: ../dynwid_admin_overview.php:62
435
  msgid "Edit this widget options"
@@ -444,13 +512,160 @@ msgstr ""
444
  msgid "Reset widget to Static"
445
  msgstr "Rendre ce widget statique"
446
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
447
  #: ../dynwid_admin_overview.php:88
448
  msgid "Advanced"
449
  msgstr "Avancé"
450
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
451
  #, fuzzy
452
- #~ msgid "The"
453
- #~ msgstr "Le"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
454
 
455
  #~ msgid "selection"
456
  #~ msgstr "sélection"
2
  msgstr ""
3
  "Project-Id-Version: Dynamic Widgets\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2011-01-05 19:15+0100\n"
6
+ "PO-Revision-Date: 2011-01-05 19:17+0100\n"
7
+ "Last-Translator: Jacco <jacco@qurl.nl>\n"
8
  "Language-Team: Alexis NOMINE <alexis@nomine.fr>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
17
  "X-Poedit-Country: FRANCE\n"
18
  "X-Poedit-SearchPath-0: ..\n"
19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  # WordPress MO
21
+ #: ../dynwid_admin_edit.php:24
22
+ msgid "Anonymous"
23
  msgstr ""
24
 
25
+ #: ../dynwid_admin_edit.php:74
26
+ msgid "(and other Gecko based)"
 
 
 
 
 
 
27
  msgstr ""
28
 
29
+ #: ../dynwid_admin_edit.php:80
30
+ msgid "Other / Unknown / Not detected"
 
 
31
  msgstr ""
32
 
33
+ #: ../dynwid_admin_edit.php:185
34
+ msgid "Posts: "
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  msgstr ""
36
 
37
+ #: ../dynwid_admin_edit.php:185
38
+ msgid "Tags: "
 
39
  msgstr ""
40
 
41
+ #: ../dynwid_admin_edit.php:241
42
+ #: ../dynwid_admin_edit.php:244
43
+ #, fuzzy
44
+ msgid "Front page"
45
+ msgstr "Page d'accueil"
46
 
47
+ #: ../dynwid_admin_edit.php:241
48
+ #: ../dynwid_admin_edit.php:246
49
+ #, fuzzy
50
+ msgid "Posts page"
51
+ msgstr "Page d'accueil"
52
+
53
+ #: ../dynwid_admin_edit.php:430
54
  msgid "Widget options saved."
55
  msgstr "Options du widget sauvegardées."
56
 
57
+ #: ../dynwid_admin_edit.php:430
58
+ #: ../dynwid_admin_edit.php:969
59
  msgid "Return"
60
  msgstr "Retour"
61
 
62
+ #: ../dynwid_admin_edit.php:430
63
  msgid "to Dynamic Widgets overview"
64
  msgstr "à la vue générale Dynamic Widget"
65
 
66
+ #: ../dynwid_admin_edit.php:435
67
  msgid "Dynamic does not mean static hiding of a widget."
68
  msgstr "Dynamic ne permet pas de masquer statiquement un widget"
69
 
70
+ #: ../dynwid_admin_edit.php:435
71
  msgid "Hint"
72
  msgstr "Astuce"
73
 
74
+ #: ../dynwid_admin_edit.php:435
75
  msgid "Remove"
76
  msgstr "Effacer"
77
 
78
+ #: ../dynwid_admin_edit.php:435
79
  msgid "the widget from the sidebar"
80
  msgstr "le widget de la barre latérale"
81
 
82
+ #: ../dynwid_admin_edit.php:439
83
  msgid "The From date can't be later than the To date."
84
  msgstr "La date de début doit être inférieure à la date de fin."
85
 
86
+ #: ../dynwid_admin_edit.php:444
87
+ #, fuzzy
88
+ msgid "Edit options for the widget"
89
  msgstr "Modifier les réglages de"
90
 
91
  # WordPress MO
92
+ #: ../dynwid_admin_edit.php:455
93
+ #: ../dynwid_class_php4.php:56
94
+ #: ../dynwid_class.php:50
95
+ msgid "Role"
96
  msgstr ""
97
 
98
+ #: ../dynwid_admin_edit.php:457
99
  msgid "Show widget to everybody?"
100
  msgstr "Afficher le widget pour tout le monde?"
101
 
102
+ #: ../dynwid_admin_edit.php:457
103
+ #: ../dynwid_admin_edit.php:477
104
+ #: ../dynwid_admin_edit.php:509
105
+ #: ../dynwid_admin_edit.php:530
106
+ #: ../dynwid_admin_edit.php:568
107
+ #: ../dynwid_admin_edit.php:582
108
+ #: ../dynwid_admin_edit.php:638
109
+ #: ../dynwid_admin_edit.php:740
110
+ #, fuzzy
111
+ msgid "Click to toggle info"
112
+ msgstr "Cliquez sur"
113
+
114
+ #: ../dynwid_admin_edit.php:461
115
  msgid ""
116
  "Setting options by role is very powerfull. It can override all other options!<br />\n"
117
  "\t\t\t\t\t\tUsers who are not logged in, get the <em>Anonymous</em> role."
120
  "\t\t\t\t\t\tLe rôle <em>Anonyme</em> correspond aux utilisateurs non connectés."
121
 
122
  # WordPress MO
123
+ #: ../dynwid_admin_edit.php:465
124
+ #: ../dynwid_admin_edit.php:489
125
+ #: ../dynwid_admin_edit.php:516
126
+ #: ../dynwid_admin_edit.php:537
127
+ #: ../dynwid_admin_edit.php:560
128
+ #: ../dynwid_admin_edit.php:577
129
+ #: ../dynwid_admin_edit.php:631
130
+ #: ../dynwid_admin_edit.php:651
131
+ #: ../dynwid_admin_edit.php:713
132
+ #: ../dynwid_admin_edit.php:727
133
+ #: ../dynwid_admin_edit.php:747
134
+ #: ../dynwid_admin_edit.php:757
135
+ #: ../dynwid_admin_edit.php:766
136
+ #: ../dynwid_admin_edit.php:883
137
+ #: ../dynwid_admin_edit.php:925
138
+ #: ../dynwid_admin_edit.php:948
139
  msgid "Yes"
140
  msgstr ""
141
 
142
  # WordPress MO
143
+ #: ../dynwid_admin_edit.php:466
144
+ #: ../dynwid_admin_edit.php:490
145
+ #: ../dynwid_admin_edit.php:517
146
+ #: ../dynwid_admin_edit.php:538
147
+ #: ../dynwid_admin_edit.php:561
148
+ #: ../dynwid_admin_edit.php:578
149
+ #: ../dynwid_admin_edit.php:632
150
+ #: ../dynwid_admin_edit.php:652
151
+ #: ../dynwid_admin_edit.php:714
152
+ #: ../dynwid_admin_edit.php:728
153
+ #: ../dynwid_admin_edit.php:748
154
+ #: ../dynwid_admin_edit.php:758
155
+ #: ../dynwid_admin_edit.php:767
156
+ #: ../dynwid_admin_edit.php:884
157
+ #: ../dynwid_admin_edit.php:926
158
+ #: ../dynwid_admin_edit.php:949
159
  msgid "No"
160
  msgstr ""
161
 
162
+ #: ../dynwid_admin_edit.php:466
163
  msgid "only to"
164
  msgstr "seulement à"
165
 
166
+ # WordPress MO
167
+ #: ../dynwid_admin_edit.php:475
168
+ #: ../dynwid_class_php4.php:57
169
+ #: ../dynwid_class.php:51
170
+ msgid "Date"
171
+ msgstr ""
172
+
173
+ #: ../dynwid_admin_edit.php:477
174
  msgid "Show widget always?"
175
  msgstr "Toujours afficher le widget?"
176
 
177
+ #: ../dynwid_admin_edit.php:481
178
  msgid "Next to the above role option, the date option is also very powerfull. You've been warned!"
179
  msgstr "Les réglages de dates sont relativement puissants et permettent de passer outre tous les autres réglages!"
180
 
181
+ #: ../dynwid_admin_edit.php:482
182
  msgid "Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the"
183
  msgstr "Entrer la date au format AAAA-MM-JJ. Vous pouvez aussi utiliser le calendrier en cliquant sur"
184
 
185
+ #: ../dynwid_admin_edit.php:483
186
  msgid ""
187
  "Date ranges can be made by entering a From AND a To date<br />\n"
188
  " \t\t\t\t\tWhen you want the widget to be displayed from a specific date, only fill in the From date<br />\n"
194
  " \t\t\t\t\tSi vous voulez masquer le widget à partir d'une certaine date seulement, remplissez uniquement la date de fin.\n"
195
  " \t\t\t\t"
196
 
197
+ #: ../dynwid_admin_edit.php:490
198
  msgid "only"
199
  msgstr "uniquement"
200
 
201
+ #: ../dynwid_admin_edit.php:494
202
  msgid "From"
203
  msgstr "Du"
204
 
205
+ #: ../dynwid_admin_edit.php:498
206
  msgid "To"
207
  msgstr "Au"
208
 
209
+ #: ../dynwid_admin_edit.php:507
210
+ msgid "Language (WPML)"
211
+ msgstr ""
212
+
213
+ #: ../dynwid_admin_edit.php:509
214
+ #, fuzzy
215
+ msgid "Show widget default on all languages?"
216
+ msgstr "Afficher le widget sur les pages statiques?"
217
+
218
+ #: ../dynwid_admin_edit.php:513
219
+ msgid "Using this option can override all other options."
220
+ msgstr ""
221
+
222
+ #: ../dynwid_admin_edit.php:518
223
+ #, fuzzy
224
+ msgid "Except the languages"
225
+ msgstr "Sauf la/les page(s)"
226
+
227
+ #: ../dynwid_admin_edit.php:528
228
+ #: ../dynwid_class_php4.php:58
229
+ #: ../dynwid_class.php:52
230
+ msgid "Browser"
231
+ msgstr ""
232
+
233
+ #: ../dynwid_admin_edit.php:530
234
+ #, fuzzy
235
+ msgid "Show widget with all browsers?"
236
+ msgstr "Toujours afficher le widget?"
237
+
238
+ #: ../dynwid_admin_edit.php:534
239
+ msgid "Browser detection is never 100% accurate."
240
+ msgstr ""
241
+
242
+ #: ../dynwid_admin_edit.php:539
243
+ #, fuzzy
244
+ msgid "Except the browser(s)"
245
+ msgstr "Sauf le/les auteur(s)"
246
+
247
+ #: ../dynwid_admin_edit.php:549
248
+ #: ../dynwid_class_php4.php:60
249
+ #: ../dynwid_class.php:54
250
+ msgid "Front Page"
251
+ msgstr "Page d'accueil"
252
+
253
+ #: ../dynwid_admin_edit.php:551
254
  msgid "Show widget on the front page?"
255
  msgstr "Afficher le widget sur la page d'accueil?"
256
 
257
+ #: ../dynwid_admin_edit.php:555
258
  msgid ""
259
  "This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />\n"
260
  "\t\t\t\t\t\tWhen a static page is set, you can use the options for the static pages below.\n"
264
  "\t\t\t\t\t\tSi votre page d'accueil est configurée comme une page statique, vous pouvez utiliser les réglages des pages statiques ci-dessous.\n"
265
  "\t\t\t\t\t"
266
 
267
+ #: ../dynwid_admin_edit.php:566
268
+ #: ../dynwid_class_php4.php:61
269
+ #: ../dynwid_class.php:55
270
+ msgid "Single Posts"
271
+ msgstr "Article"
272
+
273
+ #: ../dynwid_admin_edit.php:568
274
  msgid "Show widget default on single posts?"
275
  msgstr "Afficher le widget sur chaque page d'article?"
276
 
277
+ #: ../dynwid_admin_edit.php:572
278
  msgid ""
279
  "When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won't be applied.\n"
280
  " \t\t\t\t\tIf you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.\n"
284
  " \t\t\t\t\tSi vous voulez etiliser une règle <b>OU</b> l'autre, ajoutez un widget identique et appliquez-lui d'autres règles.\n"
285
  " \t\t\t\t\t"
286
 
287
+ #: ../dynwid_admin_edit.php:581
288
  msgid "Make exception rule available to individual posts and tags."
289
  msgstr "Permettre le réglage pour chaque article ou mot clé individuellement."
290
 
291
+ #: ../dynwid_admin_edit.php:585
292
  msgid ""
293
  "When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.\n"
294
  "\t\t\t\t\t\tYou can set the exception rule for tags in the single Edit Tag Panel (go to <a href=\"edit-tags.php?taxonomy=post_tag\">Post Tags</a>,\n"
304
  " \t\t\t\t\tAttention! Ces règles seront effacées si des règles sont appliquées concernant les auteurs ou catégories. \n"
305
  " \t\t\t\t"
306
 
307
+ #: ../dynwid_admin_edit.php:602
308
  msgid "Except the posts by author"
309
  msgstr "Sauf les articles de l'auteur suivant"
310
 
311
+ #: ../dynwid_admin_edit.php:613
312
  msgid "Except the posts in category"
313
  msgstr "Sauf les articles appartenant à la catégorie"
314
 
315
+ #: ../dynwid_admin_edit.php:627
316
+ #: ../dynwid_class_php4.php:62
317
+ #: ../dynwid_class.php:56
318
+ msgid "Attachments"
319
+ msgstr ""
320
+
321
+ #: ../dynwid_admin_edit.php:629
322
+ #, fuzzy
323
+ msgid "Show widget on attachment pages"
324
+ msgstr "Afficher le widget sur les pages d'archives"
325
+
326
+ # WordPress MO
327
+ #: ../dynwid_admin_edit.php:636
328
+ #: ../dynwid_class_php4.php:63
329
+ #: ../dynwid_class.php:57
330
+ msgid "Pages"
331
+ msgstr "Pages statiques"
332
+
333
+ #: ../dynwid_admin_edit.php:638
334
  msgid "Show widget default on static pages?"
335
  msgstr "Afficher le widget sur les pages statiques?"
336
 
337
+ #: ../dynwid_admin_edit.php:643
338
+ msgid ""
339
+ "Checking the \"All childs\" option, makes the exception rule apply\n"
340
+ "\t\t\t\tto the parent and all items under it in all levels. Also future items\n"
341
+ "\t\t\t\tunder the parent. It's not possible to apply an exception rule to\n"
342
+ "\t\t\t\t\"All childs\" without the parent."
343
+ msgstr ""
344
+
345
+ #: ../dynwid_admin_edit.php:653
346
  msgid "Except the page(s)"
347
  msgstr "Sauf la/les page(s)"
348
 
349
+ #: ../dynwid_admin_edit.php:692
350
+ #: ../dynwid_admin_edit.php:807
351
+ msgid "All childs"
352
+ msgstr ""
353
+
354
+ #: ../dynwid_admin_edit.php:709
355
+ #: ../dynwid_class_php4.php:64
356
+ #: ../dynwid_class.php:58
357
+ msgid "Author Pages"
358
+ msgstr "Pages d'auteur"
359
+
360
+ #: ../dynwid_admin_edit.php:711
361
  msgid "Show widget default on author pages?"
362
  msgstr "Afficher le widget sur les pages d'auteur"
363
 
364
+ #: ../dynwid_admin_edit.php:715
365
  msgid "Except the author(s)"
366
  msgstr "Sauf le/les auteur(s)"
367
 
368
+ #: ../dynwid_admin_edit.php:723
369
+ #: ../dynwid_class_php4.php:65
370
+ #: ../dynwid_class.php:59
371
+ msgid "Category Pages"
372
+ msgstr "Pages de catégorie"
373
+
374
+ #: ../dynwid_admin_edit.php:725
375
  msgid "Show widget default on category pages?"
376
  msgstr "Afficher le widget sur les pages de catégorie?"
377
 
378
+ #: ../dynwid_admin_edit.php:729
379
+ #: ../dynwid_admin_edit.php:950
380
  msgid "Except the categories"
381
  msgstr "Sauf les catégories"
382
 
383
+ #: ../dynwid_admin_edit.php:738
384
+ #: ../dynwid_class_php4.php:66
385
+ #: ../dynwid_class.php:60
386
+ msgid "Archive Pages"
387
+ msgstr "Pages d'archives"
388
+
389
+ #: ../dynwid_admin_edit.php:740
390
  msgid "Show widget on archive pages"
391
  msgstr "Afficher le widget sur les pages d'archives"
392
 
393
+ #: ../dynwid_admin_edit.php:744
394
  msgid "This option does not include Author and Category Pages."
395
  msgstr "Ce réglage ne s'applique ni aux pages d'auteur ni aux pages de catégorie"
396
 
397
+ #: ../dynwid_admin_edit.php:753
398
+ #: ../dynwid_class_php4.php:67
399
+ #: ../dynwid_class.php:61
400
+ msgid "Error Page"
401
+ msgstr "Pages d'erreur"
402
+
403
+ #: ../dynwid_admin_edit.php:755
404
  msgid "Show widget on the error page?"
405
  msgstr "Afficher le widget sur les pages d'erreur?"
406
 
407
+ #: ../dynwid_admin_edit.php:762
408
  msgid "Search Page"
409
  msgstr "Page de recherche"
410
 
411
+ #: ../dynwid_admin_edit.php:764
412
  msgid "Show widget on the search page?"
413
  msgstr "Afficher le widget sur les pages de recherche?"
414
 
415
+ #: ../dynwid_admin_edit.php:869
416
  msgid "Custom Post Type"
417
  msgstr "Types de contenu personnalisés"
418
 
419
+ #: ../dynwid_admin_edit.php:871
420
  msgid "Show widget on"
421
  msgstr "Afficher le widget pour"
422
 
423
+ #: ../dynwid_admin_edit.php:886
424
+ #: ../dynwid_admin_edit.php:928
425
  msgid "Except for"
426
  msgstr "Sauf pour"
427
 
428
+ #: ../dynwid_admin_edit.php:920
429
+ #, fuzzy
430
+ msgid "Custom Post Type Archives"
431
+ msgstr "Types de contenu personnalisés"
432
+
433
+ #: ../dynwid_admin_edit.php:922
434
+ #, fuzzy
435
+ msgid "Show widget on Custom Post Type Archives"
436
+ msgstr "Afficher le widget sur les pages de recherche?"
437
+
438
+ #: ../dynwid_admin_edit.php:944
439
+ #: ../dynwid_class_php4.php:69
440
+ #: ../dynwid_class.php:63
441
+ msgid "WPSC Category"
442
+ msgstr "Catégorie \"WordPress Shopping Cart\""
443
+
444
+ #: ../dynwid_admin_edit.php:946
445
  msgid "Show widget default on WPSC categories?"
446
  msgstr "Afficher le widget pour les catégories \"WordPress Shopping Cart\""
447
 
448
  # WordPress MO
449
+ #: ../dynwid_admin_edit.php:965
450
  msgid "Save"
451
  msgstr ""
452
 
453
+ #: ../dynwid_class_php4.php:59
454
+ #: ../dynwid_class.php:53
455
+ msgid "Language"
456
+ msgstr ""
457
+
458
+ #: ../dynwid_class_php4.php:68
459
+ #: ../dynwid_class.php:62
460
+ msgid "Search page"
461
+ msgstr "Page de recherche"
462
+
463
+ #: ../dynwid_admin.php:10
464
+ #: ../dynamic-widgets.php:139
465
+ #: ../dynamic-widgets.php:218
466
+ #: ../dynamic-widgets.php:563
467
+ #, fuzzy
468
+ msgid "Dynamic Widgets"
469
+ msgstr "à la vue générale Dynamic Widget"
470
+
471
+ #: ../dynwid_admin.php:16
472
+ msgid "<b>WARNING</b> STRICT sql mode in effect. Dynamic Widgets might not work correctly. Please disable STRICT sql mode."
473
+ msgstr "<b>Attention!</b> Le mode SQL STRICT est activé. Dynamic Widgets pourrait ne pas fonctionner correctement. Merci de désactiver le mode SQL STRICT."
474
+
475
+ #: ../dynwid_admin.php:36
476
+ msgid "Oops! Something went terrible wrong. Please reinstall Dynamic Widgets."
477
+ msgstr "Oups! Quelque chose à mal tourné. Merci de réinstaller Dynamic Widgets."
478
+
479
+ #: ../dynwid_admin.php:44
480
+ #: ../dynwid_admin_overview.php:28
481
+ msgid "OLD"
482
+ msgstr ""
483
+
484
+ #: ../dynwid_admin.php:44
485
+ #: ../dynwid_admin_overview.php:28
486
+ msgid "FILTER"
487
+ msgstr ""
488
+
489
  #: ../dynwid_admin_overview.php:15
490
  msgid "Widget options have been reset to default."
491
  msgstr "Les réglages du widget ont été réinitialisées"
494
  msgid "Method set to"
495
  msgstr ""
496
 
497
+ #: ../dynwid_admin_overview.php:36
498
+ msgid "Inactive Widgets"
499
+ msgstr ""
500
+
501
  #: ../dynwid_admin_overview.php:59
502
  #: ../dynwid_admin_overview.php:62
503
  msgid "Edit this widget options"
512
  msgid "Reset widget to Static"
513
  msgstr "Rendre ce widget statique"
514
 
515
+ #: ../dynwid_admin_overview.php:67
516
+ #: ../dynamic-widgets.php:131
517
+ msgid "Reset"
518
+ msgstr "Réinitialiser"
519
+
520
+ #: ../dynwid_admin_overview.php:73
521
+ #: ../dynamic-widgets.php:128
522
+ #: ../dynamic-widgets.php:130
523
+ #: ../dynamic-widgets.php:565
524
+ msgid "Dynamic"
525
+ msgstr "Dynamique"
526
+
527
+ #: ../dynwid_admin_overview.php:73
528
+ #: ../dynamic-widgets.php:128
529
+ #: ../dynamic-widgets.php:129
530
+ #: ../dynamic-widgets.php:132
531
+ #: ../dynamic-widgets.php:565
532
+ msgid "Static"
533
+ msgstr "Statique"
534
+
535
  #: ../dynwid_admin_overview.php:88
536
  msgid "Advanced"
537
  msgstr "Avancé"
538
 
539
+ #: ../dynwid_admin_overview.php:90
540
+ msgid "wp_head() check:"
541
+ msgstr ""
542
+
543
+ #: ../dynwid_admin_overview.php:95
544
+ msgid "wp_head() is NOT called (at the most obvious place)"
545
+ msgstr ""
546
+
547
+ #: ../dynwid_admin_overview.php:99
548
+ msgid "wp_head() is called"
549
+ msgstr ""
550
+
551
+ #: ../dynwid_admin_overview.php:103
552
+ msgid "Unable to determine if wp_head() is called"
553
+ msgstr ""
554
+
555
+ #: ../dynwid_admin_overview.php:114
556
+ msgid "Use 'OLD' method"
557
+ msgstr ""
558
+
559
+ #: ../dynwid_admin_overview.php:119
560
+ msgid "For debugging purposes it is possible you're asked to create a dump. Click the 'Create dump' button and save the text file."
561
+ msgstr ""
562
+
563
+ #: ../dynwid_admin_overview.php:124
564
+ msgid "Create dump"
565
+ msgstr ""
566
+
567
+ #: ../dynwid_admin_overview.php:130
568
+ msgid "When you deceide not to use this plugin anymore (sorry to hear that!). You can cleanup all settings and data related to this plugin by clicking on the 'Uninstall' button. This process is irreversible! After the cleanup the plugin is deactivated automaticly."
569
+ msgstr ""
570
+
571
+ #: ../dynwid_admin_overview.php:135
572
+ msgid "Uninstall"
573
+ msgstr ""
574
+
575
+ #: ../dynamic-widgets.php:124
576
+ msgid "Widgets are always displayed by default"
577
+ msgstr "Les widgets sont affichés partout par défaut"
578
+
579
+ #: ../dynamic-widgets.php:124
580
+ msgid "The '<em>Yes</em>' selection"
581
+ msgstr "Case '<em>Oui</em>' cochée"
582
+
583
+ #: ../dynamic-widgets.php:125
584
+ msgid "Click on the"
585
+ msgstr "Cliquez sur"
586
+
587
+ #: ../dynamic-widgets.php:125
588
+ msgid "next to the options for more info"
589
+ msgstr "à côté de chaque réglage pour plus d'informations"
590
+
591
+ #: ../dynamic-widgets.php:126
592
+ #, fuzzy
593
+ msgid "The"
594
+ msgstr "Le"
595
+
596
+ #: ../dynamic-widgets.php:126
597
+ msgid "next to a section means it has options set."
598
+ msgstr ""
599
+
600
+ #: ../dynamic-widgets.php:129
601
+ msgid "When a widget is"
602
+ msgstr "Quand un widget est"
603
+
604
+ #: ../dynamic-widgets.php:129
605
+ msgid "the widget uses the WordPress default. In other words, it's shown everywhere"
606
+ msgstr "le widget utilise le paramétrage par défaut de WordPress et est affiché partout"
607
+
608
+ #: ../dynamic-widgets.php:130
609
+ msgid "A widget is"
610
+ msgstr "Un widget est"
611
+
612
+ #: ../dynamic-widgets.php:130
613
+ msgid "when there are options set, i.e. not showing on the front page."
614
+ msgstr "quand des réglages s'appliquent (par exemple masquer sur la page d'accueil)."
615
+
616
+ #: ../dynamic-widgets.php:132
617
+ msgid "Reset makes the widget return to"
618
+ msgstr "La réinirialisation rendra le widget à nouveau"
619
+
620
+ # WordPress MO
621
+ #: ../dynamic-widgets.php:171
622
+ msgid "Settings"
623
+ msgstr ""
624
+
625
+ #: ../dynamic-widgets.php:185
626
+ msgid "Apply exception rule to widgets:"
627
+ msgstr ""
628
+
629
+ #: ../dynamic-widgets.php:201
630
+ msgid "Off"
631
+ msgstr ""
632
+
633
+ #: ../dynamic-widgets.php:201
634
+ msgid "On"
635
+ msgstr ""
636
+
637
+ #: ../dynamic-widgets.php:202
638
+ msgid " (Default: "
639
+ msgstr ""
640
+
641
+ #: ../dynamic-widgets.php:299
642
  #, fuzzy
643
+ msgid "Dynamic Widgets Options saved"
644
+ msgstr "Options du widget sauvegardées."
645
+
646
+ #: ../dynamic-widgets.php:299
647
+ msgid "for"
648
+ msgstr ""
649
+
650
+ #: ../dynamic-widgets.php:564
651
+ #, fuzzy
652
+ msgid "Edit Dynamic Widgets Options"
653
+ msgstr "Modifier les réglages de ce widget"
654
+
655
+ #: ../dynamic-widgets.php:589
656
+ msgid "and"
657
+ msgstr "et"
658
+
659
+ #: ../dynamic-widgets.php:595
660
+ msgid "Options set for"
661
+ msgstr "Réglages pour"
662
+
663
+ #: ../dynamic-widgets.php:595
664
+ msgid "Option set for"
665
+ msgstr "Réglages pour"
666
+
667
+ #~ msgid "This widget is"
668
+ #~ msgstr "Ce widget est"
669
 
670
  #~ msgid "selection"
671
  #~ msgstr "sélection"
locale/dynamic-widgets-nl.mo CHANGED
Binary file
locale/dynamic-widgets-nl.po CHANGED
@@ -2,7 +2,7 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Dynamic Widgets NL\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-12-27 10:47+0100\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: Jacco\n"
8
  "Language-Team: \n"
@@ -12,194 +12,393 @@ msgstr ""
12
  "X-Poedit-Language: Dutch\n"
13
  "X-Poedit-Country: NETHERLANDS\n"
14
 
15
- #: ../dynwid_admin_edit.php:24
16
- msgid "Anonymous"
17
- msgstr "Anoniem"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
- #: ../dynwid_admin_edit.php:387
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  msgid "Widget options saved."
21
  msgstr "Widget opties bewaard"
22
 
23
- #: ../dynwid_admin_edit.php:387
24
- #: ../dynwid_admin_edit.php:857
25
  msgid "Return"
26
  msgstr "Terug"
27
 
28
- #: ../dynwid_admin_edit.php:387
29
  msgid "to Dynamic Widgets overview"
30
  msgstr "naar Dynamische Widgets overzicht"
31
 
32
- #: ../dynwid_admin_edit.php:392
33
  msgid "Dynamic does not mean static hiding of a widget."
34
  msgstr "Dynamisch houdt niet in het statisch verbergen van een widget."
35
 
36
- #: ../dynwid_admin_edit.php:392
37
  msgid "Hint"
38
  msgstr "Hint"
39
 
40
- #: ../dynwid_admin_edit.php:392
41
  msgid "Remove"
42
  msgstr "Verwijderen"
43
 
44
- #: ../dynwid_admin_edit.php:392
45
  msgid "the widget from the sidebar"
46
  msgstr "de widget in de sidebar"
47
 
48
- #: ../dynwid_admin_edit.php:396
49
  msgid "The From date can't be later than the To date."
50
  msgstr "The 'van' datum kan niet later zijn dan de 'tot' datum."
51
 
52
- #: ../dynwid_admin_edit.php:401
53
- msgid "Edit options for"
54
- msgstr "Wijzig de opties voor"
55
 
56
- #: ../dynwid_admin_edit.php:401
57
- msgid "Widget"
58
- msgstr "Widget"
59
 
60
- #: ../dynwid_admin_edit.php:412
61
- #: ../dynwid_class_php4.php:54
62
- #: ../dynwid_class.php:48
63
- msgid "Role"
64
- msgstr "Rol"
65
 
66
- #: ../dynwid_admin_edit.php:414
67
- msgid "Show widget to everybody?"
68
- msgstr "Toon de widget aan iedereen?"
69
 
70
- #: ../dynwid_admin_edit.php:418
71
- msgid ""
72
- "Setting options by role is very powerfull. It can override all other options!<br />\n"
73
- "\t\t\t\t\t\tUsers who are not logged in, get the <em>Anonymous</em> role."
74
- msgstr ""
75
- "De rol opties zijn zeer bijzonder. Ze kunnen alle andere opties overstijgen!<br />\n"
76
- "\t\t\t\t\t\tGebruikers die niet ingelogd zijn, krijgen de <em>anonieme</em> rol."
77
 
78
- #: ../dynwid_admin_edit.php:422
79
- #: ../dynwid_admin_edit.php:446
80
- #: ../dynwid_admin_edit.php:473
81
- #: ../dynwid_admin_edit.php:497
82
- #: ../dynwid_admin_edit.php:514
83
- #: ../dynwid_admin_edit.php:579
84
- #: ../dynwid_admin_edit.php:641
85
- #: ../dynwid_admin_edit.php:655
86
- #: ../dynwid_admin_edit.php:675
87
- #: ../dynwid_admin_edit.php:685
88
- #: ../dynwid_admin_edit.php:694
89
- #: ../dynwid_admin_edit.php:811
90
- #: ../dynwid_admin_edit.php:836
91
- msgid "Yes"
92
- msgstr "Ja"
93
 
94
- #: ../dynwid_admin_edit.php:423
95
- #: ../dynwid_admin_edit.php:447
96
- #: ../dynwid_admin_edit.php:474
97
- #: ../dynwid_admin_edit.php:498
98
- #: ../dynwid_admin_edit.php:515
99
- #: ../dynwid_admin_edit.php:580
100
- #: ../dynwid_admin_edit.php:642
101
- #: ../dynwid_admin_edit.php:656
102
- #: ../dynwid_admin_edit.php:676
103
- #: ../dynwid_admin_edit.php:686
104
- #: ../dynwid_admin_edit.php:695
105
- #: ../dynwid_admin_edit.php:812
106
- #: ../dynwid_admin_edit.php:837
107
- msgid "No"
108
- msgstr "Nee"
109
 
110
- #: ../dynwid_admin_edit.php:423
111
- msgid "only to"
112
- msgstr "alleen aan"
113
 
114
- #: ../dynwid_admin_edit.php:432
115
- #: ../dynwid_class_php4.php:55
116
- #: ../dynwid_class.php:49
117
- msgid "Date"
118
- msgstr "Datum"
119
 
120
- #: ../dynwid_admin_edit.php:434
121
- msgid "Show widget always?"
122
- msgstr "Altijd de widget tonen?"
123
 
124
- #: ../dynwid_admin_edit.php:438
125
- msgid "Next to the above role option, the date option is also very powerfull. You've been warned!"
126
- msgstr "Net zoals de bovenstaande opties, is de datum opties zeer bijzonder. U bent gewaarschuwd!"
127
 
128
- #: ../dynwid_admin_edit.php:439
129
- msgid "Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the"
130
- msgstr "Voer datum in volgens hets JJJJ-MM-DD formaat. U kunt ook de kalander gebruiken door te klikken op"
131
 
132
- #: ../dynwid_admin_edit.php:440
133
- msgid ""
134
- "Date ranges can be made by entering a From AND a To date<br />\n"
135
- " \t\t\t\t\tWhen you want the widget to be displayed from a specific date, only fill in the From date<br />\n"
136
- " \t\t\t\t\tWhen you want the widget to stop displaying on a specific date, only fill in the To date.\n"
137
- " \t\t\t\t"
138
- msgstr ""
139
- "Datum periodes kunnen worden gemaakt door het invoeren van een 'van' en een 'tot' datum<br />\n"
140
- " \t\t\t\t\tWanneer u de widget vanaf een bepaalde datum wilt tonen, vul dan alleen de 'van' datum in<br />\n"
141
- " \t\t\t\t\tWanneer u de widget vanaf een bepaalde datum niet meer wilt tonen, vul dan alleen de 'tot' datum in.\n"
142
- " \t\t\t\t"
143
 
144
- #: ../dynwid_admin_edit.php:447
145
- msgid "only"
146
- msgstr "alleen"
147
 
148
- #: ../dynwid_admin_edit.php:451
149
- msgid "From"
150
- msgstr "Van"
151
 
152
- #: ../dynwid_admin_edit.php:455
153
- msgid "To"
154
- msgstr "Tot"
155
 
156
- #: ../dynwid_admin_edit.php:464
157
- msgid "Language (WPML)"
158
- msgstr "Taal (WPML)"
159
 
160
- #: ../dynwid_admin_edit.php:466
161
- msgid "Show widget default on all languages?"
162
- msgstr "Toon de widget voor alle talen?"
163
 
164
- #: ../dynwid_admin_edit.php:470
165
- msgid "Using this option can override all other options."
166
- msgstr "Door gebruik te maken van deze opties kan deze alle andere opties overstijgen."
167
 
168
- #: ../dynwid_admin_edit.php:475
169
- msgid "Except the languages"
170
- msgstr "Behalve de talen"
171
 
172
- #: ../dynwid_admin_edit.php:486
173
- #: ../dynwid_class_php4.php:57
174
- #: ../dynwid_class.php:51
175
- msgid "Front Page"
176
- msgstr "Startpagina"
177
 
178
- #: ../dynwid_admin_edit.php:488
179
- msgid "Show widget on the front page?"
180
- msgstr "De widget op de startpagina tonen?"
181
 
182
- #: ../dynwid_admin_edit.php:492
183
- msgid ""
184
- "This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />\n"
185
- "\t\t\t\t\t\tWhen a static page is set, you can use the options for the static pages below.\n"
186
- "\t\t\t\t\t"
187
- msgstr ""
188
- "Deze optie werkt alleen als de hoofdpagina de laatste posts toont (Zie Instellingen &gt; Lezen).<br />\n"
189
- "\t\t\t\t\t\tWanneer deze optie op statische pagina staat, kunt u gebruik maken van de onderstaande pagina opties.\n"
190
- "\t\t\t\t\t"
191
 
192
- #: ../dynwid_admin_edit.php:503
193
- #: ../dynwid_class_php4.php:58
194
- #: ../dynwid_class.php:52
195
- msgid "Single Posts"
196
- msgstr "Berichten"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
- #: ../dynwid_admin_edit.php:505
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  msgid "Show widget default on single posts?"
200
  msgstr "De widget bij de berichten tonen?"
201
 
202
- #: ../dynwid_admin_edit.php:509
 
 
 
 
 
 
203
  msgid ""
204
  "When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won't be applied.\n"
205
  " \t\t\t\t\tIf you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.\n"
@@ -209,11 +408,11 @@ msgstr ""
209
  " \t\t\t\t\tAls u de regels in een logische OR wilt gebruiken kunt u de widget opnieuw toevoegen en daarop dan de andere regel toepassen.\n"
210
  " \t\t\t\t\t"
211
 
212
- #: ../dynwid_admin_edit.php:518
213
  msgid "Make exception rule available to individual posts and tags."
214
  msgstr "Maak de uitzonderings regel beschikbaar voor individuele berichten en tags"
215
 
216
- #: ../dynwid_admin_edit.php:522
217
  msgid ""
218
  "When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.\n"
219
  "\t\t\t\t\t\tYou can set the exception rule for tags in the single Edit Tag Panel (go to <a href=\"edit-tags.php?taxonomy=post_tag\">Post Tags</a>,\n"
@@ -229,25 +428,64 @@ msgstr ""
229
  " \t\t\t\t\tLet er op dat uitzonderings regels voor auteur en categorie worden verwijderd.\n"
230
  " \t\t\t\t"
231
 
232
- #: ../dynwid_admin_edit.php:539
233
  msgid "Except the posts by author"
234
  msgstr "Behalve de berichten van"
235
 
236
- #: ../dynwid_admin_edit.php:550
237
  msgid "Except the posts in category"
238
  msgstr "Behalve de berichten in de categorie"
239
 
240
- #: ../dynwid_admin_edit.php:564
241
- #: ../dynwid_class_php4.php:59
242
- #: ../dynwid_class.php:53
243
- msgid "Pages"
244
- msgstr "Pagina's"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
 
246
- #: ../dynwid_admin_edit.php:566
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  msgid "Show widget default on static pages?"
248
  msgstr "Toon de widget op pagina's?"
249
 
250
- #: ../dynwid_admin_edit.php:571
251
  msgid ""
252
  "Checking the \"All childs\" option, makes the exception rule apply\n"
253
  "\t\t\t\tto the parent and all items under it in all levels. Also future items\n"
@@ -255,257 +493,163 @@ msgid ""
255
  "\t\t\t\t\"All childs\" without the parent."
256
  msgstr "Door gebruik te maken van de \"Alle kinderen\" optie, wordt de uitzonderingsregel toegepast op de ouder en alle daaronder liggende item in alle levels. Ook toekomstige items onder de ouder. Het is niet mogelijk om de uitzonderingsregel toe te passen zonder de ouder."
257
 
258
- #: ../dynwid_admin_edit.php:581
259
  msgid "Except the page(s)"
260
  msgstr "Behalve de pagina('s)"
261
 
262
- #: ../dynwid_admin_edit.php:620
263
- #: ../dynwid_admin_edit.php:735
264
- msgid "All childs"
265
- msgstr "Alle kinderen"
266
-
267
- #: ../dynwid_admin_edit.php:637
268
- #: ../dynwid_class_php4.php:60
269
- #: ../dynwid_class.php:54
270
- msgid "Author Pages"
271
- msgstr "Auteur pagina's"
272
-
273
- #: ../dynwid_admin_edit.php:639
274
  msgid "Show widget default on author pages?"
275
  msgstr "Toon de widget op auteurs pagina's?"
276
 
277
- #: ../dynwid_admin_edit.php:643
278
  msgid "Except the author(s)"
279
  msgstr "Behalve van"
280
 
281
- #: ../dynwid_admin_edit.php:651
282
- #: ../dynwid_class_php4.php:61
283
- #: ../dynwid_class.php:55
284
- msgid "Category Pages"
285
- msgstr "Categorie pagina's"
286
 
287
- #: ../dynwid_admin_edit.php:653
288
- msgid "Show widget default on category pages?"
289
- msgstr "Toon de widget standaard op de categorie pagina's?"
290
 
291
- #: ../dynwid_admin_edit.php:657
292
- #: ../dynwid_admin_edit.php:838
293
- msgid "Except the categories"
294
- msgstr "Behalve de categoriën"
295
 
296
- #: ../dynwid_admin_edit.php:666
297
- #: ../dynwid_class_php4.php:62
298
- #: ../dynwid_class.php:56
299
- msgid "Archive Pages"
300
- msgstr "Archief pagina's"
301
 
302
- #: ../dynwid_admin_edit.php:668
303
- msgid "Show widget on archive pages"
304
- msgstr "Toon de widget op archief pagina's"
305
-
306
- #: ../dynwid_admin_edit.php:672
307
- msgid "This option does not include Author and Category Pages."
308
- msgstr "Deze optie bevat niet auteurs en categorie pagina's"
309
-
310
- #: ../dynwid_admin_edit.php:681
311
- #: ../dynwid_class_php4.php:63
312
- #: ../dynwid_class.php:57
313
- msgid "Error Page"
314
- msgstr "Foutmeldings pagina"
315
-
316
- #: ../dynwid_admin_edit.php:683
317
- msgid "Show widget on the error page?"
318
- msgstr "Toon de widget op de foutmeldings pagina?"
319
-
320
- #: ../dynwid_admin_edit.php:690
321
- msgid "Search Page"
322
- msgstr "Zoek pagina"
323
-
324
- #: ../dynwid_admin_edit.php:692
325
- msgid "Show widget on the search page?"
326
- msgstr "Toon de widget op de zoekpagina?"
327
-
328
- #: ../dynwid_admin_edit.php:797
329
- msgid "Custom Post Type"
330
- msgstr ""
331
-
332
- #: ../dynwid_admin_edit.php:799
333
- msgid "Show widget on"
334
- msgstr "Toon de widget op"
335
-
336
- #: ../dynwid_admin_edit.php:814
337
- msgid "Except for"
338
- msgstr "Behalve voor"
339
-
340
- #: ../dynwid_admin_edit.php:832
341
- #: ../dynwid_class_php4.php:65
342
- #: ../dynwid_class.php:59
343
- msgid "WPSC Category"
344
- msgstr "WPSC Categorie"
345
-
346
- #: ../dynwid_admin_edit.php:834
347
- msgid "Show widget default on WPSC categories?"
348
- msgstr "Toon de widget standaard in de WPSC categoriën?"
349
-
350
- #: ../dynwid_admin_edit.php:853
351
- msgid "Save"
352
- msgstr "Opslaan"
353
-
354
- #: ../dynwid_class_php4.php:56
355
- #: ../dynwid_class.php:50
356
- msgid "Language"
357
- msgstr "Taal"
358
-
359
- #: ../dynwid_class_php4.php:64
360
- #: ../dynwid_class.php:58
361
- msgid "Search page"
362
- msgstr "Zoek pagina"
363
-
364
- #: ../dynwid_admin.php:10
365
- #: ../dynamic-widgets.php:138
366
- #: ../dynamic-widgets.php:222
367
- msgid "Dynamic Widgets"
368
- msgstr "Dynamische Widgets"
369
 
370
- #: ../dynwid_admin.php:16
371
- msgid "<b>WARNING</b> STRICT sql mode in effect. Dynamic Widgets might not work correctly. Please disable STRICT sql mode."
372
- msgstr "<b>LET OP</b> STRICT sql mode gedecteerd. Dynamische Widgets werkt mogelijk niet correct. U wordt aangeraden STRICT sql mode uit te schakelen."
373
 
374
- #: ../dynwid_admin.php:36
375
- msgid "Oops! Something went terrible wrong. Please reinstall Dynamic Widgets."
376
- msgstr "Oeps! Er is een onhelstelbare fout opgetreden. U wordt aangeraden om Dynamische Widgets opnieuw te installeren."
377
 
378
- #: ../dynwid_admin.php:44
379
- #: ../dynwid_admin_overview.php:28
380
- msgid "OLD"
381
- msgstr "OUD"
382
 
383
- #: ../dynwid_admin.php:44
384
- #: ../dynwid_admin_overview.php:28
385
- msgid "FILTER"
 
386
  msgstr ""
 
 
387
 
388
- #: ../dynwid_admin_overview.php:15
389
- msgid "Widget options have been reset to default."
390
- msgstr "De widget opties zijn hersteld naar standaard"
391
 
392
- #: ../dynwid_admin_overview.php:28
393
- msgid "Method set to"
394
- msgstr "Methode is nu"
395
 
396
- #: ../dynwid_admin_overview.php:36
397
- msgid "Inactive Widgets"
398
- msgstr "Inactieve Widgets"
399
 
400
- #: ../dynwid_admin_overview.php:59
401
- #: ../dynwid_admin_overview.php:62
402
- msgid "Edit this widget options"
403
- msgstr "Wijzig de widget opties voor"
404
 
405
- #: ../dynwid_admin_overview.php:62
406
- msgid "Edit"
407
- msgstr "Wijzig"
408
 
409
- #: ../dynwid_admin_overview.php:67
410
- msgid "Reset widget to Static"
411
- msgstr "Zet de widget terug naar statisch"
412
 
413
- #: ../dynwid_admin_overview.php:67
414
- #: ../dynamic-widgets.php:130
415
- msgid "Reset"
416
- msgstr "Herstellen"
417
-
418
- #: ../dynwid_admin_overview.php:73
419
- #: ../dynamic-widgets.php:127
420
- #: ../dynamic-widgets.php:129
421
- #: ../dynamic-widgets.php:569
422
- msgid "Dynamic"
423
- msgstr "Dyamisch"
424
-
425
- #: ../dynwid_admin_overview.php:73
426
- #: ../dynamic-widgets.php:127
427
- #: ../dynamic-widgets.php:128
428
- #: ../dynamic-widgets.php:131
429
- #: ../dynamic-widgets.php:569
430
- msgid "Static"
431
- msgstr "Statisch"
432
-
433
- #: ../dynwid_admin_overview.php:88
434
- msgid "Advanced"
435
- msgstr "Geavanceerd"
436
-
437
- #: ../dynamic-widgets.php:123
438
- msgid "Widgets are always displayed by default"
439
- msgstr "Widgets worden standaard altijd getoond"
440
 
441
- #: ../dynamic-widgets.php:123
442
- msgid "The '<em>Yes</em>' selection"
443
- msgstr "De '<em>Ja</em>' selectie"
444
 
445
- #: ../dynamic-widgets.php:124
446
- msgid "Click on the"
447
- msgstr "Klik op de"
 
448
 
449
- #: ../dynamic-widgets.php:124
450
- msgid "next to the options for more info"
451
- msgstr "bij de opties voor meer informatie"
452
 
453
- #: ../dynamic-widgets.php:125
454
- msgid "The"
455
- msgstr "De"
456
 
457
- #: ../dynamic-widgets.php:125
458
- msgid "next to a section means it has options set."
459
- msgstr "houdt in dat er opties gekozen zijn."
460
-
461
- #: ../dynamic-widgets.php:128
462
- msgid "When a widget is"
463
- msgstr "Wanneer een widget"
464
 
465
- #: ../dynamic-widgets.php:128
466
- msgid "the widget uses the WordPress default. In other words, it's shown everywhere"
467
- msgstr "de widget staat op de standaard instelling. Met andere woorden, deze wordt overal getoond"
468
 
469
- #: ../dynamic-widgets.php:129
470
- msgid "A widget is"
471
- msgstr "Een widget is"
472
 
473
- #: ../dynamic-widgets.php:129
474
- msgid "when there are options set, i.e. not showing on the front page."
475
- msgstr "als er opties gewijzigd zijn, bijvoorbeeld niet tonen op de startpagina."
 
 
 
 
 
 
 
 
476
 
477
- #: ../dynamic-widgets.php:131
478
- msgid "Reset makes the widget return to"
479
- msgstr "Herstellen zorgt ervoor dat de widget teruggezet wordt naar"
480
 
481
- #: ../dynamic-widgets.php:175
482
- msgid "Settings"
483
- msgstr "Instellingen"
484
 
485
- #: ../dynamic-widgets.php:189
486
- msgid "Apply exception rule to widgets:"
487
- msgstr "Maak uitzonderingsregel voor widget:"
488
 
489
- #: ../dynamic-widgets.php:303
490
- msgid "Dynamic Widgets Options saved"
491
- msgstr "Dynamische Widget opties bewaard"
492
 
493
- #: ../dynamic-widgets.php:303
494
- msgid "for"
495
- msgstr "voor"
496
 
497
- #: ../dynamic-widgets.php:593
498
- msgid "and"
499
- msgstr "en"
500
 
501
- #: ../dynamic-widgets.php:599
502
- msgid "Options set for"
503
- msgstr "Opties voor"
504
 
505
- #: ../dynamic-widgets.php:599
506
- msgid "Option set for"
507
- msgstr "Optie voor"
508
 
 
 
 
 
509
  #~ msgid "This widget is"
510
  #~ msgstr "Deze widget is"
511
  #~ msgid "selection"
2
  msgstr ""
3
  "Project-Id-Version: Dynamic Widgets NL\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2011-01-29 23:19+0100\n"
6
  "PO-Revision-Date: \n"
7
  "Last-Translator: Jacco\n"
8
  "Language-Team: \n"
12
  "X-Poedit-Language: Dutch\n"
13
  "X-Poedit-Country: NETHERLANDS\n"
14
 
15
+ #: ../dynwid_class_php4.php:58
16
+ #: ../dynwid_class.php:52
17
+ msgid "Role"
18
+ msgstr "Rol"
19
+
20
+ #: ../dynwid_class_php4.php:59
21
+ #: ../dynwid_class.php:53
22
+ msgid "Date"
23
+ msgstr "Datum"
24
+
25
+ #: ../dynwid_class_php4.php:60
26
+ #: ../dynwid_class.php:54
27
+ msgid "Browser"
28
+ msgstr "Browser"
29
+
30
+ #: ../dynwid_class_php4.php:61
31
+ #: ../dynwid_class.php:55
32
+ msgid "Language"
33
+ msgstr "Taal"
34
+
35
+ #: ../dynwid_class_php4.php:62
36
+ #: ../dynwid_class.php:56
37
+ #: ../mods/frontpage_module.php:20
38
+ msgid "Front Page"
39
+ msgstr "Startpagina"
40
+
41
+ #: ../dynwid_class_php4.php:63
42
+ #: ../dynwid_class.php:57
43
+ #: ../mods/single_module.php:80
44
+ msgid "Single Posts"
45
+ msgstr "Berichten"
46
+
47
+ #: ../dynwid_class_php4.php:64
48
+ #: ../dynwid_class.php:58
49
+ #: ../mods/attachment_module.php:20
50
+ msgid "Attachments"
51
+ msgstr "Bijlagen"
52
+
53
+ #: ../dynwid_class_php4.php:65
54
+ #: ../dynwid_class.php:59
55
+ msgid "Pages"
56
+ msgstr "Pagina's"
57
+
58
+ #: ../dynwid_class_php4.php:66
59
+ #: ../dynwid_class.php:60
60
+ msgid "Author Pages"
61
+ msgstr "Auteur pagina's"
62
+
63
+ #: ../dynwid_class_php4.php:67
64
+ #: ../dynwid_class.php:61
65
+ #: ../mods/category_module.php:33
66
+ msgid "Category Pages"
67
+ msgstr "Categorie pagina's"
68
+
69
+ #: ../dynwid_class_php4.php:68
70
+ #: ../dynwid_class.php:62
71
+ #: ../mods/archive_module.php:20
72
+ msgid "Archive Pages"
73
+ msgstr "Archief pagina's"
74
+
75
+ #: ../dynwid_class_php4.php:69
76
+ #: ../dynwid_class.php:63
77
+ #: ../mods/error_module.php:20
78
+ msgid "Error Page"
79
+ msgstr "Foutmeldings pagina"
80
+
81
+ #: ../dynwid_class_php4.php:70
82
+ #: ../dynwid_class.php:64
83
+ msgid "Search page"
84
+ msgstr "Zoek pagina"
85
+
86
+ #: ../dynwid_class_php4.php:71
87
+ #: ../dynwid_class.php:65
88
+ msgid "WPSC Category"
89
+ msgstr "WPSC Categorie"
90
+
91
+ #: ../dynwid_admin.php:18
92
+ #: ../dynamic-widgets.php:125
93
+ #: ../dynamic-widgets.php:148
94
+ #: ../dynamic-widgets.php:247
95
+ #: ../dynamic-widgets.php:647
96
+ msgid "Dynamic Widgets"
97
+ msgstr "Dynamische Widgets"
98
+
99
+ #: ../dynwid_admin.php:25
100
+ msgid "<b>WARNING</b> STRICT sql mode in effect. Dynamic Widgets might not work correctly. Please disable STRICT sql mode."
101
+ msgstr "<b>LET OP</b> STRICT sql mode gedecteerd. Dynamische Widgets werkt mogelijk niet correct. U wordt aangeraden STRICT sql mode uit te schakelen."
102
+
103
+ #: ../dynwid_admin.php:45
104
+ msgid "Oops! Something went terrible wrong. Please reinstall Dynamic Widgets."
105
+ msgstr "Oeps! Er is een onhelstelbare fout opgetreden. U wordt aangeraden om Dynamische Widgets opnieuw te installeren."
106
+
107
+ #: ../dynwid_admin.php:53
108
+ #: ../dynwid_admin_overview.php:28
109
+ msgid "OLD"
110
+ msgstr "OUD"
111
 
112
+ #: ../dynwid_admin.php:53
113
+ #: ../dynwid_admin_overview.php:28
114
+ msgid "FILTER"
115
+ msgstr "FILTER"
116
+
117
+ #: ../dynamic-widgets.php:133
118
+ msgid "Widgets are always displayed by default"
119
+ msgstr "Widgets worden standaard altijd getoond"
120
+
121
+ #: ../dynamic-widgets.php:133
122
+ msgid "The '<em>Yes</em>' selection"
123
+ msgstr "De '<em>Ja</em>' selectie"
124
+
125
+ #: ../dynamic-widgets.php:134
126
+ msgid "Click on the"
127
+ msgstr "Klik op de"
128
+
129
+ #: ../dynamic-widgets.php:134
130
+ msgid "next to the options for more info"
131
+ msgstr "bij de opties voor meer informatie"
132
+
133
+ #: ../dynamic-widgets.php:135
134
+ msgid "The"
135
+ msgstr "De"
136
+
137
+ #: ../dynamic-widgets.php:135
138
+ msgid "next to a section means it has options set."
139
+ msgstr "houdt in dat er opties gekozen zijn."
140
+
141
+ #: ../dynamic-widgets.php:137
142
+ #: ../dynamic-widgets.php:138
143
+ #: ../dynamic-widgets.php:141
144
+ #: ../dynamic-widgets.php:649
145
+ #: ../dynwid_admin_overview.php:73
146
+ msgid "Static"
147
+ msgstr "Statisch"
148
+
149
+ #: ../dynamic-widgets.php:137
150
+ #: ../dynamic-widgets.php:139
151
+ #: ../dynamic-widgets.php:649
152
+ #: ../dynwid_admin_overview.php:73
153
+ msgid "Dynamic"
154
+ msgstr "Dyamisch"
155
+
156
+ #: ../dynamic-widgets.php:138
157
+ msgid "When a widget is"
158
+ msgstr "Wanneer een widget"
159
+
160
+ #: ../dynamic-widgets.php:138
161
+ msgid "the widget uses the WordPress default. In other words, it's shown everywhere"
162
+ msgstr "de widget staat op de standaard instelling. Met andere woorden, deze wordt overal getoond"
163
+
164
+ #: ../dynamic-widgets.php:139
165
+ msgid "A widget is"
166
+ msgstr "Een widget is"
167
+
168
+ #: ../dynamic-widgets.php:139
169
+ msgid "when there are options set, i.e. not showing on the front page."
170
+ msgstr "als er opties gewijzigd zijn, bijvoorbeeld niet tonen op de startpagina."
171
+
172
+ #: ../dynamic-widgets.php:140
173
+ #: ../dynwid_admin_overview.php:67
174
+ msgid "Reset"
175
+ msgstr "Herstellen"
176
+
177
+ #: ../dynamic-widgets.php:141
178
+ msgid "Reset makes the widget return to"
179
+ msgstr "Herstellen zorgt ervoor dat de widget teruggezet wordt naar"
180
+
181
+ #: ../dynamic-widgets.php:200
182
+ msgid "Settings"
183
+ msgstr "Instellingen"
184
+
185
+ #: ../dynamic-widgets.php:214
186
+ msgid "Apply exception rule to widgets:"
187
+ msgstr "Maak uitzonderingsregel voor widget:"
188
+
189
+ #: ../dynamic-widgets.php:230
190
+ msgid "Off"
191
+ msgstr "Uit"
192
+
193
+ #: ../dynamic-widgets.php:230
194
+ msgid "On"
195
+ msgstr "Aan"
196
+
197
+ #: ../dynamic-widgets.php:231
198
+ msgid " (Default: "
199
+ msgstr "(Standaard"
200
+
201
+ #: ../dynamic-widgets.php:328
202
+ msgid "Dynamic Widgets Options saved"
203
+ msgstr "Dynamische Widget opties bewaard"
204
+
205
+ #: ../dynamic-widgets.php:328
206
+ msgid "for"
207
+ msgstr "voor"
208
+
209
+ #: ../dynamic-widgets.php:648
210
+ msgid "Edit Dynamic Widgets Options"
211
+ msgstr "Wijzig Dynamische Widget opties"
212
+
213
+ #: ../dynamic-widgets.php:673
214
+ msgid "and"
215
+ msgstr "en"
216
+
217
+ #: ../dynamic-widgets.php:679
218
+ msgid "Options set for"
219
+ msgstr "Opties voor"
220
+
221
+ #: ../dynamic-widgets.php:679
222
+ msgid "Option set for"
223
+ msgstr "Optie voor"
224
+
225
+ #: ../dynwid_admin_edit.php:60
226
  msgid "Widget options saved."
227
  msgstr "Widget opties bewaard"
228
 
229
+ #: ../dynwid_admin_edit.php:60
230
+ #: ../dynwid_admin_edit.php:120
231
  msgid "Return"
232
  msgstr "Terug"
233
 
234
+ #: ../dynwid_admin_edit.php:60
235
  msgid "to Dynamic Widgets overview"
236
  msgstr "naar Dynamische Widgets overzicht"
237
 
238
+ #: ../dynwid_admin_edit.php:65
239
  msgid "Dynamic does not mean static hiding of a widget."
240
  msgstr "Dynamisch houdt niet in het statisch verbergen van een widget."
241
 
242
+ #: ../dynwid_admin_edit.php:65
243
  msgid "Hint"
244
  msgstr "Hint"
245
 
246
+ #: ../dynwid_admin_edit.php:65
247
  msgid "Remove"
248
  msgstr "Verwijderen"
249
 
250
+ #: ../dynwid_admin_edit.php:65
251
  msgid "the widget from the sidebar"
252
  msgstr "de widget in de sidebar"
253
 
254
+ #: ../dynwid_admin_edit.php:69
255
  msgid "The From date can't be later than the To date."
256
  msgstr "The 'van' datum kan niet later zijn dan de 'tot' datum."
257
 
258
+ #: ../dynwid_admin_edit.php:74
259
+ msgid "Edit options for the widget"
260
+ msgstr "Wijzig de opties voor de widget"
261
 
262
+ #: ../dynwid_admin_edit.php:116
263
+ msgid "Save"
264
+ msgstr "Opslaan"
265
 
266
+ #: ../dynwid_admin_overview.php:15
267
+ msgid "Widget options have been reset to default."
268
+ msgstr "De widget opties zijn hersteld naar standaard"
 
 
269
 
270
+ #: ../dynwid_admin_overview.php:28
271
+ msgid "Method set to"
272
+ msgstr "Methode is nu"
273
 
274
+ #: ../dynwid_admin_overview.php:36
275
+ msgid "Inactive Widgets"
276
+ msgstr "Inactieve Widgets"
 
 
 
 
277
 
278
+ #: ../dynwid_admin_overview.php:59
279
+ #: ../dynwid_admin_overview.php:62
280
+ msgid "Edit this widget options"
281
+ msgstr "Wijzig de widget opties voor"
 
 
 
 
 
 
 
 
 
 
 
282
 
283
+ #: ../dynwid_admin_overview.php:62
284
+ msgid "Edit"
285
+ msgstr "Wijzig"
 
 
 
 
 
 
 
 
 
 
 
 
286
 
287
+ #: ../dynwid_admin_overview.php:67
288
+ msgid "Reset widget to Static"
289
+ msgstr "Zet de widget terug naar statisch"
290
 
291
+ #: ../dynwid_admin_overview.php:88
292
+ msgid "Advanced"
293
+ msgstr "Geavanceerd"
 
 
294
 
295
+ #: ../dynwid_admin_overview.php:93
296
+ msgid "wp_head() check:"
297
+ msgstr "wp_head() controle:"
298
 
299
+ #: ../dynwid_admin_overview.php:98
300
+ msgid "wp_head() is NOT called (at the most obvious place)"
301
+ msgstr "wp_head() is NIET gevonden (op de meest voor de hand liggende plaats)"
302
 
303
+ #: ../dynwid_admin_overview.php:102
304
+ msgid "wp_head() is called"
305
+ msgstr "wp_head() is gevonden"
306
 
307
+ #: ../dynwid_admin_overview.php:106
308
+ msgid "Unable to determine if wp_head() is called"
309
+ msgstr "Het is niet mogelijk om te bepalen of wp_head() gevonden kan worden"
 
 
 
 
 
 
 
 
310
 
311
+ #: ../dynwid_admin_overview.php:118
312
+ msgid "Use 'OLD' method"
313
+ msgstr "Gebruik 'OUDE' methode"
314
 
315
+ #: ../dynwid_admin_overview.php:124
316
+ msgid "When upgrading to WPEC 3.8 the Dynamic Widgets rules for WPEC are lost. The WPEC dump gives you an overview of the rules before the update."
317
+ msgstr "Wanneer u upgrade naar WPEC 3.8 dan zullen de Dynamische Widget regels voor WPEC verloren gaan. De WPEC dump geeft u een overzicht van de regels voor de update."
318
 
319
+ #: ../dynwid_admin_overview.php:125
320
+ msgid "WARNING"
321
+ msgstr "WAARSCHUWING"
322
 
323
+ #: ../dynwid_admin_overview.php:125
324
+ msgid "This only works correct when you did not add or change anything in the Dynamic Widgets rules."
325
+ msgstr "Dit werkt alleen correct als u geen Dyamische Widget regels toegevoegd of verwijderd heeft."
326
 
327
+ #: ../dynwid_admin_overview.php:130
328
+ msgid "Create WPEC dump"
329
+ msgstr "Maak WPEC dump"
330
 
331
+ #: ../dynwid_admin_overview.php:137
332
+ msgid "For debugging purposes it is possible you're asked to create a dump. Click the 'Create dump' button and save the text file."
333
+ msgstr "Voor foutopsporing is het mogelijk dat u gevraagd wordt om een dump te maken. Klik de 'Dump maken' knop en sla het tekst bestand op."
334
 
335
+ #: ../dynwid_admin_overview.php:142
336
+ msgid "Create dump"
337
+ msgstr "Dump maken"
338
 
339
+ #: ../dynwid_admin_overview.php:149
340
+ msgid "When you deceide not to use this plugin anymore (sorry to hear that!). You can cleanup all settings and data related to this plugin by clicking on the 'Uninstall' button. This process is irreversible! After the cleanup the plugin is deactivated automaticly."
341
+ msgstr "Wanneer u besluit om deze plugin niet meer te gebruiken (erg jammer!), kunt u alle instellingen en andere data van deze plugin verwijderen door op de 'Deinstalleer' knop te drukken. Dit proces is onomkeerbaar! Na het verwijderen zal de plugin automatisch uitgeschakeld worden."
 
 
342
 
343
+ #: ../dynwid_admin_overview.php:154
344
+ msgid "Uninstall"
345
+ msgstr "Deinstalleer"
346
 
347
+ #: ../mods/search_module.php:21
348
+ msgid "Search Page"
349
+ msgstr "Zoek pagina"
 
 
 
 
 
 
350
 
351
+ #: ../mods/search_module.php:23
352
+ msgid "Show widget on the search page?"
353
+ msgstr "Toon de widget op de zoekpagina?"
354
+
355
+ #: ../mods/search_module.php:25
356
+ #: ../mods/category_module.php:37
357
+ #: ../mods/single_module.php:91
358
+ #: ../mods/attachment_module.php:24
359
+ #: ../mods/error_module.php:24
360
+ #: ../mods/frontpage_module.php:31
361
+ #: ../mods/archive_module.php:29
362
+ msgid "Yes"
363
+ msgstr "Ja"
364
+
365
+ #: ../mods/search_module.php:26
366
+ #: ../mods/category_module.php:38
367
+ #: ../mods/single_module.php:92
368
+ #: ../mods/attachment_module.php:25
369
+ #: ../mods/error_module.php:25
370
+ #: ../mods/frontpage_module.php:32
371
+ #: ../mods/archive_module.php:30
372
+ msgid "No"
373
+ msgstr "Nee"
374
 
375
+ #: ../mods/category_module.php:35
376
+ msgid "Show widget default on category pages?"
377
+ msgstr "Toon de widget standaard op de categorie pagina's?"
378
+
379
+ #: ../mods/category_module.php:39
380
+ msgid "Except the categories"
381
+ msgstr "Behalve de categoriën"
382
+
383
+ #: ../mods/single_module.php:75
384
+ msgid "Posts: "
385
+ msgstr "Posts:"
386
+
387
+ #: ../mods/single_module.php:75
388
+ msgid "Tags: "
389
+ msgstr "Tags:"
390
+
391
+ #: ../mods/single_module.php:82
392
  msgid "Show widget default on single posts?"
393
  msgstr "De widget bij de berichten tonen?"
394
 
395
+ #: ../mods/single_module.php:82
396
+ #: ../mods/single_module.php:96
397
+ #: ../mods/archive_module.php:22
398
+ msgid "Click to toggle info"
399
+ msgstr "Klik om info weer te geven of te verbergen"
400
+
401
+ #: ../mods/single_module.php:86
402
  msgid ""
403
  "When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won't be applied.\n"
404
  " \t\t\t\t\tIf you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.\n"
408
  " \t\t\t\t\tAls u de regels in een logische OR wilt gebruiken kunt u de widget opnieuw toevoegen en daarop dan de andere regel toepassen.\n"
409
  " \t\t\t\t\t"
410
 
411
+ #: ../mods/single_module.php:95
412
  msgid "Make exception rule available to individual posts and tags."
413
  msgstr "Maak de uitzonderings regel beschikbaar voor individuele berichten en tags"
414
 
415
+ #: ../mods/single_module.php:99
416
  msgid ""
417
  "When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.\n"
418
  "\t\t\t\t\t\tYou can set the exception rule for tags in the single Edit Tag Panel (go to <a href=\"edit-tags.php?taxonomy=post_tag\">Post Tags</a>,\n"
428
  " \t\t\t\t\tLet er op dat uitzonderings regels voor auteur en categorie worden verwijderd.\n"
429
  " \t\t\t\t"
430
 
431
+ #: ../mods/single_module.php:116
432
  msgid "Except the posts by author"
433
  msgstr "Behalve de berichten van"
434
 
435
+ #: ../mods/single_module.php:127
436
  msgid "Except the posts in category"
437
  msgstr "Behalve de berichten in de categorie"
438
 
439
+ #: ../mods/attachment_module.php:22
440
+ msgid "Show widget on attachment pages"
441
+ msgstr "Toon de widget op bijlage pagina's"
442
+
443
+ #: ../mods/error_module.php:22
444
+ msgid "Show widget on the error page?"
445
+ msgstr "Toon de widget op de foutmeldings pagina?"
446
+
447
+ #: ../mods/frontpage_module.php:22
448
+ msgid "Show widget on the front page?"
449
+ msgstr "De widget op de startpagina tonen?"
450
+
451
+ #: ../mods/frontpage_module.php:26
452
+ msgid ""
453
+ "This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />\n"
454
+ "\t\t\t\t\t\tWhen a static page is set, you can use the options for the static pages below.\n"
455
+ "\t\t\t\t\t"
456
+ msgstr ""
457
+ "Deze optie werkt alleen als de hoofdpagina de laatste posts toont (Zie Instellingen &gt; Lezen).<br />\n"
458
+ "\t\t\t\t\t\tWanneer deze optie op statische pagina staat, kunt u gebruik maken van de onderstaande pagina opties.\n"
459
+ "\t\t\t\t\t"
460
+
461
+ #: ../mods/archive_module.php:22
462
+ msgid "Show widget on archive pages"
463
+ msgstr "Toon de widget op archief pagina's"
464
 
465
+ #: ../mods/archive_module.php:26
466
+ msgid "This option does not include Author and Category Pages."
467
+ msgstr "Deze optie bevat niet auteurs en categorie pagina's"
468
+
469
+ #: ../mods/pages_module.php:42
470
+ #: ../mods/custompost_module.php:45
471
+ msgid "All childs"
472
+ msgstr "Alle kinderen"
473
+
474
+ #: ../mods/pages_module.php:92
475
+ #: ../mods/pages_module.php:95
476
+ msgid "Front page"
477
+ msgstr "Startpagina"
478
+
479
+ #: ../mods/pages_module.php:92
480
+ #: ../mods/pages_module.php:97
481
+ msgid "Posts page"
482
+ msgstr "Posts pagina"
483
+
484
+ #: ../mods/pages_module.php:107
485
  msgid "Show widget default on static pages?"
486
  msgstr "Toon de widget op pagina's?"
487
 
488
+ #: ../mods/pages_module.php:112
489
  msgid ""
490
  "Checking the \"All childs\" option, makes the exception rule apply\n"
491
  "\t\t\t\tto the parent and all items under it in all levels. Also future items\n"
493
  "\t\t\t\t\"All childs\" without the parent."
494
  msgstr "Door gebruik te maken van de \"Alle kinderen\" optie, wordt de uitzonderingsregel toegepast op de ouder en alle daaronder liggende item in alle levels. Ook toekomstige items onder de ouder. Het is niet mogelijk om de uitzonderingsregel toe te passen zonder de ouder."
495
 
496
+ #: ../mods/pages_module.php:122
497
  msgid "Except the page(s)"
498
  msgstr "Behalve de pagina('s)"
499
 
500
+ #: ../mods/author_module.php:35
 
 
 
 
 
 
 
 
 
 
 
501
  msgid "Show widget default on author pages?"
502
  msgstr "Toon de widget op auteurs pagina's?"
503
 
504
+ #: ../mods/author_module.php:39
505
  msgid "Except the author(s)"
506
  msgstr "Behalve van"
507
 
508
+ #: ../mods/bp_module.php:51
509
+ msgid "BuddyPress"
510
+ msgstr "BuddyPress"
 
 
511
 
512
+ #: ../mods/bp_module.php:53
513
+ msgid "Show widget default on BuddyPress pages?"
514
+ msgstr "Toon de widget op BuddyPress pagina's?"
515
 
516
+ #: ../mods/bp_module.php:57
517
+ msgid "Except on the compontents pages"
518
+ msgstr "Behalve op de componenten pagina's"
 
519
 
520
+ #: ../mods/bp_module.php:91
521
+ msgid "BuddyPress Groups"
522
+ msgstr "BuddyPress Groepen"
 
 
523
 
524
+ #: ../mods/bp_module.php:93
525
+ msgid "Show widget default on BuddyPress Group pages?"
526
+ msgstr "Toon de widget op BuddyPress Groep pagina's?"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
527
 
528
+ #: ../mods/bp_module.php:97
529
+ msgid "Except in the groups"
530
+ msgstr "Behalve in de groepen"
531
 
532
+ #: ../mods/role_module.php:10
533
+ msgid "Anonymous"
534
+ msgstr "Anoniem"
535
 
536
+ #: ../mods/role_module.php:41
537
+ msgid "Show widget to everybody?"
538
+ msgstr "Toon de widget aan iedereen?"
 
539
 
540
+ #: ../mods/role_module.php:45
541
+ msgid ""
542
+ "Setting options by role is very powerfull. It can override all other options!<br />\n"
543
+ "\t\t\t\t\t\tUsers who are not logged in, get the <em>Anonymous</em> role."
544
  msgstr ""
545
+ "De rol opties zijn zeer bijzonder. Ze kunnen alle andere opties overstijgen!<br />\n"
546
+ "\t\t\t\t\t\tGebruikers die niet ingelogd zijn, krijgen de <em>anonieme</em> rol."
547
 
548
+ #: ../mods/role_module.php:50
549
+ msgid "only to"
550
+ msgstr "alleen aan"
551
 
552
+ #: ../mods/useragent_module.php:10
553
+ msgid "(and other Gecko based)"
554
+ msgstr "(en andere op Gecko gebaseerd)"
555
 
556
+ #: ../mods/useragent_module.php:16
557
+ msgid "Other / Unknown / Not detected"
558
+ msgstr "Andere / Onbekend / Niet gedetecteerd"
559
 
560
+ #: ../mods/useragent_module.php:43
561
+ msgid "Show widget with all browsers?"
562
+ msgstr "De widget tonen met alle browsers?"
 
563
 
564
+ #: ../mods/useragent_module.php:47
565
+ msgid "Browser detection is never 100% accurate."
566
+ msgstr "Browser detectie is nooit 100% accuraat"
567
 
568
+ #: ../mods/useragent_module.php:52
569
+ msgid "Except the browser(s)"
570
+ msgstr "Behalve de browser(s)"
571
 
572
+ #: ../mods/custompost_module.php:107
573
+ msgid "Custom Post Type"
574
+ msgstr "Custom Post Type"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
575
 
576
+ #: ../mods/custompost_module.php:109
577
+ msgid "Show widget on"
578
+ msgstr "Toon de widget op"
579
 
580
+ #: ../mods/custompost_module.php:124
581
+ #: ../mods/custompost_module.php:167
582
+ msgid "Except for"
583
+ msgstr "Behalve voor"
584
 
585
+ #: ../mods/custompost_module.php:159
586
+ msgid "Custom Post Type Archives"
587
+ msgstr "Custom Post Type Archief"
588
 
589
+ #: ../mods/custompost_module.php:161
590
+ msgid "Show widget on Custom Post Type Archives"
591
+ msgstr "Toon de widget op de Custom Post Type archief pagina?"
592
 
593
+ #: ../mods/date_module.php:31
594
+ msgid "Show widget always?"
595
+ msgstr "Altijd de widget tonen?"
 
 
 
 
596
 
597
+ #: ../mods/date_module.php:35
598
+ msgid "Next to the above role option, the date option is also very powerfull. You've been warned!"
599
+ msgstr "Net zoals de bovenstaande opties, is de datum opties zeer bijzonder. U bent gewaarschuwd!"
600
 
601
+ #: ../mods/date_module.php:36
602
+ msgid "Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the"
603
+ msgstr "Voer datum in volgens hets JJJJ-MM-DD formaat. U kunt ook de kalander gebruiken door te klikken op"
604
 
605
+ #: ../mods/date_module.php:37
606
+ msgid ""
607
+ "Date ranges can be made by entering a From AND a To date<br />\n"
608
+ " \t\t\t\t\tWhen you want the widget to be displayed from a specific date, only fill in the From date<br />\n"
609
+ " \t\t\t\t\tWhen you want the widget to stop displaying on a specific date, only fill in the To date.\n"
610
+ " \t\t\t\t"
611
+ msgstr ""
612
+ "Datum periodes kunnen worden gemaakt door het invoeren van een 'van' en een 'tot' datum<br />\n"
613
+ " \t\t\t\t\tWanneer u de widget vanaf een bepaalde datum wilt tonen, vul dan alleen de 'van' datum in<br />\n"
614
+ " \t\t\t\t\tWanneer u de widget vanaf een bepaalde datum niet meer wilt tonen, vul dan alleen de 'tot' datum in.\n"
615
+ " \t\t\t\t"
616
 
617
+ #: ../mods/date_module.php:44
618
+ msgid "only"
619
+ msgstr "alleen"
620
 
621
+ #: ../mods/date_module.php:48
622
+ msgid "From"
623
+ msgstr "Van"
624
 
625
+ #: ../mods/date_module.php:52
626
+ msgid "To"
627
+ msgstr "Tot"
628
 
629
+ #: ../mods/wpec_module.php:39
630
+ msgid "Show widget default on WPSC categories?"
631
+ msgstr "Toon de widget standaard in de WPSC categoriën?"
632
 
633
+ #: ../mods/wpml_module.php:37
634
+ msgid "Language (WPML)"
635
+ msgstr "Taal (WPML)"
636
 
637
+ #: ../mods/wpml_module.php:39
638
+ msgid "Show widget default on all languages?"
639
+ msgstr "Toon de widget voor alle talen?"
640
 
641
+ #: ../mods/wpml_module.php:43
642
+ msgid "Using this option can override all other options."
643
+ msgstr "Door gebruik te maken van deze opties kan deze alle andere opties overstijgen."
644
 
645
+ #: ../mods/wpml_module.php:48
646
+ msgid "Except the languages"
647
+ msgstr "Behalve de talen"
648
 
649
+ #~ msgid "Dynamic Widgets: "
650
+ #~ msgstr "Dynamische Widgets: "
651
+ #~ msgid "Widget"
652
+ #~ msgstr "Widget"
653
  #~ msgid "This widget is"
654
  #~ msgstr "Deze widget is"
655
  #~ msgid "selection"
locale/dynamic-widgets.pot CHANGED
@@ -2,8 +2,8 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Dynamic Widgets\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2010-12-27 10:47+0100\n"
6
- "PO-Revision-Date: 2010-12-27 10:47+0100\n"
7
  "Last-Translator: Jacco\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
@@ -16,488 +16,627 @@ msgstr ""
16
  "X-Poedit-SearchPath-0: ..\n"
17
 
18
  # WordPress MO
19
- #: ../dynwid_admin_edit.php:24
20
- msgid "Anonymous"
 
21
  msgstr ""
22
 
23
- #: ../dynwid_admin_edit.php:387
24
- msgid "Widget options saved."
 
 
25
  msgstr ""
26
 
27
- #: ../dynwid_admin_edit.php:387
28
- #: ../dynwid_admin_edit.php:857
29
- msgid "Return"
30
  msgstr ""
31
 
32
- #: ../dynwid_admin_edit.php:387
33
- msgid "to Dynamic Widgets overview"
 
34
  msgstr ""
35
 
36
- #: ../dynwid_admin_edit.php:392
37
- msgid "Dynamic does not mean static hiding of a widget."
 
 
38
  msgstr ""
39
 
40
- #: ../dynwid_admin_edit.php:392
41
- msgid "Hint"
 
 
42
  msgstr ""
43
 
44
- #: ../dynwid_admin_edit.php:392
45
- msgid "Remove"
 
 
46
  msgstr ""
47
 
48
- #: ../dynwid_admin_edit.php:392
49
- msgid "the widget from the sidebar"
 
 
50
  msgstr ""
51
 
52
- #: ../dynwid_admin_edit.php:396
53
- msgid "The From date can't be later than the To date."
 
54
  msgstr ""
55
 
56
- #: ../dynwid_admin_edit.php:401
57
- msgid "Edit options for"
 
 
58
  msgstr ""
59
 
60
- # WordPress MO
61
- #: ../dynwid_admin_edit.php:401
62
- msgid "Widget"
 
63
  msgstr ""
64
 
65
- # WordPress MO
66
- #: ../dynwid_admin_edit.php:412
67
- #: ../dynwid_class_php4.php:54
68
- #: ../dynwid_class.php:48
69
- msgid "Role"
70
  msgstr ""
71
 
72
- #: ../dynwid_admin_edit.php:414
73
- msgid "Show widget to everybody?"
 
74
  msgstr ""
75
 
76
- #: ../dynwid_admin_edit.php:418
77
- msgid ""
78
- "Setting options by role is very powerfull. It can override all other options!<br />\n"
79
- "\t\t\t\t\t\tUsers who are not logged in, get the <em>Anonymous</em> role."
80
  msgstr ""
81
 
82
- # WordPress MO
83
- #: ../dynwid_admin_edit.php:422
84
- #: ../dynwid_admin_edit.php:446
85
- #: ../dynwid_admin_edit.php:473
86
- #: ../dynwid_admin_edit.php:497
87
- #: ../dynwid_admin_edit.php:514
88
- #: ../dynwid_admin_edit.php:579
89
- #: ../dynwid_admin_edit.php:641
90
- #: ../dynwid_admin_edit.php:655
91
- #: ../dynwid_admin_edit.php:675
92
- #: ../dynwid_admin_edit.php:685
93
- #: ../dynwid_admin_edit.php:694
94
- #: ../dynwid_admin_edit.php:811
95
- #: ../dynwid_admin_edit.php:836
96
- msgid "Yes"
97
  msgstr ""
98
 
99
- # WordPress MO
100
- #: ../dynwid_admin_edit.php:423
101
- #: ../dynwid_admin_edit.php:447
102
- #: ../dynwid_admin_edit.php:474
103
- #: ../dynwid_admin_edit.php:498
104
- #: ../dynwid_admin_edit.php:515
105
- #: ../dynwid_admin_edit.php:580
106
- #: ../dynwid_admin_edit.php:642
107
- #: ../dynwid_admin_edit.php:656
108
- #: ../dynwid_admin_edit.php:676
109
- #: ../dynwid_admin_edit.php:686
110
- #: ../dynwid_admin_edit.php:695
111
- #: ../dynwid_admin_edit.php:812
112
- #: ../dynwid_admin_edit.php:837
113
- msgid "No"
114
  msgstr ""
115
 
116
- #: ../dynwid_admin_edit.php:423
117
- msgid "only to"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
118
  msgstr ""
119
 
120
  # WordPress MO
121
- #: ../dynwid_admin_edit.php:432
122
- #: ../dynwid_class_php4.php:55
123
- #: ../dynwid_class.php:49
124
- msgid "Date"
125
  msgstr ""
126
 
127
- #: ../dynwid_admin_edit.php:434
128
- msgid "Show widget always?"
129
  msgstr ""
130
 
131
- #: ../dynwid_admin_edit.php:438
132
- msgid "Next to the above role option, the date option is also very powerfull. You've been warned!"
133
  msgstr ""
134
 
135
- #: ../dynwid_admin_edit.php:439
136
- msgid "Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the"
137
  msgstr ""
138
 
139
- #: ../dynwid_admin_edit.php:440
140
- msgid ""
141
- "Date ranges can be made by entering a From AND a To date<br />\n"
142
- " \t\t\t\t\tWhen you want the widget to be displayed from a specific date, only fill in the From date<br />\n"
143
- " \t\t\t\t\tWhen you want the widget to stop displaying on a specific date, only fill in the To date.\n"
144
- " \t\t\t\t"
145
  msgstr ""
146
 
147
- #: ../dynwid_admin_edit.php:447
148
- msgid "only"
149
  msgstr ""
150
 
151
- #: ../dynwid_admin_edit.php:451
152
- msgid "From"
153
  msgstr ""
154
 
155
- #: ../dynwid_admin_edit.php:455
156
- msgid "To"
157
  msgstr ""
158
 
159
- #: ../dynwid_admin_edit.php:464
160
- msgid "Language (WPML)"
161
  msgstr ""
162
 
163
- #: ../dynwid_admin_edit.php:466
164
- msgid "Show widget default on all languages?"
165
  msgstr ""
166
 
167
- #: ../dynwid_admin_edit.php:470
168
- msgid "Using this option can override all other options."
169
  msgstr ""
170
 
171
- #: ../dynwid_admin_edit.php:475
172
- msgid "Except the languages"
173
  msgstr ""
174
 
175
- #: ../dynwid_admin_edit.php:486
176
- #: ../dynwid_class_php4.php:57
177
- #: ../dynwid_class.php:51
178
- msgid "Front Page"
179
  msgstr ""
180
 
181
- #: ../dynwid_admin_edit.php:488
182
- msgid "Show widget on the front page?"
183
  msgstr ""
184
 
185
- #: ../dynwid_admin_edit.php:492
186
- msgid ""
187
- "This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />\n"
188
- "\t\t\t\t\t\tWhen a static page is set, you can use the options for the static pages below.\n"
189
- "\t\t\t\t\t"
190
  msgstr ""
191
 
192
- #: ../dynwid_admin_edit.php:503
193
- #: ../dynwid_class_php4.php:58
194
- #: ../dynwid_class.php:52
195
- msgid "Single Posts"
196
  msgstr ""
197
 
198
- #: ../dynwid_admin_edit.php:505
199
- msgid "Show widget default on single posts?"
200
  msgstr ""
201
 
202
- #: ../dynwid_admin_edit.php:509
203
- msgid ""
204
- "When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won't be applied.\n"
205
- " \t\t\t\t\tIf you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.\n"
206
- " \t\t\t\t\t"
207
  msgstr ""
208
 
209
- #: ../dynwid_admin_edit.php:518
210
- msgid "Make exception rule available to individual posts and tags."
211
  msgstr ""
212
 
213
- #: ../dynwid_admin_edit.php:522
214
- msgid ""
215
- "When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.\n"
216
- "\t\t\t\t\t\tYou can set the exception rule for tags in the single Edit Tag Panel (go to <a href=\"edit-tags.php?taxonomy=post_tag\">Post Tags</a>,\n"
217
- "\t\t\t\t\t\tclick a tag), For individual posts in the <a href=\"post-new.php\">New</a> or <a href=\"edit.php\">Edit</a> Posts panel.\n"
218
- "\t\t\t\t\t\tException rules for tags and individual posts in any combination work independantly, but will always be counted as one exception.<br />\n"
219
- " \t\t\t\t\tPlease note when exception rules are set for Author and/or Category, these will be removed.\n"
220
- " \t\t\t\t"
221
  msgstr ""
222
 
223
- #: ../dynwid_admin_edit.php:539
224
- msgid "Except the posts by author"
 
225
  msgstr ""
226
 
227
- #: ../dynwid_admin_edit.php:550
228
- msgid "Except the posts in category"
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  msgstr ""
230
 
231
  # WordPress MO
232
- #: ../dynwid_admin_edit.php:564
233
- #: ../dynwid_class_php4.php:59
234
- #: ../dynwid_class.php:53
235
- msgid "Pages"
236
  msgstr ""
237
 
238
- #: ../dynwid_admin_edit.php:566
239
- msgid "Show widget default on static pages?"
240
  msgstr ""
241
 
242
- #: ../dynwid_admin_edit.php:571
243
- msgid ""
244
- "Checking the \"All childs\" option, makes the exception rule apply\n"
245
- "\t\t\t\tto the parent and all items under it in all levels. Also future items\n"
246
- "\t\t\t\tunder the parent. It's not possible to apply an exception rule to\n"
247
- "\t\t\t\t\"All childs\" without the parent."
248
  msgstr ""
249
 
250
- #: ../dynwid_admin_edit.php:581
251
- msgid "Except the page(s)"
252
  msgstr ""
253
 
254
- #: ../dynwid_admin_edit.php:620
255
- #: ../dynwid_admin_edit.php:735
256
- msgid "All childs"
257
  msgstr ""
258
 
259
- #: ../dynwid_admin_edit.php:637
260
- #: ../dynwid_class_php4.php:60
261
- #: ../dynwid_class.php:54
262
- msgid "Author Pages"
263
  msgstr ""
264
 
265
- #: ../dynwid_admin_edit.php:639
266
- msgid "Show widget default on author pages?"
267
  msgstr ""
268
 
269
- #: ../dynwid_admin_edit.php:643
270
- msgid "Except the author(s)"
271
  msgstr ""
272
 
273
- #: ../dynwid_admin_edit.php:651
274
- #: ../dynwid_class_php4.php:61
275
- #: ../dynwid_class.php:55
276
- msgid "Category Pages"
277
  msgstr ""
278
 
279
- #: ../dynwid_admin_edit.php:653
280
- msgid "Show widget default on category pages?"
281
  msgstr ""
282
 
283
- #: ../dynwid_admin_edit.php:657
284
- #: ../dynwid_admin_edit.php:838
285
- msgid "Except the categories"
286
  msgstr ""
287
 
288
- #: ../dynwid_admin_edit.php:666
289
- #: ../dynwid_class_php4.php:62
290
- #: ../dynwid_class.php:56
291
- msgid "Archive Pages"
292
  msgstr ""
293
 
294
- #: ../dynwid_admin_edit.php:668
295
- msgid "Show widget on archive pages"
296
  msgstr ""
297
 
298
- #: ../dynwid_admin_edit.php:672
299
- msgid "This option does not include Author and Category Pages."
300
  msgstr ""
301
 
302
- #: ../dynwid_admin_edit.php:681
303
- #: ../dynwid_class_php4.php:63
304
- #: ../dynwid_class.php:57
305
- msgid "Error Page"
306
  msgstr ""
307
 
308
- #: ../dynwid_admin_edit.php:683
309
- msgid "Show widget on the error page?"
310
  msgstr ""
311
 
312
- #: ../dynwid_admin_edit.php:690
313
  msgid "Search Page"
314
  msgstr ""
315
 
316
- #: ../dynwid_admin_edit.php:692
317
  msgid "Show widget on the search page?"
318
  msgstr ""
319
 
320
- #: ../dynwid_admin_edit.php:797
321
- msgid "Custom Post Type"
 
 
 
 
 
 
 
322
  msgstr ""
323
 
324
- #: ../dynwid_admin_edit.php:799
325
- msgid "Show widget on"
 
 
 
 
 
 
 
326
  msgstr ""
327
 
328
- #: ../dynwid_admin_edit.php:814
329
- msgid "Except for"
330
  msgstr ""
331
 
332
- #: ../dynwid_admin_edit.php:832
333
- #: ../dynwid_class_php4.php:65
334
- #: ../dynwid_class.php:59
335
- msgid "WPSC Category"
336
  msgstr ""
337
 
338
- #: ../dynwid_admin_edit.php:834
339
- msgid "Show widget default on WPSC categories?"
340
  msgstr ""
341
 
342
- # WordPress MO
343
- #: ../dynwid_admin_edit.php:853
344
- msgid "Save"
345
  msgstr ""
346
 
347
- #: ../dynwid_class_php4.php:56
348
- #: ../dynwid_class.php:50
349
- msgid "Language"
350
  msgstr ""
351
 
352
- #: ../dynwid_class_php4.php:64
353
- #: ../dynwid_class.php:58
354
- msgid "Search page"
 
355
  msgstr ""
356
 
357
- #: ../dynwid_admin.php:10
358
- #: ../dynamic-widgets.php:138
359
- #: ../dynamic-widgets.php:222
360
- msgid "Dynamic Widgets"
 
361
  msgstr ""
362
 
363
- #: ../dynwid_admin.php:16
364
- msgid "<b>WARNING</b> STRICT sql mode in effect. Dynamic Widgets might not work correctly. Please disable STRICT sql mode."
365
  msgstr ""
366
 
367
- #: ../dynwid_admin.php:36
368
- msgid "Oops! Something went terrible wrong. Please reinstall Dynamic Widgets."
 
 
 
 
 
 
369
  msgstr ""
370
 
371
- #: ../dynwid_admin.php:44
372
- #: ../dynwid_admin_overview.php:28
373
- msgid "OLD"
374
  msgstr ""
375
 
376
- #: ../dynwid_admin.php:44
377
- #: ../dynwid_admin_overview.php:28
378
- msgid "FILTER"
379
  msgstr ""
380
 
381
- #: ../dynwid_admin_overview.php:15
382
- msgid "Widget options have been reset to default."
383
  msgstr ""
384
 
385
- #: ../dynwid_admin_overview.php:28
386
- msgid "Method set to"
387
  msgstr ""
388
 
389
- #: ../dynwid_admin_overview.php:36
390
- msgid "Inactive Widgets"
391
  msgstr ""
392
 
393
- #: ../dynwid_admin_overview.php:59
394
- #: ../dynwid_admin_overview.php:62
395
- msgid "Edit this widget options"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  msgstr ""
397
 
398
  # WordPress MO
399
- #: ../dynwid_admin_overview.php:62
400
- msgid "Edit"
401
  msgstr ""
402
 
403
- #: ../dynwid_admin_overview.php:67
404
- msgid "Reset widget to Static"
405
  msgstr ""
406
 
407
- #: ../dynwid_admin_overview.php:67
408
- #: ../dynamic-widgets.php:130
409
- msgid "Reset"
 
410
  msgstr ""
411
 
412
- #: ../dynwid_admin_overview.php:73
413
- #: ../dynamic-widgets.php:127
414
- #: ../dynamic-widgets.php:129
415
- #: ../dynamic-widgets.php:569
416
- msgid "Dynamic"
417
  msgstr ""
418
 
419
- #: ../dynwid_admin_overview.php:73
420
- #: ../dynamic-widgets.php:127
421
- #: ../dynamic-widgets.php:128
422
- #: ../dynamic-widgets.php:131
423
- #: ../dynamic-widgets.php:569
424
- msgid "Static"
425
  msgstr ""
426
 
427
- #: ../dynwid_admin_overview.php:88
428
- msgid "Advanced"
429
  msgstr ""
430
 
431
- #: ../dynamic-widgets.php:123
432
- msgid "Widgets are always displayed by default"
433
  msgstr ""
434
 
435
- #: ../dynamic-widgets.php:123
436
- msgid "The '<em>Yes</em>' selection"
437
  msgstr ""
438
 
439
- #: ../dynamic-widgets.php:124
440
- msgid "Click on the"
441
  msgstr ""
442
 
443
- #: ../dynamic-widgets.php:124
444
- msgid "next to the options for more info"
445
  msgstr ""
446
 
447
- #: ../dynamic-widgets.php:125
448
- msgid "The"
449
  msgstr ""
450
 
451
- #: ../dynamic-widgets.php:125
452
- msgid "next to a section means it has options set."
 
453
  msgstr ""
454
 
455
- #: ../dynamic-widgets.php:128
456
- msgid "When a widget is"
457
  msgstr ""
458
 
459
- #: ../dynamic-widgets.php:128
460
- msgid "the widget uses the WordPress default. In other words, it's shown everywhere"
461
  msgstr ""
462
 
463
- #: ../dynamic-widgets.php:129
464
- msgid "A widget is"
465
  msgstr ""
466
 
467
- #: ../dynamic-widgets.php:129
468
- msgid "when there are options set, i.e. not showing on the front page."
469
  msgstr ""
470
 
471
- #: ../dynamic-widgets.php:131
472
- msgid "Reset makes the widget return to"
473
  msgstr ""
474
 
475
- # WordPress MO
476
- #: ../dynamic-widgets.php:175
477
- msgid "Settings"
 
 
 
478
  msgstr ""
479
 
480
- #: ../dynamic-widgets.php:189
481
- msgid "Apply exception rule to widgets:"
482
  msgstr ""
483
 
484
- #: ../dynamic-widgets.php:303
485
- msgid "Dynamic Widgets Options saved"
486
  msgstr ""
487
 
488
- #: ../dynamic-widgets.php:303
489
- msgid "for"
490
  msgstr ""
491
 
492
- #: ../dynamic-widgets.php:593
493
- msgid "and"
494
  msgstr ""
495
 
496
- #: ../dynamic-widgets.php:599
497
- msgid "Options set for"
498
  msgstr ""
499
 
500
- #: ../dynamic-widgets.php:599
501
- msgid "Option set for"
 
 
 
 
 
 
 
 
502
  msgstr ""
503
 
2
  msgstr ""
3
  "Project-Id-Version: Dynamic Widgets\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2011-01-29 23:19+0100\n"
6
+ "PO-Revision-Date: 2011-01-29 23:20+0100\n"
7
  "Last-Translator: Jacco\n"
8
  "Language-Team: \n"
9
  "MIME-Version: 1.0\n"
16
  "X-Poedit-SearchPath-0: ..\n"
17
 
18
  # WordPress MO
19
+ #: ../dynwid_class_php4.php:58
20
+ #: ../dynwid_class.php:52
21
+ msgid "Role"
22
  msgstr ""
23
 
24
+ # WordPress MO
25
+ #: ../dynwid_class_php4.php:59
26
+ #: ../dynwid_class.php:53
27
+ msgid "Date"
28
  msgstr ""
29
 
30
+ #: ../dynwid_class_php4.php:60
31
+ #: ../dynwid_class.php:54
32
+ msgid "Browser"
33
  msgstr ""
34
 
35
+ #: ../dynwid_class_php4.php:61
36
+ #: ../dynwid_class.php:55
37
+ msgid "Language"
38
  msgstr ""
39
 
40
+ #: ../dynwid_class_php4.php:62
41
+ #: ../dynwid_class.php:56
42
+ #: ../mods/frontpage_module.php:20
43
+ msgid "Front Page"
44
  msgstr ""
45
 
46
+ #: ../dynwid_class_php4.php:63
47
+ #: ../dynwid_class.php:57
48
+ #: ../mods/single_module.php:80
49
+ msgid "Single Posts"
50
  msgstr ""
51
 
52
+ #: ../dynwid_class_php4.php:64
53
+ #: ../dynwid_class.php:58
54
+ #: ../mods/attachment_module.php:20
55
+ msgid "Attachments"
56
  msgstr ""
57
 
58
+ # WordPress MO
59
+ #: ../dynwid_class_php4.php:65
60
+ #: ../dynwid_class.php:59
61
+ msgid "Pages"
62
  msgstr ""
63
 
64
+ #: ../dynwid_class_php4.php:66
65
+ #: ../dynwid_class.php:60
66
+ msgid "Author Pages"
67
  msgstr ""
68
 
69
+ #: ../dynwid_class_php4.php:67
70
+ #: ../dynwid_class.php:61
71
+ #: ../mods/category_module.php:33
72
+ msgid "Category Pages"
73
  msgstr ""
74
 
75
+ #: ../dynwid_class_php4.php:68
76
+ #: ../dynwid_class.php:62
77
+ #: ../mods/archive_module.php:20
78
+ msgid "Archive Pages"
79
  msgstr ""
80
 
81
+ #: ../dynwid_class_php4.php:69
82
+ #: ../dynwid_class.php:63
83
+ #: ../mods/error_module.php:20
84
+ msgid "Error Page"
 
85
  msgstr ""
86
 
87
+ #: ../dynwid_class_php4.php:70
88
+ #: ../dynwid_class.php:64
89
+ msgid "Search page"
90
  msgstr ""
91
 
92
+ #: ../dynwid_class_php4.php:71
93
+ #: ../dynwid_class.php:65
94
+ msgid "WPSC Category"
 
95
  msgstr ""
96
 
97
+ #: ../dynwid_admin.php:18
98
+ #: ../dynamic-widgets.php:125
99
+ #: ../dynamic-widgets.php:148
100
+ #: ../dynamic-widgets.php:247
101
+ #: ../dynamic-widgets.php:647
102
+ msgid "Dynamic Widgets"
 
 
 
 
 
 
 
 
 
103
  msgstr ""
104
 
105
+ #: ../dynwid_admin.php:25
106
+ msgid "<b>WARNING</b> STRICT sql mode in effect. Dynamic Widgets might not work correctly. Please disable STRICT sql mode."
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  msgstr ""
108
 
109
+ #: ../dynwid_admin.php:45
110
+ msgid "Oops! Something went terrible wrong. Please reinstall Dynamic Widgets."
111
+ msgstr ""
112
+
113
+ #: ../dynwid_admin.php:53
114
+ #: ../dynwid_admin_overview.php:28
115
+ msgid "OLD"
116
+ msgstr ""
117
+
118
+ #: ../dynwid_admin.php:53
119
+ #: ../dynwid_admin_overview.php:28
120
+ msgid "FILTER"
121
+ msgstr ""
122
+
123
+ #: ../dynamic-widgets.php:133
124
+ msgid "Widgets are always displayed by default"
125
+ msgstr ""
126
+
127
+ #: ../dynamic-widgets.php:133
128
+ msgid "The '<em>Yes</em>' selection"
129
+ msgstr ""
130
+
131
+ #: ../dynamic-widgets.php:134
132
+ msgid "Click on the"
133
+ msgstr ""
134
+
135
+ #: ../dynamic-widgets.php:134
136
+ msgid "next to the options for more info"
137
+ msgstr ""
138
+
139
+ #: ../dynamic-widgets.php:135
140
+ msgid "The"
141
+ msgstr ""
142
+
143
+ #: ../dynamic-widgets.php:135
144
+ msgid "next to a section means it has options set."
145
+ msgstr ""
146
+
147
+ #: ../dynamic-widgets.php:137
148
+ #: ../dynamic-widgets.php:138
149
+ #: ../dynamic-widgets.php:141
150
+ #: ../dynamic-widgets.php:649
151
+ #: ../dynwid_admin_overview.php:73
152
+ msgid "Static"
153
+ msgstr ""
154
+
155
+ #: ../dynamic-widgets.php:137
156
+ #: ../dynamic-widgets.php:139
157
+ #: ../dynamic-widgets.php:649
158
+ #: ../dynwid_admin_overview.php:73
159
+ msgid "Dynamic"
160
+ msgstr ""
161
+
162
+ #: ../dynamic-widgets.php:138
163
+ msgid "When a widget is"
164
+ msgstr ""
165
+
166
+ #: ../dynamic-widgets.php:138
167
+ msgid "the widget uses the WordPress default. In other words, it's shown everywhere"
168
+ msgstr ""
169
+
170
+ #: ../dynamic-widgets.php:139
171
+ msgid "A widget is"
172
+ msgstr ""
173
+
174
+ #: ../dynamic-widgets.php:139
175
+ msgid "when there are options set, i.e. not showing on the front page."
176
+ msgstr ""
177
+
178
+ #: ../dynamic-widgets.php:140
179
+ #: ../dynwid_admin_overview.php:67
180
+ msgid "Reset"
181
+ msgstr ""
182
+
183
+ #: ../dynamic-widgets.php:141
184
+ msgid "Reset makes the widget return to"
185
  msgstr ""
186
 
187
  # WordPress MO
188
+ #: ../dynamic-widgets.php:200
189
+ msgid "Settings"
 
 
190
  msgstr ""
191
 
192
+ #: ../dynamic-widgets.php:214
193
+ msgid "Apply exception rule to widgets:"
194
  msgstr ""
195
 
196
+ #: ../dynamic-widgets.php:230
197
+ msgid "Off"
198
  msgstr ""
199
 
200
+ #: ../dynamic-widgets.php:230
201
+ msgid "On"
202
  msgstr ""
203
 
204
+ #: ../dynamic-widgets.php:231
205
+ msgid " (Default: "
 
 
 
 
206
  msgstr ""
207
 
208
+ #: ../dynamic-widgets.php:328
209
+ msgid "Dynamic Widgets Options saved"
210
  msgstr ""
211
 
212
+ #: ../dynamic-widgets.php:328
213
+ msgid "for"
214
  msgstr ""
215
 
216
+ #: ../dynamic-widgets.php:648
217
+ msgid "Edit Dynamic Widgets Options"
218
  msgstr ""
219
 
220
+ #: ../dynamic-widgets.php:673
221
+ msgid "and"
222
  msgstr ""
223
 
224
+ #: ../dynamic-widgets.php:679
225
+ msgid "Options set for"
226
  msgstr ""
227
 
228
+ #: ../dynamic-widgets.php:679
229
+ msgid "Option set for"
230
  msgstr ""
231
 
232
+ #: ../dynwid_admin_edit.php:60
233
+ msgid "Widget options saved."
234
  msgstr ""
235
 
236
+ #: ../dynwid_admin_edit.php:60
237
+ #: ../dynwid_admin_edit.php:120
238
+ msgid "Return"
 
239
  msgstr ""
240
 
241
+ #: ../dynwid_admin_edit.php:60
242
+ msgid "to Dynamic Widgets overview"
243
  msgstr ""
244
 
245
+ #: ../dynwid_admin_edit.php:65
246
+ msgid "Dynamic does not mean static hiding of a widget."
 
 
 
247
  msgstr ""
248
 
249
+ #: ../dynwid_admin_edit.php:65
250
+ msgid "Hint"
 
 
251
  msgstr ""
252
 
253
+ #: ../dynwid_admin_edit.php:65
254
+ msgid "Remove"
255
  msgstr ""
256
 
257
+ #: ../dynwid_admin_edit.php:65
258
+ msgid "the widget from the sidebar"
 
 
 
259
  msgstr ""
260
 
261
+ #: ../dynwid_admin_edit.php:69
262
+ msgid "The From date can't be later than the To date."
263
  msgstr ""
264
 
265
+ #: ../dynwid_admin_edit.php:74
266
+ msgid "Edit options for the widget"
 
 
 
 
 
 
267
  msgstr ""
268
 
269
+ # WordPress MO
270
+ #: ../dynwid_admin_edit.php:116
271
+ msgid "Save"
272
  msgstr ""
273
 
274
+ #: ../dynwid_admin_overview.php:15
275
+ msgid "Widget options have been reset to default."
276
+ msgstr ""
277
+
278
+ #: ../dynwid_admin_overview.php:28
279
+ msgid "Method set to"
280
+ msgstr ""
281
+
282
+ #: ../dynwid_admin_overview.php:36
283
+ msgid "Inactive Widgets"
284
+ msgstr ""
285
+
286
+ #: ../dynwid_admin_overview.php:59
287
+ #: ../dynwid_admin_overview.php:62
288
+ msgid "Edit this widget options"
289
  msgstr ""
290
 
291
  # WordPress MO
292
+ #: ../dynwid_admin_overview.php:62
293
+ msgid "Edit"
 
 
294
  msgstr ""
295
 
296
+ #: ../dynwid_admin_overview.php:67
297
+ msgid "Reset widget to Static"
298
  msgstr ""
299
 
300
+ #: ../dynwid_admin_overview.php:88
301
+ msgid "Advanced"
 
 
 
 
302
  msgstr ""
303
 
304
+ #: ../dynwid_admin_overview.php:93
305
+ msgid "wp_head() check:"
306
  msgstr ""
307
 
308
+ #: ../dynwid_admin_overview.php:98
309
+ msgid "wp_head() is NOT called (at the most obvious place)"
 
310
  msgstr ""
311
 
312
+ #: ../dynwid_admin_overview.php:102
313
+ msgid "wp_head() is called"
 
 
314
  msgstr ""
315
 
316
+ #: ../dynwid_admin_overview.php:106
317
+ msgid "Unable to determine if wp_head() is called"
318
  msgstr ""
319
 
320
+ #: ../dynwid_admin_overview.php:118
321
+ msgid "Use 'OLD' method"
322
  msgstr ""
323
 
324
+ #: ../dynwid_admin_overview.php:124
325
+ msgid "When upgrading to WPEC 3.8 the Dynamic Widgets rules for WPEC are lost. The WPEC dump gives you an overview of the rules before the update."
 
 
326
  msgstr ""
327
 
328
+ #: ../dynwid_admin_overview.php:125
329
+ msgid "WARNING"
330
  msgstr ""
331
 
332
+ #: ../dynwid_admin_overview.php:125
333
+ msgid "This only works correct when you did not add or change anything in the Dynamic Widgets rules."
 
334
  msgstr ""
335
 
336
+ #: ../dynwid_admin_overview.php:130
337
+ msgid "Create WPEC dump"
 
 
338
  msgstr ""
339
 
340
+ #: ../dynwid_admin_overview.php:137
341
+ msgid "For debugging purposes it is possible you're asked to create a dump. Click the 'Create dump' button and save the text file."
342
  msgstr ""
343
 
344
+ #: ../dynwid_admin_overview.php:142
345
+ msgid "Create dump"
346
  msgstr ""
347
 
348
+ #: ../dynwid_admin_overview.php:149
349
+ msgid "When you deceide not to use this plugin anymore (sorry to hear that!). You can cleanup all settings and data related to this plugin by clicking on the 'Uninstall' button. This process is irreversible! After the cleanup the plugin is deactivated automaticly."
 
 
350
  msgstr ""
351
 
352
+ #: ../dynwid_admin_overview.php:154
353
+ msgid "Uninstall"
354
  msgstr ""
355
 
356
+ #: ../mods/search_module.php:21
357
  msgid "Search Page"
358
  msgstr ""
359
 
360
+ #: ../mods/search_module.php:23
361
  msgid "Show widget on the search page?"
362
  msgstr ""
363
 
364
+ # WordPress MO
365
+ #: ../mods/search_module.php:25
366
+ #: ../mods/category_module.php:37
367
+ #: ../mods/single_module.php:91
368
+ #: ../mods/attachment_module.php:24
369
+ #: ../mods/error_module.php:24
370
+ #: ../mods/frontpage_module.php:31
371
+ #: ../mods/archive_module.php:29
372
+ msgid "Yes"
373
  msgstr ""
374
 
375
+ # WordPress MO
376
+ #: ../mods/search_module.php:26
377
+ #: ../mods/category_module.php:38
378
+ #: ../mods/single_module.php:92
379
+ #: ../mods/attachment_module.php:25
380
+ #: ../mods/error_module.php:25
381
+ #: ../mods/frontpage_module.php:32
382
+ #: ../mods/archive_module.php:30
383
+ msgid "No"
384
  msgstr ""
385
 
386
+ #: ../mods/category_module.php:35
387
+ msgid "Show widget default on category pages?"
388
  msgstr ""
389
 
390
+ #: ../mods/category_module.php:39
391
+ msgid "Except the categories"
 
 
392
  msgstr ""
393
 
394
+ #: ../mods/single_module.php:75
395
+ msgid "Posts: "
396
  msgstr ""
397
 
398
+ #: ../mods/single_module.php:75
399
+ msgid "Tags: "
 
400
  msgstr ""
401
 
402
+ #: ../mods/single_module.php:82
403
+ msgid "Show widget default on single posts?"
 
404
  msgstr ""
405
 
406
+ #: ../mods/single_module.php:82
407
+ #: ../mods/single_module.php:96
408
+ #: ../mods/archive_module.php:22
409
+ msgid "Click to toggle info"
410
  msgstr ""
411
 
412
+ #: ../mods/single_module.php:86
413
+ msgid ""
414
+ "When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won't be applied.\n"
415
+ " \t\t\t\t\tIf you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.\n"
416
+ " \t\t\t\t\t"
417
  msgstr ""
418
 
419
+ #: ../mods/single_module.php:95
420
+ msgid "Make exception rule available to individual posts and tags."
421
  msgstr ""
422
 
423
+ #: ../mods/single_module.php:99
424
+ msgid ""
425
+ "When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.\n"
426
+ "\t\t\t\t\t\tYou can set the exception rule for tags in the single Edit Tag Panel (go to <a href=\"edit-tags.php?taxonomy=post_tag\">Post Tags</a>,\n"
427
+ "\t\t\t\t\t\tclick a tag), For individual posts in the <a href=\"post-new.php\">New</a> or <a href=\"edit.php\">Edit</a> Posts panel.\n"
428
+ "\t\t\t\t\t\tException rules for tags and individual posts in any combination work independantly, but will always be counted as one exception.<br />\n"
429
+ " \t\t\t\t\tPlease note when exception rules are set for Author and/or Category, these will be removed.\n"
430
+ " \t\t\t\t"
431
  msgstr ""
432
 
433
+ #: ../mods/single_module.php:116
434
+ msgid "Except the posts by author"
 
435
  msgstr ""
436
 
437
+ #: ../mods/single_module.php:127
438
+ msgid "Except the posts in category"
 
439
  msgstr ""
440
 
441
+ #: ../mods/attachment_module.php:22
442
+ msgid "Show widget on attachment pages"
443
  msgstr ""
444
 
445
+ #: ../mods/error_module.php:22
446
+ msgid "Show widget on the error page?"
447
  msgstr ""
448
 
449
+ #: ../mods/frontpage_module.php:22
450
+ msgid "Show widget on the front page?"
451
  msgstr ""
452
 
453
+ #: ../mods/frontpage_module.php:26
454
+ msgid ""
455
+ "This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />\n"
456
+ "\t\t\t\t\t\tWhen a static page is set, you can use the options for the static pages below.\n"
457
+ "\t\t\t\t\t"
458
+ msgstr ""
459
+
460
+ #: ../mods/archive_module.php:22
461
+ msgid "Show widget on archive pages"
462
+ msgstr ""
463
+
464
+ #: ../mods/archive_module.php:26
465
+ msgid "This option does not include Author and Category Pages."
466
+ msgstr ""
467
+
468
+ #: ../mods/pages_module.php:42
469
+ #: ../mods/custompost_module.php:45
470
+ msgid "All childs"
471
+ msgstr ""
472
+
473
+ #: ../mods/pages_module.php:92
474
+ #: ../mods/pages_module.php:95
475
+ msgid "Front page"
476
+ msgstr ""
477
+
478
+ #: ../mods/pages_module.php:92
479
+ #: ../mods/pages_module.php:97
480
+ msgid "Posts page"
481
+ msgstr ""
482
+
483
+ #: ../mods/pages_module.php:107
484
+ msgid "Show widget default on static pages?"
485
+ msgstr ""
486
+
487
+ #: ../mods/pages_module.php:112
488
+ msgid ""
489
+ "Checking the \"All childs\" option, makes the exception rule apply\n"
490
+ "\t\t\t\tto the parent and all items under it in all levels. Also future items\n"
491
+ "\t\t\t\tunder the parent. It's not possible to apply an exception rule to\n"
492
+ "\t\t\t\t\"All childs\" without the parent."
493
+ msgstr ""
494
+
495
+ #: ../mods/pages_module.php:122
496
+ msgid "Except the page(s)"
497
+ msgstr ""
498
+
499
+ #: ../mods/author_module.php:35
500
+ msgid "Show widget default on author pages?"
501
+ msgstr ""
502
+
503
+ #: ../mods/author_module.php:39
504
+ msgid "Except the author(s)"
505
+ msgstr ""
506
+
507
+ #: ../mods/bp_module.php:51
508
+ msgid "BuddyPress"
509
+ msgstr ""
510
+
511
+ #: ../mods/bp_module.php:53
512
+ msgid "Show widget default on BuddyPress pages?"
513
+ msgstr ""
514
+
515
+ #: ../mods/bp_module.php:57
516
+ msgid "Except on the compontents pages"
517
+ msgstr ""
518
+
519
+ #: ../mods/bp_module.php:91
520
+ msgid "BuddyPress Groups"
521
+ msgstr ""
522
+
523
+ #: ../mods/bp_module.php:93
524
+ msgid "Show widget default on BuddyPress Group pages?"
525
+ msgstr ""
526
+
527
+ #: ../mods/bp_module.php:97
528
+ msgid "Except in the groups"
529
  msgstr ""
530
 
531
  # WordPress MO
532
+ #: ../mods/role_module.php:10
533
+ msgid "Anonymous"
534
  msgstr ""
535
 
536
+ #: ../mods/role_module.php:41
537
+ msgid "Show widget to everybody?"
538
  msgstr ""
539
 
540
+ #: ../mods/role_module.php:45
541
+ msgid ""
542
+ "Setting options by role is very powerfull. It can override all other options!<br />\n"
543
+ "\t\t\t\t\t\tUsers who are not logged in, get the <em>Anonymous</em> role."
544
  msgstr ""
545
 
546
+ #: ../mods/role_module.php:50
547
+ msgid "only to"
 
 
 
548
  msgstr ""
549
 
550
+ #: ../mods/useragent_module.php:10
551
+ msgid "(and other Gecko based)"
 
 
 
 
552
  msgstr ""
553
 
554
+ #: ../mods/useragent_module.php:16
555
+ msgid "Other / Unknown / Not detected"
556
  msgstr ""
557
 
558
+ #: ../mods/useragent_module.php:43
559
+ msgid "Show widget with all browsers?"
560
  msgstr ""
561
 
562
+ #: ../mods/useragent_module.php:47
563
+ msgid "Browser detection is never 100% accurate."
564
  msgstr ""
565
 
566
+ #: ../mods/useragent_module.php:52
567
+ msgid "Except the browser(s)"
568
  msgstr ""
569
 
570
+ #: ../mods/custompost_module.php:107
571
+ msgid "Custom Post Type"
572
  msgstr ""
573
 
574
+ #: ../mods/custompost_module.php:109
575
+ msgid "Show widget on"
576
  msgstr ""
577
 
578
+ #: ../mods/custompost_module.php:124
579
+ #: ../mods/custompost_module.php:167
580
+ msgid "Except for"
581
  msgstr ""
582
 
583
+ #: ../mods/custompost_module.php:159
584
+ msgid "Custom Post Type Archives"
585
  msgstr ""
586
 
587
+ #: ../mods/custompost_module.php:161
588
+ msgid "Show widget on Custom Post Type Archives"
589
  msgstr ""
590
 
591
+ #: ../mods/date_module.php:31
592
+ msgid "Show widget always?"
593
  msgstr ""
594
 
595
+ #: ../mods/date_module.php:35
596
+ msgid "Next to the above role option, the date option is also very powerfull. You've been warned!"
597
  msgstr ""
598
 
599
+ #: ../mods/date_module.php:36
600
+ msgid "Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the"
601
  msgstr ""
602
 
603
+ #: ../mods/date_module.php:37
604
+ msgid ""
605
+ "Date ranges can be made by entering a From AND a To date<br />\n"
606
+ " \t\t\t\t\tWhen you want the widget to be displayed from a specific date, only fill in the From date<br />\n"
607
+ " \t\t\t\t\tWhen you want the widget to stop displaying on a specific date, only fill in the To date.\n"
608
+ " \t\t\t\t"
609
  msgstr ""
610
 
611
+ #: ../mods/date_module.php:44
612
+ msgid "only"
613
  msgstr ""
614
 
615
+ #: ../mods/date_module.php:48
616
+ msgid "From"
617
  msgstr ""
618
 
619
+ #: ../mods/date_module.php:52
620
+ msgid "To"
621
  msgstr ""
622
 
623
+ #: ../mods/wpec_module.php:39
624
+ msgid "Show widget default on WPSC categories?"
625
  msgstr ""
626
 
627
+ #: ../mods/wpml_module.php:37
628
+ msgid "Language (WPML)"
629
  msgstr ""
630
 
631
+ #: ../mods/wpml_module.php:39
632
+ msgid "Show widget default on all languages?"
633
+ msgstr ""
634
+
635
+ #: ../mods/wpml_module.php:43
636
+ msgid "Using this option can override all other options."
637
+ msgstr ""
638
+
639
+ #: ../mods/wpml_module.php:48
640
+ msgid "Except the languages"
641
  msgstr ""
642
 
mods/archive_module.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Archive Module
4
+ *
5
+ * @version $Id: archive_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $archive_yes_selected = 'checked="checked"';
10
+ $opt_archive = $DW->getOptions($_GET['id'], 'archive');
11
+ if ( count($opt_archive) > 0 ) {
12
+ $archive_condition = $opt_archive[0]['value'];
13
+ if ( $archive_condition == '0' ) {
14
+ $archive_no_selected = $archive_yes_selected;
15
+ unset($archive_yes_selected);
16
+ }
17
+ }
18
+ ?>
19
+
20
+ <h4><b><?php _e('Archive Pages', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_archive) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
21
+ <div class="dynwid_conf">
22
+ <?php _e('Show widget on archive pages', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="<?php _e('Click to toggle info', DW_L10N_DOMAIN); ?>" onclick="divToggle('archive')" /><br />
23
+ <?php $DW->dumpOpt($opt_archive); ?>
24
+ <div>
25
+ <div id="archive" class="infotext">
26
+ <?php _e('This option does not include Author and Category Pages.', DW_L10N_DOMAIN); ?>
27
+ </div>
28
+ </div>
29
+ <input type="radio" name="archive" value="yes" id="archive-yes" <?php echo ( isset($archive_yes_selected) ? $archive_yes_selected : '' ); ?> /> <label for="archive-yes"><?php _e('Yes'); ?></label>
30
+ <input type="radio" name="archive" value="no" id="archive-no" <?php echo ( isset($archive_no_selected) ? $archive_no_selected : '' ); ?> /> <label for="archive-no"><?php _e('No'); ?></label>
31
+ </div><!-- end dynwid_conf -->
mods/attachment_module.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Attachment Module
4
+ *
5
+ * @version $Id: attachment_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $attachment_yes_selected = 'checked="checked"';
10
+ $opt_attachment = $DW->getOptions($_GET['id'], 'attachment');
11
+ if ( count($opt_attachment) > 0 ) {
12
+ $attachment_condition = $opt_attachment[0]['value'];
13
+ if ( $attachment_condition == '0' ) {
14
+ $attachment_no_selected = $attachment_yes_selected;
15
+ unset($attachment_yes_selected);
16
+ }
17
+ }
18
+ ?>
19
+
20
+ <h4><b><?php _e('Attachments', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_attachment) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
21
+ <div class="dynwid_conf">
22
+ <?php _e('Show widget on attachment pages', DW_L10N_DOMAIN); ?>?<br />
23
+ <?php $DW->dumpOpt($opt_attachment); ?>
24
+ <input type="radio" name="attachment" value="yes" id="attachment-yes" <?php echo ( isset($attachment_yes_selected) ? $attachment_yes_selected : '' ); ?> /> <label for="attachment-yes"><?php _e('Yes'); ?></label>
25
+ <input type="radio" name="attachment" value="no" id="attachment-no" <?php echo ( isset($attachment_no_selected) ? $attachment_no_selected : '' ); ?> /> <label for="attachment-no"><?php _e('No'); ?></label>
26
+ </div><!-- end dynwid_conf -->
mods/author_module.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Author Module
4
+ *
5
+ * @version $Id: author_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $author_yes_selected = 'checked="checked"';
10
+ $opt_author = $DW->getOptions($_GET['id'], 'author');
11
+ if ( count($opt_author) > 0 ) {
12
+ $author_act = array();
13
+ foreach ( $opt_author as $author_condition ) {
14
+ if ( $author_condition['name'] == 'default' || empty($author_condition['name']) ) {
15
+ $author_default = $author_condition['value'];
16
+ } else {
17
+ $author_act[ ] = $author_condition['name'];
18
+ }
19
+ }
20
+
21
+ if ( $author_default == '0' ) {
22
+ $author_no_selected = $author_yes_selected;
23
+ unset($author_yes_selected);
24
+ }
25
+ }
26
+
27
+ $authors = get_users_of_blog();
28
+ if ( count($authors) > DW_LIST_LIMIT ) {
29
+ $author_condition_select_style = DW_LIST_STYLE;
30
+ }
31
+ ?>
32
+
33
+ <h4><b><?php _e('Author Pages', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_author) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
34
+ <div class="dynwid_conf">
35
+ <?php _e('Show widget default on author pages?', DW_L10N_DOMAIN); ?><br />
36
+ <?php $DW->dumpOpt($opt_author); ?>
37
+ <input type="radio" name="author" value="yes" id="author-yes" <?php echo ( isset($author_yes_selected) ? $author_yes_selected : '' ); ?> /> <label for="author-yes"><?php _e('Yes'); ?></label>
38
+ <input type="radio" name="author" value="no" id="author-no" <?php echo ( isset($author_no_selected) ? $author_no_selected : '' ); ?> /> <label for="author-no"><?php _e('No'); ?></label><br />
39
+ <?php _e('Except the author(s)', DW_L10N_DOMAIN); ?>:<br />
40
+ <div id="author-select" class="condition-select" <?php echo ( isset($author_condition_select_style) ? $author_condition_select_style : '' ); ?>>
41
+ <?php foreach ( $authors as $author ) { ?>
42
+ <input type="checkbox" id="author_act_<?php echo $author->ID; ?>" name="author_act[]" value="<?php echo $author->ID; ?>" <?php echo ( isset($author_act) && count($author_act) > 0 && in_array($author->ID,$author_act) ) ? 'checked="checked"' : ''; ?> /> <label for="author_act_<?php echo $author->ID; ?>"><?php echo $author->display_name; ?></label><br />
43
+ <?php } ?></div>
44
+ </div><!-- end dynwid_conf -->
mods/bp_module.php ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * BP module
4
+ * http://buddypress.org/
5
+ *
6
+ * @version $Id: bp_module.php 348295 2011-02-20 20:13:21Z qurl $\
7
+ * @copyright 2011 Jacco Drabbe
8
+ */
9
+
10
+ if ( defined('BP_VERSION') ) {
11
+ $DW->bp = TRUE;
12
+ require_once(DW_PLUGIN . 'bp.php');
13
+
14
+ $tmp = array();
15
+ $bp_yes_selected = 'checked="checked"';
16
+ $opt_bp = $DW->getOptions($_GET['id'], 'bp');
17
+ if ( count($opt_bp) > 0 ) {
18
+ $bp_act = array();
19
+ foreach ( $opt_bp as $key => $bp_condition ) {
20
+ if ( $bp_condition['maintype'] == 'bp' ) {
21
+ if ( $bp_condition['name'] == 'default' || empty($bp_condition['name']) ) {
22
+ $bp_default = $bp_condition['value'];
23
+ } else {
24
+ $bp_act[ ] = $bp_condition['name'];
25
+ }
26
+ } else {
27
+ $tmp[ ] = $key;
28
+ }
29
+ }
30
+
31
+ if ( $bp_default == '0' ) {
32
+ $bp_no_selected = $bp_yes_selected;
33
+ unset($bp_yes_selected);
34
+ }
35
+
36
+ // Removing the bp-group options
37
+ if ( count($tmp) > 0 ) {
38
+ foreach ( $tmp as $key ){
39
+ unset($opt_bp[$key]);
40
+ }
41
+ }
42
+ }
43
+
44
+ $bp_components = dw_get_bp_components();
45
+ if ( count($bp_components) > DW_LIST_LIMIT ) {
46
+ $bp_condition_select_style = DW_LIST_STYLE;
47
+ }
48
+ unset($tmp);
49
+ ?>
50
+
51
+ <h4><b><?php _e('BuddyPress', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_bp) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
52
+ <div class="dynwid_conf">
53
+ <?php _e('Show widget default on BuddyPress pages?', DW_L10N_DOMAIN); ?><br />
54
+ <?php $DW->dumpOpt($opt_bp); ?>
55
+ <input type="radio" name="bp" value="yes" id="bp-yes" <?php echo ( isset($bp_yes_selected) ? $bp_yes_selected : '' ); ?> /> <label for="bp-yes"><?php _e('Yes'); ?></label>
56
+ <input type="radio" name="bp" value="no" id="bp-no" <?php echo ( isset($bp_no_selected) ? $bp_no_selected : '' ); ?> /> <label for="bp-no"><?php _e('No'); ?></label><br />
57
+ <?php _e('Except on the compontents pages', DW_L10N_DOMAIN); ?>:<br />
58
+ <div id="bp-select" class="condition-select" <?php echo ( isset($bp_condition_select_style) ? $bp_condition_select_style : '' ); ?>>
59
+ <?php foreach ( $bp_components as $id => $component ) { ?>
60
+ <input type="checkbox" id="bp_act_<?php echo $id; ?>" name="bp_act[]" value="<?php echo $id; ?>" <?php echo ( count($bp_act) > 0 && in_array($id, $bp_act) ) ? 'checked="checked"' : ''; ?> /> <label for="bp_act_<?php echo $id; ?>"><?php echo $component; ?></label><br />
61
+ <?php } ?>
62
+ </div>
63
+ </div><!-- end dynwid_conf -->
64
+
65
+ <!-- BuddyPress Groups //-->
66
+ <?php
67
+ if ( $DW->bp_groups ) {
68
+ $bp_group_yes_selected = 'checked="checked"';
69
+ $opt_bp_group = $DW->getOptions($_GET['id'], 'bp-group');
70
+ if ( count($opt_bp_group) > 0 ) {
71
+ $bp_group_act = array();
72
+ foreach ( $opt_bp_group as $bp_group_condition ) {
73
+ if ( $bp_group_condition['name'] == 'default' || empty($bp_group_condition['name']) ) {
74
+ $bp_group_default = $bp_group_condition['value'];
75
+ } else {
76
+ $bp_group_act[ ] = $bp_group_condition['name'];
77
+ }
78
+ }
79
+
80
+ if ( $bp_group_default == '0' ) {
81
+ $bp_group_no_selected = $bp_group_yes_selected;
82
+ unset($bp_group_yes_selected);
83
+ }
84
+ }
85
+
86
+ $bp_groups = dw_get_bp_groups();
87
+ if ( count($bp_groups) > DW_LIST_LIMIT ) {
88
+ $bp_group_condition_select_style = DW_LIST_STYLE;
89
+ }
90
+ ?>
91
+ <h4><b><?php _e('BuddyPress Groups', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_bp_group) > 0 ? ' <span class="hasoptions">*</span>' : '' ); ?></h4>
92
+ <div class="dynwid_conf">
93
+ <?php _e('Show widget default on BuddyPress Group pages?', DW_L10N_DOMAIN); ?><br />
94
+ <?php $DW->dumpOpt($opt_bp_group); ?>
95
+ <input type="radio" name="bp-group" value="yes" id="bp-group-yes" <?php echo ( isset($bp_group_yes_selected) ? $bp_group_yes_selected : '' ); ?> /> <label for="bp-group-yes"><?php _e('Yes'); ?></label>
96
+ <input type="radio" name="bp-group" value="no" id="bp-group-no" <?php echo ( isset($bp_group_no_selected) ? $bp_group_no_selected : '' ); ?> /> <label for="bp-group-no"><?php _e('No'); ?></label><br />
97
+ <?php _e('Except in the groups', DW_L10N_DOMAIN); ?>:<br />
98
+ <div id="bp-group-select" class="condition-select" <?php echo ( isset($bp_group_condition_select_style) ? $bp_group_condition_select_style : '' ); ?>>
99
+ <?php foreach ( $bp_groups as $id => $group ) { ?>
100
+ <input type="checkbox" id="bp_group_act_<?php echo $id; ?>" name="bp_group_act[]" value="<?php echo $id; ?>" <?php echo ( count($bp_group_act) > 0 && in_array($id, $bp_group_act) ) ? 'checked="checked"' : ''; ?> /> <label for="bp_group_act_<?php echo $id; ?>"><?php echo ucfirst($group); ?></label><br />
101
+ <?php } ?>
102
+ </div>
103
+ </div><!-- end dynwid_conf -->
104
+
105
+ <?php
106
+ } // end $DW->bp_groups
107
+ } // end $DW->bp;
108
+ ?>
mods/category_module.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Category Module
4
+ *
5
+ * @version $Id: category_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $category_yes_selected = 'checked="checked"';
10
+ $opt_category = $DW->getOptions($_GET['id'], 'category');
11
+ if ( count($opt_category) > 0 ) {
12
+ $category_act = array();
13
+ foreach ( $opt_category as $category_condition ) {
14
+ if ( $category_condition['name'] == 'default' || empty($category_condition['name']) ) {
15
+ $category_default = $category_condition['value'];
16
+ } else {
17
+ $category_act[ ] = $category_condition['name'];
18
+ }
19
+ }
20
+
21
+ if ( $category_default == '0' ) {
22
+ $category_no_selected = $category_yes_selected;
23
+ unset($category_yes_selected);
24
+ }
25
+ }
26
+
27
+ $category = get_categories( array('hide_empty' => FALSE) );
28
+ if ( count($category) > DW_LIST_LIMIT ) {
29
+ $category_condition_select_style = DW_LIST_STYLE;
30
+ }
31
+ ?>
32
+
33
+ <h4><b><?php _e('Category Pages', DW_L10N_DOMAIN); ?></b> <?php echo ( count($opt_category) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ) . ( $DW->wpml ? $wpml_icon : '' ); ?></h4>
34
+ <div class="dynwid_conf">
35
+ <?php _e('Show widget default on category pages?', DW_L10N_DOMAIN); ?><br />
36
+ <?php $DW->dumpOpt($opt_category); ?>
37
+ <input type="radio" name="category" value="yes" id="category-yes" <?php echo ( isset($category_yes_selected) ? $category_yes_selected : '' ); ?> /> <label for="category-yes"><?php _e('Yes'); ?></label>
38
+ <input type="radio" name="category" value="no" id="category-no" <?php echo ( isset($category_no_selected) ? $category_no_selected : '' ); ?> /> <label for="category-no"><?php _e('No'); ?></label><br />
39
+ <?php _e('Except the categories', DW_L10N_DOMAIN); ?>:<br />
40
+ <div id="category-select" class="condition-select" <?php echo ( isset($category_condition_select_style) ? $category_condition_select_style : '' ); ?>>
41
+ <?php foreach ( $category as $cat ) { ?>
42
+ <input type="checkbox" id="cat_act_<?php echo $cat->cat_ID; ?>" name="category_act[]" value="<?php echo $cat->cat_ID; ?>" <?php echo ( isset($category_act) && count($category_act) > 0 && in_array($cat->cat_ID,$category_act) ) ? 'checked="checked"' : ''; ?> /> <label for="cat_act_<?php echo $cat->cat_ID; ?>"><?php echo $cat->name; ?></label><br />
43
+ <?php } ?>
44
+ </div>
45
+ </div><!-- end dynwid_conf -->
mods/custompost_module.php ADDED
@@ -0,0 +1,165 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Custom Post Type Module
5
+ *
6
+ * @version $Id: custompost_module.php 348295 2011-02-20 20:13:21Z qurl $
7
+ * @copyright 2011 Jacco Drabbe
8
+ */
9
+
10
+ /* WordPress 3.0 and higher: Custom Post Types */
11
+ if ( version_compare($GLOBALS['wp_version'], '3.0', '>=') ) {
12
+ function getCPostChilds($type, $arr, $id, $i) {
13
+ $post = get_posts('post_type=' . $type . '&post_parent=' . $id);
14
+ foreach ($post as $p ) {
15
+ if (! in_array($p->ID, $i) ) {
16
+ $i[ ] = $p->ID;
17
+ $arr[$p->ID] = array();
18
+ $a = &$arr[$p->ID];
19
+ $a = getCPostChilds($type, $a, $p->ID, &$i);
20
+ }
21
+ }
22
+ return $arr;
23
+ }
24
+
25
+ function prtCPost($type, $ctid, $posts, $posts_act, $posts_childs_act) {
26
+ foreach ( $posts as $pid => $childs ) {
27
+ $post = get_post($pid);
28
+
29
+ echo '<div style="position:relative;left:15px;">';
30
+ echo '<input type="checkbox" id="' . $type . '_act_' . $post->ID . '" name="' . $type . '_act[]" value="' . $post->ID . '" ' . ( isset($posts_act) && count($posts_act) > 0 && in_array($post->ID, $posts_act) ? 'checked="checked"' : '' ) . ' onchange="chkCPChild(\'' . $type . '\',' . $pid . ')" /> <label for="' . $type . '_act_' . $post->ID . '">' . $post->post_title . '</label><br />';
31
+
32
+ if ( $ctid->hierarchical ) {
33
+ echo '<div style="position:relative;left:15px;">';
34
+ echo '<input type="checkbox" id="' . $type . '_child_' . $pid . '" name="' . $type . '_childs_act[]" value="' . $pid . '" ' . ( isset($posts_childs_act) && count($posts_childs_act) > 0 && in_array($pid, $posts_childs_act) ? 'checked="checked"' : '' ) . ' onchange="chkCPParent(\'' . $type . '\',' . $pid . ')" /> <label for="' . $type . '_child_' . $pid . '"><em>' . __('All childs', DW_L10N_DOMAIN) . '</em></label><br />';
35
+ echo '</div>';
36
+ }
37
+
38
+ if ( count($childs) > 0 ) {
39
+ prtCPost($type, $ctid, $childs, $posts_act, $posts_childs_act);
40
+ }
41
+ echo '</div>';
42
+ }
43
+ }
44
+
45
+ $args = array(
46
+ 'public' => TRUE,
47
+ '_builtin' => FALSE
48
+ );
49
+ $post_types = get_post_types($args, 'objects', 'and');
50
+
51
+ foreach ( $post_types as $type => $ctid ) {
52
+ // Prepare
53
+ $custom_yes_selected = 'checked="checked"';
54
+ $opt_custom = $DW->getOptions($_GET['id'], $type);
55
+ if ( count($opt_custom) > 0 ) {
56
+ $custom_act = array();
57
+ $custom_childs_act = array();
58
+
59
+ foreach ( $opt_custom as $custom_condition ) {
60
+ if ( $custom_condition['maintype'] == $type ) {
61
+ if ( $custom_condition['name'] == 'default' || empty($custom_condition['name']) ) {
62
+ $custom_default = $custom_condition['value'];
63
+ } else {
64
+ $custom_act[ ] = $custom_condition['name'];
65
+ }
66
+ }
67
+ }
68
+
69
+ if ( $custom_default == '0' ) {
70
+ $custom_no_selected = $custom_yes_selected;
71
+ unset($custom_yes_selected);
72
+ }
73
+
74
+ // -- Childs
75
+ if ( $ctid->hierarchical ) {
76
+ $opt_custom_childs = $DW->getOptions($_GET['id'], $type . '-childs');
77
+ if ( count($opt_custom_childs) > 0 ) {
78
+ foreach ( $opt_custom_childs as $child_condition ) {
79
+ if ( $child_condition['name'] != 'default' ) {
80
+ $custom_childs_act[ ] = $child_condition['name'];
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
+ $loop = new WP_Query( array('post_type' => $type) );
88
+ if ( $loop->post_count > DW_LIST_LIMIT ) {
89
+ $custom_condition_select_style = DW_LIST_STYLE;
90
+ }
91
+
92
+ $cpmap = getCPostChilds($type, array(), 0, array());
93
+
94
+ // Output
95
+ echo '<h4><b>' . __('Custom Post Type', DW_L10N_DOMAIN) . ' <em>' . $ctid->label . '</em></b> ' . ( count($opt_custom) > 0 ? ' <span class="hasoptions">*</span>' : '' ) . ( $DW->wpml ? $wpml_icon : '' ) . '</h4>';
96
+ echo '<div class="dynwid_conf">';
97
+ echo __('Show widget on', DW_L10N_DOMAIN) . ' ' . $ctid->label . '? ' . ( $ctid->hierarchical ? '<img src="' . $DW->plugin_url . 'img/info.gif" alt="info" onclick="divToggle(\'custom_' . $type . '\');" />' : '' ) . '<br />';
98
+ echo '<input type="hidden" name="post_types[]" value="' . $type . '" />';
99
+ $DW->dumpOpt($opt_custom);
100
+
101
+ if ( $ctid->hierarchical ) {
102
+ echo '<div>';
103
+ echo '<div id="custom_' . $type . '" class="infotext">';
104
+ echo $childs_infotext;
105
+ echo '</div>';
106
+ echo '</div>';
107
+ }
108
+
109
+ echo '<input type="radio" name="' . $type . '" value="yes" id="' . $type . '-yes" ' . ( isset($custom_yes_selected) ? $custom_yes_selected : '' ) . ' /> <label for="' . $type . '-yes">' . __('Yes') . '</label> ';
110
+ echo '<input type="radio" name="' . $type . '" value="no" id="' . $type . '-no" ' . ( isset($custom_no_selected) ? $custom_no_selected : '' ) . ' /> <label for="' . $type . '-no">' . __('No') . '</label><br />';
111
+
112
+ echo __('Except for', DW_L10N_DOMAIN) . ':<br />';
113
+ echo '<div id="' . $type . '-select" class="condition-select" ' . ( isset($custom_condition_select_style) ? $custom_condition_select_style : '' ) . '>';
114
+
115
+ echo '<div style="position:relative;left:-15px">';
116
+ prtCPost($type, $ctid, $cpmap, $custom_act, $custom_childs_act);
117
+ echo '</div>';
118
+
119
+ echo '</div>';
120
+ echo '</div><!-- end dynwid_conf -->';
121
+ }
122
+
123
+ // Custom Post Type Archives
124
+ if ( function_exists('is_post_type_archive') ) {
125
+ $cp_archive_yes_selected = 'checked="checked"';
126
+ $opt_cp_archive = $DW->getOptions($_GET['id'], 'cp_archive');
127
+ if ( count($opt_cp_archive) > 0 ) {
128
+ $cp_archive_act = array();
129
+ foreach ( $opt_cp_archive as $cp_archive_condition ) {
130
+ if ( $cp_archive_condition['name'] == 'default' || empty($cp_archive_condition['name']) ) {
131
+ $cp_archive_default = $cp_archive_condition['value'];
132
+ } else {
133
+ $cp_archive_act[ ] = $cp_archive_condition['name'];
134
+ }
135
+ }
136
+
137
+ if ( $cp_archive_default == '0' ) {
138
+ $cp_archive_no_selected = $cp_archive_yes_selected;
139
+ unset($cp_archive_yes_selected);
140
+ }
141
+ }
142
+
143
+ if ( count($post_types) > DW_LIST_LIMIT ) {
144
+ $cp_archive_condition_select_style = DW_LIST_STYLE;
145
+ }
146
+
147
+ echo '<h4><b>' . __('Custom Post Type Archives', DW_L10N_DOMAIN) . '</b> ' . ( count($opt_cp_archive) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ) . '</h4>';
148
+ echo '<div class="dynwid_conf">';
149
+ echo __('Show widget on Custom Post Type Archives', DW_L10N_DOMAIN) . '?<br />';
150
+ $DW->dumpOpt($opt_cp_archive);
151
+
152
+ echo '<input type="radio" name="cp_archive" value="yes" id="cp_archive-yes" ' . ( isset($cp_archive_yes_selected) ? $cp_archive_yes_selected : '' ) . ' /> <label for="cp_archive-yes">' . __('Yes') . '</label> ';
153
+ echo '<input type="radio" name="cp_archive" value="no" id="cp_archive-no" ' . ( isset($cp_archive_no_selected) ? $cp_archive_no_selected : '' ) . ' /> <label for="cp_archive-no">' . __('No') . '</label><br />';
154
+
155
+ echo __('Except for', DW_L10N_DOMAIN) . ':<br />';
156
+ echo '<div id="cp_archive-select" class="condition-select" ' . ( isset($cp_archive_condition_select_style) ? $cp_archive_condition_select_style : '' ) . '>';
157
+ foreach ( $post_types as $type => $ctid ){
158
+ echo '<input type="checkbox" id="cp_archive_act_' . $type . '" name="cp_archive_act[]" value="' . $type . '"' . ( count($cp_archive_act) > 0 && in_array($type, $cp_archive_act) ? 'checked="checked"' : '') . ' /> <label for="cp_archive_act_' . $type . '">' . $ctid->label . '</label><br />';
159
+ }
160
+ echo '</div>';
161
+ echo '</div><!-- end dynwid_conf -->';
162
+ }
163
+ } // end version compare >= WP 3.0
164
+ ?>
165
+
mods/date_module.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Date Module
4
+ *
5
+ * @version $Id: date_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $date_yes_selected = 'checked="checked"';
10
+ $opt_date = $DW->getOptions($_GET['id'], 'date');
11
+ if ( count($opt_date) > 0 ) {
12
+ foreach ( $opt_date as $value ) {
13
+ switch ( $value['name'] ) {
14
+ case 'date_start':
15
+ $date_start = $value['value'];
16
+ break;
17
+
18
+ case 'date_end':
19
+ $date_end = $value['value'];
20
+ break;
21
+ }
22
+ }
23
+
24
+ $date_no_selected = $date_yes_selected;
25
+ unset($date_yes_selected);
26
+ }
27
+ ?>
28
+
29
+ <h4><b><?php _e('Date'); ?></b><?php echo ( count($opt_date) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
30
+ <div class="dynwid_conf">
31
+ <?php _e('Show widget always?', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="<?php _e('Click to toggle info', DW_L10N_DOMAIN) ?>" onclick="divToggle('date');" /><br />
32
+ <?php $DW->dumpOpt($opt_date); ?>
33
+ <div>
34
+ <div id="date" class="infotext">
35
+ <?php _e('Next to the above role option, the date option is also very powerfull. You\'ve been warned!', DW_L10N_DOMAIN); ?><br />
36
+ <?php _e('Enter dates in the YYYY-MM-DD format. You can also use the calender by clicking on the', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/calendar.gif" alt="Calendar" /><br />
37
+ <?php _e('Date ranges can be made by entering a From AND a To date<br />
38
+ When you want the widget to be displayed from a specific date, only fill in the From date<br />
39
+ When you want the widget to stop displaying on a specific date, only fill in the To date.
40
+ ', DW_L10N_DOMAIN); ?>
41
+ </div>
42
+ </div>
43
+ <input type="radio" name="date" value="yes" id="date-yes" <?php echo ( isset($date_yes_selected) ? $date_yes_selected : '' ); ?> onclick="swTxt(cDate, true);" /> <label for="date-yes"><?php _e('Yes'); ?></label>
44
+ <input type="radio" name="date" value="no" id="date-no" <?php echo ( isset($date_no_selected) ? $date_no_selected : '' ); ?> onclick="swTxt(cDate, false)" /> <label for="date-no"><?php _e('No'); ?>, <?php _e('only', DW_L10N_DOMAIN); ?>:</label><br />
45
+ <div id="date-select" class="condition-select">
46
+ <table border="0" cellspacing="0" cellpadding="0">
47
+ <tr>
48
+ <td style="width:45px;"><?php _e('From', DW_L10N_DOMAIN); ?></td>
49
+ <td><input id="date_start" type="text" name="date_start" value="<?php echo ( isset($date_start) ? $date_start : '' ); ?>" size="10" maxlength="10" /> <img src="<?php echo $DW->plugin_url; ?>img/calendar.gif" alt="Calendar" onclick="showCalendar('date_start')" /></td>
50
+ </tr>
51
+ <tr>
52
+ <td style="width:45px;"><?php _e('To', DW_L10N_DOMAIN); ?></td>
53
+ <td><input id="date_end" type="text" name="date_end" value="<?php echo ( isset($date_end) ? $date_end : '' ); ?>" size="10" maxlength="10" /> <img src="<?php echo $DW->plugin_url; ?>img/calendar.gif" alt="Calendar" onclick="showCalendar('date_end')" /></td>
54
+ </tr>
55
+ </table>
56
+ </div>
57
+ </div><!-- end dynwid_conf -->
mods/error_module.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Error Module
4
+ *
5
+ * @version $Id: error_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $e404_yes_selected = 'checked="checked"';
10
+ $opt_e404 = $DW->getOptions($_GET['id'], 'e404');
11
+ if ( count($opt_e404) > 0 ) {
12
+ $e404_condition = $opt_e404[0]['value'];
13
+ if ( $e404_condition == '0' ) {
14
+ $e404_no_selected = $e404_yes_selected;
15
+ unset($e404_yes_selected);
16
+ }
17
+ }
18
+ ?>
19
+
20
+ <h4><b><?php _e('Error Page', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_e404) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
21
+ <div class="dynwid_conf">
22
+ <?php _e('Show widget on the error page?', DW_L10N_DOMAIN); ?><br />
23
+ <?php $DW->dumpOpt($opt_e404); ?>
24
+ <input type="radio" name="e404" value="yes" id="e404-yes" <?php echo ( isset($e404_yes_selected) ? $e404_yes_selected : '' ); ?> /> <label for="e404-yes"><?php _e('Yes'); ?></label>
25
+ <input type="radio" name="e404" value="no" id="e404-no" <?php echo ( isset($e404_no_selected) ? $e404_no_selected : '' ); ?> /> <label for="e404-no"><?php _e('No'); ?></label>
26
+ </div><!-- end dynwid_conf -->
mods/frontpage_module.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Front Page Module
4
+ *
5
+ * @version $Id: frontpage_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ if ( get_option('show_on_front') != 'page' ) {
10
+ $frontpage_yes_selected = 'checked="checked"';
11
+ $opt_frontpage = $DW->getOptions($_GET['id'], 'front-page');
12
+ if ( count($opt_frontpage) > 0 ) {
13
+ $frontpage_condition = $opt_frontpage[0]['value'];
14
+ if ( $frontpage_condition == '0' ) {
15
+ $frontpage_no_selected = $frontpage_yes_selected;
16
+ unset($frontpage_yes_selected);
17
+ }
18
+ }
19
+ ?>
20
+ <h4><b><?php _e('Front Page', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_frontpage) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
21
+ <div class="dynwid_conf">
22
+ <?php _e('Show widget on the front page?', DW_L10N_DOMAIN) ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" onclick="divToggle('frontpage');" /><br />
23
+ <?php $DW->dumpOpt($opt_frontpage); ?>
24
+ <div>
25
+ <div id="frontpage" class="infotext">
26
+ <?php _e('This option only applies when your front page is set to display your latest posts (See Settings &gt; Reading).<br />
27
+ When a static page is set, you can use the options for the static pages below.
28
+ ', DW_L10N_DOMAIN); ?>
29
+ </div>
30
+ </div>
31
+ <input type="radio" name="front-page" value="yes" id="front-page-yes" <?php echo ( isset($frontpage_yes_selected) ? $frontpage_yes_selected : '' ); ?> /> <label for="front-page-yes"><?php _e('Yes'); ?></label>
32
+ <input type="radio" name="front-page" value="no" id="front-page-no" <?php echo ( isset($frontpage_no_selected) ? $frontpage_no_selected : '' ); ?> /> <label for="front-page-no"><?php _e('No'); ?></label>
33
+ </div><!-- end dynwid_conf -->
34
+ <?php } ?>
mods/pages_module.php ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Pages Module
4
+ *
5
+ * @version $Id: pages_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ define('DW_PAGE_LIMIT', 500);
10
+
11
+ function getPageChilds($arr, $id, $i) {
12
+ $pg = get_pages('child_of=' . $id);
13
+ foreach ($pg as $p ) {
14
+ if (! in_array($p->ID, $i) ) {
15
+ $i[ ] = $p->ID;
16
+ $arr[$p->ID] = array();
17
+ $a = &$arr[$p->ID];
18
+ $a = getPageChilds($a, $p->ID, &$i);
19
+ }
20
+ }
21
+ return $arr;
22
+ }
23
+
24
+ function prtPgs($pages, $page_act, $page_childs_act, $static_page) {
25
+ foreach ( $pages as $pid => $childs ) {
26
+ $page = get_page($pid);
27
+
28
+ echo '<div style="position:relative;left:15px;">';
29
+ echo '<input type="checkbox" id="page_act_' . $page->ID . '" name="page_act[]" value="' . $page->ID . '" ' . ( isset($page_act) && count($page_act) > 0 && in_array($page->ID, $page_act) ? 'checked="checked"' : '' ) . ' onchange="chkChild(' . $pid . ')" /> <label for="page_act_' . $page->ID . '">' . $page->post_title . ' ' . ( get_option('show_on_front') == 'page' && isset($static_page[$page->ID]) ? '(' . $static_page[$page->ID] . ')' : '' ) . '</label><br />';
30
+
31
+ echo '<div style="position:relative;left:15px;">';
32
+ echo '<input type="checkbox" id="child_' . $pid . '" name="page_childs_act[]" value="' . $pid . '" ' . ( isset($page_childs_act) && count($page_childs_act) > 0 && in_array($pid, $page_childs_act) ? 'checked="checked"' : '' ) . ' onchange="chkParent(' . $pid . ')" /> <label for="child_' . $pid . '"><em>' . __('All childs', DW_L10N_DOMAIN) . '</em></label><br />';
33
+ echo '</div>';
34
+
35
+ if ( count($childs) > 0 ) {
36
+ prtPgs($childs, $page_act, $page_childs_act, $static_page);
37
+ }
38
+ echo '</div>';
39
+ }
40
+ }
41
+
42
+ function lsPages($pages, $static_page, $page_act) {
43
+ foreach ( $pages as $page ) {
44
+ echo '<input type="checkbox" id="page_act_' . $page->ID . '" name="page_act[]" value="' . $page->ID . '" ' . ( count($page_act) > 0 && in_array($page->ID, $page_act) ? 'checked="checked"' : '' ) . ' /> <label for="page_act_' . $page->ID . '">' . $page->post_title . ' ' . ( get_option('show_on_front') == 'page' && isset($static_page[$page->ID]) ? '(' . $static_page[$page->ID] . ')' : '' ) . '</label><br />';
45
+ }
46
+ }
47
+
48
+ $page_yes_selected = 'checked="checked"';
49
+ $opt_page = $DW->getOptions($_GET['id'], 'page');
50
+ if ( count($opt_page) > 0 ) {
51
+ $page_act = array();
52
+ foreach ( $opt_page as $page_condition ) {
53
+ if ( $page_condition['maintype'] == 'page' ) {
54
+ if ( $page_condition['name'] == 'default' || empty($page_condition['name']) ) {
55
+ $page_default = $page_condition['value'];
56
+ } else {
57
+ $page_act[ ] = $page_condition['name'];
58
+ }
59
+ }
60
+ }
61
+
62
+ if ( $page_default == '0' ) {
63
+ $page_no_selected = $page_yes_selected;
64
+ unset($page_yes_selected);
65
+ }
66
+
67
+ // -- Childs
68
+ $opt_page_childs = $DW->getOptions($_GET['id'], 'page-childs');
69
+ if ( count($opt_page_childs) > 0 ) {
70
+ $page_childs_act = array();
71
+ foreach ( $opt_page_childs as $child_condition ) {
72
+ if ( $child_condition['name'] != 'default' ) {
73
+ $page_childs_act[ ] = $child_condition['name'];
74
+ }
75
+ }
76
+ }
77
+ }
78
+
79
+ $pages = get_pages();
80
+ $num_pages = count($pages);
81
+ if ( $num_pages > DW_LIST_LIMIT ) {
82
+ $page_condition_select_style = DW_LIST_STYLE;
83
+ }
84
+
85
+ $static_page = array();
86
+ if ( get_option('show_on_front') == 'page' ) {
87
+ if ( get_option('page_on_front') == get_option('page_for_posts') ) {
88
+ $id = get_option('page_on_front');
89
+ $static_page[$id] = __('Front page', DW_L10N_DOMAIN) . ', ' . __('Posts page', DW_L10N_DOMAIN);
90
+ } else {
91
+ $id = get_option('page_on_front');
92
+ $static_page[$id] = __('Front page', DW_L10N_DOMAIN);
93
+ $id = get_option('page_for_posts');
94
+ $static_page[$id] = __('Posts page', DW_L10N_DOMAIN);
95
+ }
96
+ }
97
+
98
+ if ( $num_pages < DW_PAGE_LIMIT ) {
99
+ $pagemap = getPageChilds(array(), 0, array());
100
+ }
101
+ ?>
102
+ <h4><b><?php _e('Pages'); ?></b> <?php echo ( count($opt_page) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ) . ( $DW->wpml ? $wpml_icon : '' ); ?></h4>
103
+ <div class="dynwid_conf">
104
+ <?php _e('Show widget default on static pages?', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="<?php _e('Click to toggle info', DW_L10N_DOMAIN); ?>" onclick="divToggle('pages');" /><br />
105
+ <?php $DW->dumpOpt($opt_page); ?>
106
+ <div>
107
+ <div id="pages" class="infotext">
108
+ <?php
109
+ if ( $num_pages < DW_PAGE_LIMIT ) {
110
+ $childs_infotext = __('Checking the "All childs" option, makes the exception rule apply
111
+ to the parent and all items under it in all levels. Also future items
112
+ under the parent. It\'s not possible to apply an exception rule to
113
+ "All childs" without the parent.', DW_L10N_DOMAIN);
114
+ } else {
115
+ $childs_infotext = __('Unfortunately the childs-function has been disabled
116
+ because you have more than 500 pages.', DW_L10N_DOMAIN);
117
+ }
118
+ echo $childs_infotext;
119
+ ?>
120
+ </div>
121
+ </div>
122
+ <input type="radio" name="page" value="yes" id="page-yes" <?php echo ( isset($page_yes_selected) ? $page_yes_selected : '' ); ?> /> <label for="page-yes"><?php _e('Yes'); ?></label>
123
+ <input type="radio" name="page" value="no" id="page-no" <?php echo ( isset($page_no_selected) ? $page_no_selected : '' ); ?> /> <label for="page-no"><?php _e('No'); ?></label><br />
124
+ <?php _e('Except the page(s)', DW_L10N_DOMAIN); ?>:<br />
125
+ <div id="page-select" class="condition-select" <?php echo ( isset($page_condition_select_style) ? $page_condition_select_style : '' ); ?>>
126
+ <div style="position:relative;left:-15px">
127
+ <?php ( $num_pages < DW_PAGE_LIMIT ? prtPgs($pagemap, $page_act, $page_childs_act, $static_page) : lsPages($pages, $static_page, $page_act) ); ?>
128
+ </div>
129
+ </div>
130
+ </div><!-- end dynwid_conf -->
mods/role_module.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Role Module
4
+ *
5
+ * @version $Id: role_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $wp_roles = $GLOBALS['wp_roles'];
10
+ $roles = array_merge($wp_roles->role_names, array('anonymous' => __('Anonymous') . '|User role'));
11
+ $jsroles = array();
12
+ foreach ( $roles as $rid => $role ) {
13
+ $roles[esc_attr($rid)] = translate_user_role($role);
14
+ $jsroles[ ] = '\'role_act_' . esc_attr($rid) . '\''; // Prep for JS Array
15
+ }
16
+ if ( count($roles) > DW_LIST_LIMIT ) {
17
+ $role_condition_select_style = DW_LIST_STYLE;
18
+ }
19
+
20
+ $role_yes_selected = 'checked="checked"';
21
+ $opt_role = $DW->getOptions($_GET['id'], 'role');
22
+ if ( count($opt_role) > 0 ) {
23
+ $role_act = array();
24
+ foreach ( $opt_role as $role_condition ) {
25
+ if ( $role_condition['name'] == 'default' || empty($role_condition['name']) ) {
26
+ $role_default = $role_condition['value'];
27
+ } else {
28
+ $role_act[ ] = $role_condition['name'];
29
+ }
30
+ }
31
+
32
+ if ( $role_default == '0' ) {
33
+ $role_no_selected = $role_yes_selected;
34
+ unset($role_yes_selected);
35
+ }
36
+ }
37
+ ?>
38
+
39
+ <h4><b><?php _e('Role'); ?></b><?php echo ( count($opt_role) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
40
+ <div class="dynwid_conf">
41
+ <?php _e('Show widget to everybody?', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="<?php _e('Click to toggle info', DW_L10N_DOMAIN) ?>" onclick="divToggle('role');" /><br />
42
+ <?php $DW->dumpOpt($opt_role); ?>
43
+ <div>
44
+ <div id="role" class="infotext">
45
+ <?php _e('Setting options by role is very powerfull. It can override all other options!<br />
46
+ Users who are not logged in, get the <em>Anonymous</em> role.', DW_L10N_DOMAIN); ?>
47
+ </div>
48
+ </div>
49
+ <input type="radio" name="role" value="yes" id="role-yes" <?php echo ( isset($role_yes_selected) ? $role_yes_selected : '' ); ?> onclick="swChb(cRole, true);" /> <label for="role-yes"><?php _e('Yes'); ?></label>
50
+ <input type="radio" name="role" value="no" id="role-no" <?php echo ( isset($role_no_selected) ? $role_no_selected : '' ); ?> onclick="swChb(cRole, false)" /> <label for="role-no"><?php _e('No'); ?>, <?php _e('only to', DW_L10N_DOMAIN); ?>:</label><br />
51
+ <div id="role-select" class="condition-select" <?php echo ( isset($role_condition_select_style) ? $role_condition_select_style : '' ); ?>>
52
+ <?php foreach ( $roles as $rid => $role ) { ?>
53
+ <input type="checkbox" id="role_act_<?php echo $rid; ?>" name="role_act[]" value="<?php echo $rid; ?>" <?php echo ( isset($role_act) && count($role_act) > 0 && in_array($rid, $role_act) ) ? 'checked="checked"' : ''; ?> /> <label for="role_act_<?php echo $rid; ?>"><?php echo $role; ?></label><br />
54
+ <?php } ?>
55
+ </div>
56
+ </div><!-- end dynwid_conf -->
mods/search_module.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Search Module
5
+ *
6
+ * @version $Id: search_module.php 348295 2011-02-20 20:13:21Z qurl $
7
+ * @copyright 2011 Jacco Drabbe
8
+ */
9
+
10
+ $search_yes_selected = 'checked="checked"';
11
+ $opt_search = $DW->getOptions($_GET['id'], 'search');
12
+ if ( count($opt_search) > 0 ) {
13
+ $search_condition = $opt_search[0]['value'];
14
+ if ( $search_condition == '0' ) {
15
+ $search_no_selected = $search_yes_selected;
16
+ unset($search_yes_selected);
17
+ }
18
+ }
19
+ ?>
20
+
21
+ <h4><b><?php _e('Search Page', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_search) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
22
+ <div class="dynwid_conf">
23
+ <?php _e('Show widget on the search page?', DW_L10N_DOMAIN); ?><br />
24
+ <?php $DW->dumpOpt($opt_search); ?>
25
+ <input type="radio" name="search" value="yes" id="search-yes" <?php echo ( isset($search_yes_selected) ? $search_yes_selected : '' ); ?> /> <label for="search-yes"><?php _e('Yes'); ?></label>
26
+ <input type="radio" name="search" value="no" id="search-no" <?php echo ( isset($search_no_selected) ? $search_no_selected : '' ); ?> /> <label for="search-no"><?php _e('No'); ?></label>
27
+ </div><!-- end dynwid_conf -->
mods/single_module.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Single Post Module
4
+ *
5
+ * @version $Id: single_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $single_yes_selected = 'checked="checked"';
10
+ $single_condition = '1';
11
+ $opt_single = $DW->getOptions($_GET['id'], 'single');
12
+ if ( count($opt_single) > 0 ) {
13
+ foreach ( $opt_single as $widget ) {
14
+ if ( $widget['maintype'] == 'single' ) {
15
+ $single_condition = $widget['value'];
16
+ }
17
+ }
18
+ if ( $single_condition == '0' ) {
19
+ $single_no_selected = $single_yes_selected;
20
+ unset($single_yes_selected);
21
+ }
22
+ }
23
+
24
+ // -- Author
25
+ $authors = get_users_of_blog();
26
+ if ( count($authors) > DW_LIST_LIMIT ) {
27
+ $author_condition_select_style = DW_LIST_STYLE;
28
+ }
29
+
30
+ $js_count = 0;
31
+ $opt_single_author = $DW->getOptions($_GET['id'], 'single-author');
32
+ $js_author_array = array();
33
+ if ( count($opt_single_author) > 0 ) {
34
+ $js_count = $js_count + count($opt_single_author) - 1;
35
+ $single_author_act = array();
36
+ foreach ( $opt_single_author as $single_author_condition ) {
37
+ $single_author_act[ ] = $single_author_condition['name'];
38
+ }
39
+ }
40
+
41
+ // -- Category
42
+ $category = get_categories( array('hide_empty' => FALSE) );
43
+ if ( count($category) > DW_LIST_LIMIT ) {
44
+ $category_condition_select_style = DW_LIST_STYLE;
45
+ }
46
+
47
+ $opt_single_category = $DW->getOptions($_GET['id'], 'single-category');
48
+ $js_category_array = array();
49
+ if ( count($opt_single_category) > 0 ) {
50
+ $js_count = $js_count + count($opt_single_category) - 1;
51
+ $single_category_act = array();
52
+ foreach ( $opt_single_category as $single_category_condition ) {
53
+ $single_category_act[ ] = $single_category_condition['name'];
54
+ }
55
+ }
56
+
57
+ // -- Individual / Posts / Tags
58
+ $individual = FALSE;
59
+ $opt_individual = $DW->getOptions($_GET['id'], 'individual');
60
+ $single_post_act = array();
61
+ $single_tag_act = array();
62
+
63
+ if ( count($opt_individual) > 0 ) {
64
+ $individual_condition = $opt_individual[0]['value'];
65
+ if ( $individual_condition == 1 ) {
66
+ $individual = TRUE;
67
+
68
+ $opt_single_post = $DW->getOptions($_GET['id'], 'single-post');
69
+ if ( count($opt_single_post) > 0 ) {
70
+ foreach ( $opt_single_post as $single_post_condition ) {
71
+ if ( $single_post_condition['name'] != 'default' ) {
72
+ $single_post_act[ ] = $single_post_condition['name'];
73
+ }
74
+ }
75
+ }
76
+
77
+ $opt_single_tag = $DW->getOptions($_GET['id'], 'single-tag');
78
+ if ( count($opt_single_tag) > 0 ) {
79
+ foreach ( $opt_single_tag as $single_tag_condition ) {
80
+ if ( $single_tag_condition['name'] != 'default' ) {
81
+ $single_tag_act[ ] = $single_tag_condition['name'];
82
+ }
83
+ }
84
+ }
85
+ $count_individual = '(' . __('Posts: ', DW_L10N_DOMAIN) . count($single_post_act) . ', ' . __('Tags: ', DW_L10N_DOMAIN) . count($single_tag_act) . ')';
86
+ }
87
+ }
88
+ ?>
89
+
90
+ <h4><b><?php _e('Single Posts', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_single) > 0 || count($opt_single_author) > 0 || count($opt_single_category) > 0 || count($opt_single_post) > 0 || count($opt_single_tag) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
91
+ <div class="dynwid_conf">
92
+ <?php _e('Show widget default on single posts?', DW_L10N_DOMAIN) ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="<?php _e('Click to toggle info', DW_L10N_DOMAIN) ?>" onclick="divToggle('single')" /><br />
93
+ <?php $DW->dumpOpt($opt_single); ?>
94
+ <div>
95
+ <div id="single" class="infotext">
96
+ <?php _e('When you use an author <b>AND</b> a category exception, both rules in the condition must be met. Otherwise the exception rule won\'t be applied.
97
+ If you want to use the rules in a logical OR condition. Add the same widget again and apply the other rule to that.
98
+ ', DW_L10N_DOMAIN); ?>
99
+ </div>
100
+ </div>
101
+ <input type="radio" name="single" value="yes" id="single-yes" <?php echo ( isset($single_yes_selected) ? $single_yes_selected : '' ); ?> /> <label for="single-yes"><?php _e('Yes'); ?></label>
102
+ <input type="radio" name="single" value="no" id="single-no" <?php echo ( isset($single_no_selected) ? $single_no_selected : '' ); ?> /> <label for="single-no"><?php _e('No'); ?></label><br />
103
+ <?php $DW->dumpOpt($opt_individual); ?>
104
+ <input type="checkbox" id="individual" name="individual" value="1" <?php echo ( $individual ) ? 'checked="checked"' : ''; ?> onclick="chkInPosts()" />
105
+ <label for="individual"><?php _e('Make exception rule available to individual posts and tags.', DW_L10N_DOMAIN) ?> <?php echo ( isset($count_individual) ? $count_individual : '' ); ?></label>
106
+ <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="<?php _e('Click to toggle info', DW_L10N_DOMAIN) ?>" onclick="divToggle('individual_post_tag')" />
107
+ <div>
108
+ <div id="individual_post_tag" class="infotext">
109
+ <?php _e('When you enable this option, you have the ability to apply the exception rule for <em>Single Posts</em> to tags and individual posts.
110
+ You can set the exception rule for tags in the single Edit Tag Panel (go to <a href="edit-tags.php?taxonomy=post_tag">Post Tags</a>,
111
+ click a tag), For individual posts in the <a href="post-new.php">New</a> or <a href="edit.php">Edit</a> Posts panel.
112
+ Exception rules for tags and individual posts in any combination work independantly, but will always be counted as one exception.<br />
113
+ Please note when exception rules are set for Author and/or Category, these will be removed.
114
+ ', DW_L10N_DOMAIN); ?>
115
+ </div>
116
+ </div>
117
+ <?php foreach ( $single_post_act as $singlepost ) { ?>
118
+ <input type="hidden" name="single_post_act[]" value="<?php echo $singlepost; ?>" />
119
+ <?php } ?>
120
+ <?php foreach ( $single_tag_act as $tag ) { ?>
121
+ <input type="hidden" name="single_tag_act[]" value="<?php echo $tag; ?>" />
122
+ <?php } ?>
123
+ <table border="0" cellspacing="0" cellpadding="0">
124
+ <tr>
125
+ <td valign="top">
126
+ <?php _e('Except the posts by author', DW_L10N_DOMAIN); ?>:
127
+ <?php $DW->dumpOpt($opt_single_author); ?>
128
+ <div id="single-author-select" class="condition-select" <?php echo ( isset($author_condition_select_style) ? $author_condition_select_style : '' ); ?>>
129
+ <?php foreach ( $authors as $author ) { ?>
130
+ <?php $js_author_array[ ] = '\'single_author_act_' . $author->ID . '\''; ?>
131
+ <input type="checkbox" id="single_author_act_<?php echo $author->ID; ?>" name="single_author_act[]" value="<?php echo $author->ID; ?>" <?php echo ( isset($single_author_act) && count($single_author_act) > 0 && in_array($author->ID,$single_author_act) ) ? 'checked="checked"' : ''; ?> onclick="ci('single_author_act_<?php echo $author->ID; ?>')" /> <label for="single_author_act_<?php echo $author->ID; ?>"><?php echo $author->display_name; ?></label><br />
132
+ <?php } ?>
133
+ </div>
134
+ </td>
135
+ <td style="width:10px"></td>
136
+ <td valign="top">
137
+ <?php _e('Except the posts in category', DW_L10N_DOMAIN); ?>: <?php echo ( $DW->wpml ? $wpml_icon : '' ); ?>
138
+ <?php $DW->dumpOpt($opt_single_category); ?>
139
+ <div id="single-category-select" class="condition-select" <?php echo ( isset($category_condition_select_style) ? $category_condition_select_style : '' ); ?>>
140
+ <?php foreach ( $category as $cat ) { ?>
141
+ <?php $js_category_array[ ] = '\'single_cat_act_' . $cat->cat_ID . '\''; ?>
142
+ <input type="checkbox" id="single_cat_act_<?php echo $cat->cat_ID; ?>" name="single_category_act[]" value="<?php echo $cat->cat_ID; ?>" <?php echo ( isset($single_category_act) && count($single_category_act) > 0 && in_array($cat->cat_ID,$single_category_act) ) ? 'checked="checked"' : ''; ?> onclick="ci('single_cat_act_<?php echo $cat->cat_ID; ?>')" /> <label for="single_cat_act_<?php echo $cat->cat_ID; ?>"><?php echo $cat->name; ?></label><br />
143
+ <?php } ?>
144
+ </div>
145
+ </td>
146
+ </tr>
147
+ </table>
148
+ </div><!-- end dynwid_conf -->
mods/useragent_module.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * UserAgent Module
4
+ *
5
+ * @version $Id: useragent_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ $useragents = array(
10
+ 'gecko' => 'Firefox' . ' ' . __('(and other Gecko based)', DW_L10N_DOMAIN),
11
+ 'msie' => 'Internet Explorer',
12
+ 'opera' => 'Opera',
13
+ 'ns' => 'Netscape 4',
14
+ 'safari' => 'Safari',
15
+ 'chrome' => 'Chrome',
16
+ 'undef' => __('Other / Unknown / Not detected', DW_L10N_DOMAIN)
17
+ );
18
+ if ( count($useragents) > DW_LIST_LIMIT ) {
19
+ $browser_condition_select_style = DW_LIST_STYLE;
20
+ }
21
+
22
+ $browser_yes_selected = 'checked="checked"';
23
+ $opt_browser = $DW->getOptions($_GET['id'], 'browser');
24
+ if ( count($opt_browser) > 0 ) {
25
+ $browser_act = array();
26
+ foreach ( $opt_browser as $browser_condition ) {
27
+ if ( $browser_condition['name'] == 'default' || empty($browser_condition['name']) ) {
28
+ $browser_default = $browser_condition['value'];
29
+ } else {
30
+ $browser_act[ ] = $browser_condition['name'];
31
+ }
32
+ }
33
+
34
+ if ( $browser_default == '0' ) {
35
+ $browser_no_selected = $browser_yes_selected;
36
+ unset($browser_yes_selected);
37
+ }
38
+ }
39
+ ?>
40
+
41
+ <h4><b><?php _e('Browser', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_browser) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
42
+ <div class="dynwid_conf">
43
+ <?php _e('Show widget with all browsers?', DW_L10N_DOMAIN) ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="<?php _e('Click to toggle info', DW_L10N_DOMAIN) ?>" onclick="divToggle('browser');" /><br />
44
+ <?php $DW->dumpOpt($opt_browser); ?>
45
+ <div>
46
+ <div id="browser" class="infotext">
47
+ <?php _e('Browser detection is never 100% accurate.', DW_L10N_DOMAIN); ?>
48
+ </div>
49
+ </div>
50
+ <input type="radio" name="browser" value="yes" id="browser-yes" <?php echo ( isset($browser_yes_selected) ? $browser_yes_selected : '' ); ?> /> <label for="browser-yes"><?php _e('Yes'); ?></label>
51
+ <input type="radio" name="browser" value="no" id="browser-no" <?php echo ( isset($browser_no_selected) ? $browser_no_selected : '' ); ?> /> <label for="browser-no"><?php _e('No'); ?></label><br />
52
+ <?php _e('Except the browser(s)', DW_L10N_DOMAIN); ?>:<br />
53
+ <div id="browser-select" class="condition-select" <?php echo ( isset($browser_condition_select_style) ? $browser_condition_select_style : '' ); ?>>
54
+ <?php foreach ( $useragents as $code => $agent ) { ?>
55
+ <input type="checkbox" id="browser_act_<?php echo $code; ?>" name="browser_act[]" value="<?php echo $code; ?>" <?php echo ( count($browser_act) > 0 && in_array($code, $browser_act) ) ? 'checked="checked"' : ''; ?> /> <label for="browser_act_<?php echo $code; ?>"><?php echo $agent; ?></label><br />
56
+ <?php } ?>
57
+ </div>
58
+ </div><!-- end dynwid_conf -->
mods/wpec_module.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPEC Module
4
+ * http://getshopped.org/
5
+ *
6
+ * @version $Id: wpec_module.php 348295 2011-02-20 20:13:21Z qurl $
7
+ * @copyright 2011 Jacco Drabbe
8
+ */
9
+
10
+ if ( defined('WPSC_VERSION') ) {
11
+ $DW->wpsc = TRUE;
12
+ require_once(DW_PLUGIN . 'wpsc.php');
13
+
14
+ $wpsc_yes_selected = 'checked="checked"';
15
+ $opt_wpsc = $DW->getOptions($_GET['id'], 'wpsc');
16
+ if ( count($opt_wpsc) > 0 ) {
17
+ $wpsc_act = array();
18
+ foreach ( $opt_wpsc as $wpsc_condition ) {
19
+ if ( $wpsc_condition['name'] == 'default' || empty($wpsc_condition['name']) ) {
20
+ $wpsc_default = $wpsc_condition['value'];
21
+ } else {
22
+ $wpsc_act[ ] = $wpsc_condition['name'];
23
+ }
24
+ }
25
+
26
+ if ( $wpsc_default == '0' ) {
27
+ $wpsc_no_selected = $wpsc_yes_selected;
28
+ unset($wpsc_yes_selected);
29
+ }
30
+ }
31
+
32
+ $wpsc = dw_wpsc_get_categories();
33
+ if ( count($wpsc) > DW_LIST_LIMIT ) {
34
+ $wpsc_condition_select_style = DW_LIST_STYLE;
35
+ }
36
+ ?>
37
+ <h4><b><?php _e('WPSC Category', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_wpsc) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
38
+ <div class="dynwid_conf">
39
+ <?php _e('Show widget default on WPSC categories?', DW_L10N_DOMAIN); ?><br />
40
+ <?php $DW->dumpOpt($opt_wpsc); ?>
41
+ <input type="radio" name="wpsc" value="yes" id="wpsc-yes" <?php echo ( isset($wpsc_yes_selected) ? $wpsc_yes_selected : '' ); ?> /> <label for="wpsc-yes"><?php _e('Yes'); ?></label>
42
+ <input type="radio" name="wpsc" value="no" id="wpsc-no" <?php echo ( isset($wpsc_no_selected) ? $wpsc_no_selected : '' ); ?> /> <label for="wpsc-no"><?php _e('No'); ?></label><br />
43
+ <?php _e('Except the categories', DW_L10N_DOMAIN); ?>:<br />
44
+ <div id="wpsc-select" class="condition-select" <?php echo ( isset($wpsc_condition_select_style) ? $wpsc_condition_select_style : '' ); ?>>
45
+ <?php foreach ( $wpsc as $id => $cat ) { ?>
46
+ <input type="checkbox" id="wpsc_act_<?php echo $id; ?>" name="wpsc_act[]" value="<?php echo $id; ?>" <?php echo ( count($wpsc_act) > 0 && in_array($id, $wpsc_act) ) ? 'checked="checked"' : ''; ?> /> <label for="wpsc_act_<?php echo $id; ?>"><?php echo $cat; ?></label><br />
47
+ <?php } ?>
48
+ </div>
49
+ </div><!-- end dynwid_conf -->
50
+ <?php
51
+ } // end DW->wpsc
52
+ ?>
mods/wpml_module.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPML Module
4
+ *
5
+ * @version $Id: wpml_module.php 348295 2011-02-20 20:13:21Z qurl $
6
+ * @copyright 2011 Jacco Drabbe
7
+ */
8
+
9
+ if ( $DW->wpml ) {
10
+ $wpml_api = ICL_PLUGIN_PATH . DW_WPML_API;
11
+ require_once($wpml_api);
12
+
13
+ $wpml_yes_selected = 'checked="checked"';
14
+ $opt_wpml = $DW->getOptions($_GET['id'], 'wpml');
15
+ if ( count($opt_wpml) > 0 ) {
16
+ $wpml_act = array();
17
+ foreach ( $opt_wpml as $wpml_condition ) {
18
+ if ( $wpml_condition['name'] == 'default' || empty($wpml_condition['name']) ) {
19
+ $wpml_default = $wpml_condition['value'];
20
+ } else {
21
+ $wpml_act[ ] = $wpml_condition['name'];
22
+ }
23
+ }
24
+
25
+ if ( $wpml_default == '0' ) {
26
+ $wpml_no_selected = $wpml_yes_selected;
27
+ unset($wpml_yes_selected);
28
+ }
29
+ }
30
+
31
+ $wpml_langs = wpml_get_active_languages();
32
+ if ( count($wpml_langs) > DW_LIST_LIMIT ) {
33
+ $wpml_condition_select_style = DW_LIST_STYLE;
34
+ }
35
+ ?>
36
+
37
+ <h4><b><?php _e('Language (WPML)', DW_L10N_DOMAIN); ?></b><?php echo ( count($opt_wpml) > 0 ? ' <img src="' . $DW->plugin_url . 'img/checkmark.gif" alt="Checkmark" />' : '' ); ?></h4>
38
+ <div class="dynwid_conf">
39
+ <?php _e('Show widget default on all languages?', DW_L10N_DOMAIN); ?> <img src="<?php echo $DW->plugin_url; ?>img/info.gif" alt="info" title="<?php _e('Click to toggle info', DW_L10N_DOMAIN) ?>" onclick="divToggle('wpml');" /><br /><br />
40
+ <?php $DW->dumpOpt($opt_wpml); ?>
41
+ <div>
42
+ <div id="wpml" class="infotext">
43
+ <?php _e('Using this option can override all other options.', DW_L10N_DOMAIN); ?><br />
44
+ </div>
45
+ </div>
46
+ <input type="radio" name="wpml" value="yes" id="wpml-yes" <?php echo ( isset($wpml_yes_selected) ? $wpml_yes_selected : '' ); ?> /> <label for="wpml-yes"><?php _e('Yes'); ?></label>
47
+ <input type="radio" name="wpml" value="no" id="wpml-no" <?php echo ( isset($wpml_no_selected) ? $wpml_no_selected : '' ); ?> /> <label for="wpml-no"><?php _e('No'); ?></label><br />
48
+ <?php _e('Except the languages', DW_L10N_DOMAIN); ?>:<br />
49
+ <div id="wpml-select" class="condition-select" <?php echo ( isset($wpml_condition_select_style) ? $wpml_condition_select_style : '' ); ?>>
50
+ <?php foreach ( $wpml_langs as $code => $lang ) { ?>
51
+ <input type="checkbox" id="wpml_act_<?php echo $lang['code']; ?>" name="wpml_act[]" value="<?php echo $lang['code']; ?>" <?php echo ( count($wpml_act) > 0 && in_array($lang['code'], $wpml_act) ) ? 'checked="checked"' : ''; ?> /> <label for="wpml_act_<?php echo $lang['code']; ?>"><?php echo $lang['display_name']; ?></label><br />
52
+ <?php } ?>
53
+ </div>
54
+ </div><!-- end dynwid_conf -->
55
+ <?php } ?>
plugin/bp.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * BuddyPress Plugin
5
+ * http://buddypress.org/
6
+ *
7
+ * @version $Id: bp.php 348295 2011-02-20 20:13:21Z qurl $
8
+ * @copyright 2011 Jacco Drabbe
9
+ */
10
+
11
+ function dw_get_bp_components() {
12
+ $bp = &$GLOBALS['bp'];
13
+ $DW = &$GLOBALS['DW'];
14
+ $components = array();
15
+
16
+ if ( in_array('groups', $bp->active_components) ) {
17
+ $DW->bp_groups = TRUE;
18
+ }
19
+ foreach ( $bp->active_components as $c ) {
20
+ if ( $c == 'groups' ) {
21
+ $components[$c] = ucfirst($c) . ' (only main page)';
22
+ } else {
23
+ $components[$c] = ucfirst($c);
24
+ }
25
+ }
26
+
27
+ asort($components);
28
+ return $components;
29
+ }
30
+
31
+ function dw_get_bp_groups() {
32
+ $bp = &$GLOBALS['bp'];
33
+ $wpdb = &$GLOBALS['wpdb'];
34
+
35
+ $groups = array();
36
+ $table = $bp->groups->table_name;
37
+ $fields = array('slug', 'name');
38
+ $query = "SELECT " . implode(', ', $fields) . " FROM " . $table . " ORDER BY name";
39
+ $results = $wpdb->get_results($query);
40
+
41
+ foreach ( $results as $myrow ) {
42
+ $groups[$myrow->slug] = $myrow->name;
43
+ }
44
+
45
+ return $groups;
46
+ }
47
+
48
+ function is_dw_bp_component($id) {
49
+ $bp = &$GLOBALS['bp'];
50
+
51
+ $component = $bp->current_component;
52
+ if ( in_array($component, $id) ) {
53
+ return TRUE;
54
+ } else {
55
+ return FALSE;
56
+ }
57
+ }
58
+
59
+ function is_dw_bp_group($id) {
60
+ $bp = &$GLOBALS['bp'];
61
+
62
+ $group = $bp->current_item;
63
+ if ( in_array($group, $id) ) {
64
+ return TRUE;
65
+ } else {
66
+ return FALSE;
67
+ }
68
+ }
69
+ ?>
plugin/wpml.php CHANGED
@@ -3,8 +3,8 @@
3
  * WordPress MultiLingual Plugin
4
  * http://wpml.org/
5
  *
6
- *
7
- * @version $Id: wpml.php 299409 2010-10-12 20:24:48Z qurl $
8
  */
9
 
10
  function dw_wpml_get_id($content_id, $content_type = 'post_page') {
3
  * WordPress MultiLingual Plugin
4
  * http://wpml.org/
5
  *
6
+ * @version $Id: wpml.php 348295 2011-02-20 20:13:21Z qurl $
7
+ * @copyright 2010 Jacco Drabbe
8
  */
9
 
10
  function dw_wpml_get_id($content_id, $content_type = 'post_page') {
plugin/wpsc.php CHANGED
@@ -3,20 +3,28 @@
3
  * WordPress Shopping Cart / WordPress E-Commerce Plugin
4
  * http://getshopped.org/
5
  *
6
- * @version $Id: wpsc.php 299409 2010-10-12 20:24:48Z qurl $
 
7
  */
8
 
9
  function dw_wpsc_get_categories() {
10
- $wpdb = &$GLOBALS['wpdb'];
 
11
 
12
- $categories = array();
13
- $table = WPSC_TABLE_PRODUCT_CATEGORIES;
14
- $fields = array('id', 'name');
15
- $query = "SELECT " . implode(', ', $fields) . " FROM " . $table . " WHERE active = '1' ORDER BY name";
16
- $results = $wpdb->get_results($query);
17
 
18
- foreach ( $results as $myrow ) {
19
- $categories[$myrow->id] = $myrow->name;
 
 
 
 
 
 
20
  }
21
 
22
  return $categories;
@@ -24,12 +32,18 @@
24
 
25
  function is_dw_wpsc_category($id) {
26
  $wpsc_query = &$GLOBALS['wpsc_query'];
 
 
 
 
 
 
27
 
28
  if ( is_int($id) ) {
29
  $id = array($id);
30
  }
31
 
32
- if ( in_array($wpsc_query->category, $id) ) {
33
  return TRUE;
34
  } else {
35
  return FALSE;
3
  * WordPress Shopping Cart / WordPress E-Commerce Plugin
4
  * http://getshopped.org/
5
  *
6
+ * @version $Id: wpsc.php 348295 2011-02-20 20:13:21Z qurl $
7
+ * @copyright 2011 Jacco Drabbe
8
  */
9
 
10
  function dw_wpsc_get_categories() {
11
+ if ( version_compare(WPSC_VERSION, '3.8', '<' ) ) {
12
+ $wpdb = &$GLOBALS['wpdb'];
13
 
14
+ $categories = array();
15
+ $table = WPSC_TABLE_PRODUCT_CATEGORIES;
16
+ $fields = array('id', 'name');
17
+ $query = "SELECT " . implode(', ', $fields) . " FROM " . $table . " WHERE active = '1' ORDER BY name";
18
+ $results = $wpdb->get_results($query);
19
 
20
+ foreach ( $results as $myrow ) {
21
+ $categories[$myrow->id] = $myrow->name;
22
+ }
23
+ } else {
24
+ $category_list = get_terms( 'wpsc_product_category', 'hide_empty=0');
25
+ foreach ( $category_list as $cat ) {
26
+ $categories[$cat->term_id] = $cat->name;
27
+ }
28
  }
29
 
30
  return $categories;
32
 
33
  function is_dw_wpsc_category($id) {
34
  $wpsc_query = &$GLOBALS['wpsc_query'];
35
+ if ( version_compare(WPSC_VERSION, '3.8', '<') ) {
36
+ $category = $wpsc_query->category;
37
+ } else {
38
+ $term = get_term_by('slug', $wpsc_query->query_vars['term'], 'wpsc_product_category');
39
+ $category = $term->term_id;
40
+ }
41
 
42
  if ( is_int($id) ) {
43
  $id = array($id);
44
  }
45
 
46
+ if ( in_array($category, $id) ) {
47
  return TRUE;
48
  } else {
49
  return FALSE;
readme.txt CHANGED
@@ -1,23 +1,25 @@
1
  === Plugin Name ===
2
  Contributors: Qurl
3
  Donate link:
4
- Tags: widget, widgets, dynamic, sidebar, custom, rules, admin, condition, conditional tags
5
  Requires at least: 2.9.1
6
- Tested up to: 3.0.3
7
- Stable tag: 1.3.7
8
 
9
  Dynamic Widgets gives you full control on which pages your widgets will appear. It lets you dynamicly place the widgets on WordPress pages.
10
 
11
  == Description ==
12
 
13
- Dynamic Widgets gives you full control on which pages your widgets will appear. It lets you dynamicly place the widgets on WordPress pages by setting conditional rules with just a few mouse clicks by role, dates, language (WPML), for the homepage, single posts, pages, authors, categories, archives, error page, search page and custom post types.
14
 
15
  * Default widget display setting is supported for:
16
  - User roles
17
  - Dates
18
- - Language (WPML)
 
19
  - Front page
20
  - Single post pages
 
21
  - Pages
22
  - Author pages
23
  - Category pages
@@ -25,25 +27,35 @@ Dynamic Widgets gives you full control on which pages your widgets will appear.
25
  - Error Page
26
  - Search Page
27
  - Custom Post Types
 
28
  - WP Shopping Cart / WP E-Commerce Categories
 
 
29
 
30
  * Exceptions can be created for:
31
  - User roles on role, including not logged in (anonymous) users
32
  - Dates on from, to or range
33
- - Language (WPML) on language
 
34
  - Single post pages on Author, Categories, Tags and/or Individual posts
35
  - Pages on Page Title, including inheritance from hierarchical parents
36
  - Author pages on Author
37
  - Category pages on Category name
38
  - Custom Posts Type on Custom post name, including inheritance from hierarchical parents
 
39
  - WP Shopping Cart / WP E-Commerce Categories on Category name
 
 
40
 
41
  * Plugin support for:
 
42
  - WP MultiLingual (WPML)
43
  - WP Shopping Cart / WP E-Commerce (WPSC / WPEC)
44
 
45
  * Language files provided:
46
  - French (fr_FR) by Alexis Nomine
 
 
47
 
48
  == Installation ==
49
 
@@ -82,11 +94,15 @@ Yes, but only if you activate the plugin on a per site base. Network Activation
82
 
83
  Did you save the options? If you did, you may try to hit the (i) icon a bit to the right and read the text which appears below.
84
 
 
 
 
 
85
  = The plugin slows down the loading of a page dramatically. Can you do something about it? =
86
 
87
  Try setting the plugin to the 'OLD' method. You can do this by clicking on the 'Advanced >' link at the bottom of the Widgets Overview page and check the box next to 'Use OLD method'. See if that helps. Setting the plugin using the 'OLD' method comes with a downside unfortunately. It may leave you behind with a visible empty sidebar.
88
 
89
- = I want to check if the OLD method suits me better, is there a way back if it doesnt? =
90
 
91
  Yes! You can switch between FILTER and OLD method without any loss of widgets configuration or whatsoever.
92
 
@@ -116,6 +132,26 @@ Please file a [bugreport](http://www.qurl.nl/dynamic-widgets/bugreport/). Please
116
 
117
  == Changelog ==
118
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  = Version 1.3.7 =
120
 
121
  * Added more l10n text strings.
@@ -217,6 +253,10 @@ Please file a [bugreport](http://www.qurl.nl/dynamic-widgets/bugreport/). Please
217
 
218
  * Added default widget display setting option for 'Not Found' Error (404) Page.
219
 
 
 
 
 
220
  == Upgrade Notice ==
221
 
222
  Be sure to deactivate Dynamic Widgets Plugin before installing the new version following steps 1 and 2 in the installation procedure. After the install you can reactivate the plugin.
1
  === Plugin Name ===
2
  Contributors: Qurl
3
  Donate link:
4
+ Tags: widget, widgets, dynamic, sidebar, custom, rules, admin, condition, conditional tags, wpml, wpec, buddypress
5
  Requires at least: 2.9.1
6
+ Tested up to: 3.1
7
+ Stable tag: 1.4.0
8
 
9
  Dynamic Widgets gives you full control on which pages your widgets will appear. It lets you dynamicly place the widgets on WordPress pages.
10
 
11
  == Description ==
12
 
13
+ Dynamic Widgets gives you full control on which pages your widgets will appear. It lets you dynamicly place the widgets on WordPress pages by setting conditional rules with just a few mouse clicks by role, dates, browser, language (WPML), for the homepage, single posts, attachments, pages, authors, categories, archives, error page, search page, custom post types, custom post type archives, WPEC/WPSC categories, BuddyPress Components and BuddyPress Groups
14
 
15
  * Default widget display setting is supported for:
16
  - User roles
17
  - Dates
18
+ - Browsers
19
+ - Languages (WPML)
20
  - Front page
21
  - Single post pages
22
+ - Attachment pages
23
  - Pages
24
  - Author pages
25
  - Category pages
27
  - Error Page
28
  - Search Page
29
  - Custom Post Types
30
+ - Custom Post Type Archive pages
31
  - WP Shopping Cart / WP E-Commerce Categories
32
+ - BuddyPress Components pages
33
+ - BuddyPress Groups
34
 
35
  * Exceptions can be created for:
36
  - User roles on role, including not logged in (anonymous) users
37
  - Dates on from, to or range
38
+ - Browsers on browser name
39
+ - Languages (WPML) on language
40
  - Single post pages on Author, Categories, Tags and/or Individual posts
41
  - Pages on Page Title, including inheritance from hierarchical parents
42
  - Author pages on Author
43
  - Category pages on Category name
44
  - Custom Posts Type on Custom post name, including inheritance from hierarchical parents
45
+ - Custom Post Type Archive pages on Custom Post Type
46
  - WP Shopping Cart / WP E-Commerce Categories on Category name
47
+ - BuddyPress Component pages on Component
48
+ - BuddyPress Groups on group
49
 
50
  * Plugin support for:
51
+ - BuddyPress
52
  - WP MultiLingual (WPML)
53
  - WP Shopping Cart / WP E-Commerce (WPSC / WPEC)
54
 
55
  * Language files provided:
56
  - French (fr_FR) by Alexis Nomine
57
+ - German (de_DE) by Daniel Bihler
58
+ - Spanish (es_ES) by Eduardo Larequi
59
 
60
  == Installation ==
61
 
94
 
95
  Did you save the options? If you did, you may try to hit the (i) icon a bit to the right and read the text which appears below.
96
 
97
+ = According to the featurelist I should be able to use a hierarchical structure in static pages, but I don't see it. Where is it? =
98
+
99
+ You probably have more than 500 pages. Building a tree with so many pages slows down the performance of the plugin dramatically. To prevent time-out errors, the childs-function has been automatically disabled.
100
+
101
  = The plugin slows down the loading of a page dramatically. Can you do something about it? =
102
 
103
  Try setting the plugin to the 'OLD' method. You can do this by clicking on the 'Advanced >' link at the bottom of the Widgets Overview page and check the box next to 'Use OLD method'. See if that helps. Setting the plugin using the 'OLD' method comes with a downside unfortunately. It may leave you behind with a visible empty sidebar.
104
 
105
+ = I want to check if the 'OLD' method suits me better, is there a way back if it doesn't? =
106
 
107
  Yes! You can switch between FILTER and OLD method without any loss of widgets configuration or whatsoever.
108
 
132
 
133
  == Changelog ==
134
 
135
+ = Version 1.4.0 =
136
+
137
+ * Added more l10n text strings
138
+ * Added support for browser options.
139
+ * Added support for attachments.
140
+ * Added support for Custom Post Type Archive pages (native in WordPress 3.1, via plugin in 3.0.x).
141
+ * Added support for BuddyPress Component pages.
142
+ * Added support for BuddyPress Group pages.
143
+ * Added German language files (locale: de_DE) - Vielen dank Daniel!
144
+ * Added Spanish language files (locale: es_ES) - Muchas gracias Eduardo!
145
+ * Bugfix for unexpected behavior when subsequent widgets are in opposite config for WPML.
146
+ * Bugfix for not correct displaying of options string in the widget admin when having options set for childs in Pages or Custom Post Types.
147
+ * Bugfix for an error 404 (file not found) when an error occurs while saving options.
148
+ * Bugfix for unnecessary double creation of the hierarchical tree in Static Pages and Custom Post Types.
149
+ * Modified admin UI for compatibility with WordPress 3.1.
150
+ * Upgrade for WP Shopping Cart / WP E-Commerce to support version 3.8 *** SEE RELEASE NOTES ***
151
+ * Workaround in admin UI when using (a child of) the default BuddyPress theme or the BP Template Pack plugin bombing the accordion.
152
+ * Modularized admin scripts
153
+ * Standarized the use of JavaScript (jQuery)
154
+
155
  = Version 1.3.7 =
156
 
157
  * Added more l10n text strings.
253
 
254
  * Added default widget display setting option for 'Not Found' Error (404) Page.
255
 
256
+ == Release notes ==
257
+
258
+ With this version, Dynamic Widgets supports version 3.8 of WPEC. Unfortunately because of the change by WPEC, when you upgrade WPEC you'll have to redo all rules you've created within Dynamic Widgets for WPEC manually. It was nog possible for me to find out how to convert these to the new system used by WPEC. For your convience I've created a WPEC config dump generator to be able to give an overview of all the WPEC rules created in Dynamic Widgets to make recreating the rules easier. Please note the generator only works correctly when the WPEC product categories database table still exists and you did not add or modified any rule in Dynamic Widgets. The generator can be found at the Dynamic Widgets overview page by clicking on the 'Advanced >' link at the bottom of the page.
259
+
260
  == Upgrade Notice ==
261
 
262
  Be sure to deactivate Dynamic Widgets Plugin before installing the new version following steps 1 and 2 in the installation procedure. After the install you can reactivate the plugin.
ui.accordion.1.7.3.js ADDED
@@ -0,0 +1,477 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Accordion 1.7.3
3
+ *
4
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI/Accordion
9
+ *
10
+ * Depends:
11
+ * ui.core.js
12
+ */
13
+ (function($) {
14
+
15
+ $.widget("ui.accordion", {
16
+
17
+ _init: function() {
18
+
19
+ var o = this.options, self = this;
20
+ this.running = 0;
21
+
22
+ // if the user set the alwaysOpen option on init
23
+ // then we need to set the collapsible option
24
+ // if they set both on init, collapsible will take priority
25
+ if (o.collapsible == $.ui.accordion.defaults.collapsible &&
26
+ o.alwaysOpen != $.ui.accordion.defaults.alwaysOpen) {
27
+ o.collapsible = !o.alwaysOpen;
28
+ }
29
+
30
+ if ( o.navigation ) {
31
+ var current = this.element.find("a").filter(o.navigationFilter);
32
+ if ( current.length ) {
33
+ if ( current.filter(o.header).length ) {
34
+ this.active = current;
35
+ } else {
36
+ this.active = current.parent().parent().prev();
37
+ current.addClass("ui-accordion-content-active");
38
+ }
39
+ }
40
+ }
41
+
42
+ this.element.addClass("ui-accordion ui-widget ui-helper-reset");
43
+
44
+ // in lack of child-selectors in CSS we need to mark top-LIs in a UL-accordion for some IE-fix
45
+ if (this.element[0].nodeName == "UL") {
46
+ this.element.children("li").addClass("ui-accordion-li-fix");
47
+ }
48
+
49
+ this.headers = this.element.find(o.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all")
50
+ .bind("mouseenter.accordion", function(){ $(this).addClass('ui-state-hover'); })
51
+ .bind("mouseleave.accordion", function(){ $(this).removeClass('ui-state-hover'); })
52
+ .bind("focus.accordion", function(){ $(this).addClass('ui-state-focus'); })
53
+ .bind("blur.accordion", function(){ $(this).removeClass('ui-state-focus'); });
54
+
55
+ this.headers
56
+ .next()
57
+ .addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
58
+
59
+ this.active = this._findActive(this.active || o.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");
60
+ this.active.next().addClass('ui-accordion-content-active');
61
+
62
+ //Append icon elements
63
+ $("<span/>").addClass("ui-icon " + o.icons.header).prependTo(this.headers);
64
+ this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected);
65
+
66
+ // IE7-/Win - Extra vertical space in lists fixed
67
+ if ($.browser.msie) {
68
+ this.element.find('a').css('zoom', '1');
69
+ }
70
+
71
+ this.resize();
72
+
73
+ //ARIA
74
+ this.element.attr('role','tablist');
75
+
76
+ this.headers
77
+ .attr('role','tab')
78
+ .bind('keydown', function(event) { return self._keydown(event); })
79
+ .next()
80
+ .attr('role','tabpanel');
81
+
82
+ this.headers
83
+ .not(this.active || "")
84
+ .attr('aria-expanded','false')
85
+ .attr("tabIndex", "-1")
86
+ .next()
87
+ .hide();
88
+
89
+ // make sure at least one header is in the tab order
90
+ if (!this.active.length) {
91
+ this.headers.eq(0).attr('tabIndex','0');
92
+ } else {
93
+ this.active
94
+ .attr('aria-expanded','true')
95
+ .attr('tabIndex', '0');
96
+ }
97
+
98
+ // only need links in taborder for Safari
99
+ if (!$.browser.safari)
100
+ this.headers.find('a').attr('tabIndex','-1');
101
+
102
+ if (o.event) {
103
+ this.headers.bind((o.event) + ".accordion", function(event) { return self._clickHandler.call(self, event, this); });
104
+ }
105
+
106
+ },
107
+
108
+ destroy: function() {
109
+ var o = this.options;
110
+
111
+ this.element
112
+ .removeClass("ui-accordion ui-widget ui-helper-reset")
113
+ .removeAttr("role")
114
+ .unbind('.accordion')
115
+ .removeData('accordion');
116
+
117
+ this.headers
118
+ .unbind(".accordion")
119
+ .removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top")
120
+ .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");
121
+
122
+ this.headers.find("a").removeAttr("tabindex");
123
+ this.headers.children(".ui-icon").remove();
124
+ var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");
125
+ if (o.autoHeight || o.fillHeight) {
126
+ contents.css("height", "");
127
+ }
128
+ },
129
+
130
+ _setData: function(key, value) {
131
+ if(key == 'alwaysOpen') { key = 'collapsible'; value = !value; }
132
+ $.widget.prototype._setData.apply(this, arguments);
133
+ },
134
+
135
+ _keydown: function(event) {
136
+
137
+ var o = this.options, keyCode = $.ui.keyCode;
138
+
139
+ if (o.disabled || event.altKey || event.ctrlKey)
140
+ return;
141
+
142
+ var length = this.headers.length;
143
+ var currentIndex = this.headers.index(event.target);
144
+ var toFocus = false;
145
+
146
+ switch(event.keyCode) {
147
+ case keyCode.RIGHT:
148
+ case keyCode.DOWN:
149
+ toFocus = this.headers[(currentIndex + 1) % length];
150
+ break;
151
+ case keyCode.LEFT:
152
+ case keyCode.UP:
153
+ toFocus = this.headers[(currentIndex - 1 + length) % length];
154
+ break;
155
+ case keyCode.SPACE:
156
+ case keyCode.ENTER:
157
+ return this._clickHandler({ target: event.target }, event.target);
158
+ }
159
+
160
+ if (toFocus) {
161
+ $(event.target).attr('tabIndex','-1');
162
+ $(toFocus).attr('tabIndex','0');
163
+ toFocus.focus();
164
+ return false;
165
+ }
166
+
167
+ return true;
168
+
169
+ },
170
+
171
+ resize: function() {
172
+
173
+ var o = this.options, maxHeight;
174
+
175
+ if (o.fillSpace) {
176
+
177
+ if($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); }
178
+ maxHeight = this.element.parent().height();
179
+ if($.browser.msie) { this.element.parent().css('overflow', defOverflow); }
180
+
181
+ this.headers.each(function() {
182
+ maxHeight -= $(this).outerHeight();
183
+ });
184
+
185
+ var maxPadding = 0;
186
+ this.headers.next().each(function() {
187
+ maxPadding = Math.max(maxPadding, $(this).innerHeight() - $(this).height());
188
+ }).height(Math.max(0, maxHeight - maxPadding))
189
+ .css('overflow', 'auto');
190
+
191
+ } else if ( o.autoHeight ) {
192
+ maxHeight = 0;
193
+ this.headers.next().each(function() {
194
+ maxHeight = Math.max(maxHeight, $(this).outerHeight());
195
+ }).height(maxHeight);
196
+ }
197
+
198
+ },
199
+
200
+ activate: function(index) {
201
+ // call clickHandler with custom event
202
+ var active = this._findActive(index)[0];
203
+ this._clickHandler({ target: active }, active);
204
+ },
205
+
206
+ _findActive: function(selector) {
207
+ return selector
208
+ ? typeof selector == "number"
209
+ ? this.headers.filter(":eq(" + selector + ")")
210
+ : this.headers.not(this.headers.not(selector))
211
+ : selector === false
212
+ ? $([])
213
+ : this.headers.filter(":eq(0)");
214
+ },
215
+
216
+ _clickHandler: function(event, target) {
217
+
218
+ var o = this.options;
219
+ if (o.disabled) return false;
220
+
221
+ // called only when using activate(false) to close all parts programmatically
222
+ if (!event.target && o.collapsible) {
223
+ this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
224
+ .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
225
+ this.active.next().addClass('ui-accordion-content-active');
226
+ var toHide = this.active.next(),
227
+ data = {
228
+ options: o,
229
+ newHeader: $([]),
230
+ oldHeader: o.active,
231
+ newContent: $([]),
232
+ oldContent: toHide
233
+ },
234
+ toShow = (this.active = $([]));
235
+ this._toggle(toShow, toHide, data);
236
+ return false;
237
+ }
238
+
239
+ // get the click target
240
+ var clicked = $(event.currentTarget || target);
241
+ var clickedIsActive = clicked[0] == this.active[0];
242
+
243
+ // if animations are still active, or the active header is the target, ignore click
244
+ if (this.running || (!o.collapsible && clickedIsActive)) {
245
+ return false;
246
+ }
247
+
248
+ // switch classes
249
+ this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
250
+ .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
251
+ this.active.next().addClass('ui-accordion-content-active');
252
+ if (!clickedIsActive) {
253
+ clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top")
254
+ .find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected);
255
+ clicked.next().addClass('ui-accordion-content-active');
256
+ }
257
+
258
+ // find elements to show and hide
259
+ var toShow = clicked.next(),
260
+ toHide = this.active.next(),
261
+ data = {
262
+ options: o,
263
+ newHeader: clickedIsActive && o.collapsible ? $([]) : clicked,
264
+ oldHeader: this.active,
265
+ newContent: clickedIsActive && o.collapsible ? $([]) : toShow.find('> *'),
266
+ oldContent: toHide.find('> *')
267
+ },
268
+ down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );
269
+
270
+ this.active = clickedIsActive ? $([]) : clicked;
271
+ this._toggle(toShow, toHide, data, clickedIsActive, down);
272
+
273
+ return false;
274
+
275
+ },
276
+
277
+ _toggle: function(toShow, toHide, data, clickedIsActive, down) {
278
+
279
+ var o = this.options, self = this;
280
+
281
+ this.toShow = toShow;
282
+ this.toHide = toHide;
283
+ this.data = data;
284
+
285
+ var complete = function() { if(!self) return; return self._completed.apply(self, arguments); };
286
+
287
+ // trigger changestart event
288
+ this._trigger("changestart", null, this.data);
289
+
290
+ // count elements to animate
291
+ this.running = toHide.size() === 0 ? toShow.size() : toHide.size();
292
+
293
+ if (o.animated) {
294
+
295
+ var animOptions = {};
296
+
297
+ if ( o.collapsible && clickedIsActive ) {
298
+ animOptions = {
299
+ toShow: $([]),
300
+ toHide: toHide,
301
+ complete: complete,
302
+ down: down,
303
+ autoHeight: o.autoHeight || o.fillSpace
304
+ };
305
+ } else {
306
+ animOptions = {
307
+ toShow: toShow,
308
+ toHide: toHide,
309
+ complete: complete,
310
+ down: down,
311
+ autoHeight: o.autoHeight || o.fillSpace
312
+ };
313
+ }
314
+
315
+ if (!o.proxied) {
316
+ o.proxied = o.animated;
317
+ }
318
+
319
+ if (!o.proxiedDuration) {
320
+ o.proxiedDuration = o.duration;
321
+ }
322
+
323
+ o.animated = $.isFunction(o.proxied) ?
324
+ o.proxied(animOptions) : o.proxied;
325
+
326
+ o.duration = $.isFunction(o.proxiedDuration) ?
327
+ o.proxiedDuration(animOptions) : o.proxiedDuration;
328
+
329
+ var animations = $.ui.accordion.animations,
330
+ duration = o.duration,
331
+ easing = o.animated;
332
+
333
+ if (!animations[easing]) {
334
+ animations[easing] = function(options) {
335
+ this.slide(options, {
336
+ easing: easing,
337
+ duration: duration || 700
338
+ });
339
+ };
340
+ }
341
+
342
+ animations[easing](animOptions);
343
+
344
+ } else {
345
+
346
+ if (o.collapsible && clickedIsActive) {
347
+ toShow.toggle();
348
+ } else {
349
+ toHide.hide();
350
+ toShow.show();
351
+ }
352
+
353
+ complete(true);
354
+
355
+ }
356
+
357
+ toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1").blur();
358
+ toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus();
359
+
360
+ },
361
+
362
+ _completed: function(cancel) {
363
+
364
+ var o = this.options;
365
+
366
+ this.running = cancel ? 0 : --this.running;
367
+ if (this.running) return;
368
+
369
+ if (o.clearStyle) {
370
+ this.toShow.add(this.toHide).css({
371
+ height: "",
372
+ overflow: ""
373
+ });
374
+ }
375
+
376
+ this._trigger('change', null, this.data);
377
+ }
378
+
379
+ });
380
+
381
+
382
+ $.extend($.ui.accordion, {
383
+ version: "1.7.3",
384
+ defaults: {
385
+ active: null,
386
+ alwaysOpen: true, //deprecated, use collapsible
387
+ animated: 'slide',
388
+ autoHeight: true,
389
+ clearStyle: false,
390
+ collapsible: false,
391
+ event: "click",
392
+ fillSpace: false,
393
+ header: "> li > :first-child,> :not(li):even",
394
+ icons: {
395
+ header: "ui-icon-triangle-1-e",
396
+ headerSelected: "ui-icon-triangle-1-s"
397
+ },
398
+ navigation: false,
399
+ navigationFilter: function() {
400
+ return this.href.toLowerCase() == location.href.toLowerCase();
401
+ }
402
+ },
403
+ animations: {
404
+ slide: function(options, additions) {
405
+ options = $.extend({
406
+ easing: "swing",
407
+ duration: 300
408
+ }, options, additions);
409
+ if ( !options.toHide.size() ) {
410
+ options.toShow.animate({height: "show"}, options);
411
+ return;
412
+ }
413
+ if ( !options.toShow.size() ) {
414
+ options.toHide.animate({height: "hide"}, options);
415
+ return;
416
+ }
417
+ var overflow = options.toShow.css('overflow'),
418
+ percentDone,
419
+ showProps = {},
420
+ hideProps = {},
421
+ fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
422
+ originalWidth;
423
+ // fix width before calculating height of hidden element
424
+ var s = options.toShow;
425
+ originalWidth = s[0].style.width;
426
+ s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) );
427
+
428
+ $.each(fxAttrs, function(i, prop) {
429
+ hideProps[prop] = 'hide';
430
+
431
+ var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/);
432
+ showProps[prop] = {
433
+ value: parts[1],
434
+ unit: parts[2] || 'px'
435
+ };
436
+ });
437
+ options.toShow.css({ height: 0, overflow: 'hidden' }).show();
438
+ options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{
439
+ step: function(now, settings) {
440
+ // only calculate the percent when animating height
441
+ // IE gets very inconsistent results when animating elements
442
+ // with small values, which is common for padding
443
+ if (settings.prop == 'height') {
444
+ percentDone = (settings.now - settings.start) / (settings.end - settings.start);
445
+ }
446
+
447
+ options.toShow[0].style[settings.prop] =
448
+ (percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit;
449
+ },
450
+ duration: options.duration,
451
+ easing: options.easing,
452
+ complete: function() {
453
+ if ( !options.autoHeight ) {
454
+ options.toShow.css("height", "");
455
+ }
456
+ options.toShow.css("width", originalWidth);
457
+ options.toShow.css({overflow: overflow});
458
+ options.complete();
459
+ }
460
+ });
461
+ },
462
+ bounceslide: function(options) {
463
+ this.slide(options, {
464
+ easing: options.down ? "easeOutBounce" : "swing",
465
+ duration: options.down ? 1000 : 200
466
+ });
467
+ },
468
+ easeslide: function(options) {
469
+ this.slide(options, {
470
+ easing: "easeinout",
471
+ duration: 700
472
+ });
473
+ }
474
+ }
475
+ });
476
+
477
+ })(jQuery);
ui.accordion.1.8.7.js ADDED
@@ -0,0 +1,599 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Accordion 1.8.7
3
+ *
4
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Accordion
9
+ *
10
+ * Depends:
11
+ * jquery.ui.core.js
12
+ * jquery.ui.widget.js
13
+ */
14
+ (function( $, undefined ) {
15
+
16
+ $.widget( "ui.accordion", {
17
+ options: {
18
+ active: 0,
19
+ animated: "slide",
20
+ autoHeight: true,
21
+ clearStyle: false,
22
+ collapsible: false,
23
+ event: "click",
24
+ fillSpace: false,
25
+ header: "> li > :first-child,> :not(li):even",
26
+ icons: {
27
+ header: "ui-icon-triangle-1-e",
28
+ headerSelected: "ui-icon-triangle-1-s"
29
+ },
30
+ navigation: false,
31
+ navigationFilter: function() {
32
+ return this.href.toLowerCase() === location.href.toLowerCase();
33
+ }
34
+ },
35
+
36
+ _create: function() {
37
+ var self = this,
38
+ options = self.options;
39
+
40
+ self.running = 0;
41
+
42
+ self.element
43
+ .addClass( "ui-accordion ui-widget ui-helper-reset" )
44
+ // in lack of child-selectors in CSS
45
+ // we need to mark top-LIs in a UL-accordion for some IE-fix
46
+ .children( "li" )
47
+ .addClass( "ui-accordion-li-fix" );
48
+
49
+ self.headers = self.element.find( options.header )
50
+ .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" )
51
+ .bind( "mouseenter.accordion", function() {
52
+ if ( options.disabled ) {
53
+ return;
54
+ }
55
+ $( this ).addClass( "ui-state-hover" );
56
+ })
57
+ .bind( "mouseleave.accordion", function() {
58
+ if ( options.disabled ) {
59
+ return;
60
+ }
61
+ $( this ).removeClass( "ui-state-hover" );
62
+ })
63
+ .bind( "focus.accordion", function() {
64
+ if ( options.disabled ) {
65
+ return;
66
+ }
67
+ $( this ).addClass( "ui-state-focus" );
68
+ })
69
+ .bind( "blur.accordion", function() {
70
+ if ( options.disabled ) {
71
+ return;
72
+ }
73
+ $( this ).removeClass( "ui-state-focus" );
74
+ });
75
+
76
+ self.headers.next()
77
+ .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" );
78
+
79
+ if ( options.navigation ) {
80
+ var current = self.element.find( "a" ).filter( options.navigationFilter ).eq( 0 );
81
+ if ( current.length ) {
82
+ var header = current.closest( ".ui-accordion-header" );
83
+ if ( header.length ) {
84
+ // anchor within header
85
+ self.active = header;
86
+ } else {
87
+ // anchor within content
88
+ self.active = current.closest( ".ui-accordion-content" ).prev();
89
+ }
90
+ }
91
+ }
92
+
93
+ self.active = self._findActive( self.active || options.active )
94
+ .addClass( "ui-state-default ui-state-active" )
95
+ .toggleClass( "ui-corner-all" )
96
+ .toggleClass( "ui-corner-top" );
97
+ self.active.next().addClass( "ui-accordion-content-active" );
98
+
99
+ self._createIcons();
100
+ self.resize();
101
+
102
+ // ARIA
103
+ self.element.attr( "role", "tablist" );
104
+
105
+ self.headers
106
+ .attr( "role", "tab" )
107
+ .bind( "keydown.accordion", function( event ) {
108
+ return self._keydown( event );
109
+ })
110
+ .next()
111
+ .attr( "role", "tabpanel" );
112
+
113
+ self.headers
114
+ .not( self.active || "" )
115
+ .attr({
116
+ "aria-expanded": "false",
117
+ tabIndex: -1
118
+ })
119
+ .next()
120
+ .hide();
121
+
122
+ // make sure at least one header is in the tab order
123
+ if ( !self.active.length ) {
124
+ self.headers.eq( 0 ).attr( "tabIndex", 0 );
125
+ } else {
126
+ self.active
127
+ .attr({
128
+ "aria-expanded": "true",
129
+ tabIndex: 0
130
+ });
131
+ }
132
+
133
+ // only need links in tab order for Safari
134
+ if ( !$.browser.safari ) {
135
+ self.headers.find( "a" ).attr( "tabIndex", -1 );
136
+ }
137
+
138
+ if ( options.event ) {
139
+ self.headers.bind( options.event.split(" ").join(".accordion ") + ".accordion", function(event) {
140
+ self._clickHandler.call( self, event, this );
141
+ event.preventDefault();
142
+ });
143
+ }
144
+ },
145
+
146
+ _createIcons: function() {
147
+ var options = this.options;
148
+ if ( options.icons ) {
149
+ $( "<span></span>" )
150
+ .addClass( "ui-icon " + options.icons.header )
151
+ .prependTo( this.headers );
152
+ this.active.children( ".ui-icon" )
153
+ .toggleClass(options.icons.header)
154
+ .toggleClass(options.icons.headerSelected);
155
+ this.element.addClass( "ui-accordion-icons" );
156
+ }
157
+ },
158
+
159
+ _destroyIcons: function() {
160
+ this.headers.children( ".ui-icon" ).remove();
161
+ this.element.removeClass( "ui-accordion-icons" );
162
+ },
163
+
164
+ destroy: function() {
165
+ var options = this.options;
166
+
167
+ this.element
168
+ .removeClass( "ui-accordion ui-widget ui-helper-reset" )
169
+ .removeAttr( "role" );
170
+
171
+ this.headers
172
+ .unbind( ".accordion" )
173
+ .removeClass( "ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
174
+ .removeAttr( "role" )
175
+ .removeAttr( "aria-expanded" )
176
+ .removeAttr( "tabIndex" );
177
+
178
+ this.headers.find( "a" ).removeAttr( "tabIndex" );
179
+ this._destroyIcons();
180
+ var contents = this.headers.next()
181
+ .css( "display", "" )
182
+ .removeAttr( "role" )
183
+ .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled" );
184
+ if ( options.autoHeight || options.fillHeight ) {
185
+ contents.css( "height", "" );
186
+ }
187
+
188
+ return $.Widget.prototype.destroy.call( this );
189
+ },
190
+
191
+ _setOption: function( key, value ) {
192
+ $.Widget.prototype._setOption.apply( this, arguments );
193
+
194
+ if ( key == "active" ) {
195
+ this.activate( value );
196
+ }
197
+ if ( key == "icons" ) {
198
+ this._destroyIcons();
199
+ if ( value ) {
200
+ this._createIcons();
201
+ }
202
+ }
203
+ // #5332 - opacity doesn't cascade to positioned elements in IE
204
+ // so we need to add the disabled class to the headers and panels
205
+ if ( key == "disabled" ) {
206
+ this.headers.add(this.headers.next())
207
+ [ value ? "addClass" : "removeClass" ](
208
+ "ui-accordion-disabled ui-state-disabled" );
209
+ }
210
+ },
211
+
212
+ _keydown: function( event ) {
213
+ if ( this.options.disabled || event.altKey || event.ctrlKey ) {
214
+ return;
215
+ }
216
+
217
+ var keyCode = $.ui.keyCode,
218
+ length = this.headers.length,
219
+ currentIndex = this.headers.index( event.target ),
220
+ toFocus = false;
221
+
222
+ switch ( event.keyCode ) {
223
+ case keyCode.RIGHT:
224
+ case keyCode.DOWN:
225
+ toFocus = this.headers[ ( currentIndex + 1 ) % length ];
226
+ break;
227
+ case keyCode.LEFT:
228
+ case keyCode.UP:
229
+ toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
230
+ break;
231
+ case keyCode.SPACE:
232
+ case keyCode.ENTER:
233
+ this._clickHandler( { target: event.target }, event.target );
234
+ event.preventDefault();
235
+ }
236
+
237
+ if ( toFocus ) {
238
+ $( event.target ).attr( "tabIndex", -1 );
239
+ $( toFocus ).attr( "tabIndex", 0 );
240
+ toFocus.focus();
241
+ return false;
242
+ }
243
+
244
+ return true;
245
+ },
246
+
247
+ resize: function() {
248
+ var options = this.options,
249
+ maxHeight;
250
+
251
+ if ( options.fillSpace ) {
252
+ if ( $.browser.msie ) {
253
+ var defOverflow = this.element.parent().css( "overflow" );
254
+ this.element.parent().css( "overflow", "hidden");
255
+ }
256
+ maxHeight = this.element.parent().height();
257
+ if ($.browser.msie) {
258
+ this.element.parent().css( "overflow", defOverflow );
259
+ }
260
+
261
+ this.headers.each(function() {
262
+ maxHeight -= $( this ).outerHeight( true );
263
+ });
264
+
265
+ this.headers.next()
266
+ .each(function() {
267
+ $( this ).height( Math.max( 0, maxHeight -
268
+ $( this ).innerHeight() + $( this ).height() ) );
269
+ })
270
+ .css( "overflow", "auto" );
271
+ } else if ( options.autoHeight ) {
272
+ maxHeight = 0;
273
+ this.headers.next()
274
+ .each(function() {
275
+ maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
276
+ })
277
+ .height( maxHeight );
278
+ }
279
+
280
+ return this;
281
+ },
282
+
283
+ activate: function( index ) {
284
+ // TODO this gets called on init, changing the option without an explicit call for that
285
+ this.options.active = index;
286
+ // call clickHandler with custom event
287
+ var active = this._findActive( index )[ 0 ];
288
+ this._clickHandler( { target: active }, active );
289
+
290
+ return this;
291
+ },
292
+
293
+ _findActive: function( selector ) {
294
+ return selector
295
+ ? typeof selector === "number"
296
+ ? this.headers.filter( ":eq(" + selector + ")" )
297
+ : this.headers.not( this.headers.not( selector ) )
298
+ : selector === false
299
+ ? $( [] )
300
+ : this.headers.filter( ":eq(0)" );
301
+ },
302
+
303
+ // TODO isn't event.target enough? why the separate target argument?
304
+ _clickHandler: function( event, target ) {
305
+ var options = this.options;
306
+ if ( options.disabled ) {
307
+ return;
308
+ }
309
+
310
+ // called only when using activate(false) to close all parts programmatically
311
+ if ( !event.target ) {
312
+ if ( !options.collapsible ) {
313
+ return;
314
+ }
315
+ this.active
316
+ .removeClass( "ui-state-active ui-corner-top" )
317
+ .addClass( "ui-state-default ui-corner-all" )
318
+ .children( ".ui-icon" )
319
+ .removeClass( options.icons.headerSelected )
320
+ .addClass( options.icons.header );
321
+ this.active.next().addClass( "ui-accordion-content-active" );
322
+ var toHide = this.active.next(),
323
+ data = {
324
+ options: options,
325
+ newHeader: $( [] ),
326
+ oldHeader: options.active,
327
+ newContent: $( [] ),
328
+ oldContent: toHide
329
+ },
330
+ toShow = ( this.active = $( [] ) );
331
+ this._toggle( toShow, toHide, data );
332
+ return;
333
+ }
334
+
335
+ // get the click target
336
+ var clicked = $( event.currentTarget || target ),
337
+ clickedIsActive = clicked[0] === this.active[0];
338
+
339
+ // TODO the option is changed, is that correct?
340
+ // TODO if it is correct, shouldn't that happen after determining that the click is valid?
341
+ options.active = options.collapsible && clickedIsActive ?
342
+ false :
343
+ this.headers.index( clicked );
344
+
345
+ // if animations are still active, or the active header is the target, ignore click
346
+ if ( this.running || ( !options.collapsible && clickedIsActive ) ) {
347
+ return;
348
+ }
349
+
350
+ // switch classes
351
+ this.active
352
+ .removeClass( "ui-state-active ui-corner-top" )
353
+ .addClass( "ui-state-default ui-corner-all" )
354
+ .children( ".ui-icon" )
355
+ .removeClass( options.icons.headerSelected )
356
+ .addClass( options.icons.header );
357
+ if ( !clickedIsActive ) {
358
+ clicked
359
+ .removeClass( "ui-state-default ui-corner-all" )
360
+ .addClass( "ui-state-active ui-corner-top" )
361
+ .children( ".ui-icon" )
362
+ .removeClass( options.icons.header )
363
+ .addClass( options.icons.headerSelected );
364
+ clicked
365
+ .next()
366
+ .addClass( "ui-accordion-content-active" );
367
+ }
368
+
369
+ // find elements to show and hide
370
+ var toShow = clicked.next(),
371
+ toHide = this.active.next(),
372
+ data = {
373
+ options: options,
374
+ newHeader: clickedIsActive && options.collapsible ? $([]) : clicked,
375
+ oldHeader: this.active,
376
+ newContent: clickedIsActive && options.collapsible ? $([]) : toShow,
377
+ oldContent: toHide
378
+ },
379
+ down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );
380
+
381
+ this.active = clickedIsActive ? $([]) : clicked;
382
+ this._toggle( toShow, toHide, data, clickedIsActive, down );
383
+
384
+ return;
385
+ },
386
+
387
+ _toggle: function( toShow, toHide, data, clickedIsActive, down ) {
388
+ var self = this,
389
+ options = self.options;
390
+
391
+ self.toShow = toShow;
392
+ self.toHide = toHide;
393
+ self.data = data;
394
+
395
+ var complete = function() {
396
+ if ( !self ) {
397
+ return;
398
+ }
399
+ return self._completed.apply( self, arguments );
400
+ };
401
+
402
+ // trigger changestart event
403
+ self._trigger( "changestart", null, self.data );
404
+
405
+ // count elements to animate
406
+ self.running = toHide.size() === 0 ? toShow.size() : toHide.size();
407
+
408
+ if ( options.animated ) {
409
+ var animOptions = {};
410
+
411
+ if ( options.collapsible && clickedIsActive ) {
412
+ animOptions = {
413
+ toShow: $( [] ),
414
+ toHide: toHide,
415
+ complete: complete,
416
+ down: down,
417
+ autoHeight: options.autoHeight || options.fillSpace
418
+ };
419
+ } else {
420
+ animOptions = {
421
+ toShow: toShow,
422
+ toHide: toHide,
423
+ complete: complete,
424
+ down: down,
425
+ autoHeight: options.autoHeight || options.fillSpace
426
+ };
427
+ }
428
+
429
+ if ( !options.proxied ) {
430
+ options.proxied = options.animated;
431
+ }
432
+
433
+ if ( !options.proxiedDuration ) {
434
+ options.proxiedDuration = options.duration;
435
+ }
436
+
437
+ options.animated = $.isFunction( options.proxied ) ?
438
+ options.proxied( animOptions ) :
439
+ options.proxied;
440
+
441
+ options.duration = $.isFunction( options.proxiedDuration ) ?
442
+ options.proxiedDuration( animOptions ) :
443
+ options.proxiedDuration;
444
+
445
+ var animations = $.ui.accordion.animations,
446
+ duration = options.duration,
447
+ easing = options.animated;
448
+
449
+ if ( easing && !animations[ easing ] && !$.easing[ easing ] ) {
450
+ easing = "slide";
451
+ }
452
+ if ( !animations[ easing ] ) {
453
+ animations[ easing ] = function( options ) {
454
+ this.slide( options, {
455
+ easing: easing,
456
+ duration: duration || 700
457
+ });
458
+ };
459
+ }
460
+
461
+ animations[ easing ]( animOptions );
462
+ } else {
463
+ if ( options.collapsible && clickedIsActive ) {
464
+ toShow.toggle();
465
+ } else {
466
+ toHide.hide();
467
+ toShow.show();
468
+ }
469
+
470
+ complete( true );
471
+ }
472
+
473
+ // TODO assert that the blur and focus triggers are really necessary, remove otherwise
474
+ toHide.prev()
475
+ .attr({
476
+ "aria-expanded": "false",
477
+ tabIndex: -1
478
+ })
479
+ .blur();
480
+ toShow.prev()
481
+ .attr({
482
+ "aria-expanded": "true",
483
+ tabIndex: 0
484
+ })
485
+ .focus();
486
+ },
487
+
488
+ _completed: function( cancel ) {
489
+ this.running = cancel ? 0 : --this.running;
490
+ if ( this.running ) {
491
+ return;
492
+ }
493
+
494
+ if ( this.options.clearStyle ) {
495
+ this.toShow.add( this.toHide ).css({
496
+ height: "",
497
+ overflow: ""
498
+ });
499
+ }
500
+
501
+ // other classes are removed before the animation; this one needs to stay until completed
502
+ this.toHide.removeClass( "ui-accordion-content-active" );
503
+
504
+ this._trigger( "change", null, this.data );
505
+ }
506
+ });
507
+
508
+ $.extend( $.ui.accordion, {
509
+ version: "1.8.7",
510
+ animations: {
511
+ slide: function( options, additions ) {
512
+ options = $.extend({
513
+ easing: "swing",
514
+ duration: 300
515
+ }, options, additions );
516
+ if ( !options.toHide.size() ) {
517
+ options.toShow.animate({
518
+ height: "show",
519
+ paddingTop: "show",
520
+ paddingBottom: "show"
521
+ }, options );
522
+ return;
523
+ }
524
+ if ( !options.toShow.size() ) {
525
+ options.toHide.animate({
526
+ height: "hide",
527
+ paddingTop: "hide",
528
+ paddingBottom: "hide"
529
+ }, options );
530
+ return;
531
+ }
532
+ var overflow = options.toShow.css( "overflow" ),
533
+ percentDone = 0,
534
+ showProps = {},
535
+ hideProps = {},
536
+ fxAttrs = [ "height", "paddingTop", "paddingBottom" ],
537
+ originalWidth;
538
+ // fix width before calculating height of hidden element
539
+ var s = options.toShow;
540
+ originalWidth = s[0].style.width;
541
+ s.width( parseInt( s.parent().width(), 10 )
542
+ - parseInt( s.css( "paddingLeft" ), 10 )
543
+ - parseInt( s.css( "paddingRight" ), 10 )
544
+ - ( parseInt( s.css( "borderLeftWidth" ), 10 ) || 0 )
545
+ - ( parseInt( s.css( "borderRightWidth" ), 10) || 0 ) );
546
+
547
+ $.each( fxAttrs, function( i, prop ) {
548
+ hideProps[ prop ] = "hide";
549
+
550
+ var parts = ( "" + $.css( options.toShow[0], prop ) ).match( /^([\d+-.]+)(.*)$/ );
551
+ showProps[ prop ] = {
552
+ value: parts[ 1 ],
553
+ unit: parts[ 2 ] || "px"
554
+ };
555
+ });
556
+ options.toShow.css({ height: 0, overflow: "hidden" }).show();
557
+ options.toHide
558
+ .filter( ":hidden" )
559
+ .each( options.complete )
560
+ .end()
561
+ .filter( ":visible" )
562
+ .animate( hideProps, {
563
+ step: function( now, settings ) {
564
+ // only calculate the percent when animating height
565
+ // IE gets very inconsistent results when animating elements
566
+ // with small values, which is common for padding
567
+ if ( settings.prop == "height" ) {
568
+ percentDone = ( settings.end - settings.start === 0 ) ? 0 :
569
+ ( settings.now - settings.start ) / ( settings.end - settings.start );
570
+ }
571
+
572
+ options.toShow[ 0 ].style[ settings.prop ] =
573
+ ( percentDone * showProps[ settings.prop ].value )
574
+ + showProps[ settings.prop ].unit;
575
+ },
576
+ duration: options.duration,
577
+ easing: options.easing,
578
+ complete: function() {
579
+ if ( !options.autoHeight ) {
580
+ options.toShow.css( "height", "" );
581
+ }
582
+ options.toShow.css({
583
+ width: originalWidth,
584
+ overflow: overflow
585
+ });
586
+ options.complete();
587
+ }
588
+ });
589
+ },
590
+ bounceslide: function( options ) {
591
+ this.slide( options, {
592
+ easing: options.down ? "easeOutBounce" : "swing",
593
+ duration: options.down ? 1000 : 200
594
+ });
595
+ }
596
+ }
597
+ });
598
+
599
+ })( jQuery );
ui.datepicker.1.7.3.js ADDED
@@ -0,0 +1,1636 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Datepicker 1.7.3
3
+ *
4
+ * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
6
+ * and GPL (GPL-LICENSE.txt) licenses.
7
+ *
8
+ * http://docs.jquery.com/UI/Datepicker
9
+ *
10
+ * Depends:
11
+ * ui.core.js
12
+ */
13
+
14
+ (function($) { // hide the namespace
15
+
16
+ $.extend($.ui, { datepicker: { version: "1.7.3" } });
17
+
18
+ var PROP_NAME = 'datepicker';
19
+
20
+ /* Date picker manager.
21
+ Use the singleton instance of this class, $.datepicker, to interact with the date picker.
22
+ Settings for (groups of) date pickers are maintained in an instance object,
23
+ allowing multiple different settings on the same page. */
24
+
25
+ function Datepicker() {
26
+ this.debug = false; // Change this to true to start debugging
27
+ this._curInst = null; // The current instance in use
28
+ this._keyEvent = false; // If the last event was a key event
29
+ this._disabledInputs = []; // List of date picker inputs that have been disabled
30
+ this._datepickerShowing = false; // True if the popup picker is showing , false if not
31
+ this._inDialog = false; // True if showing within a "dialog", false if not
32
+ this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division
33
+ this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class
34
+ this._appendClass = 'ui-datepicker-append'; // The name of the append marker class
35
+ this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class
36
+ this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class
37
+ this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class
38
+ this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class
39
+ this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class
40
+ this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class
41
+ this.regional = []; // Available regional settings, indexed by language code
42
+ this.regional[''] = { // Default regional settings
43
+ closeText: 'Done', // Display text for close link
44
+ prevText: 'Prev', // Display text for previous month link
45
+ nextText: 'Next', // Display text for next month link
46
+ currentText: 'Today', // Display text for current month link
47
+ monthNames: ['January','February','March','April','May','June',
48
+ 'July','August','September','October','November','December'], // Names of months for drop-down and formatting
49
+ monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting
50
+ dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting
51
+ dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting
52
+ dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday
53
+ dateFormat: 'mm/dd/yy', // See format options on parseDate
54
+ firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
55
+ isRTL: false // True if right-to-left language, false if left-to-right
56
+ };
57
+ this._defaults = { // Global defaults for all the date picker instances
58
+ showOn: 'focus', // 'focus' for popup on focus,
59
+ // 'button' for trigger button, or 'both' for either
60
+ showAnim: 'show', // Name of jQuery animation for popup
61
+ showOptions: {}, // Options for enhanced animations
62
+ defaultDate: null, // Used when field is blank: actual date,
63
+ // +/-number for offset from today, null for today
64
+ appendText: '', // Display text following the input box, e.g. showing the format
65
+ buttonText: '...', // Text for trigger button
66
+ buttonImage: '', // URL for trigger button image
67
+ buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
68
+ hideIfNoPrevNext: false, // True to hide next/previous month links
69
+ // if not applicable, false to just disable them
70
+ navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
71
+ gotoCurrent: false, // True if today link goes back to current selection instead
72
+ changeMonth: false, // True if month can be selected directly, false if only prev/next
73
+ changeYear: false, // True if year can be selected directly, false if only prev/next
74
+ showMonthAfterYear: false, // True if the year select precedes month, false for month then year
75
+ yearRange: '-10:+10', // Range of years to display in drop-down,
76
+ // either relative to current year (-nn:+nn) or absolute (nnnn:nnnn)
77
+ showOtherMonths: false, // True to show dates in other months, false to leave blank
78
+ calculateWeek: this.iso8601Week, // How to calculate the week of the year,
79
+ // takes a Date and returns the number of the week for it
80
+ shortYearCutoff: '+10', // Short year values < this are in the current century,
81
+ // > this are in the previous century,
82
+ // string value starting with '+' for current year + value
83
+ minDate: null, // The earliest selectable date, or null for no limit
84
+ maxDate: null, // The latest selectable date, or null for no limit
85
+ duration: 'normal', // Duration of display/closure
86
+ beforeShowDay: null, // Function that takes a date and returns an array with
87
+ // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',
88
+ // [2] = cell title (optional), e.g. $.datepicker.noWeekends
89
+ beforeShow: null, // Function that takes an input field and
90
+ // returns a set of custom settings for the date picker
91
+ onSelect: null, // Define a callback function when a date is selected
92
+ onChangeMonthYear: null, // Define a callback function when the month or year is changed
93
+ onClose: null, // Define a callback function when the datepicker is closed
94
+ numberOfMonths: 1, // Number of months to show at a time
95
+ showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
96
+ stepMonths: 1, // Number of months to step back/forward
97
+ stepBigMonths: 12, // Number of months to step back/forward for the big links
98
+ altField: '', // Selector for an alternate field to store selected dates into
99
+ altFormat: '', // The date format to use for the alternate field
100
+ constrainInput: true, // The input is constrained by the current date format
101
+ showButtonPanel: false // True to show button panel, false to not show it
102
+ };
103
+ $.extend(this._defaults, this.regional['']);
104
+ this.dpDiv = $('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>');
105
+ }
106
+
107
+ $.extend(Datepicker.prototype, {
108
+ /* Class name added to elements to indicate already configured with a date picker. */
109
+ markerClassName: 'hasDatepicker',
110
+
111
+ /* Debug logging (if enabled). */
112
+ log: function () {
113
+ if (this.debug)
114
+ console.log.apply('', arguments);
115
+ },
116
+
117
+ /* Override the default settings for all instances of the date picker.
118
+ @param settings object - the new settings to use as defaults (anonymous object)
119
+ @return the manager object */
120
+ setDefaults: function(settings) {
121
+ extendRemove(this._defaults, settings || {});
122
+ return this;
123
+ },
124
+
125
+ /* Attach the date picker to a jQuery selection.
126
+ @param target element - the target input field or division or span
127
+ @param settings object - the new settings to use for this date picker instance (anonymous) */
128
+ _attachDatepicker: function(target, settings) {
129
+ // check for settings on the control itself - in namespace 'date:'
130
+ var inlineSettings = null;
131
+ for (var attrName in this._defaults) {
132
+ var attrValue = target.getAttribute('date:' + attrName);
133
+ if (attrValue) {
134
+ inlineSettings = inlineSettings || {};
135
+ try {
136
+ inlineSettings[attrName] = eval(attrValue);
137
+ } catch (err) {
138
+ inlineSettings[attrName] = attrValue;
139
+ }
140
+ }
141
+ }
142
+ var nodeName = target.nodeName.toLowerCase();
143
+ var inline = (nodeName == 'div' || nodeName == 'span');
144
+ if (!target.id)
145
+ target.id = 'dp' + (++this.uuid);
146
+ var inst = this._newInst($(target), inline);
147
+ inst.settings = $.extend({}, settings || {}, inlineSettings || {});
148
+ if (nodeName == 'input') {
149
+ this._connectDatepicker(target, inst);
150
+ } else if (inline) {
151
+ this._inlineDatepicker(target, inst);
152
+ }
153
+ },
154
+
155
+ /* Create a new instance object. */
156
+ _newInst: function(target, inline) {
157
+ var id = target[0].id.replace(/([:\[\]\.])/g, '\\\\$1'); // escape jQuery meta chars
158
+ return {id: id, input: target, // associated target
159
+ selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
160
+ drawMonth: 0, drawYear: 0, // month being drawn
161
+ inline: inline, // is datepicker inline or not
162
+ dpDiv: (!inline ? this.dpDiv : // presentation div
163
+ $('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))};
164
+ },
165
+
166
+ /* Attach the date picker to an input field. */
167
+ _connectDatepicker: function(target, inst) {
168
+ var input = $(target);
169
+ inst.append = $([]);
170
+ inst.trigger = $([]);
171
+ if (input.hasClass(this.markerClassName))
172
+ return;
173
+ var appendText = this._get(inst, 'appendText');
174
+ var isRTL = this._get(inst, 'isRTL');
175
+ if (appendText) {
176
+ inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>');
177
+ input[isRTL ? 'before' : 'after'](inst.append);
178
+ }
179
+ var showOn = this._get(inst, 'showOn');
180
+ if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field
181
+ input.focus(this._showDatepicker);
182
+ if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked
183
+ var buttonText = this._get(inst, 'buttonText');
184
+ var buttonImage = this._get(inst, 'buttonImage');
185
+ inst.trigger = $(this._get(inst, 'buttonImageOnly') ?
186
+ $('<img/>').addClass(this._triggerClass).
187
+ attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
188
+ $('<button type="button"></button>').addClass(this._triggerClass).
189
+ html(buttonImage == '' ? buttonText : $('<img/>').attr(
190
+ { src:buttonImage, alt:buttonText, title:buttonText })));
191
+ input[isRTL ? 'before' : 'after'](inst.trigger);
192
+ inst.trigger.click(function() {
193
+ if ($.datepicker._datepickerShowing && $.datepicker._lastInput == target)
194
+ $.datepicker._hideDatepicker();
195
+ else
196
+ $.datepicker._showDatepicker(target);
197
+ return false;
198
+ });
199
+ }
200
+ input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).
201
+ bind("setData.datepicker", function(event, key, value) {
202
+ inst.settings[key] = value;
203
+ }).bind("getData.datepicker", function(event, key) {
204
+ return this._get(inst, key);
205
+ });
206
+ $.data(target, PROP_NAME, inst);
207
+ },
208
+
209
+ /* Attach an inline date picker to a div. */
210
+ _inlineDatepicker: function(target, inst) {
211
+ var divSpan = $(target);
212
+ if (divSpan.hasClass(this.markerClassName))
213
+ return;
214
+ divSpan.addClass(this.markerClassName).append(inst.dpDiv).
215
+ bind("setData.datepicker", function(event, key, value){
216
+ inst.settings[key] = value;
217
+ }).bind("getData.datepicker", function(event, key){
218
+ return this._get(inst, key);
219
+ });
220
+ $.data(target, PROP_NAME, inst);
221
+ this._setDate(inst, this._getDefaultDate(inst));
222
+ this._updateDatepicker(inst);
223
+ this._updateAlternate(inst);
224
+ },
225
+
226
+ /* Pop-up the date picker in a "dialog" box.
227
+ @param input element - ignored
228
+ @param dateText string - the initial date to display (in the current format)
229
+ @param onSelect function - the function(dateText) to call when a date is selected
230
+ @param settings object - update the dialog date picker instance's settings (anonymous object)
231
+ @param pos int[2] - coordinates for the dialog's position within the screen or
232
+ event - with x/y coordinates or
233
+ leave empty for default (screen centre)
234
+ @return the manager object */
235
+ _dialogDatepicker: function(input, dateText, onSelect, settings, pos) {
236
+ var inst = this._dialogInst; // internal instance
237
+ if (!inst) {
238
+ var id = 'dp' + (++this.uuid);
239
+ this._dialogInput = $('<input type="text" id="' + id +
240
+ '" size="1" style="position: absolute; top: -100px;"/>');
241
+ this._dialogInput.keydown(this._doKeyDown);
242
+ $('body').append(this._dialogInput);
243
+ inst = this._dialogInst = this._newInst(this._dialogInput, false);
244
+ inst.settings = {};
245
+ $.data(this._dialogInput[0], PROP_NAME, inst);
246
+ }
247
+ extendRemove(inst.settings, settings || {});
248
+ this._dialogInput.val(dateText);
249
+
250
+ this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
251
+ if (!this._pos) {
252
+ var browserWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
253
+ var browserHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
254
+ var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
255
+ var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
256
+ this._pos = // should use actual width/height below
257
+ [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
258
+ }
259
+
260
+ // move input on screen for focus, but hidden behind dialog
261
+ this._dialogInput.css('left', this._pos[0] + 'px').css('top', this._pos[1] + 'px');
262
+ inst.settings.onSelect = onSelect;
263
+ this._inDialog = true;
264
+ this.dpDiv.addClass(this._dialogClass);
265
+ this._showDatepicker(this._dialogInput[0]);
266
+ if ($.blockUI)
267
+ $.blockUI(this.dpDiv);
268
+ $.data(this._dialogInput[0], PROP_NAME, inst);
269
+ return this;
270
+ },
271
+
272
+ /* Detach a datepicker from its control.
273
+ @param target element - the target input field or division or span */
274
+ _destroyDatepicker: function(target) {
275
+ var $target = $(target);
276
+ var inst = $.data(target, PROP_NAME);
277
+ if (!$target.hasClass(this.markerClassName)) {
278
+ return;
279
+ }
280
+ var nodeName = target.nodeName.toLowerCase();
281
+ $.removeData(target, PROP_NAME);
282
+ if (nodeName == 'input') {
283
+ inst.append.remove();
284
+ inst.trigger.remove();
285
+ $target.removeClass(this.markerClassName).
286
+ unbind('focus', this._showDatepicker).
287
+ unbind('keydown', this._doKeyDown).
288
+ unbind('keypress', this._doKeyPress);
289
+ } else if (nodeName == 'div' || nodeName == 'span')
290
+ $target.removeClass(this.markerClassName).empty();
291
+ },
292
+
293
+ /* Enable the date picker to a jQuery selection.
294
+ @param target element - the target input field or division or span */
295
+ _enableDatepicker: function(target) {
296
+ var $target = $(target);
297
+ var inst = $.data(target, PROP_NAME);
298
+ if (!$target.hasClass(this.markerClassName)) {
299
+ return;
300
+ }
301
+ var nodeName = target.nodeName.toLowerCase();
302
+ if (nodeName == 'input') {
303
+ target.disabled = false;
304
+ inst.trigger.filter('button').
305
+ each(function() { this.disabled = false; }).end().
306
+ filter('img').css({opacity: '1.0', cursor: ''});
307
+ }
308
+ else if (nodeName == 'div' || nodeName == 'span') {
309
+ var inline = $target.children('.' + this._inlineClass);
310
+ inline.children().removeClass('ui-state-disabled');
311
+ }
312
+ this._disabledInputs = $.map(this._disabledInputs,
313
+ function(value) { return (value == target ? null : value); }); // delete entry
314
+ },
315
+
316
+ /* Disable the date picker to a jQuery selection.
317
+ @param target element - the target input field or division or span */
318
+ _disableDatepicker: function(target) {
319
+ var $target = $(target);
320
+ var inst = $.data(target, PROP_NAME);
321
+ if (!$target.hasClass(this.markerClassName)) {
322
+ return;
323
+ }
324
+ var nodeName = target.nodeName.toLowerCase();
325
+ if (nodeName == 'input') {
326
+ target.disabled = true;
327
+ inst.trigger.filter('button').
328
+ each(function() { this.disabled = true; }).end().
329
+ filter('img').css({opacity: '0.5', cursor: 'default'});
330
+ }
331
+ else if (nodeName == 'div' || nodeName == 'span') {
332
+ var inline = $target.children('.' + this._inlineClass);
333
+ inline.children().addClass('ui-state-disabled');
334
+ }
335
+ this._disabledInputs = $.map(this._disabledInputs,
336
+ function(value) { return (value == target ? null : value); }); // delete entry
337
+ this._disabledInputs[this._disabledInputs.length] = target;
338
+ },
339
+
340
+ /* Is the first field in a jQuery collection disabled as a datepicker?
341
+ @param target element - the target input field or division or span
342
+ @return boolean - true if disabled, false if enabled */
343
+ _isDisabledDatepicker: function(target) {
344
+ if (!target) {
345
+ return false;
346
+ }
347
+ for (var i = 0; i < this._disabledInputs.length; i++) {
348
+ if (this._disabledInputs[i] == target)
349
+ return true;
350
+ }
351
+ return false;
352
+ },
353
+
354
+ /* Retrieve the instance data for the target control.
355
+ @param target element - the target input field or division or span
356
+ @return object - the associated instance data
357
+ @throws error if a jQuery problem getting data */
358
+ _getInst: function(target) {
359
+ try {
360
+ return $.data(target, PROP_NAME);
361
+ }
362
+ catch (err) {
363
+ throw 'Missing instance data for this datepicker';
364
+ }
365
+ },
366
+
367
+ /* Update or retrieve the settings for a date picker attached to an input field or division.
368
+ @param target element - the target input field or division or span
369
+ @param name object - the new settings to update or
370
+ string - the name of the setting to change or retrieve,
371
+ when retrieving also 'all' for all instance settings or
372
+ 'defaults' for all global defaults
373
+ @param value any - the new value for the setting
374
+ (omit if above is an object or to retrieve a value) */
375
+ _optionDatepicker: function(target, name, value) {
376
+ var inst = this._getInst(target);
377
+ if (arguments.length == 2 && typeof name == 'string') {
378
+ return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :
379
+ (inst ? (name == 'all' ? $.extend({}, inst.settings) :
380
+ this._get(inst, name)) : null));
381
+ }
382
+ var settings = name || {};
383
+ if (typeof name == 'string') {
384
+ settings = {};
385
+ settings[name] = value;
386
+ }
387
+ if (inst) {
388
+ if (this._curInst == inst) {
389
+ this._hideDatepicker(null);
390
+ }
391
+ var date = this._getDateDatepicker(target);
392
+ extendRemove(inst.settings, settings);
393
+ this._setDateDatepicker(target, date);
394
+ this._updateDatepicker(inst);
395
+ }
396
+ },
397
+
398
+ // change method deprecated
399
+ _changeDatepicker: function(target, name, value) {
400
+ this._optionDatepicker(target, name, value);
401
+ },
402
+
403
+ /* Redraw the date picker attached to an input field or division.
404
+ @param target element - the target input field or division or span */
405
+ _refreshDatepicker: function(target) {
406
+ var inst = this._getInst(target);
407
+ if (inst) {
408
+ this._updateDatepicker(inst);
409
+ }
410
+ },
411
+
412
+ /* Set the dates for a jQuery selection.
413
+ @param target element - the target input field or division or span
414
+ @param date Date - the new date
415
+ @param endDate Date - the new end date for a range (optional) */
416
+ _setDateDatepicker: function(target, date, endDate) {
417
+ var inst = this._getInst(target);
418
+ if (inst) {
419
+ this._setDate(inst, date, endDate);
420
+ this._updateDatepicker(inst);
421
+ this._updateAlternate(inst);
422
+ }
423
+ },
424
+
425
+ /* Get the date(s) for the first entry in a jQuery selection.
426
+ @param target element - the target input field or division or span
427
+ @return Date - the current date or
428
+ Date[2] - the current dates for a range */
429
+ _getDateDatepicker: function(target) {
430
+ var inst = this._getInst(target);
431
+ if (inst && !inst.inline)
432
+ this._setDateFromField(inst);
433
+ return (inst ? this._getDate(inst) : null);
434
+ },
435
+
436
+ /* Handle keystrokes. */
437
+ _doKeyDown: function(event) {
438
+ var inst = $.datepicker._getInst(event.target);
439
+ var handled = true;
440
+ var isRTL = inst.dpDiv.is('.ui-datepicker-rtl');
441
+ inst._keyEvent = true;
442
+ if ($.datepicker._datepickerShowing)
443
+ switch (event.keyCode) {
444
+ case 9: $.datepicker._hideDatepicker(null, '');
445
+ break; // hide on tab out
446
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass +
447
+ ', td.' + $.datepicker._currentClass, inst.dpDiv);
448
+ if (sel[0])
449
+ $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
450
+ else
451
+ $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration'));
452
+ return false; // don't submit the form
453
+ break; // select the value on enter
454
+ case 27: $.datepicker._hideDatepicker(null, $.datepicker._get(inst, 'duration'));
455
+ break; // hide on escape
456
+ case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
457
+ -$.datepicker._get(inst, 'stepBigMonths') :
458
+ -$.datepicker._get(inst, 'stepMonths')), 'M');
459
+ break; // previous month/year on page up/+ ctrl
460
+ case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
461
+ +$.datepicker._get(inst, 'stepBigMonths') :
462
+ +$.datepicker._get(inst, 'stepMonths')), 'M');
463
+ break; // next month/year on page down/+ ctrl
464
+ case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);
465
+ handled = event.ctrlKey || event.metaKey;
466
+ break; // clear on ctrl or command +end
467
+ case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);
468
+ handled = event.ctrlKey || event.metaKey;
469
+ break; // current on ctrl or command +home
470
+ case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');
471
+ handled = event.ctrlKey || event.metaKey;
472
+ // -1 day on ctrl or command +left
473
+ if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
474
+ -$.datepicker._get(inst, 'stepBigMonths') :
475
+ -$.datepicker._get(inst, 'stepMonths')), 'M');
476
+ // next month/year on alt +left on Mac
477
+ break;
478
+ case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');
479
+ handled = event.ctrlKey || event.metaKey;
480
+ break; // -1 week on ctrl or command +up
481
+ case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');
482
+ handled = event.ctrlKey || event.metaKey;
483
+ // +1 day on ctrl or command +right
484
+ if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
485
+ +$.datepicker._get(inst, 'stepBigMonths') :
486
+ +$.datepicker._get(inst, 'stepMonths')), 'M');
487
+ // next month/year on alt +right
488
+ break;
489
+ case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');
490
+ handled = event.ctrlKey || event.metaKey;
491
+ break; // +1 week on ctrl or command +down
492
+ default: handled = false;
493
+ }
494
+ else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home
495
+ $.datepicker._showDatepicker(this);
496
+ else {
497
+ handled = false;
498
+ }
499
+ if (handled) {
500
+ event.preventDefault();
501
+ event.stopPropagation();
502
+ }
503
+ },
504
+
505
+ /* Filter entered characters - based on date format. */
506
+ _doKeyPress: function(event) {
507
+ var inst = $.datepicker._getInst(event.target);
508
+ if ($.datepicker._get(inst, 'constrainInput')) {
509
+ var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));
510
+ var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);
511
+ return event.ctrlKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);
512
+ }
513
+ },
514
+
515
+ /* Pop-up the date picker for a given input field.
516
+ @param input element - the input field attached to the date picker or
517
+ event - if triggered by focus */
518
+ _showDatepicker: function(input) {
519
+ input = input.target || input;
520
+ if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger
521
+ input = $('input', input.parentNode)[0];
522
+ if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here
523
+ return;
524
+ var inst = $.datepicker._getInst(input);
525
+ var beforeShow = $.datepicker._get(inst, 'beforeShow');
526
+ extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {}));
527
+ $.datepicker._hideDatepicker(null, '');
528
+ $.datepicker._lastInput = input;
529
+ $.datepicker._setDateFromField(inst);
530
+ if ($.datepicker._inDialog) // hide cursor
531
+ input.value = '';
532
+ if (!$.datepicker._pos) { // position below input
533
+ $.datepicker._pos = $.datepicker._findPos(input);
534
+ $.datepicker._pos[1] += input.offsetHeight; // add the height
535
+ }
536
+ var isFixed = false;
537
+ $(input).parents().each(function() {
538
+ isFixed |= $(this).css('position') == 'fixed';
539
+ return !isFixed;
540
+ });
541
+ if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled
542
+ $.datepicker._pos[0] -= document.documentElement.scrollLeft;
543
+ $.datepicker._pos[1] -= document.documentElement.scrollTop;
544
+ }
545
+ var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
546
+ $.datepicker._pos = null;
547
+ inst.rangeStart = null;
548
+ // determine sizing offscreen
549
+ inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});
550
+ $.datepicker._updateDatepicker(inst);
551
+ // fix width for dynamic number of date pickers
552
+ // and adjust position before showing
553
+ offset = $.datepicker._checkOffset(inst, offset, isFixed);
554
+ inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
555
+ 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',
556
+ left: offset.left + 'px', top: offset.top + 'px'});
557
+ if (!inst.inline) {
558
+ var showAnim = $.datepicker._get(inst, 'showAnim') || 'show';
559
+ var duration = $.datepicker._get(inst, 'duration');
560
+ var postProcess = function() {
561
+ $.datepicker._datepickerShowing = true;
562
+ if ($.browser.msie && parseInt($.browser.version,10) < 7) // fix IE < 7 select problems
563
+ $('iframe.ui-datepicker-cover').css({width: inst.dpDiv.width() + 4,
564
+ height: inst.dpDiv.height() + 4});
565
+ };
566
+ if ($.effects && $.effects[showAnim])
567
+ inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
568
+ else
569
+ inst.dpDiv[showAnim](duration, postProcess);
570
+ if (duration == '')
571
+ postProcess();
572
+ if (inst.input[0].type != 'hidden')
573
+ inst.input[0].focus();
574
+ $.datepicker._curInst = inst;
575
+ }
576
+ },
577
+
578
+ /* Generate the date picker content. */
579
+ _updateDatepicker: function(inst) {
580
+ var dims = {width: inst.dpDiv.width() + 4,
581
+ height: inst.dpDiv.height() + 4};
582
+ var self = this;
583
+ inst.dpDiv.empty().append(this._generateHTML(inst))
584
+ .find('iframe.ui-datepicker-cover').
585
+ css({width: dims.width, height: dims.height})
586
+ .end()
587
+ .find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a')
588
+ .bind('mouseout', function(){
589
+ $(this).removeClass('ui-state-hover');
590
+ if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');
591
+ if(this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');
592
+ })
593
+ .bind('mouseover', function(){
594
+ if (!self._isDisabledDatepicker( inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) {
595
+ $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');
596
+ $(this).addClass('ui-state-hover');
597
+ if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');
598
+ if(this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');
599
+ }
600
+ })
601
+ .end()
602
+ .find('.' + this._dayOverClass + ' a')
603
+ .trigger('mouseover')
604
+ .end();
605
+ var numMonths = this._getNumberOfMonths(inst);
606
+ var cols = numMonths[1];
607
+ var width = 17;
608
+ if (cols > 1) {
609
+ inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');
610
+ } else {
611
+ inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');
612
+ }
613
+ inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +
614
+ 'Class']('ui-datepicker-multi');
615
+ inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +
616
+ 'Class']('ui-datepicker-rtl');
617
+ if (inst.input && inst.input[0].type != 'hidden' && inst == $.datepicker._curInst)
618
+ $(inst.input[0]).focus();
619
+ },
620
+
621
+ /* Check positioning to remain on screen. */
622
+ _checkOffset: function(inst, offset, isFixed) {
623
+ var dpWidth = inst.dpDiv.outerWidth();
624
+ var dpHeight = inst.dpDiv.outerHeight();
625
+ var inputWidth = inst.input ? inst.input.outerWidth() : 0;
626
+ var inputHeight = inst.input ? inst.input.outerHeight() : 0;
627
+ var viewWidth = (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) + $(document).scrollLeft();
628
+ var viewHeight = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) + $(document).scrollTop();
629
+
630
+ offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);
631
+ offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;
632
+ offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
633
+
634
+ // now check if datepicker is showing outside window viewport - move to a better place if so.
635
+ offset.left -= (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0;
636
+ offset.top -= (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(offset.top + dpHeight + inputHeight*2 - viewHeight) : 0;
637
+
638
+ return offset;
639
+ },
640
+
641
+ /* Find an object's position on the screen. */
642
+ _findPos: function(obj) {
643
+ while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) {
644
+ obj = obj.nextSibling;
645
+ }
646
+ var position = $(obj).offset();
647
+ return [position.left, position.top];
648
+ },
649
+
650
+ /* Hide the date picker from view.
651
+ @param input element - the input field attached to the date picker
652
+ @param duration string - the duration over which to close the date picker */
653
+ _hideDatepicker: function(input, duration) {
654
+ var inst = this._curInst;
655
+ if (!inst || (input && inst != $.data(input, PROP_NAME)))
656
+ return;
657
+ if (inst.stayOpen)
658
+ this._selectDate('#' + inst.id, this._formatDate(inst,
659
+ inst.currentDay, inst.currentMonth, inst.currentYear));
660
+ inst.stayOpen = false;
661
+ if (this._datepickerShowing) {
662
+ duration = (duration != null ? duration : this._get(inst, 'duration'));
663
+ var showAnim = this._get(inst, 'showAnim');
664
+ var postProcess = function() {
665
+ $.datepicker._tidyDialog(inst);
666
+ };
667
+ if (duration != '' && $.effects && $.effects[showAnim])
668
+ inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'),
669
+ duration, postProcess);
670
+ else
671
+ inst.dpDiv[(duration == '' ? 'hide' : (showAnim == 'slideDown' ? 'slideUp' :
672
+ (showAnim == 'fadeIn' ? 'fadeOut' : 'hide')))](duration, postProcess);
673
+ if (duration == '')
674
+ this._tidyDialog(inst);
675
+ var onClose = this._get(inst, 'onClose');
676
+ if (onClose)
677
+ onClose.apply((inst.input ? inst.input[0] : null),
678
+ [(inst.input ? inst.input.val() : ''), inst]); // trigger custom callback
679
+ this._datepickerShowing = false;
680
+ this._lastInput = null;
681
+ if (this._inDialog) {
682
+ this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });
683
+ if ($.blockUI) {
684
+ $.unblockUI();
685
+ $('body').append(this.dpDiv);
686
+ }
687
+ }
688
+ this._inDialog = false;
689
+ }
690
+ this._curInst = null;
691
+ },
692
+
693
+ /* Tidy up after a dialog display. */
694
+ _tidyDialog: function(inst) {
695
+ inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');
696
+ },
697
+
698
+ /* Close date picker if clicked elsewhere. */
699
+ _checkExternalClick: function(event) {
700
+ if (!$.datepicker._curInst)
701
+ return;
702
+ var $target = $(event.target);
703
+ if (($target.parents('#' + $.datepicker._mainDivId).length == 0) &&
704
+ !$target.hasClass($.datepicker.markerClassName) &&
705
+ !$target.hasClass($.datepicker._triggerClass) &&
706
+ $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI))
707
+ $.datepicker._hideDatepicker(null, '');
708
+ },
709
+
710
+ /* Adjust one of the date sub-fields. */
711
+ _adjustDate: function(id, offset, period) {
712
+ var target = $(id);
713
+ var inst = this._getInst(target[0]);
714
+ if (this._isDisabledDatepicker(target[0])) {
715
+ return;
716
+ }
717
+ this._adjustInstDate(inst, offset +
718
+ (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning
719
+ period);
720
+ this._updateDatepicker(inst);
721
+ },
722
+
723
+ /* Action for current link. */
724
+ _gotoToday: function(id) {
725
+ var target = $(id);
726
+ var inst = this._getInst(target[0]);
727
+ if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
728
+ inst.selectedDay = inst.currentDay;
729
+ inst.drawMonth = inst.selectedMonth = inst.currentMonth;
730
+ inst.drawYear = inst.selectedYear = inst.currentYear;
731
+ }
732
+ else {
733
+ var date = new Date();
734
+ inst.selectedDay = date.getDate();
735
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
736
+ inst.drawYear = inst.selectedYear = date.getFullYear();
737
+ }
738
+ this._notifyChange(inst);
739
+ this._adjustDate(target);
740
+ },
741
+
742
+ /* Action for selecting a new month/year. */
743
+ _selectMonthYear: function(id, select, period) {
744
+ var target = $(id);
745
+ var inst = this._getInst(target[0]);
746
+ inst._selectingMonthYear = false;
747
+ inst['selected' + (period == 'M' ? 'Month' : 'Year')] =
748
+ inst['draw' + (period == 'M' ? 'Month' : 'Year')] =
749
+ parseInt(select.options[select.selectedIndex].value,10);
750
+ this._notifyChange(inst);
751
+ this._adjustDate(target);
752
+ },
753
+
754
+ /* Restore input focus after not changing month/year. */
755
+ _clickMonthYear: function(id) {
756
+ var target = $(id);
757
+ var inst = this._getInst(target[0]);
758
+ if (inst.input && inst._selectingMonthYear && !$.browser.msie)
759
+ inst.input[0].focus();
760
+ inst._selectingMonthYear = !inst._selectingMonthYear;
761
+ },
762
+
763
+ /* Action for selecting a day. */
764
+ _selectDay: function(id, month, year, td) {
765
+ var target = $(id);
766
+ if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
767
+ return;
768
+ }
769
+ var inst = this._getInst(target[0]);
770
+ inst.selectedDay = inst.currentDay = $('a', td).html();
771
+ inst.selectedMonth = inst.currentMonth = month;
772
+ inst.selectedYear = inst.currentYear = year;
773
+ if (inst.stayOpen) {
774
+ inst.endDay = inst.endMonth = inst.endYear = null;
775
+ }
776
+ this._selectDate(id, this._formatDate(inst,
777
+ inst.currentDay, inst.currentMonth, inst.currentYear));
778
+ if (inst.stayOpen) {
779
+ inst.rangeStart = this._daylightSavingAdjust(
780
+ new Date(inst.currentYear, inst.currentMonth, inst.currentDay));
781
+ this._updateDatepicker(inst);
782
+ }
783
+ },
784
+
785
+ /* Erase the input field and hide the date picker. */
786
+ _clearDate: function(id) {
787
+ var target = $(id);
788
+ var inst = this._getInst(target[0]);
789
+ inst.stayOpen = false;
790
+ inst.endDay = inst.endMonth = inst.endYear = inst.rangeStart = null;
791
+ this._selectDate(target, '');
792
+ },
793
+
794
+ /* Update the input field with the selected date. */
795
+ _selectDate: function(id, dateStr) {
796
+ var target = $(id);
797
+ var inst = this._getInst(target[0]);
798
+ dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
799
+ if (inst.input)
800
+ inst.input.val(dateStr);
801
+ this._updateAlternate(inst);
802
+ var onSelect = this._get(inst, 'onSelect');
803
+ if (onSelect)
804
+ onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback
805
+ else if (inst.input)
806
+ inst.input.trigger('change'); // fire the change event
807
+ if (inst.inline)
808
+ this._updateDatepicker(inst);
809
+ else if (!inst.stayOpen) {
810
+ this._hideDatepicker(null, this._get(inst, 'duration'));
811
+ this._lastInput = inst.input[0];
812
+ if (typeof(inst.input[0]) != 'object')
813
+ inst.input[0].focus(); // restore focus
814
+ this._lastInput = null;
815
+ }
816
+ },
817
+
818
+ /* Update any alternate field to synchronise with the main field. */
819
+ _updateAlternate: function(inst) {
820
+ var altField = this._get(inst, 'altField');
821
+ if (altField) { // update alternate field too
822
+ var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');
823
+ var date = this._getDate(inst);
824
+ dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
825
+ $(altField).each(function() { $(this).val(dateStr); });
826
+ }
827
+ },
828
+
829
+ /* Set as beforeShowDay function to prevent selection of weekends.
830
+ @param date Date - the date to customise
831
+ @return [boolean, string] - is this date selectable?, what is its CSS class? */
832
+ noWeekends: function(date) {
833
+ var day = date.getDay();
834
+ return [(day > 0 && day < 6), ''];
835
+ },
836
+
837
+ /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
838
+ @param date Date - the date to get the week for
839
+ @return number - the number of the week within the year that contains this date */
840
+ iso8601Week: function(date) {
841
+ var checkDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
842
+ var firstMon = new Date(checkDate.getFullYear(), 1 - 1, 4); // First week always contains 4 Jan
843
+ var firstDay = firstMon.getDay() || 7; // Day of week: Mon = 1, ..., Sun = 7
844
+ firstMon.setDate(firstMon.getDate() + 1 - firstDay); // Preceding Monday
845
+ if (firstDay < 4 && checkDate < firstMon) { // Adjust first three days in year if necessary
846
+ checkDate.setDate(checkDate.getDate() - 3); // Generate for previous year
847
+ return $.datepicker.iso8601Week(checkDate);
848
+ } else if (checkDate > new Date(checkDate.getFullYear(), 12 - 1, 28)) { // Check last three days in year
849
+ firstDay = new Date(checkDate.getFullYear() + 1, 1 - 1, 4).getDay() || 7;
850
+ if (firstDay > 4 && (checkDate.getDay() || 7) < firstDay - 3) { // Adjust if necessary
851
+ return 1;
852
+ }
853
+ }
854
+ return Math.floor(((checkDate - firstMon) / 86400000) / 7) + 1; // Weeks to given date
855
+ },
856
+
857
+ /* Parse a string value into a date object.
858
+ See formatDate below for the possible formats.
859
+
860
+ @param format string - the expected format of the date
861
+ @param value string - the date in the above format
862
+ @param settings Object - attributes include:
863
+ shortYearCutoff number - the cutoff year for determining the century (optional)
864
+ dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
865
+ dayNames string[7] - names of the days from Sunday (optional)
866
+ monthNamesShort string[12] - abbreviated names of the months (optional)
867
+ monthNames string[12] - names of the months (optional)
868
+ @return Date - the extracted date value or null if value is blank */
869
+ parseDate: function (format, value, settings) {
870
+ if (format == null || value == null)
871
+ throw 'Invalid arguments';
872
+ value = (typeof value == 'object' ? value.toString() : value + '');
873
+ if (value == '')
874
+ return null;
875
+ var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;
876
+ var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
877
+ var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
878
+ var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
879
+ var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
880
+ var year = -1;
881
+ var month = -1;
882
+ var day = -1;
883
+ var doy = -1;
884
+ var literal = false;
885
+ // Check whether a format character is doubled
886
+ var lookAhead = function(match) {
887
+ var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
888
+ if (matches)
889
+ iFormat++;
890
+ return matches;
891
+ };
892
+ // Extract a number from the string value
893
+ var getNumber = function(match) {
894
+ lookAhead(match);
895
+ var origSize = (match == '@' ? 14 : (match == 'y' ? 4 : (match == 'o' ? 3 : 2)));
896
+ var size = origSize;
897
+ var num = 0;
898
+ while (size > 0 && iValue < value.length &&
899
+ value.charAt(iValue) >= '0' && value.charAt(iValue) <= '9') {
900
+ num = num * 10 + parseInt(value.charAt(iValue++),10);
901
+ size--;
902
+ }
903
+ if (size == origSize)
904
+ throw 'Missing number at position ' + iValue;
905
+ return num;
906
+ };
907
+ // Extract a name from the string value and convert to an index
908
+ var getName = function(match, shortNames, longNames) {
909
+ var names = (lookAhead(match) ? longNames : shortNames);
910
+ var size = 0;
911
+ for (var j = 0; j < names.length; j++)
912
+ size = Math.max(size, names[j].length);
913
+ var name = '';
914
+ var iInit = iValue;
915
+ while (size > 0 && iValue < value.length) {
916
+ name += value.charAt(iValue++);
917
+ for (var i = 0; i < names.length; i++)
918
+ if (name == names[i])
919
+ return i + 1;
920
+ size--;
921
+ }
922
+ throw 'Unknown name at position ' + iInit;
923
+ };
924
+ // Confirm that a literal character matches the string value
925
+ var checkLiteral = function() {
926
+ if (value.charAt(iValue) != format.charAt(iFormat))
927
+ throw 'Unexpected literal at position ' + iValue;
928
+ iValue++;
929
+ };
930
+ var iValue = 0;
931
+ for (var iFormat = 0; iFormat < format.length; iFormat++) {
932
+ if (literal)
933
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
934
+ literal = false;
935
+ else
936
+ checkLiteral();
937
+ else
938
+ switch (format.charAt(iFormat)) {
939
+ case 'd':
940
+ day = getNumber('d');
941
+ break;
942
+ case 'D':
943
+ getName('D', dayNamesShort, dayNames);
944
+ break;
945
+ case 'o':
946
+ doy = getNumber('o');
947
+ break;
948
+ case 'm':
949
+ month = getNumber('m');
950
+ break;
951
+ case 'M':
952
+ month = getName('M', monthNamesShort, monthNames);
953
+ break;
954
+ case 'y':
955
+ year = getNumber('y');
956
+ break;
957
+ case '@':
958
+ var date = new Date(getNumber('@'));
959
+ year = date.getFullYear();
960
+ month = date.getMonth() + 1;
961
+ day = date.getDate();
962
+ break;
963
+ case "'":
964
+ if (lookAhead("'"))
965
+ checkLiteral();
966
+ else
967
+ literal = true;
968
+ break;
969
+ default:
970
+ checkLiteral();
971
+ }
972
+ }
973
+ if (year == -1)
974
+ year = new Date().getFullYear();
975
+ else if (year < 100)
976
+ year += new Date().getFullYear() - new Date().getFullYear() % 100 +
977
+ (year <= shortYearCutoff ? 0 : -100);
978
+ if (doy > -1) {
979
+ month = 1;
980
+ day = doy;
981
+ do {
982
+ var dim = this._getDaysInMonth(year, month - 1);
983
+ if (day <= dim)
984
+ break;
985
+ month++;
986
+ day -= dim;
987
+ } while (true);
988
+ }
989
+ var date = this._daylightSavingAdjust(new Date(year, month - 1, day));
990
+ if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)
991
+ throw 'Invalid date'; // E.g. 31/02/*
992
+ return date;
993
+ },
994
+
995
+ /* Standard date formats. */
996
+ ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)
997
+ COOKIE: 'D, dd M yy',
998
+ ISO_8601: 'yy-mm-dd',
999
+ RFC_822: 'D, d M y',
1000
+ RFC_850: 'DD, dd-M-y',
1001
+ RFC_1036: 'D, d M y',
1002
+ RFC_1123: 'D, d M yy',
1003
+ RFC_2822: 'D, d M yy',
1004
+ RSS: 'D, d M y', // RFC 822
1005
+ TIMESTAMP: '@',
1006
+ W3C: 'yy-mm-dd', // ISO 8601
1007
+
1008
+ /* Format a date object into a string value.
1009
+ The format can be combinations of the following:
1010
+ d - day of month (no leading zero)
1011
+ dd - day of month (two digit)
1012
+ o - day of year (no leading zeros)
1013
+ oo - day of year (three digit)
1014
+ D - day name short
1015
+ DD - day name long
1016
+ m - month of year (no leading zero)
1017
+ mm - month of year (two digit)
1018
+ M - month name short
1019
+ MM - month name long
1020
+ y - year (two digit)
1021
+ yy - year (four digit)
1022
+ @ - Unix timestamp (ms since 01/01/1970)
1023
+ '...' - literal text
1024
+ '' - single quote
1025
+
1026
+ @param format string - the desired format of the date
1027
+ @param date Date - the date value to format
1028
+ @param settings Object - attributes include:
1029
+ dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
1030
+ dayNames string[7] - names of the days from Sunday (optional)
1031
+ monthNamesShort string[12] - abbreviated names of the months (optional)
1032
+ monthNames string[12] - names of the months (optional)
1033
+ @return string - the date in the above format */
1034
+ formatDate: function (format, date, settings) {
1035
+ if (!date)
1036
+ return '';
1037
+ var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
1038
+ var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
1039
+ var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
1040
+ var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
1041
+ // Check whether a format character is doubled
1042
+ var lookAhead = function(match) {
1043
+ var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
1044
+ if (matches)
1045
+ iFormat++;
1046
+ return matches;
1047
+ };
1048
+ // Format a number, with leading zero if necessary
1049
+ var formatNumber = function(match, value, len) {
1050
+ var num = '' + value;
1051
+ if (lookAhead(match))
1052
+ while (num.length < len)
1053
+ num = '0' + num;
1054
+ return num;
1055
+ };
1056
+ // Format a name, short or long as requested
1057
+ var formatName = function(match, value, shortNames, longNames) {
1058
+ return (lookAhead(match) ? longNames[value] : shortNames[value]);
1059
+ };
1060
+ var output = '';
1061
+ var literal = false;
1062
+ if (date)
1063
+ for (var iFormat = 0; iFormat < format.length; iFormat++) {
1064
+ if (literal)
1065
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
1066
+ literal = false;
1067
+ else
1068
+ output += format.charAt(iFormat);
1069
+ else
1070
+ switch (format.charAt(iFormat)) {
1071
+ case 'd':
1072
+ output += formatNumber('d', date.getDate(), 2);
1073
+ break;
1074
+ case 'D':
1075
+ output += formatName('D', date.getDay(), dayNamesShort, dayNames);
1076
+ break;
1077
+ case 'o':
1078
+ var doy = date.getDate();
1079
+ for (var m = date.getMonth() - 1; m >= 0; m--)
1080
+ doy += this._getDaysInMonth(date.getFullYear(), m);
1081
+ output += formatNumber('o', doy, 3);
1082
+ break;
1083
+ case 'm':
1084
+ output += formatNumber('m', date.getMonth() + 1, 2);
1085
+ break;
1086
+ case 'M':
1087
+ output += formatName('M', date.getMonth(), monthNamesShort, monthNames);
1088
+ break;
1089
+ case 'y':
1090
+ output += (lookAhead('y') ? date.getFullYear() :
1091
+ (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);
1092
+ break;
1093
+ case '@':
1094
+ output += date.getTime();
1095
+ break;
1096
+ case "'":
1097
+ if (lookAhead("'"))
1098
+ output += "'";
1099
+ else
1100
+ literal = true;
1101
+ break;
1102
+ default:
1103
+ output += format.charAt(iFormat);
1104
+ }
1105
+ }
1106
+ return output;
1107
+ },
1108
+
1109
+ /* Extract all possible characters from the date format. */
1110
+ _possibleChars: function (format) {
1111
+ var chars = '';
1112
+ var literal = false;
1113
+ for (var iFormat = 0; iFormat < format.length; iFormat++)
1114
+ if (literal)
1115
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
1116
+ literal = false;
1117
+ else
1118
+ chars += format.charAt(iFormat);
1119
+ else
1120
+ switch (format.charAt(iFormat)) {
1121
+ case 'd': case 'm': case 'y': case '@':
1122
+ chars += '0123456789';
1123
+ break;
1124
+ case 'D': case 'M':
1125
+ return null; // Accept anything
1126
+ case "'":
1127
+ if (lookAhead("'"))
1128
+ chars += "'";
1129
+ else
1130
+ literal = true;
1131
+ break;
1132
+ default:
1133
+ chars += format.charAt(iFormat);
1134
+ }
1135
+ return chars;
1136
+ },
1137
+
1138
+ /* Get a setting value, defaulting if necessary. */
1139
+ _get: function(inst, name) {
1140
+ return inst.settings[name] !== undefined ?
1141
+ inst.settings[name] : this._defaults[name];
1142
+ },
1143
+
1144
+ /* Parse existing date and initialise date picker. */
1145
+ _setDateFromField: function(inst) {
1146
+ var dateFormat = this._get(inst, 'dateFormat');
1147
+ var dates = inst.input ? inst.input.val() : null;
1148
+ inst.endDay = inst.endMonth = inst.endYear = null;
1149
+ var date = defaultDate = this._getDefaultDate(inst);
1150
+ var settings = this._getFormatConfig(inst);
1151
+ try {
1152
+ date = this.parseDate(dateFormat, dates, settings) || defaultDate;
1153
+ } catch (event) {
1154
+ this.log(event);
1155
+ date = defaultDate;
1156
+ }
1157
+ inst.selectedDay = date.getDate();
1158
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
1159
+ inst.drawYear = inst.selectedYear = date.getFullYear();
1160
+ inst.currentDay = (dates ? date.getDate() : 0);
1161
+ inst.currentMonth = (dates ? date.getMonth() : 0);
1162
+ inst.currentYear = (dates ? date.getFullYear() : 0);
1163
+ this._adjustInstDate(inst);
1164
+ },
1165
+
1166
+ /* Retrieve the default date shown on opening. */
1167
+ _getDefaultDate: function(inst) {
1168
+ var date = this._determineDate(this._get(inst, 'defaultDate'), new Date());
1169
+ var minDate = this._getMinMaxDate(inst, 'min', true);
1170
+ var maxDate = this._getMinMaxDate(inst, 'max');
1171
+ date = (minDate && date < minDate ? minDate : date);
1172
+ date = (maxDate && date > maxDate ? maxDate : date);
1173
+ return date;
1174
+ },
1175
+
1176
+ /* A date may be specified as an exact value or a relative one. */
1177
+ _determineDate: function(date, defaultDate) {
1178
+ var offsetNumeric = function(offset) {
1179
+ var date = new Date();
1180
+ date.setDate(date.getDate() + offset);
1181
+ return date;
1182
+ };
1183
+ var offsetString = function(offset, getDaysInMonth) {
1184
+ var date = new Date();
1185
+ var year = date.getFullYear();
1186
+ var month = date.getMonth();
1187
+ var day = date.getDate();
1188
+ var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
1189
+ var matches = pattern.exec(offset);
1190
+ while (matches) {
1191
+ switch (matches[2] || 'd') {
1192
+ case 'd' : case 'D' :
1193
+ day += parseInt(matches[1],10); break;
1194
+ case 'w' : case 'W' :
1195
+ day += parseInt(matches[1],10) * 7; break;
1196
+ case 'm' : case 'M' :
1197
+ month += parseInt(matches[1],10);
1198
+ day = Math.min(day, getDaysInMonth(year, month));
1199
+ break;
1200
+ case 'y': case 'Y' :
1201
+ year += parseInt(matches[1],10);
1202
+ day = Math.min(day, getDaysInMonth(year, month));
1203
+ break;
1204
+ }
1205
+ matches = pattern.exec(offset);
1206
+ }
1207
+ return new Date(year, month, day);
1208
+ };
1209
+ date = (date == null ? defaultDate :
1210
+ (typeof date == 'string' ? offsetString(date, this._getDaysInMonth) :
1211
+ (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : date)));
1212
+ date = (date && date.toString() == 'Invalid Date' ? defaultDate : date);
1213
+ if (date) {
1214
+ date.setHours(0);
1215
+ date.setMinutes(0);
1216
+ date.setSeconds(0);
1217
+ date.setMilliseconds(0);
1218
+ }
1219
+ return this._daylightSavingAdjust(date);
1220
+ },
1221
+
1222
+ /* Handle switch to/from daylight saving.
1223
+ Hours may be non-zero on daylight saving cut-over:
1224
+ > 12 when midnight changeover, but then cannot generate
1225
+ midnight datetime, so jump to 1AM, otherwise reset.
1226
+ @param date (Date) the date to check
1227
+ @return (Date) the corrected date */
1228
+ _daylightSavingAdjust: function(date) {
1229
+ if (!date) return null;
1230
+ date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
1231
+ return date;
1232
+ },
1233
+
1234
+ /* Set the date(s) directly. */
1235
+ _setDate: function(inst, date, endDate) {
1236
+ var clear = !(date);
1237
+ var origMonth = inst.selectedMonth;
1238
+ var origYear = inst.selectedYear;
1239
+ date = this._determineDate(date, new Date());
1240
+ inst.selectedDay = inst.currentDay = date.getDate();
1241
+ inst.drawMonth = inst.selectedMonth = inst.currentMonth = date.getMonth();
1242
+ inst.drawYear = inst.selectedYear = inst.currentYear = date.getFullYear();
1243
+ if (origMonth != inst.selectedMonth || origYear != inst.selectedYear)
1244
+ this._notifyChange(inst);
1245
+ this._adjustInstDate(inst);
1246
+ if (inst.input) {
1247
+ inst.input.val(clear ? '' : this._formatDate(inst));
1248
+ }
1249
+ },
1250
+
1251
+ /* Retrieve the date(s) directly. */
1252
+ _getDate: function(inst) {
1253
+ var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :
1254
+ this._daylightSavingAdjust(new Date(
1255
+ inst.currentYear, inst.currentMonth, inst.currentDay)));
1256
+ return startDate;
1257
+ },
1258
+
1259
+ /* Generate the HTML for the current state of the date picker. */
1260
+ _generateHTML: function(inst) {
1261
+ var today = new Date();
1262
+ today = this._daylightSavingAdjust(
1263
+ new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time
1264
+ var isRTL = this._get(inst, 'isRTL');
1265
+ var showButtonPanel = this._get(inst, 'showButtonPanel');
1266
+ var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');
1267
+ var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');
1268
+ var numMonths = this._getNumberOfMonths(inst);
1269
+ var showCurrentAtPos = this._get(inst, 'showCurrentAtPos');
1270
+ var stepMonths = this._get(inst, 'stepMonths');
1271
+ var stepBigMonths = this._get(inst, 'stepBigMonths');
1272
+ var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
1273
+ var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
1274
+ new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
1275
+ var minDate = this._getMinMaxDate(inst, 'min', true);
1276
+ var maxDate = this._getMinMaxDate(inst, 'max');
1277
+ var drawMonth = inst.drawMonth - showCurrentAtPos;
1278
+ var drawYear = inst.drawYear;
1279
+ if (drawMonth < 0) {
1280
+ drawMonth += 12;
1281
+ drawYear--;
1282
+ }
1283
+ if (maxDate) {
1284
+ var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
1285
+ maxDate.getMonth() - numMonths[1] + 1, maxDate.getDate()));
1286
+ maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
1287
+ while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
1288
+ drawMonth--;
1289
+ if (drawMonth < 0) {
1290
+ drawMonth = 11;
1291
+ drawYear--;
1292
+ }
1293
+ }
1294
+ }
1295
+ inst.drawMonth = drawMonth;
1296
+ inst.drawYear = drawYear;
1297
+ var prevText = this._get(inst, 'prevText');
1298
+ prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
1299
+ this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
1300
+ this._getFormatConfig(inst)));
1301
+ var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
1302
+ '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepMonths + ', \'M\');"' +
1303
+ ' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' :
1304
+ (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+ prevText +'"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>'));
1305
+ var nextText = this._get(inst, 'nextText');
1306
+ nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
1307
+ this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
1308
+ this._getFormatConfig(inst)));
1309
+ var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
1310
+ '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepMonths + ', \'M\');"' +
1311
+ ' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' :
1312
+ (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+ nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>'));
1313
+ var currentText = this._get(inst, 'currentText');
1314
+ var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);
1315
+ currentText = (!navigationAsDateFormat ? currentText :
1316
+ this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
1317
+ var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">' + this._get(inst, 'closeText') + '</button>' : '');
1318
+ var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') +
1319
+ (this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#' + inst.id + '\');"' +
1320
+ '>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';
1321
+ var firstDay = parseInt(this._get(inst, 'firstDay'),10);
1322
+ firstDay = (isNaN(firstDay) ? 0 : firstDay);
1323
+ var dayNames = this._get(inst, 'dayNames');
1324
+ var dayNamesShort = this._get(inst, 'dayNamesShort');
1325
+ var dayNamesMin = this._get(inst, 'dayNamesMin');
1326
+ var monthNames = this._get(inst, 'monthNames');
1327
+ var monthNamesShort = this._get(inst, 'monthNamesShort');
1328
+ var beforeShowDay = this._get(inst, 'beforeShowDay');
1329
+ var showOtherMonths = this._get(inst, 'showOtherMonths');
1330
+ var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;
1331
+ var endDate = inst.endDay ? this._daylightSavingAdjust(
1332
+ new Date(inst.endYear, inst.endMonth, inst.endDay)) : currentDate;
1333
+ var defaultDate = this._getDefaultDate(inst);
1334
+ var html = '';
1335
+ for (var row = 0; row < numMonths[0]; row++) {
1336
+ var group = '';
1337
+ for (var col = 0; col < numMonths[1]; col++) {
1338
+ var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
1339
+ var cornerClass = ' ui-corner-all';
1340
+ var calender = '';
1341
+ if (isMultiMonth) {
1342
+ calender += '<div class="ui-datepicker-group ui-datepicker-group-';
1343
+ switch (col) {
1344
+ case 0: calender += 'first'; cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;
1345
+ case numMonths[1]-1: calender += 'last'; cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;
1346
+ default: calender += 'middle'; cornerClass = ''; break;
1347
+ }
1348
+ calender += '">';
1349
+ }
1350
+ calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' +
1351
+ (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +
1352
+ (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +
1353
+ this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
1354
+ selectedDate, row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
1355
+ '</div><table class="ui-datepicker-calendar"><thead>' +
1356
+ '<tr>';
1357
+ var thead = '';
1358
+ for (var dow = 0; dow < 7; dow++) { // days of the week
1359
+ var day = (dow + firstDay) % 7;
1360
+ thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' +
1361
+ '<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>';
1362
+ }
1363
+ calender += thead + '</tr></thead><tbody>';
1364
+ var daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
1365
+ if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)
1366
+ inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
1367
+ var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
1368
+ var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate
1369
+ var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
1370
+ for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows
1371
+ calender += '<tr>';
1372
+ var tbody = '';
1373
+ for (var dow = 0; dow < 7; dow++) { // create date picker days
1374
+ var daySettings = (beforeShowDay ?
1375
+ beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
1376
+ var otherMonth = (printDate.getMonth() != drawMonth);
1377
+ var unselectable = otherMonth || !daySettings[0] ||
1378
+ (minDate && printDate < minDate) || (maxDate && printDate > maxDate);
1379
+ tbody += '<td class="' +
1380
+ ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends
1381
+ (otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months
1382
+ ((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key
1383
+ (defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?
1384
+ // or defaultDate is current printedDate and defaultDate is selectedDate
1385
+ ' ' + this._dayOverClass : '') + // highlight selected day
1386
+ (unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') + // highlight unselectable days
1387
+ (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates
1388
+ (printDate.getTime() >= currentDate.getTime() && printDate.getTime() <= endDate.getTime() ? // in current range
1389
+ ' ' + this._currentClass : '') + // highlight selected day
1390
+ (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + // highlight today (if different)
1391
+ ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + // cell title
1392
+ (unselectable ? '' : ' onclick="DP_jQuery.datepicker._selectDay(\'#' +
1393
+ inst.id + '\',' + drawMonth + ',' + drawYear + ', this);return false;"') + '>' + // actions
1394
+ (otherMonth ? (showOtherMonths ? printDate.getDate() : '&#xa0;') : // display for other months
1395
+ (unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' +
1396
+ (printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +
1397
+ (printDate.getTime() >= currentDate.getTime() && printDate.getTime() <= endDate.getTime() ? // in current range
1398
+ ' ui-state-active' : '') + // highlight selected day
1399
+ '" href="#">' + printDate.getDate() + '</a>')) + '</td>'; // display for this month
1400
+ printDate.setDate(printDate.getDate() + 1);
1401
+ printDate = this._daylightSavingAdjust(printDate);
1402
+ }
1403
+ calender += tbody + '</tr>';
1404
+ }
1405
+ drawMonth++;
1406
+ if (drawMonth > 11) {
1407
+ drawMonth = 0;
1408
+ drawYear++;
1409
+ }
1410
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
1411
+ ((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
1412
+ group += calender;
1413
+ }
1414
+ html += group;
1415
+ }
1416
+ html += buttonPanel + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ?
1417
+ '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : '');
1418
+ inst._keyEvent = false;
1419
+ return html;
1420
+ },
1421
+
1422
+ /* Generate the month and year header. */
1423
+ _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
1424
+ selectedDate, secondary, monthNames, monthNamesShort) {
1425
+ minDate = (inst.rangeStart && minDate && selectedDate < minDate ? selectedDate : minDate);
1426
+ var changeMonth = this._get(inst, 'changeMonth');
1427
+ var changeYear = this._get(inst, 'changeYear');
1428
+ var showMonthAfterYear = this._get(inst, 'showMonthAfterYear');
1429
+ var html = '<div class="ui-datepicker-title">';
1430
+ var monthHtml = '';
1431
+ // month selection
1432
+ if (secondary || !changeMonth)
1433
+ monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span> ';
1434
+ else {
1435
+ var inMinYear = (minDate && minDate.getFullYear() == drawYear);
1436
+ var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
1437
+ monthHtml += '<select class="ui-datepicker-month" ' +
1438
+ 'onchange="DP_jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' +
1439
+ 'onclick="DP_jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
1440
+ '>';
1441
+ for (var month = 0; month < 12; month++) {
1442
+ if ((!inMinYear || month >= minDate.getMonth()) &&
1443
+ (!inMaxYear || month <= maxDate.getMonth()))
1444
+ monthHtml += '<option value="' + month + '"' +
1445
+ (month == drawMonth ? ' selected="selected"' : '') +
1446
+ '>' + monthNamesShort[month] + '</option>';
1447
+ }
1448
+ monthHtml += '</select>';
1449
+ }
1450
+ if (!showMonthAfterYear)
1451
+ html += monthHtml + ((secondary || changeMonth || changeYear) && (!(changeMonth && changeYear)) ? '&#xa0;' : '');
1452
+ // year selection
1453
+ if (secondary || !changeYear)
1454
+ html += '<span class="ui-datepicker-year">' + drawYear + '</span>';
1455
+ else {
1456
+ // determine range of years to display
1457
+ var years = this._get(inst, 'yearRange').split(':');
1458
+ var year = 0;
1459
+ var endYear = 0;
1460
+ if (years.length != 2) {
1461
+ year = drawYear - 10;
1462
+ endYear = drawYear + 10;
1463
+ } else if (years[0].charAt(0) == '+' || years[0].charAt(0) == '-') {
1464
+ year = drawYear + parseInt(years[0], 10);
1465
+ endYear = drawYear + parseInt(years[1], 10);
1466
+ } else {
1467
+ year = parseInt(years[0], 10);
1468
+ endYear = parseInt(years[1], 10);
1469
+ }
1470
+ year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
1471
+ endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
1472
+ html += '<select class="ui-datepicker-year" ' +
1473
+ 'onchange="DP_jQuery.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
1474
+ 'onclick="DP_jQuery.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
1475
+ '>';
1476
+ for (; year <= endYear; year++) {
1477
+ html += '<option value="' + year + '"' +
1478
+ (year == drawYear ? ' selected="selected"' : '') +
1479
+ '>' + year + '</option>';
1480
+ }
1481
+ html += '</select>';
1482
+ }
1483
+ if (showMonthAfterYear)
1484
+ html += (secondary || changeMonth || changeYear ? '&#xa0;' : '') + monthHtml;
1485
+ html += '</div>'; // Close datepicker_header
1486
+ return html;
1487
+ },
1488
+
1489
+ /* Adjust one of the date sub-fields. */
1490
+ _adjustInstDate: function(inst, offset, period) {
1491
+ var year = inst.drawYear + (period == 'Y' ? offset : 0);
1492
+ var month = inst.drawMonth + (period == 'M' ? offset : 0);
1493
+ var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +
1494
+ (period == 'D' ? offset : 0);
1495
+ var date = this._daylightSavingAdjust(new Date(year, month, day));
1496
+ // ensure it is within the bounds set
1497
+ var minDate = this._getMinMaxDate(inst, 'min', true);
1498
+ var maxDate = this._getMinMaxDate(inst, 'max');
1499
+ date = (minDate && date < minDate ? minDate : date);
1500
+ date = (maxDate && date > maxDate ? maxDate : date);
1501
+ inst.selectedDay = date.getDate();
1502
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
1503
+ inst.drawYear = inst.selectedYear = date.getFullYear();
1504
+ if (period == 'M' || period == 'Y')
1505
+ this._notifyChange(inst);
1506
+ },
1507
+
1508
+ /* Notify change of month/year. */
1509
+ _notifyChange: function(inst) {
1510
+ var onChange = this._get(inst, 'onChangeMonthYear');
1511
+ if (onChange)
1512
+ onChange.apply((inst.input ? inst.input[0] : null),
1513
+ [inst.selectedYear, inst.selectedMonth + 1, inst]);
1514
+ },
1515
+
1516
+ /* Determine the number of months to show. */
1517
+ _getNumberOfMonths: function(inst) {
1518
+ var numMonths = this._get(inst, 'numberOfMonths');
1519
+ return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));
1520
+ },
1521
+
1522
+ /* Determine the current maximum date - ensure no time components are set - may be overridden for a range. */
1523
+ _getMinMaxDate: function(inst, minMax, checkRange) {
1524
+ var date = this._determineDate(this._get(inst, minMax + 'Date'), null);
1525
+ return (!checkRange || !inst.rangeStart ? date :
1526
+ (!date || inst.rangeStart > date ? inst.rangeStart : date));
1527
+ },
1528
+
1529
+ /* Find the number of days in a given month. */
1530
+ _getDaysInMonth: function(year, month) {
1531
+ return 32 - new Date(year, month, 32).getDate();
1532
+ },
1533
+
1534
+ /* Find the day of the week of the first of a month. */
1535
+ _getFirstDayOfMonth: function(year, month) {
1536
+ return new Date(year, month, 1).getDay();
1537
+ },
1538
+
1539
+ /* Determines if we should allow a "next/prev" month display change. */
1540
+ _canAdjustMonth: function(inst, offset, curYear, curMonth) {
1541
+ var numMonths = this._getNumberOfMonths(inst);
1542
+ var date = this._daylightSavingAdjust(new Date(
1543
+ curYear, curMonth + (offset < 0 ? offset : numMonths[1]), 1));
1544
+ if (offset < 0)
1545
+ date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
1546
+ return this._isInRange(inst, date);
1547
+ },
1548
+
1549
+ /* Is the given date in the accepted range? */
1550
+ _isInRange: function(inst, date) {
1551
+ // during range selection, use minimum of selected date and range start
1552
+ var newMinDate = (!inst.rangeStart ? null : this._daylightSavingAdjust(
1553
+ new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)));
1554
+ newMinDate = (newMinDate && inst.rangeStart < newMinDate ? inst.rangeStart : newMinDate);
1555
+ var minDate = newMinDate || this._getMinMaxDate(inst, 'min');
1556
+ var maxDate = this._getMinMaxDate(inst, 'max');
1557
+ return ((!minDate || date >= minDate) && (!maxDate || date <= maxDate));
1558
+ },
1559
+
1560
+ /* Provide the configuration settings for formatting/parsing. */
1561
+ _getFormatConfig: function(inst) {
1562
+ var shortYearCutoff = this._get(inst, 'shortYearCutoff');
1563
+ shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :
1564
+ new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
1565
+ return {shortYearCutoff: shortYearCutoff,
1566
+ dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),
1567
+ monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};
1568
+ },
1569
+
1570
+ /* Format the given date for display. */
1571
+ _formatDate: function(inst, day, month, year) {
1572
+ if (!day) {
1573
+ inst.currentDay = inst.selectedDay;
1574
+ inst.currentMonth = inst.selectedMonth;
1575
+ inst.currentYear = inst.selectedYear;
1576
+ }
1577
+ var date = (day ? (typeof day == 'object' ? day :
1578
+ this._daylightSavingAdjust(new Date(year, month, day))) :
1579
+ this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
1580
+ return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));
1581
+ }
1582
+ });
1583
+
1584
+ /* jQuery extend now ignores nulls! */
1585
+ function extendRemove(target, props) {
1586
+ $.extend(target, props);
1587
+ for (var name in props)
1588
+ if (props[name] == null || props[name] == undefined)
1589
+ target[name] = props[name];
1590
+ return target;
1591
+ };
1592
+
1593
+ /* Determine whether an object is an array. */
1594
+ function isArray(a) {
1595
+ return (a && (($.browser.safari && typeof a == 'object' && a.length) ||
1596
+ (a.constructor && a.constructor.toString().match(/\Array\(\)/))));
1597
+ };
1598
+
1599
+ /* Invoke the datepicker functionality.
1600
+ @param options string - a command, optionally followed by additional parameters or
1601
+ Object - settings for attaching new datepicker functionality
1602
+ @return jQuery object */
1603
+ $.fn.datepicker = function(options){
1604
+
1605
+ /* Initialise the date picker. */
1606
+ if (!$.datepicker.initialized) {
1607
+ $(document).mousedown($.datepicker._checkExternalClick).
1608
+ find('body').append($.datepicker.dpDiv);
1609
+ $.datepicker.initialized = true;
1610
+ }
1611
+
1612
+ var otherArgs = Array.prototype.slice.call(arguments, 1);
1613
+ if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate'))
1614
+ return $.datepicker['_' + options + 'Datepicker'].
1615
+ apply($.datepicker, [this[0]].concat(otherArgs));
1616
+ if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')
1617
+ return $.datepicker['_' + options + 'Datepicker'].
1618
+ apply($.datepicker, [this[0]].concat(otherArgs));
1619
+ return this.each(function() {
1620
+ typeof options == 'string' ?
1621
+ $.datepicker['_' + options + 'Datepicker'].
1622
+ apply($.datepicker, [this].concat(otherArgs)) :
1623
+ $.datepicker._attachDatepicker(this, options);
1624
+ });
1625
+ };
1626
+
1627
+ $.datepicker = new Datepicker(); // singleton instance
1628
+ $.datepicker.initialized = false;
1629
+ $.datepicker.uuid = new Date().getTime();
1630
+ $.datepicker.version = "1.7.3";
1631
+
1632
+ // Workaround for #4055
1633
+ // Add another global to avoid noConflict issues with inline event handlers
1634
+ window.DP_jQuery = $;
1635
+
1636
+ })(jQuery);
ui.datepicker.1.8.7.js ADDED
@@ -0,0 +1,1757 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Datepicker 1.8.7
3
+ *
4
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Datepicker
9
+ *
10
+ * Depends:
11
+ * jquery.ui.core.js
12
+ */
13
+ (function( $, undefined ) {
14
+
15
+ $.extend($.ui, { datepicker: { version: "1.8.7" } });
16
+
17
+ var PROP_NAME = 'datepicker';
18
+ var dpuuid = new Date().getTime();
19
+
20
+ /* Date picker manager.
21
+ Use the singleton instance of this class, $.datepicker, to interact with the date picker.
22
+ Settings for (groups of) date pickers are maintained in an instance object,
23
+ allowing multiple different settings on the same page. */
24
+
25
+ function Datepicker() {
26
+ this.debug = false; // Change this to true to start debugging
27
+ this._curInst = null; // The current instance in use
28
+ this._keyEvent = false; // If the last event was a key event
29
+ this._disabledInputs = []; // List of date picker inputs that have been disabled
30
+ this._datepickerShowing = false; // True if the popup picker is showing , false if not
31
+ this._inDialog = false; // True if showing within a "dialog", false if not
32
+ this._mainDivId = 'ui-datepicker-div'; // The ID of the main datepicker division
33
+ this._inlineClass = 'ui-datepicker-inline'; // The name of the inline marker class
34
+ this._appendClass = 'ui-datepicker-append'; // The name of the append marker class
35
+ this._triggerClass = 'ui-datepicker-trigger'; // The name of the trigger marker class
36
+ this._dialogClass = 'ui-datepicker-dialog'; // The name of the dialog marker class
37
+ this._disableClass = 'ui-datepicker-disabled'; // The name of the disabled covering marker class
38
+ this._unselectableClass = 'ui-datepicker-unselectable'; // The name of the unselectable cell marker class
39
+ this._currentClass = 'ui-datepicker-current-day'; // The name of the current day marker class
40
+ this._dayOverClass = 'ui-datepicker-days-cell-over'; // The name of the day hover marker class
41
+ this.regional = []; // Available regional settings, indexed by language code
42
+ this.regional[''] = { // Default regional settings
43
+ closeText: 'Done', // Display text for close link
44
+ prevText: 'Prev', // Display text for previous month link
45
+ nextText: 'Next', // Display text for next month link
46
+ currentText: 'Today', // Display text for current month link
47
+ monthNames: ['January','February','March','April','May','June',
48
+ 'July','August','September','October','November','December'], // Names of months for drop-down and formatting
49
+ monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], // For formatting
50
+ dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting
51
+ dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting
52
+ dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'], // Column headings for days starting at Sunday
53
+ weekHeader: 'Wk', // Column header for week of the year
54
+ dateFormat: 'mm/dd/yy', // See format options on parseDate
55
+ firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
56
+ isRTL: false, // True if right-to-left language, false if left-to-right
57
+ showMonthAfterYear: false, // True if the year select precedes month, false for month then year
58
+ yearSuffix: '' // Additional text to append to the year in the month headers
59
+ };
60
+ this._defaults = { // Global defaults for all the date picker instances
61
+ showOn: 'focus', // 'focus' for popup on focus,
62
+ // 'button' for trigger button, or 'both' for either
63
+ showAnim: 'fadeIn', // Name of jQuery animation for popup
64
+ showOptions: {}, // Options for enhanced animations
65
+ defaultDate: null, // Used when field is blank: actual date,
66
+ // +/-number for offset from today, null for today
67
+ appendText: '', // Display text following the input box, e.g. showing the format
68
+ buttonText: '...', // Text for trigger button
69
+ buttonImage: '', // URL for trigger button image
70
+ buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
71
+ hideIfNoPrevNext: false, // True to hide next/previous month links
72
+ // if not applicable, false to just disable them
73
+ navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
74
+ gotoCurrent: false, // True if today link goes back to current selection instead
75
+ changeMonth: false, // True if month can be selected directly, false if only prev/next
76
+ changeYear: false, // True if year can be selected directly, false if only prev/next
77
+ yearRange: 'c-10:c+10', // Range of years to display in drop-down,
78
+ // either relative to today's year (-nn:+nn), relative to currently displayed year
79
+ // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
80
+ showOtherMonths: false, // True to show dates in other months, false to leave blank
81
+ selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
82
+ showWeek: false, // True to show week of the year, false to not show it
83
+ calculateWeek: this.iso8601Week, // How to calculate the week of the year,
84
+ // takes a Date and returns the number of the week for it
85
+ shortYearCutoff: '+10', // Short year values < this are in the current century,
86
+ // > this are in the previous century,
87
+ // string value starting with '+' for current year + value
88
+ minDate: null, // The earliest selectable date, or null for no limit
89
+ maxDate: null, // The latest selectable date, or null for no limit
90
+ duration: 'fast', // Duration of display/closure
91
+ beforeShowDay: null, // Function that takes a date and returns an array with
92
+ // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or '',
93
+ // [2] = cell title (optional), e.g. $.datepicker.noWeekends
94
+ beforeShow: null, // Function that takes an input field and
95
+ // returns a set of custom settings for the date picker
96
+ onSelect: null, // Define a callback function when a date is selected
97
+ onChangeMonthYear: null, // Define a callback function when the month or year is changed
98
+ onClose: null, // Define a callback function when the datepicker is closed
99
+ numberOfMonths: 1, // Number of months to show at a time
100
+ showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
101
+ stepMonths: 1, // Number of months to step back/forward
102
+ stepBigMonths: 12, // Number of months to step back/forward for the big links
103
+ altField: '', // Selector for an alternate field to store selected dates into
104
+ altFormat: '', // The date format to use for the alternate field
105
+ constrainInput: true, // The input is constrained by the current date format
106
+ showButtonPanel: false, // True to show button panel, false to not show it
107
+ autoSize: false // True to size the input for the date format, false to leave as is
108
+ };
109
+ $.extend(this._defaults, this.regional['']);
110
+ this.dpDiv = $('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>');
111
+ }
112
+
113
+ $.extend(Datepicker.prototype, {
114
+ /* Class name added to elements to indicate already configured with a date picker. */
115
+ markerClassName: 'hasDatepicker',
116
+
117
+ /* Debug logging (if enabled). */
118
+ log: function () {
119
+ if (this.debug)
120
+ console.log.apply('', arguments);
121
+ },
122
+
123
+ // TODO rename to "widget" when switching to widget factory
124
+ _widgetDatepicker: function() {
125
+ return this.dpDiv;
126
+ },
127
+
128
+ /* Override the default settings for all instances of the date picker.
129
+ @param settings object - the new settings to use as defaults (anonymous object)
130
+ @return the manager object */
131
+ setDefaults: function(settings) {
132
+ extendRemove(this._defaults, settings || {});
133
+ return this;
134
+ },
135
+
136
+ /* Attach the date picker to a jQuery selection.
137
+ @param target element - the target input field or division or span
138
+ @param settings object - the new settings to use for this date picker instance (anonymous) */
139
+ _attachDatepicker: function(target, settings) {
140
+ // check for settings on the control itself - in namespace 'date:'
141
+ var inlineSettings = null;
142
+ for (var attrName in this._defaults) {
143
+ var attrValue = target.getAttribute('date:' + attrName);
144
+ if (attrValue) {
145
+ inlineSettings = inlineSettings || {};
146
+ try {
147
+ inlineSettings[attrName] = eval(attrValue);
148
+ } catch (err) {
149
+ inlineSettings[attrName] = attrValue;
150
+ }
151
+ }
152
+ }
153
+ var nodeName = target.nodeName.toLowerCase();
154
+ var inline = (nodeName == 'div' || nodeName == 'span');
155
+ if (!target.id) {
156
+ this.uuid += 1;
157
+ target.id = 'dp' + this.uuid;
158
+ }
159
+ var inst = this._newInst($(target), inline);
160
+ inst.settings = $.extend({}, settings || {}, inlineSettings || {});
161
+ if (nodeName == 'input') {
162
+ this._connectDatepicker(target, inst);
163
+ } else if (inline) {
164
+ this._inlineDatepicker(target, inst);
165
+ }
166
+ },
167
+
168
+ /* Create a new instance object. */
169
+ _newInst: function(target, inline) {
170
+ var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, '\\\\$1'); // escape jQuery meta chars
171
+ return {id: id, input: target, // associated target
172
+ selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
173
+ drawMonth: 0, drawYear: 0, // month being drawn
174
+ inline: inline, // is datepicker inline or not
175
+ dpDiv: (!inline ? this.dpDiv : // presentation div
176
+ $('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))};
177
+ },
178
+
179
+ /* Attach the date picker to an input field. */
180
+ _connectDatepicker: function(target, inst) {
181
+ var input = $(target);
182
+ inst.append = $([]);
183
+ inst.trigger = $([]);
184
+ if (input.hasClass(this.markerClassName))
185
+ return;
186
+ this._attachments(input, inst);
187
+ input.addClass(this.markerClassName).keydown(this._doKeyDown).
188
+ keypress(this._doKeyPress).keyup(this._doKeyUp).
189
+ bind("setData.datepicker", function(event, key, value) {
190
+ inst.settings[key] = value;
191
+ }).bind("getData.datepicker", function(event, key) {
192
+ return this._get(inst, key);
193
+ });
194
+ this._autoSize(inst);
195
+ $.data(target, PROP_NAME, inst);
196
+ },
197
+
198
+ /* Make attachments based on settings. */
199
+ _attachments: function(input, inst) {
200
+ var appendText = this._get(inst, 'appendText');
201
+ var isRTL = this._get(inst, 'isRTL');
202
+ if (inst.append)
203
+ inst.append.remove();
204
+ if (appendText) {
205
+ inst.append = $('<span class="' + this._appendClass + '">' + appendText + '</span>');
206
+ input[isRTL ? 'before' : 'after'](inst.append);
207
+ }
208
+ input.unbind('focus', this._showDatepicker);
209
+ if (inst.trigger)
210
+ inst.trigger.remove();
211
+ var showOn = this._get(inst, 'showOn');
212
+ if (showOn == 'focus' || showOn == 'both') // pop-up date picker when in the marked field
213
+ input.focus(this._showDatepicker);
214
+ if (showOn == 'button' || showOn == 'both') { // pop-up date picker when button clicked
215
+ var buttonText = this._get(inst, 'buttonText');
216
+ var buttonImage = this._get(inst, 'buttonImage');
217
+ inst.trigger = $(this._get(inst, 'buttonImageOnly') ?
218
+ $('<img/>').addClass(this._triggerClass).
219
+ attr({ src: buttonImage, alt: buttonText, title: buttonText }) :
220
+ $('<button type="button"></button>').addClass(this._triggerClass).
221
+ html(buttonImage == '' ? buttonText : $('<img/>').attr(
222
+ { src:buttonImage, alt:buttonText, title:buttonText })));
223
+ input[isRTL ? 'before' : 'after'](inst.trigger);
224
+ inst.trigger.click(function() {
225
+ if ($.datepicker._datepickerShowing && $.datepicker._lastInput == input[0])
226
+ $.datepicker._hideDatepicker();
227
+ else
228
+ $.datepicker._showDatepicker(input[0]);
229
+ return false;
230
+ });
231
+ }
232
+ },
233
+
234
+ /* Apply the maximum length for the date format. */
235
+ _autoSize: function(inst) {
236
+ if (this._get(inst, 'autoSize') && !inst.inline) {
237
+ var date = new Date(2009, 12 - 1, 20); // Ensure double digits
238
+ var dateFormat = this._get(inst, 'dateFormat');
239
+ if (dateFormat.match(/[DM]/)) {
240
+ var findMax = function(names) {
241
+ var max = 0;
242
+ var maxI = 0;
243
+ for (var i = 0; i < names.length; i++) {
244
+ if (names[i].length > max) {
245
+ max = names[i].length;
246
+ maxI = i;
247
+ }
248
+ }
249
+ return maxI;
250
+ };
251
+ date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ?
252
+ 'monthNames' : 'monthNamesShort'))));
253
+ date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ?
254
+ 'dayNames' : 'dayNamesShort'))) + 20 - date.getDay());
255
+ }
256
+ inst.input.attr('size', this._formatDate(inst, date).length);
257
+ }
258
+ },
259
+
260
+ /* Attach an inline date picker to a div. */
261
+ _inlineDatepicker: function(target, inst) {
262
+ var divSpan = $(target);
263
+ if (divSpan.hasClass(this.markerClassName))
264
+ return;
265
+ divSpan.addClass(this.markerClassName).append(inst.dpDiv).
266
+ bind("setData.datepicker", function(event, key, value){
267
+ inst.settings[key] = value;
268
+ }).bind("getData.datepicker", function(event, key){
269
+ return this._get(inst, key);
270
+ });
271
+ $.data(target, PROP_NAME, inst);
272
+ this._setDate(inst, this._getDefaultDate(inst), true);
273
+ this._updateDatepicker(inst);
274
+ this._updateAlternate(inst);
275
+ inst.dpDiv.show();
276
+ },
277
+
278
+ /* Pop-up the date picker in a "dialog" box.
279
+ @param input element - ignored
280
+ @param date string or Date - the initial date to display
281
+ @param onSelect function - the function to call when a date is selected
282
+ @param settings object - update the dialog date picker instance's settings (anonymous object)
283
+ @param pos int[2] - coordinates for the dialog's position within the screen or
284
+ event - with x/y coordinates or
285
+ leave empty for default (screen centre)
286
+ @return the manager object */
287
+ _dialogDatepicker: function(input, date, onSelect, settings, pos) {
288
+ var inst = this._dialogInst; // internal instance
289
+ if (!inst) {
290
+ this.uuid += 1;
291
+ var id = 'dp' + this.uuid;
292
+ this._dialogInput = $('<input type="text" id="' + id +
293
+ '" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');
294
+ this._dialogInput.keydown(this._doKeyDown);
295
+ $('body').append(this._dialogInput);
296
+ inst = this._dialogInst = this._newInst(this._dialogInput, false);
297
+ inst.settings = {};
298
+ $.data(this._dialogInput[0], PROP_NAME, inst);
299
+ }
300
+ extendRemove(inst.settings, settings || {});
301
+ date = (date && date.constructor == Date ? this._formatDate(inst, date) : date);
302
+ this._dialogInput.val(date);
303
+
304
+ this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null);
305
+ if (!this._pos) {
306
+ var browserWidth = document.documentElement.clientWidth;
307
+ var browserHeight = document.documentElement.clientHeight;
308
+ var scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
309
+ var scrollY = document.documentElement.scrollTop || document.body.scrollTop;
310
+ this._pos = // should use actual width/height below
311
+ [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY];
312
+ }
313
+
314
+ // move input on screen for focus, but hidden behind dialog
315
+ this._dialogInput.css('left', (this._pos[0] + 20) + 'px').css('top', this._pos[1] + 'px');
316
+ inst.settings.onSelect = onSelect;
317
+ this._inDialog = true;
318
+ this.dpDiv.addClass(this._dialogClass);
319
+ this._showDatepicker(this._dialogInput[0]);
320
+ if ($.blockUI)
321
+ $.blockUI(this.dpDiv);
322
+ $.data(this._dialogInput[0], PROP_NAME, inst);
323
+ return this;
324
+ },
325
+
326
+ /* Detach a datepicker from its control.
327
+ @param target element - the target input field or division or span */
328
+ _destroyDatepicker: function(target) {
329
+ var $target = $(target);
330
+ var inst = $.data(target, PROP_NAME);
331
+ if (!$target.hasClass(this.markerClassName)) {
332
+ return;
333
+ }
334
+ var nodeName = target.nodeName.toLowerCase();
335
+ $.removeData(target, PROP_NAME);
336
+ if (nodeName == 'input') {
337
+ inst.append.remove();
338
+ inst.trigger.remove();
339
+ $target.removeClass(this.markerClassName).
340
+ unbind('focus', this._showDatepicker).
341
+ unbind('keydown', this._doKeyDown).
342
+ unbind('keypress', this._doKeyPress).
343
+ unbind('keyup', this._doKeyUp);
344
+ } else if (nodeName == 'div' || nodeName == 'span')
345
+ $target.removeClass(this.markerClassName).empty();
346
+ },
347
+
348
+ /* Enable the date picker to a jQuery selection.
349
+ @param target element - the target input field or division or span */
350
+ _enableDatepicker: function(target) {
351
+ var $target = $(target);
352
+ var inst = $.data(target, PROP_NAME);
353
+ if (!$target.hasClass(this.markerClassName)) {
354
+ return;
355
+ }
356
+ var nodeName = target.nodeName.toLowerCase();
357
+ if (nodeName == 'input') {
358
+ target.disabled = false;
359
+ inst.trigger.filter('button').
360
+ each(function() { this.disabled = false; }).end().
361
+ filter('img').css({opacity: '1.0', cursor: ''});
362
+ }
363
+ else if (nodeName == 'div' || nodeName == 'span') {
364
+ var inline = $target.children('.' + this._inlineClass);
365
+ inline.children().removeClass('ui-state-disabled');
366
+ }
367
+ this._disabledInputs = $.map(this._disabledInputs,
368
+ function(value) { return (value == target ? null : value); }); // delete entry
369
+ },
370
+
371
+ /* Disable the date picker to a jQuery selection.
372
+ @param target element - the target input field or division or span */
373
+ _disableDatepicker: function(target) {
374
+ var $target = $(target);
375
+ var inst = $.data(target, PROP_NAME);
376
+ if (!$target.hasClass(this.markerClassName)) {
377
+ return;
378
+ }
379
+ var nodeName = target.nodeName.toLowerCase();
380
+ if (nodeName == 'input') {
381
+ target.disabled = true;
382
+ inst.trigger.filter('button').
383
+ each(function() { this.disabled = true; }).end().
384
+ filter('img').css({opacity: '0.5', cursor: 'default'});
385
+ }
386
+ else if (nodeName == 'div' || nodeName == 'span') {
387
+ var inline = $target.children('.' + this._inlineClass);
388
+ inline.children().addClass('ui-state-disabled');
389
+ }
390
+ this._disabledInputs = $.map(this._disabledInputs,
391
+ function(value) { return (value == target ? null : value); }); // delete entry
392
+ this._disabledInputs[this._disabledInputs.length] = target;
393
+ },
394
+
395
+ /* Is the first field in a jQuery collection disabled as a datepicker?
396
+ @param target element - the target input field or division or span
397
+ @return boolean - true if disabled, false if enabled */
398
+ _isDisabledDatepicker: function(target) {
399
+ if (!target) {
400
+ return false;
401
+ }
402
+ for (var i = 0; i < this._disabledInputs.length; i++) {
403
+ if (this._disabledInputs[i] == target)
404
+ return true;
405
+ }
406
+ return false;
407
+ },
408
+
409
+ /* Retrieve the instance data for the target control.
410
+ @param target element - the target input field or division or span
411
+ @return object - the associated instance data
412
+ @throws error if a jQuery problem getting data */
413
+ _getInst: function(target) {
414
+ try {
415
+ return $.data(target, PROP_NAME);
416
+ }
417
+ catch (err) {
418
+ throw 'Missing instance data for this datepicker';
419
+ }
420
+ },
421
+
422
+ /* Update or retrieve the settings for a date picker attached to an input field or division.
423
+ @param target element - the target input field or division or span
424
+ @param name object - the new settings to update or
425
+ string - the name of the setting to change or retrieve,
426
+ when retrieving also 'all' for all instance settings or
427
+ 'defaults' for all global defaults
428
+ @param value any - the new value for the setting
429
+ (omit if above is an object or to retrieve a value) */
430
+ _optionDatepicker: function(target, name, value) {
431
+ var inst = this._getInst(target);
432
+ if (arguments.length == 2 && typeof name == 'string') {
433
+ return (name == 'defaults' ? $.extend({}, $.datepicker._defaults) :
434
+ (inst ? (name == 'all' ? $.extend({}, inst.settings) :
435
+ this._get(inst, name)) : null));
436
+ }
437
+ var settings = name || {};
438
+ if (typeof name == 'string') {
439
+ settings = {};
440
+ settings[name] = value;
441
+ }
442
+ if (inst) {
443
+ if (this._curInst == inst) {
444
+ this._hideDatepicker();
445
+ }
446
+ var date = this._getDateDatepicker(target, true);
447
+ extendRemove(inst.settings, settings);
448
+ this._attachments($(target), inst);
449
+ this._autoSize(inst);
450
+ this._setDateDatepicker(target, date);
451
+ this._updateDatepicker(inst);
452
+ }
453
+ },
454
+
455
+ // change method deprecated
456
+ _changeDatepicker: function(target, name, value) {
457
+ this._optionDatepicker(target, name, value);
458
+ },
459
+
460
+ /* Redraw the date picker attached to an input field or division.
461
+ @param target element - the target input field or division or span */
462
+ _refreshDatepicker: function(target) {
463
+ var inst = this._getInst(target);
464
+ if (inst) {
465
+ this._updateDatepicker(inst);
466
+ }
467
+ },
468
+
469
+ /* Set the dates for a jQuery selection.
470
+ @param target element - the target input field or division or span
471
+ @param date Date - the new date */
472
+ _setDateDatepicker: function(target, date) {
473
+ var inst = this._getInst(target);
474
+ if (inst) {
475
+ this._setDate(inst, date);
476
+ this._updateDatepicker(inst);
477
+ this._updateAlternate(inst);
478
+ }
479
+ },
480
+
481
+ /* Get the date(s) for the first entry in a jQuery selection.
482
+ @param target element - the target input field or division or span
483
+ @param noDefault boolean - true if no default date is to be used
484
+ @return Date - the current date */
485
+ _getDateDatepicker: function(target, noDefault) {
486
+ var inst = this._getInst(target);
487
+ if (inst && !inst.inline)
488
+ this._setDateFromField(inst, noDefault);
489
+ return (inst ? this._getDate(inst) : null);
490
+ },
491
+
492
+ /* Handle keystrokes. */
493
+ _doKeyDown: function(event) {
494
+ var inst = $.datepicker._getInst(event.target);
495
+ var handled = true;
496
+ var isRTL = inst.dpDiv.is('.ui-datepicker-rtl');
497
+ inst._keyEvent = true;
498
+ if ($.datepicker._datepickerShowing)
499
+ switch (event.keyCode) {
500
+ case 9: $.datepicker._hideDatepicker();
501
+ handled = false;
502
+ break; // hide on tab out
503
+ case 13: var sel = $('td.' + $.datepicker._dayOverClass + ':not(.' +
504
+ $.datepicker._currentClass + ')', inst.dpDiv);
505
+ if (sel[0])
506
+ $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);
507
+ else
508
+ $.datepicker._hideDatepicker();
509
+ return false; // don't submit the form
510
+ break; // select the value on enter
511
+ case 27: $.datepicker._hideDatepicker();
512
+ break; // hide on escape
513
+ case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
514
+ -$.datepicker._get(inst, 'stepBigMonths') :
515
+ -$.datepicker._get(inst, 'stepMonths')), 'M');
516
+ break; // previous month/year on page up/+ ctrl
517
+ case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ?
518
+ +$.datepicker._get(inst, 'stepBigMonths') :
519
+ +$.datepicker._get(inst, 'stepMonths')), 'M');
520
+ break; // next month/year on page down/+ ctrl
521
+ case 35: if (event.ctrlKey || event.metaKey) $.datepicker._clearDate(event.target);
522
+ handled = event.ctrlKey || event.metaKey;
523
+ break; // clear on ctrl or command +end
524
+ case 36: if (event.ctrlKey || event.metaKey) $.datepicker._gotoToday(event.target);
525
+ handled = event.ctrlKey || event.metaKey;
526
+ break; // current on ctrl or command +home
527
+ case 37: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), 'D');
528
+ handled = event.ctrlKey || event.metaKey;
529
+ // -1 day on ctrl or command +left
530
+ if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
531
+ -$.datepicker._get(inst, 'stepBigMonths') :
532
+ -$.datepicker._get(inst, 'stepMonths')), 'M');
533
+ // next month/year on alt +left on Mac
534
+ break;
535
+ case 38: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, -7, 'D');
536
+ handled = event.ctrlKey || event.metaKey;
537
+ break; // -1 week on ctrl or command +up
538
+ case 39: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), 'D');
539
+ handled = event.ctrlKey || event.metaKey;
540
+ // +1 day on ctrl or command +right
541
+ if (event.originalEvent.altKey) $.datepicker._adjustDate(event.target, (event.ctrlKey ?
542
+ +$.datepicker._get(inst, 'stepBigMonths') :
543
+ +$.datepicker._get(inst, 'stepMonths')), 'M');
544
+ // next month/year on alt +right
545
+ break;
546
+ case 40: if (event.ctrlKey || event.metaKey) $.datepicker._adjustDate(event.target, +7, 'D');
547
+ handled = event.ctrlKey || event.metaKey;
548
+ break; // +1 week on ctrl or command +down
549
+ default: handled = false;
550
+ }
551
+ else if (event.keyCode == 36 && event.ctrlKey) // display the date picker on ctrl+home
552
+ $.datepicker._showDatepicker(this);
553
+ else {
554
+ handled = false;
555
+ }
556
+ if (handled) {
557
+ event.preventDefault();
558
+ event.stopPropagation();
559
+ }
560
+ },
561
+
562
+ /* Filter entered characters - based on date format. */
563
+ _doKeyPress: function(event) {
564
+ var inst = $.datepicker._getInst(event.target);
565
+ if ($.datepicker._get(inst, 'constrainInput')) {
566
+ var chars = $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat'));
567
+ var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);
568
+ return event.ctrlKey || event.metaKey || (chr < ' ' || !chars || chars.indexOf(chr) > -1);
569
+ }
570
+ },
571
+
572
+ /* Synchronise manual entry and field/alternate field. */
573
+ _doKeyUp: function(event) {
574
+ var inst = $.datepicker._getInst(event.target);
575
+ if (inst.input.val() != inst.lastVal) {
576
+ try {
577
+ var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),
578
+ (inst.input ? inst.input.val() : null),
579
+ $.datepicker._getFormatConfig(inst));
580
+ if (date) { // only if valid
581
+ $.datepicker._setDateFromField(inst);
582
+ $.datepicker._updateAlternate(inst);
583
+ $.datepicker._updateDatepicker(inst);
584
+ }
585
+ }
586
+ catch (event) {
587
+ $.datepicker.log(event);
588
+ }
589
+ }
590
+ return true;
591
+ },
592
+
593
+ /* Pop-up the date picker for a given input field.
594
+ @param input element - the input field attached to the date picker or
595
+ event - if triggered by focus */
596
+ _showDatepicker: function(input) {
597
+ input = input.target || input;
598
+ if (input.nodeName.toLowerCase() != 'input') // find from button/image trigger
599
+ input = $('input', input.parentNode)[0];
600
+ if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput == input) // already here
601
+ return;
602
+ var inst = $.datepicker._getInst(input);
603
+ if ($.datepicker._curInst && $.datepicker._curInst != inst) {
604
+ $.datepicker._curInst.dpDiv.stop(true, true);
605
+ }
606
+ var beforeShow = $.datepicker._get(inst, 'beforeShow');
607
+ extendRemove(inst.settings, (beforeShow ? beforeShow.apply(input, [input, inst]) : {}));
608
+ inst.lastVal = null;
609
+ $.datepicker._lastInput = input;
610
+ $.datepicker._setDateFromField(inst);
611
+ if ($.datepicker._inDialog) // hide cursor
612
+ input.value = '';
613
+ if (!$.datepicker._pos) { // position below input
614
+ $.datepicker._pos = $.datepicker._findPos(input);
615
+ $.datepicker._pos[1] += input.offsetHeight; // add the height
616
+ }
617
+ var isFixed = false;
618
+ $(input).parents().each(function() {
619
+ isFixed |= $(this).css('position') == 'fixed';
620
+ return !isFixed;
621
+ });
622
+ if (isFixed && $.browser.opera) { // correction for Opera when fixed and scrolled
623
+ $.datepicker._pos[0] -= document.documentElement.scrollLeft;
624
+ $.datepicker._pos[1] -= document.documentElement.scrollTop;
625
+ }
626
+ var offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]};
627
+ $.datepicker._pos = null;
628
+ //to avoid flashes on Firefox
629
+ inst.dpDiv.empty();
630
+ // determine sizing offscreen
631
+ inst.dpDiv.css({position: 'absolute', display: 'block', top: '-1000px'});
632
+ $.datepicker._updateDatepicker(inst);
633
+ // fix width for dynamic number of date pickers
634
+ // and adjust position before showing
635
+ offset = $.datepicker._checkOffset(inst, offset, isFixed);
636
+ inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ?
637
+ 'static' : (isFixed ? 'fixed' : 'absolute')), display: 'none',
638
+ left: offset.left + 'px', top: offset.top + 'px'});
639
+ if (!inst.inline) {
640
+ var showAnim = $.datepicker._get(inst, 'showAnim');
641
+ var duration = $.datepicker._get(inst, 'duration');
642
+ var postProcess = function() {
643
+ $.datepicker._datepickerShowing = true;
644
+ var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only
645
+ if( !! cover.length ){
646
+ var borders = $.datepicker._getBorders(inst.dpDiv);
647
+ cover.css({left: -borders[0], top: -borders[1],
648
+ width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()});
649
+ }
650
+ };
651
+ inst.dpDiv.zIndex($(input).zIndex()+1);
652
+ if ($.effects && $.effects[showAnim])
653
+ inst.dpDiv.show(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
654
+ else
655
+ inst.dpDiv[showAnim || 'show']((showAnim ? duration : null), postProcess);
656
+ if (!showAnim || !duration)
657
+ postProcess();
658
+ if (inst.input.is(':visible') && !inst.input.is(':disabled'))
659
+ inst.input.focus();
660
+ $.datepicker._curInst = inst;
661
+ }
662
+ },
663
+
664
+ /* Generate the date picker content. */
665
+ _updateDatepicker: function(inst) {
666
+ var self = this;
667
+ var borders = $.datepicker._getBorders(inst.dpDiv);
668
+ inst.dpDiv.empty().append(this._generateHTML(inst));
669
+ var cover = inst.dpDiv.find('iframe.ui-datepicker-cover'); // IE6- only
670
+ if( !!cover.length ){ //avoid call to outerXXXX() when not in IE6
671
+ cover.css({left: -borders[0], top: -borders[1], width: inst.dpDiv.outerWidth(), height: inst.dpDiv.outerHeight()})
672
+ }
673
+ inst.dpDiv.find('button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a')
674
+ .bind('mouseout', function(){
675
+ $(this).removeClass('ui-state-hover');
676
+ if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).removeClass('ui-datepicker-prev-hover');
677
+ if(this.className.indexOf('ui-datepicker-next') != -1) $(this).removeClass('ui-datepicker-next-hover');
678
+ })
679
+ .bind('mouseover', function(){
680
+ if (!self._isDisabledDatepicker( inst.inline ? inst.dpDiv.parent()[0] : inst.input[0])) {
681
+ $(this).parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover');
682
+ $(this).addClass('ui-state-hover');
683
+ if(this.className.indexOf('ui-datepicker-prev') != -1) $(this).addClass('ui-datepicker-prev-hover');
684
+ if(this.className.indexOf('ui-datepicker-next') != -1) $(this).addClass('ui-datepicker-next-hover');
685
+ }
686
+ })
687
+ .end()
688
+ .find('.' + this._dayOverClass + ' a')
689
+ .trigger('mouseover')
690
+ .end();
691
+ var numMonths = this._getNumberOfMonths(inst);
692
+ var cols = numMonths[1];
693
+ var width = 17;
694
+ if (cols > 1)
695
+ inst.dpDiv.addClass('ui-datepicker-multi-' + cols).css('width', (width * cols) + 'em');
696
+ else
697
+ inst.dpDiv.removeClass('ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4').width('');
698
+ inst.dpDiv[(numMonths[0] != 1 || numMonths[1] != 1 ? 'add' : 'remove') +
699
+ 'Class']('ui-datepicker-multi');
700
+ inst.dpDiv[(this._get(inst, 'isRTL') ? 'add' : 'remove') +
701
+ 'Class']('ui-datepicker-rtl');
702
+ if (inst == $.datepicker._curInst && $.datepicker._datepickerShowing && inst.input &&
703
+ inst.input.is(':visible') && !inst.input.is(':disabled'))
704
+ inst.input.focus();
705
+ // deffered render of the years select (to avoid flashes on Firefox)
706
+ if( inst.yearshtml ){
707
+ var origyearshtml = inst.yearshtml;
708
+ setTimeout(function(){
709
+ //assure that inst.yearshtml didn't change.
710
+ if( origyearshtml === inst.yearshtml ){
711
+ inst.dpDiv.find('select.ui-datepicker-year:first').replaceWith(inst.yearshtml);
712
+ }
713
+ origyearshtml = inst.yearshtml = null;
714
+ }, 0);
715
+ }
716
+ },
717
+
718
+ /* Retrieve the size of left and top borders for an element.
719
+ @param elem (jQuery object) the element of interest
720
+ @return (number[2]) the left and top borders */
721
+ _getBorders: function(elem) {
722
+ var convert = function(value) {
723
+ return {thin: 1, medium: 2, thick: 3}[value] || value;
724
+ };
725
+ return [parseFloat(convert(elem.css('border-left-width'))),
726
+ parseFloat(convert(elem.css('border-top-width')))];
727
+ },
728
+
729
+ /* Check positioning to remain on screen. */
730
+ _checkOffset: function(inst, offset, isFixed) {
731
+ var dpWidth = inst.dpDiv.outerWidth();
732
+ var dpHeight = inst.dpDiv.outerHeight();
733
+ var inputWidth = inst.input ? inst.input.outerWidth() : 0;
734
+ var inputHeight = inst.input ? inst.input.outerHeight() : 0;
735
+ var viewWidth = document.documentElement.clientWidth + $(document).scrollLeft();
736
+ var viewHeight = document.documentElement.clientHeight + $(document).scrollTop();
737
+
738
+ offset.left -= (this._get(inst, 'isRTL') ? (dpWidth - inputWidth) : 0);
739
+ offset.left -= (isFixed && offset.left == inst.input.offset().left) ? $(document).scrollLeft() : 0;
740
+ offset.top -= (isFixed && offset.top == (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0;
741
+
742
+ // now check if datepicker is showing outside window viewport - move to a better place if so.
743
+ offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ?
744
+ Math.abs(offset.left + dpWidth - viewWidth) : 0);
745
+ offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ?
746
+ Math.abs(dpHeight + inputHeight) : 0);
747
+
748
+ return offset;
749
+ },
750
+
751
+ /* Find an object's position on the screen. */
752
+ _findPos: function(obj) {
753
+ var inst = this._getInst(obj);
754
+ var isRTL = this._get(inst, 'isRTL');
755
+ while (obj && (obj.type == 'hidden' || obj.nodeType != 1)) {
756
+ obj = obj[isRTL ? 'previousSibling' : 'nextSibling'];
757
+ }
758
+ var position = $(obj).offset();
759
+ return [position.left, position.top];
760
+ },
761
+
762
+ /* Hide the date picker from view.
763
+ @param input element - the input field attached to the date picker */
764
+ _hideDatepicker: function(input) {
765
+ var inst = this._curInst;
766
+ if (!inst || (input && inst != $.data(input, PROP_NAME)))
767
+ return;
768
+ if (this._datepickerShowing) {
769
+ var showAnim = this._get(inst, 'showAnim');
770
+ var duration = this._get(inst, 'duration');
771
+ var postProcess = function() {
772
+ $.datepicker._tidyDialog(inst);
773
+ this._curInst = null;
774
+ };
775
+ if ($.effects && $.effects[showAnim])
776
+ inst.dpDiv.hide(showAnim, $.datepicker._get(inst, 'showOptions'), duration, postProcess);
777
+ else
778
+ inst.dpDiv[(showAnim == 'slideDown' ? 'slideUp' :
779
+ (showAnim == 'fadeIn' ? 'fadeOut' : 'hide'))]((showAnim ? duration : null), postProcess);
780
+ if (!showAnim)
781
+ postProcess();
782
+ var onClose = this._get(inst, 'onClose');
783
+ if (onClose)
784
+ onClose.apply((inst.input ? inst.input[0] : null),
785
+ [(inst.input ? inst.input.val() : ''), inst]); // trigger custom callback
786
+ this._datepickerShowing = false;
787
+ this._lastInput = null;
788
+ if (this._inDialog) {
789
+ this._dialogInput.css({ position: 'absolute', left: '0', top: '-100px' });
790
+ if ($.blockUI) {
791
+ $.unblockUI();
792
+ $('body').append(this.dpDiv);
793
+ }
794
+ }
795
+ this._inDialog = false;
796
+ }
797
+ },
798
+
799
+ /* Tidy up after a dialog display. */
800
+ _tidyDialog: function(inst) {
801
+ inst.dpDiv.removeClass(this._dialogClass).unbind('.ui-datepicker-calendar');
802
+ },
803
+
804
+ /* Close date picker if clicked elsewhere. */
805
+ _checkExternalClick: function(event) {
806
+ if (!$.datepicker._curInst)
807
+ return;
808
+ var $target = $(event.target);
809
+ if ($target[0].id != $.datepicker._mainDivId &&
810
+ $target.parents('#' + $.datepicker._mainDivId).length == 0 &&
811
+ !$target.hasClass($.datepicker.markerClassName) &&
812
+ !$target.hasClass($.datepicker._triggerClass) &&
813
+ $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI))
814
+ $.datepicker._hideDatepicker();
815
+ },
816
+
817
+ /* Adjust one of the date sub-fields. */
818
+ _adjustDate: function(id, offset, period) {
819
+ var target = $(id);
820
+ var inst = this._getInst(target[0]);
821
+ if (this._isDisabledDatepicker(target[0])) {
822
+ return;
823
+ }
824
+ this._adjustInstDate(inst, offset +
825
+ (period == 'M' ? this._get(inst, 'showCurrentAtPos') : 0), // undo positioning
826
+ period);
827
+ this._updateDatepicker(inst);
828
+ },
829
+
830
+ /* Action for current link. */
831
+ _gotoToday: function(id) {
832
+ var target = $(id);
833
+ var inst = this._getInst(target[0]);
834
+ if (this._get(inst, 'gotoCurrent') && inst.currentDay) {
835
+ inst.selectedDay = inst.currentDay;
836
+ inst.drawMonth = inst.selectedMonth = inst.currentMonth;
837
+ inst.drawYear = inst.selectedYear = inst.currentYear;
838
+ }
839
+ else {
840
+ var date = new Date();
841
+ inst.selectedDay = date.getDate();
842
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
843
+ inst.drawYear = inst.selectedYear = date.getFullYear();
844
+ }
845
+ this._notifyChange(inst);
846
+ this._adjustDate(target);
847
+ },
848
+
849
+ /* Action for selecting a new month/year. */
850
+ _selectMonthYear: function(id, select, period) {
851
+ var target = $(id);
852
+ var inst = this._getInst(target[0]);
853
+ inst._selectingMonthYear = false;
854
+ inst['selected' + (period == 'M' ? 'Month' : 'Year')] =
855
+ inst['draw' + (period == 'M' ? 'Month' : 'Year')] =
856
+ parseInt(select.options[select.selectedIndex].value,10);
857
+ this._notifyChange(inst);
858
+ this._adjustDate(target);
859
+ },
860
+
861
+ /* Restore input focus after not changing month/year. */
862
+ _clickMonthYear: function(id) {
863
+ var target = $(id);
864
+ var inst = this._getInst(target[0]);
865
+ if (inst.input && inst._selectingMonthYear) {
866
+ setTimeout(function() {
867
+ inst.input.focus();
868
+ }, 0);
869
+ }
870
+ inst._selectingMonthYear = !inst._selectingMonthYear;
871
+ },
872
+
873
+ /* Action for selecting a day. */
874
+ _selectDay: function(id, month, year, td) {
875
+ var target = $(id);
876
+ if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {
877
+ return;
878
+ }
879
+ var inst = this._getInst(target[0]);
880
+ inst.selectedDay = inst.currentDay = $('a', td).html();
881
+ inst.selectedMonth = inst.currentMonth = month;
882
+ inst.selectedYear = inst.currentYear = year;
883
+ this._selectDate(id, this._formatDate(inst,
884
+ inst.currentDay, inst.currentMonth, inst.currentYear));
885
+ },
886
+
887
+ /* Erase the input field and hide the date picker. */
888
+ _clearDate: function(id) {
889
+ var target = $(id);
890
+ var inst = this._getInst(target[0]);
891
+ this._selectDate(target, '');
892
+ },
893
+
894
+ /* Update the input field with the selected date. */
895
+ _selectDate: function(id, dateStr) {
896
+ var target = $(id);
897
+ var inst = this._getInst(target[0]);
898
+ dateStr = (dateStr != null ? dateStr : this._formatDate(inst));
899
+ if (inst.input)
900
+ inst.input.val(dateStr);
901
+ this._updateAlternate(inst);
902
+ var onSelect = this._get(inst, 'onSelect');
903
+ if (onSelect)
904
+ onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback
905
+ else if (inst.input)
906
+ inst.input.trigger('change'); // fire the change event
907
+ if (inst.inline)
908
+ this._updateDatepicker(inst);
909
+ else {
910
+ this._hideDatepicker();
911
+ this._lastInput = inst.input[0];
912
+ if (typeof(inst.input[0]) != 'object')
913
+ inst.input.focus(); // restore focus
914
+ this._lastInput = null;
915
+ }
916
+ },
917
+
918
+ /* Update any alternate field to synchronise with the main field. */
919
+ _updateAlternate: function(inst) {
920
+ var altField = this._get(inst, 'altField');
921
+ if (altField) { // update alternate field too
922
+ var altFormat = this._get(inst, 'altFormat') || this._get(inst, 'dateFormat');
923
+ var date = this._getDate(inst);
924
+ var dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));
925
+ $(altField).each(function() { $(this).val(dateStr); });
926
+ }
927
+ },
928
+
929
+ /* Set as beforeShowDay function to prevent selection of weekends.
930
+ @param date Date - the date to customise
931
+ @return [boolean, string] - is this date selectable?, what is its CSS class? */
932
+ noWeekends: function(date) {
933
+ var day = date.getDay();
934
+ return [(day > 0 && day < 6), ''];
935
+ },
936
+
937
+ /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
938
+ @param date Date - the date to get the week for
939
+ @return number - the number of the week within the year that contains this date */
940
+ iso8601Week: function(date) {
941
+ var checkDate = new Date(date.getTime());
942
+ // Find Thursday of this week starting on Monday
943
+ checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));
944
+ var time = checkDate.getTime();
945
+ checkDate.setMonth(0); // Compare with Jan 1
946
+ checkDate.setDate(1);
947
+ return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
948
+ },
949
+
950
+ /* Parse a string value into a date object.
951
+ See formatDate below for the possible formats.
952
+
953
+ @param format string - the expected format of the date
954
+ @param value string - the date in the above format
955
+ @param settings Object - attributes include:
956
+ shortYearCutoff number - the cutoff year for determining the century (optional)
957
+ dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
958
+ dayNames string[7] - names of the days from Sunday (optional)
959
+ monthNamesShort string[12] - abbreviated names of the months (optional)
960
+ monthNames string[12] - names of the months (optional)
961
+ @return Date - the extracted date value or null if value is blank */
962
+ parseDate: function (format, value, settings) {
963
+ if (format == null || value == null)
964
+ throw 'Invalid arguments';
965
+ value = (typeof value == 'object' ? value.toString() : value + '');
966
+ if (value == '')
967
+ return null;
968
+ var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;
969
+ var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
970
+ var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
971
+ var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
972
+ var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
973
+ var year = -1;
974
+ var month = -1;
975
+ var day = -1;
976
+ var doy = -1;
977
+ var literal = false;
978
+ // Check whether a format character is doubled
979
+ var lookAhead = function(match) {
980
+ var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
981
+ if (matches)
982
+ iFormat++;
983
+ return matches;
984
+ };
985
+ // Extract a number from the string value
986
+ var getNumber = function(match) {
987
+ var isDoubled = lookAhead(match);
988
+ var size = (match == '@' ? 14 : (match == '!' ? 20 :
989
+ (match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));
990
+ var digits = new RegExp('^\\d{1,' + size + '}');
991
+ var num = value.substring(iValue).match(digits);
992
+ if (!num)
993
+ throw 'Missing number at position ' + iValue;
994
+ iValue += num[0].length;
995
+ return parseInt(num[0], 10);
996
+ };
997
+ // Extract a name from the string value and convert to an index
998
+ var getName = function(match, shortNames, longNames) {
999
+ var names = (lookAhead(match) ? longNames : shortNames);
1000
+ for (var i = 0; i < names.length; i++) {
1001
+ if (value.substr(iValue, names[i].length).toLowerCase() == names[i].toLowerCase()) {
1002
+ iValue += names[i].length;
1003
+ return i + 1;
1004
+ }
1005
+ }
1006
+ throw 'Unknown name at position ' + iValue;
1007
+ };
1008
+ // Confirm that a literal character matches the string value
1009
+ var checkLiteral = function() {
1010
+ if (value.charAt(iValue) != format.charAt(iFormat))
1011
+ throw 'Unexpected literal at position ' + iValue;
1012
+ iValue++;
1013
+ };
1014
+ var iValue = 0;
1015
+ for (var iFormat = 0; iFormat < format.length; iFormat++) {
1016
+ if (literal)
1017
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
1018
+ literal = false;
1019
+ else
1020
+ checkLiteral();
1021
+ else
1022
+ switch (format.charAt(iFormat)) {
1023
+ case 'd':
1024
+ day = getNumber('d');
1025
+ break;
1026
+ case 'D':
1027
+ getName('D', dayNamesShort, dayNames);
1028
+ break;
1029
+ case 'o':
1030
+ doy = getNumber('o');
1031
+ break;
1032
+ case 'm':
1033
+ month = getNumber('m');
1034
+ break;
1035
+ case 'M':
1036
+ month = getName('M', monthNamesShort, monthNames);
1037
+ break;
1038
+ case 'y':
1039
+ year = getNumber('y');
1040
+ break;
1041
+ case '@':
1042
+ var date = new Date(getNumber('@'));
1043
+ year = date.getFullYear();
1044
+ month = date.getMonth() + 1;
1045
+ day = date.getDate();
1046
+ break;
1047
+ case '!':
1048
+ var date = new Date((getNumber('!') - this._ticksTo1970) / 10000);
1049
+ year = date.getFullYear();
1050
+ month = date.getMonth() + 1;
1051
+ day = date.getDate();
1052
+ break;
1053
+ case "'":
1054
+ if (lookAhead("'"))
1055
+ checkLiteral();
1056
+ else
1057
+ literal = true;
1058
+ break;
1059
+ default:
1060
+ checkLiteral();
1061
+ }
1062
+ }
1063
+ if (year == -1)
1064
+ year = new Date().getFullYear();
1065
+ else if (year < 100)
1066
+ year += new Date().getFullYear() - new Date().getFullYear() % 100 +
1067
+ (year <= shortYearCutoff ? 0 : -100);
1068
+ if (doy > -1) {
1069
+ month = 1;
1070
+ day = doy;
1071
+ do {
1072
+ var dim = this._getDaysInMonth(year, month - 1);
1073
+ if (day <= dim)
1074
+ break;
1075
+ month++;
1076
+ day -= dim;
1077
+ } while (true);
1078
+ }
1079
+ var date = this._daylightSavingAdjust(new Date(year, month - 1, day));
1080
+ if (date.getFullYear() != year || date.getMonth() + 1 != month || date.getDate() != day)
1081
+ throw 'Invalid date'; // E.g. 31/02/*
1082
+ return date;
1083
+ },
1084
+
1085
+ /* Standard date formats. */
1086
+ ATOM: 'yy-mm-dd', // RFC 3339 (ISO 8601)
1087
+ COOKIE: 'D, dd M yy',
1088
+ ISO_8601: 'yy-mm-dd',
1089
+ RFC_822: 'D, d M y',
1090
+ RFC_850: 'DD, dd-M-y',
1091
+ RFC_1036: 'D, d M y',
1092
+ RFC_1123: 'D, d M yy',
1093
+ RFC_2822: 'D, d M yy',
1094
+ RSS: 'D, d M y', // RFC 822
1095
+ TICKS: '!',
1096
+ TIMESTAMP: '@',
1097
+ W3C: 'yy-mm-dd', // ISO 8601
1098
+
1099
+ _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
1100
+ Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000),
1101
+
1102
+ /* Format a date object into a string value.
1103
+ The format can be combinations of the following:
1104
+ d - day of month (no leading zero)
1105
+ dd - day of month (two digit)
1106
+ o - day of year (no leading zeros)
1107
+ oo - day of year (three digit)
1108
+ D - day name short
1109
+ DD - day name long
1110
+ m - month of year (no leading zero)
1111
+ mm - month of year (two digit)
1112
+ M - month name short
1113
+ MM - month name long
1114
+ y - year (two digit)
1115
+ yy - year (four digit)
1116
+ @ - Unix timestamp (ms since 01/01/1970)
1117
+ ! - Windows ticks (100ns since 01/01/0001)
1118
+ '...' - literal text
1119
+ '' - single quote
1120
+
1121
+ @param format string - the desired format of the date
1122
+ @param date Date - the date value to format
1123
+ @param settings Object - attributes include:
1124
+ dayNamesShort string[7] - abbreviated names of the days from Sunday (optional)
1125
+ dayNames string[7] - names of the days from Sunday (optional)
1126
+ monthNamesShort string[12] - abbreviated names of the months (optional)
1127
+ monthNames string[12] - names of the months (optional)
1128
+ @return string - the date in the above format */
1129
+ formatDate: function (format, date, settings) {
1130
+ if (!date)
1131
+ return '';
1132
+ var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
1133
+ var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
1134
+ var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;
1135
+ var monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames;
1136
+ // Check whether a format character is doubled
1137
+ var lookAhead = function(match) {
1138
+ var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
1139
+ if (matches)
1140
+ iFormat++;
1141
+ return matches;
1142
+ };
1143
+ // Format a number, with leading zero if necessary
1144
+ var formatNumber = function(match, value, len) {
1145
+ var num = '' + value;
1146
+ if (lookAhead(match))
1147
+ while (num.length < len)
1148
+ num = '0' + num;
1149
+ return num;
1150
+ };
1151
+ // Format a name, short or long as requested
1152
+ var formatName = function(match, value, shortNames, longNames) {
1153
+ return (lookAhead(match) ? longNames[value] : shortNames[value]);
1154
+ };
1155
+ var output = '';
1156
+ var literal = false;
1157
+ if (date)
1158
+ for (var iFormat = 0; iFormat < format.length; iFormat++) {
1159
+ if (literal)
1160
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
1161
+ literal = false;
1162
+ else
1163
+ output += format.charAt(iFormat);
1164
+ else
1165
+ switch (format.charAt(iFormat)) {
1166
+ case 'd':
1167
+ output += formatNumber('d', date.getDate(), 2);
1168
+ break;
1169
+ case 'D':
1170
+ output += formatName('D', date.getDay(), dayNamesShort, dayNames);
1171
+ break;
1172
+ case 'o':
1173
+ output += formatNumber('o',
1174
+ (date.getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000, 3);
1175
+ break;
1176
+ case 'm':
1177
+ output += formatNumber('m', date.getMonth() + 1, 2);
1178
+ break;
1179
+ case 'M':
1180
+ output += formatName('M', date.getMonth(), monthNamesShort, monthNames);
1181
+ break;
1182
+ case 'y':
1183
+ output += (lookAhead('y') ? date.getFullYear() :
1184
+ (date.getYear() % 100 < 10 ? '0' : '') + date.getYear() % 100);
1185
+ break;
1186
+ case '@':
1187
+ output += date.getTime();
1188
+ break;
1189
+ case '!':
1190
+ output += date.getTime() * 10000 + this._ticksTo1970;
1191
+ break;
1192
+ case "'":
1193
+ if (lookAhead("'"))
1194
+ output += "'";
1195
+ else
1196
+ literal = true;
1197
+ break;
1198
+ default:
1199
+ output += format.charAt(iFormat);
1200
+ }
1201
+ }
1202
+ return output;
1203
+ },
1204
+
1205
+ /* Extract all possible characters from the date format. */
1206
+ _possibleChars: function (format) {
1207
+ var chars = '';
1208
+ var literal = false;
1209
+ // Check whether a format character is doubled
1210
+ var lookAhead = function(match) {
1211
+ var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) == match);
1212
+ if (matches)
1213
+ iFormat++;
1214
+ return matches;
1215
+ };
1216
+ for (var iFormat = 0; iFormat < format.length; iFormat++)
1217
+ if (literal)
1218
+ if (format.charAt(iFormat) == "'" && !lookAhead("'"))
1219
+ literal = false;
1220
+ else
1221
+ chars += format.charAt(iFormat);
1222
+ else
1223
+ switch (format.charAt(iFormat)) {
1224
+ case 'd': case 'm': case 'y': case '@':
1225
+ chars += '0123456789';
1226
+ break;
1227
+ case 'D': case 'M':
1228
+ return null; // Accept anything
1229
+ case "'":
1230
+ if (lookAhead("'"))
1231
+ chars += "'";
1232
+ else
1233
+ literal = true;
1234
+ break;
1235
+ default:
1236
+ chars += format.charAt(iFormat);
1237
+ }
1238
+ return chars;
1239
+ },
1240
+
1241
+ /* Get a setting value, defaulting if necessary. */
1242
+ _get: function(inst, name) {
1243
+ return inst.settings[name] !== undefined ?
1244
+ inst.settings[name] : this._defaults[name];
1245
+ },
1246
+
1247
+ /* Parse existing date and initialise date picker. */
1248
+ _setDateFromField: function(inst, noDefault) {
1249
+ if (inst.input.val() == inst.lastVal) {
1250
+ return;
1251
+ }
1252
+ var dateFormat = this._get(inst, 'dateFormat');
1253
+ var dates = inst.lastVal = inst.input ? inst.input.val() : null;
1254
+ var date, defaultDate;
1255
+ date = defaultDate = this._getDefaultDate(inst);
1256
+ var settings = this._getFormatConfig(inst);
1257
+ try {
1258
+ date = this.parseDate(dateFormat, dates, settings) || defaultDate;
1259
+ } catch (event) {
1260
+ this.log(event);
1261
+ dates = (noDefault ? '' : dates);
1262
+ }
1263
+ inst.selectedDay = date.getDate();
1264
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
1265
+ inst.drawYear = inst.selectedYear = date.getFullYear();
1266
+ inst.currentDay = (dates ? date.getDate() : 0);
1267
+ inst.currentMonth = (dates ? date.getMonth() : 0);
1268
+ inst.currentYear = (dates ? date.getFullYear() : 0);
1269
+ this._adjustInstDate(inst);
1270
+ },
1271
+
1272
+ /* Retrieve the default date shown on opening. */
1273
+ _getDefaultDate: function(inst) {
1274
+ return this._restrictMinMax(inst,
1275
+ this._determineDate(inst, this._get(inst, 'defaultDate'), new Date()));
1276
+ },
1277
+
1278
+ /* A date may be specified as an exact value or a relative one. */
1279
+ _determineDate: function(inst, date, defaultDate) {
1280
+ var offsetNumeric = function(offset) {
1281
+ var date = new Date();
1282
+ date.setDate(date.getDate() + offset);
1283
+ return date;
1284
+ };
1285
+ var offsetString = function(offset) {
1286
+ try {
1287
+ return $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),
1288
+ offset, $.datepicker._getFormatConfig(inst));
1289
+ }
1290
+ catch (e) {
1291
+ // Ignore
1292
+ }
1293
+ var date = (offset.toLowerCase().match(/^c/) ?
1294
+ $.datepicker._getDate(inst) : null) || new Date();
1295
+ var year = date.getFullYear();
1296
+ var month = date.getMonth();
1297
+ var day = date.getDate();
1298
+ var pattern = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;
1299
+ var matches = pattern.exec(offset);
1300
+ while (matches) {
1301
+ switch (matches[2] || 'd') {
1302
+ case 'd' : case 'D' :
1303
+ day += parseInt(matches[1],10); break;
1304
+ case 'w' : case 'W' :
1305
+ day += parseInt(matches[1],10) * 7; break;
1306
+ case 'm' : case 'M' :
1307
+ month += parseInt(matches[1],10);
1308
+ day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
1309
+ break;
1310
+ case 'y': case 'Y' :
1311
+ year += parseInt(matches[1],10);
1312
+ day = Math.min(day, $.datepicker._getDaysInMonth(year, month));
1313
+ break;
1314
+ }
1315
+ matches = pattern.exec(offset);
1316
+ }
1317
+ return new Date(year, month, day);
1318
+ };
1319
+ var newDate = (date == null || date === '' ? defaultDate : (typeof date == 'string' ? offsetString(date) :
1320
+ (typeof date == 'number' ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime()))));
1321
+ newDate = (newDate && newDate.toString() == 'Invalid Date' ? defaultDate : newDate);
1322
+ if (newDate) {
1323
+ newDate.setHours(0);
1324
+ newDate.setMinutes(0);
1325
+ newDate.setSeconds(0);
1326
+ newDate.setMilliseconds(0);
1327
+ }
1328
+ return this._daylightSavingAdjust(newDate);
1329
+ },
1330
+
1331
+ /* Handle switch to/from daylight saving.
1332
+ Hours may be non-zero on daylight saving cut-over:
1333
+ > 12 when midnight changeover, but then cannot generate
1334
+ midnight datetime, so jump to 1AM, otherwise reset.
1335
+ @param date (Date) the date to check
1336
+ @return (Date) the corrected date */
1337
+ _daylightSavingAdjust: function(date) {
1338
+ if (!date) return null;
1339
+ date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);
1340
+ return date;
1341
+ },
1342
+
1343
+ /* Set the date(s) directly. */
1344
+ _setDate: function(inst, date, noChange) {
1345
+ var clear = !date;
1346
+ var origMonth = inst.selectedMonth;
1347
+ var origYear = inst.selectedYear;
1348
+ var newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));
1349
+ inst.selectedDay = inst.currentDay = newDate.getDate();
1350
+ inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
1351
+ inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
1352
+ if ((origMonth != inst.selectedMonth || origYear != inst.selectedYear) && !noChange)
1353
+ this._notifyChange(inst);
1354
+ this._adjustInstDate(inst);
1355
+ if (inst.input) {
1356
+ inst.input.val(clear ? '' : this._formatDate(inst));
1357
+ }
1358
+ },
1359
+
1360
+ /* Retrieve the date(s) directly. */
1361
+ _getDate: function(inst) {
1362
+ var startDate = (!inst.currentYear || (inst.input && inst.input.val() == '') ? null :
1363
+ this._daylightSavingAdjust(new Date(
1364
+ inst.currentYear, inst.currentMonth, inst.currentDay)));
1365
+ return startDate;
1366
+ },
1367
+
1368
+ /* Generate the HTML for the current state of the date picker. */
1369
+ _generateHTML: function(inst) {
1370
+ var today = new Date();
1371
+ today = this._daylightSavingAdjust(
1372
+ new Date(today.getFullYear(), today.getMonth(), today.getDate())); // clear time
1373
+ var isRTL = this._get(inst, 'isRTL');
1374
+ var showButtonPanel = this._get(inst, 'showButtonPanel');
1375
+ var hideIfNoPrevNext = this._get(inst, 'hideIfNoPrevNext');
1376
+ var navigationAsDateFormat = this._get(inst, 'navigationAsDateFormat');
1377
+ var numMonths = this._getNumberOfMonths(inst);
1378
+ var showCurrentAtPos = this._get(inst, 'showCurrentAtPos');
1379
+ var stepMonths = this._get(inst, 'stepMonths');
1380
+ var isMultiMonth = (numMonths[0] != 1 || numMonths[1] != 1);
1381
+ var currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) :
1382
+ new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
1383
+ var minDate = this._getMinMaxDate(inst, 'min');
1384
+ var maxDate = this._getMinMaxDate(inst, 'max');
1385
+ var drawMonth = inst.drawMonth - showCurrentAtPos;
1386
+ var drawYear = inst.drawYear;
1387
+ if (drawMonth < 0) {
1388
+ drawMonth += 12;
1389
+ drawYear--;
1390
+ }
1391
+ if (maxDate) {
1392
+ var maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
1393
+ maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate()));
1394
+ maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw);
1395
+ while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {
1396
+ drawMonth--;
1397
+ if (drawMonth < 0) {
1398
+ drawMonth = 11;
1399
+ drawYear--;
1400
+ }
1401
+ }
1402
+ }
1403
+ inst.drawMonth = drawMonth;
1404
+ inst.drawYear = drawYear;
1405
+ var prevText = this._get(inst, 'prevText');
1406
+ prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText,
1407
+ this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)),
1408
+ this._getFormatConfig(inst)));
1409
+ var prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ?
1410
+ '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_' + dpuuid +
1411
+ '.datepicker._adjustDate(\'#' + inst.id + '\', -' + stepMonths + ', \'M\');"' +
1412
+ ' title="' + prevText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>' :
1413
+ (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="'+ prevText +'"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'e' : 'w') + '">' + prevText + '</span></a>'));
1414
+ var nextText = this._get(inst, 'nextText');
1415
+ nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText,
1416
+ this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)),
1417
+ this._getFormatConfig(inst)));
1418
+ var next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ?
1419
+ '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_' + dpuuid +
1420
+ '.datepicker._adjustDate(\'#' + inst.id + '\', +' + stepMonths + ', \'M\');"' +
1421
+ ' title="' + nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>' :
1422
+ (hideIfNoPrevNext ? '' : '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+ nextText + '"><span class="ui-icon ui-icon-circle-triangle-' + ( isRTL ? 'w' : 'e') + '">' + nextText + '</span></a>'));
1423
+ var currentText = this._get(inst, 'currentText');
1424
+ var gotoDate = (this._get(inst, 'gotoCurrent') && inst.currentDay ? currentDate : today);
1425
+ currentText = (!navigationAsDateFormat ? currentText :
1426
+ this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)));
1427
+ var controls = (!inst.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_' + dpuuid +
1428
+ '.datepicker._hideDatepicker();">' + this._get(inst, 'closeText') + '</button>' : '');
1429
+ var buttonPanel = (showButtonPanel) ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (isRTL ? controls : '') +
1430
+ (this._isInRange(inst, gotoDate) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_' + dpuuid +
1431
+ '.datepicker._gotoToday(\'#' + inst.id + '\');"' +
1432
+ '>' + currentText + '</button>' : '') + (isRTL ? '' : controls) + '</div>' : '';
1433
+ var firstDay = parseInt(this._get(inst, 'firstDay'),10);
1434
+ firstDay = (isNaN(firstDay) ? 0 : firstDay);
1435
+ var showWeek = this._get(inst, 'showWeek');
1436
+ var dayNames = this._get(inst, 'dayNames');
1437
+ var dayNamesShort = this._get(inst, 'dayNamesShort');
1438
+ var dayNamesMin = this._get(inst, 'dayNamesMin');
1439
+ var monthNames = this._get(inst, 'monthNames');
1440
+ var monthNamesShort = this._get(inst, 'monthNamesShort');
1441
+ var beforeShowDay = this._get(inst, 'beforeShowDay');
1442
+ var showOtherMonths = this._get(inst, 'showOtherMonths');
1443
+ var selectOtherMonths = this._get(inst, 'selectOtherMonths');
1444
+ var calculateWeek = this._get(inst, 'calculateWeek') || this.iso8601Week;
1445
+ var defaultDate = this._getDefaultDate(inst);
1446
+ var html = '';
1447
+ for (var row = 0; row < numMonths[0]; row++) {
1448
+ var group = '';
1449
+ for (var col = 0; col < numMonths[1]; col++) {
1450
+ var selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));
1451
+ var cornerClass = ' ui-corner-all';
1452
+ var calender = '';
1453
+ if (isMultiMonth) {
1454
+ calender += '<div class="ui-datepicker-group';
1455
+ if (numMonths[1] > 1)
1456
+ switch (col) {
1457
+ case 0: calender += ' ui-datepicker-group-first';
1458
+ cornerClass = ' ui-corner-' + (isRTL ? 'right' : 'left'); break;
1459
+ case numMonths[1]-1: calender += ' ui-datepicker-group-last';
1460
+ cornerClass = ' ui-corner-' + (isRTL ? 'left' : 'right'); break;
1461
+ default: calender += ' ui-datepicker-group-middle'; cornerClass = ''; break;
1462
+ }
1463
+ calender += '">';
1464
+ }
1465
+ calender += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + cornerClass + '">' +
1466
+ (/all|left/.test(cornerClass) && row == 0 ? (isRTL ? next : prev) : '') +
1467
+ (/all|right/.test(cornerClass) && row == 0 ? (isRTL ? prev : next) : '') +
1468
+ this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
1469
+ row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers
1470
+ '</div><table class="ui-datepicker-calendar"><thead>' +
1471
+ '<tr>';
1472
+ var thead = (showWeek ? '<th class="ui-datepicker-week-col">' + this._get(inst, 'weekHeader') + '</th>' : '');
1473
+ for (var dow = 0; dow < 7; dow++) { // days of the week
1474
+ var day = (dow + firstDay) % 7;
1475
+ thead += '<th' + ((dow + firstDay + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"' : '') + '>' +
1476
+ '<span title="' + dayNames[day] + '">' + dayNamesMin[day] + '</span></th>';
1477
+ }
1478
+ calender += thead + '</tr></thead><tbody>';
1479
+ var daysInMonth = this._getDaysInMonth(drawYear, drawMonth);
1480
+ if (drawYear == inst.selectedYear && drawMonth == inst.selectedMonth)
1481
+ inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);
1482
+ var leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
1483
+ var numRows = (isMultiMonth ? 6 : Math.ceil((leadDays + daysInMonth) / 7)); // calculate the number of rows to generate
1484
+ var printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));
1485
+ for (var dRow = 0; dRow < numRows; dRow++) { // create date picker rows
1486
+ calender += '<tr>';
1487
+ var tbody = (!showWeek ? '' : '<td class="ui-datepicker-week-col">' +
1488
+ this._get(inst, 'calculateWeek')(printDate) + '</td>');
1489
+ for (var dow = 0; dow < 7; dow++) { // create date picker days
1490
+ var daySettings = (beforeShowDay ?
1491
+ beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, '']);
1492
+ var otherMonth = (printDate.getMonth() != drawMonth);
1493
+ var unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] ||
1494
+ (minDate && printDate < minDate) || (maxDate && printDate > maxDate);
1495
+ tbody += '<td class="' +
1496
+ ((dow + firstDay + 6) % 7 >= 5 ? ' ui-datepicker-week-end' : '') + // highlight weekends
1497
+ (otherMonth ? ' ui-datepicker-other-month' : '') + // highlight days from other months
1498
+ ((printDate.getTime() == selectedDate.getTime() && drawMonth == inst.selectedMonth && inst._keyEvent) || // user pressed key
1499
+ (defaultDate.getTime() == printDate.getTime() && defaultDate.getTime() == selectedDate.getTime()) ?
1500
+ // or defaultDate is current printedDate and defaultDate is selectedDate
1501
+ ' ' + this._dayOverClass : '') + // highlight selected day
1502
+ (unselectable ? ' ' + this._unselectableClass + ' ui-state-disabled': '') + // highlight unselectable days
1503
+ (otherMonth && !showOtherMonths ? '' : ' ' + daySettings[1] + // highlight custom dates
1504
+ (printDate.getTime() == currentDate.getTime() ? ' ' + this._currentClass : '') + // highlight selected day
1505
+ (printDate.getTime() == today.getTime() ? ' ui-datepicker-today' : '')) + '"' + // highlight today (if different)
1506
+ ((!otherMonth || showOtherMonths) && daySettings[2] ? ' title="' + daySettings[2] + '"' : '') + // cell title
1507
+ (unselectable ? '' : ' onclick="DP_jQuery_' + dpuuid + '.datepicker._selectDay(\'#' +
1508
+ inst.id + '\',' + printDate.getMonth() + ',' + printDate.getFullYear() + ', this);return false;"') + '>' + // actions
1509
+ (otherMonth && !showOtherMonths ? '&#xa0;' : // display for other months
1510
+ (unselectable ? '<span class="ui-state-default">' + printDate.getDate() + '</span>' : '<a class="ui-state-default' +
1511
+ (printDate.getTime() == today.getTime() ? ' ui-state-highlight' : '') +
1512
+ (printDate.getTime() == currentDate.getTime() ? ' ui-state-active' : '') + // highlight selected day
1513
+ (otherMonth ? ' ui-priority-secondary' : '') + // distinguish dates from other months
1514
+ '" href="#">' + printDate.getDate() + '</a>')) + '</td>'; // display selectable date
1515
+ printDate.setDate(printDate.getDate() + 1);
1516
+ printDate = this._daylightSavingAdjust(printDate);
1517
+ }
1518
+ calender += tbody + '</tr>';
1519
+ }
1520
+ drawMonth++;
1521
+ if (drawMonth > 11) {
1522
+ drawMonth = 0;
1523
+ drawYear++;
1524
+ }
1525
+ calender += '</tbody></table>' + (isMultiMonth ? '</div>' +
1526
+ ((numMonths[0] > 0 && col == numMonths[1]-1) ? '<div class="ui-datepicker-row-break"></div>' : '') : '');
1527
+ group += calender;
1528
+ }
1529
+ html += group;
1530
+ }
1531
+ html += buttonPanel + ($.browser.msie && parseInt($.browser.version,10) < 7 && !inst.inline ?
1532
+ '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>' : '');
1533
+ inst._keyEvent = false;
1534
+ return html;
1535
+ },
1536
+
1537
+ /* Generate the month and year header. */
1538
+ _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
1539
+ secondary, monthNames, monthNamesShort) {
1540
+ var changeMonth = this._get(inst, 'changeMonth');
1541
+ var changeYear = this._get(inst, 'changeYear');
1542
+ var showMonthAfterYear = this._get(inst, 'showMonthAfterYear');
1543
+ var html = '<div class="ui-datepicker-title">';
1544
+ var monthHtml = '';
1545
+ // month selection
1546
+ if (secondary || !changeMonth)
1547
+ monthHtml += '<span class="ui-datepicker-month">' + monthNames[drawMonth] + '</span>';
1548
+ else {
1549
+ var inMinYear = (minDate && minDate.getFullYear() == drawYear);
1550
+ var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear);
1551
+ monthHtml += '<select class="ui-datepicker-month" ' +
1552
+ 'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'M\');" ' +
1553
+ 'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
1554
+ '>';
1555
+ for (var month = 0; month < 12; month++) {
1556
+ if ((!inMinYear || month >= minDate.getMonth()) &&
1557
+ (!inMaxYear || month <= maxDate.getMonth()))
1558
+ monthHtml += '<option value="' + month + '"' +
1559
+ (month == drawMonth ? ' selected="selected"' : '') +
1560
+ '>' + monthNamesShort[month] + '</option>';
1561
+ }
1562
+ monthHtml += '</select>';
1563
+ }
1564
+ if (!showMonthAfterYear)
1565
+ html += monthHtml + (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '');
1566
+ // year selection
1567
+ inst.yearshtml = '';
1568
+ if (secondary || !changeYear)
1569
+ html += '<span class="ui-datepicker-year">' + drawYear + '</span>';
1570
+ else {
1571
+ // determine range of years to display
1572
+ var years = this._get(inst, 'yearRange').split(':');
1573
+ var thisYear = new Date().getFullYear();
1574
+ var determineYear = function(value) {
1575
+ var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) :
1576
+ (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) :
1577
+ parseInt(value, 10)));
1578
+ return (isNaN(year) ? thisYear : year);
1579
+ };
1580
+ var year = determineYear(years[0]);
1581
+ var endYear = Math.max(year, determineYear(years[1] || ''));
1582
+ year = (minDate ? Math.max(year, minDate.getFullYear()) : year);
1583
+ endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear);
1584
+ inst.yearshtml += '<select class="ui-datepicker-year" ' +
1585
+ 'onchange="DP_jQuery_' + dpuuid + '.datepicker._selectMonthYear(\'#' + inst.id + '\', this, \'Y\');" ' +
1586
+ 'onclick="DP_jQuery_' + dpuuid + '.datepicker._clickMonthYear(\'#' + inst.id + '\');"' +
1587
+ '>';
1588
+ for (; year <= endYear; year++) {
1589
+ inst.yearshtml += '<option value="' + year + '"' +
1590
+ (year == drawYear ? ' selected="selected"' : '') +
1591
+ '>' + year + '</option>';
1592
+ }
1593
+ inst.yearshtml += '</select>';
1594
+ //when showing there is no need for later update
1595
+ if( ! $.browser.mozilla ){
1596
+ html += inst.yearshtml;
1597
+ inst.yearshtml = null;
1598
+ } else {
1599
+ // will be replaced later with inst.yearshtml
1600
+ html += '<select class="ui-datepicker-year"><option value="' + drawYear + '" selected="selected">' + drawYear + '</option></select>';
1601
+ }
1602
+ }
1603
+ html += this._get(inst, 'yearSuffix');
1604
+ if (showMonthAfterYear)
1605
+ html += (secondary || !(changeMonth && changeYear) ? '&#xa0;' : '') + monthHtml;
1606
+ html += '</div>'; // Close datepicker_header
1607
+ return html;
1608
+ },
1609
+
1610
+ /* Adjust one of the date sub-fields. */
1611
+ _adjustInstDate: function(inst, offset, period) {
1612
+ var year = inst.drawYear + (period == 'Y' ? offset : 0);
1613
+ var month = inst.drawMonth + (period == 'M' ? offset : 0);
1614
+ var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) +
1615
+ (period == 'D' ? offset : 0);
1616
+ var date = this._restrictMinMax(inst,
1617
+ this._daylightSavingAdjust(new Date(year, month, day)));
1618
+ inst.selectedDay = date.getDate();
1619
+ inst.drawMonth = inst.selectedMonth = date.getMonth();
1620
+ inst.drawYear = inst.selectedYear = date.getFullYear();
1621
+ if (period == 'M' || period == 'Y')
1622
+ this._notifyChange(inst);
1623
+ },
1624
+
1625
+ /* Ensure a date is within any min/max bounds. */
1626
+ _restrictMinMax: function(inst, date) {
1627
+ var minDate = this._getMinMaxDate(inst, 'min');
1628
+ var maxDate = this._getMinMaxDate(inst, 'max');
1629
+ var newDate = (minDate && date < minDate ? minDate : date);
1630
+ newDate = (maxDate && newDate > maxDate ? maxDate : newDate);
1631
+ return newDate;
1632
+ },
1633
+
1634
+ /* Notify change of month/year. */
1635
+ _notifyChange: function(inst) {
1636
+ var onChange = this._get(inst, 'onChangeMonthYear');
1637
+ if (onChange)
1638
+ onChange.apply((inst.input ? inst.input[0] : null),
1639
+ [inst.selectedYear, inst.selectedMonth + 1, inst]);
1640
+ },
1641
+
1642
+ /* Determine the number of months to show. */
1643
+ _getNumberOfMonths: function(inst) {
1644
+ var numMonths = this._get(inst, 'numberOfMonths');
1645
+ return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths));
1646
+ },
1647
+
1648
+ /* Determine the current maximum date - ensure no time components are set. */
1649
+ _getMinMaxDate: function(inst, minMax) {
1650
+ return this._determineDate(inst, this._get(inst, minMax + 'Date'), null);
1651
+ },
1652
+
1653
+ /* Find the number of days in a given month. */
1654
+ _getDaysInMonth: function(year, month) {
1655
+ return 32 - new Date(year, month, 32).getDate();
1656
+ },
1657
+
1658
+ /* Find the day of the week of the first of a month. */
1659
+ _getFirstDayOfMonth: function(year, month) {
1660
+ return new Date(year, month, 1).getDay();
1661
+ },
1662
+
1663
+ /* Determines if we should allow a "next/prev" month display change. */
1664
+ _canAdjustMonth: function(inst, offset, curYear, curMonth) {
1665
+ var numMonths = this._getNumberOfMonths(inst);
1666
+ var date = this._daylightSavingAdjust(new Date(curYear,
1667
+ curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));
1668
+ if (offset < 0)
1669
+ date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));
1670
+ return this._isInRange(inst, date);
1671
+ },
1672
+
1673
+ /* Is the given date in the accepted range? */
1674
+ _isInRange: function(inst, date) {
1675
+ var minDate = this._getMinMaxDate(inst, 'min');
1676
+ var maxDate = this._getMinMaxDate(inst, 'max');
1677
+ return ((!minDate || date.getTime() >= minDate.getTime()) &&
1678
+ (!maxDate || date.getTime() <= maxDate.getTime()));
1679
+ },
1680
+
1681
+ /* Provide the configuration settings for formatting/parsing. */
1682
+ _getFormatConfig: function(inst) {
1683
+ var shortYearCutoff = this._get(inst, 'shortYearCutoff');
1684
+ shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :
1685
+ new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
1686
+ return {shortYearCutoff: shortYearCutoff,
1687
+ dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'),
1688
+ monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')};
1689
+ },
1690
+
1691
+ /* Format the given date for display. */
1692
+ _formatDate: function(inst, day, month, year) {
1693
+ if (!day) {
1694
+ inst.currentDay = inst.selectedDay;
1695
+ inst.currentMonth = inst.selectedMonth;
1696
+ inst.currentYear = inst.selectedYear;
1697
+ }
1698
+ var date = (day ? (typeof day == 'object' ? day :
1699
+ this._daylightSavingAdjust(new Date(year, month, day))) :
1700
+ this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay)));
1701
+ return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst));
1702
+ }
1703
+ });
1704
+
1705
+ /* jQuery extend now ignores nulls! */
1706
+ function extendRemove(target, props) {
1707
+ $.extend(target, props);
1708
+ for (var name in props)
1709
+ if (props[name] == null || props[name] == undefined)
1710
+ target[name] = props[name];
1711
+ return target;
1712
+ };
1713
+
1714
+ /* Determine whether an object is an array. */
1715
+ function isArray(a) {
1716
+ return (a && (($.browser.safari && typeof a == 'object' && a.length) ||
1717
+ (a.constructor && a.constructor.toString().match(/\Array\(\)/))));
1718
+ };
1719
+
1720
+ /* Invoke the datepicker functionality.
1721
+ @param options string - a command, optionally followed by additional parameters or
1722
+ Object - settings for attaching new datepicker functionality
1723
+ @return jQuery object */
1724
+ $.fn.datepicker = function(options){
1725
+
1726
+ /* Initialise the date picker. */
1727
+ if (!$.datepicker.initialized) {
1728
+ $(document).mousedown($.datepicker._checkExternalClick).
1729
+ find('body').append($.datepicker.dpDiv);
1730
+ $.datepicker.initialized = true;
1731
+ }
1732
+
1733
+ var otherArgs = Array.prototype.slice.call(arguments, 1);
1734
+ if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget'))
1735
+ return $.datepicker['_' + options + 'Datepicker'].
1736
+ apply($.datepicker, [this[0]].concat(otherArgs));
1737
+ if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string')
1738
+ return $.datepicker['_' + options + 'Datepicker'].
1739
+ apply($.datepicker, [this[0]].concat(otherArgs));
1740
+ return this.each(function() {
1741
+ typeof options == 'string' ?
1742
+ $.datepicker['_' + options + 'Datepicker'].
1743
+ apply($.datepicker, [this].concat(otherArgs)) :
1744
+ $.datepicker._attachDatepicker(this, options);
1745
+ });
1746
+ };
1747
+
1748
+ $.datepicker = new Datepicker(); // singleton instance
1749
+ $.datepicker.initialized = false;
1750
+ $.datepicker.uuid = new Date().getTime();
1751
+ $.datepicker.version = "1.8.7";
1752
+
1753
+ // Workaround for #4055
1754
+ // Add another global to avoid noConflict issues with inline event handlers
1755
+ window['DP_jQuery_' + dpuuid] = $;
1756
+
1757
+ })(jQuery);