Gwolle Guestbook - Version 4.0.0

Version Description

  • 2020-04-28
  • Many CSS ids and classes have changed, please review your custom CSS.
  • Plugin supports multiple forms on one page now.
  • Fix serialized options.
  • Add pause on hover for super-simple-slider.
  • Fix updating of datetime on admin editor.
  • Fix double class attributes in form.
  • Run timeout function only once, set timout to 1 second.
  • Remove separators from BBcode icons.
  • Add loading="lazy" attribute to bbcode images.
  • Add filters 'gwolle_gb_author_origin_prefill', 'gwolle_gb_author_content_prefill' and 'gwolle_gb_author_content_label'.
  • Deprecate 'gwolle_gb_content_label' filter.
  • Update strings for add-on.
Download this release

Release Info

Developer mpol
Plugin Icon 128x128 Gwolle Guestbook
Version 4.0.0
Comparing to
See all releases

Code changes from version 3.1.9 to 4.0.0

Files changed (56) hide show
  1. add-on/gb-add-on.php +33 -6
  2. add-on/index.html +0 -0
  3. admin/css/gwolle-gb-admin.css +4 -1
  4. admin/gb-ajax-management.php +2 -2
  5. admin/gb-page-add-on.php +10 -6
  6. admin/gb-page-editor.php +24 -22
  7. admin/gb-page-entries.php +3 -3
  8. admin/gb-page-export.php +3 -3
  9. admin/gb-page-gwolle-gb.php +10 -5
  10. admin/gb-page-import.php +2 -2
  11. admin/gb-page-settings.php +8 -10
  12. admin/gb-upgrade.php +16 -2
  13. admin/gwolle-gb-hooks.php +38 -1
  14. admin/js/gwolle-gb-admin.js +4 -19
  15. admin/tabs/gb-admintab.php +2 -2
  16. admin/tabs/gb-antispamtab.php +10 -10
  17. admin/tabs/gb-debugtab.php +3 -5
  18. admin/tabs/gb-emailtab.php +8 -8
  19. admin/tabs/gb-formtab.php +16 -16
  20. admin/tabs/gb-readingtab.php +17 -17
  21. admin/tabs/gb-uninstalltab.php +6 -5
  22. changelog-v0.txt → changelog/changelog-v0.txt +0 -0
  23. changelog-v1.txt → changelog/changelog-v1.txt +0 -0
  24. changelog-v2.txt → changelog/changelog-v2.txt +0 -0
  25. changelog/changelog-v3.txt +89 -0
  26. changelog/index.html +0 -0
  27. docs/filters/gwolle_gb_author_content_label.txt +25 -0
  28. docs/filters/gwolle_gb_author_content_prefill.txt +25 -0
  29. docs/filters/gwolle_gb_author_email_prefill.txt +1 -1
  30. docs/filters/gwolle_gb_author_name_prefill.txt +1 -1
  31. docs/filters/gwolle_gb_author_origin_prefill.txt +25 -0
  32. docs/filters/gwolle_gb_author_website_prefill.txt +1 -1
  33. docs/filters/gwolle_gb_button.txt +2 -2
  34. docs/filters/gwolle_gb_content_label.txt +1 -0
  35. docs/filters/gwolle_gb_entry_save.txt +2 -2
  36. frontend/css/gwolle-gb-frontend.css +78 -88
  37. frontend/gb-form-posthandling.php +3 -3
  38. frontend/gb-form.php +49 -41
  39. frontend/gb-read.php +5 -5
  40. frontend/gb-shortcodes.php +3 -3
  41. frontend/gwolle_gb-entry.php +9 -5
  42. frontend/js/gwolle-gb-frontend.js +93 -77
  43. frontend/js/sss/sss.js +46 -31
  44. frontend/markitup/jquery.markitup.js +5 -8
  45. frontend/markitup/style.css +16 -15
  46. functions/gb-akismet.php +2 -2
  47. functions/gb-bbcode_emoji.php +1 -1
  48. functions/gb-class-entry.php +33 -27
  49. functions/gb-debug.php +2 -2
  50. functions/gb-settings.php +4 -3
  51. functions/gb-stop-forum-spam.php +1 -1
  52. gwolle-gb-hooks.php +1 -1
  53. gwolle-gb.php +3 -7
  54. lang/gwolle-gb-da_DK.mo +0 -0
  55. lang/gwolle-gb-da_DK.po +0 -1997
  56. readme.txt +27 -18
add-on/gb-add-on.php CHANGED
@@ -1,7 +1,8 @@
1
  <?php
2
  /*
3
  * These strings are not used for the main plugin, but for the Commercial Add-On at:
4
- * http://www.mojomarketplace.com/item/gwolle-gb-add-on
 
5
  */
6
 
7
 
@@ -92,6 +93,10 @@ Entry content:
92
  /* translators: Commercial Add-On metabox line */
93
  esc_html__('Email author', 'gwolle-gb');
94
 
 
 
 
 
95
  // function gwolle_gb_addon_form_starrating( $output ) {
96
  /* translators: Commercial Add-On */
97
  esc_html__('Rating', 'gwolle-gb');
@@ -116,6 +121,8 @@ Entry content:
116
 
117
  // function gwolle_gb_addon_page_settingstab_form() {
118
  /* translators: Commercial Add-On */
 
 
119
  esc_html_e('Configure the extra fields that you want.', 'gwolle-gb');
120
  /* translators: Commercial Add-On */
121
  esc_html_e('The slug of the field is where your data is attached to. Only change the slug if you know what you are doing.', 'gwolle-gb');
@@ -135,7 +142,24 @@ Entry content:
135
  esc_html__('Delete this meta field?', 'gwolle-gb' );
136
  /* translators: Commercial Add-On */
137
  esc_html__('Delete this string row?', 'gwolle-gb' );
138
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
 
140
  // function gwolle_gb_addon_page_settingstab_misc() {
141
  /* translators: Settings page, option for preview */
@@ -154,6 +178,12 @@ Entry content:
154
  esc_html_e('Show author email in Metabox.', 'gwolle-gb');
155
  /* translators: Commercial Add-On */
156
  esc_html_e('The email address of the author will be added to the metabox.', 'gwolle-gb');
 
 
 
 
 
 
157
  /* translators: Settings page, option for delete link */
158
  esc_html_e('Delete link', 'gwolle-gb');
159
  /* translators: Commercial Add-On */
@@ -164,7 +194,6 @@ Entry content:
164
  esc_html_e('Show delete link in Metabox for author.', 'gwolle-gb');
165
  /* translators: Commercial Add-On */
166
  esc_html_e('A link to delete the entry will be added to the metabox. Only visible for moderators and the author.', 'gwolle-gb');
167
-
168
  /* translators: Commercial Add-On, option for auto anonymize */
169
  esc_html_e('Auto Anonymize', 'gwolle-gb');
170
  /* translators: Commercial Add-On, option for auto anonymize */
@@ -175,8 +204,6 @@ Entry content:
175
  esc_html_e('Be very carefull with this option.', 'gwolle-gb');
176
  /* translators: Commercial Add-On, option for auto anonymize */
177
  esc_html_e('Auto Anonymize entries older than:', 'gwolle-gb');
178
-
179
-
180
  /* translators: Commercial Add-On */
181
  esc_html_e('Auto Delete', 'gwolle-gb');
182
  /* translators: Commercial Add-On */
@@ -283,5 +310,5 @@ Entry content:
283
  __( 'When visitors report an entry as abusive, the entry ID will be stored in a cookie in the browser. Also, the IP address will be saved temporarily in the database together with the number of reports.', 'gwolle-gb' );
284
 
285
  /* translators: %s is the name of the meta field */
286
- $error_message = sprintf( esc_html__('The %s field was not filled in, even though it is mandatory.', 'gwolle-gb'), $name );
287
  }
1
  <?php
2
  /*
3
  * These strings are not used for the main plugin, but for the Commercial Add-On at:
4
+ * https://zenoweb.nl/downloads/gwolle-guestbook-add-on/
5
+ * https://www.mojomarketplace.com/item/gwolle-gb-add-on
6
  */
7
 
8
 
93
  /* translators: Commercial Add-On metabox line */
94
  esc_html__('Email author', 'gwolle-gb');
95
 
96
+ //function gwolle_gb_entry_metabox_lines_like_ajax( $gb_metabox, $entry ) {
97
+ /* translators: Commercial Add-On metabox line */
98
+ esc_attr__('Like this entry', 'gwolle-gb');
99
+
100
  // function gwolle_gb_addon_form_starrating( $output ) {
101
  /* translators: Commercial Add-On */
102
  esc_html__('Rating', 'gwolle-gb');
121
 
122
  // function gwolle_gb_addon_page_settingstab_form() {
123
  /* translators: Commercial Add-On */
124
+ esc_html_e('version', 'gwolle-gb');
125
+ /* translators: Commercial Add-On */
126
  esc_html_e('Configure the extra fields that you want.', 'gwolle-gb');
127
  /* translators: Commercial Add-On */
128
  esc_html_e('The slug of the field is where your data is attached to. Only change the slug if you know what you are doing.', 'gwolle-gb');
142
  esc_html__('Delete this meta field?', 'gwolle-gb' );
143
  /* translators: Commercial Add-On */
144
  esc_html__('Delete this string row?', 'gwolle-gb' );
145
+ /* translators: Commercial Add-On */
146
+ esc_html__('The slug %s is a reserved slug, please use a different slug.', 'gwolle-gb');
147
+ /* translators: Commercial Add-On */
148
+ esc_html_e('Type:', 'gwolle-gb');
149
+ /* translators: Commercial Add-On */
150
+ esc_html_e('Text', 'gwolle-gb');
151
+ /* translators: Commercial Add-On */
152
+ esc_html_e('Checkbox', 'gwolle-gb');
153
+ /* translators: Commercial Add-On */
154
+ esc_html_e('Radio buttons', 'gwolle-gb');
155
+ /* translators: Commercial Add-On */
156
+ esc_html_e('Select dropdown', 'gwolle-gb');
157
+ /* translators: Commercial Add-On */
158
+ esc_html_e('Textarea', 'gwolle-gb');
159
+ /* translators: Commercial Add-On */
160
+ esc_html_e('Enter options for the radio buttons or select dropdown.', 'gwolle-gb');
161
+ /* translators: Commercial Add-On */
162
+ esc_html_e( 'Use one option on each line. When the meta field is saved, it will be saved with this value.', 'gwolle-gb' );
163
 
164
  // function gwolle_gb_addon_page_settingstab_misc() {
165
  /* translators: Settings page, option for preview */
178
  esc_html_e('Show author email in Metabox.', 'gwolle-gb');
179
  /* translators: Commercial Add-On */
180
  esc_html_e('The email address of the author will be added to the metabox.', 'gwolle-gb');
181
+ /* translators: Settings page, option for likes */
182
+ esc_html_e('Likes', 'gwolle-gb');
183
+ /* translators: Settings page, option for likes */
184
+ esc_html_e('Enable likes for entries.', 'gwolle-gb');
185
+ /* translators: Settings page, option for likes */
186
+ esc_html_e('This will enable likes, people can add a like to an entry and see the number of likes that were given.', 'gwolle-gb');
187
  /* translators: Settings page, option for delete link */
188
  esc_html_e('Delete link', 'gwolle-gb');
189
  /* translators: Commercial Add-On */
194
  esc_html_e('Show delete link in Metabox for author.', 'gwolle-gb');
195
  /* translators: Commercial Add-On */
196
  esc_html_e('A link to delete the entry will be added to the metabox. Only visible for moderators and the author.', 'gwolle-gb');
 
197
  /* translators: Commercial Add-On, option for auto anonymize */
198
  esc_html_e('Auto Anonymize', 'gwolle-gb');
199
  /* translators: Commercial Add-On, option for auto anonymize */
204
  esc_html_e('Be very carefull with this option.', 'gwolle-gb');
205
  /* translators: Commercial Add-On, option for auto anonymize */
206
  esc_html_e('Auto Anonymize entries older than:', 'gwolle-gb');
 
 
207
  /* translators: Commercial Add-On */
208
  esc_html_e('Auto Delete', 'gwolle-gb');
209
  /* translators: Commercial Add-On */
310
  __( 'When visitors report an entry as abusive, the entry ID will be stored in a cookie in the browser. Also, the IP address will be saved temporarily in the database together with the number of reports.', 'gwolle-gb' );
311
 
312
  /* translators: %s is the name of the meta field */
313
+ esc_html__('The %s field was not filled in, even though it is mandatory.', 'gwolle-gb');
314
  }
add-on/index.html ADDED
File without changes
admin/css/gwolle-gb-admin.css CHANGED
@@ -8,7 +8,7 @@
8
  clear: both;
9
  }
10
 
11
- .gwolle_gb_hide {
12
  display: none;
13
  }
14
 
@@ -275,6 +275,9 @@ form.gwolle_gb_options.active {
275
  width: 100px;
276
  }
277
 
 
 
 
278
 
279
  /*
280
  * Dashboard Widget
8
  clear: both;
9
  }
10
 
11
+ .gwolle-gb-hide {
12
  display: none;
13
  }
14
 
275
  width: 100px;
276
  }
277
 
278
+ .gwolle_gb_options .form-table td {
279
+ vertical-align: top;
280
+ }
281
 
282
  /*
283
  * Dashboard Widget
admin/gb-ajax-management.php CHANGED
@@ -219,14 +219,14 @@ function gwolle_gb_ajax_javascript() {
219
  jQuery( 'input#istrash' ).prop('checked', false);
220
 
221
  jQuery( 'input#remove' ).prop('checked', false);
222
- jQuery( 'label.gwolle_gb_remove' ).addClass('gwolle_gb_hide');
223
  break;
224
  case 'trash':
225
  jQuery( '.entry-icons' ).addClass('trash').removeClass('notrash');
226
  jQuery( '.gwolle_gb_actions' ).addClass('trash').removeClass('notrash');
227
  jQuery( 'input#istrash' ).prop('checked', true);
228
 
229
- jQuery( 'label.gwolle_gb_remove' ).removeClass('gwolle_gb_hide');
230
  break;
231
  }
232
 
219
  jQuery( 'input#istrash' ).prop('checked', false);
220
 
221
  jQuery( 'input#remove' ).prop('checked', false);
222
+ jQuery( 'label.gwolle_gb_remove' ).addClass('gwolle-gb-hide');
223
  break;
224
  case 'trash':
225
  jQuery( '.entry-icons' ).addClass('trash').removeClass('notrash');
226
  jQuery( '.gwolle_gb_actions' ).addClass('trash').removeClass('notrash');
227
  jQuery( 'input#istrash' ).prop('checked', true);
228
 
229
+ jQuery( 'label.gwolle_gb_remove' ).removeClass('gwolle-gb-hide');
230
  break;
231
  }
232
 
admin/gb-page-add-on.php CHANGED
@@ -81,6 +81,7 @@ function gwolle_gb_addon_features() {
81
  <li>' . esc_html__('Social Media Sharing (optional).', 'gwolle-gb').'</li>
82
  <li>' . esc_html__('Star Ratings, with voting and display and Rich Snippets for SEO (optional).','gwolle-gb').'</li>
83
  <li>' . esc_html__('Average star rating per guestbook, including a widget.','gwolle-gb').'</li>
 
84
  <li>' . esc_html__('Preview for the frontend form.','gwolle-gb').'</li>
85
  <li>' . esc_html__('Preview for the admin editor form.','gwolle-gb').'</li>
86
  <li>' . esc_html__('Admin reply on the frontend with AJAX.','gwolle-gb').'</li>
@@ -99,16 +100,19 @@ function gwolle_gb_addon_features() {
99
 
100
 
101
  /*
102
- * Metabox with the link to the marketplace for the add-on.
103
  */
104
  function gwolle_gb_addon_buy() {
105
  ?>
106
  <h3><?php esc_html_e('Buy the Add-On.', 'gwolle-gb'); ?></h3>
107
  <p><?php
108
- $link = '<a href="http://www.mojomarketplace.com/item/gwolle-gb-add-on" target="_blank">';
109
  /* translators: %s is a link */
110
- echo sprintf( esc_html__( 'You can buy this add-on at the %sMOJO Marketplace%s for only $ 9.', 'gwolle-gb' ), $link, '</a>' ); ?><br />
111
- <?php esc_html_e('Support for the add-on is also at the MOJO Marketplace website.','gwolle-gb'); ?>
 
 
 
112
  </p>
113
  <?php
114
  }
