Version Description
- 2018-07-09
- Add screen-reader-text to frontend metabox.
- Hide 'hide this form' button when form was visible on page load.
- Add a filter for button class 'gwolle_gb_button_class'.
- Add 'no_email' parameter to 'gwolle_gb_get_entries' function.
- Add second parameter $entry to filter for mail body notifications.
- Admin entries page, change label to ID column.
- Fix compatibility with Add-On version 1.0.0 till 1.1.2.
- Updates for Add-On 1.2.1.
Download this release
Release Info
Developer | mpol |
Plugin | Gwolle Guestbook |
Version | 2.6.1 |
Comparing to | |
See all releases |
Code changes from version 2.6.0 to 2.6.1
- add-on/gb-add-on.php +14 -2
- admin/gb-page-add-on.php +1 -0
- admin/gb-page-entries.php +11 -6
- docs/filters/gwolle_gb_button_class.txt +25 -0
- docs/filters/gwolle_gb_privacy_label.txt +1 -1
- frontend/gb-form.php +10 -8
- frontend/gb-widget.php +3 -2
- frontend/gwolle_gb-entry.php +1 -1
- frontend/js/gwolle-gb-frontend.js +6 -0
- functions/gb-get_entries.php +9 -2
- functions/gb-mail.php +3 -3
- gwolle-gb.php +3 -2
- readme.txt +39 -18
add-on/gb-add-on.php
CHANGED
@@ -158,6 +158,16 @@ Entry content:
|
|
158 |
esc_html_e('Show delete link in Metabox for author.', 'gwolle-gb');
|
159 |
/* translators: Commercial Add-On */
|
160 |
esc_html_e('A link to delete the entry will be added to the metabox. Only visible for moderators and the author.', 'gwolle-gb');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
/* translators: Commercial Add-On */
|
162 |
esc_html_e('Auto Delete', 'gwolle-gb');
|
163 |
/* translators: Commercial Add-On */
|
@@ -165,8 +175,6 @@ Entry content:
|
|
165 |
/* translators: Commercial Add-On */
|
166 |
esc_html_e('This setting will enable automatic deletion of entries older than a certain date.', 'gwolle-gb');
|
167 |
/* translators: Commercial Add-On */
|
168 |
-
esc_html_e('Be very carefull with this option.', 'gwolle-gb');
|
169 |
-
/* translators: Commercial Add-On */
|
170 |
esc_html_e('Auto Delete entries older than:', 'gwolle-gb');
|
171 |
/* translators: Commercial Add-On */
|
172 |
esc_html_e('1 Day','gwolle-gb');
|
@@ -243,4 +251,8 @@ Entry content:
|
|
243 |
/* translators: Commercial Add-On. %s is the value/number of votes. */
|
244 |
__( 'Average Rating: <strong>%s out of %s</strong> (%s votes)', 'gwolle-gb' );
|
245 |
|
|
|
|
|
|
|
|
|
246 |
}
|
158 |
esc_html_e('Show delete link in Metabox for author.', 'gwolle-gb');
|
159 |
/* translators: Commercial Add-On */
|
160 |
esc_html_e('A link to delete the entry will be added to the metabox. Only visible for moderators and the author.', 'gwolle-gb');
|
161 |
+
|
162 |
+
/* translators: Commercial Add-On, option for auto anonymize */
|
163 |
+
esc_html_e('Auto Anonymize', 'gwolle-gb');
|
164 |
+
/* translators: Commercial Add-On, option for auto anonymize */
|
165 |
+
esc_html_e('Auto Anonymize entries after a certain time.', 'gwolle-gb');
|
166 |
+
/* translators: Commercial Add-On, option for auto anonymize */
|
167 |
+
esc_html_e('This setting will enable automatic anonymization of entries older than a certain date.', 'gwolle-gb');
|
168 |
+
/* translators: Commercial Add-On, option for auto anonymize */
|
169 |
+
esc_html_e('Be very carefull with this option.', 'gwolle-gb');
|
170 |
+
|
171 |
/* translators: Commercial Add-On */
|
172 |
esc_html_e('Auto Delete', 'gwolle-gb');
|
173 |
/* translators: Commercial Add-On */
|
175 |
/* translators: Commercial Add-On */
|
176 |
esc_html_e('This setting will enable automatic deletion of entries older than a certain date.', 'gwolle-gb');
|
177 |
/* translators: Commercial Add-On */
|
|
|
|
|
178 |
esc_html_e('Auto Delete entries older than:', 'gwolle-gb');
|
179 |
/* translators: Commercial Add-On */
|
180 |
esc_html_e('1 Day','gwolle-gb');
|
251 |
/* translators: Commercial Add-On. %s is the value/number of votes. */
|
252 |
__( 'Average Rating: <strong>%s out of %s</strong> (%s votes)', 'gwolle-gb' );
|
253 |
|
254 |
+
// function gwolle_gb_addon_add_privacy_policy_content() {
|
255 |
+
/* translators: Commercial Add-On. Text for privacy policy. */
|
256 |
+
__( 'When visitors report an entry as abusive, the entry ID will be stored in a cookie in the browser. For fallback, the IP address will be saved temporarily as a transient in the database together with the number of reports.', 'gwolle-gb' );
|
257 |
+
|
258 |
}
|
admin/gb-page-add-on.php
CHANGED
@@ -90,6 +90,7 @@ function gwolle_gb_addon_features() {
|
|
90 |
<li>' . esc_html__('Permalink button in each entry for easy access (optional).','gwolle-gb').'</li>
|
91 |
<li>' . esc_html__('Email button to contact each author (optional).','gwolle-gb').'</li>
|
92 |
<li>' . esc_html__('Sitemap support for popular SEO/Sitemap plugins.','gwolle-gb').'</li>
|
|
|
93 |
<li>' . esc_html__('Auto Delete timer (optional).','gwolle-gb').'</li>
|
94 |
</ul>';
|
95 |
}
|
90 |
<li>' . esc_html__('Permalink button in each entry for easy access (optional).','gwolle-gb').'</li>
|
91 |
<li>' . esc_html__('Email button to contact each author (optional).','gwolle-gb').'</li>
|
92 |
<li>' . esc_html__('Sitemap support for popular SEO/Sitemap plugins.','gwolle-gb').'</li>
|
93 |
+
<li>' . esc_html__('Auto Anonymize timer (optional).','gwolle-gb').'</li>
|
94 |
<li>' . esc_html__('Auto Delete timer (optional).','gwolle-gb').'</li>
|
95 |
</ul>';
|
96 |
}
|
admin/gb-page-entries.php
CHANGED
@@ -697,7 +697,11 @@ function gwolle_gb_page_entries() {
|
|
697 |
</a>
|
698 |
</span>
|
699 |
</td>
|
700 |
-
<td class="id">
|
|
|
|
|
|
|
|
|
701 |
|
702 |
// Optional Icon column where CSS is being used to show them or not
|
703 |
if ( get_option('gwolle_gb-showEntryIcons', 'true') === 'true' ) {
|
@@ -726,19 +730,20 @@ function gwolle_gb_page_entries() {
|
|
726 |
// Author column
|
727 |
$author_name_html = gwolle_gb_get_author_name_html($entry);
|
728 |
$html_output .= '
|
729 |
-
<td class="entry-author-name"
|
730 |
-
|
731 |
-
|
|
|
732 |
|
733 |
// Excerpt column
|
734 |
$html_output .= '
|
735 |
<td class="entry-content">
|
736 |
-
|
737 |
$entry_content = gwolle_gb_get_excerpt( $entry->get_content(), 17 );
|
738 |
if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
|
739 |
$entry_content = convert_smilies($entry_content);
|
740 |
}
|
741 |
-
$html_output .= $entry_content . '
|
742 |
</td>';
|
743 |
|
744 |
// Actions column
|
697 |
</a>
|
698 |
</span>
|
699 |
</td>
|
700 |
+
<td class="id">
|
701 |
+
<label for="check-' . $entry->get_id() . '">
|
702 |
+
' . $entry->get_id() . '
|
703 |
+
</label>
|
704 |
+
</td>';
|
705 |
|
706 |
// Optional Icon column where CSS is being used to show them or not
|
707 |
if ( get_option('gwolle_gb-showEntryIcons', 'true') === 'true' ) {
|
730 |
// Author column
|
731 |
$author_name_html = gwolle_gb_get_author_name_html($entry);
|
732 |
$html_output .= '
|
733 |
+
<td class="entry-author-name">
|
734 |
+
<span class="author-name">' . $author_name_html . '</span><br />
|
735 |
+
<span class="author-email">' . $entry->get_author_email() . '</span>
|
736 |
+
</td>';
|
737 |
|
738 |
// Excerpt column
|
739 |
$html_output .= '
|
740 |
<td class="entry-content">
|
741 |
+
';
|
742 |
$entry_content = gwolle_gb_get_excerpt( $entry->get_content(), 17 );
|
743 |
if ( get_option('gwolle_gb-showSmilies', 'true') === 'true' ) {
|
744 |
$entry_content = convert_smilies($entry_content);
|
745 |
}
|
746 |
+
$html_output .= $entry_content . '
|
747 |
</td>';
|
748 |
|
749 |
// Actions column
|
docs/filters/gwolle_gb_button_class.txt
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
|
3 |
+
==Description==
|
4 |
+
|
5 |
+
The <b>"gwolle_gb_button_class"</b> filter is used to change the class attribute of buttons in the frontend form.
|
6 |
+
|
7 |
+
You can use this filter as:
|
8 |
+
|
9 |
+
<code><?php add_filter( 'gwolle_gb_button_class', '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_button_class( $classes ) {
|
20 |
+
// $classes is a string
|
21 |
+
$classes .= ' grid-item'; // Add to it or use str_replace. Mind the space.
|
22 |
+
return $classes;
|
23 |
+
}
|
24 |
+
add_filter( 'gwolle_gb_button_class', 'my_gwolle_gb_button_class', 10, 1 );
|
25 |
+
|
docs/filters/gwolle_gb_privacy_label.txt
CHANGED
@@ -18,7 +18,7 @@ Where 'filter_function_name' is the function WordPress should call when the filt
|
|
18 |
|
19 |
function my_gwolle_gb_privacy_label( $label ) {
|
20 |
// $label is a string
|
21 |
-
$label = '
|
22 |
return $label;
|
23 |
}
|
24 |
add_filter( 'gwolle_gb_privacy_label', 'my_gwolle_gb_privacy_label', 10, 1 );
|
18 |
|
19 |
function my_gwolle_gb_privacy_label( $label ) {
|
20 |
// $label is a string
|
21 |
+
$label = 'Accept %sPrivacy Policy%s'; // default text, with placeholders that become a link.
|
22 |
return $label;
|
23 |
}
|
24 |
add_filter( 'gwolle_gb_privacy_label', 'my_gwolle_gb_privacy_label', 10, 1 );
|
frontend/gb-form.php
CHANGED
@@ -24,7 +24,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
|
|
24 |
|
25 |
$html5 = current_theme_supports( 'html5' );
|
26 |
$output = '';
|
27 |
-
|
28 |
|
29 |
// Set data up for prefilling an already submitted form that had errors.
|
30 |
$name = '';
|
@@ -124,7 +124,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
|
|
124 |
if ( ( $shortcode_atts['button'] == 'true' ) && ( ! $gwolle_gb_errors ) ) {
|
125 |
$button = '
|
126 |
<div id="gwolle_gb_write_button">
|
127 |
-
<input type="button" class="button btn btn-default" value="» ' . /* translators: Button text */ esc_attr__('Write a new entry.', 'gwolle-gb') . '" />
|
128 |
</div>';
|
129 |
$output .= apply_filters( 'gwolle_gb_button', $button);
|
130 |
|
@@ -151,11 +151,13 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
|
|
151 |
$header = esc_html__('Write a new entry for the Guestbook', 'gwolle-gb');
|
152 |
}
|
153 |
|
154 |
-
$
|
155 |
-
|
156 |
-
<
|
157 |
-
|
158 |
-
|
|
|
|
|
159 |
|
160 |
// The book_id from the shortcode, to be used by the posthandling function again.
|
161 |
$output .= '<input type="hidden" name="gwolle_gb_book_id" id="gwolle_gb_book_id" value="' . $shortcode_atts['book_id'] . '" />';
|
@@ -515,7 +517,7 @@ function gwolle_gb_frontend_write( $shortcode_atts, $shortcode ) {
|
|
515 |
<div class="gwolle_gb_submit">
|
516 |
<div class="label gwolle_gb_invisible text-muted"> </div>
|
517 |
<div class="input">
|
518 |
-
<input type="submit" name="gwolle_gb_submit" id="gwolle_gb_submit" class="button btn btn-primary" value="' . esc_attr__('Submit', 'gwolle-gb') . '" />
|
519 |
<span class="gwolle_gb_submit_ajax_icon"></span>
|
520 |
';
|
521 |
|
24 |
|
25 |
$html5 = current_theme_supports( 'html5' );
|
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 = '';
|
124 |
if ( ( $shortcode_atts['button'] == 'true' ) && ( ! $gwolle_gb_errors ) ) {
|
125 |
$button = '
|
126 |
<div id="gwolle_gb_write_button">
|
127 |
+
<input type="button" class="button btn btn-default ' . $button_class . '" value="» ' . /* translators: Button text */ esc_attr__('Write a new entry.', 'gwolle-gb') . '" />
|
128 |
</div>';
|
129 |
$output .= apply_filters( 'gwolle_gb_button', $button);
|
130 |
|
151 |
$header = esc_html__('Write a new entry for the Guestbook', 'gwolle-gb');
|
152 |
}
|
153 |
|
154 |
+
if ( ( $shortcode_atts['button'] == 'true' ) ) {
|
155 |
+
$output .= '
|
156 |
+
<form id="gwolle_gb_new_entry" action="#" method="POST" class="' . $formclass . '">
|
157 |
+
<h3>' . $header . '</h3>
|
158 |
+
<button type="button" class="gb-notice-dismiss"><span class="screen-reader-text">' . esc_html__('Hide this form.', 'gwolle-gb') . '</span></button>
|
159 |
+
<input type="hidden" name="gwolle_gb_function" id="gwolle_gb_function" value="add_entry" />';
|
160 |
+
}
|
161 |
|
162 |
// The book_id from the shortcode, to be used by the posthandling function again.
|
163 |
$output .= '<input type="hidden" name="gwolle_gb_book_id" id="gwolle_gb_book_id" value="' . $shortcode_atts['book_id'] . '" />';
|
517 |
<div class="gwolle_gb_submit">
|
518 |
<div class="label gwolle_gb_invisible text-muted"> </div>
|
519 |
<div class="input">
|
520 |
+
<input type="submit" name="gwolle_gb_submit" id="gwolle_gb_submit" class="button btn btn-primary ' . $button_class . '" value="' . esc_attr__('Submit', 'gwolle-gb') . '" />
|
521 |
<span class="gwolle_gb_submit_ajax_icon"></span>
|
522 |
';
|
523 |
|
frontend/gb-widget.php
CHANGED
@@ -82,7 +82,8 @@ if (function_exists('register_sidebar') && class_exists('WP_Widget')) {
|
|
82 |
if ( (int) $postid > 0 ) {
|
83 |
$permalink = get_permalink( $postid );
|
84 |
$raquo = '
|
85 |
-
|
|
|
86 |
}
|
87 |
|
88 |
$widget_html .= '
|
@@ -90,7 +91,7 @@ if (function_exists('register_sidebar') && class_exists('WP_Widget')) {
|
|
90 |
$counter = 0;
|
91 |
|
92 |
// Get the best entries first
|
93 |
-
if ( is_array( $best ) && !empty( $best ) ) {
|
94 |
foreach ($best as $entry_id) {
|
95 |
if ( $counter == $num_entries) { break; } // we have enough
|
96 |
$entry = new gwolle_gb_entry();
|
82 |
if ( (int) $postid > 0 ) {
|
83 |
$permalink = get_permalink( $postid );
|
84 |
$raquo = '
|
85 |
+
<a href="' . $permalink . '" title="' . esc_attr__('Click here to get to the guestbook.', 'gwolle-gb') . '">»</a>
|
86 |
+
';
|
87 |
}
|
88 |
|
89 |
$widget_html .= '
|
91 |
$counter = 0;
|
92 |
|
93 |
// Get the best entries first
|
94 |
+
if ( is_array( $best ) && ! empty( $best ) ) {
|
95 |
foreach ($best as $entry_id) {
|
96 |
if ( $counter == $num_entries) { break; } // we have enough
|
97 |
$entry = new gwolle_gb_entry();
|
frontend/gwolle_gb-entry.php
CHANGED
@@ -223,7 +223,7 @@ if ( ! function_exists('gwolle_gb_entry_template') ) {
|
|
223 |
$gb_metabox = apply_filters( 'gwolle_gb_entry_metabox_lines', '', $entry );
|
224 |
if ( $gb_metabox ) {
|
225 |
$entry_output .= '
|
226 |
-
<div class="gb-metabox-handle">' . esc_html__('...', 'gwolle-gb' ) . '</div>
|
227 |
<div class="gb-metabox gwolle_gb_invisible gwolle-gb-invisible">' .
|
228 |
$gb_metabox . '
|
229 |
</div>';
|
223 |
$gb_metabox = apply_filters( 'gwolle_gb_entry_metabox_lines', '', $entry );
|
224 |
if ( $gb_metabox ) {
|
225 |
$entry_output .= '
|
226 |
+
<div class="gb-metabox-handle">' . esc_html__('...', 'gwolle-gb' ) . '<span class="screen-reader-text"> ' . esc_html__('Toggle this metabox.', 'gwolle-gb') . '</span></div>
|
227 |
<div class="gb-metabox gwolle_gb_invisible gwolle-gb-invisible">' .
|
228 |
$gb_metabox . '
|
229 |
</div>';
|
frontend/js/gwolle-gb-frontend.js
CHANGED
@@ -188,6 +188,12 @@ function gwolle_gb_timout_clock() {
|
|
188 |
* AJAX Submit for Gwolle Guestbook Frontend.
|
189 |
*/
|
190 |
var gwolle_gb_ajax_callback = jQuery.Callbacks(); // Callback function to be fired after AJAX request.
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
jQuery(document).ready(function($) {
|
192 |
jQuery( '.gwolle_gb_form_ajax #gwolle_gb_submit' ).click( function( submit_button ) {
|
193 |
|
188 |
* AJAX Submit for Gwolle Guestbook Frontend.
|
189 |
*/
|
190 |
var gwolle_gb_ajax_callback = jQuery.Callbacks(); // Callback function to be fired after AJAX request.
|
191 |
+
// Use an object, arrays are only indexed by integers.
|
192 |
+
var gwolle_gb_ajax_data = {
|
193 |
+
permalink: window.location.href,
|
194 |
+
action: 'gwolle_gb_form_ajax'
|
195 |
+
};
|
196 |
+
|
197 |
jQuery(document).ready(function($) {
|
198 |
jQuery( '.gwolle_gb_form_ajax #gwolle_gb_submit' ).click( function( submit_button ) {
|
199 |
|
functions/gb-get_entries.php
CHANGED
@@ -17,8 +17,9 @@ if ( strpos($_SERVER['PHP_SELF'], basename(__FILE__) )) {
|
|
17 |
* - checked string: 'checked' or 'unchecked', List the entries that are checked or unchecked.
|
18 |
* - trash string: 'trash' or 'notrash', List the entries that are in trash or not in trash.
|
19 |
* - spam string: 'spam' or 'nospam', List the entries marked as spam or as no spam.
|
20 |
-
* - author_id string:
|
21 |
-
* - email string:
|
|
|
22 |
* - no_moderators string: 'true', Only entries not written by a moderator (might be expensive with many users) (since 1.5.0).
|
23 |
* - book_id int: Only entries from this book. Default in the shortcode is 1 (since 1.5.1).
|
24 |
* - date_query array:
|
@@ -88,6 +89,12 @@ function gwolle_gb_get_entries($args = array()) {
|
|
88 |
author_email = %s";
|
89 |
$values[] = $args['email'];
|
90 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
if ( isset($args['no_moderators']) ) {
|
92 |
$no_moderators = $args['no_moderators'];
|
93 |
if ( $no_moderators === 'true' ) {
|
17 |
* - checked string: 'checked' or 'unchecked', List the entries that are checked or unchecked.
|
18 |
* - trash string: 'trash' or 'notrash', List the entries that are in trash or not in trash.
|
19 |
* - spam string: 'spam' or 'nospam', List the entries marked as spam or as no spam.
|
20 |
+
* - author_id string: Entries associated with this author_id (since 1.5.0).
|
21 |
+
* - email string: Entries associated with this emailaddress.
|
22 |
+
* - no_email string: Entries not associated with this emailaddress (since 2.6.1).
|
23 |
* - no_moderators string: 'true', Only entries not written by a moderator (might be expensive with many users) (since 1.5.0).
|
24 |
* - book_id int: Only entries from this book. Default in the shortcode is 1 (since 1.5.1).
|
25 |
* - date_query array:
|
89 |
author_email = %s";
|
90 |
$values[] = $args['email'];
|
91 |
}
|
92 |
+
if ( isset($args['no_email']) ) {
|
93 |
+
$where .= "
|
94 |
+
AND
|
95 |
+
author_email != %s";
|
96 |
+
$values[] = $args['no_email'];
|
97 |
+
}
|
98 |
if ( isset($args['no_moderators']) ) {
|
99 |
$no_moderators = $args['no_moderators'];
|
100 |
if ( $no_moderators === 'true' ) {
|
functions/gb-mail.php
CHANGED
@@ -61,7 +61,7 @@ Entry content:
|
|
61 |
"
|
62 |
, 'gwolle-gb');
|
63 |
}
|
64 |
-
$mail_body = apply_filters( 'gwolle_gb_mail_moderators_body', $mail_body );
|
65 |
|
66 |
// Set the Mail Headers
|
67 |
$subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('New Guestbook Entry', 'gwolle-gb');
|
@@ -171,7 +171,7 @@ Entry content:
|
|
171 |
"
|
172 |
, 'gwolle-gb');
|
173 |
}
|
174 |
-
$mail_body = apply_filters( 'gwolle_gb_mail_author_body', $mail_body );
|
175 |
|
176 |
// Set the Mail Headers
|
177 |
$subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('New Guestbook Entry', 'gwolle-gb');
|
@@ -248,7 +248,7 @@ Original entry posted on %date%:
|
|
248 |
"
|
249 |
, 'gwolle-gb');
|
250 |
}
|
251 |
-
$mail_body = apply_filters( 'gwolle_gb_mail_author_on_admin_reply_body', $mail_body );
|
252 |
|
253 |
// Set the Mail Headers
|
254 |
$subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('Admin Reply', 'gwolle-gb');
|
61 |
"
|
62 |
, 'gwolle-gb');
|
63 |
}
|
64 |
+
$mail_body = apply_filters( 'gwolle_gb_mail_moderators_body', $mail_body, $entry );
|
65 |
|
66 |
// Set the Mail Headers
|
67 |
$subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('New Guestbook Entry', 'gwolle-gb');
|
171 |
"
|
172 |
, 'gwolle-gb');
|
173 |
}
|
174 |
+
$mail_body = apply_filters( 'gwolle_gb_mail_author_body', $mail_body, $entry );
|
175 |
|
176 |
// Set the Mail Headers
|
177 |
$subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('New Guestbook Entry', 'gwolle-gb');
|
248 |
"
|
249 |
, 'gwolle-gb');
|
250 |
}
|
251 |
+
$mail_body = apply_filters( 'gwolle_gb_mail_author_on_admin_reply_body', $mail_body, $entry );
|
252 |
|
253 |
// Set the Mail Headers
|
254 |
$subject = '[' . gwolle_gb_format_values_for_mail(get_bloginfo('name')) . '] ' . esc_html__('Admin Reply', 'gwolle-gb');
|
gwolle-gb.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Gwolle Guestbook
|
4 |
Plugin URI: http://zenoweb.nl
|
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: 2.6.
|
7 |
Author: Marcel Pol
|
8 |
Author URI: http://zenoweb.nl
|
9 |
License: GPLv2 or later
|
@@ -32,7 +32,7 @@ Domain Path: /lang/
|
|
32 |
|
33 |
|
34 |
// Plugin Version
|
35 |
-
define('GWOLLE_GB_VER', '2.6.
|
36 |
|
37 |
|
38 |
/*
|
@@ -61,6 +61,7 @@ define('GWOLLE_GB_VER', '2.6.0');
|
|
61 |
* - Consider adding a checkbox to honeypot.
|
62 |
* - Emoji: Sinterklaas and Zwarte Piet.
|
63 |
* - Someday, do something with the REST API. Someday.
|
|
|
64 |
*
|
65 |
*/
|
66 |
|
3 |
Plugin Name: Gwolle Guestbook
|
4 |
Plugin URI: http://zenoweb.nl
|
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: 2.6.1
|
7 |
Author: Marcel Pol
|
8 |
Author URI: http://zenoweb.nl
|
9 |
License: GPLv2 or later
|
32 |
|
33 |
|
34 |
// Plugin Version
|
35 |
+
define('GWOLLE_GB_VER', '2.6.1');
|
36 |
|
37 |
|
38 |
/*
|
61 |
* - Consider adding a checkbox to honeypot.
|
62 |
* - Emoji: Sinterklaas and Zwarte Piet.
|
63 |
* - Someday, do something with the REST API. Someday.
|
64 |
+
* - Test and possibly add support for Gutenberg editor.
|
65 |
*
|
66 |
*/
|
67 |
|
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: 4.9
|
6 |
-
Stable tag: 2.6.
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
Gwolle Guestbook is the WordPress guestbook you've just been looking for. Beautiful and easy.
|
@@ -87,6 +87,7 @@ Current features include:
|
|
87 |
* Permalink button in each entry for easy access (optional).
|
88 |
* Email button to contact each author (optional).
|
89 |
* Sitemap support for popular SEO/Sitemap plugins.
|
|
|
90 |
* Auto Delete timer (optional).
|
91 |
|
92 |
You can buy the Add-On at [Mojo Marketplace](http://www.mojomarketplace.com/item/gwolle-gb-add-on) for only $ 9.
|
@@ -189,8 +190,7 @@ The next lines are made up of the content.
|
|
189 |
|
190 |
There are some gotchas:
|
191 |
|
192 |
-
* Date needs to be a UNIX timestamp. For manually creating a timestamp, look at
|
193 |
-
the [timestamp generator](http://www.timestampgenerator.com/). When using a formatted date, the plugin will try to read it correctly. If it fails it will use today's date.
|
194 |
* Use commas for field separators. If you use Office software like Excel (which is hell) or LibreOffice Calc, set this correctly.
|
195 |
* 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.
|
196 |
* The file should be encoded as UTF-8 without BOM to correctly enter special characters.
|
@@ -198,7 +198,8 @@ the [timestamp generator](http://www.timestampgenerator.com/). When using a form
|
|
198 |
|
199 |
With version 1.4.1 and older, the field datetime was called date.
|
200 |
|
201 |
-
You could make a test-entry, export that, and look to see what the importer expects from the CSV.
|
|
|
202 |
|
203 |
|
204 |
== Frequently Asked Questions ==
|
@@ -226,9 +227,9 @@ Before that, in 0.9.7, all the 'checked' entries were visible.
|
|
226 |
= I want to translate this plugin =
|
227 |
|
228 |
Translations can be added very easily through [GlotPress](https://translate.wordpress.org/projects/wp-plugins/gwolle-gb).
|
229 |
-
You can start translating strings there for your locale.
|
230 |
-
and you want to apply for being validator (PTE), please post it on the support forum.
|
231 |
-
have you added as validator for this plugin/locale.
|
232 |
|
233 |
= What about Spam? =
|
234 |
|
@@ -238,6 +239,7 @@ If you still have problems there are more options:
|
|
238 |
|
239 |
* Honeypot feature: Hidden input field that only spambots would fill in.
|
240 |
* 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.
|
|
|
241 |
* Akismet: Third party spamfilter by Automattic. Works really well, but not everybody likes to use a third party service.
|
242 |
* Stop Forum Spam: Third party spamfilter. Again, works really well, but not everybody likes to use a third party service.
|
243 |
* Custom Anti-Spam question: Use a simple quiz question to test if you are human.
|
@@ -271,8 +273,8 @@ If you use the template function, you can use it like this:
|
|
271 |
|
272 |
= With multiple guestbooks, how do I keep track? =
|
273 |
|
274 |
-
There is no need to use id's that are incrementing.
|
275 |
-
you can just use the id of the post as the id of the guestbook. That way you won't have double id's.
|
276 |
You can set the book_id automatically to the post_id with this shortcode:
|
277 |
|
278 |
[gwolle_gb book_id="post_id"]
|
@@ -302,10 +304,11 @@ If it still doesn't work, request the maillog at your hosting provider, or ask i
|
|
302 |
|
303 |
= I want to show the form and the list on different pages =
|
304 |
|
305 |
-
There are different shortcodes that you can use.
|
306 |
-
and '[gwolle_gb_read]' for the list of entries.
|
307 |
|
308 |
-
There is also a widget that can display the latest entries in a widget area, that has many options.
|
|
|
309 |
|
310 |
* book_id, int with an ID.
|
311 |
* num_entries, int with the shown number of messages.
|
@@ -313,7 +316,8 @@ There is also a widget that can display the latest entries in a widget area, tha
|
|
313 |
|
314 |
= I want to show the form immediately, without the button =
|
315 |
|
316 |
-
The shortcodes '[gwolle_gb]' and '[gwolle_gb_write]' have a parameter for the button.
|
|
|
317 |
|
318 |
= Moderation is enabled, but my entry is marked as checked =
|
319 |
|
@@ -321,8 +325,13 @@ If a user with capability of 'moderate_comments' posts an entry, it will be mark
|
|
321 |
|
322 |
= Moderation is disabled, but some entries are still unchecked =
|
323 |
|
324 |
-
There is validation of the length of words in the content and author name.
|
325 |
-
abusive, it will be marked as unchecked. A moderator will still be needed to manually edit and check these entries.
|
|
|
|
|
|
|
|
|
|
|
326 |
|
327 |
= When opening the RSS Feed, I get a Error 404 =
|
328 |
|
@@ -331,8 +340,8 @@ This will most likely add the rewrite rule for the RSS Feed.
|
|
331 |
|
332 |
= I use a caching plugin, and my entries are not visible after posting =
|
333 |
|
334 |
-
When you have moderation disabled, Gwolle Guestbook will try to refresh the cache.
|
335 |
-
please let me know which caching plugin you use, and support for it might be added.
|
336 |
|
337 |
You can also refresh or delete your cache manually. Most caching plugins offer support for that.
|
338 |
|
@@ -376,7 +385,8 @@ Make sure you keep track of changes in the default templatefile though.
|
|
376 |
|
377 |
= What hooks are available for customization? =
|
378 |
|
379 |
-
There are many hooks available in this plugin. Documentation is included in the zip file in /docs/actions and /docs/filters. Examples are included.
|
|
|
380 |
|
381 |
= I want to change the word Guestbook into something else. =
|
382 |
|
@@ -406,6 +416,17 @@ But if you don't use standard comments, you can just as easily use the comment s
|
|
406 |
|
407 |
== Changelog ==
|
408 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
409 |
= 2.6.0 =
|
410 |
* 2018-06-11
|
411 |
* Add option to permanently remove IP address and hostname from entries.
|
3 |
Tags: guestbook, guest book, livre d'or, Gästebuch, review
|
4 |
Requires at least: 3.7
|
5 |
Tested up to: 4.9
|
6 |
+
Stable tag: 2.6.1
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
Gwolle Guestbook is the WordPress guestbook you've just been looking for. Beautiful and easy.
|
87 |
* Permalink button in each entry for easy access (optional).
|
88 |
* Email button to contact each author (optional).
|
89 |
* Sitemap support for popular SEO/Sitemap plugins.
|
90 |
+
* Auto Anonymize timer (optional).
|
91 |
* Auto Delete timer (optional).
|
92 |
|
93 |
You can buy the Add-On at [Mojo Marketplace](http://www.mojomarketplace.com/item/gwolle-gb-add-on) for only $ 9.
|
190 |
|
191 |
There are some gotchas:
|
192 |
|
193 |
+
* 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, the plugin will try to read it correctly. If it fails it will use today's date.
|
|
|
194 |
* Use commas for field separators. If you use Office software like Excel (which is hell) or LibreOffice Calc, set this correctly.
|
195 |
* 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.
|
196 |
* The file should be encoded as UTF-8 without BOM to correctly enter special characters.
|
198 |
|
199 |
With version 1.4.1 and older, the field datetime was called date.
|
200 |
|
201 |
+
You could make a test-entry, export that, and look to see what the importer expects from the CSV.
|
202 |
+
There is also an example CSV file included in the zipfile of the plugin under '/docs/import_example/'.
|
203 |
|
204 |
|
205 |
== Frequently Asked Questions ==
|
227 |
= I want to translate this plugin =
|
228 |
|
229 |
Translations can be added very easily through [GlotPress](https://translate.wordpress.org/projects/wp-plugins/gwolle-gb).
|
230 |
+
You can start translating strings there for your locale.
|
231 |
+
They need to be validated though, so if there's no validator yet, and you want to apply for being validator (PTE), please post it on the support forum.
|
232 |
+
I will make a request on make/polyglots to have you added as validator for this plugin/locale.
|
233 |
|
234 |
= What about Spam? =
|
235 |
|
239 |
|
240 |
* Honeypot feature: Hidden input field that only spambots would fill in.
|
241 |
* 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.
|
242 |
+
* Form Timeout: If the form was sent in too fast after loading the page, the entry will be marked as spam.
|
243 |
* Akismet: Third party spamfilter by Automattic. Works really well, but not everybody likes to use a third party service.
|
244 |
* Stop Forum Spam: Third party spamfilter. Again, works really well, but not everybody likes to use a third party service.
|
245 |
* Custom Anti-Spam question: Use a simple quiz question to test if you are human.
|
273 |
|
274 |
= With multiple guestbooks, how do I keep track? =
|
275 |
|
276 |
+
There is no need to use id's that are incrementing.
|
277 |
+
If you have a lot of guestbooks on lots of pages, you can just use the id of the post as the id of the guestbook. That way you won't have double id's.
|
278 |
You can set the book_id automatically to the post_id with this shortcode:
|
279 |
|
280 |
[gwolle_gb book_id="post_id"]
|
304 |
|
305 |
= I want to show the form and the list on different pages =
|
306 |
|
307 |
+
There are different shortcodes that you can use.
|
308 |
+
Instead of the '[gwolle_gb]' shortcode, you can use '[gwolle_gb_write]' for just the form, and '[gwolle_gb_read]' for the list of entries.
|
309 |
|
310 |
+
There is also a widget that can display the latest entries in a widget area, that has many options.
|
311 |
+
Alternatively you can use the shortcode '[gwolle_gb_widget]' to display the latest entries in widget layout. Parameters are:
|
312 |
|
313 |
* book_id, int with an ID.
|
314 |
* num_entries, int with the shown number of messages.
|
316 |
|
317 |
= I want to show the form immediately, without the button =
|
318 |
|
319 |
+
The shortcodes '[gwolle_gb]' and '[gwolle_gb_write]' have a parameter for the button.
|
320 |
+
You can use them as '[gwolle_gb button="false"]' or '[gwolle_gb_write button="true"]', to deviate from the default.
|
321 |
|
322 |
= Moderation is enabled, but my entry is marked as checked =
|
323 |
|
325 |
|
326 |
= Moderation is disabled, but some entries are still unchecked =
|
327 |
|
328 |
+
There is validation of the length of words in the content and author name.
|
329 |
+
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.
|
330 |
+
|
331 |
+
= On the form I see text meant for screen-readers. =
|
332 |
+
|
333 |
+
Your theme is missing some necessary CSS for '.screen-reader-text'. Please contact the maker of your theme.
|
334 |
+
More information can be found in the [Handbook](https://make.wordpress.org/accessibility/handbook/markup/the-css-class-screen-reader-text/) about Accessibility.
|
335 |
|
336 |
= When opening the RSS Feed, I get a Error 404 =
|
337 |
|
340 |
|
341 |
= I use a caching plugin, and my entries are not visible after posting =
|
342 |
|
343 |
+
When you have moderation disabled, Gwolle Guestbook will try to refresh the cache.
|
344 |
+
If it doesn't on your setup, please let me know which caching plugin you use, and support for it might be added.
|
345 |
|
346 |
You can also refresh or delete your cache manually. Most caching plugins offer support for that.
|
347 |
|
385 |
|
386 |
= What hooks are available for customization? =
|
387 |
|
388 |
+
There are many hooks available in this plugin. Documentation is included in the zip file in /docs/actions and /docs/filters. Examples are included.
|
389 |
+
If you have a need for an additional hook, please request this in the support forum.
|
390 |
|
391 |
= I want to change the word Guestbook into something else. =
|
392 |
|
416 |
|
417 |
== Changelog ==
|
418 |
|
419 |
+
= 2.6.1 =
|
420 |
+
* 2018-07-09
|
421 |
+
* Add screen-reader-text to frontend metabox.
|
422 |
+
* Hide 'hide this form' button when form was visible on page load.
|
423 |
+
* Add a filter for button class 'gwolle_gb_button_class'.
|
424 |
+
* Add 'no_email' parameter to 'gwolle_gb_get_entries' function.
|
425 |
+
* Add second parameter $entry to filter for mail body notifications.
|
426 |
+
* Admin entries page, change label to ID column.
|
427 |
+
* Fix compatibility with Add-On version 1.0.0 till 1.1.2.
|
428 |
+
* Updates for Add-On 1.2.1.
|
429 |
+
|
430 |
= 2.6.0 =
|
431 |
* 2018-06-11
|
432 |
* Add option to permanently remove IP address and hostname from entries.
|