@@ -121,14 +125,14 @@ function gwolle_gb_addon_demo() {
121
  ?>
122
  <h3><?php esc_html_e('Demo with the Add-On.', 'gwolle-gb'); ?></h3>
123
  <p><?php
124
- $link = '<a href="http://demo.zenoweb.nl/wordpress-plugins/gwolle-guestbook-the-add-on/" target="_blank">';
125
  /* translators: %s is a link */
126
  echo sprintf( esc_html__( 'The demo site of this plugin is available with the add-on enabled at %sthe demo site%s.', 'gwolle-gb' ), $link, '</a>' ); ?>
127
  </p>
128
 
129
  <h3><?php esc_html_e('Demo without the Add-On.', 'gwolle-gb'); ?></h3>
130
  <p><?php
131
- $link = '<a href="http://demo.zenoweb.nl/wordpress-plugins/gwolle-gb/" target="_blank">';
132
  /* translators: %s is a link */
133
  echo sprintf( esc_html__( 'For comparison you can also see the %sdemo site without the add-on%s enabled.', 'gwolle-gb' ), $link, '</a>' ); ?>
134
  </p>
81
  <li>' . esc_html__('Social Media Sharing (optional).', 'gwolle-gb').'</li>
82
  <li>' . esc_html__('Star Ratings, with voting and display and Rich Snippets for SEO (optional).','gwolle-gb').'</li>
83
  <li>' . esc_html__('Average star rating per guestbook, including a widget.','gwolle-gb').'</li>
84
+ <li>' . esc_html__('Like an entry and view likes for each entry.','gwolle-gb').'</li>
85
  <li>' . esc_html__('Preview for the frontend form.','gwolle-gb').'</li>
86
  <li>' . esc_html__('Preview for the admin editor form.','gwolle-gb').'</li>
87
  <li>' . esc_html__('Admin reply on the frontend with AJAX.','gwolle-gb').'</li>
100
 
101
 
102
  /*
103
+ * Metabox with the link to the webshop for the add-on.
104
  */
105
  function gwolle_gb_addon_buy() {
106
  ?>
107
  <h3><?php esc_html_e('Buy the Add-On.', 'gwolle-gb'); ?></h3>
108
  <p><?php
109
+ $link = '<a href="https://zenoweb.nl/downloads/gwolle-guestbook-add-on/" target="_blank">';
110
  /* translators: %s is a link */
111
+ echo sprintf( esc_html__( 'You can buy this add-on at the %sZenoWeb Webshop%s for only $ 9.', 'gwolle-gb' ), $link, '</a>' ); ?><br />
112
+ <?php
113
+ $link = '<a href="https://zenoweb.nl/forums/forum/guestbook-add-on/" target="_blank">';
114
+ /* translators: %s is a link */
115
+ echo sprintf( esc_html__('Support for the add-on is also at the %sZenoWeb Support Forum%s.','gwolle-gb'), $link, '</a>' ); ?>
116
  </p>
117
  <?php
118
  }
125
  ?>
126
  <h3><?php esc_html_e('Demo with the Add-On.', 'gwolle-gb'); ?></h3>
127
  <p><?php
128
+ $link = '<a href="https://demo.zenoweb.nl/wordpress-plugins/gwolle-guestbook-the-add-on/" target="_blank">';
129
  /* translators: %s is a link */
130
  echo sprintf( esc_html__( 'The demo site of this plugin is available with the add-on enabled at %sthe demo site%s.', 'gwolle-gb' ), $link, '</a>' ); ?>
131
  </p>
132
 
133
  <h3><?php esc_html_e('Demo without the Add-On.', 'gwolle-gb'); ?></h3>
134
  <p><?php
135
+ $link = '<a href="https://demo.zenoweb.nl/wordpress-plugins/gwolle-gb/" target="_blank">';
136
  /* translators: %s is a link */
137
  echo sprintf( esc_html__( 'For comparison you can also see the %sdemo site without the add-on%s enabled.', 'gwolle-gb' ), $link, '</a>' ); ?>
138
  </p>
admin/gb-page-editor.php CHANGED
@@ -62,7 +62,7 @@ function gwolle_gb_page_editor() {
62
  ?>
63
  <div class="wrap gwolle_gb">
64
  <div id="icon-gwolle-gb"><br /></div>
65
- <h1><?php echo $sectionHeading; ?></h1>
66
 
67
  <?php
68
  if ( $gwolle_gb_messages ) {
@@ -73,7 +73,7 @@ function gwolle_gb_page_editor() {
73
  }
74
  ?>
75
 
76
- <form name="gwolle_gb_editor" id="gwolle_gb_editor" method="POST" action="" accept-charset="UTF-8">
77
  <input type="hidden" name="gwolle_gb_page" value="editor" />
78
  <input type="hidden" name="entry_id" value="<?php echo $entry->get_id(); ?>" />
79
 
@@ -140,7 +140,7 @@ function gwolle_gb_editor_postbox_content( $entry ) {
140
  gwolle_gb_enqueue_markitup();
141
 
142
  // Emoji symbols
143
- echo '<div class="gwolle_gb_emoji gwolle_gb_hide">';
144
  $emoji = gwolle_gb_get_emoji();
145
  // make it into images for nice colors.
146
  if ( function_exists('wp_staticize_emoji') ) {
@@ -160,7 +160,7 @@ function gwolle_gb_editor_postbox_website( $entry ) {
160
  <input type="url" name="gwolle_gb_author_website" value="<?php echo gwolle_gb_sanitize_output( $entry->get_author_website() ); ?>" id="author_website" placeholder="<?php esc_attr_e('Website', 'gwolle-gb'); ?>" />
161
  <p><?php
162
  /* translators: %s is a code element */
163
- echo sprintf( esc_html__('Example: %shttp://www.example.com/%s', 'gwolle-gb'), '<code>', '</code>' ); ?>
164
  </p>
165
  <?php
166
  }
@@ -187,7 +187,7 @@ function gwolle_gb_editor_postbox_admin_reply( $entry ) {
187
 
188
  <?php
189
  if ( isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true' ) {
190
- echo '<div class="gwolle_gb_admin_reply_emoji gwolle_gb_hide">';
191
  // Emoji symbols
192
  $emoji = gwolle_gb_get_emoji();
193
  // make it into images for nice colors.
@@ -304,7 +304,7 @@ function gwolle_gb_editor_postbox_icons( $entry ) {
304
 
305
  <?php
306
  $trashclass = '';
307
- if ( $entry->get_istrash() == '0' ) { $trashclass = 'gwolle_gb_hide'; } ?>
308
  <br />
309
  <label for="remove" class="selectit gwolle_gb_remove <?php echo $trashclass; ?>">
310
  <input id="remove" name="remove" type="checkbox" />
@@ -395,7 +395,7 @@ function gwolle_gb_editor_postbox_details( $entry ) {
395
  </span><br />
396
  <?php esc_html_e("Author's IP-address", 'gwolle-gb'); ?>: <span><?php
397
  if (strlen( $entry->get_author_ip() ) > 0) {
398
- echo '<a href="http://www.db.ripe.net/whois?form_type=simple&searchtext=' . $entry->get_author_ip() . '"
399
  title="' . esc_attr__('Whois search for this IP', 'gwolle-gb') . '" target="_blank">
400
  ' . $entry->get_author_ip() . '
401
  </a>';
@@ -474,24 +474,27 @@ function gwolle_gb_editor_meta_inputs( $entry ) {
474
  $date = current_time( 'timestamp' );
475
  }
476
 
477
- $dd = date( 'd', $date );
478
- $mm = date( 'm', $date );
479
- $yy = date( 'Y', $date );
480
- $hh = date( 'H', $date );
481
- $mn = date( 'i', $date );
482
 
483
  // Day
484
  echo '<label><span class="screen-reader-text">' . esc_html__( 'Day', 'gwolle-gb' ) . '</span><input type="text" id="dd" name="dd" value="' . $dd . '" size="2" maxlength="2" autocomplete="off" /></label>';
485
 
486
  // Month
487
- echo '<label for="mm"><span class="screen-reader-text">' . esc_html__( 'Month', 'gwolle-gb' ) . '</span><select id="mm" name="mm">\n';
 
488
  for ( $i = 1; $i < 13; $i = $i +1 ) {
489
  $monthnum = zeroise($i, 2);
490
- echo "\t\t\t" . '<option value="' . $monthnum . '" ' . selected( $monthnum, $mm, false ) . '>';
 
491
  /* translators: 1: month number (01, 02, etc.), 2: month abbreviation */
492
- echo sprintf( esc_html__( '%1$s-%2$s', 'gwolle-gb' ), $monthnum, $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ) ) . "</option>\n";
493
  }
494
- echo '</select></label>';
 
495
 
496
  // Year
497
  echo '<label for="yy"><span class="screen-reader-text">' . esc_html__( 'Year', 'gwolle-gb' ) . '</span><input type="text" id="yy" name="yy" value="' . $yy . '" size="4" maxlength="4" autocomplete="off" /></label>';
@@ -503,8 +506,8 @@ function gwolle_gb_editor_meta_inputs( $entry ) {
503
  ?>
504
 
505
  <div class="gwolle_gb_timestamp">
506
- <!-- Clicking OK will place a timestamp here. -->
507
- <input type="hidden" id="gwolle_gb_timestamp" name="gwolle_gb_timestamp" value="" />
508
  </div>
509
  </div>
510
 
@@ -670,11 +673,10 @@ function gwolle_gb_page_editor_update( $entry ) {
670
  }
671
  }
672
 
673
- /* Check if the datetime changed, and update accordingly */
674
  if ( isset($_POST['gwolle_gb_timestamp']) && is_numeric($_POST['gwolle_gb_timestamp']) ) {
675
- if ( $_POST['gwolle_gb_timestamp'] != $entry->get_datetime() ) {
676
- $entry->set_datetime( (int) $_POST['gwolle_gb_timestamp'] );
677
- }
678
  }
679
 
680
  /* Check if the book_id changed, and update accordingly */
62
  ?>
63
  <div class="wrap gwolle_gb">
64
  <div id="icon-gwolle-gb"><br /></div>
65
+ <h1><?php echo $sectionHeading; ?> (Gwolle Guestbook) - v<?php echo GWOLLE_GB_VER; ?></h1>
66
 
67
  <?php
68
  if ( $gwolle_gb_messages ) {
73
  }
74
  ?>
75
 
76
+ <form name="gwolle_gb_editor" id="gwolle_gb_editor" method="POST" action="#" accept-charset="UTF-8">
77
  <input type="hidden" name="gwolle_gb_page" value="editor" />
78
  <input type="hidden" name="entry_id" value="<?php echo $entry->get_id(); ?>" />
79
 
140
  gwolle_gb_enqueue_markitup();
141
 
142
  // Emoji symbols
143
+ echo '<div class="gwolle_gb_emoji gwolle-gb-hide">';
144
  $emoji = gwolle_gb_get_emoji();
145
  // make it into images for nice colors.
146
  if ( function_exists('wp_staticize_emoji') ) {
160
  <input type="url" name="gwolle_gb_author_website" value="<?php echo gwolle_gb_sanitize_output( $entry->get_author_website() ); ?>" id="author_website" placeholder="<?php esc_attr_e('Website', 'gwolle-gb'); ?>" />
161
  <p><?php
162
  /* translators: %s is a code element */
163
+ echo sprintf( esc_html__('Example: %shttps://www.example.com/%s', 'gwolle-gb'), '<code>', '</code>' ); ?>
164
  </p>
165
  <?php
166
  }
187
 
188
  <?php
189
  if ( isset($form_setting['form_bbcode_enabled']) && $form_setting['form_bbcode_enabled'] === 'true' ) {
190
+ echo '<div class="gwolle_gb_admin_reply_emoji gwolle-gb-hide">';
191
  // Emoji symbols
192
  $emoji = gwolle_gb_get_emoji();
193
  // make it into images for nice colors.
304
 
305
  <?php
306
  $trashclass = '';
307
+ if ( $entry->get_istrash() == '0' ) { $trashclass = 'gwolle-gb-hide'; } ?>
308
  <br />
309
  <label for="remove" class="selectit gwolle_gb_remove <?php echo $trashclass; ?>">
310
  <input id="remove" name="remove" type="checkbox" />
395
  </span><br />
396
  <?php esc_html_e("Author's IP-address", 'gwolle-gb'); ?>: <span><?php
397
  if (strlen( $entry->get_author_ip() ) > 0) {
398
+ echo '<a href="https://www.db.ripe.net/whois?form_type=simple&searchtext=' . $entry->get_author_ip() . '"
399
  title="' . esc_attr__('Whois search for this IP', 'gwolle-gb') . '" target="_blank">
400
  ' . $entry->get_author_ip() . '
401
  </a>';
474
  $date = current_time( 'timestamp' );
475
  }
476
 
477
+ $dd = date_i18n( 'd', $date );
478
+ $mm = date_i18n( 'm', $date );
479
+ $yy = date_i18n( 'Y', $date );
480
+ $hh = date_i18n( 'H', $date );
481
+ $mn = date_i18n( 'i', $date );
482
 
483
  // Day
484
  echo '<label><span class="screen-reader-text">' . esc_html__( 'Day', 'gwolle-gb' ) . '</span><input type="text" id="dd" name="dd" value="' . $dd . '" size="2" maxlength="2" autocomplete="off" /></label>';
485
 
486
  // Month
487
+ echo '<label for="mm"><span class="screen-reader-text">' . esc_html__( 'Month', 'gwolle-gb' ) . '</span>
488
+ <select id="mm" name="mm">';
489
  for ( $i = 1; $i < 13; $i = $i +1 ) {
490
  $monthnum = zeroise($i, 2);
491
+ echo '
492
+ <option value="' . $monthnum . '" ' . selected( $monthnum, $mm, false ) . '>';
493
  /* translators: 1: month number (01, 02, etc.), 2: month abbreviation */
494
+ echo sprintf( esc_html__( '%1$s-%2$s', 'gwolle-gb' ), $monthnum, $wp_locale->get_month_abbrev( $wp_locale->get_month( $i ) ) ) . '</option>';
495
  }
496
+ echo '
497
+ </select></label>';
498
 
499
  // Year
500
  echo '<label for="yy"><span class="screen-reader-text">' . esc_html__( 'Year', 'gwolle-gb' ) . '</span><input type="text" id="yy" name="yy" value="' . $yy . '" size="4" maxlength="4" autocomplete="off" /></label>';
506
  ?>
507
 
508
  <div class="gwolle_gb_timestamp">
509
+ <!-- Clicking OK will place a local timestamp here. -->
510
+ <input type="text" id="gwolle_gb_timestamp" name="gwolle_gb_timestamp" value="" />
511
  </div>
512
  </div>
513
 
673
  }
674
  }
675
 
676
+ /* Check if the datetime changed, and update from all input. */
677
  if ( isset($_POST['gwolle_gb_timestamp']) && is_numeric($_POST['gwolle_gb_timestamp']) ) {
678
+ $timestamp = (int) $_POST['gwolle_gb_timestamp'];
679
+ $entry->set_datetime( $timestamp );
 
680
  }
681
 
682
  /* Check if the book_id changed, and update accordingly */
admin/gb-page-entries.php CHANGED
@@ -172,7 +172,7 @@ function gwolle_gb_page_entries() {
172
 
173
  <div class="wrap gwolle_gb">
174
  <div id="icon-gwolle-gb"><br /></div>
175
- <h1><?php esc_html_e('Guestbook entries', 'gwolle-gb'); ?></h1>
176
 
177
  <?php
178
  if ( $gwolle_gb_messages ) {
@@ -182,7 +182,7 @@ function gwolle_gb_page_entries() {
182
  '</div>';
183
  } ?>
184
 
185
- <form name="gwolle_gb_entries" id="gwolle_gb_entries" action="" method="POST" accept-charset="UTF-8">
186
 
187
  <input type="hidden" name="gwolle_gb_page" value="entries" />
188
  <!-- the following fields give us some information used for processing the mass edit -->
@@ -423,7 +423,7 @@ function gwolle_gb_page_entries() {
423
  <span class="visible-icon" title="' . esc_html__('Visible', 'gwolle-gb') . '"></span>
424
  <span class="invisible-icon" title="' . esc_html__('Invisible', 'gwolle-gb') . '"></span>
425
  <span class="spam-icon" title="' . esc_html__('Spam', 'gwolle-gb') . '"></span>
426
- <span class="trash-icon" title="' . /* translators: Is in Trashcan */ esc_html__('In Trash', 'gwolle-gb') . '""></span>';
427
  $admin_reply = gwolle_gb_sanitize_output( $entry->get_admin_reply(), 'admin_reply' );
428
  if ( strlen( trim($admin_reply) ) > 0 ) {
429
  $html_output .= '
172
 
173
  <div class="wrap gwolle_gb">
174
  <div id="icon-gwolle-gb"><br /></div>
175
+ <h1><?php esc_html_e('Guestbook entries', 'gwolle-gb'); ?> (Gwolle Guestbook) - v<?php echo GWOLLE_GB_VER; ?></h1>
176
 
177
  <?php
178
  if ( $gwolle_gb_messages ) {
182
  '</div>';
183
  } ?>
184
 
185
+ <form name="gwolle_gb_entries" id="gwolle_gb_entries" action="#" method="POST" accept-charset="UTF-8">
186
 
187
  <input type="hidden" name="gwolle_gb_page" value="entries" />
188
  <!-- the following fields give us some information used for processing the mass edit -->
423
  <span class="visible-icon" title="' . esc_html__('Visible', 'gwolle-gb') . '"></span>
424
  <span class="invisible-icon" title="' . esc_html__('Invisible', 'gwolle-gb') . '"></span>
425
  <span class="spam-icon" title="' . esc_html__('Spam', 'gwolle-gb') . '"></span>
426
+ <span class="trash-icon" title="' . /* translators: Is in Trashcan */ esc_html__('In Trash', 'gwolle-gb') . '"></span>';
427
  $admin_reply = gwolle_gb_sanitize_output( $entry->get_admin_reply(), 'admin_reply' );
428
  if ( strlen( trim($admin_reply) ) > 0 ) {
429
  $html_output .= '
admin/gb-page-export.php CHANGED
@@ -28,7 +28,7 @@ function gwolle_gb_page_export() {
28
  ?>
29
  <div class="wrap gwolle_gb">
30
  <div id="icon-gwolle-gb"><br /></div>
31
- <h1><?php esc_html_e('Export guestbook entries.', 'gwolle-gb'); ?></h1>
32
 
33
  <div id="poststuff" class="gwolle_gb_export metabox-holder">
34
  <div class="postbox-container">
@@ -253,10 +253,10 @@ function gwolle_gb_export_postbox_user() {
253
  <p><?php esc_html_e('Select one option below, either User ID or Email address', 'gwolle-gb'); ?></p>
254
  <p>
255
  <label for="gwolle_gb_user_id" class="text-info"><?php esc_html_e('User ID', 'gwolle-gb'); ?>:<br />
256
- <input type="text" name="gwolle_gb_user_id" value="" placeholder="<?php esc_html_e('User ID', 'gwolle-gb'); ?>" />
257
  </label><br />
258
  <label for="gwolle_gb_user_email" class="text-info"><?php esc_html_e('User Email', 'gwolle-gb'); ?>:<br />
259
- <input type="text" name="gwolle_gb_user_email" value="" placeholder="<?php esc_html_e('User Email', 'gwolle-gb'); ?>" />
260
  </label>
261
  </p>
262
 
28
  ?>
29
  <div class="wrap gwolle_gb">
30
  <div id="icon-gwolle-gb"><br /></div>
31
+ <h1><?php esc_html_e('Export guestbook entries.', 'gwolle-gb'); ?> (Gwolle Guestbook) - v<?php echo GWOLLE_GB_VER; ?></h1>
32
 
33
  <div id="poststuff" class="gwolle_gb_export metabox-holder">
34
  <div class="postbox-container">
253
  <p><?php esc_html_e('Select one option below, either User ID or Email address', 'gwolle-gb'); ?></p>
254
  <p>
255
  <label for="gwolle_gb_user_id" class="text-info"><?php esc_html_e('User ID', 'gwolle-gb'); ?>:<br />
256
+ <input type="text" name="gwolle_gb_user_id" id="gwolle_gb_user_id" value="" placeholder="<?php esc_html_e('User ID', 'gwolle-gb'); ?>" />
257
  </label><br />
258
  <label for="gwolle_gb_user_email" class="text-info"><?php esc_html_e('User Email', 'gwolle-gb'); ?>:<br />
259
+ <input type="text" name="gwolle_gb_user_email" id="gwolle_gb_user_email" value="" placeholder="<?php esc_html_e('User Email', 'gwolle-gb'); ?>" />
260
  </label>
261
  </p>
262
 
admin/gb-page-gwolle-gb.php CHANGED
@@ -32,12 +32,17 @@ function gwolle_gb_welcome() {
32
 
33
  add_meta_box('gwolle_gb_help', esc_html__('Help', 'gwolle-gb'), 'gwolle_gb_overview_help', 'gwolle_gb_welcome', 'right');
34
  add_meta_box('gwolle_gb_support', esc_html__('Support and Translations', 'gwolle-gb'), 'gwolle_gb_overview_support', 'gwolle_gb_welcome', 'right');
35
- add_meta_box('gwolle_gb_donate', /* translators: Reviews on the plugin page at WordPress.org */ esc_html__('Review', 'gwolle-gb'), 'gwolle_gb_overview_donate', 'gwolle_gb_welcome', 'right');
36
 
37
  ?>
38
  <div class="wrap gwolle_gb">
39
  <div id="icon-gwolle-gb"><br /></div>
40
- <h1><?php esc_html_e('Gwolle Guestbook', 'gwolle-gb'); ?></h1>
 
 
 
 
 
41
 
42
  <?php
43
  $gwolle_gb_messages = gwolle_gb_get_messages();
@@ -203,7 +208,7 @@ function gwolle_gb_overview_notification() {
203
  }
204
  }
205
  } ?>
206
- <form name="gwolle_gb_welcome" method="post" action="">
207
  <?php
208
  settings_fields( 'gwolle_gb_options' );
209
  do_settings_sections( 'gwolle_gb_options' );
@@ -261,7 +266,7 @@ function gwolle_gb_overview_thanks() {
261
  <li><a href="https://akismet.com/tos/" target="_blank">' . esc_html__( 'Akismet', 'gwolle-gb' ) . '</a></li>
262
  <li><a href="https://www.stopforumspam.com" target="_blank">' . esc_html__( 'Stop Forum Spam', 'gwolle-gb' ) . '</a></li>
263
  <li><a href="https://markitup.jaysalvat.com/" target="_blank">' . esc_html__( 'MarkItUp', 'gwolle-gb' ) . '</a></li>
264
- <li><a href="http://supersimpleslider.com/" target="_blank">' . esc_html__( 'Super Simple Slider', 'gwolle-gb' ) . '</a></li>
265
  </ul>';
266
  }
267
 
@@ -326,7 +331,7 @@ function gwolle_gb_overview_support() {
326
  * Metabox with text about wp.org reviews.
327
  * Call for donations is gone.
328
  */
329
- function gwolle_gb_overview_donate() {
330
  ?>
331
  <h3><?php esc_html_e('Review this plugin.', 'gwolle-gb'); ?></h3>
332
  <p><?php
32
 
33
  add_meta_box('gwolle_gb_help', esc_html__('Help', 'gwolle-gb'), 'gwolle_gb_overview_help', 'gwolle_gb_welcome', 'right');
34
  add_meta_box('gwolle_gb_support', esc_html__('Support and Translations', 'gwolle-gb'), 'gwolle_gb_overview_support', 'gwolle_gb_welcome', 'right');
35
+ add_meta_box('gwolle_gb_review', /* translators: Reviews on the plugin page at WordPress.org */ esc_html__('Review', 'gwolle-gb'), 'gwolle_gb_overview_review', 'gwolle_gb_welcome', 'right');
36
 
37
  ?>
38
  <div class="wrap gwolle_gb">
39
  <div id="icon-gwolle-gb"><br /></div>
40
+ <?php
41
+ $heading = esc_html__('Gwolle Guestbook', 'gwolle-gb');
42
+ if ( $heading != 'Gwolle Guestbook' ) { // translated, so we add the real name.
43
+ $heading .= ' (Gwolle Guestbook)';
44
+ } ?>
45
+ <h1><?php echo $heading . ' - v' . GWOLLE_GB_VER; ?></h1>
46
 
47
  <?php
48
  $gwolle_gb_messages = gwolle_gb_get_messages();
208
  }
209
  }
210
  } ?>
211
+ <form name="gwolle_gb_welcome" method="post" action="#">
212
  <?php
213
  settings_fields( 'gwolle_gb_options' );
214
  do_settings_sections( 'gwolle_gb_options' );
266
  <li><a href="https://akismet.com/tos/" target="_blank">' . esc_html__( 'Akismet', 'gwolle-gb' ) . '</a></li>
267
  <li><a href="https://www.stopforumspam.com" target="_blank">' . esc_html__( 'Stop Forum Spam', 'gwolle-gb' ) . '</a></li>
268
  <li><a href="https://markitup.jaysalvat.com/" target="_blank">' . esc_html__( 'MarkItUp', 'gwolle-gb' ) . '</a></li>
269
+ <li><a href="https://supersimpleslider.com/" target="_blank">' . esc_html__( 'Super Simple Slider', 'gwolle-gb' ) . '</a></li>
270
  </ul>';
271
  }
272
 
331
  * Metabox with text about wp.org reviews.
332
  * Call for donations is gone.
333
  */
334
+ function gwolle_gb_overview_review() {
335
  ?>
336
  <h3><?php esc_html_e('Review this plugin.', 'gwolle-gb'); ?></h3>
337
  <p><?php
admin/gb-page-import.php CHANGED
@@ -2,7 +2,7 @@
2
  /*
3
  * Lets the user import guestbook entries from other plugins.
4
  * Currently supported:
5
- * - DMSGuestbook (http://wordpress.org/plugins/dmsguestbook/).
6
  * - WordPress comments from a page, post or just all.
7
  * - Gwolle-GB through a CSV-file.
8
  */
@@ -32,7 +32,7 @@ function gwolle_gb_page_import() {
32
  ?>
33
  <div class="wrap gwolle_gb">
34
  <div id="icon-gwolle-gb"><br /></div>
35
- <h1><?php esc_html_e('Import guestbook entries.', 'gwolle-gb'); ?></h1>
36
 
37
  <?php
38
  $gwolle_gb_messages = gwolle_gb_get_messages();
2
  /*
3
  * Lets the user import guestbook entries from other plugins.
4
  * Currently supported:
5
+ * - DMSGuestbook (https://wordpress.org/plugins/dmsguestbook/).
6
  * - WordPress comments from a page, post or just all.
7
  * - Gwolle-GB through a CSV-file.
8
  */
32
  ?>
33
  <div class="wrap gwolle_gb">
34
  <div id="icon-gwolle-gb"><br /></div>
35
+ <h1><?php esc_html_e('Import guestbook entries.', 'gwolle-gb'); ?> (Gwolle Guestbook) - v<?php echo GWOLLE_GB_VER; ?></h1>
36
 
37
  <?php
38
  $gwolle_gb_messages = gwolle_gb_get_messages();
admin/gb-page-settings.php CHANGED
@@ -34,7 +34,7 @@ function gwolle_gb_page_settings() {
34
  <div class="wrap gwolle_gb">
35
 
36
  <div id="icon-gwolle-gb"><br /></div>
37
- <h1><?php esc_html_e('Settings', 'gwolle-gb'); ?></h1>
38
 
39
  <?php
40
  if ( $gwolle_gb_errors ) {
@@ -65,38 +65,38 @@ function gwolle_gb_page_settings() {
65
  <?php } ?>
66
  </h2>
67
 
68
- <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_forms <?php if ($active_tab == 'gwolle_gb_forms') { echo "active";} ?>" method="post" action="">
69
  <?php gwolle_gb_page_settingstab_form(); ?>
70
  </form>
71
 
72
 
73
- <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_reading <?php if ($active_tab == 'gwolle_gb_reading') { echo "active";} ?>" method="post" action="">
74
  <?php gwolle_gb_page_settingstab_reading(); ?>
75
  </form>
76
 
77
 
78
- <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_admin <?php if ($active_tab == 'gwolle_gb_admin') { echo "active";} ?>" method="post" action="">
79
  <?php gwolle_gb_page_settingstab_admin(); ?>
80
  </form>
81
 
82
 
83
- <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_antispam <?php if ($active_tab == 'gwolle_gb_antispam') { echo "active";} ?>" method="post" action="">
84
  <?php gwolle_gb_page_settingstab_antispam(); ?>
85
  </form>
86
 
87
 
88
- <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_mail <?php if ($active_tab == 'gwolle_gb_mail') { echo "active";} ?>" method="post" action="">
89
  <?php gwolle_gb_page_settingstab_email(); ?>
90
  </form>
91
 
92
 
93
- <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_debug <?php if ($active_tab == 'gwolle_gb_debug') { echo "active";} ?>" method="post" action="">
94
  <?php gwolle_gb_page_settingstab_debug(); ?>
95
  </form>
96
 
97
 
98
  <?php if ( function_exists('is_multisite') && ! is_multisite() ) { ?>
99
- <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_uninstall <?php if ($active_tab == 'gwolle_gb_uninstall') { echo "active";} ?>" method="post" action="">
100
  <?php gwolle_gb_page_settingstab_uninstall(); ?>
101
  </form>
102
  <?php } ?>
@@ -195,7 +195,6 @@ function gwolle_gb_page_settings_update() {
195
  $form_setting[$item] = 'false';
196
  }
197
  }
198
- $form_setting = serialize( $form_setting );
199
  update_option( 'gwolle_gb-form', $form_setting );
200
  break;
201
  case 'gwolle_gb_reading':
@@ -273,7 +272,6 @@ function gwolle_gb_page_settings_update() {
273
  $read_setting[$item] = 'false';
274
  }
275
  }
276
- $read_setting = serialize( $read_setting );
277
  update_option( 'gwolle_gb-read', $read_setting );
278
  break;
279
  case 'gwolle_gb_admin':
34
  <div class="wrap gwolle_gb">
35
 
36
  <div id="icon-gwolle-gb"><br /></div>
37
+ <h1><?php esc_html_e('Settings', 'gwolle-gb'); ?> (Gwolle Guestbook) - v<?php echo GWOLLE_GB_VER; ?></h1>
38
 
39
  <?php
40
  if ( $gwolle_gb_errors ) {
65
  <?php } ?>
66
  </h2>
67
 
68
+ <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_forms <?php if ($active_tab == 'gwolle_gb_forms') { echo "active";} ?>" method="post" action="#">
69
  <?php gwolle_gb_page_settingstab_form(); ?>
70
  </form>
71
 
72
 
73
+ <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_reading <?php if ($active_tab == 'gwolle_gb_reading') { echo "active";} ?>" method="post" action="#">
74
  <?php gwolle_gb_page_settingstab_reading(); ?>
75
  </form>
76
 
77
 
78
+ <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_admin <?php if ($active_tab == 'gwolle_gb_admin') { echo "active";} ?>" method="post" action="#">
79
  <?php gwolle_gb_page_settingstab_admin(); ?>
80
  </form>
81
 
82
 
83
+ <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_antispam <?php if ($active_tab == 'gwolle_gb_antispam') { echo "active";} ?>" method="post" action="#">
84
  <?php gwolle_gb_page_settingstab_antispam(); ?>
85
  </form>
86
 
87
 
88
+ <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_mail <?php if ($active_tab == 'gwolle_gb_mail') { echo "active";} ?>" method="post" action="#">
89
  <?php gwolle_gb_page_settingstab_email(); ?>
90
  </form>
91
 
92
 
93
+ <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_debug <?php if ($active_tab == 'gwolle_gb_debug') { echo "active";} ?>" method="post" action="#">
94
  <?php gwolle_gb_page_settingstab_debug(); ?>
95
  </form>
96
 
97
 
98
  <?php if ( function_exists('is_multisite') && ! is_multisite() ) { ?>
99
+ <form name="gwolle_gb_options" role="tabpanel" class="gwolle_gb_options gwolle_gb_uninstall <?php if ($active_tab == 'gwolle_gb_uninstall') { echo "active";} ?>" method="post" action="#">
100
  <?php gwolle_gb_page_settingstab_uninstall(); ?>
101
  </form>
102
  <?php } ?>
195
  $form_setting[$item] = 'false';
196
  }
197
  }
 
198
  update_option( 'gwolle_gb-form', $form_setting );
199
  break;
200
  case 'gwolle_gb_reading':
272
  $read_setting[$item] = 'false';
273
  }
274
  }
 
275
  update_option( 'gwolle_gb-read', $read_setting );
276
  break;
277
  case 'gwolle_gb_admin':
admin/gb-upgrade.php CHANGED
@@ -502,6 +502,22 @@ function gwolle_gb_upgrade() {
502
  ");
503
  }
504
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
505
  /* Upgrade to new shiny db collation. Since WP 4.2 */
506
  require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
507
  if ( function_exists('maybe_convert_table_to_utf8mb4') ) {
@@ -558,7 +574,6 @@ function gwolle_gb_set_defaults() {
558
  'form_recaptcha_enabled' => 'false',
559
  'form_privacy_enabled' => 'false'
560
  );
561
- $defaults = serialize( $defaults );
562
  update_option( 'gwolle_gb-form', $defaults );
563
  }
564
  if ( get_option('gwolle_gb-form_ajax', false) == false ) {
@@ -614,7 +629,6 @@ function gwolle_gb_set_defaults() {
614
  'read_aavatar' => 'false',
615
  'read_editlink' => 'true'
616
  );
617
- $defaults = serialize( $defaults );
618
  update_option( 'gwolle_gb-read', $defaults );
619
  }
620
  if ( get_option('gwolle_gb-refuse-spam', false) == false ) {
502
  ");
503
  }
504
 
505
+ if (version_compare($installed_ver, '4.0.0', '<')) {
506
+ /*
507
+ * 3.1.9->4.0.0
508
+ * Fix serialized options.
509
+ */
510
+ $options = array(
511
+ 'gwolle_gb-form',
512
+ 'gwolle_gb-read',
513
+ );
514
+ foreach ( $options as $option ) {
515
+ $value = get_option( $option, array() );
516
+ $value = maybe_unserialize( $value );
517
+ update_option( $option, $value );
518
+ }
519
+ }
520
+
521
  /* Upgrade to new shiny db collation. Since WP 4.2 */
522
  require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
523
  if ( function_exists('maybe_convert_table_to_utf8mb4') ) {
574
  'form_recaptcha_enabled' => 'false',
575
  'form_privacy_enabled' => 'false'
576
  );
 
577
  update_option( 'gwolle_gb-form', $defaults );
578
  }
579
  if ( get_option('gwolle_gb-form_ajax', false) == false ) {
629
  'read_aavatar' => 'false',
630
  'read_editlink' => 'true'
631
  );
 
632
  update_option( 'gwolle_gb-read', $defaults );
633
  }
634
  if ( get_option('gwolle_gb-refuse-spam', false) == false ) {
admin/gwolle-gb-hooks.php CHANGED
@@ -3,7 +3,7 @@
3
  /*
4
  * WordPress Actions and Filters.
5
  * See the Plugin API in the Codex:
6
- * http://codex.wordpress.org/Plugin_API
7
  */
8
 
9
 
@@ -134,3 +134,40 @@ function gwolle_gb_multisite_uninstall() {
134
  }
135
  }
136
  add_action('admin_init', 'gwolle_gb_multisite_uninstall', 99);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  /*
4
  * WordPress Actions and Filters.
5
  * See the Plugin API in the Codex:
6
+ * https://codex.wordpress.org/Plugin_API
7
  */
8
 
9
 
134
  }
135
  }
136
  add_action('admin_init', 'gwolle_gb_multisite_uninstall', 99);
137
+
138
+
139
+ /*
140
+ * Show admin notice when gwolle-gb-addon is active and needs an update.
141
+ * Is dismissable by activating or updating.
142
+ *
143
+ * @since 4.0.0
144
+ */
145
+ function gwolle_gb_deps_admin_notice() {
146
+ $class = 'notice notice-error';
147
+
148
+ if ( ! isset($_GET['page']) ) {
149
+ return;
150
+ }
151
+ $pos = strpos($_GET['page'], 'gwolle-gb');
152
+ if ($pos === false) {
153
+ return;
154
+ }
155
+
156
+ $active = is_plugin_active( 'gwolle-gb-addon/gwolle-gb-addon.php' ); // true or false
157
+ if ( $active ) {
158
+ $zeno_el = '<a href="https://zenoweb.nl/downloads/gwolle-guestbook-add-on/" target="_blank">';
159
+ $zeno_el_close = '</a>';
160
+ $mojo_el = '<a href="https://www.mojomarketplace.com/item/gwolle-gb-add-on" target="_blank">';
161
+ $mojo_el_close = '</a>';
162
+ $required_version = '2.0.0';
163
+
164
+ if ( GWOLLE_GB_ADDON_VER && version_compare( GWOLLE_GB_ADDON_VER, $required_version, '>=' ) ) {
165
+ return; // We have the minimal version.
166
+ }
167
+
168
+ $message = sprintf( esc_html__( 'Gwolle Guestbook: This version of the Gwolle Guestbook Add-On is too old for this version of Gwolle Guestbook, you need at least %s. You have version %s. Go to the %sZenoWeb Webshop%s or to %sMOJO%s and login, download and update the Add-On.', 'gwolle-gb' ), $required_version, GWOLLE_GB_ADDON_VER, $zeno_el, $zeno_el_close, $mojo_el, $mojo_el_close );
169
+ printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), $message );
170
+
171
+ }
172
+ }
173
+ add_action( 'admin_notices', 'gwolle_gb_deps_admin_notice' );
admin/js/gwolle-gb-admin.js CHANGED
@@ -66,12 +66,10 @@ jQuery(document).ready(function($) {
66
  var mn = jQuery("#mn").val();
67
 
68
  var gwolle_date = new Date( yy, mm - 1, dd, hh, mn );
69
- // Calculate offset between UTC and local time, and adjust our time.
70
- date_offset = gwolle_date.getTimezoneOffset() * -60;
71
- var timestamp = Math.round( gwolle_date.getTime() / 1000 ) + date_offset;
72
- jQuery("#gwolle_gb_timestamp").val(timestamp);
73
-
74
- var readable_time = gb_timeconverter( timestamp );
75
  jQuery( 'span.gb-editor-datetime' ).text( readable_time );
76
 
77
  var author_name = jQuery("#gwolle_gb_author_name").val();
@@ -86,19 +84,6 @@ jQuery(document).ready(function($) {
86
  });
87
  });
88
 
89
- /* Convert Unix timestamp to readable time. */
90
- function gb_timeconverter( timestamp ) {
91
- var datetime = new Date( timestamp * 1000 );
92
- var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
93
- var year = datetime.getFullYear();
94
- var month = months[datetime.getMonth()];
95
- var date = datetime.getDate();
96
- var hour = datetime.getHours();
97
- var min = datetime.getMinutes();
98
- var readable_time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min;
99
- return readable_time;
100
- }
101
-
102
 
103
  /*
104
  * Settings Page
66
  var mn = jQuery("#mn").val();
67
 
68
  var gwolle_date = new Date( yy, mm - 1, dd, hh, mn );
69
+ readable_time = gwolle_date.toUTCString();
70
+ readable_time = readable_time.replace(/GMT/i, '');
71
+ var timestamp = Math.round( gwolle_date.getTime() / 1000 );
72
+ jQuery("#gwolle_gb_timestamp").val(timestamp); // local time of the server.
 
 
73
  jQuery( 'span.gb-editor-datetime' ).text( readable_time );
74
 
75
  var author_name = jQuery("#gwolle_gb_author_name").val();
84
  });
85
  });
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
 
88
  /*
89
  * Settings Page
admin/tabs/gb-admintab.php CHANGED
@@ -30,7 +30,7 @@ function gwolle_gb_page_settingstab_admin() {
30
  <table class="form-table">
31
  <tbody>
32
 
33
- <tr valign="top">
34
  <th scope="row"><label for="entries_per_page"><?php esc_html_e('Entries per page in the admin', 'gwolle-gb'); ?></label></th>
35
  <td>
36
  <select name="entries_per_page" id="entries_per_page">
@@ -50,7 +50,7 @@ function gwolle_gb_page_settingstab_admin() {
50
  </td>
51
  </tr>
52
 
53
- <tr valign="top">
54
  <th scope="row"><label for="showEntryIcons"><?php esc_html_e('Entry icons', 'gwolle-gb'); ?></label></th>
55
  <td>
56
  <input type="checkbox" <?php
30
  <table class="form-table">
31
  <tbody>
32
 
33
+ <tr>
34
  <th scope="row"><label for="entries_per_page"><?php esc_html_e('Entries per page in the admin', 'gwolle-gb'); ?></label></th>
35
  <td>
36
  <select name="entries_per_page" id="entries_per_page">
50
  </td>
51
  </tr>
52
 
53
+ <tr>
54
  <th scope="row"><label for="showEntryIcons"><?php esc_html_e('Entry icons', 'gwolle-gb'); ?></label></th>
55
  <td>
56
  <input type="checkbox" <?php
admin/tabs/gb-antispamtab.php CHANGED
@@ -30,7 +30,7 @@ function gwolle_gb_page_settingstab_antispam() {
30
  <table class="form-table">
31
  <tbody>
32
 
33
- <tr valign="top">
34
  <th scope="row"><label for="moderate-entries"><?php /* translators: Settings page, option for moderation */ esc_html_e('Moderate Guestbook', 'gwolle-gb'); ?></label></th>
35
  <td>
36
  <input <?php
@@ -49,7 +49,7 @@ function gwolle_gb_page_settingstab_antispam() {
49
  </td>
50
  </tr>
51
 
52
- <tr valign="top">
53
  <th scope="row"><label for="refuse-spam"><?php /* translators: Settings page, option for refusing spam */ esc_html_e('Refuse Spam', 'gwolle-gb'); ?></label></th>
54
  <td>
55
  <input <?php
@@ -68,7 +68,7 @@ function gwolle_gb_page_settingstab_antispam() {
68
  </td>
69
  </tr>
70
 
71
- <tr valign="top">
72
  <th scope="row"><label for="honeypot"><?php esc_html_e('Honeypot', 'gwolle-gb'); ?></label></th>
73
  <td>
74
  <input <?php
@@ -85,7 +85,7 @@ function gwolle_gb_page_settingstab_antispam() {
85
  </td>
86
  </tr>
87
 
88
- <tr valign="top">
89
  <th scope="row"><label for="gwolle_gb_nonce"><?php esc_html_e('Nonce', 'gwolle-gb'); ?></label></th>
90
  <td>
91
  <input <?php
@@ -110,7 +110,7 @@ function gwolle_gb_page_settingstab_antispam() {
110
  </td>
111
  </tr>
112
 
113
- <tr valign="top">
114
  <th scope="row"><label for="gwolle_gb_longtext"><?php esc_html_e('Long Text', 'gwolle-gb'); ?></label></th>
115
  <td>
116
  <input <?php
@@ -132,7 +132,7 @@ function gwolle_gb_page_settingstab_antispam() {
132
  </td>
133
  </tr>
134
 
135
- <tr valign="top">
136
  <th scope="row"><label for="gwolle_gb_linkchecker"><?php esc_html_e('Link Checker', 'gwolle-gb'); ?></label></th>
137
  <td>
138
  <input <?php
@@ -151,7 +151,7 @@ function gwolle_gb_page_settingstab_antispam() {
151
  </td>
152
  </tr>
153
 
154
- <tr valign="top">
155
  <th scope="row"><label for="gwolle_gb_timeout"><?php esc_html_e('Form Timeout', 'gwolle-gb'); ?></label></th>
156
  <td>
157
  <input <?php
@@ -170,7 +170,7 @@ function gwolle_gb_page_settingstab_antispam() {
170
  </td>
171
  </tr>
172
 
173
- <tr valign="top">
174
  <th scope="row">
175
  <label for="akismet-active"><?php esc_html_e('Akismet', 'gwolle-gb'); ?></label>
176
  </th>
@@ -210,7 +210,7 @@ function gwolle_gb_page_settingstab_antispam() {
210
  </td>
211
  </tr>
212
 
213
- <tr valign="top">
214
  <th scope="row"><label for="gwolle_gb_sfs"><?php esc_html_e('Stop Forum Spam', 'gwolle-gb'); ?></label></th>
215
  <td>
216
  <input <?php
@@ -236,7 +236,7 @@ function gwolle_gb_page_settingstab_antispam() {
236
  $antispam_question = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-question') );
237
  $antispam_answer = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-answer') );
238
  ?>
239
- <tr valign="top">
240
  <th scope="row"><label for="antispam-question"><?php esc_html_e('Custom Anti-Spam Security Question', 'gwolle-gb'); ?></label></th>
241
  <td>
242
  <div>
30
  <table class="form-table">
31
  <tbody>
32
 
33
+ <tr>
34
  <th scope="row"><label for="moderate-entries"><?php /* translators: Settings page, option for moderation */ esc_html_e('Moderate Guestbook', 'gwolle-gb'); ?></label></th>
35
  <td>
36
  <input <?php
49
  </td>
50
  </tr>
51
 
52
+ <tr>
53
  <th scope="row"><label for="refuse-spam"><?php /* translators: Settings page, option for refusing spam */ esc_html_e('Refuse Spam', 'gwolle-gb'); ?></label></th>
54
  <td>
55
  <input <?php
68
  </td>
69
  </tr>
70
 
71
+ <tr>
72
  <th scope="row"><label for="honeypot"><?php esc_html_e('Honeypot', 'gwolle-gb'); ?></label></th>
73
  <td>
74
  <input <?php
85
  </td>
86
  </tr>
87
 
88
+ <tr>
89
  <th scope="row"><label for="gwolle_gb_nonce"><?php esc_html_e('Nonce', 'gwolle-gb'); ?></label></th>
90
  <td>
91
  <input <?php
110
  </td>
111
  </tr>
112
 
113
+ <tr>
114
  <th scope="row"><label for="gwolle_gb_longtext"><?php esc_html_e('Long Text', 'gwolle-gb'); ?></label></th>
115
  <td>
116
  <input <?php
132
  </td>
133
  </tr>
134
 
135
+ <tr>
136
  <th scope="row"><label for="gwolle_gb_linkchecker"><?php esc_html_e('Link Checker', 'gwolle-gb'); ?></label></th>
137
  <td>
138
  <input <?php
151
  </td>
152
  </tr>
153
 
154
+ <tr>
155
  <th scope="row"><label for="gwolle_gb_timeout"><?php esc_html_e('Form Timeout', 'gwolle-gb'); ?></label></th>
156
  <td>
157
  <input <?php
170
  </td>
171
  </tr>
172
 
173
+ <tr>
174
  <th scope="row">
175
  <label for="akismet-active"><?php esc_html_e('Akismet', 'gwolle-gb'); ?></label>
176
  </th>
210
  </td>
211
  </tr>
212
 
213
+ <tr>
214
  <th scope="row"><label for="gwolle_gb_sfs"><?php esc_html_e('Stop Forum Spam', 'gwolle-gb'); ?></label></th>
215
  <td>
216
  <input <?php
236
  $antispam_question = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-question') );
237
  $antispam_answer = gwolle_gb_sanitize_output( get_option('gwolle_gb-antispam-answer') );
238
  ?>
239
+ <tr>
240
  <th scope="row"><label for="antispam-question"><?php esc_html_e('Custom Anti-Spam Security Question', 'gwolle-gb'); ?></label></th>
241
  <td>
242
  <div>
admin/tabs/gb-debugtab.php CHANGED
@@ -31,7 +31,7 @@ function gwolle_gb_page_settingstab_debug() {
31
  <table class="form-table">
32
  <tbody>
33
 
34
- <tr valign="top">
35
  <td scope="row" colspan="2">
36
  <p>
37
  <?php esc_html_e('Please provide this information when posting a support message on the support forum.', 'gwolle-gb'); ?>
@@ -79,7 +79,7 @@ function gwolle_gb_page_settingstab_debug() {
79
  }
80
  ?>
81
 
82
- <tr valign="top">
83
  <th scope="row"><label for="blogdescription"><?php esc_html_e('Test', 'gwolle-gb'); ?></label></th>
84
  <td>
85
  <p>
@@ -91,9 +91,7 @@ function gwolle_gb_page_settingstab_debug() {
91
  </td>
92
  </tr>
93
 
94
- <tr valign="top">
95
- <?php gwolle_gb_debug_info(); ?>
96
- </tr>
97
 
98
  </tbody>
99
  </table>
31
  <table class="form-table">
32
  <tbody>
33
 
34
+ <tr>
35
  <td scope="row" colspan="2">
36
  <p>
37
  <?php esc_html_e('Please provide this information when posting a support message on the support forum.', 'gwolle-gb'); ?>
79
  }
80
  ?>
81
 
82
+ <tr>
83
  <th scope="row"><label for="blogdescription"><?php esc_html_e('Test', 'gwolle-gb'); ?></label></th>
84
  <td>
85
  <p>
91
  </td>
92
  </tr>
93
 
94
+ <?php gwolle_gb_debug_info(); ?>
 
 
95
 
96
  </tbody>
97
  </table>
admin/tabs/gb-emailtab.php CHANGED
@@ -36,7 +36,7 @@ function gwolle_gb_page_settingstab_email() {
36
  $user_ids = explode( ",", $user_ids );
37
  } ?>
38
 
39
- <tr valign="top">
40
  <th scope="row"><label><?php esc_html_e('Subscription status', 'gwolle-gb'); ?></label></th>
41
  <td>
42
  <?php
@@ -49,7 +49,7 @@ function gwolle_gb_page_settingstab_email() {
49
  </td>
50
  </tr>
51
 
52
- <tr valign="top">
53
  <th scope="row"><label for="subscribe"><?php esc_html_e('Subscribe moderators', 'gwolle-gb'); ?></label></th>
54
  <td>
55
  <select name="subscribe" id="subscribe">
@@ -82,7 +82,7 @@ function gwolle_gb_page_settingstab_email() {
82
  </td>
83
  </tr>
84
 
85
- <tr valign="top">
86
  <th scope="row"><label for="unsubscribe"><?php esc_html_e('Unsubscribe moderators', 'gwolle-gb'); ?></label></th>
87
  <td>
88
  <?php
@@ -116,7 +116,7 @@ function gwolle_gb_page_settingstab_email() {
116
  </td>
117
  </tr>
118
 
119
- <tr valign="top">
120
  <th scope="row"><label for="admin_mail_from"><?php /* translators: Setting for SMTP mail from header */ esc_html_e('Send from address', 'gwolle-gb'); ?></label></th>
121
  <td>
122
  <input type="email" name="admin_mail_from" id="admin_mail_from" class="regular-text" value="<?php echo gwolle_gb_sanitize_output( get_option('gwolle_gb-mail-from', false) ); ?>" placeholder="info@example.com" />
@@ -131,7 +131,7 @@ function gwolle_gb_page_settingstab_email() {
131
  </td>
132
  </tr>
133
 
134
- <tr valign="top">
135
  <th scope="row"><label for="adminMailContent"><?php esc_html_e('Admin mail content', 'gwolle-gb'); ?></label></th>
136
  <td>
137
  <?php
@@ -173,7 +173,7 @@ Entry content:
173
  </td>
174
  </tr>
175
 
176
- <tr valign="top">
177
  <th scope="row"><label for="mail_author"><?php esc_html_e('Mail Author', 'gwolle-gb'); ?></label></th>
178
  <td>
179
  <input <?php
@@ -191,7 +191,7 @@ Entry content:
191
  </td>
192
  </tr>
193
 
194
- <tr valign="top">
195
  <th scope="row"><label for="authorMailContent"><?php esc_html_e('Author mail content', 'gwolle-gb'); ?></label></th>
196
  <td>
197
  <?php
@@ -231,7 +231,7 @@ Entry content:
231
  </td>
232
  </tr>
233
 
234
- <tr valign="top">
235
  <th scope="row"><label for="gwolle_gb-mail_admin_replyContent"><?php esc_html_e('Admin Reply mail content', 'gwolle-gb'); ?></label></th>
236
  <td>
237
  <?php
36
  $user_ids = explode( ",", $user_ids );
37
  } ?>
38
 
39
+ <tr>
40
  <th scope="row"><label><?php esc_html_e('Subscription status', 'gwolle-gb'); ?></label></th>
41
  <td>
42
  <?php
49
  </td>
50
  </tr>
51
 
52
+ <tr>
53
  <th scope="row"><label for="subscribe"><?php esc_html_e('Subscribe moderators', 'gwolle-gb'); ?></label></th>
54
  <td>
55
  <select name="subscribe" id="subscribe">
82
  </td>
83
  </tr>
84
 
85
+ <tr>
86
  <th scope="row"><label for="unsubscribe"><?php esc_html_e('Unsubscribe moderators', 'gwolle-gb'); ?></label></th>
87
  <td>
88
  <?php
116
  </td>
117
  </tr>
118
 
119
+ <tr>
120
  <th scope="row"><label for="admin_mail_from"><?php /* translators: Setting for SMTP mail from header */ esc_html_e('Send from address', 'gwolle-gb'); ?></label></th>
121
  <td>
122
  <input type="email" name="admin_mail_from" id="admin_mail_from" class="regular-text" value="<?php echo gwolle_gb_sanitize_output( get_option('gwolle_gb-mail-from', false) ); ?>" placeholder="info@example.com" />
131
  </td>
132
  </tr>
133
 
134
+ <tr>
135
  <th scope="row"><label for="adminMailContent"><?php esc_html_e('Admin mail content', 'gwolle-gb'); ?></label></th>
136
  <td>
137
  <?php
173
  </td>
174
  </tr>
175
 
176
+ <tr>
177
  <th scope="row"><label for="mail_author"><?php esc_html_e('Mail Author', 'gwolle-gb'); ?></label></th>
178
  <td>
179
  <input <?php
191
  </td>
192
  </tr>
193
 
194
+ <tr>
195
  <th scope="row"><label for="authorMailContent"><?php esc_html_e('Author mail content', 'gwolle-gb'); ?></label></th>
196
  <td>
197
  <?php
231
  </td>
232
  </tr>
233
 
234
+ <tr>
235
  <th scope="row"><label for="gwolle_gb-mail_admin_replyContent"><?php esc_html_e('Admin Reply mail content', 'gwolle-gb'); ?></label></th>
236
  <td>
237
  <?php
admin/tabs/gb-formtab.php CHANGED
@@ -30,7 +30,7 @@ function gwolle_gb_page_settingstab_form() {
30
  <table class="form-table">
31
  <tbody>
32
 
33
- <tr valign="top">
34
  <th scope="row"><label for="require_login"><?php esc_html_e('Require Login', 'gwolle-gb'); ?></label></th>
35
  <td>
36
  <input type="checkbox" id="require_login" name="require_login" <?php
@@ -44,7 +44,7 @@ function gwolle_gb_page_settingstab_form() {
44
  </td>
45
  </tr>
46
 
47
- <tr valign="top">
48
  <th scope="row"><label for="labels_float"><?php esc_html_e('Labels float', 'gwolle-gb'); ?></label></th>
49
  <td>
50
  <input type="checkbox" id="labels_float" name="labels_float" <?php
@@ -58,7 +58,7 @@ function gwolle_gb_page_settingstab_form() {
58
  </td>
59
  </tr>
60
 
61
- <tr valign="top">
62
  <th scope="row"><label for="gb_header"><?php esc_html_e('Header Text', 'gwolle-gb'); ?></label></th>
63
  <td><?php
64
  $header = gwolle_gb_sanitize_output( get_option('gwolle_gb-header', false) );
@@ -73,7 +73,7 @@ function gwolle_gb_page_settingstab_form() {
73
  </td>
74
  </tr>
75
 
76
- <tr valign="top">
77
  <th scope="row"><label for="notice"><?php esc_html_e('Notice Text', 'gwolle-gb'); ?></label></th>
78
  <td>
79
  <?php
@@ -99,7 +99,7 @@ We reserve the right to edit, delete, or not publish entries.
99
  </td>
100
  </tr>
101
 
102
- <tr valign="top">
103
  <th scope="row"><label for="form_ajax"><?php esc_html_e('Use AJAX', 'gwolle-gb'); ?></label></th>
104
  <td>
105
  <input type="checkbox" id="form_ajax" name="form_ajax" <?php
@@ -113,7 +113,7 @@ We reserve the right to edit, delete, or not publish entries.
113
  </td>
114
  </tr>
115
 
116
- <tr valign="top">
117
  <th scope="row"><label for="store_ip"><?php esc_html_e('Store IP Address', 'gwolle-gb'); ?></label></th>
118
  <td>
119
  <input type="checkbox" id="store_ip" name="store_ip" <?php
@@ -130,7 +130,7 @@ We reserve the right to edit, delete, or not publish entries.
130
  </td>
131
  </tr>
132
 
133
- <tr valign="top">
134
  <th scope="row"><label for="gb_remove_ip"><?php esc_html_e('Remove IP Address', 'gwolle-gb'); ?></label></th>
135
  <td>
136
  <input type="checkbox" id="gb_remove_ip" name="gb_remove_ip" />
@@ -146,11 +146,11 @@ We reserve the right to edit, delete, or not publish entries.
146
 
147
  <?php $form_setting = gwolle_gb_get_setting( 'form' ); ?>
148
 
149
- <tr valign="top">
150
  <td colspan="3"><h3><?php esc_html_e('Configure the form that is shown to visitors.', 'gwolle-gb'); ?></h3></td>
151
  </tr>
152
 
153
- <tr valign="top">
154
  <th scope="row"><label for="form_name_enabled"><?php esc_html_e('Name', 'gwolle-gb'); ?>:</label></th>
155
  <td>
156
  <input type="checkbox" id="form_name_enabled" name="form_name_enabled"<?php
@@ -170,7 +170,7 @@ We reserve the right to edit, delete, or not publish entries.
170
  </td>
171
  </tr>
172
 
173
- <tr valign="top">
174
  <th scope="row"><label for="form_city_enabled"><?php esc_html_e('City', 'gwolle-gb'); ?>:</label></th>
175
  <td>
176
  <input type="checkbox" id="form_city_enabled" name="form_city_enabled"<?php
@@ -190,7 +190,7 @@ We reserve the right to edit, delete, or not publish entries.
190
  </td>
191
  </tr>
192
 
193
- <tr valign="top">
194
  <th scope="row"><label for="form_email_enabled"><?php esc_html_e('Email', 'gwolle-gb'); ?>:</label></th>
195
  <td>
196
  <input type="checkbox" id="form_email_enabled" name="form_email_enabled"<?php
@@ -210,7 +210,7 @@ We reserve the right to edit, delete, or not publish entries.
210
  </td>
211
  </tr>
212
 
213
- <tr valign="top">
214
  <th scope="row"><label for="form_homepage_enabled"><?php esc_html_e('Website', 'gwolle-gb'); ?>:</label></th>
215
  <td>
216
  <input type="checkbox" id="form_homepage_enabled" name="form_homepage_enabled"<?php
@@ -230,7 +230,7 @@ We reserve the right to edit, delete, or not publish entries.
230
  </td>
231
  </tr>
232
 
233
- <tr valign="top">
234
  <th scope="row"><label for="form_message_enabled"><?php esc_html_e('Message', 'gwolle-gb'); ?>:</label></th>
235
  <td>
236
  <input type="checkbox" id="form_message_enabled" name="form_message_enabled"<?php
@@ -250,7 +250,7 @@ We reserve the right to edit, delete, or not publish entries.
250
  </td>
251
  </tr>
252
 
253
- <tr valign="top">
254
  <th scope="row"><label for="form_bbcode_enabled"><?php esc_html_e('Visual formatting and Emoji', 'gwolle-gb'); ?>:</label></th>
255
  <td>
256
  <input type="checkbox" id="form_bbcode_enabled" name="form_bbcode_enabled"<?php
@@ -265,7 +265,7 @@ We reserve the right to edit, delete, or not publish entries.
265
  </td>
266
  </tr>
267
 
268
- <tr valign="top">
269
  <th scope="row"><label for="form_antispam_enabled"><?php esc_html_e('Custom Anti-spam', 'gwolle-gb'); ?>:</label></th>
270
  <td>
271
  <input type="checkbox" id="form_antispam_enabled" name="form_antispam_enabled"<?php
@@ -280,7 +280,7 @@ We reserve the right to edit, delete, or not publish entries.
280
  </td>
281
  </tr>
282
 
283
- <tr valign="top">
284
  <th scope="row"><label for="form_privacy_enabled"><?php esc_html_e('Privacy checkbox', 'gwolle-gb'); ?>:</label></th>
285
  <td>
286
  <input type="checkbox" id="form_privacy_enabled" name="form_privacy_enabled"<?php
30
  <table class="form-table">
31
  <tbody>
32
 
33
+ <tr>
34
  <th scope="row"><label for="require_login"><?php esc_html_e('Require Login', 'gwolle-gb'); ?></label></th>
35
  <td>
36
  <input type="checkbox" id="require_login" name="require_login" <?php
44
  </td>
45
  </tr>
46
 
47
+ <tr>
48
  <th scope="row"><label for="labels_float"><?php esc_html_e('Labels float', 'gwolle-gb'); ?></label></th>
49
  <td>
50
  <input type="checkbox" id="labels_float" name="labels_float" <?php
58
  </td>
59
  </tr>
60
 
61
+ <tr>
62
  <th scope="row"><label for="gb_header"><?php esc_html_e('Header Text', 'gwolle-gb'); ?></label></th>
63
  <td><?php
64
  $header = gwolle_gb_sanitize_output( get_option('gwolle_gb-header', false) );
73
  </td>
74
  </tr>
75
 
76
+ <tr>
77
  <th scope="row"><label for="notice"><?php esc_html_e('Notice Text', 'gwolle-gb'); ?></label></th>
78
  <td>
79
  <?php
99
  </td>
100
  </tr>
101
 
102
+ <tr>
103
  <th scope="row"><label for="form_ajax"><?php esc_html_e('Use AJAX', 'gwolle-gb'); ?></label></th>
104
  <td>
105
  <input type="checkbox" id="form_ajax" name="form_ajax" <?php
113
  </td>
114
  </tr>
115
 
116
+ <tr>
117
  <th scope="row"><label for="store_ip"><?php esc_html_e('Store IP Address', 'gwolle-gb'); ?></label></th>
118
  <td>
119
  <input type="checkbox" id="store_ip" name="store_ip" <?php
130
  </td>
131
  </tr>
132
 
133
+ <tr>
134
  <th scope="row"><label for="gb_remove_ip"><?php esc_html_e('Remove IP Address', 'gwolle-gb'); ?></label></th>
135
  <td>
136
  <input type="checkbox" id="gb_remove_ip" name="gb_remove_ip" />
146
 
147
  <?php $form_setting = gwolle_gb_get_setting( 'form' ); ?>
148
 
149
+ <tr>
150
  <td colspan="3"><h3><?php esc_html_e('Configure the form that is shown to visitors.', 'gwolle-gb'); ?></h3></td>
151
  </tr>
152
 
153
+ <tr>
154
  <th scope="row"><label for="form_name_enabled"><?php esc_html_e('Name', 'gwolle-gb'); ?>:</label></th>
155
  <td>
156
  <input type="checkbox" id="form_name_enabled" name="form_name_enabled"<?php
170
  </td>
171
  </tr>
172
 
173
+ <tr>
174
  <th scope="row"><label for="form_city_enabled"><?php esc_html_e('City', 'gwolle-gb'); ?>:</label></th>
175
  <td>
176
  <input type="checkbox" id="form_city_enabled" name="form_city_enabled"<?php
190
  </td>
191
  </tr>
192
 
193
+ <tr>
194
  <th scope="row"><label for="form_email_enabled"><?php esc_html_e('Email', 'gwolle-gb'); ?>:</label></th>
195
  <td>
196
  <input type="checkbox" id="form_email_enabled" name="form_email_enabled"<?php
210
  </td>
211
  </tr>
212
 
213
+ <tr>
214
  <th scope="row"><label for="form_homepage_enabled"><?php esc_html_e('Website', 'gwolle-gb'); ?>:</label></th>
215
  <td>
216
  <input type="checkbox" id="form_homepage_enabled" name="form_homepage_enabled"<?php
230
  </td>
231
  </tr>
232
 
233
+ <tr>
234
  <th scope="row"><label for="form_message_enabled"><?php esc_html_e('Message', 'gwolle-gb'); ?>:</label></th>
235
  <td>
236
  <input type="checkbox" id="form_message_enabled" name="form_message_enabled"<?php
250
  </td>
251
  </tr>
252
 
253
+ <tr>
254
  <th scope="row"><label for="form_bbcode_enabled"><?php esc_html_e('Visual formatting and Emoji', 'gwolle-gb'); ?>:</label></th>
255
  <td>
256
  <input type="checkbox" id="form_bbcode_enabled" name="form_bbcode_enabled"<?php
265
  </td>
266
  </tr>
267
 
268
+ <tr>
269
  <th scope="row"><label for="form_antispam_enabled"><?php esc_html_e('Custom Anti-spam', 'gwolle-gb'); ?>:</label></th>
270
  <td>
271
  <input type="checkbox" id="form_antispam_enabled" name="form_antispam_enabled"<?php
280
  </td>
281
  </tr>
282
 
283
+ <tr>
284
  <th scope="row"><label for="form_privacy_enabled"><?php esc_html_e('Privacy checkbox', 'gwolle-gb'); ?>:</label></th>
285
  <td>
286
  <input type="checkbox" id="form_privacy_enabled" name="form_privacy_enabled"<?php
admin/tabs/gb-readingtab.php CHANGED
@@ -31,7 +31,7 @@ function gwolle_gb_page_settingstab_reading() {
31
  <table class="form-table">
32
  <tbody>
33
 
34
- <tr valign="top">
35
  <th scope="row"><label for="entriesPerPage"><?php esc_html_e('Entries per page on the frontend', 'gwolle-gb'); ?></label></th>
36
  <td>
37
  <select name="entriesPerPage" id="entriesPerPage">
@@ -51,7 +51,7 @@ function gwolle_gb_page_settingstab_reading() {
51
  </td>
52
  </tr>
53
 
54
- <tr valign="top">
55
  <th scope="row"><label for="excerpt_length"><?php esc_html_e('Length of the entry content', 'gwolle-gb'); ?></label></th>
56
  <td>
57
  <select name="excerpt_length" id="excerpt_length">
@@ -81,7 +81,7 @@ function gwolle_gb_page_settingstab_reading() {
81
  </td>
82
  </tr>
83
 
84
- <tr valign="top">
85
  <th scope="row"><label for="showLineBreaks"><?php esc_html_e('Line breaks', 'gwolle-gb'); ?></label></th>
86
  <td>
87
  <input type="checkbox" id="showLineBreaks" name="showLineBreaks"<?php
@@ -98,7 +98,7 @@ function gwolle_gb_page_settingstab_reading() {
98
  </td>
99
  </tr>
100
 
101
- <tr valign="top">
102
  <th scope="row"><label for="showSmilies"><?php esc_html_e('Smileys', 'gwolle-gb'); ?></label></th>
103
  <td>
104
  <input type="checkbox" id="showSmilies" name="showSmilies"<?php
@@ -113,7 +113,7 @@ function gwolle_gb_page_settingstab_reading() {
113
  </td>
114
  </tr>
115
 
116
- <tr valign="top">
117
  <th scope="row"><label for="linkAuthorWebsite"><?php esc_html_e('Links', 'gwolle-gb'); ?></label></th>
118
  <td>
119
  <input type="checkbox" id="linkAuthorWebsite" name="linkAuthorWebsite"<?php
@@ -127,7 +127,7 @@ function gwolle_gb_page_settingstab_reading() {
127
  </td>
128
  </tr>
129
 
130
- <tr valign="top">
131
  <th scope="row"><label for="admin_style"><?php esc_html_e('Admin Entry Styling', 'gwolle-gb'); ?></label></th>
132
  <td>
133
  <input type="checkbox" id="admin_style" name="admin_style"<?php
@@ -141,7 +141,7 @@ function gwolle_gb_page_settingstab_reading() {
141
  </td>
142
  </tr>
143
 
144
- <tr valign="top">
145
  <th scope="row"><label for="navigation"><?php esc_html_e('Navigation', 'gwolle-gb'); ?></label></th>
146
  <td>
147
  <?php $navigation = (int) get_option( 'gwolle_gb-navigation', 0 ); ?>
@@ -155,7 +155,7 @@ function gwolle_gb_page_settingstab_reading() {
155
  </td>
156
  </tr>
157
 
158
- <tr valign="top">
159
  <th scope="row"><label for="paginate_all"><?php esc_html_e('Pagination', 'gwolle-gb'); ?></label></th>
160
  <td>
161
  <input type="checkbox" id="paginate_all" name="paginate_all"<?php
@@ -172,11 +172,11 @@ function gwolle_gb_page_settingstab_reading() {
172
 
173
  <?php $read_setting = gwolle_gb_get_setting( 'read' ); ?>
174
 
175
- <tr valign="top">
176
  <td colspan="2"><h3><?php esc_html_e('Configure the parts of the entries that are shown to visitors.', 'gwolle-gb'); ?></h3></td>
177
  </tr>
178
 
179
- <tr valign="top">
180
  <th scope="row"><label for="read_avatar"><?php esc_html_e('Avatar', 'gwolle-gb'); ?>:</label></th>
181
  <td>
182
  <input type="checkbox" id="read_avatar" name="read_avatar"<?php
@@ -188,7 +188,7 @@ function gwolle_gb_page_settingstab_reading() {
188
  </td>
189
  </tr>
190
 
191
- <tr valign="top">
192
  <th scope="row"><label for="read_name"><?php esc_html_e('Name', 'gwolle-gb'); ?>:</label></th>
193
  <td>
194
  <input type="checkbox" id="read_name" name="read_name"<?php
@@ -200,7 +200,7 @@ function gwolle_gb_page_settingstab_reading() {
200
  </td>
201
  </tr>
202
 
203
- <tr valign="top">
204
  <th scope="row"><label for="read_city"><?php esc_html_e('City', 'gwolle-gb'); ?>:</label></th>
205
  <td>
206
  <input type="checkbox" id="read_city" name="read_city"<?php
@@ -212,7 +212,7 @@ function gwolle_gb_page_settingstab_reading() {
212
  </td>
213
  </tr>
214
 
215
- <tr valign="top">
216
  <th scope="row"><label for="read_datetime"><?php esc_html_e('Date and Time', 'gwolle-gb'); ?>:</label></th>
217
  <td>
218
  <input type="checkbox" id="read_datetime" name="read_datetime"<?php
@@ -225,7 +225,7 @@ function gwolle_gb_page_settingstab_reading() {
225
  </td>
226
  </tr>
227
 
228
- <tr valign="top">
229
  <th scope="row"><label for="read_date"><?php esc_html_e('Date', 'gwolle-gb'); ?>:</label></th>
230
  <td>
231
  <input type="checkbox" id="read_date" name="read_date"<?php
@@ -238,7 +238,7 @@ function gwolle_gb_page_settingstab_reading() {
238
  </td>
239
  </tr>
240
 
241
- <tr valign="top">
242
  <th scope="row"><label for="read_content"><?php esc_html_e('Content', 'gwolle-gb'); ?>:</label></th>
243
  <td>
244
  <input type="checkbox" id="read_content" name="read_content"<?php
@@ -250,7 +250,7 @@ function gwolle_gb_page_settingstab_reading() {
250
  </td>
251
  </tr>
252
 
253
- <tr valign="top">
254
  <th scope="row"><label for="read_aavatar"><?php esc_html_e('Admin Avatar', 'gwolle-gb'); ?>:</label></th>
255
  <td>
256
  <input type="checkbox" id="read_aavatar" name="read_aavatar"<?php
@@ -262,7 +262,7 @@ function gwolle_gb_page_settingstab_reading() {
262
  </td>
263
  </tr>
264
 
265
- <tr valign="top">
266
  <th scope="row"><label for="read_editlink"><?php esc_html_e('Edit link', 'gwolle-gb'); ?>:</label></th>
267
  <td>
268
  <input type="checkbox" id="read_editlink" name="read_editlink"<?php
31
  <table class="form-table">
32
  <tbody>
33
 
34
+ <tr>
35
  <th scope="row"><label for="entriesPerPage"><?php esc_html_e('Entries per page on the frontend', 'gwolle-gb'); ?></label></th>
36
  <td>
37
  <select name="entriesPerPage" id="entriesPerPage">
51
  </td>
52
  </tr>
53
 
54
+ <tr>
55
  <th scope="row"><label for="excerpt_length"><?php esc_html_e('Length of the entry content', 'gwolle-gb'); ?></label></th>
56
  <td>
57
  <select name="excerpt_length" id="excerpt_length">
81
  </td>
82
  </tr>
83
 
84
+ <tr>
85
  <th scope="row"><label for="showLineBreaks"><?php esc_html_e('Line breaks', 'gwolle-gb'); ?></label></th>
86
  <td>
87
  <input type="checkbox" id="showLineBreaks" name="showLineBreaks"<?php
98
  </td>
99
  </tr>
100
 
101
+ <tr>
102
  <th scope="row"><label for="showSmilies"><?php esc_html_e('Smileys', 'gwolle-gb'); ?></label></th>
103
  <td>
104
  <input type="checkbox" id="showSmilies" name="showSmilies"<?php
113
  </td>
114
  </tr>
115
 
116
+ <tr>
117
  <th scope="row"><label for="linkAuthorWebsite"><?php esc_html_e('Links', 'gwolle-gb'); ?></label></th>
118
  <td>
119
  <input type="checkbox" id="linkAuthorWebsite" name="linkAuthorWebsite"<?php
127
  </td>
128
  </tr>
129
 
130
+ <tr>
131
  <th scope="row"><label for="admin_style"><?php esc_html_e('Admin Entry Styling', 'gwolle-gb'); ?></label></th>
132
  <td>
133
  <input type="checkbox" id="admin_style" name="admin_style"<?php
141
  </td>
142
  </tr>
143
 
144
+ <tr>
145
  <th scope="row"><label for="navigation"><?php esc_html_e('Navigation', 'gwolle-gb'); ?></label></th>
146
  <td>
147
  <?php $navigation = (int) get_option( 'gwolle_gb-navigation', 0 ); ?>
155
  </td>
156
  </tr>
157
 
158
+ <tr>
159
  <th scope="row"><label for="paginate_all"><?php esc_html_e('Pagination', 'gwolle-gb'); ?></label></th>
160
  <td>
161
  <input type="checkbox" id="paginate_all" name="paginate_all"<?php
172
 
173
  <?php $read_setting = gwolle_gb_get_setting( 'read' ); ?>
174
 
175
+ <tr>
176
  <td colspan="2"><h3><?php esc_html_e('Configure the parts of the entries that are shown to visitors.', 'gwolle-gb'); ?></h3></td>
177
  </tr>
178
 
179
+ <tr>
180
  <th scope="row"><label for="read_avatar"><?php esc_html_e('Avatar', 'gwolle-gb'); ?>:</label></th>
181
  <td>
182
  <input type="checkbox" id="read_avatar" name="read_avatar"<?php
188
  </td>
189
  </tr>
190
 
191
+ <tr>
192
  <th scope="row"><label for="read_name"><?php esc_html_e('Name', 'gwolle-gb'); ?>:</label></th>
193
  <td>
194
  <input type="checkbox" id="read_name" name="read_name"<?php
200
  </td>
201
  </tr>
202
 
203
+ <tr>
204
  <th scope="row"><label for="read_city"><?php esc_html_e('City', 'gwolle-gb'); ?>:</label></th>
205
  <td>
206
  <input type="checkbox" id="read_city" name="read_city"<?php
212
  </td>
213
  </tr>
214
 
215
+ <tr>
216
  <th scope="row"><label for="read_datetime"><?php esc_html_e('Date and Time', 'gwolle-gb'); ?>:</label></th>
217
  <td>
218
  <input type="checkbox" id="read_datetime" name="read_datetime"<?php
225
  </td>
226
  </tr>
227
 
228
+ <tr>
229
  <th scope="row"><label for="read_date"><?php esc_html_e('Date', 'gwolle-gb'); ?>:</label></th>
230
  <td>
231
  <input type="checkbox" id="read_date" name="read_date"<?php
238
  </td>
239
  </tr>
240
 
241
+ <tr>
242
  <th scope="row"><label for="read_content"><?php esc_html_e('Content', 'gwolle-gb'); ?>:</label></th>
243
  <td>
244
  <input type="checkbox" id="read_content" name="read_content"<?php
250
  </td>
251
  </tr>
252
 
253
+ <tr>
254
  <th scope="row"><label for="read_aavatar"><?php esc_html_e('Admin Avatar', 'gwolle-gb'); ?>:</label></th>
255
  <td>
256
  <input type="checkbox" id="read_aavatar" name="read_aavatar"<?php
262
  </td>
263
  </tr>
264
 
265
+ <tr>
266
  <th scope="row"><label for="read_editlink"><?php esc_html_e('Edit link', 'gwolle-gb'); ?>:</label></th>
267
  <td>
268
  <input type="checkbox" id="read_editlink" name="read_editlink"<?php
admin/tabs/gb-uninstalltab.php CHANGED
@@ -18,6 +18,7 @@ function gwolle_gb_page_settingstab_uninstall() {
18
  die(esc_html__('You need a higher level of permission.', 'gwolle-gb'));
19
  }
20
  if ( function_exists('is_multisite') && is_multisite() ) {
 
21
  return;
22
  } ?>
23
 
@@ -33,17 +34,17 @@ function gwolle_gb_page_settingstab_uninstall() {
33
  <table class="form-table">
34
  <tbody>
35
 
36
- <tr valign="top">
37
  <th scope="row" style="color:#FF0000;"><label><?php esc_html_e('Uninstall', 'gwolle-gb'); ?></label></th>
38
  <td>
39
- <?php esc_html_e('Uninstalling means that all database entries are removed (settings and entries).', 'gwolle-gb');
40
- echo '<br />';
41
- _e('This can <strong>not</strong> be undone.', 'gwolle-gb');
42
  ?>
43
  </td>
44
  </tr>
45
 
46
- <tr valign="top">
47
  <th scope="row" style="color:#FF0000;"><label for="gwolle_gb_uninstall_confirmed"><?php esc_html_e('Confirm', 'gwolle-gb'); ?></label></th>
48
  <td>
49
  <input type="checkbox" name="gwolle_gb_uninstall_confirmed" id="gwolle_gb_uninstall_confirmed">
18
  die(esc_html__('You need a higher level of permission.', 'gwolle-gb'));
19
  }
20
  if ( function_exists('is_multisite') && is_multisite() ) {
21
+ esc_html_e('You are on a multisite install of WordPress. Please take a look at the documentation how to remove all the data of this plugin on multisite.', 'gwolle-gb');
22
  return;
23
  } ?>
24
 
34
  <table class="form-table">
35
  <tbody>
36
 
37
+ <tr>
38
  <th scope="row" style="color:#FF0000;"><label><?php esc_html_e('Uninstall', 'gwolle-gb'); ?></label></th>
39
  <td>
40
+ <?php esc_html_e('Uninstalling means that all database entries are removed (settings and entries).', 'gwolle-gb'); echo '<br />';
41
+ _e('This can <strong>not</strong> be undone.', 'gwolle-gb'); echo '<br />';
42
+ esc_html_e('It is a good idea to make a backup of your website before you touch this button.', 'gwolle-gb');
43
  ?>
44
  </td>
45
  </tr>
46
 
47
+ <tr>
48
  <th scope="row" style="color:#FF0000;"><label for="gwolle_gb_uninstall_confirmed"><?php esc_html_e('Confirm', 'gwolle-gb'); ?></label></th>
49
  <td>
50
  <input type="checkbox" name="gwolle_gb_uninstall_confirmed" id="gwolle_gb_uninstall_confirmed">
changelog-v0.txt → changelog/changelog-v0.txt RENAMED
File without changes
changelog-v1.txt → changelog/changelog-v1.txt RENAMED
File without changes
changelog-v2.txt → changelog/changelog-v2.txt RENAMED
File without changes
changelog/changelog-v3.txt ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ == Changelog ==
3
+
4
+ = 3.1.9 =
5
+ * 2020-02-01
6
+ * Fix undefined variable notice (thanks ronr1999).
7
+ * Add 'float:none;' to frontend button.
8
+
9
+ = 3.1.8 =
10
+ * 2020-01-21
11
+ * Add highlight to search results (thanks @robinnatter).
12
+ * Add searchwords to search widget after searching.
13
+ * Do not set meta_key when shortcode is used in widget or one-page design.
14
+ * Show InnoDB engine on debug tab.
15
+ * Show existence of database tables on debug tab.
16
+
17
+ = 3.1.7 =
18
+ * 2019-10-25
19
+ * Show subscription status for email notifications on settings page.
20
+ * Comment out unused images in markitup CSS.
21
+ * Set rel='nofollow noopener noreferrer' for bbcode links and user website.
22
+ * Set referrerpolicy='no-referrer' for bbcode images and avatar.
23
+ * Add filter 'gwolle_gb_bbcode_img_referrer'.
24
+ * Update strings for add-on.
25
+
26
+ = 3.1.6 =
27
+ * 2019-08-21
28
+ * Use wp_kses for filtering html elements.
29
+ * Add support for quotes already in the bbcode link.
30
+
31
+ = 3.1.5 =
32
+ * 2019-06-08
33
+ * Add log entry for privacy policy accepted (gets added to notification mail).
34
+ * Add msg_txt key/value to log entries for plain text display.
35
+ * Small updates to install routine.
36
+ * Support new wp_initialize_site action for multisite.
37
+
38
+ = 3.1.4 =
39
+ * 2019-05-03
40
+ * Make it possible to set entry to moderated with the gwolle_gb_new_entry_frontend filter.
41
+ * Update strings for add-on.
42
+
43
+ = 3.1.3 =
44
+ * 2019-04-16
45
+ * Small fix for silly mistake.
46
+
47
+ = 3.1.2 =
48
+ * 2019-04-04
49
+ * Improve accessibility for the frontend metabox.
50
+ * Add filter gwolle_gb_new_entry_frontend.
51
+ * Add filter gwolle_gb_get_permalink.
52
+ * Change arrows in next/prev pagination.
53
+ * Auto-detect line endings in import from CSV.
54
+
55
+ = 3.1.1 =
56
+ * 2019-03-08
57
+ * Drop check for mime-type on import, too many problems.
58
+ * Small CSS fix for pagination.
59
+
60
+ = 3.1.0 =
61
+ * 2019-02-19
62
+ * Remove support for Really Simple Captcha plugin, since it is ineffective.
63
+ * Please take a look at the other options for spamfilters, there are more and better options.
64
+ * Update CSS for admin navigation for WP 5.1.
65
+ * Add screen-reader-text to navigation for frontend and admin.
66
+ * Small fixes found by the phan tool.
67
+
68
+ = 3.0.0 =
69
+ * 2019-01-22
70
+ * Add search widget (only visible on guestbook pages).
71
+ * Add '[noscript]' to frontend form for when JavaScript is disabled.
72
+ * Add function 'gwolle_gb_post_is_guestbook'.
73
+ * Add function 'gwolle_gb_get_entries_from_search'.
74
+ * Add function 'gwolle_gb_enqueue_markitup'.
75
+ * Fix BBcode: support images inside links.
76
+ * Fix BBcode: have sublists work.
77
+ * Show new username and book ID after editing in editor postbox.
78
+ * Add some accessibility fixes.
79
+ * Switch database engine to InnoDB.
80
+ * Don't use transients for hashed field names, is faster this way.
81
+ * Better test if admin user exists for admin_reply.
82
+ * Use 'field-name' for gwolle_gb_content too.
83
+ * On admin pages, have separate functions for $_POST update. (settings, editor, entries).
84
+ * Use GWOLLE_GB_URL where appropriate.
85
+ * Use static vars instead of global vars.
86
+ * Integrate 2 JavaScript files for Markitup/BBcode.
87
+ * Switch export to 2000 entries per part instead of 3000.
88
+ * Add strings for add-on 1.3.0.
89
+ * Cleanup changelog. Add changelog-v2.txt.
changelog/index.html ADDED
File without changes
docs/filters/gwolle_gb_author_content_label.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_content_label"</b> filter is used to change the text of the label for the textarea of the content at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_content_label', 'filter_function_name' ) ?></code>
10
+
11
+ Where 'filter_function_name' is the function WordPress should call when the filter is being used.
12
+
13
+ '''filter_function_name''' should be a unique function name. It cannot match any other function name already declared.
14
+
15
+
16
+ ==Examples==
17
+
18
+
19
+ function my_gwolle_gb_author_content_label( $label ) {
20
+ // $label is a string
21
+ $label = 'test';
22
+ return $label;
23
+ }
24
+ add_filter( 'gwolle_gb_author_content_label', 'my_gwolle_gb_author_content_label', 10, 1 );
25
+
docs/filters/gwolle_gb_author_content_prefill.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_content_prefill"</b> filter is used to change the prefill of the content textarea field at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_content_prefill', 'filter_function_name' ) ?></code>
10
+
11
+ Where 'filter_function_name' is the function WordPress should call when the filter is being used.
12
+
13
+ '''filter_function_name''' should be a unique function name. It cannot match any other function name already declared.
14
+
15
+
16
+ ==Examples==
17
+
18
+
19
+ function my_gwolle_gb_author_content_prefill( $prefill ) {
20
+ // $prefill is a string
21
+ $prefill = ''; // no prefill, just an empty string
22
+ return $prefill;
23
+ }
24
+ add_filter( 'gwolle_gb_author_content_prefill', 'my_gwolle_gb_author_content_prefill', 10, 1 );
25
+
docs/filters/gwolle_gb_author_email_prefill.txt CHANGED
@@ -2,7 +2,7 @@
2
 
3
  ==Description==
4
 
5
- The <b>"gwolle_gb_author_email_prefill"</b> filter is used to change the prefill of the input field for the logged in user at the frontend.
6
 
7
  You can use this filter as:
8
 
2
 
3
  ==Description==
4
 
5
+ The <b>"gwolle_gb_author_email_prefill"</b> filter is used to change the prefill of the email input field at the frontend.
6
 
7
  You can use this filter as:
8
 
docs/filters/gwolle_gb_author_name_prefill.txt CHANGED
@@ -2,7 +2,7 @@
2
 
3
  ==Description==
4
 
5
- The <b>"gwolle_gb_author_name_prefill"</b> filter is used to change the prefill of the input field for the logged in user at the frontend.
6
 
7
  You can use this filter as:
8
 
2
 
3
  ==Description==
4
 
5
+ The <b>"gwolle_gb_author_name_prefill"</b> filter is used to change the prefill of the name input field at the frontend.
6
 
7
  You can use this filter as:
8
 
docs/filters/gwolle_gb_author_origin_prefill.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ ==Description==
4
+
5
+ The <b>"gwolle_gb_author_origin_prefill"</b> filter is used to change the prefill of the origin input field at the frontend.
6
+
7
+ You can use this filter as:
8
+
9
+ <code><?php add_filter( 'gwolle_gb_author_origin_prefill', 'filter_function_name' ) ?></code>
10
+
11
+ Where 'filter_function_name' is the function WordPress should call when the filter is being used.
12
+
13
+ '''filter_function_name''' should be a unique function name. It cannot match any other function name already declared.
14
+
15
+
16
+ ==Examples==
17
+
18
+
19
+ function my_gwolle_gb_author_origin_prefill( $prefill ) {
20
+ // $prefill is a string
21
+ $prefill = ''; // no prefill, just an empty string
22
+ return $prefill;
23
+ }
24
+ add_filter( 'gwolle_gb_author_origin_prefill', 'my_gwolle_gb_author_origin_prefill', 10, 1 );
25
+
docs/filters/gwolle_gb_author_website_prefill.txt CHANGED
@@ -2,7 +2,7 @@
2
 
3
  ==Description==
4
 
5
- The <b>"gwolle_gb_author_website_prefill"</b> filter is used to change the prefill of the input field for the logged in user at the frontend.
6
 
7
  You can use this filter as:
8
 
2
 
3
  ==Description==
4
 
5
+ The <b>"gwolle_gb_author_website_prefill"</b> filter is used to change the prefill of the website input field at the frontend.
6
 
7
  You can use this filter as:
8
 
docs/filters/gwolle_gb_button.txt CHANGED
@@ -19,8 +19,8 @@ Where 'filter_function_name' is the function WordPress should call when the filt
19
  function my_gwolle_gb_button( $button ) {
20
  // $button is a string
21
  $button = '
22
- <div id="gwolle_gb_write_button">
23
- <input type="button" class="button btn btn-default" value="&raquo; ' . esc_attr__('Write a new entry.', 'gwolle-gb') . '" />
24
  </div>';
25
 
26
  return $button;
19
  function my_gwolle_gb_button( $button ) {
20
  // $button is a string
21
  $button = '
22
+ <div class="gwolle-gb-write-button">
23
+ <input type="button" name="gwolle-gb-write-button" class="button btn btn-default" value="&raquo; ' . esc_attr__('Write a new entry.', 'gwolle-gb') . '" />
24
  </div>';
25
 
26
  return $button;
docs/filters/gwolle_gb_content_label.txt CHANGED
@@ -3,6 +3,7 @@
3
  ==Description==
4
 
5
  The <b>"gwolle_gb_content_label"</b> filter is used to change the text of the label for the textarea of the content at the frontend.
 
6
 
7
  You can use this filter as:
8
 
3
  ==Description==
4
 
5
  The <b>"gwolle_gb_content_label"</b> filter is used to change the text of the label for the textarea of the content at the frontend.
6
+ This filter is deprecated, please use gwolle_gb_author_content_label.
7
 
8
  You can use this filter as:
9
 
docs/filters/gwolle_gb_entry_save.txt CHANGED
@@ -18,8 +18,8 @@ Where 'filter_function_name' is the function WordPress should call when the filt
18
 
19
  function my_gwolle_gb_entry_save( $entry ) {
20
  // $entry is an array.
21
- // Example where every entry that gets saved gets the current time
22
- $entry['datetime'] = current_time( 'timestamp' );
23
  return $entry;
24
  }
25
  add_filter( 'gwolle_gb_entry_save', 'my_gwolle_gb_entry_save');
18
 
19
  function my_gwolle_gb_entry_save( $entry ) {
20
  // $entry is an array.
21
+ // Example where every entry that gets saved gets the current time in GMT
22
+ $entry['datetime'] = time();
23
  return $entry;
24
  }
25
  add_filter( 'gwolle_gb_entry_save', 'my_gwolle_gb_entry_save');
frontend/css/gwolle-gb-frontend.css CHANGED
@@ -4,33 +4,30 @@
4
  */
5
 
6
 
7
- #gwolle_gb {
8
  clear: left;
9
  position: relative;
10
  }
11
 
12
- #gwolle_gb .gwolle_gb_hide {
13
  display: none;
14
  }
15
- #gwolle_gb .gwolle_gb_invisible {
16
  visibility: hidden;
17
  }
18
 
19
  /* Write button */
20
 
21
- #gwolle_gb_write_button,
22
- #gwolle-gb-write-button {
23
  margin: 20px 0 10px;
24
  }
25
- #gwolle_gb_write_button input.button,
26
- #gwolle-gb-write-button input.button {
27
  float: none; /* To avoid problems with too invasive themes. */
28
  }
29
 
30
  /* Write section */
31
 
32
- #gwolle_gb form#gwolle_gb_new_entry,
33
- #gwolle_gb form#gwolle-gb-new-entry {
34
  position: relative;
35
  margin-top: 20px;
36
  text-align: left;
@@ -55,15 +52,13 @@ button.gb-notice-dismiss {
55
  width: 13px;
56
  }
57
 
58
- .gwolle_gb_float .label,
59
- .gwolle_gb_float .input,
60
  .gwolle-gb-float .label,
61
  .gwolle-gb-float .input {
62
  float: left;
63
  }
64
 
65
  /* Text meant only for screen readers in broken themes. */
66
- #gwolle_gb .screen-reader-text {
67
  border: 0;
68
  clip: rect(1px, 1px, 1px, 1px);
69
  clip-path: inset(50%);
@@ -84,10 +79,10 @@ body .gwolle-gb-content a {
84
  }
85
 
86
  /* Submit AJAX icon */
87
- #gwolle_gb .gwolle_gb_submit_ajax_icon,
88
- #gwolle_gb .gwolle-gb-submit-ajax-icon,
89
- #gwolle_gb .gwolle_gb_addon_preview_ajax_icon,
90
- #gwolle_gb .gwolle-gb-addon-preview-ajax-icon {
91
  display: none;
92
  background-image: url("../images/loading.gif");
93
  background-position: 4px 4px;
@@ -98,71 +93,71 @@ body .gwolle-gb-content a {
98
 
99
  /* Messages / Notices */
100
 
101
- #gwolle_gb #gwolle_gb_messages,
102
- #gwolle_gb #gwolle-gb-messages {
103
  border-left: 4px solid #7ad03a;
104
  box-shadow: 2px 2px 2px 0 rgba(0, 0, 0, 0.1);
105
  padding: 1px 12px;
106
  margin: 5px 0 15px;
107
  }
108
- #gwolle_gb #gwolle_gb_messages.error,
109
- #gwolle_gb #gwolle-gb-messages.error {
110
  border-left: 4px solid #dd3d36;
111
  }
112
 
113
- #gwolle_gb .error p, div.updated p {
114
  margin: 0.5em 0;
115
  padding: 2px;
116
  }
117
 
118
- #gwolle_gb form#gwolle_gb_new_entry input.error,
119
- #gwolle_gb form#gwolle-gb-new-entry input.error,
120
- #gwolle_gb form#gwolle_gb_new_entry textarea.error,
121
- #gwolle_gb form#gwolle-gb-new-entry textarea.error {
122
  border: 1px solid #dd3d36;
123
  }
124
- #gwolle_gb form#gwolle_gb_new_entry input[type="checkbox"].error,
125
- #gwolle_gb form#gwolle-gb-new-entry input[type="checkbox"].error {
126
  box-shadow: 1px 1px 0px 0px rgba(221,61,54,1);
127
  }
128
 
129
- #gwolle_gb div.label,
130
- #gwolle_gb div.input {
131
  vertical-align: top;
132
  width: 80%;
133
  }
134
- #gwolle_gb .gwolle-gb-float div.label {
135
  width: 35%;
136
  }
137
- #gwolle_gb .gwolle-gb-float div.input {
138
  width: 50%;
139
  border: 0px;
140
  }
141
 
142
- #gwolle_gb div.input input[type="text"],
143
- #gwolle_gb div.input input[type="email"],
144
- #gwolle_gb div.input input[type="url"],
145
- #gwolle_gb div.input textarea {
 
146
  width: 100%;
147
  }
148
- #gwolle_gb div.input textarea {
149
  height: 150px;
150
  }
151
- #gwolle_gb .clearBoth {
152
  clear: both;
153
  }
154
 
155
 
156
  /* Page Navigation */
157
 
158
- #gwolle_gb .page-navigation {
159
  width: 100%;
160
  text-align: right;
161
  padding: 8px 0;
162
  }
163
 
164
- #gwolle_gb .page-navigation a,
165
- #gwolle_gb .page-navigation span {
166
  display: inline-block;
167
  padding: 0px 6px;
168
  margin-left: 0;
@@ -173,37 +168,36 @@ body .gwolle-gb-content a {
173
  }
174
 
175
  /* Current page */
176
- #gwolle_gb .page-navigation a:hover,
177
- #gwolle_gb .page-navigation span.current {
178
  background: #eee;
179
  color: #000;
180
  opacity: 0.8;
181
  border: 1px solid #ddd;
182
  }
183
- #gwolle_gb .page-navigation span.dots {
184
  padding: 0px 3px;
185
  color: #555;
186
  }
187
 
188
  /* Border-radius for whole pagination thing. */
189
- #gwolle_gb .page-navigation a:nth-child(2),
190
- #gwolle_gb .page-navigation span:nth-child(2) {
191
  border-radius: 3px 0 0 3px;
192
  }
193
- #gwolle_gb .page-navigation a:last-child,
194
- #gwolle_gb .page-navigation span:last-child {
195
  border-radius: 0 3px 3px 0;
196
  }
197
 
198
 
199
  /* Read section */
200
 
201
- #gwolle_gb #gwolle_gb_entries,
202
- #gwolle_gb #gwolle-gb-entries {
203
  position: relative;
204
  }
205
 
206
- #gwolle_gb .admin-entry {
207
  color: #333;
208
  background-color: #e6e6e6;
209
  background-repeat: repeat-x;
@@ -214,41 +208,41 @@ body .gwolle-gb-content a {
214
  background-image: linear-gradient(top, #f4f4f4, #e6e6e6);
215
  padding-left: 5px;
216
  }
217
- #gwolle_gb .admin-entry a {
218
  color: #666;
219
  }
220
- #gwolle_gb .gb-entry {
221
  position: relative;
222
  border-top: 1px #ddd solid;
223
  padding: 10px 0;
224
  margin: 0;
225
  clear: left;
226
  }
227
- #gwolle_gb .gwolle-gb-first {
228
  border-width: 0px;
229
  }
230
- #gwolle_gb .gb-entry-count_0 {
231
  border-bottom: 1px #ddd solid; /* Ajax added entry */
232
  }
233
 
234
- #gwolle_gb .gb-entry .gb-author-info,
235
- #gwolle_gb .gb-entry .gb-entry-content {
236
  display: block;
237
  }
238
- #gwolle_gb .gb-entry .gb-author-info .gb-author-avatar {
239
  margin: 0 0 8px 0;
240
  }
241
- #gwolle_gb .gb-entry .gb-author-info .gb-author-name {
242
  padding-left: 10px;
243
  font-weight: bold;
244
  }
245
- #gwolle_gb .gb-entry .gb-entry-content {
246
  padding-left: 10px;
247
  }
248
- #gwolle_gb .gb-entry .gb-entry-content img {
249
  max-width: 100%;
250
  }
251
- #gwolle_gb .gb-entry .gb-highlight {
252
  background-color: #ddff00;
253
  }
254
 
@@ -277,7 +271,7 @@ div.gb-metabox {
277
  box-sizing: border-box;
278
  z-index: 10;
279
  }
280
- #gwolle_gb .gb-entry-count_1 div.gb-metabox {
281
  border-top: 1px #ddd solid;
282
  }
283
  div.gb-metabox-line {
@@ -311,8 +305,8 @@ div.gb-metabox-line.gb-social-media-share a {
311
 
312
  /* Admin Reply */
313
 
314
- #gwolle_gb .gb-entry-admin_reply,
315
- #gwolle_gb .gb-entry-admin-reply {
316
  margin: 10px 0 0 40px;
317
  padding: 4px 10px 4px 10px;
318
  border-left: 1px solid #ddd;
@@ -321,8 +315,8 @@ div.gb-metabox-line.gb-social-media-share a {
321
 
322
  /* Infinite Scroll */
323
 
324
- #gwolle_gb .gwolle_gb_load_message,
325
- #gwolle_gb .gwolle-gb-load-message {
326
  display: none;
327
  background-color: #eee;
328
  background-image: url("../images/loading.gif");
@@ -338,8 +332,8 @@ div.gb-metabox-line.gb-social-media-share a {
338
  position: absolute;
339
  z-index: 5;
340
  }
341
- #gwolle_gb .gwolle_gb_end_message,
342
- #gwolle_gb .gwolle-gb-end-message {
343
  padding-left: 10px;
344
  }
345
 
@@ -408,20 +402,18 @@ li.gwolle-gb-widget.ssslide {
408
 
409
 
410
  /* Form inside a widget */
411
- .widget .gwolle_gb_float div.label,
412
  .widget .gwolle-gb-float div.label,
413
- .widget .gwolle_gb_float div.input,
414
  .widget .gwolle-gb-float div.input,
415
- .widget-area .gwolle_gb_float div.label,
416
- .widget-area .gwolle_gb_float div.input {
417
  float: none;
418
  }
419
- .widget #gwolle_gb div.label,
420
- .widget-area #gwolle_gb div.label {
421
  width: 100%;
422
  }
423
- .widget #gwolle_gb div.input,
424
- .widget-area #gwolle_gb div.input {
425
  width: 100%;
426
  }
427
 
@@ -429,35 +421,33 @@ li.gwolle-gb-widget.ssslide {
429
  /* Responsive Design */
430
 
431
  @media only screen and (max-width: 820px) {
432
- .gwolle_gb_float div.label,
433
  .gwolle-gb-float div.label,
434
- .gwolle_gb_float div.input,
435
  .gwolle-gb-float div.input {
436
  float: none;
437
  }
438
- #gwolle_gb .gwolle-gb-float div.label,
439
- #gwolle_gb .gwolle-gb-float div.input,
440
- #gwolle_gb div.label,
441
- #gwolle_gb div.input {
442
  width: 80%;
443
  }
444
  }
445
  @media only screen and (max-width: 620px) {
446
- .gwolle_gb_float div.label,
447
  .gwolle-gb-float div.label,
448
- .gwolle_gb_float div.input,
449
  .gwolle-gb-float div.input {
450
  float: none;
451
  }
452
- #gwolle_gb .gwolle-gb-float div.label,
453
- #gwolle_gb .gwolle-gb-float div.input,
454
- #gwolle_gb div.label,
455
- #gwolle_gb div.input {
456
  width: 100%;
457
  }
458
  }
459
 
 
460
  /* Add-On */
 
461
  div.gwolle-gb-starrating-result {
462
  position: absolute;
463
  top: 0;
4
  */
5
 
6
 
7
+ .gwolle-gb {
8
  clear: left;
9
  position: relative;
10
  }
11
 
12
+ .gwolle-gb .gwolle-gb-hide {
13
  display: none;
14
  }
15
+ .gwolle-gb .gwolle-gb-invisible {
16
  visibility: hidden;
17
  }
18
 
19
  /* Write button */
20
 
21
+ .gwolle-gb-write-button {
 
22
  margin: 20px 0 10px;
23
  }
24
+ .gwolle-gb-write-button input.button {
 
25
  float: none; /* To avoid problems with too invasive themes. */
26
  }
27
 
28
  /* Write section */
29
 
30
+ .gwolle-gb form.gwolle-gb-write {
 
31
  position: relative;
32
  margin-top: 20px;
33
  text-align: left;
52
  width: 13px;
53
  }
54
 
 
 
55
  .gwolle-gb-float .label,
56
  .gwolle-gb-float .input {
57
  float: left;
58
  }
59
 
60
  /* Text meant only for screen readers in broken themes. */
61
+ .gwolle-gb .screen-reader-text {
62
  border: 0;
63
  clip: rect(1px, 1px, 1px, 1px);
64
  clip-path: inset(50%);
79
  }
80
 
81
  /* Submit AJAX icon */
82
+ .gwolle-gb .gwolle_gb_submit_ajax_icon,
83
+ .gwolle-gb .gwolle-gb-submit-ajax-icon,
84
+ .gwolle-gb .gwolle_gb_addon_preview_ajax_icon,
85
+ .gwolle-gb .gwolle-gb-addon-preview-ajax-icon {
86
  display: none;
87
  background-image: url("../images/loading.gif");
88
  background-position: 4px 4px;
93
 
94
  /* Messages / Notices */
95
 
96
+ .gwolle-gb .gwolle_gb_messages,
97
+ .gwolle-gb .gwolle-gb-messages {
98
  border-left: 4px solid #7ad03a;
99
  box-shadow: 2px 2px 2px 0 rgba(0, 0, 0, 0.1);
100
  padding: 1px 12px;
101
  margin: 5px 0 15px;
102
  }
103
+ .gwolle-gb .gwolle_gb_messages.error,
104
+ .gwolle-gb .gwolle-gb-messages.error {
105
  border-left: 4px solid #dd3d36;
106
  }
107
 
108
+ .gwolle-gb .error p, div.updated p {
109
  margin: 0.5em 0;
110
  padding: 2px;
111
  }
112
 
113
+ .gwolle-gb form.gwolle-gb-write div.input.error,
114
+ .gwolle-gb form.gwolle-gb-write input.error,
115
+ .gwolle-gb form.gwolle-gb-write select.error,
116
+ .gwolle-gb form.gwolle-gb-write textarea.error {
117
  border: 1px solid #dd3d36;
118
  }
119
+ .gwolle-gb form.gwolle-gb-write input[type="checkbox"].error {
 
120
  box-shadow: 1px 1px 0px 0px rgba(221,61,54,1);
121
  }
122
 
123
+ .gwolle-gb div.label,
124
+ .gwolle-gb div.input {
125
  vertical-align: top;
126
  width: 80%;
127
  }
128
+ .gwolle-gb .gwolle-gb-float div.label {
129
  width: 35%;
130
  }
131
+ .gwolle-gb .gwolle-gb-float div.input {
132
  width: 50%;
133
  border: 0px;
134
  }
135
 
136
+ .gwolle-gb div.input input[type="text"],
137
+ .gwolle-gb div.input input[type="email"],
138
+ .gwolle-gb div.input input[type="url"],
139
+ .gwolle-gb div.input textarea,
140
+ .gwolle-gb div.input select {
141
  width: 100%;
142
  }
143
+ .gwolle-gb div.input textarea {
144
  height: 150px;
145
  }
146
+ .gwolle-gb .clearBoth {
147
  clear: both;
148
  }
149
 
150
 
151
  /* Page Navigation */
152
 
153
+ .gwolle-gb .page-navigation {
154
  width: 100%;
155
  text-align: right;
156
  padding: 8px 0;
157
  }
158
 
159
+ .gwolle-gb .page-navigation a,
160
+ .gwolle-gb .page-navigation span {
161
  display: inline-block;
162
  padding: 0px 6px;
163
  margin-left: 0;
168
  }
169
 
170
  /* Current page */
171
+ .gwolle-gb .page-navigation a:hover,
172
+ .gwolle-gb .page-navigation span.current {
173
  background: #eee;
174
  color: #000;
175
  opacity: 0.8;
176
  border: 1px solid #ddd;
177
  }
178
+ .gwolle-gb .page-navigation span.dots {
179
  padding: 0px 3px;
180
  color: #555;
181
  }
182
 
183
  /* Border-radius for whole pagination thing. */
184
+ .gwolle-gb .page-navigation a:nth-child(2),
185
+ .gwolle-gb .page-navigation span:nth-child(2) {
186
  border-radius: 3px 0 0 3px;
187
  }
188
+ .gwolle-gb .page-navigation a:last-child,
189
+ .gwolle-gb .page-navigation span:last-child {
190
  border-radius: 0 3px 3px 0;
191
  }
192
 
193
 
194
  /* Read section */
195
 
196
+ .gwolle-gb .gwolle-gb-read {
 
197
  position: relative;
198
  }
199
 
200
+ .gwolle-gb .admin-entry {
201
  color: #333;
202
  background-color: #e6e6e6;
203
  background-repeat: repeat-x;
208
  background-image: linear-gradient(top, #f4f4f4, #e6e6e6);
209
  padding-left: 5px;
210
  }
211
+ .gwolle-gb .admin-entry a {
212
  color: #666;
213
  }
214
+ .gwolle-gb .gb-entry {
215
  position: relative;
216
  border-top: 1px #ddd solid;
217
  padding: 10px 0;
218
  margin: 0;
219
  clear: left;
220
  }
221
+ .gwolle-gb .gwolle-gb-first {
222
  border-width: 0px;
223
  }
224
+ .gwolle-gb .gb-entry-count_0 {
225
  border-bottom: 1px #ddd solid; /* Ajax added entry */
226
  }
227
 
228
+ .gwolle-gb .gb-entry .gb-author-info,
229
+ .gwolle-gb .gb-entry .gb-entry-content {
230
  display: block;
231
  }
232
+ .gwolle-gb .gb-entry .gb-author-info .gb-author-avatar {
233
  margin: 0 0 8px 0;
234
  }
235
+ .gwolle-gb .gb-entry .gb-author-info .gb-author-name {
236
  padding-left: 10px;
237
  font-weight: bold;
238
  }
239
+ .gwolle-gb .gb-entry .gb-entry-content {
240
  padding-left: 10px;
241
  }
242
+ .gwolle-gb .gb-entry .gb-entry-content img {
243
  max-width: 100%;
244
  }
245
+ .gwolle-gb .gb-entry .gb-highlight {
246
  background-color: #ddff00;
247
  }
248
 
271
  box-sizing: border-box;
272
  z-index: 10;
273
  }
274
+ .gwolle-gb .gb-entry-count_1 div.gb-metabox {
275
  border-top: 1px #ddd solid;
276
  }
277
  div.gb-metabox-line {
305
 
306
  /* Admin Reply */
307
 
308
+ .gwolle-gb .gb-entry-admin_reply,
309
+ .gwolle-gb .gb-entry-admin-reply {
310
  margin: 10px 0 0 40px;
311
  padding: 4px 10px 4px 10px;
312
  border-left: 1px solid #ddd;
315
 
316
  /* Infinite Scroll */
317
 
318
+ .gwolle-gb .gwolle_gb_load_message,
319
+ .gwolle-gb .gwolle-gb-load-message {
320
  display: none;
321
  background-color: #eee;
322
  background-image: url("../images/loading.gif");
332
  position: absolute;
333
  z-index: 5;
334
  }
335
+ .gwolle-gb .gwolle_gb_end_message,
336
+ .gwolle-gb .gwolle-gb-end-message {
337
  padding-left: 10px;
338
  }
339
 
402
 
403
 
404
  /* Form inside a widget */
 
405
  .widget .gwolle-gb-float div.label,
 
406
  .widget .gwolle-gb-float div.input,
407
+ .widget-area .gwolle-gb-float div.label,
408
+ .widget-area .gwolle-gb-float div.input {
409
  float: none;
410
  }
411
+ .widget .gwolle-gb div.label,
412
+ .widget-area .gwolle-gb div.label {
413
  width: 100%;
414
  }
415
+ .widget .gwolle-gb div.input,
416
+ .widget-area .gwolle-gb div.input {
417
  width: 100%;
418
  }
419
 
421
  /* Responsive Design */
422
 
423
  @media only screen and (max-width: 820px) {
 
424
  .gwolle-gb-float div.label,
 
425
  .gwolle-gb-float div.input {
426
  float: none;
427
  }
428
+ .gwolle-gb .gwolle-gb-float div.label,
429
+ .gwolle-gb .gwolle-gb-float div.input,
430
+ .gwolle-gb div.label,
431
+ .gwolle-gb div.input {
432
  width: 80%;
433
  }
434
  }
435
  @media only screen and (max-width: 620px) {
 
436
  .gwolle-gb-float div.label,
 
437
  .gwolle-gb-float div.input {
438
  float: none;
439
  }
440
+ .gwolle-gb .gwolle-gb-float div.label,
441
+ .gwolle-gb .gwolle-gb-float div.input,
442
+ .gwolle-gb div.label,
443
+ .gwolle-gb div.input {
444
  width: 100%;
445
  }
446
  }
447
 
448
+
449
  /* Add-On */
450
+
451
  div.gwolle-gb-starrating-result {
452
  position: absolute;
453
  top: 0;
frontend/gb-form-posthandling.php CHANGED
@@ -180,7 +180,7 @@ function gwolle_gb_frontend_posthandling() {
180
  /* Privacy checkbox for GDPR compliance. */
181
  if ( isset($form_setting['form_privacy_enabled']) && $form_setting['form_privacy_enabled'] === 'true' ) {
182
  if (isset($_POST['gwolle_gb_privacy']) && $_POST['gwolle_gb_privacy'] == 'on') {
183
- // Should be fine.
184
  } else {
185
  gwolle_gb_add_message( '<p class="error_fields gb-error-fields"><strong>' . esc_html__('You did not accept the privacy policy, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'gwolle_gb_privacy'); // mandatory
186
  }
@@ -385,8 +385,8 @@ function gwolle_gb_frontend_posthandling() {
385
  // Input fields were filled in, so continue.
386
  $timeout = (int) $_POST["$field_name"];
387
  $timeout2 = (int) $_POST["$field_name2"];
388
- if ( ($timeout2 - $timeout) < 8 ) {
389
- // Submitted less then 4 seconds after loading. Considered spam.
390
  $entry->set_isspam(true);
391
  $marked_by_timeout = true;
392
  if (get_option( 'gwolle_gb-refuse-spam', 'false') == 'true') {
180
  /* Privacy checkbox for GDPR compliance. */
181
  if ( isset($form_setting['form_privacy_enabled']) && $form_setting['form_privacy_enabled'] === 'true' ) {
182
  if (isset($_POST['gwolle_gb_privacy']) && $_POST['gwolle_gb_privacy'] == 'on') {
183
+ gwolle_gb_add_formdata( 'gwolle_gb_privacy', 'on' );
184
  } else {
185
  gwolle_gb_add_message( '<p class="error_fields gb-error-fields"><strong>' . esc_html__('You did not accept the privacy policy, even though it is mandatory.', 'gwolle-gb') . '</strong></p>', true, 'gwolle_gb_privacy'); // mandatory
186
  }
385
  // Input fields were filled in, so continue.
386
  $timeout = (int) $_POST["$field_name"];
387
  $timeout2 = (int) $_POST["$field_name2"];
388
+ if ( ($timeout2 - $timeout) < 2 ) {
389
+ // Submitted less then 1 second after loading. Considered spam.
390
  $entry->set_isspam(true);
391
  $marked_by_timeout = true;
392
  if (get_option( 'gwolle_gb-refuse-spam', 'false') == 'true') {
frontend/gb-form.php CHANGED
@@ -26,7 +26,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
26
  $output = '';
27
  $button_class = (string) apply_filters( 'gwolle_gb_button_class', '' );
28
 
29
- // Set data up for prefilling an already submitted form that had errors.
30
  $name = '';
31
  $origin = '';
32
  $email = '';
@@ -46,14 +46,17 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
46
  }
47
  $email = $userdata->user_email;
48
  $website = $userdata->user_url;
49
-
50
- $name = apply_filters( 'gwolle_gb_author_name_prefill', $name);
51
- $email = apply_filters( 'gwolle_gb_author_email_prefill', $email);
52
- $website = apply_filters( 'gwolle_gb_author_website_prefill', $website);
53
  }
54
  }
55
 
56
- // Only show old data when there are errors.
 
 
 
 
 
 
 
57
  if ( $gwolle_gb_errors ) {
58
  if ( is_array($gwolle_gb_formdata) && ! empty($gwolle_gb_formdata) ) {
59
  if (isset($gwolle_gb_formdata['author_name'])) {
@@ -85,9 +88,9 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
85
  if ( $gwolle_gb_errors ) {
86
  $messageclass = 'error';
87
  }
88
- $output .= '<div id="gwolle_gb_messages_top_container">';
89
  if ( isset($gwolle_gb_messages) && $gwolle_gb_messages != '') {
90
- $output .= '<div id="gwolle_gb_messages" class="' . $messageclass . '">';
91
  $output .= $gwolle_gb_messages;
92
  $output .= '</div>';
93
  }
@@ -97,7 +100,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
97
  // Option to allow only logged-in users to post. Don't show the form if not logged-in. We still see the messages above.
98
  if ( !is_user_logged_in() && get_option('gwolle_gb-require_login', 'false') == 'true' ) {
99
  $output .= '
100
- <div id="gwolle_gb_new_entry">
101
  <h3>' . esc_html__('Log in to post an entry', 'gwolle-gb') . '</h3>';
102
 
103
  $args = array(
@@ -118,15 +121,15 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
118
  * Button 'write a new entry.'
119
  * Only show when shortcode [gwolle_gb] is used and there are no errors.
120
  */
121
- $formclass = '';
122
  if ( ( $shortcode_atts['button'] == 'true' ) && ( ! $gwolle_gb_errors ) ) {
123
  $button = '
124
- <div id="gwolle_gb_write_button">
125
- <input type="button" class="button btn btn-default ' . $button_class . '" value="&raquo; ' . /* translators: Button text */ esc_attr__('Write a new entry.', 'gwolle-gb') . '" />
126
  </div>';
127
  $output .= apply_filters( 'gwolle_gb_button', $button);
128
 
129
- $formclass .= 'gwolle_gb_hide';
130
  }
131
 
132
 
@@ -136,7 +139,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
136
  $form_setting = gwolle_gb_get_setting( 'form' );
137
  $autofocus = ' autofocus="autofocus"';
138
  if ( get_option( 'gwolle_gb-labels_float', 'true' ) === 'true' ) {
139
- $formclass .= ' gwolle_gb_float gwolle-gb-float';
140
  }
141
  if ( get_option( 'gwolle_gb-form_ajax', 'true' ) === 'true' ) {
142
  $formclass .= ' gwolle_gb_form_ajax gwolle-gb-form-ajax';
@@ -153,13 +156,13 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
153
  ';
154
  }
155
  $output .= '
156
- <form id="gwolle_gb_new_entry" action="#" method="POST" class="' . $formclass . '">
157
  <h3>' . $header . '</h3>
158
  ' . $hidebutton . '
159
- <input type="hidden" name="gwolle_gb_function" id="gwolle_gb_function" value="add_entry" />';
160
 
161
  // The book_id from the shortcode, to be used by the posthandling function again.
162
- $output .= '<input type="hidden" name="gwolle_gb_book_id" id="gwolle_gb_book_id" value="' . $shortcode_atts['book_id'] . '" />';
163
 
164
  // Use this filter to just add something
165
  $output .= apply_filters( 'gwolle_gb_write_add_before', '' );
@@ -173,11 +176,11 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
173
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
174
  if ( isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true' ) { $output .= ' *';}
175
  $output .= '</label></div>
176
- <div class="input"><input class="wp-exclude-emoji ';
177
  if (in_array($field_name, $gwolle_gb_error_fields)) {
178
  $output .= ' error';
179
  }
180
- $output .= '" value="' . $name . '" type="text" name="' . $field_name . '" id="' . $field_name . '" placeholder="' . $label . '"';
181
  if ( in_array($field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
182
  $output .= $autofocus;
183
  $autofocus = false; // disable it for the next error.
@@ -200,11 +203,11 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
200
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
201
  if ( isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true' ) { $output .= ' *';}
202
  $output .= '</label></div>
203
- <div class="input"><input class="wp-exclude-emoji ';
204
  if (in_array($field_name, $gwolle_gb_error_fields)) {
205
  $output .= ' error';
206
  }
207
- $output .= '" value="' . $origin . '" type="text" name="' . $field_name . '" id="' . $field_name . '" placeholder="' . $label . '"';
208
  if ( in_array($field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
209
  $output .= $autofocus;
210
  $autofocus = false; // disable it for the next error.
@@ -226,11 +229,11 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
226
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
227
  if ( isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true' ) { $output .= ' *';}
228
  $output .= '</label></div>
229
- <div class="input"><input class="';
230
  if (in_array($field_name, $gwolle_gb_error_fields)) {
231
  $output .= ' error';
232
  }
233
- $output .= '" value="' . $email . '" ' . ($html5 ? 'type="email"' : 'type="text"') . ' name="' . $field_name . '" id="' . $field_name . '" placeholder="' . $label . '" ';
234
  if ( in_array($field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
235
  $output .= $autofocus;
236
  $autofocus = false; // disable it for the next error.
@@ -244,7 +247,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
244
  } else {
245
  if ( isset($email) && strlen($email) > 0 ) {
246
  // For logged in users, just save the email anyway.
247
- $output .= '<input class="" value="' . $email . '" type="hidden" name="gwolle_gb_author_email" id="gwolle_gb_author_email" />';
248
  }
249
  }
250
  $output .= apply_filters( 'gwolle_gb_write_add_after_email', '' );
@@ -257,11 +260,11 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
257
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
258
  if ( isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true' ) { $output .= ' *';}
259
  $output .= '</label></div>
260
- <div class="input"><input class="';
261
  if (in_array($field_name, $gwolle_gb_error_fields)) {
262
  $output .= ' error';
263
  }
264
- $output .= '" value="' . $website . '" ' . ($html5 ? 'type="url"' : 'type="text"') . ' name="' . $field_name . '" id="' . $field_name . '" placeholder="' . $label . '" ';
265
  if ( in_array($field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
266
  $output .= $autofocus;
267
  $autofocus = false; // disable it for the next error.
@@ -288,8 +291,8 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
288
  <label for="' . $field_name2 . '" class="text-primary">' . esc_html__('Do not touch this', 'gwolle-gb') . ':</label>
289
  </div>
290
  <div class="input">
291
- <input value="' . $honeypot_value . '" type="text" name="' . $field_name . '" id="' . $field_name . '" placeholder="" />
292
- <input value="" type="text" name="' . $field_name2 . '" id="' . $field_name2 . '" placeholder="" />
293
  </div>
294
  </div>
295
  <div class="clearBoth"></div>';
@@ -307,8 +310,8 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
307
  <label for="' . $field_name2 . '" class="text-primary">' . esc_html__('Do not touch this', 'gwolle-gb') . ':</label>
308
  </div>
309
  <div class="input">
310
- <input value="' . $random . '" type="text" name="' . $field_name . '" id="' . $field_name . '" placeholder="" />
311
- <input value="' . $random . '" type="text" name="' . $field_name2 . '" id="' . $field_name2 . '" placeholder="" />
312
  </div>
313
  </div>
314
  <div class="clearBoth"></div>';
@@ -317,12 +320,13 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
317
  /* Content */
318
  if ( isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true' ) {
319
  $field_name = gwolle_gb_get_field_name( 'content' );
320
- $label = apply_filters( 'gwolle_gb_content_label', esc_html__('Guestbook entry', 'gwolle-gb') );
 
321
  $output .= '<div class="' . $field_name . '">
322
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
323
  if ( isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) { $output .= ' *';}
324
  $output .= '</label></div>
325
- <div class="input"><textarea name="' . $field_name . '" id="' . $field_name . '" class="wp-exclude-emoji ';
326
  if (in_array($field_name, $gwolle_gb_error_fields)) {
327
  $output .= ' error';
328
  }
@@ -341,7 +345,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
341
  gwolle_gb_enqueue_markitup();
342
 
343
  // Emoji symbols
344
- $output .= '<div class="gwolle_gb_emoji gwolle_gb_hide">';
345
  $output .= gwolle_gb_get_emoji();
346
  $output .= '</div>';
347
  }
@@ -368,11 +372,11 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
368
  <label for="' . $field_name . '" class="text-info">' . $label . ': *<br />
369
  ' . esc_html__('Question:', 'gwolle-gb') . ' ' . $antispam_question . '</label>
370
  </div>
371
- <div class="input"><input class="';
372
  if (in_array( $field_name, $gwolle_gb_error_fields)) {
373
- $output .= ' error';
374
  }
375
- $output .= '" value="' . $antispam . '" type="text" name="' . $field_name . '" id="' . $field_name . '" placeholder="' . esc_attr__('Answer', 'gwolle-gb') . '" ';
376
  if ( in_array( $field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
377
  $output .= $autofocus;
378
  $autofocus = false; // disable it for the next error.
@@ -388,6 +392,10 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
388
 
389
  /* Privacy checkbox for GDPR compliance. */
390
  if ( isset($form_setting['form_privacy_enabled']) && $form_setting['form_privacy_enabled'] === 'true' ) {
 
 
 
 
391
  $a_open = '';
392
  $a_close = '';
393
  if ( function_exists( 'get_privacy_policy_url' ) ) {
@@ -402,7 +410,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
402
  $output .= '
403
  <div class="gwolle_gb_privacy">
404
  <div class="label"><label for="gwolle_gb_privacy" class="text-info">' . $label . ': *</label></div>
405
- <div class="input"><input type="checkbox" name="gwolle_gb_privacy" id="gwolle_gb_privacy" required /></div>
406
  </div>
407
  <div class="clearBoth">&nbsp;</div>';
408
  }
@@ -411,21 +419,21 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
411
  if (get_option( 'gwolle_gb-nonce', 'true') == 'true') {
412
  $field_name = gwolle_gb_get_field_name( 'nonce' );
413
  $nonce = wp_create_nonce( 'gwolle_gb_add_entry' );
414
- $output .= '<input type="hidden" id="' . $field_name . '" name="' . $field_name . '" value="' . $nonce . '" />';
415
  }
416
 
417
  /* Use this filter to just add something */
418
  $output .= apply_filters( 'gwolle_gb_write_add_form', '' );
419
 
420
  $output .= '
421
- <div id="gwolle_gb_messages_bottom_container"></div>
422
 
423
  <noscript><div class="no-js">' . esc_html__( 'Warning: This form can only be used if JavaScript is enabled in your browser.', 'gwolle-gb' ) . '</div></noscript>
424
 
425
  <div class="gwolle_gb_submit">
426
- <div class="label gwolle_gb_invisible text-muted">&nbsp;</div>
427
  <div class="input">
428
- <input type="submit" name="gwolle_gb_submit" id="gwolle_gb_submit" class="button btn btn-primary ' . $button_class . '" value="' . esc_attr__('Submit', 'gwolle-gb') . '" />
429
  <span class="gwolle_gb_submit_ajax_icon"></span>
430
  ';
431
 
26
  $output = '';
27
  $button_class = (string) apply_filters( 'gwolle_gb_button_class', '' );
28
 
29
+ // Set data up for prefilling a form in case of errors or prefill data.
30
  $name = '';
31
  $origin = '';
32
  $email = '';
46
  }
47
  $email = $userdata->user_email;
48
  $website = $userdata->user_url;
 
 
 
 
49
  }
50
  }
51
 
52
+ // Prefill filters where you can add your own inital content for the form elements.
53
+ $name = apply_filters( 'gwolle_gb_author_name_prefill', $name);
54
+ $origin = apply_filters( 'gwolle_gb_author_origin_prefill', $origin);
55
+ $email = apply_filters( 'gwolle_gb_author_email_prefill', $email);
56
+ $website = apply_filters( 'gwolle_gb_author_website_prefill', $website);
57
+ $content = apply_filters( 'gwolle_gb_author_content_prefill', $content);
58
+
59
+ // Only show old data when there are errors and overwrite the prefill data.
60
  if ( $gwolle_gb_errors ) {
61
  if ( is_array($gwolle_gb_formdata) && ! empty($gwolle_gb_formdata) ) {
62
  if (isset($gwolle_gb_formdata['author_name'])) {
88
  if ( $gwolle_gb_errors ) {
89
  $messageclass = 'error';
90
  }
91
+ $output .= '<div class="gwolle_gb_messages_top_container">';
92
  if ( isset($gwolle_gb_messages) && $gwolle_gb_messages != '') {
93
+ $output .= '<div class="gwolle_gb_messages ' . $messageclass . '">';
94
  $output .= $gwolle_gb_messages;
95
  $output .= '</div>';
96
  }
100
  // Option to allow only logged-in users to post. Don't show the form if not logged-in. We still see the messages above.
101
  if ( !is_user_logged_in() && get_option('gwolle_gb-require_login', 'false') == 'true' ) {
102
  $output .= '
103
+ <div class="gwolle-gb-write">
104
  <h3>' . esc_html__('Log in to post an entry', 'gwolle-gb') . '</h3>';
105
 
106
  $args = array(
121
  * Button 'write a new entry.'
122
  * Only show when shortcode [gwolle_gb] is used and there are no errors.
123
  */
124
+ $formclass = 'gwolle-gb-write';
125
  if ( ( $shortcode_atts['button'] == 'true' ) && ( ! $gwolle_gb_errors ) ) {
126
  $button = '
127
+ <div class="gwolle-gb-write-button">
128
+ <input type="button" name="gwolle-gb-write-button" class="button btn btn-default ' . $button_class . '" value="&raquo; ' . /* translators: Button text */ esc_attr__('Write a new entry.', 'gwolle-gb') . '" />
129
  </div>';
130
  $output .= apply_filters( 'gwolle_gb_button', $button);
131
 
132
+ $formclass .= ' gwolle-gb-hide';
133
  }
134
 
135
 
139
  $form_setting = gwolle_gb_get_setting( 'form' );
140
  $autofocus = ' autofocus="autofocus"';
141
  if ( get_option( 'gwolle_gb-labels_float', 'true' ) === 'true' ) {
142
+ $formclass .= ' gwolle-gb-float';
143
  }
144
  if ( get_option( 'gwolle_gb-form_ajax', 'true' ) === 'true' ) {
145
  $formclass .= ' gwolle_gb_form_ajax gwolle-gb-form-ajax';
156
  ';
157
  }
158
  $output .= '
159
+ <form action="#" method="POST" class="' . $formclass . '">
160
  <h3>' . $header . '</h3>
161
  ' . $hidebutton . '
162
+ <input type="hidden" name="gwolle_gb_function" class="gwolle_gb_function" value="add_entry" />';
163
 
164
  // The book_id from the shortcode, to be used by the posthandling function again.
165
+ $output .= '<input type="hidden" name="gwolle_gb_book_id" class="gwolle_gb_book_id" value="' . $shortcode_atts['book_id'] . '" />';
166
 
167
  // Use this filter to just add something
168
  $output .= apply_filters( 'gwolle_gb_write_add_before', '' );
176
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
177
  if ( isset($form_setting['form_name_mandatory']) && $form_setting['form_name_mandatory'] === 'true' ) { $output .= ' *';}
178
  $output .= '</label></div>
179
+ <div class="input"><input class="wp-exclude-emoji ' . $field_name;
180
  if (in_array($field_name, $gwolle_gb_error_fields)) {
181
  $output .= ' error';
182
  }
183
+ $output .= '" value="' . $name . '" type="text" name="' . $field_name . '" placeholder="' . $label . '"';
184
  if ( in_array($field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
185
  $output .= $autofocus;
186
  $autofocus = false; // disable it for the next error.
203
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
204
  if ( isset($form_setting['form_city_mandatory']) && $form_setting['form_city_mandatory'] === 'true' ) { $output .= ' *';}
205
  $output .= '</label></div>
206
+ <div class="input"><input class="wp-exclude-emoji ' . $field_name;
207
  if (in_array($field_name, $gwolle_gb_error_fields)) {
208
  $output .= ' error';
209
  }
210
+ $output .= '" value="' . $origin . '" type="text" name="' . $field_name . '" placeholder="' . $label . '"';
211
  if ( in_array($field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
212
  $output .= $autofocus;
213
  $autofocus = false; // disable it for the next error.
229
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
230
  if ( isset($form_setting['form_email_mandatory']) && $form_setting['form_email_mandatory'] === 'true' ) { $output .= ' *';}
231
  $output .= '</label></div>
232
+ <div class="input"><input class="' . $field_name;
233
  if (in_array($field_name, $gwolle_gb_error_fields)) {
234
  $output .= ' error';
235
  }
236
+ $output .= '" value="' . $email . '" ' . ($html5 ? 'type="email"' : 'type="text"') . ' name="' . $field_name . '" placeholder="' . $label . '" ';
237
  if ( in_array($field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
238
  $output .= $autofocus;
239
  $autofocus = false; // disable it for the next error.
247
  } else {
248
  if ( isset($email) && strlen($email) > 0 ) {
249
  // For logged in users, just save the email anyway.
250
+ $output .= '<input value="' . $email . '" type="hidden" name="gwolle_gb_author_email" class="gwolle_gb_author_email" />';
251
  }
252
  }
253
  $output .= apply_filters( 'gwolle_gb_write_add_after_email', '' );
260
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
261
  if ( isset($form_setting['form_homepage_mandatory']) && $form_setting['form_homepage_mandatory'] === 'true' ) { $output .= ' *';}
262
  $output .= '</label></div>
263
+ <div class="input"><input class="' . $field_name;
264
  if (in_array($field_name, $gwolle_gb_error_fields)) {
265
  $output .= ' error';
266
  }
267
+ $output .= '" value="' . $website . '" ' . ($html5 ? 'type="url"' : 'type="text"') . ' name="' . $field_name . '" placeholder="' . $label . '" ';
268
  if ( in_array($field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
269
  $output .= $autofocus;
270
  $autofocus = false; // disable it for the next error.
291
  <label for="' . $field_name2 . '" class="text-primary">' . esc_html__('Do not touch this', 'gwolle-gb') . ':</label>
292
  </div>
293
  <div class="input">
294
+ <input value="' . $honeypot_value . '" type="text" name="' . $field_name . '" class="' . $field_name . '" placeholder="" />
295
+ <input value="" type="text" name="' . $field_name2 . '" class="' . $field_name2 . '" placeholder="" />
296
  </div>
297
  </div>
298
  <div class="clearBoth"></div>';
310
  <label for="' . $field_name2 . '" class="text-primary">' . esc_html__('Do not touch this', 'gwolle-gb') . ':</label>
311
  </div>
312
  <div class="input">
313
+ <input value="' . $random . '" type="text" name="' . $field_name . '" class="' . $field_name . '" placeholder="" />
314
+ <input value="' . $random . '" type="text" name="' . $field_name2 . '" class="' . $field_name2 . '" placeholder="" />
315
  </div>
316
  </div>
317
  <div class="clearBoth"></div>';
320
  /* Content */
321
  if ( isset($form_setting['form_message_enabled']) && $form_setting['form_message_enabled'] === 'true' ) {
322
  $field_name = gwolle_gb_get_field_name( 'content' );
323
+ $label = apply_filters( 'gwolle_gb_content_label', esc_html__('Guestbook entry', 'gwolle-gb') ); // backwards compatible.
324
+ $label = apply_filters( 'gwolle_gb_author_content_label', $label ); // new consistent name.
325
  $output .= '<div class="' . $field_name . '">
326
  <div class="label"><label for="' . $field_name . '" class="text-info">' . $label . ':';
327
  if ( isset($form_setting['form_message_mandatory']) && $form_setting['form_message_mandatory'] === 'true' ) { $output .= ' *';}
328
  $output .= '</label></div>
329
+ <div class="input"><textarea name="' . $field_name . '" class="' . $field_name . ' wp-exclude-emoji';
330
  if (in_array($field_name, $gwolle_gb_error_fields)) {
331
  $output .= ' error';
332
  }
345
  gwolle_gb_enqueue_markitup();
346
 
347
  // Emoji symbols
348
+ $output .= '<div class="gwolle_gb_emoji gwolle-gb-hide">';
349
  $output .= gwolle_gb_get_emoji();
350
  $output .= '</div>';
351
  }
372
  <label for="' . $field_name . '" class="text-info">' . $label . ': *<br />
373
  ' . esc_html__('Question:', 'gwolle-gb') . ' ' . $antispam_question . '</label>
374
  </div>
375
+ <div class="input"><input class="' . $field_name;
376
  if (in_array( $field_name, $gwolle_gb_error_fields)) {
377
+ $output .= ' error ';
378
  }
379
+ $output .= '" value="' . $antispam . '" type="text" name="' . $field_name . '" placeholder="' . esc_attr__('Answer', 'gwolle-gb') . '" ';
380
  if ( in_array( $field_name, $gwolle_gb_error_fields) && isset($autofocus) ) {
381
  $output .= $autofocus;
382
  $autofocus = false; // disable it for the next error.
392
 
393
  /* Privacy checkbox for GDPR compliance. */
394
  if ( isset($form_setting['form_privacy_enabled']) && $form_setting['form_privacy_enabled'] === 'true' ) {
395
+ $checked = '';
396
+ if ( isset($gwolle_gb_formdata['gwolle_gb_privacy']) && $gwolle_gb_formdata['gwolle_gb_privacy'] == 'on' ) {
397
+ $checked = ' checked="checked"';
398
+ }
399
  $a_open = '';
400
  $a_close = '';
401
  if ( function_exists( 'get_privacy_policy_url' ) ) {
410
  $output .= '
411
  <div class="gwolle_gb_privacy">
412
  <div class="label"><label for="gwolle_gb_privacy" class="text-info">' . $label . ': *</label></div>
413
+ <div class="input"><input type="checkbox" name="gwolle_gb_privacy" class="gwolle_gb_privacy" required' . $checked . ' /></div>
414
  </div>
415
  <div class="clearBoth">&nbsp;</div>';
416
  }
419
  if (get_option( 'gwolle_gb-nonce', 'true') == 'true') {
420
  $field_name = gwolle_gb_get_field_name( 'nonce' );
421
  $nonce = wp_create_nonce( 'gwolle_gb_add_entry' );
422
+ $output .= '<input type="hidden" class="' . $field_name . '" name="' . $field_name . '" value="' . $nonce . '" />';
423
  }
424
 
425
  /* Use this filter to just add something */
426
  $output .= apply_filters( 'gwolle_gb_write_add_form', '' );
427
 
428
  $output .= '
429
+ <div class="gwolle_gb_messages_bottom_container"></div>
430
 
431
  <noscript><div class="no-js">' . esc_html__( 'Warning: This form can only be used if JavaScript is enabled in your browser.', 'gwolle-gb' ) . '</div></noscript>
432
 
433
  <div class="gwolle_gb_submit">
434
+ <div class="label gwolle-gb-invisible text-muted">&nbsp;</div>
435
  <div class="input">
436
+ <input type="submit" name="gwolle_gb_submit" class="gwolle_gb_submit button btn btn-primary ' . $button_class . '" value="' . esc_attr__('Submit', 'gwolle-gb') . '" />
437
  <span class="gwolle_gb_submit_ajax_icon"></span>
438
  ';
439
 
frontend/gb-read.php CHANGED
@@ -43,8 +43,8 @@ function gwolle_gb_frontend_read( $shortcode_atts, $shortcode ) {
43
  $output .= esc_html__( 'Sorry, but this entry does not seem to exist.', 'gwolle-gb' );
44
  } else {
45
 
46
- $entries_list_class = apply_filters( 'gwolle_gb_entries_list_class', '' );
47
- $output .= '<div id="gwolle_gb_entries" class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
48
 
49
  $first = true;
50
  $counter = 0;
@@ -164,7 +164,7 @@ function gwolle_gb_frontend_read( $shortcode_atts, $shortcode ) {
164
 
165
  /* Page navigation on top */
166
  $navigation = (int) get_option( 'gwolle_gb-navigation', 0 );
167
- $entries_list_class = '';
168
  if ( $navigation == 0 ) {
169
  $pagination = gwolle_gb_pagination_frontend( $pageNum, $pages_total );
170
  $output .= $pagination;
@@ -176,13 +176,13 @@ function gwolle_gb_frontend_read( $shortcode_atts, $shortcode ) {
176
  /* Entries from the template */
177
  if ( ! is_array( $entries ) || empty( $entries ) ) {
178
  $no_entries = apply_filters( 'gwolle_gb_read_no_entries', esc_html__('(no entries yet)', 'gwolle-gb') );
179
- $output .= '<div id="gwolle_gb_entries" class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
180
  $output .= $no_entries;
181
  $output .= '</div>';
182
  } else {
183
  $first = true;
184
 
185
- $output .= '<div id="gwolle_gb_entries" class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
186
 
187
  $args = array(
188
  'checked' => 'checked',
43
  $output .= esc_html__( 'Sorry, but this entry does not seem to exist.', 'gwolle-gb' );
44
  } else {
45
 
46
+ $entries_list_class = apply_filters( 'gwolle_gb_entries_list_class', 'gwolle-gb-read ' );
47
+ $output .= '<div class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
48
 
49
  $first = true;
50
  $counter = 0;
164
 
165
  /* Page navigation on top */
166
  $navigation = (int) get_option( 'gwolle_gb-navigation', 0 );
167
+ $entries_list_class = 'gwolle-gb-read ';
168
  if ( $navigation == 0 ) {
169
  $pagination = gwolle_gb_pagination_frontend( $pageNum, $pages_total );
170
  $output .= $pagination;
176
  /* Entries from the template */
177
  if ( ! is_array( $entries ) || empty( $entries ) ) {
178
  $no_entries = apply_filters( 'gwolle_gb_read_no_entries', esc_html__('(no entries yet)', 'gwolle-gb') );
179
+ $output .= '<div class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
180
  $output .= $no_entries;
181
  $output .= '</div>';
182
  } else {
183
  $first = true;
184
 
185
+ $output .= '<div class="' . $entries_list_class . '" data-book_id="' . $shortcode_atts['book_id'] . '">';
186
 
187
  $args = array(
188
  'checked' => 'checked',
frontend/gb-shortcodes.php CHANGED
@@ -54,7 +54,7 @@ function get_gwolle_gb( $atts ) {
54
 
55
 
56
  // Define $output
57
- $output = '<div id="gwolle_gb">';
58
 
59
  // Add the form
60
  $output .= gwolle_gb_frontend_write( $shortcode_atts, $shortcode );
@@ -96,7 +96,7 @@ function get_gwolle_gb_write( $atts ) {
96
 
97
 
98
  // Define $output
99
- $output = '<div id="gwolle_gb">';
100
 
101
  // Add the form
102
  $output .= gwolle_gb_frontend_write( $shortcode_atts, $shortcode );
@@ -133,7 +133,7 @@ function get_gwolle_gb_read( $atts ) {
133
 
134
 
135
  // Define $output
136
- $output = '<div id="gwolle_gb">';
137
 
138
  // Add the list of entries to show
139
  $output .= gwolle_gb_frontend_read( $shortcode_atts, $shortcode );
54
 
55
 
56
  // Define $output
57
+ $output = '<div class="gwolle-gb">';
58
 
59
  // Add the form
60
  $output .= gwolle_gb_frontend_write( $shortcode_atts, $shortcode );
96
 
97
 
98
  // Define $output
99
+ $output = '<div class="gwolle-gb">';
100
 
101
  // Add the form
102
  $output .= gwolle_gb_frontend_write( $shortcode_atts, $shortcode );
133
 
134
 
135
  // Define $output
136
+ $output = '<div class="gwolle-gb">';
137
 
138
  // Add the list of entries to show
139
  $output .= gwolle_gb_frontend_read( $shortcode_atts, $shortcode );
frontend/gwolle_gb-entry.php CHANGED
@@ -135,11 +135,11 @@ if ( ! function_exists('gwolle_gb_entry_template') ) {
135
  }
136
  $excerpt_length = (int) get_option( 'gwolle_gb-excerpt_length', 0 );
137
  if ( $excerpt_length > 0 ) {
138
- $readmore = '... <a href="#" class="gwolle_gb_readmore gwolle-gb-readmore" title="' . esc_attr__('Expand this entry and read more', 'gwolle-gb') . '">' . esc_html__('Read more', 'gwolle-gb') . '</a>';
139
  $entry_excerpt = wp_trim_words( $entry_content, $excerpt_length, $readmore );
140
  $entry_content = '
141
  <div class="gb-entry-excerpt">' . $entry_excerpt . '</div>
142
- <div class="gb-entry-full_content gwolle_gb_hide">' . $entry_content . '</div>';
143
  }
144
  if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
145
  // should be done after wp_trim_words to keep all the smileys intact.
@@ -212,7 +212,7 @@ if ( ! function_exists('gwolle_gb_entry_template') ) {
212
  $admin_reply_excerpt = wp_trim_words( $admin_reply_content, $excerpt_length, $readmore );
213
  $admin_reply .= '
214
  <div class="gb-admin_reply-excerpt">' . $admin_reply_excerpt . '</div>
215
- <div class="gb-admin_reply-full-content gwolle_gb_hide">
216
  ' . $admin_reply_content . '
217
  </div>';
218
  } else {
@@ -228,12 +228,16 @@ if ( ! function_exists('gwolle_gb_entry_template') ) {
228
  }
229
  }
230
 
231
- /* Metabox for entry. */
 
 
 
 
232
  $gb_metabox = apply_filters( 'gwolle_gb_entry_metabox_lines', '', $entry );
233
  if ( $gb_metabox ) {
234
  $entry_output .= '
235
  <div class="gb-metabox-handle" tabindex="0">' . esc_html__('...', 'gwolle-gb' ) . '<span class="screen-reader-text"> ' . esc_html__('Toggle this metabox.', 'gwolle-gb') . '</span></div>
236
- <div class="gb-metabox gwolle_gb_invisible gwolle-gb-invisible">' .
237
  $gb_metabox . '
238
  </div>';
239
  }
135
  }
136
  $excerpt_length = (int) get_option( 'gwolle_gb-excerpt_length', 0 );
137
  if ( $excerpt_length > 0 ) {
138
+ $readmore = '... <a href="#" class="gwolle-gb-readmore" title="' . esc_attr__('Expand this entry and read more', 'gwolle-gb') . '">' . esc_html__('Read more', 'gwolle-gb') . '</a>';
139
  $entry_excerpt = wp_trim_words( $entry_content, $excerpt_length, $readmore );
140
  $entry_content = '
141
  <div class="gb-entry-excerpt">' . $entry_excerpt . '</div>
142
+ <div class="gb-entry-full-content gwolle-gb-hide">' . $entry_content . '</div>';
143
  }
144
  if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
145
  // should be done after wp_trim_words to keep all the smileys intact.
212
  $admin_reply_excerpt = wp_trim_words( $admin_reply_content, $excerpt_length, $readmore );
213
  $admin_reply .= '
214
  <div class="gb-admin_reply-excerpt">' . $admin_reply_excerpt . '</div>
215
+ <div class="gb-admin_reply-full-content gwolle-gb-hide">
216
  ' . $admin_reply_content . '
217
  </div>';
218
  } else {
228
  }
229
  }
230
 
231
+ /* Metabox for entry with more metabox-lines with information or actions.
232
+ * For the handle we use a div with a tabindex=0 instead of a button.
233
+ * Button elements are not easy to style on the frontend for every theme out there.
234
+ * With Javascript we toggle the metabox open or closed.
235
+ */
236
  $gb_metabox = apply_filters( 'gwolle_gb_entry_metabox_lines', '', $entry );
237
  if ( $gb_metabox ) {
238
  $entry_output .= '
239
  <div class="gb-metabox-handle" tabindex="0">' . esc_html__('...', 'gwolle-gb' ) . '<span class="screen-reader-text"> ' . esc_html__('Toggle this metabox.', 'gwolle-gb') . '</span></div>
240
+ <div class="gb-metabox gwolle-gb-invisible">' .
241
  $gb_metabox . '
242
  </div>';
243
  }
frontend/js/gwolle-gb-frontend.js CHANGED
@@ -7,17 +7,19 @@
7
  * Event for clicking the button, and getting the form visible.
8
  */
9
  jQuery(document).ready(function($) {
10
- jQuery( "#gwolle_gb_write_button input" ).click(function() {
11
- jQuery("#gwolle_gb_write_button").slideUp(1000);
12
- jQuery("#gwolle_gb_new_entry").slideDown(1000);
 
13
  return false;
14
  });
15
  });
16
  // And close it again.
17
  jQuery(document).ready(function($) {
18
  jQuery( "button.gb-notice-dismiss" ).click(function() {
19
- jQuery("#gwolle_gb_write_button").slideDown(1000);
20
- jQuery("#gwolle_gb_new_entry").slideUp(1000);
 
21
  return false;
22
  });
23
  });
@@ -34,17 +36,17 @@ jQuery(document).ready(function($) {
34
  function gwolle_gb_readmore() {
35
  jQuery(".gb-entry-content .gwolle-gb-readmore").off('click');
36
  jQuery(".gb-entry-content .gwolle-gb-readmore").on('click', function() {
37
- var content_div = jQuery(this).parent().parent();
38
- jQuery( content_div ).find('.gb-entry-excerpt').css( 'display', 'none' );
39
- jQuery( content_div ).find('.gb-entry-full_content').slideDown(500);
40
  return false;
41
  });
42
 
43
  jQuery(".gb-entry-admin_reply .gwolle-gb-readmore").off('click');
44
  jQuery(".gb-entry-admin_reply .gwolle-gb-readmore").on('click', function() {
45
- var content_div = jQuery(this).parent().parent();
46
- jQuery( content_div ).find('.gb-admin_reply-excerpt').css( 'display', 'none' );
47
- jQuery( content_div ).find('.gb-admin_reply-full-content').slideDown(500);
48
  return false;
49
  });
50
  }
@@ -61,14 +63,14 @@ jQuery(document).ready(function($) {
61
  function gwolle_gb_metabox_handle() {
62
  jQuery('div.gb-metabox-handle').off('click');
63
  jQuery('div.gb-metabox-handle').on('click', function() {
64
- var metabox_parent = jQuery(this).parent();
65
- jQuery( metabox_parent ).find('div.gb-metabox').toggleClass( 'gwolle_gb_invisible' );
66
  return false;
67
  });
68
  jQuery("div.gb-metabox-handle").keypress(function(e) {
69
- if (e.keyCode == 13) {
70
- var metabox_parent = jQuery(this).parent();
71
- jQuery( metabox_parent ).find('div.gb-metabox').toggleClass( 'gwolle_gb_invisible' );
72
  return false;
73
  }
74
  });
@@ -76,28 +78,29 @@ function gwolle_gb_metabox_handle() {
76
  }
77
  jQuery(document).ready(function($) {
78
  jQuery('body').on('click', function( el ) {
79
- jQuery('div.gb-metabox').addClass( 'gwolle_gb_invisible' );
80
  });
81
  });
82
 
83
 
84
  /*
85
  * Event for Infinite Scroll. Get more pages when you are at the bottom.
 
86
  */
87
  var gwolle_gb_scroll_on = true; // The end has not been reached yet. We still get entries back.
88
  var gwolle_gb_scroll_busy = false; // Handle async well. Only one request at a time.
89
  var gwolle_gb_scroll_callback = jQuery.Callbacks(); // Callback function to be fired after AJAX request.
90
 
91
  jQuery(document).ready(function($) {
92
- if ( jQuery( "#gwolle_gb_entries" ).hasClass( 'gwolle-gb-infinite' ) ) {
93
  var gwolle_gb_scroll_count = 2; // We already have page 1 listed.
94
 
95
  var gwolle_gb_load_message = '<div class="gb-entry gwolle_gb_load_message">' + gwolle_gb_frontend_script.load_message + '</div>' ;
96
- jQuery( "#gwolle_gb_entries" ).append( gwolle_gb_load_message );
97
 
98
  jQuery(window).scroll(function() {
99
  // have 10px diff for sensitivity.
100
- if ( ( jQuery(window).scrollTop() > jQuery(document).height() - jQuery(window).height() -10 ) && gwolle_gb_scroll_on == true && gwolle_gb_scroll_busy == false) {
101
  gwolle_gb_scroll_busy = true;
102
  gwolle_gb_load_page(gwolle_gb_scroll_count);
103
  gwolle_gb_scroll_count++;
@@ -115,17 +118,17 @@ jQuery(document).ready(function($) {
115
  action: 'gwolle_gb_infinite_scroll',
116
  pageNum: page,
117
  permalink: window.location.href,
118
- book_id: jQuery( "#gwolle_gb_entries" ).attr( "data-book_id" )
119
  };
120
 
121
  jQuery.post( gwolle_gb_frontend_script.ajax_url, data, function(response) {
122
 
123
  jQuery('.gwolle_gb_load_message').toggle();
124
  if ( response == 'false' ) {
125
- jQuery( "#gwolle_gb_entries" ).append( gwolle_gb_end_message );
126
  gwolle_gb_scroll_on = false;
127
  } else {
128
- jQuery( "#gwolle_gb_entries" ).append( response );
129
  }
130
 
131
  /*
@@ -160,13 +163,15 @@ jQuery(document).ready(function($) {
160
  * Mangle data for the honeypot.
161
  */
162
  jQuery(document).ready(function($) {
163
- var honeypot = gwolle_gb_frontend_script.honeypot;
164
- var honeypot2 = gwolle_gb_frontend_script.honeypot2;
165
- var val = jQuery( '#' + honeypot ).val();
166
- if ( val > 0 ) {
167
- jQuery( '#' + honeypot2 ).val( val );
168
- jQuery( '#' + honeypot ).val( '' );
169
- }
 
 
170
  });
171
 
172
 
@@ -174,21 +179,20 @@ jQuery(document).ready(function($) {
174
  * Mangle data for the form timeout.
175
  */
176
  jQuery(document).ready(function($) {
177
- setInterval('gwolle_gb_timout_clock()', 1000 );
178
- });
179
- function gwolle_gb_timout_clock() {
180
- var timeout = gwolle_gb_frontend_script.timeout;
181
- var timeout2 = gwolle_gb_frontend_script.timeout2;
182
 
183
- var timer = new Number( jQuery( '#' + timeout ).val() );
184
- var timer2 = new Number( jQuery( '#' + timeout2 ).val() );
185
 
186
- var timer = timer - 1
187
- var timer2 = timer2 + 1
188
 
189
- jQuery( '#' + timeout ).val( timer );
190
- jQuery( '#' + timeout2 ).val( timer2 );
191
- }
 
192
 
193
 
194
  /*
@@ -202,9 +206,9 @@ var gwolle_gb_ajax_data = {
202
  };
203
 
204
  jQuery(document).ready(function($) {
205
- jQuery( '.gwolle_gb_form_ajax #gwolle_gb_submit' ).click( function( submit_button ) {
206
-
207
- jQuery( '#gwolle_gb .gwolle_gb_submit_ajax_icon' ).css( 'display', 'inline' );
208
 
209
  // Use an object, arrays are only indexed by integers.
210
  var gwolle_gb_ajax_data = {
@@ -212,26 +216,33 @@ jQuery(document).ready(function($) {
212
  action: 'gwolle_gb_form_ajax'
213
  };
214
 
215
- jQuery('.gwolle_gb_form_ajax input').each(function( index, value ) {
216
  var val = jQuery( this ).prop('value'); // For some reason, some hosts do not see any value here, and data does not get sent.
217
- var id = jQuery( this ).attr('id');
218
- if ( id == 'gwolle_gb_privacy' ) {
219
- var checked = jQuery('.gwolle_gb_form_ajax input#gwolle_gb_privacy').prop('checked');
 
 
 
 
 
 
220
  if ( checked == true ) {
221
- gwolle_gb_ajax_data[id] = 'on';
222
  }
223
  } else {
224
- gwolle_gb_ajax_data[id] = val;
225
- /*if ( typeof console != 'undefined' ) {
226
- console.log( id + ': ' + val );
227
- console.table( val );
228
- } */
229
  }
230
  });
231
- jQuery('.gwolle_gb_form_ajax textarea').each(function( index, value ) {
232
  var val = jQuery( this ).val();
233
- var id = jQuery( this ).attr('id');
234
- gwolle_gb_ajax_data[id] = val;
 
 
 
 
 
235
  });
236
 
237
  jQuery.post( gwolle_gb_frontend_script.ajax_url, gwolle_gb_ajax_data, function( response ) {
@@ -249,29 +260,30 @@ jQuery(document).ready(function($) {
249
  var gwolle_gb_errors = data['gwolle_gb_errors'];
250
  var gwolle_gb_error_fields = data['gwolle_gb_error_fields'];
251
 
 
 
 
 
 
252
  // we have all the data we expect.
253
  if ( typeof data['saved'] == 'number' ) {
254
 
255
  // Show returned messages.
256
- document.getElementById( 'gwolle_gb_messages_bottom_container' ).innerHTML = '';
257
- document.getElementById( 'gwolle_gb_messages_top_container' ).innerHTML = '<div id="gwolle_gb_messages">' + data['gwolle_gb_messages'] + '</div>';
258
- jQuery( '#gwolle_gb_messages' ).removeClass( 'error' );
259
-
260
- // Remove error class from input fields.
261
- jQuery( '#gwolle_gb_new_entry input' ).removeClass( 'error' );
262
- jQuery( '#gwolle_gb_new_entry textarea' ).removeClass( 'error' );
263
 
264
  // Remove form from view.
265
- jQuery( '#gwolle_gb_new_entry' ).css( 'display', 'none' );
266
- jQuery( '#gwolle_gb_write_button' ).css( 'display', 'block' );
267
 
268
  // Prepend entry to the entry list if desired.
269
  if ( typeof data['entry'] == 'string' ) {
270
- jQuery( '#gwolle_gb_entries' ).prepend( data['entry'] );
271
  }
272
 
273
  // Scroll to messages div. Add 80px to offset for themes with fixed headers.
274
- var offset = jQuery( '#gwolle_gb_messages_top_container' ).offset().top - 80;
275
  jQuery('html, body').animate({
276
  scrollTop: offset
277
  }, 200, function() {
@@ -279,9 +291,9 @@ jQuery(document).ready(function($) {
279
  });
280
 
281
  // Reset content textarea.
282
- jQuery( '.gwolle_gb_form_ajax textarea' ).val('');
283
 
284
- jQuery( '#gwolle_gb .gwolle_gb_submit_ajax_icon' ).css( 'display', 'none' );
285
 
286
  /*
287
  * Add callback for after AJAX request. Used for metabox-handle for new entries.
@@ -306,17 +318,21 @@ jQuery(document).ready(function($) {
306
  // Not saved...
307
 
308
  // Show returned messages.
309
- document.getElementById( 'gwolle_gb_messages_top_container' ).innerHTML = '';
310
- document.getElementById( 'gwolle_gb_messages_bottom_container' ).innerHTML = '<div id="gwolle_gb_messages" class="error">' + data['gwolle_gb_messages'] + '</div>';
311
 
312
  // Add error class to failed input fields.
313
- jQuery( '.gwolle_gb_form_ajax input' ).removeClass( 'error' );
314
- jQuery( '.gwolle_gb_form_ajax textarea' ).removeClass( 'error' );
315
  jQuery.each( gwolle_gb_error_fields, function( index, value ) {
316
- jQuery( '#' + value ).addClass( 'error' );
 
 
 
 
 
 
317
  });
318
 
319
- jQuery( '#gwolle_gb .gwolle_gb_submit_ajax_icon' ).css( 'display', 'none' );
320
 
321
  }
322
  } else if (typeof console != "undefined") {
7
  * Event for clicking the button, and getting the form visible.
8
  */
9
  jQuery(document).ready(function($) {
10
+ jQuery( "div.gwolle-gb-write-button input" ).click(function() {
11
+ var main_div = jQuery( this ).closest( 'div.gwolle-gb' );
12
+ jQuery("div.gwolle-gb-write-button", main_div).slideUp(1000);
13
+ jQuery("form.gwolle-gb-write", main_div).slideDown(1000);
14
  return false;
15
  });
16
  });
17
  // And close it again.
18
  jQuery(document).ready(function($) {
19
  jQuery( "button.gb-notice-dismiss" ).click(function() {
20
+ var main_div = jQuery( this ).closest( 'div.gwolle-gb' );
21
+ jQuery("div.gwolle-gb-write-button", main_div).slideDown(1000);
22
+ jQuery("form.gwolle-gb-write", main_div).slideUp(1000);
23
  return false;
24
  });
25
  });
36
  function gwolle_gb_readmore() {
37
  jQuery(".gb-entry-content .gwolle-gb-readmore").off('click');
38
  jQuery(".gb-entry-content .gwolle-gb-readmore").on('click', function() {
39
+ var content_div = jQuery(this).closest( '.gb-entry-content' );
40
+ jQuery('.gb-entry-excerpt', content_div).css( 'display', 'none' );
41
+ jQuery('.gb-entry-full-content', content_div).slideDown(500);
42
  return false;
43
  });
44
 
45
  jQuery(".gb-entry-admin_reply .gwolle-gb-readmore").off('click');
46
  jQuery(".gb-entry-admin_reply .gwolle-gb-readmore").on('click', function() {
47
+ var content_div = jQuery(this).closest( '.gb-entry-admin_reply' );
48
+ jQuery('.gb-admin_reply-excerpt', content_div).css( 'display', 'none' );
49
+ jQuery('.gb-admin_reply-full-content', content_div).slideDown(500);
50
  return false;
51
  });
52
  }
63
  function gwolle_gb_metabox_handle() {
64
  jQuery('div.gb-metabox-handle').off('click');
65
  jQuery('div.gb-metabox-handle').on('click', function() {
66
+ var entry_div = jQuery(this).closest('div.gb-entry');
67
+ jQuery('div.gb-metabox', entry_div).toggleClass( 'gwolle-gb-invisible' );
68
  return false;
69
  });
70
  jQuery("div.gb-metabox-handle").keypress(function(e) {
71
+ if (e.keyCode == 13) { // Enter key.
72
+ var entry_div = jQuery(this).closest('div.gb-entry');
73
+ jQuery('div.gb-metabox', entry_div).toggleClass( 'gwolle-gb-invisible' );
74
  return false;
75
  }
76
  });
78
  }
79
  jQuery(document).ready(function($) {
80
  jQuery('body').on('click', function( el ) {
81
+ jQuery('div.gb-metabox').addClass( 'gwolle-gb-invisible' );
82
  });
83
  });
84
 
85
 
86
  /*
87
  * Event for Infinite Scroll. Get more pages when you are at the bottom.
88
+ * This function does not support multiple lists on one page.
89
  */
90
  var gwolle_gb_scroll_on = true; // The end has not been reached yet. We still get entries back.
91
  var gwolle_gb_scroll_busy = false; // Handle async well. Only one request at a time.
92
  var gwolle_gb_scroll_callback = jQuery.Callbacks(); // Callback function to be fired after AJAX request.
93
 
94
  jQuery(document).ready(function($) {
95
+ if ( jQuery( ".gwolle-gb-read" ).hasClass( 'gwolle-gb-infinite' ) ) {
96
  var gwolle_gb_scroll_count = 2; // We already have page 1 listed.
97
 
98
  var gwolle_gb_load_message = '<div class="gb-entry gwolle_gb_load_message">' + gwolle_gb_frontend_script.load_message + '</div>' ;
99
+ jQuery( ".gwolle-gb-read" ).append( gwolle_gb_load_message );
100
 
101
  jQuery(window).scroll(function() {
102
  // have 10px diff for sensitivity.
103
+ if ( ( jQuery(window).scrollTop() > jQuery(document).height() - jQuery(window).height() - 10 ) && gwolle_gb_scroll_on == true && gwolle_gb_scroll_busy == false) {
104
  gwolle_gb_scroll_busy = true;
105
  gwolle_gb_load_page(gwolle_gb_scroll_count);
106
  gwolle_gb_scroll_count++;
118
  action: 'gwolle_gb_infinite_scroll',
119
  pageNum: page,
120
  permalink: window.location.href,
121
+ book_id: jQuery( ".gwolle-gb-read" ).attr( "data-book_id" )
122
  };
123
 
124
  jQuery.post( gwolle_gb_frontend_script.ajax_url, data, function(response) {
125
 
126
  jQuery('.gwolle_gb_load_message').toggle();
127
  if ( response == 'false' ) {
128
+ jQuery( ".gwolle-gb-read" ).append( gwolle_gb_end_message );
129
  gwolle_gb_scroll_on = false;
130
  } else {
131
+ jQuery( ".gwolle-gb-read" ).append( response );
132
  }
133
 
134
  /*
163
  * Mangle data for the honeypot.
164
  */
165
  jQuery(document).ready(function($) {
166
+ jQuery( 'form.gwolle-gb-write' ).each( function( index, form ) {
167
+ var honeypot = gwolle_gb_frontend_script.honeypot;
168
+ var honeypot2 = gwolle_gb_frontend_script.honeypot2;
169
+ var val = jQuery( 'input.' + honeypot, form ).val();
170
+ if ( val > 0 ) {
171
+ jQuery( 'input.' + honeypot2, form ).val( val );
172
+ jQuery( 'input.' + honeypot, form ).val( '' );
173
+ }
174
+ });
175
  });
176
 
177
 
179
  * Mangle data for the form timeout.
180
  */
181
  jQuery(document).ready(function($) {
182
+ jQuery( 'form.gwolle-gb-write' ).each( function( index, form ) {
183
+ var timeout = gwolle_gb_frontend_script.timeout;
184
+ var timeout2 = gwolle_gb_frontend_script.timeout2;
 
 
185
 
186
+ var timer = new Number( jQuery( 'input.' + timeout, form ).val() );
187
+ var timer2 = new Number( jQuery( 'input.' + timeout2, form ).val() );
188
 
189
+ var timer = timer - 1;
190
+ var timer2 = timer2 + 1;
191
 
192
+ jQuery( 'input.' + timeout, form ).val( timer );
193
+ jQuery( 'input.' + timeout2, form ).val( timer2 );
194
+ });
195
+ });
196
 
197
 
198
  /*
206
  };
207
 
208
  jQuery(document).ready(function($) {
209
+ jQuery( '.gwolle_gb_form_ajax input.gwolle_gb_submit' ).click( function( submit_button ) {
210
+ var main_div = jQuery( this ).closest( 'div.gwolle-gb' );
211
+ jQuery( '.gwolle_gb_submit_ajax_icon', main_div ).css( 'display', 'inline' );
212
 
213
  // Use an object, arrays are only indexed by integers.
214
  var gwolle_gb_ajax_data = {
216
  action: 'gwolle_gb_form_ajax'
217
  };
218
 
219
+ jQuery('form.gwolle-gb-write input', main_div).each(function( index, value ) {
220
  var val = jQuery( this ).prop('value'); // For some reason, some hosts do not see any value here, and data does not get sent.
221
+ var name = jQuery( this ).attr('name');
222
+ var type = jQuery( this ).attr('type');
223
+ if ( type == 'checkbox' ) {
224
+ var checked = jQuery( this, main_div ).prop('checked');
225
+ if ( checked == true ) {
226
+ gwolle_gb_ajax_data[name] = 'on'; // Mimick standard post value.
227
+ }
228
+ } else if ( type == 'radio' ) {
229
+ var checked = jQuery( this, main_div ).prop('checked');
230
  if ( checked == true ) {
231
+ gwolle_gb_ajax_data[name] = val;
232
  }
233
  } else {
234
+ gwolle_gb_ajax_data[name] = val;
 
 
 
 
235
  }
236
  });
237
+ jQuery('form.gwolle-gb-write textarea', main_div).each(function( index, value ) {
238
  var val = jQuery( this ).val();
239
+ var name = jQuery( this ).attr('name');
240
+ gwolle_gb_ajax_data[name] = val;
241
+ });
242
+ jQuery( 'form.gwolle-gb-write select', main_div ).each(function( index, value ) {
243
+ var val = jQuery( value ).val();
244
+ var name = jQuery( value ).attr('name');
245
+ gwolle_gb_ajax_data[name] = val;
246
  });
247
 
248
  jQuery.post( gwolle_gb_frontend_script.ajax_url, gwolle_gb_ajax_data, function( response ) {
260
  var gwolle_gb_errors = data['gwolle_gb_errors'];
261
  var gwolle_gb_error_fields = data['gwolle_gb_error_fields'];
262
 
263
+ jQuery( '.gwolle_gb_form_ajax input' ).removeClass( 'error' );
264
+ jQuery( '.gwolle_gb_form_ajax select' ).removeClass( 'error' );
265
+ jQuery( '.gwolle_gb_form_ajax textarea' ).removeClass( 'error' );
266
+ jQuery( '.gwolle_gb_form_ajax div.input').removeClass( 'error' );
267
+
268
  // we have all the data we expect.
269
  if ( typeof data['saved'] == 'number' ) {
270
 
271
  // Show returned messages.
272
+ jQuery( '.gwolle_gb_messages_bottom_container', main_div ).html('');
273
+ jQuery( '.gwolle_gb_messages_top_container', main_div ).html('<div class="gwolle_gb_messages">' + data['gwolle_gb_messages'] + '</div>');
274
+ jQuery( '.gwolle_gb_messages', main_div ).removeClass( 'error' );
 
 
 
 
275
 
276
  // Remove form from view.
277
+ jQuery( '.gwolle-gb-write', main_div ).css( 'display', 'none' );
278
+ jQuery( '.gwolle-gb-write-button', main_div ).css( 'display', 'block' );
279
 
280
  // Prepend entry to the entry list if desired.
281
  if ( typeof data['entry'] == 'string' ) {
282
+ jQuery( '.gwolle-gb-read', main_div ).prepend( data['entry'] );
283
  }
284
 
285
  // Scroll to messages div. Add 80px to offset for themes with fixed headers.
286
+ var offset = jQuery( '.gwolle_gb_messages_top_container' ).offset().top - 80;
287
  jQuery('html, body').animate({
288
  scrollTop: offset
289
  }, 200, function() {
291
  });
292
 
293
  // Reset content textarea.
294
+ jQuery( 'textarea', main_div ).val('');
295
 
296
+ jQuery( '.gwolle_gb_submit_ajax_icon', main_div ).css( 'display', 'none' );
297
 
298
  /*
299
  * Add callback for after AJAX request. Used for metabox-handle for new entries.
318
  // Not saved...
319
 
320
  // Show returned messages.
321
+ jQuery( '.gwolle_gb_messages_top_container', main_div ).html('');
322
+ jQuery( '.gwolle_gb_messages_bottom_container', main_div ).html('<div class="gwolle_gb_messages" class="error">' + data['gwolle_gb_messages'] + '</div>');
323
 
324
  // Add error class to failed input fields.
 
 
325
  jQuery.each( gwolle_gb_error_fields, function( index, value ) {
326
+ jQuery( 'select.' + value, main_div ).addClass( 'error' );
327
+ jQuery( 'textarea.' + value, main_div ).addClass( 'error' );
328
+ jQuery( 'input.' + value, main_div ).addClass( 'error' );
329
+ var type = jQuery( 'input.' + value, main_div ).attr('type');
330
+ if ( typeof type != 'undefined' && type == 'radio' ) {
331
+ jQuery( 'input.' + value, main_div ).closest('div.input').addClass( 'error' );
332
+ }
333
  });
334
 
335
+ jQuery( '.gwolle_gb_submit_ajax_icon', main_div ).css( 'display', 'none' );
336
 
337
  }
338
  } else if (typeof console != "undefined") {
frontend/js/sss/sss.js CHANGED
@@ -7,11 +7,11 @@ $.fn.sss = function(options) {
7
  // Options
8
 
9
  var settings = $.extend({
10
- slideShow : true,
11
- startOn : 0,
12
- speed : 3500,
13
- transition : 400,
14
- arrows : true
15
  }, options);
16
 
17
  return this.each(function() {
@@ -36,48 +36,49 @@ $.fn.sss = function(options) {
36
  // Reset Slideshow
37
 
38
  reset_timer = settings.slideShow ? function() {
39
- clearTimeout(timer);
40
- timer = setTimeout(next_slide, settings.speed);
41
  } : $.noop;
42
 
43
  // Animate Slider
44
 
45
  function get_height(target) {
46
- return ((slides.eq(target).height() / slider.width()) * 100) + '%';
47
  }
48
 
49
  function animate_slide(target) {
50
- if (!animating) {
51
- animating = true;
52
- var target_slide = slides.eq(target);
 
53
 
54
- target_slide.fadeIn(transition);
55
- slides.not(target_slide).fadeOut(transition);
56
 
57
- slider.animate({paddingBottom: get_height(target)}, transition, function() {
58
- animating = false;
59
- });
60
-
61
- reset_timer();
62
 
63
- }};
 
 
64
 
65
  // Next Slide
66
 
67
  function next_slide() {
68
- target = target === slide_count - 1 ? 0 : target + 1;
69
- animate_slide(target);
70
  }
71
 
72
  // Prev Slide
73
 
74
  function prev_slide() {
75
- target = target === 0 ? slide_count - 1 : target - 1;
76
- animate_slide(target);
77
  }
78
 
79
  if (settings.arrows) {
80
- slider.append('<div class="sssprev"/>', '<div class="sssnext"/>');
81
  }
82
 
83
  next = slider.find('.sssnext'),
@@ -85,20 +86,34 @@ $.fn.sss = function(options) {
85
 
86
  $(window).on('load', function() {
87
 
88
- slider.css({paddingBottom: get_height(target)}).click(function(e) {
89
- clicked = $(e.target);
90
- if (clicked.is(next)) { next_slide() }
91
- else if (clicked.is(prev)) { prev_slide() }
 
 
 
92
  });
93
 
94
  animate_slide(target);
95
 
96
  $(document).keydown(function(e) {
97
- key = e.keyCode;
98
- if (key === 39) { next_slide() }
99
- else if (key === 37) { prev_slide() }
 
 
 
100
  });
101
 
 
 
 
 
 
 
 
 
102
  });
103
  // End
104
 
7
  // Options
8
 
9
  var settings = $.extend({
10
+ slideShow : true,
11
+ startOn : 0,
12
+ speed : 3500,
13
+ transition : 400,
14
+ arrows : true
15
  }, options);
16
 
17
  return this.each(function() {
36
  // Reset Slideshow
37
 
38
  reset_timer = settings.slideShow ? function() {
39
+ clearTimeout(timer);
40
+ timer = setTimeout(next_slide, settings.speed);
41
  } : $.noop;
42
 
43
  // Animate Slider
44
 
45
  function get_height(target) {
46
+ return ((slides.eq(target).height() / slider.width()) * 100) + '%';
47
  }
48
 
49
  function animate_slide(target) {
50
+ if ( $( wrapper ).hasClass( 'sss-hover' ) ) { reset_timer(); return; }
51
+ if (!animating) {
52
+ animating = true;
53
+ var target_slide = slides.eq(target);
54
 
55
+ target_slide.fadeIn(transition);
56
+ slides.not(target_slide).fadeOut(transition);
57
 
58
+ slider.animate({paddingBottom: get_height(target)}, transition, function() {
59
+ animating = false;
60
+ });
 
 
61
 
62
+ reset_timer();
63
+ }
64
+ };
65
 
66
  // Next Slide
67
 
68
  function next_slide() {
69
+ target = target === slide_count - 1 ? 0 : target + 1;
70
+ animate_slide(target);
71
  }
72
 
73
  // Prev Slide
74
 
75
  function prev_slide() {
76
+ target = target === 0 ? slide_count - 1 : target - 1;
77
+ animate_slide(target);
78
  }
79
 
80
  if (settings.arrows) {
81
+ slider.append('<div class="sssprev"/>', '<div class="sssnext"/>');
82
  }
83
 
84
  next = slider.find('.sssnext'),
86
 
87
  $(window).on('load', function() {
88
 
89
+ slider.css({paddingBottom: get_height(target)}).click(function(e) {
90
+ clicked = $(e.target);
91
+ if (clicked.is(next)) {
92
+ next_slide()
93
+ } else if (clicked.is(prev)) {
94
+ prev_slide()
95
+ }
96
  });
97
 
98
  animate_slide(target);
99
 
100
  $(document).keydown(function(e) {
101
+ key = e.keyCode;
102
+ if (key === 39) {
103
+ next_slide()
104
+ } else if (key === 37) {
105
+ prev_slide()
106
+ }
107
  });
108
 
109
+ $( wrapper ).hover(
110
+ function() {
111
+ $( wrapper ).addClass( 'sss-hover' );
112
+ }, function() {
113
+ $( wrapper ).removeClass( 'sss-hover' );
114
+ }
115
+ );
116
+
117
  });
118
  // End
119
 
frontend/markitup/jquery.markitup.js CHANGED
@@ -681,15 +681,11 @@ var marktitup_mySettings = {
681
  markupSet: [
682
  {name: gwolle_gb_localize.bold, key:'B', openWith:'(!([b]|!|<b>)!)', closeWith:'(!([/b]|!|</b>)!)' },
683
  {name: gwolle_gb_localize.italic, key:'I', openWith:'(!([i]|!|<i>)!)', closeWith:'(!([/i]|!|</i>)!)' },
684
- {separator:'---------------' },
685
  {name: gwolle_gb_localize.bullet, openWith:'[li]', closeWith:'[/li]', multiline:true, openBlockWith:'[ul]\n', closeBlockWith:'\n[/ul]'},
686
  {name: gwolle_gb_localize.numeric, openWith:'[li]', closeWith:'[/li]', multiline:true, openBlockWith:'[ol]\n', closeBlockWith:'\n[/ol]'},
687
- {separator:'---------------' },
688
- {name: gwolle_gb_localize.picture, key:'P', replaceWith:'[img][![' + gwolle_gb_localize.source + ':!:http://]!][/img]' },
689
- {name: gwolle_gb_localize.link, key:'L', openWith:'[url href=[![' + gwolle_gb_localize.link + ':!:http://]!]]', closeWith:'[/url]', placeHolder: gwolle_gb_localize.linktext },
690
- {separator:'---------------' },
691
  {name: gwolle_gb_localize.clean, className:'clean', replaceWith:function(markitup) { return markitup.selection.replace(/\[(.*?)\]/g, "") } },
692
- {separator:'---------------' },
693
  {name: gwolle_gb_localize.emoji, className:'emoji' }
694
  ]
695
  }
@@ -698,8 +694,9 @@ var marktitup_mySettings = {
698
  jQuery(document).ready(function() {
699
 
700
  /* Initialize BBcode editor */
701
- jQuery('#gwolle_gb_content').markItUp(marktitup_mySettings);
702
- jQuery('#gwolle_gb_admin_reply').markItUp(marktitup_mySettings);
 
703
 
704
 
705
  /* Slide the Emoji rows (frontend, main editor) */
681
  markupSet: [
682
  {name: gwolle_gb_localize.bold, key:'B', openWith:'(!([b]|!|<b>)!)', closeWith:'(!([/b]|!|</b>)!)' },
683
  {name: gwolle_gb_localize.italic, key:'I', openWith:'(!([i]|!|<i>)!)', closeWith:'(!([/i]|!|</i>)!)' },
 
684
  {name: gwolle_gb_localize.bullet, openWith:'[li]', closeWith:'[/li]', multiline:true, openBlockWith:'[ul]\n', closeBlockWith:'\n[/ul]'},
685
  {name: gwolle_gb_localize.numeric, openWith:'[li]', closeWith:'[/li]', multiline:true, openBlockWith:'[ol]\n', closeBlockWith:'\n[/ol]'},
686
+ {name: gwolle_gb_localize.picture, key:'P', replaceWith:'[img][![' + gwolle_gb_localize.source + ':!:https://]!][/img]' },
687
+ {name: gwolle_gb_localize.link, key:'L', openWith:'[url href=[![' + gwolle_gb_localize.link + ':!:https://]!]]', closeWith:'[/url]', placeHolder: gwolle_gb_localize.linktext },
 
 
688
  {name: gwolle_gb_localize.clean, className:'clean', replaceWith:function(markitup) { return markitup.selection.replace(/\[(.*?)\]/g, "") } },
 
689
  {name: gwolle_gb_localize.emoji, className:'emoji' }
690
  ]
691
  }
694
  jQuery(document).ready(function() {
695
 
696
  /* Initialize BBcode editor */
697
+ jQuery('.gwolle-gb-write textarea.gwolle_gb_content').markItUp(marktitup_mySettings);
698
+ jQuery('#gwolle_gb_editor textarea#gwolle_gb_content').markItUp(marktitup_mySettings);
699
+ jQuery('#gwolle_gb_editor textarea#gwolle_gb_admin_reply').markItUp(marktitup_mySettings);
700
 
701
 
702
  /* Slide the Emoji rows (frontend, main editor) */
frontend/markitup/style.css CHANGED
@@ -2,7 +2,8 @@
2
  // markItUp! Universal MarkUp Engine, JQuery plugin
3
  // By Jay Salvat - http://markitup.jaysalvat.com/
4
  // ------------------------------------------------------------------*/
5
- #gwolle_gb .markItUp *,
 
6
  .markItUp * {
7
  margin:0px;
8
  padding:0px;
@@ -17,7 +18,7 @@
17
  clear:both;
18
  overflow:auto;
19
  }
20
- .markItUpPreviewFrame {
21
  overflow:auto;
22
  background-color:#FFFFFF;
23
  border:1px solid #3C769D;
@@ -39,8 +40,8 @@
39
  }
40
  /***************************************************************************************/
41
  /* first row of buttons */
42
- #gwolle_gb .markItUpHeader ul li,
43
- .gwolle_gb .markItUpHeader ul li {
44
  /* Reset for theme's CSS */
45
  margin: 0;
46
  padding: 0;
@@ -98,21 +99,21 @@
98
  .markItUpHeader ul ul ul li {
99
  float:none;
100
  }
101
- #gwolle_gb .markItUpHeader ul a,
102
- .gwolle_gb .markItUpHeader ul a {
103
  display: block;
104
  box-sizing: content-box;
105
  width: 20px;
106
  height: 20px;
107
- text-indent:-10000px;
108
- background-repeat:no-repeat;
109
- padding: 3px 3px 1px 3px;
110
  margin: 0px;
111
  }
112
- #gwolle_gb .markItUpHeader ul a::before,
113
- #gwolle_gb .markItUpHeader ul a::after,
114
- .gwolle_gb .markItUpHeader ul a::before,
115
- .gwolle_gb .markItUpHeader ul a::after {
116
  box-sizing: content-box;
117
  }
118
  .markItUpHeader ul ul a {
@@ -123,8 +124,8 @@
123
  padding:5px 5px 5px 25px;
124
  background-position:2px 50%;
125
  }
126
- #gwolle_gb .markItUpHeader ul ul a:hover,
127
- .gwolle_gb .markItUpHeader ul ul a:hover {
128
  color:#FFF;
129
  background-color:#3C769D;
130
  }
2
  // markItUp! Universal MarkUp Engine, JQuery plugin
3
  // By Jay Salvat - http://markitup.jaysalvat.com/
4
  // ------------------------------------------------------------------*/
5
+ .gwolle-gb .markItUp *,
6
+ #gwolle_gb_editor .markItUp *,
7
  .markItUp * {
8
  margin:0px;
9
  padding:0px;
18
  clear:both;
19
  overflow:auto;
20
  }
21
+ .markItUpPreviewFrame {
22
  overflow:auto;
23
  background-color:#FFFFFF;
24
  border:1px solid #3C769D;
40
  }
41
  /***************************************************************************************/
42
  /* first row of buttons */
43
+ .gwolle-gb .markItUpHeader ul li,
44
+ #gwolle_gb_editor .markItUpHeader ul li {
45
  /* Reset for theme's CSS */
46
  margin: 0;
47
  padding: 0;
99
  .markItUpHeader ul ul ul li {
100
  float:none;
101
  }
102
+ .gwolle-gb .markItUpHeader ul a,
103
+ #gwolle_gb_editor .markItUpHeader ul a {
104
  display: block;
105
  box-sizing: content-box;
106
  width: 20px;
107
  height: 20px;
108
+ text-indent: -10000px;
109
+ background-repeat: no-repeat;
110
+ padding: 3px 4px 1px 4px;
111
  margin: 0px;
112
  }
113
+ .gwolle-gb .markItUpHeader ul a::before,
114
+ .gwolle-gb .markItUpHeader ul a::after,
115
+ #gwolle_gb_editor .markItUpHeader ul a::before,
116
+ #gwolle_gb_editor .markItUpHeader ul a::after {
117
  box-sizing: content-box;
118
  }
119
  .markItUpHeader ul ul a {
124
  padding:5px 5px 5px 25px;
125
  background-position:2px 50%;
126
  }
127
+ .gwolle-gb .markItUpHeader ul ul a:hover,
128
+ #gwolle_gb_editor .markItUpHeader ul ul a:hover {
129
  color:#FFF;
130
  background-color:#3C769D;
131
  }
functions/gb-akismet.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Akismet Function
4
- * Akismet API: http://akismet.com/development/api/
5
  * Copied and edited from Contact Form 7
6
  */
7
 
@@ -84,7 +84,7 @@ function gwolle_gb_akismet( $entry, $action ) {
84
  $comment['referrer'] = $_SERVER['HTTP_REFERER'];
85
  }
86
 
87
- // http://blog.akismet.com/2012/06/19/pro-tip-tell-us-your-comment_type/
88
  $comment['comment_type'] = 'comment';
89
 
90
  $permalink = gwolle_gb_get_permalink( get_the_ID() );
1
  <?php
2
  /**
3
  * Akismet Function
4
+ * Akismet API: https://akismet.com/development/api/
5
  * Copied and edited from Contact Form 7
6
  */
7
 
84
  $comment['referrer'] = $_SERVER['HTTP_REFERER'];
85
  }
86
 
87
+ // https://blog.akismet.com/2012/06/19/pro-tip-tell-us-your-comment_type/
88
  $comment['comment_type'] = 'comment';
89
 
90
  $permalink = gwolle_gb_get_permalink( get_the_ID() );
functions/gb-bbcode_emoji.php CHANGED
@@ -41,7 +41,7 @@ function gwolle_gb_bbcode_parse( $str ) {
41
  // First images, then links, so we support images inside links.
42
  $bbcode_img_referrer = apply_filters( 'gwolle_gb_bbcode_img_referrer', 'no-referrer' );
43
  $pattern = "#\[img\]([^\[]*)\[/img\]#i";
44
- $replace = '<img src="\\1" alt="" referrerpolicy="' . $bbcode_img_referrer . '" />';
45
  $str = preg_replace($pattern, $replace, $str);
46
 
47
  // Links with quotes.
41
  // First images, then links, so we support images inside links.
42
  $bbcode_img_referrer = apply_filters( 'gwolle_gb_bbcode_img_referrer', 'no-referrer' );
43
  $pattern = "#\[img\]([^\[]*)\[/img\]#i";
44
+ $replace = '<img src="\\1" alt="" referrerpolicy="' . $bbcode_img_referrer . '" loading="lazy" />';
45
  $str = preg_replace($pattern, $replace, $str);
46
 
47
  // Links with quotes.
functions/gb-class-entry.php CHANGED
@@ -13,25 +13,31 @@ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
13
  * Class gwolle_gb_entry
14
  * Each instance is an entry in the guestbook.
15
  *
16
- * Variable: Database field: Type in db: Description: Value when saving in db:
17
- * $id id int(10) id of the entry/row/instance required, autoincrement
18
- * $author_name author_name text name of the author required
19
- * $author_id author_id int(5) author is also registered user required, default 0
20
- * $author_email author_email text email address of the author required
21
- * $author_origin author_origin text city of the author required
22
- * $author_website author_website text website of the author required
23
- * $author_ip author_ip text ip address of the author required
24
- * $author_host author_host text hostname of that ip address required
25
- * $content content longtext content of the entry required
26
- * $date date varchar(10) date of posting the entry, timestamp deprecated
27
- * $datetime datetime bigint(8) date of posting the entry, timestamp required
28
- * $ischecked ischecked tinyint(1) checked/moderated by an admin, 0 or 1 required
29
- * $checkedby checkedby int(5) admin who checked/moderated this entry required
30
- * $istrash istrash varchar(1) entry is placed in the trashbin, 0 or 1 required, default 0
31
- * $isspam isspam varchar(1) entry is considered as spam, 0 or 1 required, default 0
32
- * $admin_reply admin_reply longtext content of the reply from an admin required
33
- * $admin_reply_uid admin_reply_uid int(5) user_id of the admin that replied required
34
- * $book_id book_id int(8) the book in which the entry is placed required, default 1
 
 
 
 
 
 
35
  *
36
  */
37
 
@@ -56,7 +62,7 @@ class gwolle_gb_entry {
56
  $this->author_ip = (string) "";
57
  $this->author_host = (string) "";
58
  $this->content = (string) "";
59
- $this->datetime = (string) "";
60
  $this->ischecked = (int) 0;
61
  $this->checkedby = (int) 0;
62
  $this->istrash = (int) 0;
@@ -162,7 +168,7 @@ class gwolle_gb_entry {
162
  'author_ip' => $data['author_ip'],
163
  'author_host' => $data['author_host'],
164
  'content' => stripslashes($data['content']),
165
- 'datetime' => $data['datetime'],
166
  'ischecked' => (int) $data['ischecked'],
167
  'checkedby' => (int) $data['checkedby'],
168
  'istrash' => (int) $data['istrash'],
@@ -469,13 +475,13 @@ class gwolle_gb_entry {
469
  public function set_date($date = NULL) {
470
  _deprecated_function( __FUNCTION__, ' 1.4.2', 'set_datetime()' );
471
  }
472
- public function set_datetime($date = NULL) {
473
- $date = intval($date); // timestamp can be cast to int.
474
- if ( ! $date ) {
475
- $date = current_time( 'timestamp' );
476
  }
477
- if ($date) {
478
- $this->datetime = $date;
479
  }
480
  }
481
  public function set_ischecked($ischecked) {
13
  * Class gwolle_gb_entry
14
  * Each instance is an entry in the guestbook.
15
  *
16
+ * Member variables are set to protected, you are supposed to use setter and getter functions.
17
+ *
18
+ * $datetime is a UNIX timestamp in local time.
19
+ * This does not really exist, since a UNIX timestamp is always GMT.
20
+ * For backwards compatibility this is used even though it is wrong.
21
+ *
22
+ * Variable: Database field: Type in DB Type in PHP Description: Value when saving in db:
23
+ * $id id int(10) int id of the entry/row/instance required, autoincrement
24
+ * $author_name author_name text string name of the author required
25
+ * $author_id author_id int(5) int author is also registered user required, default 0
26
+ * $author_email author_email text string email address of the author required
27
+ * $author_origin author_origin text string city of the author required
28
+ * $author_website author_website text string website of the author required
29
+ * $author_ip author_ip text string ip address of the author required
30
+ * $author_host author_host text string hostname of that ip address required
31
+ * $content content longtext string content of the entry required
32
+ * $date date varchar(10) date of posting the entry, timestamp deprecated, use datetime which is an int, not varchar (sorting goes wrong).
33
+ * $datetime datetime bigint(8) int date of posting the entry, timestamp required, local timestamp
34
+ * $ischecked ischecked tinyint(1) int checked/moderated by an admin, 0 or 1 required, default 0
35
+ * $checkedby checkedby int(5) int admin who checked/moderated this entry required, default 0
36
+ * $istrash istrash varchar(1) int entry is placed in the trashbin, 0 or 1 required, default 0
37
+ * $isspam isspam varchar(1) int entry is considered as spam, 0 or 1 required, default 0
38
+ * $admin_reply admin_reply longtext string content of the reply from an admin required, default empty
39
+ * $admin_reply_uid admin_reply_uid int(5) int user_id of the admin that replied required, default 0
40
+ * $book_id book_id int(8) int the book in which the entry is placed required, default 1
41
  *
42
  */
43
 
62
  $this->author_ip = (string) "";
63
  $this->author_host = (string) "";
64
  $this->content = (string) "";
65
+ $this->datetime = (int) current_time( 'timestamp' );
66
  $this->ischecked = (int) 0;
67
  $this->checkedby = (int) 0;
68
  $this->istrash = (int) 0;
168
  'author_ip' => $data['author_ip'],
169
  'author_host' => $data['author_host'],
170
  'content' => stripslashes($data['content']),
171
+ 'datetime' => (int) $data['datetime'],
172
  'ischecked' => (int) $data['ischecked'],
173
  'checkedby' => (int) $data['checkedby'],
174
  'istrash' => (int) $data['istrash'],
475
  public function set_date($date = NULL) {
476
  _deprecated_function( __FUNCTION__, ' 1.4.2', 'set_datetime()' );
477
  }
478
+ public function set_datetime($datetime = 0) {
479
+ $datetime = intval($datetime); // timestamp can be cast to int.
480
+ if ( ! $datetime ) {
481
+ $datetime = current_time( 'timestamp' );
482
  }
483
+ if ($datetime) {
484
+ $this->datetime = $datetime;
485
  }
486
  }
487
  public function set_ischecked($ischecked) {
functions/gb-debug.php CHANGED
@@ -187,11 +187,11 @@ function gwolle_gb_test_add_entry( $emoji = false ) {
187
  'author_id' => 0,
188
  'author_email' => 'test@example.com',
189
  'author_origin' => 'Zwolle',
190
- 'author_website' => 'http://example.com',
191
  'author_ip' => '127.0.0.1',
192
  'author_host' => 'example.com',
193
  'content' => $content,
194
- 'datetime' => current_time( 'timestamp' ),
195
  'ischecked' => 0,
196
  'checkedby' => 0,
197
  'istrash' => 1,
187
  'author_id' => 0,
188
  'author_email' => 'test@example.com',
189
  'author_origin' => 'Zwolle',
190
+ 'author_website' => 'https://example.com',
191
  'author_ip' => '127.0.0.1',
192
  'author_host' => 'example.com',
193
  'content' => $content,
194
+ 'datetime' => time(),
195
  'ischecked' => 0,
196
  'checkedby' => 0,
197
  'istrash' => 1,
functions/gb-settings.php CHANGED
@@ -11,6 +11,7 @@ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
11
  * Register Settings
12
  */
13
  function gwolle_gb_register_settings() {
 
14
  register_setting( 'gwolle_gb_options', 'gwolle_gb-admin_style', 'strval' ); // 'false'
15
  register_setting( 'gwolle_gb_options', 'gwolle_gb-adminMailContent', 'strval' ); // empty by default
16
  register_setting( 'gwolle_gb_options', 'gwolle_gb-akismet-active', 'strval' ); // 'false'
@@ -20,7 +21,7 @@ function gwolle_gb_register_settings() {
20
  register_setting( 'gwolle_gb_options', 'gwolle_gb-entries_per_page', 'intval' ); // 20
21
  register_setting( 'gwolle_gb_options', 'gwolle_gb-entriesPerPage', 'intval' ); // 20
22
  register_setting( 'gwolle_gb_options', 'gwolle_gb-excerpt_length', 'intval' ); // 0
23
- register_setting( 'gwolle_gb_options', 'gwolle_gb-form', 'strval' ); // serialized Array, but initially empty
24
  register_setting( 'gwolle_gb_options', 'gwolle_gb-form_ajax', 'strval' ); // 'true'
25
  register_setting( 'gwolle_gb_options', 'gwolle_gb-header', 'strval' ); // string, but initially empty
26
  register_setting( 'gwolle_gb_options', 'gwolle_gb-honeypot', 'strval' ); // 'true'
@@ -35,10 +36,10 @@ function gwolle_gb_register_settings() {
35
  register_setting( 'gwolle_gb_options', 'gwolle_gb-moderate-entries', 'strval' ); // 'true'
36
  register_setting( 'gwolle_gb_options', 'gwolle_gb-navigation', 'intval' ); // 0 or 1, default is 0
37
  register_setting( 'gwolle_gb_options', 'gwolle_gb-nonce', 'strval' ); // 'true'
38
- register_setting( 'gwolle_gb_options', 'gwolle_gb-notifyByMail', 'strval' ); // array, but initially empty
39
  register_setting( 'gwolle_gb_options', 'gwolle_gb-notice', 'strval' ); // string, but initially empty
40
  register_setting( 'gwolle_gb_options', 'gwolle_gb-paginate_all', 'strval' ); // 'false'
41
- register_setting( 'gwolle_gb_options', 'gwolle_gb-read', 'strval' ); // serialized Array, but initially empty
42
  register_setting( 'gwolle_gb_options', 'gwolle_gb-refuse-spam', 'strval' ); // 'false'
43
  register_setting( 'gwolle_gb_options', 'gwolle_gb-require_login', 'strval' ); // 'false'
44
  register_setting( 'gwolle_gb_options', 'gwolle_gb-sfs', 'strval' ); // 'false'
11
  * Register Settings
12
  */
13
  function gwolle_gb_register_settings() {
14
+ // option_name sanitize default value
15
  register_setting( 'gwolle_gb_options', 'gwolle_gb-admin_style', 'strval' ); // 'false'
16
  register_setting( 'gwolle_gb_options', 'gwolle_gb-adminMailContent', 'strval' ); // empty by default
17
  register_setting( 'gwolle_gb_options', 'gwolle_gb-akismet-active', 'strval' ); // 'false'
21
  register_setting( 'gwolle_gb_options', 'gwolle_gb-entries_per_page', 'intval' ); // 20
22
  register_setting( 'gwolle_gb_options', 'gwolle_gb-entriesPerPage', 'intval' ); // 20
23
  register_setting( 'gwolle_gb_options', 'gwolle_gb-excerpt_length', 'intval' ); // 0
24
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-form', 'array' ); // serialized array, but initially empty
25
  register_setting( 'gwolle_gb_options', 'gwolle_gb-form_ajax', 'strval' ); // 'true'
26
  register_setting( 'gwolle_gb_options', 'gwolle_gb-header', 'strval' ); // string, but initially empty
27
  register_setting( 'gwolle_gb_options', 'gwolle_gb-honeypot', 'strval' ); // 'true'
36
  register_setting( 'gwolle_gb_options', 'gwolle_gb-moderate-entries', 'strval' ); // 'true'
37
  register_setting( 'gwolle_gb_options', 'gwolle_gb-navigation', 'intval' ); // 0 or 1, default is 0
38
  register_setting( 'gwolle_gb_options', 'gwolle_gb-nonce', 'strval' ); // 'true'
39
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-notifyByMail', 'strval' ); // comma separated list of User IDs, initially empty
40
  register_setting( 'gwolle_gb_options', 'gwolle_gb-notice', 'strval' ); // string, but initially empty
41
  register_setting( 'gwolle_gb_options', 'gwolle_gb-paginate_all', 'strval' ); // 'false'
42
+ register_setting( 'gwolle_gb_options', 'gwolle_gb-read', 'array' ); // serialized array, but initially empty
43
  register_setting( 'gwolle_gb_options', 'gwolle_gb-refuse-spam', 'strval' ); // 'false'
44
  register_setting( 'gwolle_gb_options', 'gwolle_gb-require_login', 'strval' ); // 'false'
45
  register_setting( 'gwolle_gb_options', 'gwolle_gb-sfs', 'strval' ); // 'false'
functions/gb-stop-forum-spam.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Stop Forum Spam Function
4
- * http://www.stopforumspam.com
5
  * Copied and edited from seriously-simple-spam-blocker
6
  */
7
 
1
  <?php
2
  /**
3
  * Stop Forum Spam Function
4
+ * https://www.stopforumspam.com
5
  * Copied and edited from seriously-simple-spam-blocker
6
  */
7
 
gwolle-gb-hooks.php CHANGED
@@ -3,7 +3,7 @@
3
  /*
4
  * WordPress Actions and Filters.
5
  * See the Plugin API in the Codex:
6
- * http://codex.wordpress.org/Plugin_API
7
  */
8
 
9
 
3
  /*
4
  * WordPress Actions and Filters.
5
  * See the Plugin API in the Codex:
6
+ * https://codex.wordpress.org/Plugin_API
7
  */
8
 
9
 
gwolle-gb.php CHANGED
@@ -3,9 +3,9 @@
3
  Plugin Name: Gwolle Guestbook
4
  Plugin URI: https://wordpress.org/plugins/gwolle-gb/
5
  Description: Gwolle Guestbook is not just another guestbook for WordPress. The goal is to provide an easy and slim way to integrate a guestbook into your WordPress powered site. Don't use your 'comment' section the wrong way - install Gwolle Guestbook and have a real guestbook.
6
- Version: 3.1.9
7
  Author: Marcel Pol
8
- Author URI: http://zenoweb.nl
9
  License: GPLv2 or later
10
  Text Domain: gwolle-gb
11
  Domain Path: /lang/
@@ -32,7 +32,7 @@ Domain Path: /lang/
32
 
33
 
34
  // Plugin Version
35
- define('GWOLLE_GB_VER', '3.1.9');
36
 
37
 
38
  /*
@@ -59,10 +59,6 @@ define('GWOLLE_GB_VER', '3.1.9');
59
  * - Use foreign keys through a hook with SQL, and add a setter for meta.
60
  * - Or add function to prepopulate metas for export.
61
  * - Add emoji for Zwarte Piet and Sinterklaas when locale=nl_nl.
62
- * - Look into saving a timestamp including offset. Look again at saving from editor.
63
- * - Use button for metabox control.
64
- * - phase out current_time:
65
- * https://make.wordpress.org/core/2019/09/23/date-time-improvements-wp-5-3/
66
  * - Support rewrite API for single entry.
67
  * - Use select2 or similar for subscribe/unsubcribe dropdowns.
68
  */
3
  Plugin Name: Gwolle Guestbook
4
  Plugin URI: https://wordpress.org/plugins/gwolle-gb/
5
  Description: Gwolle Guestbook is not just another guestbook for WordPress. The goal is to provide an easy and slim way to integrate a guestbook into your WordPress powered site. Don't use your 'comment' section the wrong way - install Gwolle Guestbook and have a real guestbook.
6
+ Version: 4.0.0
7
  Author: Marcel Pol
8
+ Author URI: https://timelord.nl
9
  License: GPLv2 or later
10
  Text Domain: gwolle-gb
11
  Domain Path: /lang/
32
 
33
 
34
  // Plugin Version
35
+ define('GWOLLE_GB_VER', '4.0.0');
36
 
37
 
38
  /*
59
  * - Use foreign keys through a hook with SQL, and add a setter for meta.
60
  * - Or add function to prepopulate metas for export.
61
  * - Add emoji for Zwarte Piet and Sinterklaas when locale=nl_nl.
 
 
 
 
62
  * - Support rewrite API for single entry.
63
  * - Use select2 or similar for subscribe/unsubcribe dropdowns.
64
  */
lang/gwolle-gb-da_DK.mo DELETED
Binary file
lang/gwolle-gb-da_DK.po DELETED
@@ -1,1997 +0,0 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
- # This file is distributed under the same license as the PACKAGE package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
- #
6
- msgid ""
7
- msgstr ""
8
- "Project-Id-Version: \n"
9
- "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2015-06-15 13:38+0100\n"
11
- "PO-Revision-Date: 2015-06-15 13:40+0100\n"
12
- "Last-Translator: Bo Nielsen <wp@bfn.dk>\n"
13
- "Language-Team: \n"
14
- "Language: da\n"
15
- "MIME-Version: 1.0\n"
16
- "Content-Type: text/plain; charset=UTF-8\n"
17
- "Content-Transfer-Encoding: 8bit\n"
18
- "X-Generator: Poedit 1.8.1\n"
19
- "X-Poedit-SourceCharset: UTF-8\n"
20
-
21
- #: actions.php:35 actions.php:36 frontend/widget.php:22
22
- #: frontend/widget.php:188
23
- msgid "Guestbook"
24
- msgstr "Gæstebog"
25
-
26
- #: actions.php:46 actions.php:47 admin/tabs/admintab.php:36
27
- #: admin/tabs/readingtab.php:36
28
- msgid "Entries"
29
- msgstr "Indlæg"
30
-
31
- #. /editor.php
32
- #: actions.php:54
33
- msgid "Entry editor"
34
- msgstr "Rediger Indlæg."
35
-
36
- #: actions.php:54 admin/page-gwolle-gb.php:85
37
- msgid "New entry"
38
- msgstr "Nyt indlæg"
39
-
40
- #. /settings.php
41
- #: actions.php:57 actions.php:80 admin/page-settings.php:314
42
- msgid "Settings"
43
- msgstr "Indstillinger"
44
-
45
- #. /import.php
46
- #: actions.php:60
47
- msgid "Import"
48
- msgstr "Importer"
49
-
50
- #. /export.php
51
- #: actions.php:63
52
- msgid "Export"
53
- msgstr "Eksporter"
54
-
55
- #: actions.php:190 actions.php:194 frontend/rss.php:70 frontend/rss.php:73
56
- msgid "Guestbook Feed"
57
- msgstr "Gæstebog Feed"
58
-
59
- #: admin/dashboard-widget.php:116 admin/page-entries.php:696
60
- #: frontend/read.php:236
61
- msgid "Edit entry"
62
- msgstr "Rediger indlæg"
63
-
64
- #: admin/dashboard-widget.php:116 admin/page-entries.php:696
65
- #: frontend/read.php:236
66
- msgid "Edit"
67
- msgstr "Rediger"
68
-
69
- #: admin/dashboard-widget.php:120 admin/page-editor.php:425
70
- #: admin/page-entries.php:699
71
- msgid "Check entry"
72
- msgstr "Tjek indlæg"
73
-
74
- #: admin/dashboard-widget.php:120 admin/page-editor.php:425
75
- #: admin/page-entries.php:699
76
- msgid "Check"
77
- msgstr "Tjek"
78
-
79
- #: admin/dashboard-widget.php:124 admin/page-editor.php:428
80
- #: admin/page-entries.php:702
81
- msgid "Uncheck entry"
82
- msgstr "Fravælg adgang"
83
-
84
- #: admin/dashboard-widget.php:124 admin/page-editor.php:428
85
- #: admin/page-entries.php:702
86
- msgid "Uncheck"
87
- msgstr "Fravælg"
88
-
89
- #: admin/dashboard-widget.php:128 admin/page-editor.php:431
90
- #: admin/page-entries.php:705
91
- msgid "Mark entry as spam."
92
- msgstr "Marker indlæg som spam."
93
-
94
- #: admin/dashboard-widget.php:128 admin/page-editor.php:374
95
- #: admin/page-editor.php:431 admin/page-entries.php:437
96
- #: admin/page-entries.php:705
97
- msgid "Spam"
98
- msgstr "Spam"
99
-
100
- #: admin/dashboard-widget.php:132 admin/page-editor.php:434
101
- #: admin/page-entries.php:708
102
- msgid "Mark entry as not-spam."
103
- msgstr "Marker indlæg som 'ikke spam'"
104
-
105
- #: admin/dashboard-widget.php:132 admin/page-editor.php:434
106
- #: admin/page-entries.php:708
107
- msgid "Not spam"
108
- msgstr "Ikke spam"
109
-
110
- #: admin/dashboard-widget.php:136 admin/page-editor.php:437
111
- #: admin/page-entries.php:711
112
- msgid "Move entry to trash."
113
- msgstr "Flyt indlæg til papirkurven."
114
-
115
- #: admin/dashboard-widget.php:136 admin/page-editor.php:384
116
- #: admin/page-editor.php:437 admin/page-entries.php:441
117
- #: admin/page-entries.php:711
118
- msgid "Trash"
119
- msgstr "Papirkurv"
120
-
121
- #: admin/dashboard-widget.php:140 admin/page-editor.php:440
122
- #: admin/page-entries.php:714
123
- msgid "Recover entry from trash."
124
- msgstr "Genindlæs indlæg fra papirkurven."
125
-
126
- #: admin/dashboard-widget.php:140 admin/page-editor.php:440
127
- #: admin/page-entries.php:714
128
- msgid "Untrash"
129
- msgstr "Fjern fra papirkurven"
130
-
131
- #: admin/dashboard-widget.php:144 admin/page-editor.php:443
132
- #: admin/page-entries.php:717
133
- msgid "Please wait..."
134
- msgstr "Vent venligst..."
135
-
136
- #: admin/dashboard-widget.php:144 admin/page-editor.php:443
137
- #: admin/page-entries.php:717
138
- msgid "Wait..."
139
- msgstr "Vent..."
140
-
141
- #: admin/dashboard-widget.php:155
142
- msgid "Refresh"
143
- msgstr "Opdater"
144
-
145
- #: admin/dashboard-widget.php:156
146
- msgid "View all"
147
- msgstr "Vis alle"
148
-
149
- #: admin/dashboard-widget.php:157
150
- msgid "View new"
151
- msgstr "Vis ny"
152
-
153
- #: admin/dashboard-widget.php:160
154
- msgid "No new and unchecked guestbook entries."
155
- msgstr "Ingen nye og ikke tjekkede gæstebogs indlæg"
156
-
157
- #: admin/dashboard-widget.php:172
158
- msgid "Guestbook (new entries)"
159
- msgstr "Gæstebog (nye indlæg)"
160
-
161
- #: admin/installSplash.php:14
162
- msgid "Installation"
163
- msgstr "Installation"
164
-
165
- #: admin/installSplash.php:20
166
- msgid ""
167
- "Welcome!<br>It seems that either you're using this plugin for the first time "
168
- "or you've deleted all settings.<br>However, to use this plugin we have to "
169
- "setup the database tables. Good for you, we've made this as easy as possible."
170
- "<br>All you've got to do is click on that button below, and that's it."
171
- msgstr ""
172
- "Velkommen!<br> Det ser ud til at du bruger dette plugin for første gang "
173
- "eller at du har slettet alle indstillinger. <br> For at bruge dette plugin "
174
- "skal der bruges en forbindelse til databasetabellen. Heldigvis for dig, er "
175
- "dette gjort nemmest muligt for dig. <br> Alt du skal gøre er at klikke på "
176
- "knappen nedenunder, og så er det gjort."
177
-
178
- #: admin/installSplash.php:26
179
- msgid "Sure, let's do this!"
180
- msgstr "Helt sikkert, lad os gøre det!"
181
-
182
- #: admin/installSplash.php:33
183
- #, php-format
184
- msgid "Allright, we're done. <a href=\"%s\">Click here to continue...</a>"
185
- msgstr "OK, vi er færdige. <a href=\"%s\">Klik her for at fortsætte...</a>"
186
-
187
- #: admin/installSplash.php:35
188
- #, php-format
189
- msgid ""
190
- "It looks like there has been an error. <a href=\"%s\">Click here to "
191
- "continue...</a>"
192
- msgstr ""
193
- "Det ser ud til at der er sket en fejl. <a href=\"%s\">Klik her for at "
194
- "fortsætte...</a>"
195
-
196
- #: admin/page-editor.php:15 admin/page-entries.php:16 admin/page-export.php:17
197
- #: admin/page-gwolle-gb.php:278 admin/page-import.php:26
198
- #: admin/page-settings.php:15 admin/tabs/admintab.php:15
199
- #: admin/tabs/antispamtab.php:15 admin/tabs/emailtab.php:15
200
- #: admin/tabs/formtab.php:15 admin/tabs/readingtab.php:15
201
- #: admin/tabs/uninstalltab.php:18
202
- msgid "Cheatin&#8217; uh?"
203
- msgstr "Snyder&#8217; uh?"
204
-
205
- #: admin/page-editor.php:32
206
- msgid "Edit guestbook entry"
207
- msgstr "Rediger gæstebogens indlæg"
208
-
209
- #: admin/page-editor.php:45
210
- msgid "Entry could not be found."
211
- msgstr "Indlæg kunne ikke findes."
212
-
213
- #: admin/page-editor.php:47
214
- msgid "Guestbook entry (error)"
215
- msgstr "Indlæg i gæstebog (fejl)"
216
-
217
- #: admin/page-editor.php:50
218
- msgid "New guestbook entry"
219
- msgstr "Nyt indlæg i gæstebogen"
220
-
221
- #: admin/page-editor.php:60
222
- msgid "Something strange happened."
223
- msgstr "Der er sket noget mærkeligt."
224
-
225
- #: admin/page-editor.php:88
226
- msgid "Submitted as Spam to the Akismet service."
227
- msgstr "Videresendt som spam til Akismet service."
228
-
229
- #: admin/page-editor.php:97
230
- msgid "Submitted as Ham to the Akismet service."
231
- msgstr "Videresend som 'Ham' til Akismet service"
232
-
233
- #: admin/page-editor.php:148 admin/page-gwolle-gb.php:355
234
- #: admin/page-settings.php:320
235
- msgid "Changes saved."
236
- msgstr "Ændringerne er gemt."
237
-
238
- #: admin/page-editor.php:150 admin/page-editor.php:245
239
- msgid "Error happened during saving."
240
- msgstr "Fejl under gemning."
241
-
242
- #: admin/page-editor.php:154
243
- msgid "Entry was not changed."
244
- msgstr "Indlæg er ikke ændret."
245
-
246
- #: admin/page-editor.php:165
247
- msgid "Entry removed."
248
- msgstr "Indlæg er fjernet."
249
-
250
- #: admin/page-editor.php:210
251
- msgid "Entry has no content, even though that is mandatory."
252
- msgstr "Indlæg har intet indhold, selvom feltet kræver det."
253
-
254
- #: admin/page-editor.php:243
255
- msgid "Entry saved."
256
- msgstr "Indlæget er gemt."
257
-
258
- #: admin/page-editor.php:249
259
- msgid "Entry was not saved."
260
- msgstr "Indlæget er ikke gemt."
261
-
262
- #: admin/page-editor.php:322 admin/page-editor.php:415
263
- #: admin/page-editor.php:459 admin/page-editor.php:514
264
- #: admin/page-editor.php:549 admin/page-editor.php:566
265
- #: admin/page-editor.php:574 admin/page-export.php:40
266
- #: admin/page-import.php:338 admin/page-import.php:405
267
- #: admin/page-import.php:526
268
- msgid "Click to open or close"
269
- msgstr "Klik for at åbne eller lukke."
270
-
271
- #: admin/page-editor.php:322
272
- msgid "Options"
273
- msgstr "Indstillinger"
274
-
275
- #: admin/page-editor.php:343
276
- msgid "This entry is not yet visible."
277
- msgstr "Dette indlæg er ikke synligt endnu."
278
-
279
- #: admin/page-editor.php:347 admin/page-editor.php:352
280
- msgid "This entry is Visible."
281
- msgstr "Dette indlæg er synligt."
282
-
283
- #: admin/page-editor.php:348 admin/page-editor.php:353
284
- msgid "This entry is Not Visible."
285
- msgstr "Dette indlæg er ikke synligt."
286
-
287
- #: admin/page-editor.php:364
288
- msgid "Checked"
289
- msgstr "Tjekket"
290
-
291
- #: admin/page-editor.php:392
292
- msgid "Remove this entry Permanently."
293
- msgstr "Fjern dette indlæg permanent."
294
-
295
- #: admin/page-editor.php:403
296
- msgid "Save"
297
- msgstr "Gem"
298
-
299
- #: admin/page-editor.php:415
300
- msgid "Actions"
301
- msgstr "Handlinger"
302
-
303
- #: admin/page-editor.php:459
304
- msgid "Details"
305
- msgstr "Detaljer"
306
-
307
- #: admin/page-editor.php:463 admin/page-entries.php:567
308
- #: admin/page-entries.php:583
309
- msgid "Author"
310
- msgstr "Forfatter"
311
-
312
- #: admin/page-editor.php:467 admin/page-editor.php:475
313
- #: admin/page-editor.php:496 admin/page-editor.php:504
314
- #: functions/function.log.php:164
315
- msgid "Unknown"
316
- msgstr "Ukendt"
317
-
318
- #: admin/page-editor.php:471
319
- msgid "E-Mail"
320
- msgstr "E-Mail"
321
-
322
- #: admin/page-editor.php:480 admin/page-editor.php:524
323
- msgid "Written"
324
- msgstr "Skrevet"
325
-
326
- #: admin/page-editor.php:485
327
- msgid "Not yet"
328
- msgstr "Ikke endnu"
329
-
330
- #: admin/page-editor.php:489
331
- msgid "Author's IP-address"
332
- msgstr "Forfatter's IP-adresse"
333
-
334
- #: admin/page-editor.php:492
335
- msgid "Whois search for this IP"
336
- msgstr "Whois søgning for denne IP"
337
-
338
- #: admin/page-editor.php:500
339
- msgid "Host"
340
- msgstr "Udbyder"
341
-
342
- #: admin/page-editor.php:514
343
- msgid "Entry log"
344
- msgstr "Indlægs log"
345
-
346
- #: admin/page-editor.php:533
347
- msgid "No log yet."
348
- msgstr "Ingen log endnu"
349
-
350
- #: admin/page-editor.php:549 frontend/write.php:215
351
- msgid "Guestbook entry"
352
- msgstr "Gæstebogs indlæg"
353
-
354
- #: admin/page-editor.php:554
355
- #, php-format
356
- msgid ""
357
- "Line breaks will not be visible to the visitors due to your <a href=\"%s"
358
- "\">settings</a>."
359
- msgstr ""
360
- "Linjeskift vil ikke være synlig for besøgende, på grund af din <a href=\"%s"
361
- "\">indstillinger</a>."
362
-
363
- #: admin/page-editor.php:566 frontend/write.php:196 frontend/write.php:203
364
- #: admin/tabs/formtab.php:165
365
- msgid "Website"
366
- msgstr "Hjemmeside"
367
-
368
- #: admin/page-editor.php:569
369
- msgid "Example: <code>http://www.example.com/</code>"
370
- msgstr "Eksempel: <code>http://www.example.com/</code>"
371
-
372
- #: admin/page-editor.php:574 admin/page-export.php:61
373
- msgid "Origin"
374
- msgstr "Origin"
375
-
376
- #: admin/page-entries.php:209
377
- msgid "entry checked."
378
- msgstr "indlæg tjekket"
379
-
380
- #: admin/page-entries.php:211
381
- msgid "entries checked."
382
- msgstr "indlæg tjekket"
383
-
384
- #: admin/page-entries.php:213
385
- msgid "No entries checked."
386
- msgstr "Ingen indlæg tjekket."
387
-
388
- #: admin/page-entries.php:217
389
- msgid "entry unchecked."
390
- msgstr "Indlæg ikke tjekket."
391
-
392
- #: admin/page-entries.php:219
393
- msgid "entries unchecked."
394
- msgstr "Indlæg ikke tjekket."
395
-
396
- #: admin/page-entries.php:221
397
- msgid "No entries unchecked."
398
- msgstr "Ingen indlæg er umarkeret"
399
-
400
- #: admin/page-entries.php:225
401
- msgid ""
402
- "entry marked as spam and submitted to Akismet as spam (if Akismet was "
403
- "enabled)."
404
- msgstr ""
405
- "indlægene markeret som spam og videresendt til Akismet som som (hvis Akismet "
406
- "er aktiveret)"
407
-
408
- #: admin/page-entries.php:227
409
- msgid ""
410
- "entries marked as spam and submitted to Akismet as spam (if Akismet was "
411
- "enabled)."
412
- msgstr ""
413
- "indlæg markeret som spam og videresendt til Akismet som som (hvis Akismet er "
414
- "aktiveret)"
415
-
416
- #: admin/page-entries.php:229
417
- msgid "No entries marked as spam."
418
- msgstr "Ingen indlæg er markeret som spam"
419
-
420
- #: admin/page-entries.php:233
421
- msgid ""
422
- "entry marked as not spam and submitted to Akismet as ham (if Akismet was "
423
- "enabled)."
424
- msgstr ""
425
- "Indlæg markeret som ikke spam og indsendes til Akismet som ham (hvis Akismet "
426
- "blev aktiveret)."
427
-
428
- #: admin/page-entries.php:235
429
- msgid ""
430
- "entries marked as not spam and submitted to Akismet as ham (if Akismet was "
431
- "enabled)."
432
- msgstr ""
433
- "Indlæg markeret som ikke spam og indsendes til Akismet som ham(hvis Akismet "
434
- "blev aktiveret)."
435
-
436
- #: admin/page-entries.php:237
437
- msgid "No entries marked as not spam."
438
- msgstr "Ingen indlæg er markeret som ikke spam"
439
-
440
- #: admin/page-entries.php:241
441
- msgid "entry considered spam and marked as such."
442
- msgstr "Indlæg indeholder spam og er markeret som sådan."
443
-
444
- #: admin/page-entries.php:243
445
- msgid "entries considered spam and marked as such."
446
- msgstr "Indlæg indeholder spam og er markeret som sådan."
447
-
448
- #: admin/page-entries.php:246
449
- msgid "entry not considered spam and marked as such."
450
- msgstr "Indlæg inderholder ikke spam er er markeret som sådan."
451
-
452
- #: admin/page-entries.php:248
453
- msgid "entries not considered spam and marked as such."
454
- msgstr "Indlæg inderholder ikke spam er er markeret som sådan."
455
-
456
- #: admin/page-entries.php:251
457
- msgid "entry already considered spam and not changed."
458
- msgstr "Indlæg er allerede markeret som spam og er markeret som sådan."
459
-
460
- #: admin/page-entries.php:253
461
- msgid "entries already considered spam and not changed."
462
- msgstr "Indlæg er allerede markeret som spam og er markeret som sådan."
463
-
464
- #: admin/page-entries.php:256
465
- msgid "entry already considered not spam and not changed."
466
- msgstr ""
467
- "Indlæg er allerede markeret som værende ikke spam og er derfor ikke ændret."
468
-
469
- #: admin/page-entries.php:258
470
- msgid "entries already considered not spam and not changed."
471
- msgstr ""
472
- "Indlæg er allerede markeret som værende ikke spam og er derfor ikke ændret."
473
-
474
- #: admin/page-entries.php:262
475
- msgid "entry moved to trash."
476
- msgstr "Indlæg flyttet til papirkurven."
477
-
478
- #: admin/page-entries.php:264
479
- msgid "entries moved to trash."
480
- msgstr "Indlæg flyttet til papirkurven."
481
-
482
- #: admin/page-entries.php:266
483
- msgid "No entries moved to trash."
484
- msgstr "Ingen indlæg er flyttet til papirkurven."
485
-
486
- #: admin/page-entries.php:270
487
- msgid "entry recovered from trash."
488
- msgstr "Indlæg er genskabt fra papirkurven."
489
-
490
- #: admin/page-entries.php:272
491
- msgid "entries recovered from trash."
492
- msgstr "Indlæg er genskabt fra papirkurven."
493
-
494
- #: admin/page-entries.php:274
495
- msgid "No entries recovered from trash."
496
- msgstr "Ingen indlæg er genskabt fra papirkurven."
497
-
498
- #: admin/page-entries.php:278 admin/page-entries.php:293
499
- msgid "entry removed permanently."
500
- msgstr "Indlæg er permanent slettet"
501
-
502
- #: admin/page-entries.php:280 admin/page-entries.php:295
503
- msgid "entries removed permanently."
504
- msgstr "Indlæg er permanent slettet"
505
-
506
- #: admin/page-entries.php:282 admin/page-entries.php:297
507
- msgid "No entries permanently removed."
508
- msgstr "Ingen indlæg er permanent flyttet."
509
-
510
- #: admin/page-entries.php:329
511
- msgid "Please activate Akismet if you want to battle spam."
512
- msgstr "Aktiver venligst Akismet hvis du slippe for spam."
513
-
514
- #: admin/page-entries.php:402
515
- msgid "Guestbook entries"
516
- msgstr "Gæstebogs indlæg"
517
-
518
- #: admin/page-entries.php:424
519
- msgid "All"
520
- msgstr "Alle"
521
-
522
- #: admin/page-entries.php:429
523
- msgid "Unlocked"
524
- msgstr "Oplåst"
525
-
526
- #: admin/page-entries.php:433
527
- msgid "New"
528
- msgstr "Ny"
529
-
530
- #: admin/page-entries.php:448
531
- msgid "Mass edit actions"
532
- msgstr "Rediger flere"
533
-
534
- #: admin/page-entries.php:451
535
- msgid "Recover from trash"
536
- msgstr "Genskab fra papirkurv"
537
-
538
- #: admin/page-entries.php:452 admin/page-entries.php:469
539
- msgid "Remove permanently"
540
- msgstr "Fjern permanent"
541
-
542
- #: admin/page-entries.php:455
543
- msgid "Mark as checked"
544
- msgstr "Marker som tjekket"
545
-
546
- #: admin/page-entries.php:458
547
- msgid "Mark as not checked"
548
- msgstr "Marker som ikke tjekket"
549
-
550
- #: admin/page-entries.php:461
551
- msgid "Mark as spam"
552
- msgstr "Marker som spam"
553
-
554
- #: admin/page-entries.php:463
555
- msgid "Mark as not spam"
556
- msgstr "Marker som ikke spam"
557
-
558
- #: admin/page-entries.php:465
559
- msgid "Check with Akismet"
560
- msgstr "Tjek med Akismet"
561
-
562
- #: admin/page-entries.php:467
563
- msgid "Move to trash"
564
- msgstr "Flyt til papirkurv"
565
-
566
- #: admin/page-entries.php:474
567
- msgid "Apply"
568
- msgstr "Anvend"
569
-
570
- #: admin/page-entries.php:477 admin/page-entries.php:735
571
- msgid "Empty Spam"
572
- msgstr "Tøm Spam"
573
-
574
- #: admin/page-entries.php:479 admin/page-entries.php:737
575
- msgid "Empty Trash"
576
- msgstr "Tøm papirkurv"
577
-
578
- #: admin/page-entries.php:492
579
- msgid "Showing:"
580
- msgstr "Vis:"
581
-
582
- #: admin/page-entries.php:493
583
- msgid "of"
584
- msgstr "af"
585
-
586
- #: admin/page-entries.php:560 admin/page-entries.php:576
587
- msgid "ID"
588
- msgstr "ID"
589
-
590
- #: admin/page-entries.php:566 admin/page-entries.php:582
591
- #: admin/tabs/readingtab.php:189
592
- msgid "Date"
593
- msgstr "Dato"
594
-
595
- #: admin/page-entries.php:568 admin/page-entries.php:584
596
- msgid "Entry (excerpt)"
597
- msgstr "Indlæg (uddrag)"
598
-
599
- #: admin/page-entries.php:569 admin/page-entries.php:585
600
- msgid "Action"
601
- msgstr "Aktion"
602
-
603
- #: admin/page-entries.php:598
604
- msgid "No entries found."
605
- msgstr "Ingen indlæg fundet"
606
-
607
- #: admin/page-export.php:27
608
- msgid "Export guestbook entries."
609
- msgstr "Eksporter gæstebogens indlæg"
610
-
611
- #: admin/page-export.php:40
612
- msgid "Export guestbook entries from Gwolle-GB"
613
- msgstr "Eksport gæstebogens indlæg fra Gwolle-GB"
614
-
615
- #: admin/page-export.php:47
616
- msgid "No entries were found."
617
- msgstr "Ingen indlæg er fundet."
618
-
619
- #: admin/page-export.php:52
620
- #, php-format
621
- msgid "%d entries were found and will be exported."
622
- msgstr "%d indlæg er fundet og vil blive eksporteret."
623
-
624
- #: admin/page-export.php:55
625
- msgid "The exporter will preserve the following data per entry:"
626
- msgstr "Eksportøren bevarer følgende data pr indlæg:"
627
-
628
- #: admin/page-export.php:58 admin/page-import.php:372
629
- #: admin/page-import.php:413 frontend/write.php:139 frontend/write.php:146
630
- #: admin/tabs/formtab.php:105 admin/tabs/readingtab.php:152
631
- msgid "Name"
632
- msgstr "Navn"
633
-
634
- #: admin/page-export.php:59 admin/page-import.php:373
635
- #: admin/page-import.php:415
636
- msgid "E-Mail address"
637
- msgstr "E-Mail adresse"
638
-
639
- #: admin/page-export.php:60 admin/page-import.php:374
640
- #: admin/page-import.php:416
641
- msgid "URL/Website"
642
- msgstr "URL/Hjemmeside"
643
-
644
- #: admin/page-export.php:62 admin/page-import.php:375
645
- #: admin/page-import.php:417
646
- msgid "Date of the entry"
647
- msgstr "Dato for indlæget"
648
-
649
- #: admin/page-export.php:63 admin/page-import.php:376
650
- #: admin/page-import.php:418
651
- msgid "IP address"
652
- msgstr "IP adresse"
653
-
654
- #: admin/page-export.php:64
655
- msgid "Host address"
656
- msgstr "Host adresse"
657
-
658
- #: admin/page-export.php:65 admin/page-import.php:377
659
- #: admin/page-import.php:419 admin/tabs/formtab.php:185
660
- #: admin/tabs/uninstalltab.php:31
661
- msgid "Message"
662
- msgstr "Meddelelse"
663
-
664
- #: admin/page-export.php:66 admin/page-import.php:379
665
- msgid "\"is checked\" flag"
666
- msgstr "\"er tjekket\" flag"
667
-
668
- #: admin/page-export.php:67 admin/page-import.php:378
669
- msgid "\"is spam\" flag"
670
- msgstr "\"er spam\" flag"
671
-
672
- #: admin/page-export.php:68
673
- msgid "\"is trash\" flag"
674
- msgstr "\"er affald\" flag"
675
-
676
- #: admin/page-export.php:70
677
- msgid "The exporter does not delete any data, so your data will still be here."
678
- msgstr ""
679
- "Ved eksporter bliver ingen data slettet, så dine data vil stadig være "
680
- "tilstede."
681
-
682
- #: admin/page-export.php:75
683
- msgid "Export all entries from this website."
684
- msgstr "Eksporter alle indlæg fra denne hjemmeside."
685
-
686
- #: admin/page-export.php:79
687
- msgid "Start export"
688
- msgstr "Begynd eksporter"
689
-
690
- #: admin/page-gwolle-gb.php:34
691
- msgid "Overview"
692
- msgstr "Overblik"
693
-
694
- #: admin/page-gwolle-gb.php:48
695
- msgid "Entry total"
696
- msgstr "Indlæg ialt"
697
-
698
- #: admin/page-gwolle-gb.php:51
699
- msgid "Entries total"
700
- msgstr "Indlæg ialt"
701
-
702
- #: admin/page-gwolle-gb.php:67
703
- msgid "Unlocked entry"
704
- msgstr "Oplåst indlæg"
705
-
706
- #: admin/page-gwolle-gb.php:69
707
- msgid "Unlocked entries"
708
- msgstr "Oplåst indlæg"
709
-
710
- #: admin/page-gwolle-gb.php:87
711
- msgid "New entries"
712
- msgstr "Nye indlæg"
713
-
714
- #: admin/page-gwolle-gb.php:103
715
- msgid "Spam entry"
716
- msgstr "Spam indlæg"
717
-
718
- #: admin/page-gwolle-gb.php:105
719
- msgid "Spam entries"
720
- msgstr "Spam indlæg"
721
-
722
- #: admin/page-gwolle-gb.php:121
723
- msgid "Trashed entry"
724
- msgstr "Affalds indlæg"
725
-
726
- #: admin/page-gwolle-gb.php:123
727
- msgid "Trashed entries"
728
- msgstr "Affalds indlæg"
729
-
730
- #: admin/page-gwolle-gb.php:136
731
- msgid "Write admin entry"
732
- msgstr "Skriv administrator indlæg"
733
-
734
- #: admin/page-gwolle-gb.php:147 admin/tabs/emailtab.php:47
735
- msgid ""
736
- "Sorry, but the function <code>mail()</code> required to notify you by mail "
737
- "is not enabled in your PHP configuration. You might want to install a "
738
- "WordPress plugin that uses SMTP instead of <code>mail()</code>. Or you can "
739
- "contact your hosting provider to change this."
740
- msgstr ""
741
- "Beklager, denne funktion <code>mail()</code> kræver at underrette dig pr "
742
- "mail er ikke etableret i din PHP configuration. Du kan måske installere et "
743
- "wordpress plugin der bruger SMTP i stedet for <code>mail()</code>. Eller du "
744
- "kan kontakte din Webhotel for at ændre dette."
745
-
746
- #: admin/page-gwolle-gb.php:173
747
- msgid "Send me an e-mail when a new entry has been posted."
748
- msgstr "Send mig en e-mail, når et nyt indlæg har været udgivet."
749
-
750
- #: admin/page-gwolle-gb.php:175
751
- msgid "Save setting"
752
- msgstr "Gem indstillinger"
753
-
754
- #: admin/page-gwolle-gb.php:180
755
- msgid "The following users have subscribed to this service:"
756
- msgstr "Følgende brugere har tilmeldt sig til denne service:"
757
-
758
- #: admin/page-gwolle-gb.php:192 functions/function.log.php:173
759
- #: admin/tabs/emailtab.php:66 admin/tabs/emailtab.php:119
760
- msgid "You"
761
- msgstr "Dig"
762
-
763
- #: admin/page-gwolle-gb.php:201
764
- msgid "No subscriber yet"
765
- msgstr "Ingen abonnenter endnu"
766
-
767
- #: admin/page-gwolle-gb.php:221
768
- msgid "This is how you can get your guestbook displayed on your website:"
769
- msgstr "Sådan får du vist din gæstebog på siden:"
770
-
771
- #: admin/page-gwolle-gb.php:223
772
- msgid "Create a new page."
773
- msgstr "Opret en ny side."
774
-
775
- #: admin/page-gwolle-gb.php:224
776
- msgid ""
777
- "Choose a title and set &quot;[gwolle_gb]&quot; (without the quotes) as the "
778
- "content."
779
- msgstr ""
780
- "Vælg en titel, og sæt &quot;[gwolle_gb]&quot; (uden anførselstegn) som "
781
- "indholdet."
782
-
783
- #: admin/page-gwolle-gb.php:225
784
- msgid ""
785
- "It is probably a good idea to disable comments on that page; otherwise, your "
786
- "visitors might get a little confused."
787
- msgstr ""
788
- "Det er nok en god ide at deaktivere kommentarer på denne side; ellers kan "
789
- "dine besøgende blive lidt forvirret."
790
-
791
- #: admin/page-gwolle-gb.php:232
792
- msgid "These entries will be visible for your visitors:"
793
- msgstr "Disse indlæg vil være synlige for dine besøgende:"
794
-
795
- #: admin/page-gwolle-gb.php:234
796
- msgid "Marked as Checked."
797
- msgstr "Marker som tjekket."
798
-
799
- #: admin/page-gwolle-gb.php:235
800
- msgid "Not marked as Spam."
801
- msgstr "Ikke markeret som Spam."
802
-
803
- #: admin/page-gwolle-gb.php:236
804
- msgid "Not marked as Trash."
805
- msgstr "Ikke markeret som affald"
806
-
807
- #: admin/page-gwolle-gb.php:240
808
- msgid "The Main Menu counter counts the following entries:"
809
- msgstr "Hovedmenuen tæller følgende oplysninger:"
810
-
811
- #: admin/page-gwolle-gb.php:242
812
- msgid "Marked as Unchecked (You might want to moderate them)."
813
- msgstr "Markeret som ukontrolleret (Du vil måske moderere dem)."
814
-
815
- #: admin/page-gwolle-gb.php:243
816
- msgid "Not marked as Spam (You might want to check them)."
817
- msgstr "Ikke markeret som spam (Du vil måske tjekke dem)."
818
-
819
- #: admin/page-gwolle-gb.php:244
820
- msgid "Not marked as Trash (You decide what goes to the trash)."
821
- msgstr "Ikke markeret som affald (Du bestemmer, hvad der går til papirkurven)."
822
-
823
- #: admin/page-gwolle-gb.php:251
824
- msgid "This plugin is being maintained by Marcel Pol from"
825
- msgstr "Dette plugin bliver vedligeholdt af Marcel Pol fra"
826
-
827
- #: admin/page-gwolle-gb.php:255
828
- msgid "Review this plugin."
829
- msgstr "Anmeld dette plugin"
830
-
831
- #: admin/page-gwolle-gb.php:256
832
- msgid "If this plugin has any value to you, then please leave a review at"
833
- msgstr ""
834
- "Hvis dette plugin har nogen værdi for dig, så kan du skrive en anmeldelse på"
835
-
836
- #: admin/page-gwolle-gb.php:257
837
- msgid "The plugin page at wordpress.org."
838
- msgstr "Plugin siden på wordpress.org."
839
-
840
- #: admin/page-gwolle-gb.php:258
841
- msgid "the plugin page at wordpress.org"
842
- msgstr "Plugin siden på wordpress.org."
843
-
844
- #: admin/page-gwolle-gb.php:261
845
- msgid "Donate to the EFF."
846
- msgstr "Doner til EFF"
847
-
848
- #: admin/page-gwolle-gb.php:262
849
- msgid ""
850
- "The Electronic Frontier Foundation is one of the few organisations that "
851
- "wants to keep the internet a free place."
852
- msgstr ""
853
- "Electronic Frontier Foundation er en af de få organisationer, der ønsker at "
854
- "holde internettet et frit sted."
855
-
856
- #: admin/page-gwolle-gb.php:263
857
- msgid "Please donate to the EFF."
858
- msgstr "Giv venligst et bidrag til EFF."
859
-
860
- #: admin/page-gwolle-gb.php:265 admin/page-gwolle-gb.php:267
861
- msgid "Donate to the maintainer."
862
- msgstr "Donér til vedligeholderen."
863
-
864
- #: admin/page-gwolle-gb.php:266
865
- msgid ""
866
- "If you rather want to donate to the maintainer of the plugin, you can donate "
867
- "through PayPal."
868
- msgstr ""
869
- "Hvis du hellere vil donere til vedligeholderen af plugin, kan du donere via "
870
- "PayPal."
871
-
872
- #: admin/page-gwolle-gb.php:267
873
- msgid "Donate through"
874
- msgstr "Doner igennem "
875
-
876
- #: admin/page-gwolle-gb.php:267
877
- msgid "PayPal"
878
- msgstr "PayPal"
879
-
880
- #: admin/page-gwolle-gb.php:268
881
- msgid "to"
882
- msgstr "til"
883
-
884
- #: admin/page-gwolle-gb.php:338
885
- msgid "Welcome to the Guestbook!"
886
- msgstr "Velkommen til gæstebogen!"
887
-
888
- #: admin/page-gwolle-gb.php:339
889
- msgid "E-mail Notifications"
890
- msgstr "E-Mail Notifikationer"
891
-
892
- #: admin/page-gwolle-gb.php:340
893
- msgid "Review and Donate"
894
- msgstr "Anmeld og Doner"
895
-
896
- #: admin/page-gwolle-gb.php:342 admin/page-gwolle-gb.php:343
897
- msgid "Help"
898
- msgstr "Hjælp"
899
-
900
- #: admin/page-gwolle-gb.php:344
901
- msgid "This plugin uses the following scripts/programs/images:"
902
- msgstr "Dette plugin bruger følgende scripts / programmer / billeder:"
903
-
904
- #: admin/page-gwolle-gb.php:349
905
- msgid "Gwolle Guestbook"
906
- msgstr "Gwolle Gæstebog"
907
-
908
- #: admin/page-import.php:90
909
- msgid ""
910
- "I'm sorry, but I wasn't able to import entries from DMSGuestbook "
911
- "successfully."
912
- msgstr ""
913
- "Jeg er ked af, men jeg var ikke i stand til at importere indlæg fra "
914
- "DMSGuestbook."
915
-
916
- #: admin/page-import.php:92
917
- msgid "1 entry imported successfully from DMSGuestbook."
918
- msgstr "1 indlæg importeret fra DMSGuestbook."
919
-
920
- #: admin/page-import.php:94
921
- #, php-format
922
- msgid "%d entries imported successfully from DMSGuestbook."
923
- msgstr "% d indlæg importeret fra DMSGuestbook."
924
-
925
- #: admin/page-import.php:98
926
- msgid ""
927
- "<strong>Nothing to import.</strong> The guestbook you've chosen does not "
928
- "contain any entries."
929
- msgstr ""
930
- "<strong> Intet at importere </ strong> Gæstebogen du har valgt indeholder "
931
- "ingen indlæg.."
932
-
933
- #: admin/page-import.php:103
934
- msgid "I'm sorry, but I wasn't able to find the MySQL table of DMSGuestbook."
935
- msgstr ""
936
- "Jeg er ked af det, men jeg var ikke i stand til at finde den MySQL tabel "
937
- "over DMSGuestbook."
938
-
939
- #: admin/page-import.php:108
940
- msgid "You haven't chosen a guestbook. Please select one and try again."
941
- msgstr "Du har ikke valgt en gæstebog. Vælg en, og prøv igen."
942
-
943
- #: admin/page-import.php:133 admin/page-import.php:181
944
- msgid ""
945
- "You haven't chosen how to import from WordPress comments. Please choose and "
946
- "try again."
947
- msgstr ""
948
- "Du har ikke valgt, hvordan du importere fra WordPress kommentarer. Vælg "
949
- "venligst og prøv igen."
950
-
951
- #: admin/page-import.php:168
952
- msgid ""
953
- "I'm sorry, but I wasn't able to import comments from that page successfully."
954
- msgstr ""
955
- "Jeg er ked af det, men jeg var ikke i stand til at importere kommentarer fra "
956
- "den pågældende side med succes."
957
-
958
- #: admin/page-import.php:170
959
- msgid "1 entry imported successfully from WordPress comments."
960
- msgstr "1 indlæg importeret fra WordPress kommentarer."
961
-
962
- #: admin/page-import.php:172
963
- #, php-format
964
- msgid "%d entries imported successfully from WordPress comments."
965
- msgstr "% d indlæg importeret fra WordPress kommentarer."
966
-
967
- #: admin/page-import.php:176
968
- msgid ""
969
- "<strong>Nothing to import.</strong> There seem to be no comments on this "
970
- "page, post or at all."
971
- msgstr ""
972
- "<strong> Intet at importere. </ strong> Der synes ikke at være nogen "
973
- "kommentarer til denne side, indlæg overhovedet."
974
-
975
- #: admin/page-import.php:195
976
- msgid "Your filesize is too large."
977
- msgstr "Din filstørrelse er for stor."
978
-
979
- #: admin/page-import.php:216
980
- msgid "Invalid file format."
981
- msgstr "Ugyldigt filformat."
982
-
983
- #: admin/page-import.php:241
984
- msgid ""
985
- "It seems your CSV file is from an export that is not compatible with this "
986
- "version of Gwolle-GB."
987
- msgstr ""
988
- "Det ser ud til din CSV-fil er fra en eksport, der ikke er kompatibel med "
989
- "denne version af Gwolle-GB."
990
-
991
- #: admin/page-import.php:250 admin/page-import.php:284
992
- msgid "Your data seems to be corrupt. Import failed."
993
- msgstr "Dine data synes at være korrupt. Import mislykkedes."
994
-
995
- #: admin/page-import.php:293
996
- msgid "I'm sorry, but I wasn't able to import entries from the CSV file."
997
- msgstr ""
998
- "Undskyld, men jeg var ikke i stand til at importere poster fra CSV-filen."
999
-
1000
- #: admin/page-import.php:295
1001
- msgid "1 entry imported successfully from the CSV file."
1002
- msgstr "1 indlæg importeret fra CSV-filen."
1003
-
1004
- #: admin/page-import.php:297
1005
- #, php-format
1006
- msgid "%d entries imported successfully from the CSV file."
1007
- msgstr "%d indlæg importeret fra CSV-filen."
1008
-
1009
- #: admin/page-import.php:306
1010
- msgid "Your upload triggered the following error:"
1011
- msgstr "Din upload udløste følgende fejl:"
1012
-
1013
- #: admin/page-import.php:319
1014
- msgid "Import guestbook entries."
1015
- msgstr "Import gæstebogsindlæg."
1016
-
1017
- #: admin/page-import.php:338
1018
- msgid "Import guestbook entries from DMSGuestbook"
1019
- msgstr "Importer gæstebogs indlæg fra DMSGuestbook"
1020
-
1021
- #: admin/page-import.php:367
1022
- #, php-format
1023
- msgid "%d entries were found and will be imported."
1024
- msgstr "%d indlæg blev fundet, og vil blive importeret."
1025
-
1026
- #: admin/page-import.php:370 admin/page-import.php:411
1027
- msgid "The importer will preserve the following data per entry:"
1028
- msgstr "Importøren vil bevare følgende data pr indlæg:"
1029
-
1030
- #: admin/page-import.php:381 admin/page-import.php:422
1031
- msgid ""
1032
- "However, data such as HTML formatting is not supported by Gwolle-GB and "
1033
- "<strong>will not</strong> be imported."
1034
- msgstr ""
1035
- "Imidlertid er data såsom HTML-formatering ikke understøttet af Gwolle-GB og "
1036
- "kan <strong> ikke </ strong> importeres."
1037
-
1038
- #: admin/page-import.php:383 admin/page-import.php:426
1039
- msgid ""
1040
- "The importer does not delete any data, so you can go back whenever you want."
1041
- msgstr "Importøren sletter ikke nogen data, så du kan gå tilbage når du vil."
1042
-
1043
- #: admin/page-import.php:389
1044
- msgid "Import all entries from DMSGuestbook."
1045
- msgstr "Importer alle indlæg fra DMSGuestbook."
1046
-
1047
- #: admin/page-import.php:393 admin/page-import.php:518
1048
- #: admin/page-import.php:537
1049
- msgid "Start import"
1050
- msgstr "Begynd importer"
1051
-
1052
- #: admin/page-import.php:396
1053
- msgid "DMSGuestbook was not found."
1054
- msgstr "DMSGuestbook blev ikke fundet."
1055
-
1056
- #: admin/page-import.php:405
1057
- msgid "Import guestbook entries from WordPress comments"
1058
- msgstr "Importer gæstebogsindlæg fra WordPress kommentarer"
1059
-
1060
- #: admin/page-import.php:414
1061
- msgid "User ID"
1062
- msgstr "Bruger ID"
1063
-
1064
- #: admin/page-import.php:420
1065
- msgid "\"approved\" status"
1066
- msgstr "\"Godkendt\" status"
1067
-
1068
- #: admin/page-import.php:424
1069
- msgid "Spam comments will not be imported."
1070
- msgstr "Spam-kommentarer vil ikke blive importeret."
1071
-
1072
- #: admin/page-import.php:429
1073
- msgid "Select a page to import the comments from:"
1074
- msgstr "Vælg en side at importere kommentarerne fra:"
1075
-
1076
- #: admin/page-import.php:431 admin/page-import.php:469
1077
- msgid "Select"
1078
- msgstr "Vælg"
1079
-
1080
- #: admin/page-import.php:455 admin/page-import.php:492
1081
- msgid " Comments"
1082
- msgstr "Kommentarer"
1083
-
1084
- #: admin/page-import.php:457 admin/page-import.php:494
1085
- msgid "1 Comment"
1086
- msgstr "1 Kommentar"
1087
-
1088
- #: admin/page-import.php:467
1089
- msgid "Select a post to import the comments from:"
1090
- msgstr "Vælg et indlæg at importere kommentarer fra:"
1091
-
1092
- #: admin/page-import.php:511
1093
- msgid "Select where to import the comments from:"
1094
- msgstr "Vælg, hvor der skal importeres kommentarer fra:"
1095
-
1096
- #: admin/page-import.php:512
1097
- msgid "Comments from selected page."
1098
- msgstr "Kommentarer fra udvalgte side."
1099
-
1100
- #: admin/page-import.php:513
1101
- msgid "Comments from selected post."
1102
- msgstr "Kommentarer fra udvalgte post."
1103
-
1104
- #: admin/page-import.php:514
1105
- msgid "All Comments"
1106
- msgstr "Alle Kommentarer"
1107
-
1108
- #: admin/page-import.php:526
1109
- msgid "Import guestbook entries from Gwolle-GB"
1110
- msgstr "Importer gæstebogs indlæg fra Gwolle-GB"
1111
-
1112
- #: admin/page-import.php:532
1113
- msgid "Select a CSV file with exported entries to import again:"
1114
- msgstr "Vælg en CSV fil med eksporterede indlæg at importere igen."
1115
-
1116
- #: admin/page-settings.php:326
1117
- msgid "Form"
1118
- msgstr "Formular"
1119
-
1120
- #: admin/page-settings.php:327
1121
- msgid "Reading"
1122
- msgstr "Læsning"
1123
-
1124
- #: admin/page-settings.php:328
1125
- msgid "Admin"
1126
- msgstr "Admin"
1127
-
1128
- #: admin/page-settings.php:329 frontend/write.php:282 frontend/write.php:313
1129
- msgid "Anti-spam"
1130
- msgstr "Anti-Spam"
1131
-
1132
- #: admin/page-settings.php:330
1133
- msgid "E-mail"
1134
- msgstr "E-Mail"
1135
-
1136
- #: admin/page-settings.php:331 admin/tabs/uninstalltab.php:45
1137
- msgid "Uninstall"
1138
- msgstr "Afinstaller"
1139
-
1140
- #: frontend/posthandling.php:39
1141
- msgid "Submitting a new guestbook entry is only allowed for logged-in users."
1142
- msgstr ""
1143
- "Indsendelse af et nyt gæstebogsindlæg er kun tilladt for registrerede "
1144
- "brugere."
1145
-
1146
- #: frontend/posthandling.php:208 frontend/posthandling.php:251
1147
- msgid "There were errors submitting your guestbook entry."
1148
- msgstr "Der var fejl ved dit indlæg."
1149
-
1150
- #: frontend/posthandling.php:214
1151
- msgid "Your name is not filled in, even though it is mandatory."
1152
- msgstr "Dit navn er ikke udfyldt, selv om det er obligatorisk."
1153
-
1154
- #: frontend/posthandling.php:217
1155
- msgid "Your origin is not filled in, even though it is mandatory."
1156
- msgstr "Din oprindelse ikke udfyldt, selv om det er obligatorisk."
1157
-
1158
- #: frontend/posthandling.php:220
1159
- msgid ""
1160
- "Your e-mail address is not filled in correctly, even though it is mandatory."
1161
- msgstr ""
1162
- "Din e-mail-adresse er ikke udfyldt korrekt, selvom det er obligatorisk."
1163
-
1164
- #: frontend/posthandling.php:223
1165
- msgid "Your website is not filled in, even though it is mandatory."
1166
- msgstr "Din hjemmeside er ikke udfyldt, selv om det er obligatorisk."
1167
-
1168
- #: frontend/posthandling.php:226
1169
- msgid "There is no message, even though it is mandatory."
1170
- msgstr "Der er ingen meddelelse, selvom det er obligatorisk."
1171
-
1172
- #: frontend/posthandling.php:229
1173
- msgid ""
1174
- "The anti-spam question was not answered correctly, even though it is "
1175
- "mandatory."
1176
- msgstr ""
1177
- "Anti-spam spørgsmålet blev ikke besvaret korrekt, selvom det er obligatorisk."
1178
-
1179
- #: frontend/posthandling.php:232
1180
- msgid "The reCAPTCHA was not filled in correctly, even though it is mandatory."
1181
- msgstr "ReCAPTCHA var ikke udfyldt korrekt, selvom det er obligatorisk."
1182
-
1183
- #: frontend/posthandling.php:324
1184
- msgid "Double post: An entry with the data you entered has already been saved."
1185
- msgstr ""
1186
- "Dobbelt indlæg: En post med de data, du har indtastet er allerede gemt."
1187
-
1188
- #: frontend/posthandling.php:341
1189
- msgid "Thank you for your entry."
1190
- msgstr "Tak for dit indlæg."
1191
-
1192
- #: frontend/posthandling.php:343
1193
- msgid "We will review it and unlock it in a short while."
1194
- msgstr "Vi vil gennemgå det og aktivere det snarrest."
1195
-
1196
- #: frontend/posthandling.php:380 admin/tabs/emailtab.php:138
1197
- msgid ""
1198
- "\n"
1199
- "Hello,\n"
1200
- "\n"
1201
- "There is a new guestbook entry at '%blog_name%'.\n"
1202
- "You can check it at %entry_management_url%.\n"
1203
- "\n"
1204
- "Have a nice day.\n"
1205
- "Your Gwolle-GB-Mailer\n"
1206
- "\n"
1207
- "\n"
1208
- "Website address: %blog_url%\n"
1209
- "User name: %user_name%\n"
1210
- "User email: %user_email%\n"
1211
- "Entry status: %status%\n"
1212
- "Entry content:\n"
1213
- "%entry_content%\n"
1214
- msgstr ""
1215
- "\n"
1216
- "Hej,\n"
1217
- "\n"
1218
- "Der er et nyt gæstebogs indlæg ved '%blog_name%'.\n"
1219
- "Du kan tjekke det på % entry_management_url%.\n"
1220
- "\n"
1221
- "Hav en god dag.\n"
1222
- "Din Gwolle-GB-Mailer\n"
1223
- "\n"
1224
- "\n"
1225
- "Websted: % blog_url%\n"
1226
- "Brugernavn:% user_name%\n"
1227
- "Bruger email:% user_email%\n"
1228
- "Indlægsstatus:% status%\n"
1229
- "Indlæg indhold:\n"
1230
- "% entry_content%\n"
1231
-
1232
- #: frontend/posthandling.php:401 frontend/posthandling.php:467
1233
- msgid "New Guestbook Entry"
1234
- msgstr "Nyt Gæstebogs indlæg"
1235
-
1236
- #: frontend/posthandling.php:448 admin/tabs/emailtab.php:198
1237
- msgid ""
1238
- "\n"
1239
- "Hello,\n"
1240
- "\n"
1241
- "You have just posted a new guestbook entry at '%blog_name%'.\n"
1242
- "\n"
1243
- "Have a nice day.\n"
1244
- "The editors at %blog_name%.\n"
1245
- "\n"
1246
- "\n"
1247
- "Website address: %blog_url%\n"
1248
- "User name: %user_name%\n"
1249
- "User email: %user_email%\n"
1250
- "Entry content:\n"
1251
- "%entry_content%\n"
1252
- msgstr ""
1253
- "\n"
1254
- "Hej,\n"
1255
- "\n"
1256
- "Du har lige sendt en ny gæstebogsindlæg ved '%blog_name%'.\n"
1257
- "\n"
1258
- "Ha' en god dag.\n"
1259
- "Redaktøren på %blog_name%.\n"
1260
- "\n"
1261
- "\n"
1262
- "Hjemmeside addresse: %blog_url%\n"
1263
- "Brugernavn: %user_name%\n"
1264
- "Bruger email: %user_email%\n"
1265
- "Indlægs indhold:\n"
1266
- "%entry_content%\n"
1267
-
1268
- #: frontend/read.php:79
1269
- msgid "Previous page"
1270
- msgstr "Forrige side"
1271
-
1272
- #: frontend/read.php:92 frontend/read.php:100 frontend/read.php:106
1273
- #: frontend/read.php:121 frontend/read.php:132
1274
- msgid "Page"
1275
- msgstr "Side"
1276
-
1277
- #: frontend/read.php:103 frontend/read.php:133
1278
- msgid "Next page"
1279
- msgstr "Næste side"
1280
-
1281
- #: frontend/read.php:144
1282
- msgid "(no entries yet)"
1283
- msgstr "(ingen indlæg endnu)"
1284
-
1285
- #: frontend/read.php:192
1286
- msgid "from"
1287
- msgstr "fra"
1288
-
1289
- #: frontend/read.php:201
1290
- msgid "wrote on"
1291
- msgstr "skrev den"
1292
-
1293
- #: frontend/read.php:205
1294
- msgid "on"
1295
- msgstr "på"
1296
-
1297
- #: frontend/rss.php:84
1298
- msgid "Guestbook Entry by"
1299
- msgstr "Gæstebogs indlæg af"
1300
-
1301
- #: frontend/widget.php:12
1302
- msgid "Displays the recent guestbook entries."
1303
- msgstr "Vis seneste indlæg i gæstebogen."
1304
-
1305
- #: frontend/widget.php:28 frontend/widget.php:194
1306
- msgid "Visit guestbook"
1307
- msgstr "Besøg gæstebogen"
1308
-
1309
- #: frontend/widget.php:147
1310
- msgid "Click here to get to the guestbook."
1311
- msgstr "Klik her for at gå til gæstebogen."
1312
-
1313
- #: frontend/widget.php:210
1314
- msgid "Title:"
1315
- msgstr "Titel:"
1316
-
1317
- #: frontend/widget.php:216
1318
- msgid "Number of entries:"
1319
- msgstr "Antal af indlæg"
1320
-
1321
- #: frontend/widget.php:232
1322
- msgid "Best entries to show:"
1323
- msgstr "Vis bedste indlæg"
1324
-
1325
- #: frontend/widget.php:234
1326
- msgid "List of entry_id's, comma-separated"
1327
- msgstr "Listen af indlægs ID'er, komma separeret "
1328
-
1329
- #: frontend/widget.php:240
1330
- msgid "Show name of author."
1331
- msgstr "Vis navnet på forfatteren."
1332
-
1333
- #: frontend/widget.php:246
1334
- msgid "Show date of entry."
1335
- msgstr "Vis indlægets dato"
1336
-
1337
- #: frontend/widget.php:250
1338
- msgid "Number of words for each entry:"
1339
- msgstr "Antal ord i hvert indlæg:"
1340
-
1341
- #: frontend/widget.php:266
1342
- msgid "Link text:"
1343
- msgstr "Genvejs tekst:"
1344
-
1345
- #: frontend/widget.php:272
1346
- msgid "Select the page of the guestbook:"
1347
- msgstr "Vælg siden i gæstebogen:"
1348
-
1349
- #: frontend/widget.php:274
1350
- msgid "Select page"
1351
- msgstr "Vælg side"
1352
-
1353
- #: frontend/write.php:94
1354
- msgid "Write a new entry."
1355
- msgstr "Skriv et nyt indlæg."
1356
-
1357
- #: frontend/write.php:102
1358
- msgid "Log in to post an entry"
1359
- msgstr "Log ind for at skrive et indlæg"
1360
-
1361
- #: frontend/write.php:129 admin/tabs/formtab.php:58
1362
- msgid "Write a new entry for the Guestbook"
1363
- msgstr "Skriv et nyt indlæg til gæstebogen"
1364
-
1365
- #: frontend/write.php:158 frontend/write.php:165 admin/tabs/formtab.php:125
1366
- #: admin/tabs/readingtab.php:164
1367
- msgid "City"
1368
- msgstr "By"
1369
-
1370
- #: frontend/write.php:177 frontend/write.php:184 admin/tabs/formtab.php:145
1371
- msgid "Email"
1372
- msgstr "Email"
1373
-
1374
- #: frontend/write.php:283
1375
- msgid "Question:"
1376
- msgstr "Spørgsmål:"
1377
-
1378
- #: frontend/write.php:289
1379
- msgid "Answer"
1380
- msgstr "Svar"
1381
-
1382
- #: frontend/write.php:333
1383
- msgid "Submit"
1384
- msgstr "Send"
1385
-
1386
- #: frontend/write.php:342 admin/tabs/formtab.php:74
1387
- msgid ""
1388
- "\n"
1389
- "Fields marked with * are obligatory.\n"
1390
- "Your E-mail address wil not be published.\n"
1391
- "For security reasons we save the ip address %ip%.\n"
1392
- "It might be that your entry will only be visible in the guestbook after we "
1393
- "reviewed it.\n"
1394
- "We reserve our right to edit, delete, or not publish entries.\n"
1395
- msgstr ""
1396
- "\n"
1397
- "Felter markeret med * er oblitoriske.\n"
1398
- "Din E-mail adresse vil ikke blive offentliggjort.\n"
1399
- "Af sikkerhedsårsager vil vi gemme din ip adresse %ip%.\n"
1400
- "Det er muligt at dit indlæg først vil blive vist i gæstebogen, efter det er "
1401
- "blevet gennemlæst.\n"
1402
- "Vi forbeholder os retten til at redigere, slette, eller ikke at "
1403
- "offentliggøre indlæg.\n"
1404
-
1405
- #: functions/function.log.php:94
1406
- msgid "Entry has been locked."
1407
- msgstr "Indlæg er blevet låst."
1408
-
1409
- #: functions/function.log.php:95
1410
- msgid "Entry has been checked."
1411
- msgstr "Indlæg er blevet kontrolleret."
1412
-
1413
- #: functions/function.log.php:96
1414
- msgid "Entry marked as spam."
1415
- msgstr "Indlæg er markeret som spam."
1416
-
1417
- #: functions/function.log.php:97
1418
- msgid "Entry marked as not spam."
1419
- msgstr "Indlæg markeret som ikke-spam."
1420
-
1421
- #: functions/function.log.php:98
1422
- msgid "Entry has been edited."
1423
- msgstr "Indlæg er blevet redigeret."
1424
-
1425
- #: functions/function.log.php:99
1426
- msgid "Imported from DMSGuestbook"
1427
- msgstr "Importeret fra DMSGuestbook"
1428
-
1429
- #: functions/function.log.php:100
1430
- msgid "Imported from WordPress comments"
1431
- msgstr "Importeret fra WordPress kommentarer"
1432
-
1433
- #: functions/function.log.php:101
1434
- msgid "Imported from Gwolle-GB"
1435
- msgstr "Importeret fra Gwolle-DK"
1436
-
1437
- #: functions/function.log.php:102
1438
- msgid "Exported to CSV file"
1439
- msgstr "Eksporteres til CSV-fil"
1440
-
1441
- #: functions/function.log.php:103
1442
- msgid "Entry has been trashed."
1443
- msgstr "Indlæg er blevet smidt i papirkurven."
1444
-
1445
- #: functions/function.log.php:104
1446
- msgid "Entry has been untrashed."
1447
- msgstr "Indlæg er blevet reddet fra papirkurven."
1448
-
1449
- #: functions/function.misc.php:63
1450
- msgid "No content to display. This entry is empty."
1451
- msgstr "Intet indhold at vise. Dette indlæg er tomt."
1452
-
1453
- #: admin/tabs/admintab.php:26
1454
- msgid "Entries per page in the admin"
1455
- msgstr "Indlæg per side i admin"
1456
-
1457
- #: admin/tabs/admintab.php:41
1458
- msgid "Number of entries shown in the admin."
1459
- msgstr "Antal indlæg vist i admin."
1460
-
1461
- #: admin/tabs/admintab.php:46
1462
- msgid "Entry icons"
1463
- msgstr "Indlægs ikoner"
1464
-
1465
- #: admin/tabs/admintab.php:52
1466
- msgid "Show entry icons"
1467
- msgstr "Vis indlægs ikoner"
1468
-
1469
- #: admin/tabs/admintab.php:54
1470
- msgid ""
1471
- "These icons are shown in every entry row of the admin list, so that you know "
1472
- "its status (checked, spam and trash)."
1473
- msgstr ""
1474
- "Disse ikoner vises i hvert indlægsrække af admin listen, så du kender dens "
1475
- "status (kontrolleret, spam og papirkurv)."
1476
-
1477
- #: admin/tabs/admintab.php:61 admin/tabs/antispamtab.php:140
1478
- #: admin/tabs/emailtab.php:235 admin/tabs/formtab.php:252
1479
- #: admin/tabs/readingtab.php:229
1480
- msgid "Save settings"
1481
- msgstr "Gem indstillinger"
1482
-
1483
- #: admin/tabs/antispamtab.php:26
1484
- msgid "Moderate Guestbook"
1485
- msgstr "Rediger Gæstebog"
1486
-
1487
- #: admin/tabs/antispamtab.php:34
1488
- msgid "Moderate entries before publishing them."
1489
- msgstr "Rediger indlæg før offentliggørelse af dem."
1490
-
1491
- #: admin/tabs/antispamtab.php:38
1492
- msgid ""
1493
- "New entries have to be unlocked by a moderator before they are visible to "
1494
- "the public."
1495
- msgstr ""
1496
- "Nye poster skal låses op af en moderator, før de er synlige for "
1497
- "offentligheden."
1498
-
1499
- #: admin/tabs/antispamtab.php:40
1500
- msgid ""
1501
- "It is recommended that you turn this on, because you are responsible for the "
1502
- "content on your website."
1503
- msgstr ""
1504
- "Det anbefales, at du aktiverer dette , fordi du er ansvarlig for indholdet "
1505
- "på din hjemmeside."
1506
-
1507
- #: admin/tabs/antispamtab.php:50
1508
- msgid "Learn more about Akismet..."
1509
- msgstr "Lær mere om Akismet"
1510
-
1511
- #: admin/tabs/antispamtab.php:50 admin/tabs/antispamtab.php:106
1512
- msgid "What's that?"
1513
- msgstr "Hvad er dette?"
1514
-
1515
- #: admin/tabs/antispamtab.php:60
1516
- msgid ""
1517
- "Akismet helps you to fight spam. It's free and easy to install. Download and "
1518
- "install it today to stop spam in your guestbook."
1519
- msgstr ""
1520
- "Akismet hjælper dig med at bekæmpe spam. Det er gratis og let at installere. "
1521
- "Hente og installere den i dag for at stoppe spam i din gæstebog."
1522
-
1523
- #: admin/tabs/antispamtab.php:63
1524
- #, php-format
1525
- msgid ""
1526
- "Sorry, wasn't able to locate your <strong>WordPress API key</strong>. You "
1527
- "can enter it at the <a href=\"%s\">Akismet configuration page</a>."
1528
- msgstr ""
1529
- "Beklager, kunne ikke finde din <strong> WordPress API-nøgle </ strong>. Du "
1530
- "kan indtaste det på <a href=\"%s\"> Akismet konfigurationsside </a>."
1531
-
1532
- #: admin/tabs/antispamtab.php:72
1533
- msgid "Use Akismet"
1534
- msgstr "Brug Akismet"
1535
-
1536
- #: admin/tabs/antispamtab.php:74
1537
- msgid ""
1538
- "The WordPress API key has been found, so you can start using Akismet right "
1539
- "now."
1540
- msgstr ""
1541
- "WordPress API-nøgle er fundet, så du kan begynde at bruge Akismet lige nu."
1542
-
1543
- #: admin/tabs/antispamtab.php:85
1544
- msgid "Custom Anti-Spam Security Question"
1545
- msgstr "Brugerdefineret Anti-Spam sikkerhedsspørgsmål"
1546
-
1547
- #: admin/tabs/antispamtab.php:88
1548
- msgid "12 + six ="
1549
- msgstr "12 + seks ="
1550
-
1551
- #: admin/tabs/antispamtab.php:89
1552
- msgid "Custom security question to battle spam."
1553
- msgstr "Tilpasset sikkerhedsspørgsmål for at bekæmpe spam."
1554
-
1555
- #: admin/tabs/antispamtab.php:91
1556
- msgid "18"
1557
- msgstr "18"
1558
-
1559
- #: admin/tabs/antispamtab.php:92
1560
- msgid "The answer to your security question."
1561
- msgstr "varet på dit sikkerhedsspørgsmål."
1562
-
1563
- #: admin/tabs/antispamtab.php:94
1564
- msgid ""
1565
- "You can ask your visitors to answer a custom security question, so only real "
1566
- "people can post an entry."
1567
- msgstr ""
1568
- "Du kan bede dine besøgende til at besvare et brugerdefineret "
1569
- "sikkerhedsspørgsmål, så kun virkelige mennesker kan bogføre en post."
1570
-
1571
- #: admin/tabs/antispamtab.php:106
1572
- msgid "Learn more about reCAPTCHA..."
1573
- msgstr "Lær mere om reCAPTCHA ..."
1574
-
1575
- #: admin/tabs/antispamtab.php:117
1576
- msgid "<strong>Site (Public)</strong> key of your reCAPTCHA account"
1577
- msgstr "<strong> Side (Offentlig) </ strong> -tasten på din reCAPTCHA konto"
1578
-
1579
- #: admin/tabs/antispamtab.php:120
1580
- msgid "<strong>Secret</strong> key of your reCAPTCHA account"
1581
- msgstr "<strong> Hemmelig </ strong> -tasten på din reCAPTCHA konto"
1582
-
1583
- #: admin/tabs/antispamtab.php:123
1584
- msgid ""
1585
- "reCAPTCHA is a way to have visitors fill in a field with a few letters or "
1586
- "numbers. It is a way to make sure that you have a human visitor and not a "
1587
- "spambot. Not every visitor will appreciate it though, some will consider it "
1588
- "unfriendly."
1589
- msgstr ""
1590
- "reCAPTCHA er en måde at få besøgende udfylde et felt med et par bogstaver "
1591
- "eller tal. Det er en måde at sikre, at du har et menneske og ikke en "
1592
- "spambot. Ikke alle besøgende vil sætte pris på det selv, vil nogle mener det "
1593
- "uvenlige."
1594
-
1595
- #: admin/tabs/antispamtab.php:125
1596
- msgid "The keys can be found at your"
1597
- msgstr "Nøglerne kan findes på din"
1598
-
1599
- #: admin/tabs/antispamtab.php:125
1600
- msgid "Go to my reCAPTCHA sites..."
1601
- msgstr "Gå til min reCAPTCHA side ..."
1602
-
1603
- #: admin/tabs/antispamtab.php:125
1604
- msgid "reCAPTCHA sites overview"
1605
- msgstr "reCAPTCHA sites oversigt"
1606
-
1607
- #: admin/tabs/antispamtab.php:130
1608
- msgid ""
1609
- "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in "
1610
- "your theme or another plugin. The reCAPTCHA library in Gwolle-GB will not be "
1611
- "loaded, and the found one will be used instead. This might give unexpected "
1612
- "results."
1613
- msgstr ""
1614
- "<strong> Advarsel: </ strong> Tilsyneladende bruger du allerede et reCAPTCHA "
1615
- "bibliotek i dit tema eller en anden plugin. Det reCAPTCHA bibliotek i Gwolle-"
1616
- "GB indlæses ikke, og den anden vil blive anvendt i stedet. Dette kan give "
1617
- "uventede resultater."
1618
-
1619
- #: admin/tabs/antispamtab.php:132
1620
- msgid ""
1621
- "<strong>Warning:</strong> Apparently you already use a reCAPTCHA library in "
1622
- "your theme or another plugin. However, this is an old and incompatible "
1623
- "version, so reCAPTCHA will not be used for Gwolle-GB."
1624
- msgstr ""
1625
- "<strong> Advarsel: </ strong> Tilsyneladende bruger du allerede et reCAPTCHA "
1626
- "bibliotek i dit tema eller et andet plugin. Men dette er gammelt og "
1627
- "inkompatibel, så reCAPTCHA ikke vil blive anvendt til Gwolle-GB."
1628
-
1629
- #: admin/tabs/emailtab.php:26
1630
- msgid "Admin mail from address"
1631
- msgstr "Admin mail fra adressen"
1632
-
1633
- #: admin/tabs/emailtab.php:32
1634
- msgid ""
1635
- "You can set the email address that is used for the From header of the mail "
1636
- "that a notification subscriber gets on new entries."
1637
- msgstr ""
1638
- "Du kan indstille den e-mailadresse, der bruges til Fra overskriften på "
1639
- "mailen, som en abonnent får på nye indlæg."
1640
-
1641
- #: admin/tabs/emailtab.php:34
1642
- msgid "By default the main admin address is used from General >> Settings."
1643
- msgstr ""
1644
- "Som standard de vigtigste admin adresse bruges fra General >> indstillinger."
1645
-
1646
- #: admin/tabs/emailtab.php:41
1647
- msgid "Unsubscribe moderators"
1648
- msgstr "Afmeld moderatorer"
1649
-
1650
- #: admin/tabs/emailtab.php:51
1651
- msgid "Unsubscribe User"
1652
- msgstr "Afmeld Bruger"
1653
-
1654
- #: admin/tabs/emailtab.php:73
1655
- msgid "These users have subscribed to the notification emails."
1656
- msgstr "Disse brugere abonnerer på anmeldelses- e-mails."
1657
-
1658
- #: admin/tabs/emailtab.php:74
1659
- msgid ""
1660
- "Select a user if you want that user to unsubscribe from the notification "
1661
- "emails."
1662
- msgstr ""
1663
- "Vælg en bruger, hvis du ønsker, at brugeren at afmeldes anmeldelses- e-mails."
1664
-
1665
- #: admin/tabs/emailtab.php:79
1666
- msgid "Subscribe moderators"
1667
- msgstr "Tilmeld moderatorer"
1668
-
1669
- #: admin/tabs/emailtab.php:82
1670
- msgid "Subscribe User"
1671
- msgstr "Tilmeld Bruger"
1672
-
1673
- #: admin/tabs/emailtab.php:125
1674
- msgid "You can subscribe a moderator to the notification emails."
1675
- msgstr "Du kan tilføje en moderator til at abonnere på anmeldelsen e-mails."
1676
-
1677
- #: admin/tabs/emailtab.php:126
1678
- msgid "Select a user that you want subscribed to the notification emails."
1679
- msgstr "Vælg den bruger, du vil tilføje som abonnet på meddelelser e-mails."
1680
-
1681
- #: admin/tabs/emailtab.php:127
1682
- msgid ""
1683
- "You will only see users with the roles of Administrator, Editor and Author, "
1684
- "who have the capability 'moderate_comments' ."
1685
- msgstr ""
1686
- "Du vil kun se brugerne roller administrator, moderator og forfatter, der har "
1687
- "evnen 'moderer_kommentarer'."
1688
-
1689
- #: admin/tabs/emailtab.php:133
1690
- msgid "Admin mail content"
1691
- msgstr "Admin mail-indhold"
1692
-
1693
- #: admin/tabs/emailtab.php:160
1694
- msgid ""
1695
- "You can set the content of the mail that a notification subscriber gets on "
1696
- "new entries. The following tags are supported:"
1697
- msgstr ""
1698
- "Du kan ændre indholdet af mailen, som en abonnent får på nye indlæg. "
1699
- "Følgende koder er understøttet:"
1700
-
1701
- #: admin/tabs/emailtab.php:175
1702
- msgid "Mail Author"
1703
- msgstr "Send email til forfatter"
1704
-
1705
- #: admin/tabs/emailtab.php:183
1706
- msgid "Mail the author with a confirmation email."
1707
- msgstr "Send mail til forfatter med en bekræftelses mail."
1708
-
1709
- #: admin/tabs/emailtab.php:187
1710
- msgid ""
1711
- "The author of the guestbook entry will receive an email after posting. It "
1712
- "will have a copy of the entry."
1713
- msgstr ""
1714
- "Forfatteren af gæstebogens indlæg vil modtage en e-mail efter "
1715
- "offentliggørelsen. Det vil have en kopi af posten."
1716
-
1717
- #: admin/tabs/emailtab.php:193
1718
- msgid "Author mail content"
1719
- msgstr "Forfatter indholds mail"
1720
-
1721
- #: admin/tabs/emailtab.php:218
1722
- msgid ""
1723
- "You can set the content of the mail that the author of the entry will "
1724
- "receive. The following tags are supported:"
1725
- msgstr ""
1726
- "Du kan ændre indholdet af mailen, som forfatteren af indlæget vil modtage. "
1727
- "Følgende koder er understøttet:"
1728
-
1729
- #: admin/tabs/formtab.php:26
1730
- msgid "Require Login"
1731
- msgstr "Kræv login"
1732
-
1733
- #: admin/tabs/formtab.php:33
1734
- msgid "Require user to be logged in."
1735
- msgstr "Kræv bruger skal være logget ind."
1736
-
1737
- #: admin/tabs/formtab.php:35
1738
- msgid "Only allow logged-in users to add a guestbook entry."
1739
- msgstr "Tillad kun registrerede brugere at tilføje en gæstebog indlæg."
1740
-
1741
- #: admin/tabs/formtab.php:40
1742
- msgid "Labels float"
1743
- msgstr "Etiketter formular"
1744
-
1745
- #: admin/tabs/formtab.php:47
1746
- msgid "Labels in the form float to the left."
1747
- msgstr "Etiketter i formular vises til venstre."
1748
-
1749
- #: admin/tabs/formtab.php:49
1750
- msgid ""
1751
- "Labels in the form float to the left. Otherwise the labels will be above the "
1752
- "input-fields."
1753
- msgstr ""
1754
- "Etiketter i formularer vises til venstre. Ellers vil etiketterne være over "
1755
- "input-felterne."
1756
-
1757
- #: admin/tabs/formtab.php:54
1758
- msgid "Header Text"
1759
- msgstr "Overskrift"
1760
-
1761
- #: admin/tabs/formtab.php:63
1762
- msgid "You can set the header that is shown on top of the form."
1763
- msgstr "Du kan indstille overskrifter, der vises på toppen af formularen."
1764
-
1765
- #: admin/tabs/formtab.php:69
1766
- msgid "Notice Text"
1767
- msgstr "Note Tekst"
1768
-
1769
- #: admin/tabs/formtab.php:86
1770
- msgid "You can set the content of the notice that gets shown below the form."
1771
- msgstr ""
1772
- "Du kan indstille indholdet af meddelelsen, der bliver vist nedenfor "
1773
- "formularen."
1774
-
1775
- #: admin/tabs/formtab.php:88
1776
- msgid "You can use the tag %ip% to show the ip address."
1777
- msgstr "Du kan bruge mærke t% ip% for at vise ip-adresse."
1778
-
1779
- #: admin/tabs/formtab.php:101
1780
- msgid "Configure the form that is shown to visitors."
1781
- msgstr "Konfigurer den form, der vises for besøgende."
1782
-
1783
- #: admin/tabs/formtab.php:112 admin/tabs/formtab.php:132
1784
- #: admin/tabs/formtab.php:152 admin/tabs/formtab.php:172
1785
- #: admin/tabs/formtab.php:192 admin/tabs/formtab.php:212
1786
- #: admin/tabs/formtab.php:227 admin/tabs/formtab.php:242
1787
- #: admin/tabs/readingtab.php:147 admin/tabs/readingtab.php:159
1788
- #: admin/tabs/readingtab.php:171 admin/tabs/readingtab.php:183
1789
- #: admin/tabs/readingtab.php:196 admin/tabs/readingtab.php:209
1790
- #: admin/tabs/readingtab.php:221
1791
- msgid "Enabled"
1792
- msgstr "Aktiveret"
1793
-
1794
- #: admin/tabs/formtab.php:120 admin/tabs/formtab.php:140
1795
- #: admin/tabs/formtab.php:160 admin/tabs/formtab.php:180
1796
- #: admin/tabs/formtab.php:200
1797
- msgid "Mandatory"
1798
- msgstr "Obligatorisk"
1799
-
1800
- #: admin/tabs/formtab.php:205
1801
- msgid "BBcode and Emoji"
1802
- msgstr "BBcode og Emoji"
1803
-
1804
- #: admin/tabs/formtab.php:215
1805
- msgid "Will only be shown if the Message is enabled."
1806
- msgstr "Vises kun hvis meddelelsen er aktiveret."
1807
-
1808
- #: admin/tabs/formtab.php:220
1809
- msgid "Custom Anti-spam"
1810
- msgstr "Brugerdefineret Anti-spam"
1811
-
1812
- #: admin/tabs/formtab.php:230 admin/tabs/formtab.php:245
1813
- msgid "When enabled it is mandatory."
1814
- msgstr "Når aktiveret er dette felt obligatorisk."
1815
-
1816
- #: admin/tabs/formtab.php:235 admin/tabs/uninstalltab.php:63
1817
- msgid "reCAPTCHA"
1818
- msgstr "reCAPTCHA"
1819
-
1820
- #: admin/tabs/readingtab.php:26
1821
- msgid "Entries per page on the frontend"
1822
- msgstr "Indlæg per side på frontend"
1823
-
1824
- #: admin/tabs/readingtab.php:41
1825
- msgid "Number of entries shown on the frontend."
1826
- msgstr "Antal poster der skal vises på frontend."
1827
-
1828
- #: admin/tabs/readingtab.php:46
1829
- msgid "Length of the entry content"
1830
- msgstr "Længden af indhold i indlæg"
1831
-
1832
- #: admin/tabs/readingtab.php:56
1833
- msgid "Unlimited Words"
1834
- msgstr "Ubegrænset antal ord"
1835
-
1836
- #: admin/tabs/readingtab.php:63
1837
- msgid "Words"
1838
- msgstr "Ord"
1839
-
1840
- #: admin/tabs/readingtab.php:69
1841
- msgid "Maximum length of the entry content in words."
1842
- msgstr "Maksimal længde af indholdet post i ord."
1843
-
1844
- #: admin/tabs/readingtab.php:70
1845
- msgid "Please be aware that this will strip linebreaks as well."
1846
- msgstr "Vær opmærksom på, at dette vil fratage linieskift også."
1847
-
1848
- #: admin/tabs/readingtab.php:76
1849
- msgid "Line breaks"
1850
- msgstr "Linjeskift"
1851
-
1852
- #: admin/tabs/readingtab.php:83
1853
- msgid "Show line breaks."
1854
- msgstr "Vis Linjeskift"
1855
-
1856
- #: admin/tabs/readingtab.php:85
1857
- msgid ""
1858
- "Show line breaks as the entry authors entered them. (May result in very long "
1859
- "entries. Is turned off by default.)"
1860
- msgstr ""
1861
- "Vis linjeskift som forfatteren har indtastet dem. (Kan resultere i meget "
1862
- "lange poster. Er som standard deaktiveret.)"
1863
-
1864
- #: admin/tabs/readingtab.php:90
1865
- msgid "Smileys"
1866
- msgstr "Smileys"
1867
-
1868
- #: admin/tabs/readingtab.php:97
1869
- msgid "Display smileys as images."
1870
- msgstr "Vis smileys som billeder."
1871
-
1872
- #: admin/tabs/readingtab.php:99
1873
- #, php-format
1874
- msgid ""
1875
- "Replaces smileys in entries like :) with their image %s. Uses the WP smiley "
1876
- "replacer, so check on that one if you'd like to add new/more smileys."
1877
- msgstr ""
1878
- "Erstatter smileys i poster som :) med deres image % s. Bruger WP smiley "
1879
- "erstatning, så tjek på, at en hvis du ønsker at tilføje nye / flere smileys."
1880
-
1881
- #: admin/tabs/readingtab.php:104
1882
- msgid "Links"
1883
- msgstr "Genveje"
1884
-
1885
- #: admin/tabs/readingtab.php:111
1886
- msgid "Link authors' name to their website."
1887
- msgstr "Link forfatternes navn til deres hjemmeside."
1888
-
1889
- #: admin/tabs/readingtab.php:113
1890
- msgid ""
1891
- "The author of an entry can set his/her website. If this setting is checked, "
1892
- "his/her name will be a link to that website."
1893
- msgstr ""
1894
- "Forfatteren af en post kan sætte hans / hendes hjemmeside. Hvis denne "
1895
- "indstilling er markeret, vil hans / hendes navn være et link til denne "
1896
- "hjemmeside."
1897
-
1898
- #: admin/tabs/readingtab.php:118
1899
- msgid "Admin Entry Styling"
1900
- msgstr "Admin indlæg Styling"
1901
-
1902
- #: admin/tabs/readingtab.php:125
1903
- msgid "Admin entries get a special CSS styling."
1904
- msgstr "Admins indlæg får en særlig CSS styling."
1905
-
1906
- #: admin/tabs/readingtab.php:127
1907
- msgid ""
1908
- "Admin entries get a special CSS styling. It will get a lightgrey background."
1909
- msgstr ""
1910
- "Admin indlæg får en særlig CSS styling. Det vil få en lysegrå baggrund."
1911
-
1912
- #: admin/tabs/readingtab.php:135
1913
- msgid "Configure the parts of the entries that are shown to visitors."
1914
- msgstr "Konfigurer de dele af de indlæg, der vises for besøgende."
1915
-
1916
- #: admin/tabs/readingtab.php:140
1917
- msgid "Avatar"
1918
- msgstr "Avatar"
1919
-
1920
- #: admin/tabs/readingtab.php:176
1921
- msgid "Date and Time"
1922
- msgstr "Dato og Tid"
1923
-
1924
- #: admin/tabs/readingtab.php:184
1925
- msgid "Setting this will show the date and the time of the entry."
1926
- msgstr "Indstillingen her vil vise dato og tidspunktet for oprettelse."
1927
-
1928
- #: admin/tabs/readingtab.php:197
1929
- msgid ""
1930
- "Setting this will show the date of the entry. If Date and Time above are "
1931
- "enabled, that setting has preference."
1932
- msgstr ""
1933
- "Indstillingen her vil vise datoen for oprettelse. Hvis dato og tid ovenover "
1934
- "er aktiveret, har den indstilling fortrinsret."
1935
-
1936
- #: admin/tabs/readingtab.php:202
1937
- msgid "Content"
1938
- msgstr "Indhold"
1939
-
1940
- #: admin/tabs/readingtab.php:214
1941
- msgid "Edit link"
1942
- msgstr "Rediger genvej"
1943
-
1944
- #: admin/tabs/readingtab.php:222
1945
- msgid ""
1946
- "A link to the editor will be added to the content. Only visible for "
1947
- "moderators."
1948
- msgstr ""
1949
- "En genvej til moderatoren vil blive tilføjet til indholdet. Kun synlig for "
1950
- "moderatorer."
1951
-
1952
- #: admin/tabs/uninstalltab.php:34
1953
- msgid "The entries and settings have been removed."
1954
- msgstr "Indlægene og indstillinger er blevet fjernet."
1955
-
1956
- #: admin/tabs/uninstalltab.php:35
1957
- msgid "The plugin is deactivated."
1958
- msgstr "Dette plugin er deaktiveret."
1959
-
1960
- #: admin/tabs/uninstalltab.php:36
1961
- msgid "You can now go to your"
1962
- msgstr "Du kan nu gå til din"
1963
-
1964
- #: admin/tabs/uninstalltab.php:36
1965
- msgid "dashboard."
1966
- msgstr "Skrivebord"
1967
-
1968
- #: admin/tabs/uninstalltab.php:47
1969
- msgid ""
1970
- "Uninstalling means that all database entries are removed (settings and "
1971
- "entries)."
1972
- msgstr ""
1973
- "Afinstallation betyder, at alle database poster er fjernet (indstillinger og "
1974
- "indlæg)."
1975
-
1976
- #: admin/tabs/uninstalltab.php:49
1977
- msgid "This can <strong>not</strong> be undone."
1978
- msgstr "Dette kan <strong> ikke </ strong> fortrydes."
1979
-
1980
- #: admin/tabs/uninstalltab.php:55
1981
- msgid "Confirm"
1982
- msgstr "Bekræft"
1983
-
1984
- #: admin/tabs/uninstalltab.php:58
1985
- msgid "Yes, I'm absolutely sure of this. Proceed!"
1986
- msgstr "Ja, jeg er helt sikker på dette. Fortsæt!"
1987
-
1988
- #: admin/tabs/uninstalltab.php:66
1989
- msgid "Also delete the reCAPTCHA keys"
1990
- msgstr "Slet også reCAPTCHA nøgler"
1991
-
1992
- #: admin/tabs/uninstalltab.php:73
1993
- msgid "Uninstall &raquo;"
1994
- msgstr "Afinstaller &raquo;"
1995
-
1996
- #~ msgid "at"
1997
- #~ msgstr "klokken"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: Gwolle, mpol
3
  Tags: guestbook, guest book, livre d'or, Gästebuch, review
4
  Requires at least: 3.7
5
  Tested up to: 5.4
6
- Stable tag: 3.1.9
7
  License: GPLv2 or later
8
  Requires PHP: 5.3
9
 
@@ -67,7 +67,7 @@ I will make a request on make/polyglots to have you added as validator for this
67
 
68
  = Demo =
69
 
70
- Check out the demo at [http://demo.zenoweb.nl](http://demo.zenoweb.nl/wordpress-plugins/gwolle-gb/).
71
 
72
  = Add-On =
73
 
@@ -79,6 +79,7 @@ Current features include:
79
  * Social Media Sharing (optional).
80
  * Star Ratings, with voting and display and Rich Snippets for SEO (optional).
81
  * Average star rating per guestbook.
 
82
  * Preview for the frontend form.
83
  * Preview for the admin editor form.
84
  * Admin reply on the frontend with AJAX.
@@ -93,11 +94,11 @@ Current features include:
93
  * Auto Anonymize timer (optional).
94
  * Auto Delete timer (optional).
95
 
96
- You can buy the Add-On at [Mojo Marketplace](http://www.mojomarketplace.com/item/gwolle-gb-add-on) for only $ 9.
97
 
98
  = Demo with Add-On =
99
 
100
- Check out the demo with the Add-On enabled at [http://demo.zenoweb.nl](http://demo.zenoweb.nl/wordpress-plugins/gwolle-guestbook-the-add-on/).
101
 
102
  = Compatibility =
103
 
@@ -129,12 +130,6 @@ With version 1.0 there have been some changes:
129
  The plugin itself is released under the GNU General Public License. A copy of this license can be found at the license homepage or
130
  in the gwolle-gb.php file at the top.
131
 
132
- = Known Issues =
133
-
134
- On some websites sending the data from the form doesn't work correctly. Some field data is being sent and some not.
135
- If you are affected by this issue and can debug this to find the real problem, please do so and report it on the support forum.
136
- Disabling AJAX for the form is a good workaround.
137
-
138
  = Hooks: Actions and Filters =
139
 
140
  There are many hooks available in this plugin. Documentation is included in the zip file in /docs/actions and /docs/filters. Examples are included. If you have a need for a hook, please request this in the support forum.
@@ -203,7 +198,7 @@ The next lines are made up of the content.
203
 
204
  There are some gotchas:
205
 
206
- * Date needs to be a UNIX timestamp. For manually creating a timestamp, look at the [timestamp generator](http://www.timestampgenerator.com/). When using a [formatted date](https://www.php.net/manual/en/datetime.formats.date.php), the plugin will try to read it correctly. If it fails it will use today's date.
207
  * Use commas for field separators. If you use Office software like Excel (which is hell) or LibreOffice Calc, set this correctly.
208
  * Use double quotes around each field. When no quotes are used the import process can break when having quotes or commas inside the content of the entry.
209
  * The file should be encoded as UTF-8 without BOM to correctly enter special characters.
@@ -247,13 +242,13 @@ I will make a request on make/polyglots to have you added as validator for this
247
 
248
  = What about Spam? =
249
 
250
- By default this plugin uses a Honeypot feature and a Nonce. If spambots try to post guestbook entries this should work sufficiently.
251
 
252
  If you still have problems there are more options:
253
 
254
  * Honeypot feature: Hidden input field that only spambots would fill in.
255
- * Nonce: Will verify if you really loaded the page with the form first, before posting an entry. Spambots will just submit the form without having a Nonce.
256
  * Form Timeout: If the form was sent in too fast after loading the page, the entry will be marked as spam.
 
257
  * Akismet: Third party spamfilter by Automattic. Works really well, but not everybody likes to use a third party service.
258
  * Stop Forum Spam: Third party spamfilter. Again, works really well, but not everybody likes to use a third party service.
259
  * Custom Anti-Spam question: Use a simple quiz question to test if you are human.
@@ -284,6 +279,10 @@ You can set the book_id automatically to the post_id with this shortcode:
284
 
285
  [gwolle_gb book_id="post_id"]
286
 
 
 
 
 
287
  = I only want to show one entry. =
288
 
289
  You can use a shortcode parameter for showing just one entry:
@@ -333,11 +332,6 @@ If a user with capability of 'moderate_comments' posts an entry, it will be mark
333
  There is validation of the length of words in the content and author name.
334
  If the words are too long and it looks abusive, it will be marked as unchecked. A moderator will still be needed to manually edit and check these entries.
335
 
336
- = On the form I see text meant for screen-readers. =
337
-
338
- Your theme is missing some necessary CSS for '.screen-reader-text'. Please contact the maker of your theme.
339
- More information can be found in the [Handbook](https://make.wordpress.org/accessibility/handbook/markup/the-css-class-screen-reader-text/) about Accessibility.
340
-
341
  = When opening the RSS Feed, I get a Error 404 =
342
 
343
  You can refresh your rewrite rules, by going to Settings / Permalinks, and save your permalinks again.
@@ -428,6 +422,21 @@ But if you don't use standard comments, you can just as easily use the comment s
428
 
429
  == Changelog ==
430
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
431
  = 3.1.9 =
432
  * 2020-02-01
433
  * Fix undefined variable notice (thanks ronr1999).
3
  Tags: guestbook, guest book, livre d'or, Gästebuch, review
4
  Requires at least: 3.7
5
  Tested up to: 5.4
6
+ Stable tag: 4.0.0
7
  License: GPLv2 or later
8
  Requires PHP: 5.3
9
 
67
 
68
  = Demo =
69
 
70
+ Check out the demo at [https://demo.zenoweb.nl](https://demo.zenoweb.nl/wordpress-plugins/gwolle-gb/).
71
 
72
  = Add-On =
73
 
79
  * Social Media Sharing (optional).
80
  * Star Ratings, with voting and display and Rich Snippets for SEO (optional).
81
  * Average star rating per guestbook.
82
+ * Like an entry and view likes for each entry.
83
  * Preview for the frontend form.
84
  * Preview for the admin editor form.
85
  * Admin reply on the frontend with AJAX.
94
  * Auto Anonymize timer (optional).
95
  * Auto Delete timer (optional).
96
 
97
+ You can buy the Add-On at [ZenoWeb Webshop](https://zenoweb.nl/downloads/gwolle-guestbook-add-on/) for only $ 9.
98
 
99
  = Demo with Add-On =
100
 
101
+ Check out the demo with the Add-On enabled at [https://demo.zenoweb.nl](https://demo.zenoweb.nl/wordpress-plugins/gwolle-guestbook-the-add-on/).
102
 
103
  = Compatibility =
104
 
130
  The plugin itself is released under the GNU General Public License. A copy of this license can be found at the license homepage or
131
  in the gwolle-gb.php file at the top.
132
 
 
 
 
 
 
 
133
  = Hooks: Actions and Filters =
134
 
135
  There are many hooks available in this plugin. Documentation is included in the zip file in /docs/actions and /docs/filters. Examples are included. If you have a need for a hook, please request this in the support forum.
198
 
199
  There are some gotchas:
200
 
201
+ * Date needs to be a UNIX timestamp. For manually creating a timestamp, look at the [timestamp generator](https://www.timestampgenerator.com/). When using a [formatted date](https://www.php.net/manual/en/datetime.formats.date.php), the plugin will try to read it correctly. If it fails it will use today's date.
202
  * Use commas for field separators. If you use Office software like Excel (which is hell) or LibreOffice Calc, set this correctly.
203
  * Use double quotes around each field. When no quotes are used the import process can break when having quotes or commas inside the content of the entry.
204
  * The file should be encoded as UTF-8 without BOM to correctly enter special characters.
242
 
243
  = What about Spam? =
244
 
245
+ By default this plugin uses a Honeypot feature and a Timeout feature. If spambots try to post guestbook entries this should work sufficiently.
246
 
247
  If you still have problems there are more options:
248
 
249
  * Honeypot feature: Hidden input field that only spambots would fill in.
 
250
  * Form Timeout: If the form was sent in too fast after loading the page, the entry will be marked as spam.
251
+ * Nonce: Will verify if you really loaded the page with the form first, before posting an entry. Spambots will just submit the form without having a Nonce.
252
  * Akismet: Third party spamfilter by Automattic. Works really well, but not everybody likes to use a third party service.
253
  * Stop Forum Spam: Third party spamfilter. Again, works really well, but not everybody likes to use a third party service.
254
  * Custom Anti-Spam question: Use a simple quiz question to test if you are human.
279
 
280
  [gwolle_gb book_id="post_id"]
281
 
282
+ = I use Infinite Scroll with multiple guestbooks =
283
+
284
+ This is not really supported and might result in strange issues.
285
+
286
  = I only want to show one entry. =
287
 
288
  You can use a shortcode parameter for showing just one entry:
332
  There is validation of the length of words in the content and author name.
333
  If the words are too long and it looks abusive, it will be marked as unchecked. A moderator will still be needed to manually edit and check these entries.
334
 
 
 
 
 
 
335
  = When opening the RSS Feed, I get a Error 404 =
336
 
337
  You can refresh your rewrite rules, by going to Settings / Permalinks, and save your permalinks again.
422
 
423
  == Changelog ==
424
 
425
+ = 4.0.0 =
426
+ * 2020-04-28
427
+ * Many CSS ids and classes have changed, please review your custom CSS.
428
+ * Plugin supports multiple forms on one page now.
429
+ * Fix serialized options.
430
+ * Add pause on hover for super-simple-slider.
431
+ * Fix updating of datetime on admin editor.
432
+ * Fix double class attributes in form.
433
+ * Run timeout function only once, set timout to 1 second.
434
+ * Remove separators from BBcode icons.
435
+ * Add loading="lazy" attribute to bbcode images.
436
+ * Add filters 'gwolle_gb_author_origin_prefill', 'gwolle_gb_author_content_prefill' and 'gwolle_gb_author_content_label'.
437
+ * Deprecate 'gwolle_gb_content_label' filter.
438
+ * Update strings for add-on.
439
+
440
  = 3.1.9 =
441
  * 2020-02-01
442
  * Fix undefined variable notice (thanks ronr1999).